From fb02a155b41f461327899811835f78ba52f41c28 Mon Sep 17 00:00:00 2001 From: Luigi Scarso <luigi.scarso@gmail.com> Date: Tue, 21 Jan 2025 21:55:53 +0100 Subject: [PATCH] Sync with TeXLive rev. 73541. --- source/Build | 19 +- source/ChangeLog | 5 + source/Makefile.in | 2 + source/aclocal.m4 | 1 + source/build-aux/ar-lib | 2 +- source/build-aux/compile | 2 +- source/build-aux/depcomp | 2 +- source/build-aux/texinfo.tex | 114 +- source/configure | 73 + source/doc/Makefile.in | 2 + source/doc/build-tools.txt | 2 +- source/doc/tlbuild.info | 923 ++++++------ source/doc/tlbuild.texi | 6 +- source/libs/Makefile.in | 1 + source/libs/README | 6 +- source/libs/aclocal.m4 | 1 + source/libs/configure | 25 + source/libs/harfbuzz/ChangeLog | 5 + source/libs/harfbuzz/TLpatches/ChangeLog | 5 + source/libs/harfbuzz/TLpatches/TL-Changes | 4 +- source/libs/harfbuzz/configure | 24 +- .../libs/harfbuzz/harfbuzz-src/CMakeLists.txt | 113 +- source/libs/harfbuzz/harfbuzz-src/NEWS | 29 + source/libs/harfbuzz/harfbuzz-src/meson.build | 2 +- .../harfbuzz-src/src/OT/Color/COLR/COLR.hh | 2 +- .../libs/harfbuzz/harfbuzz-src/src/gen-def.py | 1 - .../harfbuzz-src/src/gen-indic-table.py | 6 +- .../harfbuzz-src/src/harfbuzz-config.cmake.in | 2 + .../harfbuzz-src/src/harfbuzz-subset.cc | 2 +- .../harfbuzz/harfbuzz-src/src/hb-cairo.cc | 12 +- .../harfbuzz/harfbuzz-src/src/hb-common.cc | 3 + .../harfbuzz/harfbuzz-src/src/hb-config.hh | 2 - .../harfbuzz-src/src/hb-coretext-font.cc | 6 +- .../libs/harfbuzz/harfbuzz-src/src/hb-face.cc | 3 +- .../harfbuzz/harfbuzz-src/src/hb-ft-colr.hh | 2 + .../libs/harfbuzz/harfbuzz-src/src/hb-ft.cc | 8 +- .../libs/harfbuzz/harfbuzz-src/src/hb-null.hh | 2 +- .../harfbuzz-src/src/hb-ot-cmap-table.hh | 4 + .../harfbuzz-src/src/hb-ot-layout-gsubgpos.hh | 4 + .../harfbuzz/harfbuzz-src/src/hb-ot-layout.cc | 12 + .../harfbuzz-src/src/hb-ot-os2-table.hh | 4 +- .../src/hb-ot-shaper-indic-machine.hh | 1279 +++++++++++++---- .../src/hb-ot-shaper-indic-machine.rl | 7 +- .../src/hb-ot-shaper-indic-table.cc | 11 +- .../src/hb-ot-shaper-myanmar-machine.hh | 642 +++++---- .../src/hb-ot-shaper-myanmar-machine.rl | 9 +- .../src/hb-ot-shaper-use-machine.hh | 1256 ++++++++-------- .../src/hb-ot-shaper-use-machine.rl | 1 + .../harfbuzz-src/src/hb-ot-tag-table.hh | 15 +- .../harfbuzz-src/src/hb-ot-var-common.hh | 24 +- .../harfbuzz-src/src/hb-ot-var-gvar-table.hh | 1 + .../libs/harfbuzz/harfbuzz-src/src/hb-paint.h | 2 +- .../harfbuzz/harfbuzz-src/src/hb-sanitize.hh | 4 +- .../harfbuzz/harfbuzz-src/src/hb-serialize.hh | 21 +- .../libs/harfbuzz/harfbuzz-src/src/hb-shape.h | 2 + .../harfbuzz-src/src/hb-subset-input.cc | 139 +- .../harfbuzz-src/src/hb-subset-plan.cc | 18 +- .../harfbuzz-src/src/hb-subset-plan.hh | 9 + .../harfbuzz-src/src/hb-subset-repacker.h | 81 -- ...set-repacker.cc => hb-subset-serialize.cc} | 33 +- .../harfbuzz-src/src/hb-subset-serialize.h | 83 ++ .../harfbuzz/harfbuzz-src/src/hb-subset.cc | 2 +- .../harfbuzz/harfbuzz-src/src/hb-subset.h | 12 + .../libs/harfbuzz/harfbuzz-src/src/hb-utf.hh | 6 +- .../harfbuzz/harfbuzz-src/src/meson.build | 5 +- source/libs/harfbuzz/include/Makefile.am | 4 +- source/libs/harfbuzz/include/Makefile.in | 2 +- source/libs/harfbuzz/version.ac | 2 +- source/libs/libpng/README | 4 +- source/libs/libpng/TLpatches/ChangeLog | 4 + source/libs/libpng/TLpatches/TL-Changes | 6 +- source/libs/libpng/configure | 20 +- source/libs/libpng/libpng-src/ANNOUNCE | 41 +- source/libs/libpng/libpng-src/AUTHORS | 1 + source/libs/libpng/libpng-src/CHANGES | 11 + source/libs/libpng/libpng-src/CMakeLists.txt | 490 +++---- source/libs/libpng/libpng-src/INSTALL | 1 - source/libs/libpng/libpng-src/LICENSE | 4 +- source/libs/libpng/libpng-src/README | 4 +- source/libs/libpng/libpng-src/TODO | 43 +- source/libs/libpng/libpng-src/arm/arm_init.c | 1 - .../libs/libpng/libpng-src/arm/filter_neon.S | 1 - .../libpng-src/arm/filter_neon_intrinsics.c | 1 - .../libpng-src/arm/palette_neon_intrinsics.c | 3 +- source/libs/libpng/libpng-src/ci/ci_lint.sh | 6 +- .../libpng/libpng-src/ci/ci_verify_cmake.sh | 31 +- .../libpng-src/ci/ci_verify_configure.sh | 4 + .../libpng/libpng-src/ci/ci_verify_version.sh | 10 +- source/libs/libpng/libpng-src/configure.ac | 6 +- .../libpng/libpng-src/contrib/.editorconfig | 2 + .../libs/libpng/libpng-src/contrib/README.txt | 2 + .../libpng-src/contrib/examples/README.txt | 1 - .../libpng-src/contrib/libtests/pngimage.c | 8 +- .../libpng-src/contrib/libtests/pngstest.c | 3 +- .../libpng-src/contrib/libtests/pngunknown.c | 1 - .../libpng-src/contrib/libtests/pngvalid.c | 63 +- .../libpng-src/contrib/libtests/readpng.c | 1 - .../libpng-src/contrib/libtests/tarith.c | 1 - .../libpng-src/contrib/libtests/timepng.c | 1 - .../libpng-src/contrib/mips-mmi/linux.c | 1 - .../libpng-src/contrib/mips-msa/linux.c | 1 - .../libpng-src/contrib/oss-fuzz/Dockerfile | 15 +- .../libpng-src/contrib/oss-fuzz/README.txt | 4 - .../libpng-src/contrib/oss-fuzz/build.sh | 31 +- .../contrib/oss-fuzz/libpng_read_fuzzer.cc | 1 - .../libpng-src/contrib/pngexif/.editorconfig | 1 + .../libpng/libpng-src/contrib/pngminim/README | 1 - .../libpng-src/contrib/pngminus/CHANGES.txt | 1 - .../libpng-src/contrib/pngminus/LICENSE.txt | 1 - .../libpng/libpng-src/contrib/pngsuite/README | 1 - .../contrib/pngsuite/interlaced/README | 1 - .../png-3/cicp-display-p3_reencoded.png | Bin 0 -> 142 bytes .../libpng-src/contrib/visupng/.editorconfig | 3 +- source/libs/libpng/libpng-src/example.c | 1 - .../libpng-src/intel/filter_sse2_intrinsics.c | 1 - .../libs/libpng/libpng-src/intel/intel_init.c | 1 - .../libs/libpng/libpng-src/libpng-manual.txt | 8 +- source/libs/libpng/libpng-src/libpng.3 | 12 +- source/libs/libpng/libpng-src/libpngpf.3 | 4 +- .../libpng-src/mips/filter_msa_intrinsics.c | 45 +- .../libs/libpng/libpng-src/mips/mips_init.c | 1 - source/libs/libpng/libpng-src/png.5 | 7 +- source/libs/libpng/libpng-src/png.c | 205 ++- source/libs/libpng/libpng-src/png.h | 35 +- source/libs/libpng/libpng-src/pngconf.h | 5 +- source/libs/libpng/libpng-src/pngdebug.h | 1 - source/libs/libpng/libpng-src/pngerror.c | 1 - source/libs/libpng/libpng-src/pngget.c | 26 +- source/libs/libpng/libpng-src/pnginfo.h | 9 +- source/libs/libpng/libpng-src/pnglibconf.h | 7 +- source/libs/libpng/libpng-src/pngmem.c | 1 - source/libs/libpng/libpng-src/pngpread.c | 45 +- source/libs/libpng/libpng-src/pngpriv.h | 13 +- source/libs/libpng/libpng-src/pngread.c | 13 +- source/libs/libpng/libpng-src/pngrio.c | 1 - source/libs/libpng/libpng-src/pngrtran.c | 1 - source/libs/libpng/libpng-src/pngrutil.c | 89 +- source/libs/libpng/libpng-src/pngset.c | 30 +- source/libs/libpng/libpng-src/pngstruct.h | 1 - source/libs/libpng/libpng-src/pngtest.c | 20 +- source/libs/libpng/libpng-src/pngtest.png | Bin 8759 -> 8759 bytes source/libs/libpng/libpng-src/pngtrans.c | 1 - source/libs/libpng/libpng-src/pngwio.c | 1 - source/libs/libpng/libpng-src/pngwrite.c | 85 +- source/libs/libpng/libpng-src/pngwtran.c | 1 - source/libs/libpng/libpng-src/pngwutil.c | 82 +- .../libpng/libpng-src/powerpc/powerpc_init.c | 1 - .../libpng-src/projects/vstudio/build.bat | 25 + .../projects/vstudio/libpng/libpng.vcxproj | 38 +- .../vstudio/pnglibconf/pnglibconf.vcxproj | 4 +- .../vstudio/pngstest/pngstest.vcxproj | 24 +- .../projects/vstudio/pngtest/pngtest.vcxproj | 24 +- .../vstudio/pngunknown/pngunknown.vcxproj | 24 +- .../vstudio/pngvalid/pngvalid.vcxproj | 24 +- .../libpng-src/projects/vstudio/zlib.props | 45 +- .../projects/vstudio/zlib/zlib.vcxproj | 40 +- .../libs/libpng/libpng-src/scripts/README.txt | 136 +- .../libpng-src/scripts/autoconf/libtool.m4 | 462 +++--- .../libpng-src/scripts/autoconf/ltoptions.m4 | 106 +- .../libpng-src/scripts/autoconf/ltsugar.m4 | 2 +- .../libpng-src/scripts/autoconf/ltversion.m4 | 12 +- .../scripts/autoconf/lt~obsolete.m4 | 2 +- .../libpng-src/scripts/cmake/PNGConfig.cmake | 43 +- .../scripts/cmake/PNGGenConfig.cmake | 104 ++ .../libpng-src/scripts/cmake/PNGTest.cmake | 42 + .../libpng-src/scripts/cmake/test.cmake.in | 3 +- .../libpng/libpng-src/scripts/descrip.mms | 1 - .../libpng/libpng-src/scripts/intprefix.c | 1 - .../libpng-src/scripts/libpng-config-body.in | 1 - .../libpng-src/scripts/libpng-config-head.in | 2 +- .../libpng/libpng-src/scripts/libpng.pc.in | 2 +- .../libpng/libpng-src/scripts/pnglibconf.dfa | 3 +- .../libpng-src/scripts/pnglibconf.h.prebuilt | 7 +- .../libs/libpng/libpng-src/scripts/prefix.c | 1 - source/libs/libpng/libpng-src/scripts/sym.c | 1 - .../libs/libpng/libpng-src/scripts/symbols.c | 1 - .../libpng/libpng-src/scripts/symbols.def | 2 + source/libs/libpng/libpng-src/scripts/vers.c | 1 - .../libs/libpng/libpng-src/tests/pngtest-all | 3 + source/libs/libpng/version.ac | 2 +- source/libs/luajit/ChangeLog | 7 +- source/libs/luajit/ac/luajit.ac | 10 + source/libs/luajit/ac/withenable.ac | 6 +- source/libs/pplib/ChangeLog | 5 + source/libs/pplib/ac/withenable.ac | 2 +- source/m4/ChangeLog | 9 + source/m4/kpse-luajit-flags.m4 | 14 +- source/m4/kpse-pkgs.m4 | 5 +- source/reautoconf | 7 +- source/texk/Makefile.in | 1 + source/texk/README | 4 +- source/texk/aclocal.m4 | 1 + source/texk/configure | 25 + source/texk/kpathsea/ChangeLog | 11 + source/texk/kpathsea/NEWS | 5 +- source/texk/kpathsea/doc/kpathsea.info | 587 ++++---- source/texk/kpathsea/doc/kpathsea.texi | 54 +- source/texk/kpathsea/kpsewhich.c | 26 +- .../texk/texlive/linked_scripts/Makefile.am | 5 +- .../texk/texlive/linked_scripts/Makefile.in | 1 + source/texk/web2c/ChangeLog | 16 + source/texk/web2c/Makefile.in | 538 ++++--- source/texk/web2c/configure | 35 +- source/texk/web2c/configure.ac | 21 +- source/texk/web2c/ctangleboot.cin | 2 +- source/texk/web2c/cwebdir/ChangeLog | 49 + source/texk/web2c/cwebdir/Makefile | 6 +- source/texk/web2c/cwebdir/comm-mac.ch | 4 +- source/texk/web2c/cwebdir/comm-ql.ch | 8 +- source/texk/web2c/cwebdir/comm-w2c.ch | 8 +- source/texk/web2c/cwebdir/comm-w2c.h | 2 +- source/texk/web2c/cwebdir/common.h | 2 +- source/texk/web2c/cwebdir/common.w | 6 +- source/texk/web2c/cwebdir/ctang-bs.ch | 4 +- source/texk/web2c/cwebdir/ctang-pc.ch | 4 +- source/texk/web2c/cwebdir/ctang-ql.ch | 8 +- source/texk/web2c/cwebdir/ctang-vms.ch | 4 +- source/texk/web2c/cwebdir/ctang-w2c.ch | 12 +- source/texk/web2c/cwebdir/ctang-w32.ch | 4 +- source/texk/web2c/cwebdir/ctangle.c | 2 +- source/texk/web2c/cwebdir/ctangle.w | 8 +- source/texk/web2c/cwebdir/cweav-bs.ch | 4 +- source/texk/web2c/cwebdir/cweav-pc.ch | 4 +- source/texk/web2c/cwebdir/cweav-ql.ch | 8 +- source/texk/web2c/cwebdir/cweav-vms.ch | 4 +- source/texk/web2c/cwebdir/cweav-w2c.ch | 12 +- source/texk/web2c/cwebdir/cweav-w32.ch | 4 +- source/texk/web2c/cwebdir/cweave.w | 8 +- source/texk/web2c/cwebdir/cwebmac.tex | 4 +- source/texk/web2c/cwebdir/cwebman.tex | 6 +- source/texk/web2c/cwebdir/prod.w | 2 +- source/texk/web2c/euptexdir/am/euptex.am | 21 +- source/texk/web2c/lib/ChangeLog | 4 + source/texk/web2c/lib/printversion.c | 2 +- .../texk/web2c/luatexdir/luatex_svnversion.h | 2 +- source/texk/web2c/man/ChangeLog | 4 + source/texk/web2c/man/ctwill.man | 4 +- .../texk/web2c/mfluajitdir/am/mfluajitlpeg.am | 4 +- source/texk/web2c/mplibdir/mpmathbinary.w | 2 +- source/texk/web2c/mplibdir/mpmathinterval.w | 2 +- source/texk/web2c/ptexdir/am/ptex.am | 13 +- source/texk/web2c/texprofdir/am/texprof.am | 70 + source/texk/web2c/uptexdir/am/uptex.am | 19 +- source/utils/Makefile.in | 1 + source/utils/aclocal.m4 | 1 + source/utils/configure | 25 + 246 files changed, 5959 insertions(+), 3691 deletions(-) delete mode 100644 source/libs/harfbuzz/harfbuzz-src/src/hb-subset-repacker.h rename source/libs/harfbuzz/harfbuzz-src/src/{hb-subset-repacker.cc => hb-subset-serialize.cc} (68%) create mode 100644 source/libs/harfbuzz/harfbuzz-src/src/hb-subset-serialize.h create mode 100644 source/libs/libpng/libpng-src/contrib/testpngs/png-3/cicp-display-p3_reencoded.png create mode 100644 source/libs/libpng/libpng-src/projects/vstudio/build.bat create mode 100644 source/libs/libpng/libpng-src/scripts/cmake/PNGGenConfig.cmake create mode 100644 source/libs/libpng/libpng-src/scripts/cmake/PNGTest.cmake create mode 100644 source/libs/luajit/ac/luajit.ac diff --git a/source/Build b/source/Build index f44becab3..ac57b0422 100755 --- a/source/Build +++ b/source/Build @@ -1,5 +1,5 @@ #!/bin/sh -# $Id: Build 66136 2023-02-24 23:44:26Z karl $ +# $Id: Build 73438 2025-01-12 21:07:14Z karl $ # Public domain. Originally written many years ago by Sebastian Rahtz. # The basic idea is to run configure && make, but with a multitude of # environment variables to allow overriding everything. @@ -62,14 +62,27 @@ fi # allow adding environment setting for build. : ${TL_BUILD_ENV=}; export TL_BUILD_ENV -if test "x$1" = x--debug || test "x$1" = x-g; then +if echo "$1" | grep '^--debug' >/dev/null || test "x$1" = x-g; then + debug_option=$1 shift # The idea is that with Build -g, you can set TL_COMPILER_GFLAGS in # the environment with options common to all compilers -- # not necessarily anything to do with debugging, e.g., -mcpu=sparvc9. # Or you can set TL_{C,CXX,OBJCXX}FLAGS for per-language flags, # notably TL_CFLAGS=-Wdeclaration-after-statement. - : ${TL_COMPILER_GFLAGS=-g}; export TL_COMPILER_CFLAGS + # + # See https://tug.org/texlive/build.html for some discussion. + # + if test "x$debug_option" = x--debug || test "x$debug_option" = x-g; then + : ${TL_COMPILER_GFLAGS=-g} + elif test "x$debug_option" = x--debug-more; then + : ${TL_COMPILER_GFLAGS=-g -Og -ggdb3} + else + echo "$0: unknown debugging option: $debug_option" >&2 + exit 1 + fi + export TL_COMPILER_CFLAGS + # c="CFLAGS='$TL_COMPILER_GFLAGS $TL_CFLAGS'" cxx="CXXFLAGS='$TL_COMPILER_GFLAGS $TL_CXXFLAGS'" objcxx="OBJCXXFLAGS='$TL_COMPILER_GFLAGS $TL_OBJCXXFLAGS'" # only for macs diff --git a/source/ChangeLog b/source/ChangeLog index ab87facb7..0443f2888 100644 --- a/source/ChangeLog +++ b/source/ChangeLog @@ -1,3 +1,8 @@ +2025-01-12 Karl Berry <karl@tug.org> + + * Build: also support --debug-more for -g -Og -ggdb3, + per Luigi, as described on https://tug.org/texlive/build.html. + 2024-07-12 Karl Berry <karl@freefriends.org> * reautoconf with automake 1.17. diff --git a/source/Makefile.in b/source/Makefile.in index 0f5584d34..3824d1f86 100644 --- a/source/Makefile.in +++ b/source/Makefile.in @@ -104,6 +104,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/kpse-cairo-flags.m4 \ $(top_srcdir)/m4/kpse-libpaper-flags.m4 \ $(top_srcdir)/m4/kpse-libpng-flags.m4 \ $(top_srcdir)/m4/kpse-lt-hack.m4 \ + $(top_srcdir)/m4/kpse-luajit-flags.m4 \ $(top_srcdir)/m4/kpse-mktex.m4 \ $(top_srcdir)/m4/kpse-mpfi-flags.m4 \ $(top_srcdir)/m4/kpse-mpfr-flags.m4 \ @@ -140,6 +141,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/kpse-cairo-flags.m4 \ $(top_srcdir)/texk/kpathsea/ac/mktex.ac \ $(top_srcdir)/texk/kpathsea/ac/kpathsea.ac \ $(top_srcdir)/libs/zlib/ac/zlib.ac \ + $(top_srcdir)/libs/luajit/ac/luajit.ac \ $(top_srcdir)/libs/libpng/ac/libpng.ac \ $(top_srcdir)/libs/zziplib/ac/zziplib.ac \ $(top_srcdir)/libs/graphite2/ac/graphite2.ac \ diff --git a/source/aclocal.m4 b/source/aclocal.m4 index b587f37ca..cb8518b3e 100644 --- a/source/aclocal.m4 +++ b/source/aclocal.m4 @@ -1416,6 +1416,7 @@ m4_include([m4/kpse-kpathsea-flags.m4]) m4_include([m4/kpse-libpaper-flags.m4]) m4_include([m4/kpse-libpng-flags.m4]) m4_include([m4/kpse-lt-hack.m4]) +m4_include([m4/kpse-luajit-flags.m4]) m4_include([m4/kpse-mktex.m4]) m4_include([m4/kpse-mpfi-flags.m4]) m4_include([m4/kpse-mpfr-flags.m4]) diff --git a/source/build-aux/ar-lib b/source/build-aux/ar-lib index 152198749..7d62dea99 100755 --- a/source/build-aux/ar-lib +++ b/source/build-aux/ar-lib @@ -4,7 +4,7 @@ me=ar-lib scriptversion=2024-06-19.01; # UTC -# Copyright (C) 2010-2024 Free Software Foundation, Inc. +# Copyright (C) 2010-2025 Free Software Foundation, Inc. # Written by Peter Rosin <peda@lysator.liu.se>. # # This program is free software; you can redistribute it and/or modify diff --git a/source/build-aux/compile b/source/build-aux/compile index c3e8760e9..14aec5621 100644 --- a/source/build-aux/compile +++ b/source/build-aux/compile @@ -3,7 +3,7 @@ scriptversion=2024-12-03.03; # UTC -# Copyright (C) 1999-2024 Free Software Foundation, Inc. +# Copyright (C) 1999-2025 Free Software Foundation, Inc. # Written by Tom Tromey <tromey@cygnus.com>. # # This program is free software; you can redistribute it and/or modify diff --git a/source/build-aux/depcomp b/source/build-aux/depcomp index 87974bf3e..1e2c35fad 100755 --- a/source/build-aux/depcomp +++ b/source/build-aux/depcomp @@ -3,7 +3,7 @@ scriptversion=2024-12-03.03; # UTC -# Copyright (C) 1999-2024 Free Software Foundation, Inc. +# 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 diff --git a/source/build-aux/texinfo.tex b/source/build-aux/texinfo.tex index 93d592193..456696f4c 100644 --- a/source/build-aux/texinfo.tex +++ b/source/build-aux/texinfo.tex @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2024-02-10.22} +\def\texinfoversion{2024-11-04.20} % % Copyright 1985, 1986, 1988, 1990-2024 Free Software Foundation, Inc. % @@ -951,7 +951,11 @@ where each line of input produces a line of output.} \let\setfilename=\comment % @bye. -\outer\def\bye{\chappager\pagelabels\tracingstats=1\ptexend} +\outer\def\bye{% + \chappager\pagelabels + % possibly set in \printindex + \ifx\byeerror\relax\else\errmessage{\byeerror}\fi + \tracingstats=1\ptexend} \message{pdf,} @@ -3126,11 +3130,12 @@ end % 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 2 em\relax + \hskip 0pt plus 3 em\relax \penalty1000\relax - \hskip 0pt plus -2 em\relax + \hskip 0pt plus -3 em\relax } \urefbreakstyle after @@ -5438,6 +5443,9 @@ $$% \closein 1 \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 @@ -5446,7 +5454,9 @@ $$% \ifflagclear{txiindexescapeisbackslash}{% \uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1 \ifflagclear{txiskipindexfileswithbackslash}{% -\errmessage{% + % 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 <https://ftp.gnu.org/gnu/texinfo>. @@ -5567,7 +5577,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % \entry typesets a paragraph consisting of the text (#1), dot leaders, and % then page number (#2) flushed to the right margin. It is used for index % and table of contents entries. The paragraph is indented by \leftskip. -% +% If \tocnodetarget is set, link text to the referenced node. \def\entry{% \begingroup % @@ -5608,7 +5618,13 @@ might help (with 'rm \jobname.?? \jobname.??s')% \global\setbox\boxA=\hbox\bgroup \ifpdforxetex \iflinkentrytext - \pdflinkpage{#1}{\unhbox\boxA}% + \ifx\tocnodetarget\empty + \unhbox\boxA + \else + \startxreflink{\tocnodetarget}{}% + \unhbox\boxA + \endlink + \fi \else \unhbox\boxA \fi @@ -5625,11 +5641,18 @@ might help (with 'rm \jobname.?? \jobname.??s')% % \null\nobreak\indexdotfill % Have leaders before the page number. % + \hskip\skip\thinshrinkable \ifpdforxetex - \pdfgettoks#1.% - \hskip\skip\thinshrinkable\the\toksA + \ifx\tocnodetarget\empty + \pdfgettoks#1.% + \the\toksA + \else + % Should just be a single page number in toc + \startxreflink{\tocnodetarget}{}% + #1\endlink + \fi \else - \hskip\skip\thinshrinkable #1% + #1% \fi \fi \egroup % end \boxA @@ -6892,7 +6915,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \vskip 0pt plus 5\baselineskip \penalty-300 \vskip 0pt plus -5\baselineskip - \dochapentry{#1}{\numeralbox}{}% + \dochapentry{#1}{\numeralbox}{#3}{}% } % % Parts, in the short toc. @@ -6905,12 +6928,12 @@ might help (with 'rm \jobname.?? \jobname.??s')% % Chapters, in the main contents. \def\numchapentry#1#2#3#4{% \retrievesecnowidth\secnowidthchap{#2}% - \dochapentry{#1}{#2}{#4}% + \dochapentry{#1}{#2}{#3}{#4}% } % Chapters, in the short toc. \def\shortchapentry#1#2#3#4{% - \tocentry{#1}{\shortchaplabel{#2}}{#4}% + \tocentry{#1}{\shortchaplabel{#2}}{#3}{#4}% } % Appendices, in the main contents. @@ -6923,79 +6946,77 @@ might help (with 'rm \jobname.?? \jobname.??s')% % \def\appentry#1#2#3#4{% \retrievesecnowidth\secnowidthchap{#2}% - \dochapentry{\appendixbox{#2}\hskip.7em#1}{}{#4}% + \dochapentry{\appendixbox{#2}\hskip.7em#1}{}{#3}{#4}% } % Unnumbered chapters. -\def\unnchapentry#1#2#3#4{\dochapentry{#1}{}{#4}} -\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{}{#4}} +\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{\dosecentry{#1}{#2}{#4}} - \def\numsecentry#1#2#3#4{% \retrievesecnowidth\secnowidthsec{#2}% - \dosecentry{#1}{#2}{#4}% + \dosecentry{#1}{#2}{#3}{#4}% } \let\appsecentry=\numsecentry \def\unnsecentry#1#2#3#4{% \retrievesecnowidth\secnowidthsec{#2}% - \dosecentry{#1}{}{#4}% + \dosecentry{#1}{}{#3}{#4}% } % Subsections. \def\numsubsecentry#1#2#3#4{% \retrievesecnowidth\secnowidthssec{#2}% - \dosubsecentry{#1}{#2}{#4}% + \dosubsecentry{#1}{#2}{#3}{#4}% } \let\appsubsecentry=\numsubsecentry \def\unnsubsecentry#1#2#3#4{% \retrievesecnowidth\secnowidthssec{#2}% - \dosubsecentry{#1}{}{#4}% + \dosubsecentry{#1}{}{#3}{#4}% } % And subsubsections. -\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#2}{#4}} +\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#2}{#3}{#4}} \let\appsubsubsecentry=\numsubsubsecentry -\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{}{#4}} +\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, and #3 is the page number. +% 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{% +\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}% + \tocentry{#1}{#2}{#3}{#4}% \endgroup \nobreak\vskip .25\baselineskip plus.1\baselineskip } -\def\dosecentry#1#2#3{\begingroup +\def\dosecentry#1#2#3#4{\begingroup \secnowidth=\secnowidthchap \secentryfonts \leftskip=\tocindent - \tocentry{#1}{#2}{#3}% + \tocentry{#1}{#2}{#3}{#4}% \endgroup} -\def\dosubsecentry#1#2#3{\begingroup +\def\dosubsecentry#1#2#3#4{\begingroup \secnowidth=\secnowidthsec \subsecentryfonts \leftskip=2\tocindent - \tocentry{#1}{#2}{#3}% + \tocentry{#1}{#2}{#3}{#4}% \endgroup} -\def\dosubsubsecentry#1#2#3{\begingroup +\def\dosubsubsecentry#1#2#3#4{\begingroup \secnowidth=\secnowidthssec \subsubsecentryfonts \leftskip=3\tocindent - \tocentry{#1}{#2}{#3}% + \tocentry{#1}{#2}{#3}{#4}% \endgroup} % Used for the maximum width of a section number so we can align @@ -7005,12 +7026,15 @@ might help (with 'rm \jobname.?? \jobname.??s')% \newdimen\extrasecnoskip \extrasecnoskip=0pt -% \tocentry{TITLE}{SEC NO}{PAGE} +\let\tocnodetarget\empty + +% \tocentry{TITLE}{SEC NO}{NODE}{PAGE} % -\def\tocentry#1#2#3{% +\def\tocentry#1#2#3#4{% + \def\tocnodetarget{#3}% \def\secno{#2}% \ifx\empty\secno - \entry{#1}{#3}% + \entry{#1}{#4}% \else \ifdim 0pt=\secnowidth \setbox0=\hbox{#2\hskip\labelspace\hskip\extrasecnoskip}% @@ -7021,7 +7045,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% #2\hskip\labelspace\hskip\extrasecnoskip\hfill}% \fi \entrycontskip=\wd0 - \entry{\box0 #1}{#3}% + \entry{\box0 #1}{#4}% \fi } \newdimen\labelspace @@ -10515,6 +10539,16 @@ directory should work if nowhere else does.} \catcode"#1=\other } +% Suppress ligature creation from adjacent characters. +\ifx\luatexversion\thisisundefined + \def\nolig{{}} +\else + % 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{}} +\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) @@ -11132,8 +11166,8 @@ directory should work if nowhere else does.} % Punctuation \DeclareUnicodeCharacter{2013}{--}% \DeclareUnicodeCharacter{2014}{---}% - \DeclareUnicodeCharacter{2018}{\quoteleft{}}% - \DeclareUnicodeCharacter{2019}{\quoteright{}}% + \DeclareUnicodeCharacter{2018}{\quoteleft\nolig}% + \DeclareUnicodeCharacter{2019}{\quoteright\nolig}% \DeclareUnicodeCharacter{201A}{\quotesinglbase{}}% \DeclareUnicodeCharacter{201C}{\quotedblleft{}}% \DeclareUnicodeCharacter{201D}{\quotedblright{}}% @@ -11168,7 +11202,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{2287}{\ensuremath\supseteq}% % \DeclareUnicodeCharacter{2016}{\ensuremath\Vert}% - \DeclareUnicodeCharacter{2032}{\ensuremath\prime}% + \DeclareUnicodeCharacter{2032}{\ensuremath{^\prime}}% \DeclareUnicodeCharacter{210F}{\ensuremath\hbar}% \DeclareUnicodeCharacter{2111}{\ensuremath\Im}% \DeclareUnicodeCharacter{2113}{\ensuremath\ell}% diff --git a/source/configure b/source/configure index df2590138..acc63d52d 100755 --- a/source/configure +++ b/source/configure @@ -866,6 +866,7 @@ with_system_harfbuzz with_system_graphite2 with_system_zziplib with_system_libpng +with_system_luajit with_system_zlib with_zlib_includes with_zlib_libdir @@ -1647,6 +1648,8 @@ Optional Packages: pkg-config) --with-system-libpng use installed libpng headers and library (requires pkg-config) + --with-system-luajit use installed luajit headers and library (requires + pkg-config) --with-system-zlib use installed zlib headers and library --with-zlib-includes=DIR zlib headers installed in DIR @@ -5607,6 +5610,10 @@ fi ## libs/pplib/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/pplib/ ## configure options and TL libraries required for pplib +test "x$need_pplib" = xyes && { + need_zlib=yes +} + ## libs/harfbuzz/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/harfbuzz/ ## configure options and TL libraries required for harfbuzz @@ -5785,6 +5792,34 @@ test "x$need_libpng" = xyes && { ## libs/luajit/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/luajit/ ## configure options and TL libraries required for luajit +# Check whether --with-system-luajit was given. +if test ${with_system_luajit+y} +then : + withval=$with_system_luajit; +fi +if test "x$with_system_luajit" = x; then + if test -f $srcdir/libs/luajit/configure; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Assuming \`luajit' headers and library from TL tree" >&5 +printf "%s\n" "$as_me: Assuming \`luajit' headers and library from TL tree" >&6;} + with_system_luajit=no + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Assuming installed \`luajit' headers and library" >&5 +printf "%s\n" "$as_me: Assuming installed \`luajit' headers and library" >&6;} + with_system_luajit=yes + fi + ac_configure_args="$ac_configure_args '--with-system-luajit=$with_system_luajit'" +elif test "x$with_system_luajit" = xyes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Using installed \`luajit' headers and library" >&5 +printf "%s\n" "$as_me: Using installed \`luajit' headers and library" >&6;} +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Using \`luajit' headers and library from TL tree" >&5 +printf "%s\n" "$as_me: Using \`luajit' headers and library from TL tree" >&6;} + if test "x$with_system_luajit" != xno; then + with_system_luajit=no + ac_configure_args="$ac_configure_args '--without-system-luajit'" + fi +fi + ## libs/lua53/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/lua53/ ## configure options and TL libraries required for lua53 @@ -23458,6 +23493,13 @@ elif test "x$need_harfbuzz:$with_system_harfbuzz" = xyes:yes; then as_fn_error $? "did not find harfbuzz" "$LINENO" 5 fi +if $PKG_CONFIG luajit; then + LUAJIT_INCLUDES=`$PKG_CONFIG luajit --cflags` + LUAJIT_LIBS=`$PKG_CONFIG luajit --libs` +elif test "x$need_luajit:$with_system_luajit" = xyes:yes; then + as_fn_error $? "did not find luajit" "$LINENO" 5 +fi + @@ -23529,6 +23571,37 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ printf "%s\n" "$kpse_res" >&6; } fi +## libs/luajit/ac/luajit.ac: configure.ac fragment for the TeX Live subdirectory libs/luajit/ +## basic check of system luajit +if test "x$need_luajit:$with_system_luajit" = xyes:yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking requested system \`luajit' library" >&5 +printf %s "checking requested system \`luajit' library... " >&6; } + CPPFLAGS="$LUAJIT_INCLUDES $CPPFLAGS" + LIBS="$LUAJIT_LIBS $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <luajit.h> +int +main (void) +{ +const char *v = LUAJIT_VERSION; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + syslib_used=yes kpse_res=ok +else case e in #( + e) syslib_status=no kpse_res=failed ;; +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: $kpse_res" >&5 +printf "%s\n" "$kpse_res" >&6; } +fi + ## libs/libpng/ac/libpng.ac: configure.ac fragment for the TeX Live subdirectory libs/libpng/ ## basic check of system libpng if test "x$need_libpng:$with_system_libpng" = xyes:yes; then diff --git a/source/doc/Makefile.in b/source/doc/Makefile.in index f5a7159e0..ab58d1451 100644 --- a/source/doc/Makefile.in +++ b/source/doc/Makefile.in @@ -104,6 +104,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/kpse-cairo-flags.m4 \ $(top_srcdir)/m4/kpse-libpaper-flags.m4 \ $(top_srcdir)/m4/kpse-libpng-flags.m4 \ $(top_srcdir)/m4/kpse-lt-hack.m4 \ + $(top_srcdir)/m4/kpse-luajit-flags.m4 \ $(top_srcdir)/m4/kpse-mktex.m4 \ $(top_srcdir)/m4/kpse-mpfi-flags.m4 \ $(top_srcdir)/m4/kpse-mpfr-flags.m4 \ @@ -140,6 +141,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/kpse-cairo-flags.m4 \ $(top_srcdir)/texk/kpathsea/ac/mktex.ac \ $(top_srcdir)/texk/kpathsea/ac/kpathsea.ac \ $(top_srcdir)/libs/zlib/ac/zlib.ac \ + $(top_srcdir)/libs/luajit/ac/luajit.ac \ $(top_srcdir)/libs/libpng/ac/libpng.ac \ $(top_srcdir)/libs/zziplib/ac/zziplib.ac \ $(top_srcdir)/libs/graphite2/ac/graphite2.ac \ diff --git a/source/doc/build-tools.txt b/source/doc/build-tools.txt index 8b95899cc..dccc97852 100644 --- a/source/doc/build-tools.txt +++ b/source/doc/build-tools.txt @@ -4,4 +4,4 @@ bison (GNU Bison) 3.8.2 flex 2.6.0 ltmain.sh (GNU libtool) 2.5.4 m4 (GNU M4) 1.4.19 -makeinfo (GNU texinfo) 7.1 +makeinfo (GNU texinfo) 7.2 diff --git a/source/doc/tlbuild.info b/source/doc/tlbuild.info index 7ac230556..c8af8a57a 100644 --- a/source/doc/tlbuild.info +++ b/source/doc/tlbuild.info @@ -1,9 +1,9 @@ -This is tlbuild.info, produced by makeinfo version 7.0.2 from +This is tlbuild.info, produced by makeinfo version 7.2 from tlbuild.texi. This file documents the TeX Live build system and more. -Copyright (C) 2016-2024 Karl Berry. +Copyright (C) 2016-2025 Karl Berry. Copyright (C) 2013-2015 Karl Berry & Peter Breitenlohner. Permission is granted to make and distribute verbatim copies of this @@ -33,7 +33,7 @@ END-INFO-DIR-ENTRY File: tlbuild.info, Node: Top, Next: Introduction, Up: (dir) -Building TeX Live (2024) +Building TeX Live (2025) ************************ For an overview of this manual, *note Introduction::. @@ -59,7 +59,7 @@ File: tlbuild.info, Node: Introduction, Next: Overview of build system, Prev: 1 Introduction ************** -This manual (dated December 2024) corresponds to the TeX Live 2024 +This manual (dated January 2025) corresponds to the TeX Live 2025 release. This manual is aimed at system installers and programmers, and @@ -87,9 +87,9 @@ documentation resources, such as: * The TeX Live user manual: <https://tug.org/texlive/doc.html>, or run 'texdoc texlive'. - * Other TeX-related Texinfo manuals (*note (web2c)::, *note - (kpathsea)::, etc.): <https://tug.org/texinfohtml/>, or check the - 'TeX' category in the GNU Info system. + * Other TeX-related Texinfo manuals (*note (web2c)Top::, *note + (kpathsea)Top::, etc.): <https://tug.org/texinfohtml/>, or check + the 'TeX' category in the GNU Info system. * Package documentation: <https://tug.org/texlive/Contents/live/doc.html>, or the 'doc.html' @@ -864,7 +864,7 @@ many extra hassles, so don't do that, tempting as it may be. flex 2.6.0 ltmain.sh (GNU libtool) 2.5.4 m4 (GNU M4) 1.4.19 - makeinfo (GNU texinfo) 7.1 + makeinfo (GNU texinfo) 7.2 These versions should be used to update the generated files (e.g., 'configure' or 'Makefile.in') in all or parts of the TL tree after their @@ -1248,7 +1248,7 @@ File: tlbuild.info, Node: kpathsea library, Prev: freetype library, Up: Libra ----------------------------------------------- This is one of the TeX-specific libraries that are maintained as part of -TeX Live (*note (kpathsea)::); the other is 'ptexenc'. These TeX +TeX Live (*note (kpathsea)Top::); the other is 'ptexenc'. These TeX libraries are Libtool libraries (static and/or shared) and are installed by 'make install' together with the programs. They are, however, not part of the TL DVD as distributed by TeX user groups, and have never @@ -3721,7 +3721,7 @@ MACHINE-READABLE OUTPUT: tlmgr MACHINE-READABLE OUTPUT. section. *--json* Instead of dumping the actual content, the database is dumped as - JSON. For the format of JSON output see + JSON. For the format of JSON output see 'tlpkg/doc/JSON-formats.txt', format definition 'TLPDB'. Exactly one of '--local' and '--remote' must be given. @@ -4457,7 +4457,7 @@ B.6.25 repository *repository status* This action manages the list of repositories. See *note - (MULTIPLE_REPOSITORIES):: below for detailed explanations. + (MULTIPLE_REPOSITORIES)Top:: below for detailed explanations. The first form, 'repository list', lists all configured repositories and the respective tags if set. If a path, url, or @@ -5769,7 +5769,6 @@ Index �[index�] * Menu: -* $@ target in normal make rules: Prerequisites. (line 13) * --bindir configure option: --prefix --bindir .... (line 6) * --bindir configure option <1>: --enable-multiplatform. @@ -5883,6 +5882,7 @@ Index * -fvisibility=hidden: Macros for compilers. (line 19) * -j make option: Build in parallel. (line 6) +* $@ target in normal make rules: Prerequisites. (line 13) * ac/withenable.ac: Adding a new program module. (line 42) * adapting TeX Live for distros: Distro builds. (line 54) @@ -5931,10 +5931,10 @@ Index * building: Building. (line 6) * building a distribution: Build distribution. (line 6) * building in parallel: Build in parallel. (line 6) -* C++11, removing dependent sources: Build one package. (line 85) -* C++11, required: Prerequisites. (line 17) * C, ANSI, required: Declarations and definitions. (line 6) +* C++11, removing dependent sources: Build one package. (line 85) +* C++11, required: Prerequisites. (line 17) * C99, avoided: Declarations and definitions. (line 6) * cache file, for configure: Build in parallel. (line 15) @@ -5942,8 +5942,8 @@ Index * callexe.c: Macros for Windows. (line 32) * CC: Variables for configure. (line 10) -* CC=C-COMPILER: Build one package. (line 77) * CC_BUILD: Cross problems. (line 13) +* CC=C-COMPILER: Build one package. (line 77) * ChangeLog: Adding a new program module. (line 73) * chktex: Declarations and definitions. @@ -6039,10 +6039,10 @@ Index * fontconfig library, required by xetex: Prerequisites. (line 40) * freetype cross compiling: Cross problems. (line 13) * freetype library: freetype library. (line 6) -* FreeType, requires gmake: Prerequisites. (line 13) * freetype-config: freetype library. (line 13) * freetype-config <1>: Variables for configure. (line 24) +* FreeType, requires gmake: Prerequisites. (line 13) * FT2_CONFIG: Variables for configure. (line 21) * gcc, default compilers: Build one package. (line 77) @@ -6066,11 +6066,11 @@ Index * ICU cross compiling: Cross problems. (line 20) * ICU libraries: Variables for configure. (line 24) -* ICU, requires C++11: Prerequisites. (line 17) -* icu-config: Variables for configure. - (line 24) * ICU_CONFIG: Variables for configure. (line 22) +* icu-config: Variables for configure. + (line 24) +* ICU, requires C++11: Prerequisites. (line 17) * infrastructure, tools needed for: Build system tools. (line 6) * inst/ top-level directory: Top-level directories. (line 39) @@ -6085,14 +6085,6 @@ Index (line 6) * kpathsea library: kpathsea library. (line 6) * kpathsea.ac: kpathsea library. (line 18) -* kpse-libpng-flags.m4: png library. (line 45) -* kpse-pkgs.m4: Overview of build system. - (line 30) -* kpse-zlib-flags.m4: zlib library. (line 6) -* kpsewhich: Variables for configure. - (line 30) -* KPSEWHICH: Variables for configure. - (line 29) * KPSE_ADD_FLAGS: Macros for library and header flags. (line 20) * KPSE_ALL_SYSTEM_FLAGS: Adding a new generic library module. @@ -6125,17 +6117,17 @@ Index (line 14) * KPSE_LARGEFILE: Macros for libraries. (line 8) -* KPSE_LIBPNG_FLAGS: Macros for library and header flags. - (line 10) -* KPSE_LIBPNG_FLAGS <1>: png library. (line 45) -* kpse_libs_pkgs: Adding a new generic library module. - (line 6) * KPSE_LIB_FLAGS: Macros for library and header flags. (line 6) * KPSE_LIB_FLAGS <1>: Adding a new generic library module. (line 26) * KPSE_LIB_SYSTEM_FLAGS: Adding a new generic library module. (line 34) +* KPSE_LIBPNG_FLAGS: Macros for library and header flags. + (line 10) +* KPSE_LIBPNG_FLAGS <1>: png library. (line 45) +* kpse_libs_pkgs: Adding a new generic library module. + (line 6) * KPSE_PROG_LEX: Macros for programs. (line 21) * KPSE_RESTORE_FLAGS: Macros for library and header flags. (line 24) @@ -6156,6 +6148,14 @@ Index (line 11) * KPSE_WITH_TEXLIB: Adding a new TeX-specific library module. (line 14) +* kpse-libpng-flags.m4: png library. (line 45) +* kpse-pkgs.m4: Overview of build system. + (line 30) +* kpse-zlib-flags.m4: zlib library. (line 6) +* kpsewhich: Variables for configure. + (line 30) +* KPSEWHICH: Variables for configure. + (line 29) * large file support: --disable-largefile. (line 6) * LATEX: Variables for configure. (line 40) @@ -6263,8 +6263,8 @@ Index * removing build directories: Build one package. (line 106) * requirements for building: Prerequisites. (line 6) * runscript.exe: Macros for Windows. (line 25) -* scripts, linked and not maintained: Linked scripts. (line 6) * scripts-targets.lst: Linked scripts. (line 35) +* scripts, linked and not maintained: Linked scripts. (line 6) * scrolling, smooth: Configure options for texk/xdvik. (line 13) * SED: Variables for configure. @@ -6307,11 +6307,11 @@ Index * TEXMFROOT for running standalone: Build one package. (line 44) * tie: Cross problems. (line 26) * timestamps, in repository: Build system tools. (line 38) +* TL_MAKE_FLAGS: Build in parallel. (line 11) * TLpatches/patch-...: Adding a new program module. (line 68) * TLpatches/TL-Changes: Adding a new program module. (line 64) -* TL_MAKE_FLAGS: Build in parallel. (line 11) * tools, for building: Build system tools. (line 6) * top-level directories: Top-level directories. (line 6) @@ -6326,15 +6326,15 @@ Index (line 52) * variables for configure: Variables for configure. (line 6) -* warning, discards qualifiers: Const. (line 30) * WARNING_C[XX]FLAGS: Macros for compilers. (line 9) +* warning, discards qualifiers: Const. (line 30) * web2c program: Cross problems. (line 13) * web2c.ac: Configure options for texk/web2c. (line 37) * wget: Linked scripts. (line 26) -* WIN32, Automake conditional: Macros for Windows. (line 16) * WIN32_WRAP, Automake conditional: Macros for Windows. (line 25) +* WIN32, Automake conditional: Macros for Windows. (line 16) * Windows, invoking scripts on: Linked scripts. (line 6) * Windows, macros for: Macros for Windows. (line 6) * withenable.ac, for new modules: Adding a new program module. @@ -6368,434 +6368,433 @@ Index * xz: Linked scripts. (line 26) * zlib library: zlib library. (line 6) - Tag Table: -Node: Top1210 -Node: Introduction2120 -Node: Overview of build system3948 -Node: Prerequisites5999 -Ref: Prerequisites-Footnote-18998 -Node: Building9301 -Node: Build iteration10649 -Node: Build in parallel11693 -Node: Build distribution12444 -Node: Build one package13272 -Node: Build one engine17985 -Node: Cross compilation20597 -Node: Cross configuring21876 -Node: Cross problems23553 -Node: Installing25215 -Node: Installation directories26283 -Node: Linked scripts28101 -Node: Distro builds30985 -Node: Layout and infrastructure33361 -Node: Build system tools34192 -Node: Top-level directories36407 -Node: Autoconf macros38643 -Node: General setup macros39405 -Node: Macros for programs40280 -Node: Macros for compilers41081 -Node: Macros for libraries42545 -Node: Macros for library and header flags42971 -Node: Macros for Windows44882 -Node: Library modules46477 -Node: png library46966 -Node: zlib library49314 -Node: freetype library49829 -Node: kpathsea library50525 -Node: Program modules51904 -Node: t1utils package52332 -Node: xindy package52877 -Node: xdvik package53993 -Node: asymptote55052 -Node: Extending TeX Live55556 -Node: Adding a new program module56363 -Node: Adding a new engine61126 -Node: Adding a new generic library module62911 -Node: Adding a new TeX-specific library module65132 -Node: Configure options65830 -Node: Global configure options67211 -Node: --disable-native-texlive-build67753 -Node: --prefix --bindir ...68715 -Node: --disable-largefile69255 -Node: --disable-missing69797 -Node: --enable-compiler-warnings=LEVEL70198 -Node: --enable-cxx-runtime-hack70854 -Node: --enable-maintainer-mode71274 -Node: --enable-multiplatform71803 -Node: --enable-shared72376 -Node: --enable-silent-rules72747 -Node: --without-ln-s73199 -Node: --without-x73546 -Node: Program-specific configure options73734 -Node: --enable-PROG --disable-PROG74377 -Node: --disable-all-pkgs74650 -Node: Configure options for texk/web2c75433 -Node: Configure options for texk/bibtex-x77971 -Node: Configure options for texk/dvipdfm-x78514 -Node: Configure options for texk/dvisvgm79290 -Node: Configure options for texk/texlive80171 -Node: Configure options for texk/xdvik80592 -Node: Configure options for utils/xindy81213 -Node: Library-specific configure options82103 -Node: Configure options for kpathsea83064 -Node: Variables for configure83768 -Node: Coding conventions85194 -Node: Declarations and definitions85909 -Node: Const88083 -Node: Continuous integration89947 -Node: Transfer from Subversion to Github90611 -Node: Automatic update of the Git mirror92773 -Node: CI testing on Travis-CI93355 -Node: Releases on Github94064 -Node: install-tl94504 -Node: install-tl NAME94948 -Node: install-tl SYNOPSIS95128 -Node: install-tl DESCRIPTION95366 -Node: install-tl REFERENCES96563 -Node: install-tl EXAMPLES97172 -Ref: install-tl install-tl --paper=letter97623 -Ref: install-tl install-tl --scheme _scheme_97759 -Ref: install-tl install-tl --no-interaction97914 -Ref: install-tl install-tl --profile _texlive.profile_98066 -Node: install-tl OPTIONS98334 -Ref: install-tl *-gui* [[=]_module_]98831 -Ref: install-tl *-no-gui*98842 -Ref: install-tl text99050 -Ref: install-tl tcl (or "perltk" or "wizard" or "expert" or nothing)99235 -Ref: install-tl *-lang* _llcode_99867 -Ref: install-tl *-repository* _url|path_100491 -Ref: install-tl *-select-repository*101385 -Ref: install-tl *-all-options*101803 -Ref: install-tl *-custom-bin* _path_102058 -Ref: install-tl *-debug-fakenet*102890 -Ref: install-tl *-debug-setup-vars*103104 -Ref: install-tl *-debug-translation*103252 -Ref: install-tl *-force-platform* _platform_103528 -Ref: install-tl *-help*, *--help*, *-?*103786 -Ref: install-tl *-in-place*104199 -Ref: install-tl *-init-from-profile* _profile_file_104744 -Ref: install-tl *-logfile* _file_105013 -Ref: install-tl *-no-cls*105364 -Ref: install-tl *-no-continue*105491 -Ref: install-tl *-no-doc-install*106062 -Ref: install-tl *-no-src-install*106081 -Ref: install-tl *-no-installation*106872 -Ref: install-tl *-no-interaction*107023 -Ref: install-tl *-no-persistent-downloads*107280 -Ref: install-tl *-persistent-downloads*107305 -Ref: install-tl *-no-verify-downloads*107912 -Ref: install-tl *-non-admin*108275 -Ref: install-tl *-paper* a4*|*letter108381 -Ref: install-tl *-portable*108577 -Ref: install-tl *-print-platform*108714 -Ref: install-tl *-profile* _profile_file_108912 -Ref: install-tl *-q*109133 -Ref: install-tl *-scheme* _scheme_109195 -Ref: install-tl *-texdir* _dir_109596 -Ref: install-tl *-texuserdir* _dir_110201 -Ref: install-tl *-texmflocal* _dir_110490 -Ref: install-tl *-texmfhome* _dir_111115 -Ref: install-tl *-texmfsysconfig* _dir_111424 -Ref: install-tl *-texmfsysvar* _dir_111446 -Ref: install-tl *-texmfconfig* _dir_111541 -Ref: install-tl *-texmfvar* _dir_111560 -Ref: install-tl *-v*111768 -Ref: install-tl *-version*, *--version*111924 -Node: install-tl PROFILES112058 -Ref: install-tl instopt_adjustpath (default 0 on Unix, 1 on Windows)115074 -Ref: install-tl instopt_adjustrepo (default 1)115150 -Ref: install-tl instopt_letter (default 0)115287 -Ref: install-tl instopt_portable (default 0)115378 -Ref: install-tl instopt_write18_restricted (default 1)115917 -Node: install-tl ENVIRONMENT VARIABLES117256 -Ref: install-tl NOPERLDOC117619 -Ref: install-tl TEXLIVE_DOWNLOADER117704 -Ref: install-tl TL_DOWNLOAD_PROGRAM117727 -Ref: install-tl TL_DOWNLOAD_ARGS117747 -Ref: install-tl TEXLIVE_INSTALL_ENV_NOCHECK117951 -Ref: install-tl TEXLIVE_INSTALL_NO_CONTEXT_CACHE118153 -Ref: install-tl TEXLIVE_INSTALL_NO_DISKCHECK118265 -Ref: install-tl TEXLIVE_INSTALL_NO_RESUME118681 -Ref: install-tl TEXLIVE_INSTALL_NO_WELCOME118833 -Ref: install-tl TEXLIVE_INSTALL_PAPER118954 -Ref: install-tl TEXLIVE_INSTALL_PREFIX119100 -Ref: install-tl TEXLIVE_INSTALL_TEXMFCONFIG119131 -Ref: install-tl TEXLIVE_INSTALL_TEXMFVAR119159 -Ref: install-tl TEXLIVE_INSTALL_TEXMFHOME119188 -Ref: install-tl TEXLIVE_INSTALL_TEXMFLOCAL119218 -Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSCONFIG119252 -Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSVAR119283 -Node: install-tl DIRECTORY TREES119721 -Node: install-tl BUGS122305 -Node: install-tl AUTHORS AND COPYRIGHT123185 -Node: tlmgr123583 -Node: tlmgr NAME124089 -Node: tlmgr SYNOPSIS124233 -Node: tlmgr DESCRIPTION124435 -Node: tlmgr EXAMPLES125546 -Ref: tlmgr tlmgr option repository ctan125809 -Ref: tlmgr tlmgr option repository https://mirror.ctan.org/systems/texlive/tlnet125882 -Ref: tlmgr tlmgr update --list126487 -Ref: tlmgr tlmgr update --all126580 -Ref: tlmgr tlmgr info _what_126737 -Ref: tlmgr tlmgr bug _what_126915 -Node: tlmgr OPTIONS127110 -Ref: tlmgr *--repository* _url|path_127643 -Ref: tlmgr /some/local/dir128829 -Ref: tlmgr file:/some/local/dir128858 -Ref: tlmgr ctan128931 -Ref: tlmgr https://mirror.ctan.org/systems/texlive/tlnet128985 -Ref: tlmgr http://server/path/to/tlnet129326 -Ref: tlmgr https://server/path/to/tlnet129707 -Ref: tlmgr ftp://server/path/to/tlnet130175 -Ref: tlmgr user@machine:/path/to/tlnet130307 -Ref: tlmgr scp://user@machine/path/to/tlnet130348 -Ref: tlmgr ssh://user@machine/path/to/tlnet130389 -Ref: tlmgr *--gui* [_action_]130783 -Ref: tlmgr *--gui-lang* _llcode_131597 -Ref: tlmgr *--command-logfile* _file_132339 -Ref: tlmgr *--debug-translation*132606 -Ref: tlmgr *--machine-readable*132810 -Ref: tlmgr *--no-execute-actions*133079 -Ref: tlmgr *--package-logfile* _file_133273 -Ref: tlmgr *--pause*133528 -Ref: tlmgr *--persistent-downloads*133684 -Ref: tlmgr *--no-persistent-downloads*133713 -Ref: tlmgr *--pin-file*134208 -Ref: tlmgr *--usermode*134427 -Ref: tlmgr *--usertree* _dir_134548 -Ref: tlmgr *--verify-repo=[none|main|all]*134675 -Node: tlmgr ACTIONS135574 -Node: tlmgr help136467 -Node: tlmgr version136944 -Node: tlmgr backup137207 -Ref: tlmgr *backup [_option_...] --all*137384 -Ref: tlmgr *backup [_option_...] _pkg_...*137417 -Ref: tlmgr *--backupdir* _directory_138484 -Ref: tlmgr *--all*138702 -Ref: tlmgr *--clean*[=_N_]138955 -Ref: tlmgr *--dry-run*139283 -Node: tlmgr bug [_search-string_]139413 -Node: tlmgr candidates _pkg_139999 -Node: tlmgr check [_option_...] [depends|executes|files|runfiles|texmfdbs|all]140369 -Ref: tlmgr *depends*140883 -Ref: tlmgr *executes*141225 -Ref: tlmgr *files*141340 -Ref: tlmgr *runfiles*141476 -Ref: tlmgr *texmfdbs*141613 -Ref: tlmgr - all items in TEXMFDBS have the !! prefix.141843 -Ref: tlmgr - all items in TEXMFBDS have an ls-R file (if they exist at all).141919 -Ref: tlmgr - all items in TEXMF with !! are listed in TEXMFDBS.141984 -Ref: tlmgr - all items in TEXMF with an ls-R file are listed in TEXMFDBS.142059 -Ref: tlmgr *--use-svn*142085 -Node: tlmgr conf142226 -Ref: tlmgr *conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]]*142516 -Ref: tlmgr *conf auxtrees [--conffile _file_] [show|add|remove] [_value_]*142581 -Node: tlmgr dump-tlpdb [_option_...] [--json]144997 -Ref: tlmgr *--local*145433 -Ref: tlmgr *--remote*145473 -Ref: tlmgr *--json*145512 -Node: tlmgr generate146083 -Ref: tlmgr *generate [_option_...] language*146279 -Ref: tlmgr *generate [_option_...] language.dat*146318 -Ref: tlmgr *generate [_option_...] language.def*146357 -Ref: tlmgr *generate [_option_...] language.dat.lua*146400 -Ref: tlmgr *--dest* _output_file_148728 -Ref: tlmgr *--localcfg* _local_conf_file_149305 -Ref: tlmgr *--rebuild-sys*149429 -Node: tlmgr gui150244 -Node: tlmgr info150424 -Ref: tlmgr *info [_option_...] _pkg_...*150586 -Ref: tlmgr *info [_option_...] collections*150620 -Ref: tlmgr *info [_option_...] schemes*150650 -Ref: tlmgr *--list*152181 -Ref: tlmgr *--only-installed*152496 -Ref: tlmgr *--only-remote*152685 -Ref: tlmgr *--data item1,item2,...*152990 -Ref: tlmgr *--json* 1154363 -Node: tlmgr init-usertree154746 -Node: tlmgr install [_option_...] _pkg_...155127 -Ref: tlmgr *--dry-run* 1155636 -Ref: tlmgr *--file*155754 -Ref: tlmgr *--force*155977 -Ref: tlmgr *--no-depends*156198 -Ref: tlmgr *--no-depends-at-all*156358 -Ref: tlmgr *--reinstall*156759 -Ref: tlmgr *--with-doc*157138 -Ref: tlmgr *--with-src*157152 -Node: tlmgr key157880 -Ref: tlmgr *key list*158038 -Ref: tlmgr *key add _file_*158056 -Ref: tlmgr *key remove _keyid_*158078 -Node: tlmgr list158672 -Node: tlmgr option158834 -Ref: tlmgr *option [--json] [show]*158990 -Ref: tlmgr *option [--json] showall|help*159022 -Ref: tlmgr *option _key_ [_value_]*159048 -Node: tlmgr paper163627 -Ref: tlmgr *paper [a4|letter]*163776 -Ref: tlmgr *<[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|--list]*>163853 -Ref: tlmgr *paper --json*163869 -Node: tlmgr path165084 -Ref: tlmgr *path [--windowsmode=user|admin] add*165250 -Ref: tlmgr *path [--windowsmode=user|admin] remove*165292 -Node: tlmgr pinning166807 -Ref: tlmgr pinning show167048 -Ref: tlmgr pinning add _repo_ _pkgglob_...167121 -Ref: tlmgr pinning remove _repo_ _pkgglob_...167240 -Ref: tlmgr pinning remove _repo_ --all167393 -Node: tlmgr platform167447 -Ref: tlmgr *platform list|add|remove _platform_...*167633 -Ref: tlmgr *platform set _platform_*167660 -Ref: tlmgr *platform set auto*167681 -Ref: tlmgr *--dry-run* 2168559 -Node: tlmgr postaction168678 -Ref: tlmgr *postaction [_option_...] install [shortcut|fileassoc|script] [_pkg_...]*168908 -Ref: tlmgr *postaction [_option_...] remove [shortcut|fileassoc|script] [_pkg_...]*168982 -Ref: tlmgr *--windowsmode=[user|admin]*169302 -Ref: tlmgr *--fileassocmode=[1|2]*169727 -Ref: tlmgr *--all* 1170013 -Node: tlmgr print-platform170068 -Node: tlmgr print-platform-info170399 -Node: tlmgr remove [_option_...] _pkg_...170699 -Ref: tlmgr *--all* 2171184 -Ref: tlmgr *--backup*171295 -Ref: tlmgr *--backupdir* _directory_ 1171322 -Ref: tlmgr *--no-depends* 1171727 -Ref: tlmgr *--no-depends-at-all* 1171790 -Ref: tlmgr *--force* 1171897 -Ref: tlmgr *--dry-run* 3172371 -Node: tlmgr repository172748 -Ref: tlmgr *repository list*172936 -Ref: tlmgr *repository list _path|url|tag_*172970 -Ref: tlmgr *repository add _path_ [_tag_]*173003 -Ref: tlmgr *repository remove _path|tag_*173035 -Ref: tlmgr *repository set _path_[#_tag_] [_path_[#_tag_] ...]*173089 -Ref: tlmgr *repository status*173110 -Ref: tlmgr The tag (which can be the same as the url);174337 -Node: tlmgr restore174815 -Ref: tlmgr *restore [_option_...] _pkg_ [_rev_]*174994 -Ref: tlmgr *restore [_option_...] --all*175025 -Ref: tlmgr *--all* 3175726 -Ref: tlmgr *--backupdir* _directory_ 2175941 -Ref: tlmgr *--dry-run* 4176123 -Ref: tlmgr *--force* 2176256 -Ref: tlmgr *--json* 2176303 -Node: tlmgr search176630 -Ref: tlmgr *search [_option_...] _what_*176794 -Ref: tlmgr *search [_option_...] --file _what_*176832 -Ref: tlmgr *search [_option_...] --all _what_*176869 -Ref: tlmgr *--file* 1177090 -Ref: tlmgr *--all* 4177153 -Ref: tlmgr *--global*177243 -Ref: tlmgr *--word*177371 -Node: tlmgr shell177686 -Ref: tlmgr protocol178421 -Ref: tlmgr help 1178485 -Ref: tlmgr version 1178538 -Ref: tlmgr quit, end, bye, byebye, EOF178606 -Ref: tlmgr restart178627 -Ref: tlmgr load [local|remote]178750 -Ref: tlmgr save178820 -Ref: tlmgr get [_var_] =item set [_var_ [_val_]]178943 -Node: tlmgr show179544 -Node: tlmgr uninstall179711 -Node: tlmgr update [_option_...] [_pkg_...]179943 -Ref: tlmgr *--all* 5180315 -Ref: tlmgr *--self*182495 -Ref: tlmgr *--dry-run* 5183260 -Ref: tlmgr *--list* [_pkg_]183438 -Ref: tlmgr *--exclude* _pkg_184128 -Ref: tlmgr *--no-auto-remove* [_pkg_...]184929 -Ref: tlmgr *--no-auto-install* [_pkg_...]185414 -Ref: tlmgr *--reinstall-forcibly-removed*186177 -Ref: tlmgr *--backup* 1186713 -Ref: tlmgr *--backupdir* _directory_ 3186740 -Ref: tlmgr *--no-depends* 2187907 -Ref: tlmgr *--no-depends-at-all* 2188111 -Ref: tlmgr *--force* 3188218 -Node: tlmgr CONFIGURATION FILE FOR TLMGR189209 -Ref: tlmgr auto-remove = 0 or 1 (default 1), same as command-line option.190211 -Ref: tlmgr gui-expertmode = 0 or 1 (default 1). This switches between the full GUI and a simplified GUI with only the most common settings.190343 -Ref: tlmgr gui-lang = _llcode_, with a language code value as with the command-line option.190427 -Ref: tlmgr no-checksums = 0 or 1 (default 0, see below).190476 -Ref: tlmgr persistent-downloads = 0 or 1 (default 1), same as command-line option.190551 -Ref: tlmgr require-verification = 0 or 1 (default 0), same as command-line option.190626 -Ref: tlmgr tkfontscale = _floating-point number_ (default 1.0); scaling factor for fonts in the Tk-based frontends.190734 -Ref: tlmgr update-exclude = _comma-separated list of packages_ (no spaces allowed). Same as the command line option --exclude for the update action.190879 -Ref: tlmgr verify-downloads = 0 or 1 (default 1), same as command-line option.190950 -Ref: tlmgr allowed-actions = _action1_[,_action2_,...] The value is a comma-separated list (no spaces) of tlmgr actions which are allowed to be executed when tlmgr is invoked in system mode (that is, without --usermode). This allows distributors to include tlmgr in their packaging, but allow only a restricted set of actions that do not interfere with their distro package manager. For native TeX Live installations, it doesn't make sense to set this.191467 -Node: tlmgr CRYPTOGRAPHIC VERIFICATION192299 -Node: tlmgr Configuration of GnuPG invocation194472 -Node: tlmgr USER MODE195110 -Node: tlmgr User mode install197981 -Node: tlmgr User mode backup, restore, remove, update199127 -Node: tlmgr User mode generate, option, paper199573 -Node: tlmgr User mode logs199940 -Node: tlmgr MULTIPLE REPOSITORIES200238 -Node: tlmgr Pinning201967 -Node: tlmgr GUI FOR TLMGR203890 -Node: tlmgr Main display205539 -Node: tlmgr Display configuration area205791 -Ref: tlmgr Status206152 -Ref: tlmgr Category206316 -Ref: tlmgr Match206502 -Ref: tlmgr Selection206683 -Ref: tlmgr Display configuration buttons206887 -Node: tlmgr Package list area207070 -Ref: tlmgr a checkbox207654 -Ref: tlmgr package name207790 -Ref: tlmgr local revision (and version)207889 -Ref: tlmgr remote revision (and version)208264 -Ref: tlmgr short description208561 -Node: tlmgr Main display action buttons208606 -Ref: tlmgr Update all installed208872 -Ref: tlmgr Update209244 -Ref: tlmgr Install209294 -Ref: tlmgr Remove209480 -Ref: tlmgr Backup209658 -Node: tlmgr Menu bar209815 -Ref: tlmgr tlmgr menu210038 -Ref: tlmgr Options menu210346 -Ref: tlmgr Actions menu211429 -Ref: tlmgr Help menu211857 -Node: tlmgr GUI options211991 -Ref: tlmgr -background _color_212237 -Ref: tlmgr -font " _fontname_ _fontsize_ "212302 -Ref: tlmgr -foreground _color_212460 -Ref: tlmgr -geometry _geomspec_212512 -Ref: tlmgr -xrm _xresource_212704 -Node: tlmgr MACHINE-READABLE OUTPUT212973 -Node: tlmgr Machine-readable update and install output213787 -Ref: tlmgr location-url _location_215063 -Ref: tlmgr total-bytes _count_215279 -Ref: tlmgr _pkgname_215689 -Ref: tlmgr _status_215899 -Ref: tlmgr d215977 -Ref: tlmgr f216037 -Ref: tlmgr u216216 -Ref: tlmgr r216262 -Ref: tlmgr a216385 -Ref: tlmgr i216563 -Ref: tlmgr I216682 -Ref: tlmgr _localrev_216784 -Ref: tlmgr _serverrev_216891 -Ref: tlmgr _size_217003 -Ref: tlmgr _runtime_217172 -Ref: tlmgr _esttot_217242 -Node: tlmgr Machine-readable option output217275 -Node: tlmgr ENVIRONMENT VARIABLES217787 -Ref: tlmgr TEXLIVE_COMPRESSOR218298 -Ref: tlmgr TEXLIVE_DOWNLOADER219146 -Ref: tlmgr TL_DOWNLOAD_PROGRAM219169 -Ref: tlmgr TL_DOWNLOAD_ARGS219189 -Ref: tlmgr TEXLIVE_PREFER_OWN220215 -Node: tlmgr AUTHORS AND COPYRIGHT221039 -Node: tlmgr POD ERRORS221462 -Ref: tlmgr Around line 8454:221687 -Node: Index221723 +Node: Top1208 +Node: Introduction2118 +Node: Overview of build system3951 +Node: Prerequisites6002 +Ref: Prerequisites-Footnote-19001 +Node: Building9304 +Node: Build iteration10652 +Node: Build in parallel11696 +Node: Build distribution12447 +Node: Build one package13275 +Node: Build one engine17988 +Node: Cross compilation20600 +Node: Cross configuring21879 +Node: Cross problems23556 +Node: Installing25218 +Node: Installation directories26286 +Node: Linked scripts28104 +Node: Distro builds30988 +Node: Layout and infrastructure33364 +Node: Build system tools34195 +Node: Top-level directories36410 +Node: Autoconf macros38646 +Node: General setup macros39408 +Node: Macros for programs40283 +Node: Macros for compilers41084 +Node: Macros for libraries42548 +Node: Macros for library and header flags42974 +Node: Macros for Windows44885 +Node: Library modules46480 +Node: png library46969 +Node: zlib library49317 +Node: freetype library49832 +Node: kpathsea library50528 +Node: Program modules51910 +Node: t1utils package52338 +Node: xindy package52883 +Node: xdvik package53999 +Node: asymptote55058 +Node: Extending TeX Live55562 +Node: Adding a new program module56369 +Node: Adding a new engine61132 +Node: Adding a new generic library module62917 +Node: Adding a new TeX-specific library module65138 +Node: Configure options65836 +Node: Global configure options67217 +Node: --disable-native-texlive-build67759 +Node: --prefix --bindir ...68721 +Node: --disable-largefile69261 +Node: --disable-missing69803 +Node: --enable-compiler-warnings=LEVEL70204 +Node: --enable-cxx-runtime-hack70860 +Node: --enable-maintainer-mode71280 +Node: --enable-multiplatform71809 +Node: --enable-shared72382 +Node: --enable-silent-rules72753 +Node: --without-ln-s73205 +Node: --without-x73552 +Node: Program-specific configure options73740 +Node: --enable-PROG --disable-PROG74383 +Node: --disable-all-pkgs74656 +Node: Configure options for texk/web2c75439 +Node: Configure options for texk/bibtex-x77977 +Node: Configure options for texk/dvipdfm-x78520 +Node: Configure options for texk/dvisvgm79296 +Node: Configure options for texk/texlive80177 +Node: Configure options for texk/xdvik80598 +Node: Configure options for utils/xindy81219 +Node: Library-specific configure options82109 +Node: Configure options for kpathsea83070 +Node: Variables for configure83774 +Node: Coding conventions85200 +Node: Declarations and definitions85915 +Node: Const88089 +Node: Continuous integration89953 +Node: Transfer from Subversion to Github90617 +Node: Automatic update of the Git mirror92779 +Node: CI testing on Travis-CI93361 +Node: Releases on Github94070 +Node: install-tl94510 +Node: install-tl NAME94954 +Node: install-tl SYNOPSIS95134 +Node: install-tl DESCRIPTION95372 +Node: install-tl REFERENCES96569 +Node: install-tl EXAMPLES97178 +Ref: install-tl install-tl --paper=letter97629 +Ref: install-tl install-tl --scheme _scheme_97765 +Ref: install-tl install-tl --no-interaction97920 +Ref: install-tl install-tl --profile _texlive.profile_98072 +Node: install-tl OPTIONS98340 +Ref: install-tl *-gui* [[=]_module_]98837 +Ref: install-tl *-no-gui*98848 +Ref: install-tl text99056 +Ref: install-tl tcl (or "perltk" or "wizard" or "expert" or nothing)99241 +Ref: install-tl *-lang* _llcode_99873 +Ref: install-tl *-repository* _url|path_100497 +Ref: install-tl *-select-repository*101391 +Ref: install-tl *-all-options*101809 +Ref: install-tl *-custom-bin* _path_102064 +Ref: install-tl *-debug-fakenet*102896 +Ref: install-tl *-debug-setup-vars*103110 +Ref: install-tl *-debug-translation*103258 +Ref: install-tl *-force-platform* _platform_103534 +Ref: install-tl *-help*, *--help*, *-?*103792 +Ref: install-tl *-in-place*104205 +Ref: install-tl *-init-from-profile* _profile_file_104750 +Ref: install-tl *-logfile* _file_105019 +Ref: install-tl *-no-cls*105370 +Ref: install-tl *-no-continue*105497 +Ref: install-tl *-no-doc-install*106068 +Ref: install-tl *-no-src-install*106087 +Ref: install-tl *-no-installation*106878 +Ref: install-tl *-no-interaction*107029 +Ref: install-tl *-no-persistent-downloads*107286 +Ref: install-tl *-persistent-downloads*107311 +Ref: install-tl *-no-verify-downloads*107918 +Ref: install-tl *-non-admin*108281 +Ref: install-tl *-paper* a4*|*letter108387 +Ref: install-tl *-portable*108583 +Ref: install-tl *-print-platform*108720 +Ref: install-tl *-profile* _profile_file_108918 +Ref: install-tl *-q*109139 +Ref: install-tl *-scheme* _scheme_109201 +Ref: install-tl *-texdir* _dir_109602 +Ref: install-tl *-texuserdir* _dir_110207 +Ref: install-tl *-texmflocal* _dir_110496 +Ref: install-tl *-texmfhome* _dir_111121 +Ref: install-tl *-texmfsysconfig* _dir_111430 +Ref: install-tl *-texmfsysvar* _dir_111452 +Ref: install-tl *-texmfconfig* _dir_111547 +Ref: install-tl *-texmfvar* _dir_111566 +Ref: install-tl *-v*111774 +Ref: install-tl *-version*, *--version*111930 +Node: install-tl PROFILES112064 +Ref: install-tl instopt_adjustpath (default 0 on Unix, 1 on Windows)115080 +Ref: install-tl instopt_adjustrepo (default 1)115156 +Ref: install-tl instopt_letter (default 0)115293 +Ref: install-tl instopt_portable (default 0)115384 +Ref: install-tl instopt_write18_restricted (default 1)115923 +Node: install-tl ENVIRONMENT VARIABLES117262 +Ref: install-tl NOPERLDOC117625 +Ref: install-tl TEXLIVE_DOWNLOADER117710 +Ref: install-tl TL_DOWNLOAD_PROGRAM117733 +Ref: install-tl TL_DOWNLOAD_ARGS117753 +Ref: install-tl TEXLIVE_INSTALL_ENV_NOCHECK117957 +Ref: install-tl TEXLIVE_INSTALL_NO_CONTEXT_CACHE118159 +Ref: install-tl TEXLIVE_INSTALL_NO_DISKCHECK118271 +Ref: install-tl TEXLIVE_INSTALL_NO_RESUME118687 +Ref: install-tl TEXLIVE_INSTALL_NO_WELCOME118839 +Ref: install-tl TEXLIVE_INSTALL_PAPER118960 +Ref: install-tl TEXLIVE_INSTALL_PREFIX119106 +Ref: install-tl TEXLIVE_INSTALL_TEXMFCONFIG119137 +Ref: install-tl TEXLIVE_INSTALL_TEXMFVAR119165 +Ref: install-tl TEXLIVE_INSTALL_TEXMFHOME119194 +Ref: install-tl TEXLIVE_INSTALL_TEXMFLOCAL119224 +Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSCONFIG119258 +Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSVAR119289 +Node: install-tl DIRECTORY TREES119727 +Node: install-tl BUGS122311 +Node: install-tl AUTHORS AND COPYRIGHT123191 +Node: tlmgr123589 +Node: tlmgr NAME124095 +Node: tlmgr SYNOPSIS124239 +Node: tlmgr DESCRIPTION124441 +Node: tlmgr EXAMPLES125552 +Ref: tlmgr tlmgr option repository ctan125815 +Ref: tlmgr tlmgr option repository https://mirror.ctan.org/systems/texlive/tlnet125888 +Ref: tlmgr tlmgr update --list126493 +Ref: tlmgr tlmgr update --all126586 +Ref: tlmgr tlmgr info _what_126743 +Ref: tlmgr tlmgr bug _what_126921 +Node: tlmgr OPTIONS127116 +Ref: tlmgr *--repository* _url|path_127649 +Ref: tlmgr /some/local/dir128835 +Ref: tlmgr file:/some/local/dir128864 +Ref: tlmgr ctan128937 +Ref: tlmgr https://mirror.ctan.org/systems/texlive/tlnet128991 +Ref: tlmgr http://server/path/to/tlnet129332 +Ref: tlmgr https://server/path/to/tlnet129713 +Ref: tlmgr ftp://server/path/to/tlnet130181 +Ref: tlmgr user@machine:/path/to/tlnet130313 +Ref: tlmgr scp://user@machine/path/to/tlnet130354 +Ref: tlmgr ssh://user@machine/path/to/tlnet130395 +Ref: tlmgr *--gui* [_action_]130789 +Ref: tlmgr *--gui-lang* _llcode_131603 +Ref: tlmgr *--command-logfile* _file_132345 +Ref: tlmgr *--debug-translation*132612 +Ref: tlmgr *--machine-readable*132816 +Ref: tlmgr *--no-execute-actions*133085 +Ref: tlmgr *--package-logfile* _file_133279 +Ref: tlmgr *--pause*133534 +Ref: tlmgr *--persistent-downloads*133690 +Ref: tlmgr *--no-persistent-downloads*133719 +Ref: tlmgr *--pin-file*134214 +Ref: tlmgr *--usermode*134433 +Ref: tlmgr *--usertree* _dir_134554 +Ref: tlmgr *--verify-repo=[none|main|all]*134681 +Node: tlmgr ACTIONS135580 +Node: tlmgr help136473 +Node: tlmgr version136950 +Node: tlmgr backup137213 +Ref: tlmgr *backup [_option_...] --all*137390 +Ref: tlmgr *backup [_option_...] _pkg_...*137423 +Ref: tlmgr *--backupdir* _directory_138490 +Ref: tlmgr *--all*138708 +Ref: tlmgr *--clean*[=_N_]138961 +Ref: tlmgr *--dry-run*139289 +Node: tlmgr bug [_search-string_]139419 +Node: tlmgr candidates _pkg_140005 +Node: tlmgr check [_option_...] [depends|executes|files|runfiles|texmfdbs|all]140375 +Ref: tlmgr *depends*140889 +Ref: tlmgr *executes*141231 +Ref: tlmgr *files*141346 +Ref: tlmgr *runfiles*141482 +Ref: tlmgr *texmfdbs*141619 +Ref: tlmgr - all items in TEXMFDBS have the !! prefix.141849 +Ref: tlmgr - all items in TEXMFBDS have an ls-R file (if they exist at all).141925 +Ref: tlmgr - all items in TEXMF with !! are listed in TEXMFDBS.141990 +Ref: tlmgr - all items in TEXMF with an ls-R file are listed in TEXMFDBS.142065 +Ref: tlmgr *--use-svn*142091 +Node: tlmgr conf142232 +Ref: tlmgr *conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]]*142522 +Ref: tlmgr *conf auxtrees [--conffile _file_] [show|add|remove] [_value_]*142587 +Node: tlmgr dump-tlpdb [_option_...] [--json]145003 +Ref: tlmgr *--local*145439 +Ref: tlmgr *--remote*145479 +Ref: tlmgr *--json*145518 +Node: tlmgr generate146090 +Ref: tlmgr *generate [_option_...] language*146286 +Ref: tlmgr *generate [_option_...] language.dat*146325 +Ref: tlmgr *generate [_option_...] language.def*146364 +Ref: tlmgr *generate [_option_...] language.dat.lua*146407 +Ref: tlmgr *--dest* _output_file_148735 +Ref: tlmgr *--localcfg* _local_conf_file_149312 +Ref: tlmgr *--rebuild-sys*149436 +Node: tlmgr gui150251 +Node: tlmgr info150431 +Ref: tlmgr *info [_option_...] _pkg_...*150593 +Ref: tlmgr *info [_option_...] collections*150627 +Ref: tlmgr *info [_option_...] schemes*150657 +Ref: tlmgr *--list*152188 +Ref: tlmgr *--only-installed*152503 +Ref: tlmgr *--only-remote*152692 +Ref: tlmgr *--data item1,item2,...*152997 +Ref: tlmgr *--json* 1154370 +Node: tlmgr init-usertree154753 +Node: tlmgr install [_option_...] _pkg_...155134 +Ref: tlmgr *--dry-run* 1155643 +Ref: tlmgr *--file*155761 +Ref: tlmgr *--force*155984 +Ref: tlmgr *--no-depends*156205 +Ref: tlmgr *--no-depends-at-all*156365 +Ref: tlmgr *--reinstall*156766 +Ref: tlmgr *--with-doc*157145 +Ref: tlmgr *--with-src*157159 +Node: tlmgr key157887 +Ref: tlmgr *key list*158045 +Ref: tlmgr *key add _file_*158063 +Ref: tlmgr *key remove _keyid_*158085 +Node: tlmgr list158679 +Node: tlmgr option158841 +Ref: tlmgr *option [--json] [show]*158997 +Ref: tlmgr *option [--json] showall|help*159029 +Ref: tlmgr *option _key_ [_value_]*159055 +Node: tlmgr paper163634 +Ref: tlmgr *paper [a4|letter]*163783 +Ref: tlmgr *<[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|--list]*>163860 +Ref: tlmgr *paper --json*163876 +Node: tlmgr path165091 +Ref: tlmgr *path [--windowsmode=user|admin] add*165257 +Ref: tlmgr *path [--windowsmode=user|admin] remove*165299 +Node: tlmgr pinning166814 +Ref: tlmgr pinning show167055 +Ref: tlmgr pinning add _repo_ _pkgglob_...167128 +Ref: tlmgr pinning remove _repo_ _pkgglob_...167247 +Ref: tlmgr pinning remove _repo_ --all167400 +Node: tlmgr platform167454 +Ref: tlmgr *platform list|add|remove _platform_...*167640 +Ref: tlmgr *platform set _platform_*167667 +Ref: tlmgr *platform set auto*167688 +Ref: tlmgr *--dry-run* 2168566 +Node: tlmgr postaction168685 +Ref: tlmgr *postaction [_option_...] install [shortcut|fileassoc|script] [_pkg_...]*168915 +Ref: tlmgr *postaction [_option_...] remove [shortcut|fileassoc|script] [_pkg_...]*168989 +Ref: tlmgr *--windowsmode=[user|admin]*169309 +Ref: tlmgr *--fileassocmode=[1|2]*169734 +Ref: tlmgr *--all* 1170020 +Node: tlmgr print-platform170075 +Node: tlmgr print-platform-info170406 +Node: tlmgr remove [_option_...] _pkg_...170706 +Ref: tlmgr *--all* 2171191 +Ref: tlmgr *--backup*171302 +Ref: tlmgr *--backupdir* _directory_ 1171329 +Ref: tlmgr *--no-depends* 1171734 +Ref: tlmgr *--no-depends-at-all* 1171797 +Ref: tlmgr *--force* 1171904 +Ref: tlmgr *--dry-run* 3172378 +Node: tlmgr repository172755 +Ref: tlmgr *repository list*172943 +Ref: tlmgr *repository list _path|url|tag_*172977 +Ref: tlmgr *repository add _path_ [_tag_]*173010 +Ref: tlmgr *repository remove _path|tag_*173042 +Ref: tlmgr *repository set _path_[#_tag_] [_path_[#_tag_] ...]*173096 +Ref: tlmgr *repository status*173117 +Ref: tlmgr The tag (which can be the same as the url);174347 +Node: tlmgr restore174825 +Ref: tlmgr *restore [_option_...] _pkg_ [_rev_]*175004 +Ref: tlmgr *restore [_option_...] --all*175035 +Ref: tlmgr *--all* 3175736 +Ref: tlmgr *--backupdir* _directory_ 2175951 +Ref: tlmgr *--dry-run* 4176133 +Ref: tlmgr *--force* 2176266 +Ref: tlmgr *--json* 2176313 +Node: tlmgr search176640 +Ref: tlmgr *search [_option_...] _what_*176804 +Ref: tlmgr *search [_option_...] --file _what_*176842 +Ref: tlmgr *search [_option_...] --all _what_*176879 +Ref: tlmgr *--file* 1177100 +Ref: tlmgr *--all* 4177163 +Ref: tlmgr *--global*177253 +Ref: tlmgr *--word*177381 +Node: tlmgr shell177696 +Ref: tlmgr protocol178431 +Ref: tlmgr help 1178495 +Ref: tlmgr version 1178548 +Ref: tlmgr quit, end, bye, byebye, EOF178616 +Ref: tlmgr restart178637 +Ref: tlmgr load [local|remote]178760 +Ref: tlmgr save178830 +Ref: tlmgr get [_var_] =item set [_var_ [_val_]]178953 +Node: tlmgr show179554 +Node: tlmgr uninstall179721 +Node: tlmgr update [_option_...] [_pkg_...]179953 +Ref: tlmgr *--all* 5180325 +Ref: tlmgr *--self*182505 +Ref: tlmgr *--dry-run* 5183270 +Ref: tlmgr *--list* [_pkg_]183448 +Ref: tlmgr *--exclude* _pkg_184138 +Ref: tlmgr *--no-auto-remove* [_pkg_...]184939 +Ref: tlmgr *--no-auto-install* [_pkg_...]185424 +Ref: tlmgr *--reinstall-forcibly-removed*186187 +Ref: tlmgr *--backup* 1186723 +Ref: tlmgr *--backupdir* _directory_ 3186750 +Ref: tlmgr *--no-depends* 2187917 +Ref: tlmgr *--no-depends-at-all* 2188121 +Ref: tlmgr *--force* 3188228 +Node: tlmgr CONFIGURATION FILE FOR TLMGR189219 +Ref: tlmgr auto-remove = 0 or 1 (default 1), same as command-line option.190221 +Ref: tlmgr gui-expertmode = 0 or 1 (default 1). This switches between the full GUI and a simplified GUI with only the most common settings.190353 +Ref: tlmgr gui-lang = _llcode_, with a language code value as with the command-line option.190437 +Ref: tlmgr no-checksums = 0 or 1 (default 0, see below).190486 +Ref: tlmgr persistent-downloads = 0 or 1 (default 1), same as command-line option.190561 +Ref: tlmgr require-verification = 0 or 1 (default 0), same as command-line option.190636 +Ref: tlmgr tkfontscale = _floating-point number_ (default 1.0); scaling factor for fonts in the Tk-based frontends.190744 +Ref: tlmgr update-exclude = _comma-separated list of packages_ (no spaces allowed). Same as the command line option --exclude for the update action.190889 +Ref: tlmgr verify-downloads = 0 or 1 (default 1), same as command-line option.190960 +Ref: tlmgr allowed-actions = _action1_[,_action2_,...] The value is a comma-separated list (no spaces) of tlmgr actions which are allowed to be executed when tlmgr is invoked in system mode (that is, without --usermode). This allows distributors to include tlmgr in their packaging, but allow only a restricted set of actions that do not interfere with their distro package manager. For native TeX Live installations, it doesn't make sense to set this.191477 +Node: tlmgr CRYPTOGRAPHIC VERIFICATION192309 +Node: tlmgr Configuration of GnuPG invocation194482 +Node: tlmgr USER MODE195120 +Node: tlmgr User mode install197991 +Node: tlmgr User mode backup, restore, remove, update199137 +Node: tlmgr User mode generate, option, paper199583 +Node: tlmgr User mode logs199950 +Node: tlmgr MULTIPLE REPOSITORIES200248 +Node: tlmgr Pinning201977 +Node: tlmgr GUI FOR TLMGR203900 +Node: tlmgr Main display205549 +Node: tlmgr Display configuration area205801 +Ref: tlmgr Status206162 +Ref: tlmgr Category206326 +Ref: tlmgr Match206512 +Ref: tlmgr Selection206693 +Ref: tlmgr Display configuration buttons206897 +Node: tlmgr Package list area207080 +Ref: tlmgr a checkbox207664 +Ref: tlmgr package name207800 +Ref: tlmgr local revision (and version)207899 +Ref: tlmgr remote revision (and version)208274 +Ref: tlmgr short description208571 +Node: tlmgr Main display action buttons208616 +Ref: tlmgr Update all installed208882 +Ref: tlmgr Update209254 +Ref: tlmgr Install209304 +Ref: tlmgr Remove209490 +Ref: tlmgr Backup209668 +Node: tlmgr Menu bar209825 +Ref: tlmgr tlmgr menu210048 +Ref: tlmgr Options menu210356 +Ref: tlmgr Actions menu211439 +Ref: tlmgr Help menu211867 +Node: tlmgr GUI options212001 +Ref: tlmgr -background _color_212247 +Ref: tlmgr -font " _fontname_ _fontsize_ "212312 +Ref: tlmgr -foreground _color_212470 +Ref: tlmgr -geometry _geomspec_212522 +Ref: tlmgr -xrm _xresource_212714 +Node: tlmgr MACHINE-READABLE OUTPUT212983 +Node: tlmgr Machine-readable update and install output213797 +Ref: tlmgr location-url _location_215073 +Ref: tlmgr total-bytes _count_215289 +Ref: tlmgr _pkgname_215699 +Ref: tlmgr _status_215909 +Ref: tlmgr d215987 +Ref: tlmgr f216047 +Ref: tlmgr u216226 +Ref: tlmgr r216272 +Ref: tlmgr a216395 +Ref: tlmgr i216573 +Ref: tlmgr I216692 +Ref: tlmgr _localrev_216794 +Ref: tlmgr _serverrev_216901 +Ref: tlmgr _size_217013 +Ref: tlmgr _runtime_217182 +Ref: tlmgr _esttot_217252 +Node: tlmgr Machine-readable option output217285 +Node: tlmgr ENVIRONMENT VARIABLES217797 +Ref: tlmgr TEXLIVE_COMPRESSOR218308 +Ref: tlmgr TEXLIVE_DOWNLOADER219156 +Ref: tlmgr TL_DOWNLOAD_PROGRAM219179 +Ref: tlmgr TL_DOWNLOAD_ARGS219199 +Ref: tlmgr TEXLIVE_PREFER_OWN220225 +Node: tlmgr AUTHORS AND COPYRIGHT221049 +Node: tlmgr POD ERRORS221472 +Ref: tlmgr Around line 8454:221697 +Node: Index221733 End Tag Table diff --git a/source/doc/tlbuild.texi b/source/doc/tlbuild.texi index 7b0a3d273..d9db9e8ca 100644 --- a/source/doc/tlbuild.texi +++ b/source/doc/tlbuild.texi @@ -1,8 +1,8 @@ \input texinfo @setfilename tlbuild.info -@set version 2024 -@set month-year December 2024 +@set version 2025 +@set month-year January 2025 @set mytitle Building @TeX{} Live (@value{version}) @settitle @value{mytitle} @@ -15,7 +15,7 @@ This file documents the @TL{} build system and more. @noindent -Copyright @copyright{} 2016--2024 Karl Berry.@* +Copyright @copyright{} 2016--2025 Karl Berry.@* Copyright @copyright{} 2013--2015 Karl Berry & Peter Breitenlohner. Permission is granted to make and distribute verbatim copies of this diff --git a/source/libs/Makefile.in b/source/libs/Makefile.in index d97cc3359..e214e7c66 100644 --- a/source/libs/Makefile.in +++ b/source/libs/Makefile.in @@ -98,6 +98,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../m4/kpse-common.m4 \ $(top_srcdir)/../m4/kpse-kpathsea-flags.m4 \ $(top_srcdir)/../m4/kpse-libpng-flags.m4 \ $(top_srcdir)/../m4/kpse-lt-hack.m4 \ + $(top_srcdir)/../m4/kpse-luajit-flags.m4 \ $(top_srcdir)/../m4/kpse-mktex.m4 \ $(top_srcdir)/../m4/kpse-options.m4 \ $(top_srcdir)/../m4/kpse-pkgs.m4 \ diff --git a/source/libs/README b/source/libs/README index 8c6239e0f..5b12b0b30 100644 --- a/source/libs/README +++ b/source/libs/README @@ -1,4 +1,4 @@ -$Id: README 72778 2024-11-06 04:18:33Z kakuto $ +$Id: README 73427 2025-01-11 23:22:13Z kakuto $ Public domain. Originally created by Karl Berry, 2005. Libraries we compile for TeX Live. @@ -28,7 +28,7 @@ graphite2 1.3.14 - checked 10apr20 https://sourceforge.net/projects/silgraphite/files/graphite2/ (requires C++11) -harfbuzz 10.1.0 - checked 06nov24 +harfbuzz 10.2.0 - checked 12jan25 https://github.com/harfbuzz/harfbuzz/releases/latest icu 76.1 - checked 27oct24 (requires C++17, e.g., g++13) @@ -37,7 +37,7 @@ icu 76.1 - checked 27oct24 (requires C++17, e.g., g++13) libpaper 1.1.29 - checked 07jan24 https://ftp.debian.org/debian/pool/main/libp/libpaper/ -libpng 1.6.44 - checked 13sep24 +libpng 1.6.45 - checked 08jan25 https://sourceforge.net/projects/libpng/files/ - used by many lua 5.2.4 diff --git a/source/libs/aclocal.m4 b/source/libs/aclocal.m4 index d960cd5f4..7ed461906 100644 --- a/source/libs/aclocal.m4 +++ b/source/libs/aclocal.m4 @@ -1348,6 +1348,7 @@ m4_include([../m4/kpse-harfbuzz-flags.m4]) m4_include([../m4/kpse-kpathsea-flags.m4]) m4_include([../m4/kpse-libpng-flags.m4]) m4_include([../m4/kpse-lt-hack.m4]) +m4_include([../m4/kpse-luajit-flags.m4]) m4_include([../m4/kpse-mktex.m4]) m4_include([../m4/kpse-options.m4]) m4_include([../m4/kpse-pkgs.m4]) diff --git a/source/libs/configure b/source/libs/configure index 4c877da10..e202f05ff 100755 --- a/source/libs/configure +++ b/source/libs/configure @@ -809,6 +809,7 @@ with_system_harfbuzz with_system_graphite2 with_system_zziplib with_system_libpng +with_system_luajit with_system_zlib with_zlib_includes with_zlib_libdir @@ -1553,6 +1554,8 @@ Optional Packages: pkg-config) --with-system-libpng use installed libpng headers and library (requires pkg-config) + --with-system-luajit use installed luajit headers and library (requires + pkg-config) --with-system-zlib use installed zlib headers and library --with-zlib-includes=DIR zlib headers installed in DIR @@ -4729,6 +4732,10 @@ fi ## libs/pplib/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/pplib/ ## configure options and TL libraries required for pplib +test "x$need_pplib" = xyes && { + need_zlib=yes +} + ## libs/harfbuzz/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/harfbuzz/ ## configure options and TL libraries required for harfbuzz @@ -4867,6 +4874,24 @@ test "x$need_libpng" = xyes && { ## libs/luajit/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/luajit/ ## configure options and TL libraries required for luajit +# Check whether --with-system-luajit was given. +if test ${with_system_luajit+y} +then : + withval=$with_system_luajit; +fi +if test "x$with_system_luajit" = x; then + if test -f $srcdir/../libs/luajit/configure; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Assuming \`luajit' headers and library from TL tree" >&5 +printf "%s\n" "$as_me: Assuming \`luajit' headers and library from TL tree" >&6;} + with_system_luajit=no + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Assuming installed \`luajit' headers and library" >&5 +printf "%s\n" "$as_me: Assuming installed \`luajit' headers and library" >&6;} + with_system_luajit=yes + fi + ac_configure_args="$ac_configure_args '--with-system-luajit=$with_system_luajit'" +fi + ## libs/lua53/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/lua53/ ## configure options and TL libraries required for lua53 diff --git a/source/libs/harfbuzz/ChangeLog b/source/libs/harfbuzz/ChangeLog index e3507c424..a4a3938e1 100644 --- a/source/libs/harfbuzz/ChangeLog +++ b/source/libs/harfbuzz/ChangeLog @@ -1,3 +1,8 @@ +2025-01-12 Akira Kakuto <kakuto@jcom.zaq.ne.jp> + + Import harfbuzz-10.2.0. + * version.ac, include/Makefile.am: Adjusted. + 2024-11-06 Akira Kakuto <kakuto@jcom.zaq.ne.jp> Import harfbuzz-10.1.0. diff --git a/source/libs/harfbuzz/TLpatches/ChangeLog b/source/libs/harfbuzz/TLpatches/ChangeLog index 989a3e78b..3f77b7feb 100644 --- a/source/libs/harfbuzz/TLpatches/ChangeLog +++ b/source/libs/harfbuzz/TLpatches/ChangeLog @@ -1,3 +1,8 @@ +2025-01-12 Akira Kakuto <kakuto@jcom.zaq.ne.jp> + + Imported harfbuzz-10.2.0 source tree from: + https://github.com/harfbuzz/harfbuzz/releases/download/10.2.0/ + 2024-11-06 Akira Kakuto <kakuto@jcom.zaq.ne.jp> Imported harfbuzz-10.1.0 source tree from: diff --git a/source/libs/harfbuzz/TLpatches/TL-Changes b/source/libs/harfbuzz/TLpatches/TL-Changes index aa257893e..ccbddc86b 100644 --- a/source/libs/harfbuzz/TLpatches/TL-Changes +++ b/source/libs/harfbuzz/TLpatches/TL-Changes @@ -1,5 +1,5 @@ -Changes applied to the harfbuzz-10.1.0/ tree as obtained from: - https://github.com/harfbuzz/harfbuzz/releases/download/10.1.0/ +Changes applied to the harfbuzz-10.2.0/ tree as obtained from: + https://github.com/harfbuzz/harfbuzz/releases/download/10.2.0/ Removed: .clang-format diff --git a/source/libs/harfbuzz/configure b/source/libs/harfbuzz/configure index 504d29ce1..746df925c 100755 --- a/source/libs/harfbuzz/configure +++ b/source/libs/harfbuzz/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for harfbuzz (TeX Live) 10.1.0. +# Generated by GNU Autoconf 2.72 for harfbuzz (TeX Live) 10.2.0. # # Report bugs to <tex-k@tug.org>. # @@ -604,8 +604,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='harfbuzz (TeX Live)' PACKAGE_TARNAME='harfbuzz--tex-live-' -PACKAGE_VERSION='10.1.0' -PACKAGE_STRING='harfbuzz (TeX Live) 10.1.0' +PACKAGE_VERSION='10.2.0' +PACKAGE_STRING='harfbuzz (TeX Live) 10.2.0' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1341,7 +1341,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures harfbuzz (TeX Live) 10.1.0 to adapt to many kinds of systems. +'configure' configures harfbuzz (TeX Live) 10.2.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1413,7 +1413,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of harfbuzz (TeX Live) 10.1.0:";; + short | recursive ) echo "Configuration of harfbuzz (TeX Live) 10.2.0:";; esac cat <<\_ACEOF @@ -1518,7 +1518,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -harfbuzz (TeX Live) configure 10.1.0 +harfbuzz (TeX Live) configure 10.2.0 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. @@ -2075,7 +2075,7 @@ 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 harfbuzz (TeX Live) $as_me 10.1.0, which was +It was created by harfbuzz (TeX Live) $as_me 10.2.0, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -5252,7 +5252,7 @@ fi # Define the identity of the package. PACKAGE='harfbuzz--tex-live-' - VERSION='10.1.0' + VERSION='10.2.0' # Some tools Automake needs. @@ -5441,9 +5441,9 @@ echo 'tldbg:KPSE_BASIC done (pkg=harfbuzz, amopt=no-define)' >&5 HB_VERSION_MAJOR=10 -HB_VERSION_MINOR=1 +HB_VERSION_MINOR=2 HB_VERSION_MICRO=0 -HB_VERSION=10.1.0 +HB_VERSION=10.2.0 ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -9292,7 +9292,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by harfbuzz (TeX Live) $as_me 10.1.0, which was +This file was extended by harfbuzz (TeX Live) $as_me 10.2.0, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -9360,7 +9360,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -harfbuzz (TeX Live) config.status 10.1.0 +harfbuzz (TeX Live) config.status 10.2.0 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" diff --git a/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt b/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt index c8e377db6..c3e568fe3 100644 --- a/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt +++ b/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.14) project(harfbuzz) message(WARN "HarfBuzz has a Meson port and tries to migrate all the other build systems to it, please consider using it as we might remove our cmake port soon.") @@ -6,20 +6,6 @@ message(WARN "HarfBuzz has a Meson port and tries to migrate all the other build set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) -## Limit framework build to Xcode generator -if (BUILD_FRAMEWORK) - # for a framework build on macOS, use: - # cmake -DBUILD_FRAMEWORK=ON -Bbuild -H. -GXcode && cmake --build build - 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_32_64_BIT)") - set (CMAKE_MACOSX_RPATH ON) - set (BUILD_SHARED_LIBS ON) -endif () - - ## Disallow in-source builds, as CMake generated make files can collide with autotools ones if (NOT MSVC AND "${PROJECT_BINARY_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}") message(FATAL_ERROR @@ -73,6 +59,14 @@ if (HB_HAVE_INTROSPECTION) set (HB_HAVE_GLIB ON) endif () +if (APPLE) + option(BUILD_FRAMEWORK "Build as Apple Frameworks" OFF) +endif () +if (BUILD_FRAMEWORK) + set (CMAKE_MACOSX_RPATH ON) + set (BUILD_SHARED_LIBS OFF) +endif () + include_directories(AFTER ${PROJECT_SOURCE_DIR}/src ${PROJECT_BINARY_DIR}/src @@ -168,7 +162,7 @@ set (subset_project_sources ${PROJECT_SOURCE_DIR}/src/hb-subset-plan.cc ${PROJECT_SOURCE_DIR}/src/hb-subset-plan.hh ${PROJECT_SOURCE_DIR}/src/hb-subset-plan-member-list.hh - ${PROJECT_SOURCE_DIR}/src/hb-subset-repacker.cc + ${PROJECT_SOURCE_DIR}/src/hb-subset-serialize.cc ${PROJECT_SOURCE_DIR}/src/hb-subset.cc ${PROJECT_SOURCE_DIR}/src/hb-subset.hh ${PROJECT_SOURCE_DIR}/src/hb-repacker.hh @@ -219,7 +213,7 @@ set (project_headers ) set (subset_project_headers ${PROJECT_SOURCE_DIR}/src/hb-subset.h - ${PROJECT_SOURCE_DIR}/src/hb-subset-repacker.h + ${PROJECT_SOURCE_DIR}/src/hb-subset-serialize.h ) ## Find and include needed header folders and libraries @@ -506,6 +500,21 @@ if (HB_HAVE_ICU) if (BUILD_SHARED_LIBS) set_target_properties(harfbuzz harfbuzz-icu PROPERTIES VISIBILITY_INLINES_HIDDEN TRUE) + + if (BUILD_FRAMEWORK) + set_target_properties(harfbuzz harfbuzz-icu PROPERTIES + FRAMEWORK TRUE + FRAMEWORK_VERSION "${HB_VERSION}" + PUBLIC_HEADER "${project_headers}" + PRODUCT_BUNDLE_IDENTIFIER "harfbuzz.harfbuzz-icu" + XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" + OUTPUT_NAME "harfbuzz-icu" + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "" + MACOSX_FRAMEWORK_IDENTIFIER "harfbuzz-icu" + MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${HB_VERSION}" + MACOSX_FRAMEWORK_BUNDLE_VERSION "${HB_VERSION}" + ) + endif () endif () endif () @@ -513,12 +522,27 @@ endif () ## Define harfbuzz-subset library if (HB_BUILD_SUBSET) add_library(harfbuzz-subset ${subset_project_sources} ${subset_project_headers}) - list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-subset.h ${PROJECT_SOURCE_DIR}/src/hb-subset-repacker.h) + list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-subset.h ${PROJECT_SOURCE_DIR}/src/hb-subset-serialize.h) add_dependencies(harfbuzz-subset harfbuzz) target_link_libraries(harfbuzz-subset harfbuzz ${THIRD_PARTY_LIBS}) if (BUILD_SHARED_LIBS) set_target_properties(harfbuzz harfbuzz-subset PROPERTIES VISIBILITY_INLINES_HIDDEN TRUE) + + if (BUILD_FRAMEWORK) + set_target_properties(harfbuzz harfbuzz-subset PROPERTIES + FRAMEWORK TRUE + FRAMEWORK_VERSION "${HB_VERSION}" + PUBLIC_HEADER "${project_headers}" + PRODUCT_BUNDLE_IDENTIFIER "harfbuzz.harfbuzz-subset" + XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" + OUTPUT_NAME "harfbuzz-subset" + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "" + MACOSX_FRAMEWORK_IDENTIFIER "harfbuzz-subset" + MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${HB_VERSION}" + MACOSX_FRAMEWORK_BUNDLE_VERSION "${HB_VERSION}" + ) + endif () endif () endif () @@ -568,7 +592,22 @@ if (HB_HAVE_GOBJECT) target_link_libraries(harfbuzz-gobject harfbuzz ${GOBJECT_LIBRARIES} ${THIRD_PARTY_LIBS}) if (BUILD_SHARED_LIBS) - set_target_properties(harfbuzz-gobject PROPERTIES VISIBILITY_INLINES_HIDDEN TRUE) + set_target_properties(harfbuzz harfbuzz-gobject PROPERTIES VISIBILITY_INLINES_HIDDEN TRUE) + + if (BUILD_FRAMEWORK) + set_target_properties(harfbuzz-gobject PROPERTIES + FRAMEWORK TRUE + FRAMEWORK_VERSION "${HB_VERSION}" + PUBLIC_HEADER "${project_headers}" + PRODUCT_BUNDLE_IDENTIFIER "harfbuzz.harfbuzz-gobject" + XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" + OUTPUT_NAME "harfbuzz-gobject" + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "" + MACOSX_FRAMEWORK_IDENTIFIER "harfbuzz-gobject" + MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${HB_VERSION}" + MACOSX_FRAMEWORK_BUNDLE_VERSION "${HB_VERSION}" + ) + endif () endif () endif () @@ -581,6 +620,21 @@ if (HB_HAVE_CAIRO) if (BUILD_SHARED_LIBS) set_target_properties(harfbuzz-cairo PROPERTIES VISIBILITY_INLINES_HIDDEN TRUE) + + if (BUILD_FRAMEWORK) + set_target_properties(harfbuzz-cairo PROPERTIES + FRAMEWORK TRUE + FRAMEWORK_VERSION "${HB_VERSION}" + PUBLIC_HEADER "${project_headers}" + PRODUCT_BUNDLE_IDENTIFIER "harfbuzz.harbuzz-cairo" + XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" + OUTPUT_NAME "harfbuzz-cairo" + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "" + MACOSX_FRAMEWORK_IDENTIFIER "harfbuzz-cairo" + MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${HB_VERSION}" + MACOSX_FRAMEWORK_BUNDLE_VERSION "${HB_VERSION}" + ) + endif () endif () endif() @@ -719,8 +773,12 @@ if (BUILD_FRAMEWORK) set (CMAKE_MACOSX_RPATH ON) set_target_properties(harfbuzz PROPERTIES FRAMEWORK TRUE + FRAMEWORK_VERSION "${HB_VERSION}" PUBLIC_HEADER "${project_headers}" + PRODUCT_BUNDLE_IDENTIFIER "harfbuzz" XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" + OUTPUT_NAME "harfbuzz" + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "" ) set (MACOSX_FRAMEWORK_IDENTIFIER "harfbuzz") set (MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${HB_VERSION}") @@ -881,7 +939,8 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - FRAMEWORK DESTINATION Library/Frameworks + FRAMEWORK DESTINATION Library/Frameworks + COMPONENT runtime OPTIONAL ) make_pkgconfig_pc_file("harfbuzz") install(EXPORT harfbuzzConfig @@ -893,7 +952,8 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - FRAMEWORK DESTINATION Library/Frameworks + FRAMEWORK DESTINATION Library/Frameworks + COMPONENT runtime OPTIONAL ) make_pkgconfig_pc_file("harfbuzz-icu") endif () @@ -902,13 +962,19 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - FRAMEWORK DESTINATION Library/Frameworks + FRAMEWORK DESTINATION Library/Frameworks + COMPONENT runtime OPTIONAL ) make_pkgconfig_pc_file("harfbuzz-cairo") endif () if (HB_BUILD_SUBSET) install(TARGETS harfbuzz-subset + EXPORT harfbuzz-subset ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + FRAMEWORK DESTINATION Library/Frameworks + COMPONENT runtime OPTIONAL ) make_pkgconfig_pc_file("harfbuzz-subset") endif () @@ -943,9 +1009,12 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) endif () if (HB_HAVE_GOBJECT) install(TARGETS harfbuzz-gobject + EXPORT harfbuzz-gobject ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT runtime OPTIONAL ) make_pkgconfig_pc_file("harfbuzz-gobject") if (HB_HAVE_INTROSPECTION) diff --git a/source/libs/harfbuzz/harfbuzz-src/NEWS b/source/libs/harfbuzz/harfbuzz-src/NEWS index a2b6ebd23..ce123f2a5 100644 --- a/source/libs/harfbuzz/harfbuzz-src/NEWS +++ b/source/libs/harfbuzz/harfbuzz-src/NEWS @@ -1,3 +1,32 @@ +Overview of changes leading to 10.2.0 +Saturday, January 11, 2025 +==================================== +- Consider Unicode Variation Selectors when subsetting “cmap†table. +- Guard hb_cairo_glyphs_from_buffer() against malformed UTF-8 strings. +- Fix incorrect “COLR†v1 glyph scaling in hb-cairo. +- Use locale-independent parsing of double numbers is “hb-subset†command line + tool. +- Fix incorrect zeroing of advance width of base glyphs in various “Courier New†+ font versions due to incorrect “GDEF†glyph classes. +- Fix handling of long language codes with “HB_LEAN†configuration. +- Update OpenType language system registry. +- Allow all Myanmar tone marks (including visarga) in any order +- Don’t insert U+25CC DOTTED CIRCLE before superscript/subscript digits +- Handle Garay script as right to left script. +- New API for serializing font tables and potentially repacking them in optimal + way. This was a previously experimental-only API. +- New API for converting font variation setting from and to strings. +- Various build fixes +- Various subsetter and instancer fixes. + +- New API: ++hb_subset_serialize_link_t ++hb_subset_serialize_object_t ++hb_subset_serialize_or_fail() ++hb_subset_axis_range_from_string() ++hb_subset_axis_range_to_string() + + Overview of changes leading to 10.1.0 Tuesday, November 5, 2024 ==================================== diff --git a/source/libs/harfbuzz/harfbuzz-src/meson.build b/source/libs/harfbuzz/harfbuzz-src/meson.build index 5a02b3bb2..f3e43b595 100644 --- a/source/libs/harfbuzz/harfbuzz-src/meson.build +++ b/source/libs/harfbuzz/harfbuzz-src/meson.build @@ -1,6 +1,6 @@ project('harfbuzz', 'c', 'cpp', meson_version: '>= 0.55.0', - version: '10.1.0', + version: '10.2.0', default_options: [ 'cpp_eh=none', # Just to support msvc, we are passing -fno-exceptions also anyway # 'cpp_rtti=false', # Do NOT enable, wraps inherit it and ICU needs RTTI diff --git a/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh b/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh index 36b509d7c..d227768d5 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh @@ -1003,7 +1003,7 @@ struct PaintTransform void paint_glyph (hb_paint_context_t *c) const { TRACE_PAINT (this); - (this+transform).paint_glyph (c); + (this+transform).paint_glyph (c); // This does a push_transform() c->recurse (this+src); c->funcs->pop_transform (c->data); } diff --git a/source/libs/harfbuzz/harfbuzz-src/src/gen-def.py b/source/libs/harfbuzz/harfbuzz-src/src/gen-def.py index 6011817bc..bc5a40137 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/gen-def.py +++ b/source/libs/harfbuzz/harfbuzz-src/src/gen-def.py @@ -20,7 +20,6 @@ if '--experimental-api' not in sys.argv: # Move these to harfbuzz-sections.txt when got stable experimental_symbols = \ """hb_shape_justify -hb_subset_repack_or_fail hb_subset_input_override_name_table """.splitlines () symbols = [x for x in symbols if x not in experimental_symbols] diff --git a/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py b/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py index 2c8abcca6..31a321a56 100755 --- a/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py +++ b/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py @@ -102,6 +102,7 @@ categories = { 'CM', 'Symbol', 'CS', + 'SMPst', ], 'khmer' : [ 'VAbv', @@ -435,6 +436,8 @@ defaults = (category_map[defaults[0]], position_map[defaults[1]], defaults[2]) indic_data = {} for k, (cat, pos, block) in combined.items(): cat = category_map[cat] + if cat == 'SM' and pos == 'Not_Applicable': + cat = 'SMPst' pos = position_map[pos] indic_data[k] = (cat, pos, block) @@ -454,7 +457,7 @@ for k, (cat, pos, block) in indic_data.items(): # Keep in sync with CONSONANT_FLAGS in the shaper consonant_categories = ('C', 'CS', 'Ra','CM', 'V', 'PLACEHOLDER', 'DOTTEDCIRCLE') matra_categories = ('M', 'MPst') -smvd_categories = ('SM', 'VD', 'A', 'Symbol') +smvd_categories = ('SM', 'SMPst', 'VD', 'A', 'Symbol') for k, (cat, pos, block) in indic_data.items(): if cat in consonant_categories: pos = 'BASE_C' @@ -530,6 +533,7 @@ short = [{ "Repha": 'Rf', "PLACEHOLDER": 'GB', "DOTTEDCIRCLE": 'DC', + "SMPst": 'SP', "VPst": 'VR', "VPre": 'VL', "Robatic": 'Rt', diff --git a/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz-config.cmake.in b/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz-config.cmake.in index 6abe2d62d..2d990efab 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz-config.cmake.in +++ b/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz-config.cmake.in @@ -2,6 +2,8 @@ set_and_check(HARFBUZZ_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") +set(HARFBUZZ_VERSION "@HARFBUZZ_VERSION@") + # Add the libraries. add_library(harfbuzz::harfbuzz @HB_LIBRARY_TYPE@ IMPORTED) set_target_properties(harfbuzz::harfbuzz PROPERTIES diff --git a/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz-subset.cc b/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz-subset.cc index 05483b14c..a0accfb33 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz-subset.cc +++ b/source/libs/harfbuzz/harfbuzz-src/src/harfbuzz-subset.cc @@ -58,7 +58,7 @@ #include "hb-subset-instancer-iup.cc" #include "hb-subset-instancer-solver.cc" #include "hb-subset-plan.cc" -#include "hb-subset-repacker.cc" +#include "hb-subset-serialize.cc" #include "hb-subset.cc" #include "hb-ucd.cc" #include "hb-unicode.cc" diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-cairo.cc b/source/libs/harfbuzz/harfbuzz-src/src/hb-cairo.cc index d8b582c49..89332d715 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-cairo.cc +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-cairo.cc @@ -180,7 +180,7 @@ hb_cairo_paint_color_glyph (hb_paint_funcs_t *pfuncs HB_UNUSED, hb_position_t x_scale, y_scale; hb_font_get_scale (font, &x_scale, &y_scale); - cairo_scale (cr, x_scale, y_scale); + cairo_scale (cr, x_scale, -y_scale); cairo_glyph_t cairo_glyph = { glyph, 0, 0 }; cairo_set_scaled_font (cr, c->scaled_font); @@ -597,7 +597,9 @@ hb_cairo_render_glyph (cairo_scaled_font_t *scaled_font, hb_position_t x_scale, y_scale; hb_font_get_scale (font, &x_scale, &y_scale); - cairo_scale (cr, +1./x_scale, -1./y_scale); + cairo_scale (cr, + +1. / (x_scale ? x_scale : 1), + -1. / (y_scale ? y_scale : 1)); hb_font_draw_glyph (font, glyph, hb_cairo_draw_get_funcs (), cr); @@ -628,7 +630,9 @@ hb_cairo_render_color_glyph (cairo_scaled_font_t *scaled_font, hb_color_t color = HB_COLOR (0, 0, 0, 255); hb_position_t x_scale, y_scale; hb_font_get_scale (font, &x_scale, &y_scale); - cairo_scale (cr, +1./x_scale, -1./y_scale); + cairo_scale (cr, + +1. / (x_scale ? x_scale : 1), + -1. / (y_scale ? y_scale : 1)); hb_cairo_context_t c; c.scaled_font = scaled_font; @@ -1000,6 +1004,7 @@ hb_cairo_glyphs_from_buffer (hb_buffer_t *buffer, end = start + hb_glyph[i].cluster - hb_glyph[i+1].cluster; else end = (const char *) hb_utf_offset_to_pointer<hb_utf8_t> ((const uint8_t *) start, + (const uint8_t *) utf8, utf8_len, (signed) (hb_glyph[i].cluster - hb_glyph[i+1].cluster)); (*clusters)[cluster].num_bytes = end - start; start = end; @@ -1020,6 +1025,7 @@ hb_cairo_glyphs_from_buffer (hb_buffer_t *buffer, end = start + hb_glyph[i].cluster - hb_glyph[i-1].cluster; else end = (const char *) hb_utf_offset_to_pointer<hb_utf8_t> ((const uint8_t *) start, + (const uint8_t *) utf8, utf8_len, (signed) (hb_glyph[i].cluster - hb_glyph[i-1].cluster)); (*clusters)[cluster].num_bytes = end - start; start = end; diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc b/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc index 4b8bae442..5d77433b3 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc @@ -625,6 +625,9 @@ hb_script_get_horizontal_direction (hb_script_t script) /* Unicode-14.0 additions */ case HB_SCRIPT_OLD_UYGHUR: + /* Unicode-16.0 additions */ + case HB_SCRIPT_GARAY: + return HB_DIRECTION_RTL; diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh b/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh index 14105846a..09f669567 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-config.hh @@ -68,8 +68,6 @@ #define HB_NO_FACE_COLLECT_UNICODES #define HB_NO_GETENV #define HB_NO_HINTING -#define HB_NO_LANGUAGE_LONG -#define HB_NO_LANGUAGE_PRIVATE_SUBTAG #define HB_NO_LAYOUT_FEATURE_PARAMS #define HB_NO_LAYOUT_COLLECT_GLYPHS #define HB_NO_LAYOUT_RARELY_USED diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext-font.cc b/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext-font.cc index e6a02cce6..92194ea0a 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext-font.cc +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext-font.cc @@ -34,8 +34,12 @@ #include "hb-font.hh" #include "hb-machinery.hh" -#if MAC_OS_X_VERSION_MIN_REQUIRED < 101100 +#if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1080) \ + || (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 60000) \ + || (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 90000) # define kCTFontOrientationDefault kCTFontDefaultOrientation +# define kCTFontOrientationHorizontal kCTFontHorizontalOrientation +# define kCTFontOrientationVertical kCTFontVerticalOrientation #endif #define MAX_GLYPHS 64u diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc b/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc index bc0f6d90d..c7dbf7966 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc @@ -470,7 +470,8 @@ hb_face_is_immutable (const hb_face_t *face) * @tag: The #hb_tag_t of the table to query * * Fetches a reference to the specified table within - * the specified face. + * the specified face. Returns an empty blob if referencing table data is not + * possible. * * Return value: (transfer full): A pointer to the @tag table within @face * diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-ft-colr.hh b/source/libs/harfbuzz/harfbuzz-src/src/hb-ft-colr.hh index 8766a2a2c..7d8ed4a6f 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-ft-colr.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-ft-colr.hh @@ -547,7 +547,9 @@ hb_ft_paint_glyph_colr (hb_font_t *font, c.funcs->push_root_transform (c.data, font); if (is_bounded) + { c.recurse (paint); + } c.funcs->pop_transform (c.data); c.funcs->pop_clip (c.data); diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc b/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc index c305df19a..7e65277d1 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc @@ -931,11 +931,15 @@ hb_ft_paint_glyph (hb_font_t *font, hb_lock_t lock (ft_font->lock); FT_Face ft_face = ft_font->ft_face; + FT_Long load_flags = ft_font->load_flags | FT_LOAD_NO_BITMAP | FT_LOAD_COLOR; +#if (FREETYPE_MAJOR*10000 + FREETYPE_MINOR*100 + FREETYPE_PATCH) >= 21301 + load_flags |= FT_LOAD_NO_SVG; +#endif + /* We release the lock before calling into glyph callbacks, such that * eg. draw API can call back into the face.*/ - if (unlikely (FT_Load_Glyph (ft_face, gid, - ft_font->load_flags | FT_LOAD_COLOR))) + if (unlikely (FT_Load_Glyph (ft_face, gid, load_flags))) return; if (ft_face->glyph->format == FT_GLYPH_FORMAT_OUTLINE) diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-null.hh b/source/libs/harfbuzz/harfbuzz-src/src/hb-null.hh index 854485d3d..3588f6ab2 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-null.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-null.hh @@ -176,7 +176,7 @@ template <typename Type> static inline Type& Crap () { static_assert (hb_null_size (Type) <= HB_NULL_POOL_SIZE, "Increase HB_NULL_POOL_SIZE."); Type *obj = reinterpret_cast<Type *> (_hb_CrapPool); - memcpy (obj, std::addressof (Null (Type)), sizeof (*obj)); + memcpy (reinterpret_cast<void*>(obj), std::addressof (Null (Type)), sizeof (*obj)); return *obj; } template <typename QType> diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh index 0f1edce0b..7a7a77ad5 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh @@ -1397,6 +1397,9 @@ struct CmapSubtableFormat14 hb_vector_t<hb_pair_t<unsigned, unsigned>> obj_indices; for (int i = src_tbl->record.len - 1; i >= 0; i--) { + if (!unicodes->has(src_tbl->record[i].varSelector)) + continue; + hb_pair_t<unsigned, unsigned> result = src_tbl->record[i].copy (c, unicodes, glyphs_requested, glyph_map, base); if (result.first || result.second) obj_indices.push (result); @@ -1453,6 +1456,7 @@ struct CmapSubtableFormat14 { + hb_iter (record) | hb_filter (hb_bool, &VariationSelectorRecord::nonDefaultUVS) + | hb_filter (unicodes, &VariationSelectorRecord::varSelector) | hb_map (&VariationSelectorRecord::nonDefaultUVS) | hb_map (hb_add (this)) | hb_apply ([=] (const NonDefaultUVS& _) { _.closure_glyphs (unicodes, glyphset); }) diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh index 2c9056c70..966fa06c1 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh @@ -1462,6 +1462,7 @@ static inline bool ligate_input (hb_ot_apply_context_t *c, unsigned int this_comp = _hb_glyph_info_get_lig_comp (&buffer->cur()); if (this_comp == 0) this_comp = last_num_components; + assert (components_so_far >= last_num_components); unsigned int new_lig_comp = components_so_far - last_num_components + hb_min (this_comp, last_num_components); _hb_glyph_info_set_lig_props_for_mark (&buffer->cur(), lig_id, new_lig_comp); @@ -1487,6 +1488,7 @@ static inline bool ligate_input (hb_ot_apply_context_t *c, unsigned this_comp = _hb_glyph_info_get_lig_comp (&buffer->info[i]); if (!this_comp) break; + assert (components_so_far >= last_num_components); unsigned new_lig_comp = components_so_far - last_num_components + hb_min (this_comp, last_num_components); _hb_glyph_info_set_lig_props_for_mark (&buffer->info[i], lig_id, new_lig_comp); @@ -1542,6 +1544,7 @@ static bool match_lookahead (hb_ot_apply_context_t *c, TRACE_APPLY (nullptr); hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_context; + assert (start_index >= 1); skippy_iter.reset (start_index - 1); skippy_iter.set_match_func (match_func, match_data); skippy_iter.set_glyph_data (lookahead); @@ -1852,6 +1855,7 @@ static inline void apply_lookup (hb_ot_apply_context_t *c, if (match_positions != match_positions_input) hb_free (match_positions); + assert (end >= 0); (void) buffer->move_to (end); } diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc index 66c2eb4d8..d26f094ba 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc @@ -246,6 +246,18 @@ OT::GDEF::is_blocklisted (hb_blob_t *blob, /* sha1sum: c26e41d567ed821bed997e937bc0c41435689e85 Padauk.ttf * "Padauk Regular" "Version 2.5", see https://crbug.com/681813 */ case HB_CODEPOINT_ENCODE3 (1004, 59092, 14836): + /* 88d2006ca084f04af2df1954ed714a8c71e8400f Courier New.ttf from macOS 15 */ + case HB_CODEPOINT_ENCODE3 (588, 5078, 14418): + /* 608e3ebb6dd1aee521cff08eb07d500a2c59df68 Courier New Bold.ttf from macOS 15 */ + case HB_CODEPOINT_ENCODE3 (588, 5078, 14238): + /* d13221044ff054efd78f1cd8631b853c3ce85676 cour.ttf from Windows 10 */ + case HB_CODEPOINT_ENCODE3 (894, 17162, 33960): + /* 68ed4a22d8067fcf1622ac6f6e2f4d3a2e3ec394 courbd.ttf from Windows 10 */ + case HB_CODEPOINT_ENCODE3 (894, 17154, 34472): + /* 4cdb0259c96b7fd7c103821bb8f08f7cc6b211d7 cour.ttf from Windows 8.1 */ + case HB_CODEPOINT_ENCODE3 (816, 7868, 17052): + /* 920483d8a8ed37f7f0afdabbe7f679aece7c75d8 courbd.ttf from Windows 8.1 */ + case HB_CODEPOINT_ENCODE3 (816, 7868, 17138): return true; } return false; diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh index 6c9140226..c00d22b24 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-os2-table.hh @@ -284,8 +284,8 @@ struct OS2 os2_prime->usWidthClass = width_class; } - os2_prime->usFirstCharIndex = hb_min (0xFFFFu, c->plan->unicodes.get_min ()); - os2_prime->usLastCharIndex = hb_min (0xFFFFu, c->plan->unicodes.get_max ()); + os2_prime->usFirstCharIndex = hb_min (0xFFFFu, c->plan->os2_info.min_cmap_codepoint); + os2_prime->usLastCharIndex = hb_min (0xFFFFu, c->plan->os2_info.max_cmap_codepoint); if (c->plan->flags & HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES) return_trace (true); diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-machine.hh b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-machine.hh index 353e32d32..6ff65c30a 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-machine.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-machine.hh @@ -68,6 +68,7 @@ enum indic_syllable_type_t { #define indic_syllable_machine_ex_Ra 15u #define indic_syllable_machine_ex_Repha 14u #define indic_syllable_machine_ex_SM 8u +#define indic_syllable_machine_ex_SMPst 57u #define indic_syllable_machine_ex_Symbol 17u #define indic_syllable_machine_ex_V 2u #define indic_syllable_machine_ex_VD 9u @@ -76,251 +77,916 @@ enum indic_syllable_type_t { #define indic_syllable_machine_ex_ZWNJ 5u -#line 80 "hb-ot-shaper-indic-machine.hh" +#line 81 "hb-ot-shaper-indic-machine.hh" static const unsigned char _indic_syllable_machine_trans_keys[] = { - 8u, 8u, 4u, 13u, 5u, 13u, 5u, 13u, 13u, 13u, 4u, 13u, 4u, 13u, 4u, 13u, - 8u, 8u, 5u, 13u, 5u, 13u, 13u, 13u, 4u, 13u, 4u, 13u, 4u, 13u, 4u, 13u, - 8u, 8u, 5u, 13u, 5u, 13u, 13u, 13u, 4u, 13u, 4u, 13u, 4u, 13u, 8u, 8u, - 5u, 13u, 5u, 13u, 13u, 13u, 4u, 13u, 4u, 13u, 5u, 13u, 8u, 8u, 1u, 18u, - 3u, 16u, 3u, 16u, 4u, 16u, 1u, 15u, 5u, 9u, 5u, 9u, 9u, 9u, 5u, 9u, - 1u, 15u, 1u, 15u, 1u, 15u, 3u, 13u, 4u, 13u, 5u, 13u, 5u, 13u, 4u, 13u, - 5u, 9u, 3u, 9u, 5u, 9u, 3u, 16u, 3u, 16u, 3u, 16u, 3u, 16u, 4u, 16u, - 1u, 15u, 3u, 16u, 3u, 16u, 4u, 16u, 1u, 15u, 5u, 9u, 9u, 9u, 5u, 9u, - 1u, 15u, 1u, 15u, 3u, 13u, 4u, 13u, 5u, 13u, 5u, 13u, 4u, 13u, 5u, 9u, - 5u, 9u, 3u, 9u, 5u, 9u, 3u, 16u, 3u, 16u, 4u, 13u, 3u, 16u, 3u, 16u, - 4u, 16u, 1u, 15u, 3u, 16u, 1u, 15u, 5u, 9u, 9u, 9u, 5u, 9u, 1u, 15u, - 1u, 15u, 3u, 13u, 4u, 13u, 5u, 13u, 5u, 13u, 3u, 16u, 4u, 13u, 5u, 9u, - 5u, 9u, 3u, 9u, 5u, 9u, 3u, 16u, 4u, 13u, 4u, 13u, 3u, 16u, 3u, 16u, - 4u, 16u, 1u, 15u, 3u, 16u, 1u, 15u, 5u, 9u, 9u, 9u, 5u, 9u, 1u, 15u, - 1u, 15u, 3u, 13u, 4u, 13u, 5u, 13u, 5u, 13u, 3u, 16u, 4u, 13u, 5u, 9u, - 5u, 9u, 3u, 9u, 5u, 9u, 1u, 16u, 3u, 16u, 1u, 16u, 4u, 13u, 5u, 13u, - 5u, 13u, 9u, 9u, 5u, 9u, 1u, 15u, 3u, 9u, 5u, 9u, 5u, 9u, 9u, 9u, + 8u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 13u, 13u, 4u, 57u, 4u, 57u, 4u, 57u, + 8u, 57u, 5u, 57u, 5u, 57u, 13u, 13u, 4u, 57u, 4u, 57u, 4u, 57u, 4u, 57u, + 8u, 57u, 5u, 57u, 5u, 57u, 13u, 13u, 4u, 57u, 4u, 57u, 4u, 57u, 8u, 57u, + 5u, 57u, 5u, 57u, 13u, 13u, 4u, 57u, 4u, 57u, 5u, 57u, 8u, 57u, 1u, 57u, + 3u, 57u, 3u, 57u, 4u, 57u, 1u, 57u, 5u, 57u, 5u, 57u, 9u, 9u, 5u, 9u, + 1u, 57u, 1u, 57u, 1u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 4u, 57u, + 5u, 57u, 3u, 57u, 5u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 4u, 57u, + 1u, 57u, 3u, 57u, 3u, 57u, 4u, 57u, 1u, 57u, 5u, 57u, 9u, 9u, 5u, 9u, + 1u, 57u, 1u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 4u, 57u, 5u, 57u, + 5u, 57u, 3u, 57u, 5u, 57u, 3u, 57u, 3u, 57u, 4u, 57u, 3u, 57u, 3u, 57u, + 4u, 57u, 1u, 57u, 3u, 57u, 1u, 57u, 5u, 57u, 9u, 9u, 5u, 9u, 1u, 57u, + 1u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, + 5u, 57u, 3u, 57u, 5u, 57u, 3u, 57u, 4u, 57u, 4u, 57u, 3u, 57u, 3u, 57u, + 4u, 57u, 1u, 57u, 3u, 57u, 1u, 57u, 5u, 57u, 9u, 9u, 5u, 9u, 1u, 57u, + 1u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, + 5u, 57u, 3u, 57u, 5u, 57u, 1u, 57u, 3u, 57u, 1u, 57u, 4u, 57u, 5u, 57u, + 5u, 57u, 9u, 9u, 5u, 9u, 1u, 57u, 3u, 57u, 5u, 57u, 5u, 57u, 9u, 9u, 5u, 9u, 1u, 15u, 0 }; static const char _indic_syllable_machine_key_spans[] = { - 1, 10, 9, 9, 1, 10, 10, 10, - 1, 9, 9, 1, 10, 10, 10, 10, - 1, 9, 9, 1, 10, 10, 10, 1, - 9, 9, 1, 10, 10, 9, 1, 18, - 14, 14, 13, 15, 5, 5, 1, 5, - 15, 15, 15, 11, 10, 9, 9, 10, - 5, 7, 5, 14, 14, 14, 14, 13, - 15, 14, 14, 13, 15, 5, 1, 5, - 15, 15, 11, 10, 9, 9, 10, 5, - 5, 7, 5, 14, 14, 10, 14, 14, - 13, 15, 14, 15, 5, 1, 5, 15, - 15, 11, 10, 9, 9, 14, 10, 5, - 5, 7, 5, 14, 10, 10, 14, 14, - 13, 15, 14, 15, 5, 1, 5, 15, - 15, 11, 10, 9, 9, 14, 10, 5, - 5, 7, 5, 16, 14, 16, 10, 9, - 9, 1, 5, 15, 7, 5, 5, 1, + 50, 54, 53, 53, 1, 54, 54, 54, + 50, 53, 53, 1, 54, 54, 54, 54, + 50, 53, 53, 1, 54, 54, 54, 50, + 53, 53, 1, 54, 54, 53, 50, 57, + 55, 55, 54, 57, 53, 53, 1, 5, + 57, 57, 57, 55, 54, 53, 53, 54, + 53, 55, 53, 55, 55, 55, 55, 54, + 57, 55, 55, 54, 57, 53, 1, 5, + 57, 57, 55, 54, 53, 53, 54, 53, + 53, 55, 53, 55, 55, 54, 55, 55, + 54, 57, 55, 57, 53, 1, 5, 57, + 57, 55, 54, 53, 53, 55, 54, 53, + 53, 55, 53, 55, 54, 54, 55, 55, + 54, 57, 55, 57, 53, 1, 5, 57, + 57, 55, 54, 53, 53, 55, 54, 53, + 53, 55, 53, 57, 55, 57, 54, 53, + 53, 1, 5, 57, 55, 53, 53, 1, 5, 15 }; static const short _indic_syllable_machine_index_offsets[] = { - 0, 2, 13, 23, 33, 35, 46, 57, - 68, 70, 80, 90, 92, 103, 114, 125, - 136, 138, 148, 158, 160, 171, 182, 193, - 195, 205, 215, 217, 228, 239, 249, 251, - 270, 285, 300, 314, 330, 336, 342, 344, - 350, 366, 382, 398, 410, 421, 431, 441, - 452, 458, 466, 472, 487, 502, 517, 532, - 546, 562, 577, 592, 606, 622, 628, 630, - 636, 652, 668, 680, 691, 701, 711, 722, - 728, 734, 742, 748, 763, 778, 789, 804, - 819, 833, 849, 864, 880, 886, 888, 894, - 910, 926, 938, 949, 959, 969, 984, 995, - 1001, 1007, 1015, 1021, 1036, 1047, 1058, 1073, - 1088, 1102, 1118, 1133, 1149, 1155, 1157, 1163, - 1179, 1195, 1207, 1218, 1228, 1238, 1253, 1264, - 1270, 1276, 1284, 1290, 1307, 1322, 1339, 1350, - 1360, 1370, 1372, 1378, 1394, 1402, 1408, 1414, - 1416, 1422 + 0, 51, 106, 160, 214, 216, 271, 326, + 381, 432, 486, 540, 542, 597, 652, 707, + 762, 813, 867, 921, 923, 978, 1033, 1088, + 1139, 1193, 1247, 1249, 1304, 1359, 1413, 1464, + 1522, 1578, 1634, 1689, 1747, 1801, 1855, 1857, + 1863, 1921, 1979, 2037, 2093, 2148, 2202, 2256, + 2311, 2365, 2421, 2475, 2531, 2587, 2643, 2699, + 2754, 2812, 2868, 2924, 2979, 3037, 3091, 3093, + 3099, 3157, 3215, 3271, 3326, 3380, 3434, 3489, + 3543, 3597, 3653, 3707, 3763, 3819, 3874, 3930, + 3986, 4041, 4099, 4155, 4213, 4267, 4269, 4275, + 4333, 4391, 4447, 4502, 4556, 4610, 4666, 4721, + 4775, 4829, 4885, 4939, 4995, 5050, 5105, 5161, + 5217, 5272, 5330, 5386, 5444, 5498, 5500, 5506, + 5564, 5622, 5678, 5733, 5787, 5841, 5897, 5952, + 6006, 6060, 6116, 6170, 6228, 6284, 6342, 6397, + 6451, 6505, 6507, 6513, 6571, 6627, 6681, 6735, + 6737, 6743 }; static const unsigned char _indic_syllable_machine_indicies[] = { - 1, 0, 2, 3, 3, 4, 5, 0, - 0, 0, 0, 4, 0, 3, 3, 4, - 6, 0, 0, 0, 0, 4, 0, 3, - 3, 4, 5, 0, 0, 0, 0, 4, - 0, 4, 0, 7, 3, 3, 4, 5, - 0, 0, 0, 0, 4, 0, 2, 3, - 3, 4, 5, 0, 0, 0, 8, 4, - 0, 10, 11, 11, 12, 13, 9, 9, - 9, 9, 12, 9, 14, 9, 11, 11, - 12, 15, 9, 9, 9, 9, 12, 9, - 11, 11, 12, 13, 9, 9, 9, 9, - 12, 9, 12, 9, 16, 11, 11, 12, - 13, 9, 9, 9, 9, 12, 9, 10, - 11, 11, 12, 13, 9, 9, 9, 17, - 12, 9, 10, 11, 11, 12, 13, 9, - 9, 9, 18, 12, 9, 20, 21, 21, - 22, 23, 19, 19, 19, 24, 22, 19, - 25, 19, 21, 21, 22, 27, 26, 26, - 26, 26, 22, 26, 21, 21, 22, 23, - 19, 19, 19, 19, 22, 19, 22, 26, - 20, 21, 21, 22, 23, 19, 19, 19, - 19, 22, 19, 28, 21, 21, 22, 23, - 19, 19, 19, 19, 22, 19, 30, 31, - 31, 32, 33, 29, 29, 29, 34, 32, + 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 2, 3, 3, 4, 5, + 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 5, 0, 3, 3, 4, 6, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6, 0, + 3, 3, 4, 5, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 4, 0, + 7, 3, 3, 4, 5, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 0, 2, + 3, 3, 4, 5, 0, 0, 0, 8, + 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 10, 11, + 11, 12, 13, 9, 9, 9, 9, 12, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 13, 9, 14, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 14, 9, + 11, 11, 12, 15, 9, 9, 9, 9, + 12, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 15, 9, 11, 11, + 12, 13, 9, 9, 9, 9, 12, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 13, 9, 12, 9, 16, 11, + 11, 12, 13, 9, 9, 9, 9, 12, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 13, 9, 10, 11, 11, + 12, 13, 9, 9, 9, 17, 12, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 13, 9, 10, 11, 11, 12, + 13, 9, 9, 9, 18, 12, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 13, 9, 20, 21, 21, 22, 23, + 19, 19, 19, 24, 22, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 23, 19, 25, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 25, 19, 21, 21, 22, + 27, 26, 26, 26, 26, 22, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 27, 26, 21, 21, 22, 23, 19, + 19, 19, 19, 22, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 23, + 19, 22, 26, 20, 21, 21, 22, 23, + 19, 19, 19, 19, 22, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 23, 19, 28, 21, 21, 22, 23, 19, + 19, 19, 19, 22, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 23, + 19, 30, 31, 31, 32, 33, 29, 29, + 29, 34, 32, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 33, 29, + 35, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 35, 29, 31, 31, 32, 36, 29, - 29, 29, 29, 32, 29, 31, 31, 32, - 33, 29, 29, 29, 29, 32, 29, 32, + 29, 29, 29, 32, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 36, + 29, 31, 31, 32, 33, 29, 29, 29, + 29, 32, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 33, 29, 32, 29, 30, 31, 31, 32, 33, 29, 29, - 29, 29, 32, 29, 37, 31, 31, 32, - 33, 29, 29, 29, 29, 32, 29, 21, + 29, 29, 32, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 33, 29, + 37, 31, 31, 32, 33, 29, 29, 29, + 29, 32, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 33, 29, 21, 21, 22, 38, 0, 0, 0, 0, 22, - 0, 40, 39, 42, 43, 44, 45, 46, - 47, 22, 23, 48, 49, 49, 24, 22, - 50, 51, 52, 53, 54, 41, 56, 57, - 58, 59, 4, 5, 60, 55, 55, 8, - 4, 55, 55, 61, 55, 62, 57, 63, - 63, 4, 5, 60, 55, 55, 55, 4, - 55, 55, 61, 55, 57, 63, 63, 4, - 5, 60, 55, 55, 55, 4, 55, 55, - 61, 55, 42, 55, 55, 55, 64, 65, - 55, 1, 60, 55, 55, 55, 55, 55, - 42, 55, 66, 66, 55, 1, 60, 55, - 60, 55, 55, 67, 60, 55, 60, 55, - 60, 55, 55, 55, 60, 55, 42, 55, - 68, 55, 66, 66, 55, 1, 60, 55, - 55, 55, 55, 55, 42, 55, 42, 55, - 55, 55, 66, 66, 55, 1, 60, 55, - 55, 55, 55, 55, 42, 55, 42, 55, - 55, 55, 66, 65, 55, 1, 60, 55, - 55, 55, 55, 55, 42, 55, 69, 70, - 71, 71, 4, 5, 60, 55, 55, 55, - 4, 55, 70, 71, 71, 4, 5, 60, - 55, 55, 55, 4, 55, 71, 71, 4, - 5, 60, 55, 55, 55, 4, 55, 60, - 55, 55, 67, 60, 55, 55, 55, 4, - 55, 72, 73, 73, 4, 5, 60, 55, - 55, 55, 4, 55, 64, 74, 55, 1, - 60, 55, 64, 55, 66, 66, 55, 1, - 60, 55, 66, 74, 55, 1, 60, 55, - 56, 57, 63, 63, 4, 5, 60, 55, - 55, 55, 4, 55, 55, 61, 55, 56, - 57, 58, 63, 4, 5, 60, 55, 55, - 8, 4, 55, 55, 61, 55, 76, 77, - 78, 79, 12, 13, 80, 75, 75, 18, - 12, 75, 75, 81, 75, 82, 77, 83, - 79, 12, 13, 80, 75, 75, 75, 12, - 75, 75, 81, 75, 77, 83, 79, 12, - 13, 80, 75, 75, 75, 12, 75, 75, - 81, 75, 84, 75, 75, 75, 85, 86, - 75, 14, 80, 75, 75, 75, 75, 75, - 84, 75, 87, 77, 88, 89, 12, 13, - 80, 75, 75, 17, 12, 75, 75, 81, - 75, 90, 77, 83, 83, 12, 13, 80, - 75, 75, 75, 12, 75, 75, 81, 75, - 77, 83, 83, 12, 13, 80, 75, 75, - 75, 12, 75, 75, 81, 75, 84, 75, - 75, 75, 91, 86, 75, 14, 80, 75, - 75, 75, 75, 75, 84, 75, 80, 75, - 75, 92, 80, 75, 80, 75, 80, 75, - 75, 75, 80, 75, 84, 75, 93, 75, - 91, 91, 75, 14, 80, 75, 75, 75, - 75, 75, 84, 75, 84, 75, 75, 75, - 91, 91, 75, 14, 80, 75, 75, 75, - 75, 75, 84, 75, 94, 95, 96, 96, - 12, 13, 80, 75, 75, 75, 12, 75, - 95, 96, 96, 12, 13, 80, 75, 75, - 75, 12, 75, 96, 96, 12, 13, 80, - 75, 75, 75, 12, 75, 80, 75, 75, - 92, 80, 75, 75, 75, 12, 75, 97, - 98, 98, 12, 13, 80, 75, 75, 75, - 12, 75, 85, 99, 75, 14, 80, 75, - 91, 91, 75, 14, 80, 75, 85, 75, - 91, 91, 75, 14, 80, 75, 91, 99, - 75, 14, 80, 75, 87, 77, 83, 83, - 12, 13, 80, 75, 75, 75, 12, 75, - 75, 81, 75, 87, 77, 88, 83, 12, - 13, 80, 75, 75, 17, 12, 75, 75, - 81, 75, 10, 11, 11, 12, 13, 75, - 75, 75, 75, 12, 75, 76, 77, 83, - 79, 12, 13, 80, 75, 75, 75, 12, - 75, 75, 81, 75, 101, 45, 102, 102, - 22, 23, 48, 100, 100, 100, 22, 100, - 100, 52, 100, 45, 102, 102, 22, 23, - 48, 100, 100, 100, 22, 100, 100, 52, - 100, 103, 100, 100, 100, 104, 105, 100, - 25, 48, 100, 100, 100, 100, 100, 103, - 100, 44, 45, 106, 107, 22, 23, 48, - 100, 100, 24, 22, 100, 100, 52, 100, - 103, 100, 100, 100, 108, 105, 100, 25, - 48, 100, 100, 100, 100, 100, 103, 100, - 48, 100, 100, 109, 48, 100, 48, 100, - 48, 100, 100, 100, 48, 100, 103, 100, - 110, 100, 108, 108, 100, 25, 48, 100, - 100, 100, 100, 100, 103, 100, 103, 100, - 100, 100, 108, 108, 100, 25, 48, 100, - 100, 100, 100, 100, 103, 100, 111, 112, - 113, 113, 22, 23, 48, 100, 100, 100, - 22, 100, 112, 113, 113, 22, 23, 48, - 100, 100, 100, 22, 100, 113, 113, 22, - 23, 48, 100, 100, 100, 22, 100, 48, - 100, 100, 109, 48, 100, 100, 100, 22, - 100, 44, 45, 102, 102, 22, 23, 48, - 100, 100, 100, 22, 100, 100, 52, 100, - 114, 115, 115, 22, 23, 48, 100, 100, - 100, 22, 100, 104, 116, 100, 25, 48, - 100, 108, 108, 100, 25, 48, 100, 104, - 100, 108, 108, 100, 25, 48, 100, 108, - 116, 100, 25, 48, 100, 44, 45, 106, - 102, 22, 23, 48, 100, 100, 24, 22, - 100, 100, 52, 100, 20, 21, 21, 22, - 23, 117, 117, 117, 24, 22, 117, 20, - 21, 21, 22, 23, 117, 117, 117, 117, - 22, 117, 119, 120, 121, 122, 32, 33, - 123, 118, 118, 34, 32, 118, 118, 124, - 118, 125, 120, 122, 122, 32, 33, 123, - 118, 118, 118, 32, 118, 118, 124, 118, - 120, 122, 122, 32, 33, 123, 118, 118, - 118, 32, 118, 118, 124, 118, 126, 118, - 118, 118, 127, 128, 118, 35, 123, 118, - 118, 118, 118, 118, 126, 118, 119, 120, - 121, 49, 32, 33, 123, 118, 118, 34, - 32, 118, 118, 124, 118, 126, 118, 118, - 118, 129, 128, 118, 35, 123, 118, 118, - 118, 118, 118, 126, 118, 123, 118, 118, - 130, 123, 118, 123, 118, 123, 118, 118, - 118, 123, 118, 126, 118, 131, 118, 129, - 129, 118, 35, 123, 118, 118, 118, 118, - 118, 126, 118, 126, 118, 118, 118, 129, - 129, 118, 35, 123, 118, 118, 118, 118, - 118, 126, 118, 132, 133, 134, 134, 32, - 33, 123, 118, 118, 118, 32, 118, 133, - 134, 134, 32, 33, 123, 118, 118, 118, - 32, 118, 134, 134, 32, 33, 123, 118, - 118, 118, 32, 118, 123, 118, 118, 130, - 123, 118, 118, 118, 32, 118, 119, 120, - 122, 122, 32, 33, 123, 118, 118, 118, - 32, 118, 118, 124, 118, 135, 136, 136, - 32, 33, 123, 118, 118, 118, 32, 118, - 127, 137, 118, 35, 123, 118, 129, 129, - 118, 35, 123, 118, 127, 118, 129, 129, - 118, 35, 123, 118, 129, 137, 118, 35, - 123, 118, 42, 43, 44, 45, 106, 102, - 22, 23, 48, 49, 49, 24, 22, 100, - 42, 52, 100, 56, 138, 58, 59, 4, - 5, 60, 55, 55, 8, 4, 55, 55, - 61, 55, 42, 43, 44, 45, 139, 140, - 22, 141, 142, 55, 49, 24, 22, 55, - 42, 52, 55, 20, 143, 143, 22, 141, - 60, 55, 55, 24, 22, 55, 60, 55, - 55, 67, 60, 55, 55, 55, 22, 55, - 142, 55, 55, 144, 142, 55, 55, 55, - 22, 55, 142, 55, 142, 55, 55, 55, - 142, 55, 42, 55, 68, 20, 143, 143, - 22, 141, 60, 55, 55, 55, 22, 55, - 42, 55, 146, 145, 147, 147, 145, 40, - 148, 145, 147, 147, 145, 40, 148, 145, - 148, 145, 145, 149, 148, 145, 148, 145, - 148, 145, 145, 145, 148, 145, 42, 117, - 117, 117, 117, 117, 117, 117, 117, 49, - 117, 117, 117, 117, 42, 117, 0 + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 38, 0, 40, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 40, 39, + 42, 43, 44, 45, 46, 47, 22, 23, + 48, 49, 49, 24, 22, 50, 51, 52, + 53, 54, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, + 55, 41, 57, 58, 59, 60, 4, 5, + 61, 56, 56, 8, 4, 56, 56, 62, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 5, 56, 63, 58, 64, 64, 4, 5, + 61, 56, 56, 56, 4, 56, 56, 62, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 5, 56, 58, 64, 64, 4, 5, 61, + 56, 56, 56, 4, 56, 56, 62, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 5, + 56, 42, 56, 56, 56, 65, 66, 56, + 1, 61, 56, 56, 56, 56, 56, 42, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 1, 56, 67, 67, 56, 1, 61, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 1, + 56, 61, 56, 56, 68, 61, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 68, 56, 61, + 56, 61, 56, 56, 56, 61, 56, 42, + 56, 69, 56, 67, 67, 56, 1, 61, + 56, 56, 56, 56, 56, 42, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 1, + 56, 42, 56, 56, 56, 67, 67, 56, + 1, 61, 56, 56, 56, 56, 56, 42, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 1, 56, 42, 56, 56, 56, 67, + 66, 56, 1, 61, 56, 56, 56, 56, + 56, 42, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 1, 56, 70, 71, 72, + 72, 4, 5, 61, 56, 56, 56, 4, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 5, 56, 71, 72, 72, + 4, 5, 61, 56, 56, 56, 4, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 5, 56, 72, 72, 4, 5, + 61, 56, 56, 56, 4, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 5, 56, 61, 56, 56, 68, 61, 56, + 56, 56, 4, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 68, 56, + 73, 74, 74, 4, 5, 61, 56, 56, + 56, 4, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 5, 56, 65, + 75, 56, 1, 61, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 1, 56, 65, 56, 67, + 67, 56, 1, 61, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 1, 56, 67, 75, 56, + 1, 61, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 1, 56, 57, 58, 64, 64, 4, + 5, 61, 56, 56, 56, 4, 56, 56, + 62, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 5, 56, 57, 58, 59, 64, 4, + 5, 61, 56, 56, 8, 4, 56, 56, + 62, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 5, 56, 77, 78, 79, 80, 12, + 13, 81, 76, 76, 18, 12, 76, 76, + 82, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 13, 76, 83, 78, 84, 80, 12, + 13, 81, 76, 76, 76, 12, 76, 76, + 82, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 13, 76, 78, 84, 80, 12, 13, + 81, 76, 76, 76, 12, 76, 76, 82, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 13, 76, 85, 76, 76, 76, 86, 87, + 76, 14, 81, 76, 76, 76, 76, 76, + 85, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 14, 76, 88, 78, 89, 90, + 12, 13, 81, 76, 76, 17, 12, 76, + 76, 82, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 13, 76, 91, 78, 84, 84, + 12, 13, 81, 76, 76, 76, 12, 76, + 76, 82, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 13, 76, 78, 84, 84, 12, + 13, 81, 76, 76, 76, 12, 76, 76, + 82, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 13, 76, 85, 76, 76, 76, 92, + 87, 76, 14, 81, 76, 76, 76, 76, + 76, 85, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 14, 76, 81, 76, 76, + 93, 81, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 93, 76, 81, 76, 81, 76, 76, + 76, 81, 76, 85, 76, 94, 76, 92, + 92, 76, 14, 81, 76, 76, 76, 76, + 76, 85, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 14, 76, 85, 76, 76, + 76, 92, 92, 76, 14, 81, 76, 76, + 76, 76, 76, 85, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 14, 76, 95, + 96, 97, 97, 12, 13, 81, 76, 76, + 76, 12, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 13, 76, 96, + 97, 97, 12, 13, 81, 76, 76, 76, + 12, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 13, 76, 97, 97, + 12, 13, 81, 76, 76, 76, 12, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 13, 76, 81, 76, 76, 93, + 81, 76, 76, 76, 12, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 93, 76, 98, 99, 99, 12, 13, 81, + 76, 76, 76, 12, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 13, + 76, 86, 100, 76, 14, 81, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 14, 76, 92, + 92, 76, 14, 81, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 14, 76, 86, 76, 92, + 92, 76, 14, 81, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 14, 76, 92, 100, 76, + 14, 81, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 14, 76, 88, 78, 84, 84, 12, + 13, 81, 76, 76, 76, 12, 76, 76, + 82, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 13, 76, 88, 78, 89, 84, 12, + 13, 81, 76, 76, 17, 12, 76, 76, + 82, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 13, 76, 10, 11, 11, 12, 13, + 76, 76, 76, 76, 12, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 13, 76, 77, 78, 84, 80, 12, 13, + 81, 76, 76, 76, 12, 76, 76, 82, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, + 13, 76, 102, 45, 103, 103, 22, 23, + 48, 101, 101, 101, 22, 101, 101, 52, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 23, 101, 45, 103, 103, 22, 23, 48, + 101, 101, 101, 22, 101, 101, 52, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 23, + 101, 104, 101, 101, 101, 105, 106, 101, + 25, 48, 101, 101, 101, 101, 101, 104, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 25, 101, 44, 45, 107, 108, 22, + 23, 48, 101, 101, 24, 22, 101, 101, + 52, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 23, 101, 104, 101, 101, 101, 109, + 106, 101, 25, 48, 101, 101, 101, 101, + 101, 104, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 25, 101, 48, 101, 101, + 110, 48, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 110, 101, 48, 101, 48, 101, 101, + 101, 48, 101, 104, 101, 111, 101, 109, + 109, 101, 25, 48, 101, 101, 101, 101, + 101, 104, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 25, 101, 104, 101, 101, + 101, 109, 109, 101, 25, 48, 101, 101, + 101, 101, 101, 104, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 25, 101, 112, + 113, 114, 114, 22, 23, 48, 101, 101, + 101, 22, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 23, 101, 113, + 114, 114, 22, 23, 48, 101, 101, 101, + 22, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 23, 101, 114, 114, + 22, 23, 48, 101, 101, 101, 22, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 23, 101, 48, 26, 26, 110, + 48, 26, 26, 26, 22, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, + 110, 26, 44, 45, 103, 103, 22, 23, + 48, 101, 101, 101, 22, 101, 101, 52, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 23, 101, 115, 116, 116, 22, 23, 48, + 101, 101, 101, 22, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 23, + 101, 105, 117, 101, 25, 48, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 25, 101, 109, + 109, 101, 25, 48, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 25, 101, 105, 101, 109, + 109, 101, 25, 48, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 25, 101, 109, 117, 101, + 25, 48, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 25, 101, 44, 45, 107, 103, 22, + 23, 48, 101, 101, 24, 22, 101, 101, + 52, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 23, 101, 20, 21, 21, 22, 23, + 118, 118, 118, 24, 22, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, + 23, 118, 20, 21, 21, 22, 23, 118, + 118, 118, 118, 22, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 23, + 118, 120, 121, 122, 123, 32, 33, 124, + 119, 119, 34, 32, 119, 119, 125, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 33, + 119, 126, 121, 123, 123, 32, 33, 124, + 119, 119, 119, 32, 119, 119, 125, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 33, + 119, 121, 123, 123, 32, 33, 124, 119, + 119, 119, 32, 119, 119, 125, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 33, 119, + 127, 119, 119, 119, 128, 129, 119, 35, + 124, 119, 119, 119, 119, 119, 127, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 35, 119, 120, 121, 122, 49, 32, 33, + 124, 119, 119, 34, 32, 119, 119, 125, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 33, 119, 127, 119, 119, 119, 130, 129, + 119, 35, 124, 119, 119, 119, 119, 119, + 127, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 35, 119, 124, 119, 119, 131, + 124, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 131, 119, 124, 119, 124, 119, 119, 119, + 124, 119, 127, 119, 132, 119, 130, 130, + 119, 35, 124, 119, 119, 119, 119, 119, + 127, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 35, 119, 127, 119, 119, 119, + 130, 130, 119, 35, 124, 119, 119, 119, + 119, 119, 127, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 35, 119, 133, 134, + 135, 135, 32, 33, 124, 119, 119, 119, + 32, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 33, 119, 134, 135, + 135, 32, 33, 124, 119, 119, 119, 32, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 33, 119, 135, 135, 32, + 33, 124, 119, 119, 119, 32, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 33, 119, 124, 119, 119, 131, 124, + 119, 119, 119, 32, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 131, + 119, 120, 121, 123, 123, 32, 33, 124, + 119, 119, 119, 32, 119, 119, 125, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 33, + 119, 136, 137, 137, 32, 33, 124, 119, + 119, 119, 32, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 33, 119, + 128, 138, 119, 35, 124, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 35, 119, 130, 130, + 119, 35, 124, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 35, 119, 128, 119, 130, 130, + 119, 35, 124, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 35, 119, 130, 138, 119, 35, + 124, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, + 35, 119, 42, 43, 44, 45, 107, 103, + 22, 23, 48, 49, 49, 24, 22, 101, + 42, 52, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 23, 101, 57, 139, 59, 60, + 4, 5, 61, 56, 56, 8, 4, 56, + 56, 62, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 5, 56, 42, 43, 44, 45, + 140, 141, 22, 142, 143, 56, 49, 24, + 22, 56, 42, 52, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 142, 56, 20, 144, + 144, 22, 142, 61, 56, 56, 24, 22, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 142, 56, 61, 56, 56, + 68, 61, 56, 56, 56, 22, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 68, 56, 143, 56, 56, 145, 143, + 56, 56, 56, 22, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 145, + 56, 143, 56, 143, 56, 56, 56, 143, + 56, 42, 56, 69, 20, 144, 144, 22, + 142, 61, 56, 56, 56, 22, 56, 42, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, + 56, 142, 56, 147, 146, 148, 148, 146, + 40, 149, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, + 146, 40, 146, 148, 148, 146, 40, 149, + 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 40, + 146, 149, 146, 146, 150, 149, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 150, 146, 149, + 146, 149, 146, 146, 146, 149, 146, 42, + 118, 118, 118, 118, 118, 118, 118, 118, + 49, 118, 118, 118, 118, 42, 118, 0 }; static const unsigned char _indic_syllable_machine_trans_targs[] = { @@ -330,41 +996,41 @@ static const unsigned char _indic_syllable_machine_trans_targs[] = { 93, 84, 31, 19, 98, 31, 107, 24, 113, 116, 117, 108, 26, 122, 127, 31, 134, 31, 32, 53, 79, 81, 100, 101, - 85, 102, 123, 124, 94, 132, 137, 31, - 33, 35, 6, 52, 38, 47, 34, 1, - 36, 40, 0, 39, 41, 44, 45, 3, - 48, 5, 49, 31, 54, 56, 14, 77, - 62, 70, 55, 7, 57, 72, 64, 58, - 13, 76, 59, 8, 63, 65, 67, 68, - 10, 71, 12, 73, 31, 80, 20, 82, - 96, 87, 15, 99, 16, 86, 88, 90, - 91, 18, 95, 21, 97, 31, 31, 103, - 105, 22, 27, 109, 118, 104, 106, 120, - 111, 23, 110, 112, 114, 115, 25, 119, - 28, 121, 125, 126, 131, 128, 129, 29, - 130, 31, 133, 30, 135, 136 + 85, 102, 123, 124, 94, 132, 137, 92, + 31, 33, 35, 6, 52, 38, 47, 34, + 1, 36, 40, 0, 39, 41, 44, 45, + 3, 48, 5, 49, 31, 54, 56, 14, + 77, 62, 70, 55, 7, 57, 72, 64, + 58, 13, 76, 59, 8, 63, 65, 67, + 68, 10, 71, 12, 73, 31, 80, 20, + 82, 96, 87, 15, 99, 16, 86, 88, + 90, 91, 18, 95, 21, 97, 31, 31, + 103, 105, 22, 27, 109, 118, 104, 106, + 120, 111, 23, 110, 112, 114, 115, 25, + 119, 28, 121, 125, 126, 131, 128, 129, + 29, 130, 31, 133, 30, 135, 136 }; static const char _indic_syllable_machine_trans_actions[] = { 1, 0, 2, 0, 2, 0, 0, 2, 2, 3, 2, 0, 2, 0, 0, 0, - 2, 2, 2, 4, 2, 0, 5, 0, + 2, 2, 2, 4, 2, 0, 5, 5, 5, 0, 6, 0, 2, 7, 2, 0, 2, 0, 2, 0, 0, 2, 0, 8, 0, 11, 2, 2, 5, 0, 12, 12, 0, 2, 5, 2, 5, 2, 0, 13, - 2, 0, 0, 2, 0, 2, 2, 0, - 2, 2, 0, 0, 2, 2, 2, 0, - 0, 0, 2, 14, 2, 0, 0, 2, - 0, 2, 2, 0, 2, 2, 2, 2, + 14, 2, 0, 0, 2, 0, 2, 2, 0, 2, 2, 0, 0, 2, 2, 2, - 0, 0, 0, 2, 15, 5, 0, 5, - 2, 2, 0, 5, 0, 0, 2, 5, - 5, 0, 0, 0, 2, 16, 17, 2, - 0, 0, 0, 0, 2, 2, 2, 2, - 2, 0, 0, 2, 2, 2, 0, 0, - 0, 2, 0, 18, 18, 0, 0, 0, - 0, 19, 2, 0, 0, 0 + 0, 0, 0, 2, 15, 2, 0, 0, + 2, 0, 2, 2, 0, 2, 2, 2, + 2, 0, 2, 2, 0, 0, 2, 2, + 2, 0, 0, 0, 2, 16, 5, 0, + 5, 2, 2, 0, 5, 0, 0, 2, + 5, 5, 0, 0, 0, 2, 17, 18, + 2, 0, 0, 0, 0, 2, 2, 2, + 2, 2, 0, 0, 2, 2, 2, 0, + 0, 0, 2, 0, 19, 19, 0, 0, + 0, 0, 20, 2, 0, 0, 0 }; static const char _indic_syllable_machine_to_state_actions[] = { @@ -414,20 +1080,20 @@ static const short _indic_syllable_machine_eof_trans[] = { 10, 10, 10, 10, 10, 10, 10, 20, 20, 27, 20, 27, 20, 20, 30, 30, 30, 30, 30, 30, 30, 1, 40, 0, - 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 101, - 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 118, 118, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 101, 56, 56, 56, 56, - 56, 56, 56, 56, 146, 146, 146, 146, - 146, 118 + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 102, + 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 27, 102, 102, 102, + 102, 102, 102, 102, 119, 119, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 102, 57, 57, 57, 57, + 57, 57, 57, 57, 147, 147, 147, 147, + 147, 119 }; static const int indic_syllable_machine_start = 31; @@ -441,7 +1107,7 @@ static const int indic_syllable_machine_en_main = 31; -#line 118 "hb-ot-shaper-indic-machine.rl" +#line 121 "hb-ot-shaper-indic-machine.rl" #define found_syllable(syllable_type) \ @@ -460,7 +1126,7 @@ find_syllables_indic (hb_buffer_t *buffer) int cs; hb_glyph_info_t *info = buffer->info; -#line 464 "hb-ot-shaper-indic-machine.hh" +#line 1130 "hb-ot-shaper-indic-machine.hh" { cs = indic_syllable_machine_start; ts = 0; @@ -468,7 +1134,7 @@ find_syllables_indic (hb_buffer_t *buffer) act = 0; } -#line 138 "hb-ot-shaper-indic-machine.rl" +#line 141 "hb-ot-shaper-indic-machine.rl" p = 0; @@ -476,7 +1142,7 @@ find_syllables_indic (hb_buffer_t *buffer) unsigned int syllable_serial = 1; -#line 480 "hb-ot-shaper-indic-machine.hh" +#line 1146 "hb-ot-shaper-indic-machine.hh" { int _slen; int _trans; @@ -490,7 +1156,7 @@ _resume: #line 1 "NONE" {ts = p;} break; -#line 494 "hb-ot-shaper-indic-machine.hh" +#line 1160 "hb-ot-shaper-indic-machine.hh" } _keys = _indic_syllable_machine_trans_keys + (cs<<1); @@ -513,51 +1179,51 @@ _eof_trans: {te = p+1;} break; case 11: -#line 114 "hb-ot-shaper-indic-machine.rl" +#line 117 "hb-ot-shaper-indic-machine.rl" {te = p+1;{ found_syllable (indic_non_indic_cluster); }} break; - case 13: -#line 109 "hb-ot-shaper-indic-machine.rl" + case 14: +#line 111 "hb-ot-shaper-indic-machine.rl" {te = p;p--;{ found_syllable (indic_consonant_syllable); }} break; - case 14: -#line 110 "hb-ot-shaper-indic-machine.rl" + case 15: +#line 112 "hb-ot-shaper-indic-machine.rl" {te = p;p--;{ found_syllable (indic_vowel_syllable); }} break; - case 17: -#line 111 "hb-ot-shaper-indic-machine.rl" + case 18: +#line 113 "hb-ot-shaper-indic-machine.rl" {te = p;p--;{ found_syllable (indic_standalone_cluster); }} break; - case 19: -#line 112 "hb-ot-shaper-indic-machine.rl" + case 20: +#line 114 "hb-ot-shaper-indic-machine.rl" {te = p;p--;{ found_syllable (indic_symbol_cluster); }} break; - case 15: -#line 113 "hb-ot-shaper-indic-machine.rl" + case 16: +#line 116 "hb-ot-shaper-indic-machine.rl" {te = p;p--;{ found_syllable (indic_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }} break; - case 16: -#line 114 "hb-ot-shaper-indic-machine.rl" + case 17: +#line 117 "hb-ot-shaper-indic-machine.rl" {te = p;p--;{ found_syllable (indic_non_indic_cluster); }} break; case 1: -#line 109 "hb-ot-shaper-indic-machine.rl" +#line 111 "hb-ot-shaper-indic-machine.rl" {{p = ((te))-1;}{ found_syllable (indic_consonant_syllable); }} break; case 3: -#line 110 "hb-ot-shaper-indic-machine.rl" +#line 112 "hb-ot-shaper-indic-machine.rl" {{p = ((te))-1;}{ found_syllable (indic_vowel_syllable); }} break; case 7: -#line 111 "hb-ot-shaper-indic-machine.rl" +#line 113 "hb-ot-shaper-indic-machine.rl" {{p = ((te))-1;}{ found_syllable (indic_standalone_cluster); }} break; case 8: -#line 112 "hb-ot-shaper-indic-machine.rl" +#line 114 "hb-ot-shaper-indic-machine.rl" {{p = ((te))-1;}{ found_syllable (indic_symbol_cluster); }} break; case 4: -#line 113 "hb-ot-shaper-indic-machine.rl" +#line 116 "hb-ot-shaper-indic-machine.rl" {{p = ((te))-1;}{ found_syllable (indic_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }} break; case 6: @@ -567,33 +1233,42 @@ _eof_trans: {{p = ((te))-1;} found_syllable (indic_consonant_syllable); } break; case 5: - {{p = ((te))-1;} found_syllable (indic_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; } + {{p = ((te))-1;} found_syllable (indic_non_indic_cluster); } break; case 6: + {{p = ((te))-1;} found_syllable (indic_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; } + break; + case 7: {{p = ((te))-1;} found_syllable (indic_non_indic_cluster); } break; } } break; - case 18: + case 19: #line 1 "NONE" {te = p+1;} -#line 109 "hb-ot-shaper-indic-machine.rl" +#line 111 "hb-ot-shaper-indic-machine.rl" {act = 1;} break; - case 5: + case 13: #line 1 "NONE" {te = p+1;} -#line 113 "hb-ot-shaper-indic-machine.rl" +#line 115 "hb-ot-shaper-indic-machine.rl" {act = 5;} break; - case 12: + case 5: #line 1 "NONE" {te = p+1;} -#line 114 "hb-ot-shaper-indic-machine.rl" +#line 116 "hb-ot-shaper-indic-machine.rl" {act = 6;} break; -#line 597 "hb-ot-shaper-indic-machine.hh" + case 12: +#line 1 "NONE" + {te = p+1;} +#line 117 "hb-ot-shaper-indic-machine.rl" + {act = 7;} + break; +#line 1272 "hb-ot-shaper-indic-machine.hh" } _again: @@ -602,7 +1277,7 @@ _again: #line 1 "NONE" {ts = 0;} break; -#line 606 "hb-ot-shaper-indic-machine.hh" +#line 1281 "hb-ot-shaper-indic-machine.hh" } if ( ++p != pe ) @@ -618,7 +1293,7 @@ _again: } -#line 146 "hb-ot-shaper-indic-machine.rl" +#line 149 "hb-ot-shaper-indic-machine.rl" } diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-machine.rl b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-machine.rl index f568a8462..138b35f04 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-machine.rl +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-machine.rl @@ -80,17 +80,19 @@ export Ra = 15; export CM = 16; export Symbol= 17; export CS = 18; +export SMPst = 57; c = (C | Ra); # is_consonant n = ((ZWNJ?.RS)? (N.N?)?); # is_consonant_modifier z = ZWJ|ZWNJ; # is_joiner reph = (Ra H | Repha); # possible reph +sm = SM | SMPst; cn = c.ZWJ?.n?; symbol = Symbol.N?; -matra_group = z*.(M | SM? MPst).N?.H?; -syllable_tail = (z?.SM.SM?.ZWNJ?)? (A | VD)*; +matra_group = z*.(M | sm? MPst).N?.H?; +syllable_tail = (z?.sm.sm?.ZWNJ?)? (A | VD)*; halant_group = (z?.H.(ZWJ.N?)?); final_halant_group = halant_group | H.ZWNJ; medial_group = CM?; @@ -110,6 +112,7 @@ main := |* vowel_syllable => { found_syllable (indic_vowel_syllable); }; standalone_cluster => { found_syllable (indic_standalone_cluster); }; symbol_cluster => { found_syllable (indic_symbol_cluster); }; + SMPst => { found_syllable (indic_non_indic_cluster); }; broken_cluster => { found_syllable (indic_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }; other => { found_syllable (indic_non_indic_cluster); }; *|; diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-table.cc b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-table.cc index adea32efd..b87c53085 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-table.cc +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-table.cc @@ -48,6 +48,7 @@ #define OT_CM I_Cat(CM) #define OT_Symbol I_Cat(Symbol) #define OT_CS I_Cat(CS) +#define OT_SMPst I_Cat(SMPst) /* khmer */ #define OT_VAbv K_Cat(VAbv) #define OT_VBlw K_Cat(VBlw) @@ -94,7 +95,8 @@ static_assert (OT_VPst == M_Cat(VPst), ""); #define _OT_R OT_Ra /* 14 chars; Ra */ #define _OT_Rf OT_Repha /* 1 chars; Repha */ #define _OT_Rt OT_Robatic /* 3 chars; Robatic */ -#define _OT_SM OT_SM /* 56 chars; SM */ +#define _OT_SM OT_SM /* 50 chars; SM */ +#define _OT_SP OT_SMPst /* 6 chars; SMPst */ #define _OT_S OT_Symbol /* 22 chars; Symbol */ #define _OT_V OT_V /* 172 chars; V */ #define _OT_VA OT_VAbv /* 18 chars; VAbv */ @@ -145,7 +147,7 @@ static const uint16_t indic_table[] = { /* Latin-1 Supplement */ - /* 00B0 */ _(X,X), _(X,X),_(SM,SM),_(SM,SM), _(X,X), _(X,X), _(X,X), _(X,X), + /* 00B0 */ _(X,X), _(X,X),_(SP,SM),_(SP,SM), _(X,X), _(X,X), _(X,X), _(X,X), /* 00B8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), /* 00C0 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), /* 00C8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), @@ -398,9 +400,9 @@ static const uint16_t indic_table[] = { /* Superscripts and Subscripts */ - /* 2070 */ _(X,X), _(X,X), _(X,X), _(X,X),_(SM,SM), _(X,X), _(X,X), _(X,X), + /* 2070 */ _(X,X), _(X,X), _(X,X), _(X,X),_(SP,SM), _(X,X), _(X,X), _(X,X), /* 2078 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 2080 */ _(X,X), _(X,X),_(SM,SM),_(SM,SM),_(SM,SM), _(X,X), _(X,X), _(X,X), + /* 2080 */ _(X,X), _(X,X),_(SP,SM),_(SP,SM),_(SP,SM), _(X,X), _(X,X), _(X,X), #define indic_offset_0x25f8u 1592 @@ -540,6 +542,7 @@ hb_indic_get_categories (hb_codepoint_t u) #undef _OT_Rf #undef _OT_Rt #undef _OT_SM +#undef _OT_SP #undef _OT_S #undef _OT_V #undef _OT_VA diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-myanmar-machine.hh b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-myanmar-machine.hh index f7b456b11..4b8da586d 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-myanmar-machine.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-myanmar-machine.hh @@ -68,6 +68,7 @@ enum myanmar_syllable_type_t { #define myanmar_syllable_machine_ex_PT 39u #define myanmar_syllable_machine_ex_Ra 15u #define myanmar_syllable_machine_ex_SM 8u +#define myanmar_syllable_machine_ex_SMPst 57u #define myanmar_syllable_machine_ex_VAbv 20u #define myanmar_syllable_machine_ex_VBlw 21u #define myanmar_syllable_machine_ex_VPre 22u @@ -77,35 +78,35 @@ enum myanmar_syllable_type_t { #define myanmar_syllable_machine_ex_ZWNJ 5u -#line 81 "hb-ot-shaper-myanmar-machine.hh" +#line 82 "hb-ot-shaper-myanmar-machine.hh" static const unsigned char _myanmar_syllable_machine_trans_keys[] = { - 1u, 41u, 3u, 41u, 5u, 39u, 5u, 8u, 3u, 41u, 3u, 39u, 3u, 39u, 5u, 39u, - 5u, 39u, 3u, 39u, 3u, 39u, 3u, 41u, 5u, 39u, 1u, 15u, 3u, 39u, 3u, 39u, - 3u, 40u, 3u, 39u, 3u, 41u, 3u, 41u, 3u, 39u, 3u, 41u, 3u, 41u, 3u, 41u, - 3u, 41u, 3u, 41u, 5u, 39u, 5u, 8u, 3u, 41u, 3u, 39u, 3u, 39u, 5u, 39u, - 5u, 39u, 3u, 39u, 3u, 39u, 3u, 41u, 5u, 39u, 1u, 15u, 3u, 41u, 3u, 39u, - 3u, 39u, 3u, 40u, 3u, 39u, 3u, 41u, 3u, 41u, 3u, 39u, 3u, 41u, 3u, 41u, - 3u, 41u, 3u, 41u, 3u, 41u, 3u, 41u, 3u, 41u, 1u, 41u, 1u, 15u, 0 + 1u, 57u, 3u, 57u, 5u, 57u, 5u, 57u, 3u, 57u, 5u, 57u, 3u, 57u, 3u, 57u, + 3u, 57u, 3u, 57u, 3u, 57u, 5u, 57u, 1u, 15u, 3u, 57u, 3u, 57u, 3u, 57u, + 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, + 3u, 57u, 5u, 57u, 5u, 57u, 3u, 57u, 5u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, + 3u, 57u, 3u, 57u, 5u, 57u, 1u, 15u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, + 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, + 3u, 57u, 3u, 57u, 3u, 57u, 1u, 57u, 1u, 15u, 0 }; static const char _myanmar_syllable_machine_key_spans[] = { - 41, 39, 35, 4, 39, 37, 37, 35, - 35, 37, 37, 39, 35, 15, 37, 37, - 38, 37, 39, 39, 37, 39, 39, 39, - 39, 39, 35, 4, 39, 37, 37, 35, - 35, 37, 37, 39, 35, 15, 39, 37, - 37, 38, 37, 39, 39, 37, 39, 39, - 39, 39, 39, 39, 39, 41, 15 + 57, 55, 53, 53, 55, 53, 55, 55, + 55, 55, 55, 53, 15, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 53, 53, 55, 53, 55, 55, 55, + 55, 55, 53, 15, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 57, 15 }; static const short _myanmar_syllable_machine_index_offsets[] = { - 0, 42, 82, 118, 123, 163, 201, 239, - 275, 311, 349, 387, 427, 463, 479, 517, - 555, 594, 632, 672, 712, 750, 790, 830, - 870, 910, 950, 986, 991, 1031, 1069, 1107, - 1143, 1179, 1217, 1255, 1295, 1331, 1347, 1387, - 1425, 1463, 1502, 1540, 1580, 1620, 1658, 1698, - 1738, 1778, 1818, 1858, 1898, 1938, 1980 + 0, 58, 114, 168, 222, 278, 332, 388, + 444, 500, 556, 612, 666, 682, 738, 794, + 850, 906, 962, 1018, 1074, 1130, 1186, 1242, + 1298, 1354, 1408, 1462, 1518, 1572, 1628, 1684, + 1740, 1796, 1852, 1906, 1922, 1978, 2034, 2090, + 2146, 2202, 2258, 2314, 2370, 2426, 2482, 2538, + 2594, 2650, 2706, 2762, 2820 }; static const char _myanmar_syllable_machine_indicies[] = { @@ -114,273 +115,378 @@ static const char _myanmar_syllable_machine_indicies[] = { 0, 8, 0, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 15, 16, 17, 18, 19, - 20, 0, 22, 23, 24, 24, 21, 25, - 26, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 27, 28, 29, 30, 21, - 21, 21, 21, 21, 21, 21, 21, 31, - 21, 21, 32, 33, 34, 35, 36, 37, - 38, 21, 24, 24, 21, 25, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 30, 21, 21, 21, - 21, 21, 21, 21, 21, 39, 21, 21, - 21, 21, 21, 21, 36, 21, 24, 24, - 21, 25, 21, 22, 21, 24, 24, 21, - 25, 26, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 40, 21, 21, 30, - 21, 21, 21, 21, 21, 21, 21, 21, - 41, 21, 21, 42, 21, 21, 21, 36, - 21, 41, 21, 22, 21, 24, 24, 21, - 25, 26, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 30, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 36, - 21, 43, 21, 24, 24, 21, 25, 36, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 44, 21, - 21, 21, 21, 21, 21, 36, 21, 24, - 24, 21, 25, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 44, 21, 21, 21, 21, 21, - 21, 36, 21, 24, 24, 21, 25, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 36, 21, 22, - 21, 24, 24, 21, 25, 26, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 40, 21, 21, 30, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 36, 21, 22, 21, 24, - 24, 21, 25, 26, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 40, 21, - 21, 30, 21, 21, 21, 21, 21, 21, - 21, 21, 41, 21, 21, 21, 21, 21, - 21, 36, 21, 22, 21, 24, 24, 21, - 25, 26, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 40, 21, 21, 30, - 21, 21, 21, 21, 21, 21, 21, 21, - 41, 21, 21, 21, 21, 21, 21, 36, - 21, 41, 21, 24, 24, 21, 25, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 30, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 36, 21, 1, - 1, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 1, 21, 22, - 21, 24, 24, 21, 25, 26, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 27, 28, 21, 30, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 36, 21, 22, 21, 24, - 24, 21, 25, 26, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 28, - 21, 30, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 36, 21, 22, 21, 24, 24, 21, - 25, 26, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 27, 28, 29, 30, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 36, - 45, 21, 22, 21, 24, 24, 21, 25, - 26, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 27, 28, 29, 30, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 36, 21, - 22, 21, 24, 24, 21, 25, 26, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 27, 28, 29, 30, 21, 21, 21, - 21, 21, 21, 21, 21, 31, 21, 21, - 32, 33, 34, 35, 36, 21, 38, 21, - 22, 21, 24, 24, 21, 25, 26, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 27, 28, 29, 30, 21, 21, 21, - 21, 21, 21, 21, 21, 45, 21, 21, - 21, 21, 21, 21, 36, 21, 38, 21, - 22, 21, 24, 24, 21, 25, 26, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 27, 28, 29, 30, 21, 21, 21, - 21, 21, 21, 21, 21, 45, 21, 21, - 21, 21, 21, 21, 36, 21, 22, 21, - 24, 24, 21, 25, 26, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 27, - 28, 29, 30, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 32, 21, - 34, 21, 36, 21, 38, 21, 22, 21, - 24, 24, 21, 25, 26, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 27, - 28, 29, 30, 21, 21, 21, 21, 21, - 21, 21, 21, 45, 21, 21, 32, 21, - 21, 21, 36, 21, 38, 21, 22, 21, - 24, 24, 21, 25, 26, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 27, - 28, 29, 30, 21, 21, 21, 21, 21, - 21, 21, 21, 46, 21, 21, 32, 33, - 34, 21, 36, 21, 38, 21, 22, 21, - 24, 24, 21, 25, 26, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 27, - 28, 29, 30, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 32, 33, - 34, 21, 36, 21, 38, 21, 22, 23, - 24, 24, 21, 25, 26, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 27, - 28, 29, 30, 21, 21, 21, 21, 21, - 21, 21, 21, 31, 21, 21, 32, 33, - 34, 35, 36, 21, 38, 21, 48, 48, + 20, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 21, 0, 23, 24, 25, 25, 22, 26, + 27, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 28, 29, 30, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 32, + 22, 22, 33, 34, 35, 36, 37, 38, + 39, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 26, 22, 25, 25, 22, 26, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 31, 22, 22, 22, + 22, 22, 22, 22, 22, 40, 22, 22, + 22, 22, 22, 22, 37, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 26, 22, + 25, 25, 22, 26, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 37, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 26, 22, 41, 22, + 25, 25, 22, 26, 37, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 26, 22, 22, 22, 22, + 22, 22, 37, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 26, 22, 25, 25, + 22, 26, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 26, 22, 22, 22, 22, 22, 22, + 37, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 26, 22, 23, 22, 25, 25, + 22, 26, 27, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 42, 22, 22, + 31, 22, 22, 22, 22, 22, 22, 22, + 22, 43, 22, 22, 44, 22, 22, 22, + 37, 22, 43, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 26, 22, 23, 22, 25, 25, + 22, 26, 27, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 31, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 37, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 26, 22, 23, 22, 25, 25, + 22, 26, 27, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 42, 22, 22, + 31, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 37, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 26, 22, 23, 22, 25, 25, + 22, 26, 27, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 42, 22, 22, + 31, 22, 22, 22, 22, 22, 22, 22, + 22, 43, 22, 22, 22, 22, 22, 22, + 37, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 26, 22, 23, 22, 25, 25, + 22, 26, 27, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 42, 22, 22, + 31, 22, 22, 22, 22, 22, 22, 22, + 22, 43, 22, 22, 22, 22, 22, 22, + 37, 22, 43, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 26, 22, 25, 25, 22, 26, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 37, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 26, 22, 1, 1, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 1, 22, 23, 22, 25, 25, 22, 26, + 27, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 28, 29, 22, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 37, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 26, 22, 23, 22, 25, 25, 22, 26, + 27, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 29, 22, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 37, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 26, 22, 23, 22, 25, 25, 22, 26, + 27, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 28, 29, 30, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 37, 45, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 26, 22, 23, 22, 25, 25, 22, 26, + 27, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 28, 29, 30, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 37, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 26, 22, 23, 22, 25, 25, 22, 26, + 27, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 28, 29, 30, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 32, + 22, 22, 33, 34, 35, 36, 37, 22, + 39, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 26, 22, 23, 22, 25, 25, 22, 26, + 27, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 28, 29, 30, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 45, + 22, 22, 22, 22, 22, 22, 37, 22, + 39, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 26, 22, 23, 22, 25, 25, 22, 26, + 27, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 28, 29, 30, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 45, + 22, 22, 22, 22, 22, 22, 37, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 26, 22, 23, 22, 25, 25, 22, 26, + 27, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 28, 29, 30, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 33, 22, 35, 22, 37, 22, + 39, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 26, 22, 23, 22, 25, 25, 22, 26, + 27, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 28, 29, 30, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 45, + 22, 22, 33, 22, 22, 22, 37, 22, + 39, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 26, 22, 23, 22, 25, 25, 22, 26, + 27, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 28, 29, 30, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 46, + 22, 22, 33, 34, 35, 22, 37, 22, + 39, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 26, 22, 23, 22, 25, 25, 22, 26, + 27, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 28, 29, 30, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 33, 34, 35, 22, 37, 22, + 39, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 26, 22, 23, 24, 25, 25, 22, 26, + 27, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 28, 29, 30, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 32, + 22, 22, 33, 34, 35, 36, 37, 22, + 39, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 26, 22, 48, 48, 47, 5, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 12, 47, 47, 47, + 47, 47, 47, 47, 47, 49, 47, 47, + 47, 47, 47, 47, 18, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 5, 47, + 48, 48, 50, 5, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 18, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 5, 50, 51, 47, + 48, 48, 47, 5, 18, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 5, 47, 47, 47, 47, + 47, 47, 18, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 5, 47, 48, 48, 47, 5, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 47, 5, 47, 47, 47, 47, 47, 47, + 18, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 5, 47, 2, 47, 48, 48, + 47, 5, 6, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 52, 47, 47, + 12, 47, 47, 47, 47, 47, 47, 47, + 47, 53, 47, 47, 54, 47, 47, 47, + 18, 47, 53, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 5, 47, 2, 47, 48, 48, + 47, 5, 6, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 12, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 18, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 5, 47, 2, 47, 48, 48, + 47, 5, 6, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 52, 47, 47, + 12, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 18, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 5, 47, 2, 47, 48, 48, + 47, 5, 6, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 52, 47, 47, + 12, 47, 47, 47, 47, 47, 47, 47, + 47, 53, 47, 47, 47, 47, 47, 47, + 18, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 5, 47, 2, 47, 48, 48, + 47, 5, 6, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 52, 47, 47, 12, 47, 47, 47, 47, 47, 47, 47, - 47, 49, 47, 47, 47, 47, 47, 47, - 18, 47, 48, 48, 47, 5, 47, 2, - 47, 48, 48, 47, 5, 6, 47, 47, + 47, 53, 47, 47, 47, 47, 47, 47, + 18, 47, 53, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 50, 47, 47, 12, 47, 47, 47, 47, - 47, 47, 47, 47, 51, 47, 47, 52, - 47, 47, 47, 18, 47, 51, 47, 2, - 47, 48, 48, 47, 5, 6, 47, 47, + 47, 47, 5, 47, 48, 48, 47, 5, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 12, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 12, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 18, 47, 53, 47, 48, - 48, 47, 5, 18, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 18, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 54, 47, 47, 47, 47, 47, - 47, 18, 47, 48, 48, 47, 5, 47, + 5, 47, 55, 55, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 55, 47, 2, 3, 48, 48, 47, 5, + 6, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 9, 10, 11, 12, 47, + 47, 47, 47, 47, 47, 47, 47, 13, + 47, 47, 14, 15, 16, 17, 18, 19, + 20, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 54, 47, - 47, 47, 47, 47, 47, 18, 47, 48, - 48, 47, 5, 47, 47, 47, 47, 47, + 5, 47, 2, 47, 48, 48, 47, 5, + 6, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 9, 10, 47, 12, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 18, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 18, 47, 2, 47, 48, 48, 47, - 5, 6, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 50, 47, 47, 12, + 5, 47, 2, 47, 48, 48, 47, 5, + 6, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 10, 47, 12, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 18, - 47, 2, 47, 48, 48, 47, 5, 6, + 47, 47, 47, 47, 47, 47, 18, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 50, 47, 47, 12, 47, 47, - 47, 47, 47, 47, 47, 47, 51, 47, - 47, 47, 47, 47, 47, 18, 47, 2, - 47, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 50, 47, 47, 12, 47, 47, 47, 47, - 47, 47, 47, 47, 51, 47, 47, 47, - 47, 47, 47, 18, 47, 51, 47, 48, - 48, 47, 5, 47, 47, 47, 47, 47, + 5, 47, 2, 47, 48, 48, 47, 5, + 6, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 9, 10, 11, 12, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 12, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 18, 56, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 18, 47, 55, 55, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 55, 47, 2, 3, 48, 48, 47, - 5, 6, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 9, 10, 11, 12, + 5, 47, 2, 47, 48, 48, 47, 5, + 6, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 9, 10, 11, 12, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 13, 47, 47, 14, 15, 16, 17, 18, - 19, 20, 47, 2, 47, 48, 48, 47, - 5, 6, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 9, 10, 47, 12, + 47, 47, 47, 47, 47, 47, 18, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 18, - 47, 2, 47, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 10, 47, 12, 47, 47, + 5, 47, 2, 47, 48, 48, 47, 5, + 6, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 9, 10, 11, 12, 47, + 47, 47, 47, 47, 47, 47, 47, 13, + 47, 47, 14, 15, 16, 17, 18, 47, + 20, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 18, 47, 2, - 47, 48, 48, 47, 5, 6, 47, 47, + 5, 47, 2, 47, 48, 48, 47, 5, + 6, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 9, 10, 11, 12, 47, + 47, 47, 47, 47, 47, 47, 47, 56, + 47, 47, 47, 47, 47, 47, 18, 47, + 20, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 9, 10, 11, 12, 47, 47, 47, 47, + 5, 47, 2, 47, 48, 48, 47, 5, + 6, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 9, 10, 11, 12, 47, + 47, 47, 47, 47, 47, 47, 47, 56, + 47, 47, 47, 47, 47, 47, 18, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 18, 56, 47, 2, 47, - 48, 48, 47, 5, 6, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 9, - 10, 11, 12, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 18, 47, 2, 47, 48, 48, - 47, 5, 6, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 9, 10, 11, - 12, 47, 47, 47, 47, 47, 47, 47, - 47, 13, 47, 47, 14, 15, 16, 17, - 18, 47, 20, 47, 2, 47, 48, 48, - 47, 5, 6, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 9, 10, 11, - 12, 47, 47, 47, 47, 47, 47, 47, - 47, 56, 47, 47, 47, 47, 47, 47, - 18, 47, 20, 47, 2, 47, 48, 48, - 47, 5, 6, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 9, 10, 11, - 12, 47, 47, 47, 47, 47, 47, 47, - 47, 56, 47, 47, 47, 47, 47, 47, - 18, 47, 2, 47, 48, 48, 47, 5, + 5, 47, 2, 47, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 9, 10, 11, 12, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 14, 47, 16, 47, 18, 47, - 20, 47, 2, 47, 48, 48, 47, 5, + 20, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 5, 47, 2, 47, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 9, 10, 11, 12, 47, 47, 47, 47, 47, 47, 47, 47, 56, 47, 47, 14, 47, 47, 47, 18, 47, - 20, 47, 2, 47, 48, 48, 47, 5, + 20, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 5, 47, 2, 47, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 9, 10, 11, 12, 47, 47, 47, 47, 47, 47, 47, 47, 57, 47, 47, 14, 15, 16, 47, 18, 47, - 20, 47, 2, 47, 48, 48, 47, 5, + 20, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 5, 47, 2, 47, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 9, 10, 11, 12, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 14, 15, 16, 47, 18, 47, - 20, 47, 2, 3, 48, 48, 47, 5, + 20, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 5, 47, 2, 3, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 9, 10, 11, 12, 47, 47, 47, 47, 47, 47, 47, 47, 13, 47, 47, 14, 15, 16, 17, 18, 47, - 20, 47, 22, 23, 24, 24, 21, 25, - 26, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 27, 28, 29, 30, 21, - 21, 21, 21, 21, 21, 21, 21, 58, - 21, 21, 32, 33, 34, 35, 36, 37, - 38, 21, 22, 59, 24, 24, 21, 25, - 26, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 27, 28, 29, 30, 21, - 21, 21, 21, 21, 21, 21, 21, 31, - 21, 21, 32, 33, 34, 35, 36, 21, - 38, 21, 1, 1, 2, 3, 48, 48, + 20, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 5, 47, 23, 24, 25, 25, 22, 26, + 27, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 28, 29, 30, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 58, + 22, 22, 33, 34, 35, 36, 37, 38, + 39, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 26, 22, 23, 59, 25, 25, 22, 26, + 27, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 28, 29, 30, 31, 22, + 22, 22, 22, 22, 22, 22, 22, 32, + 22, 22, 33, 34, 35, 36, 37, 22, + 39, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 26, 22, 1, 1, 2, 3, 48, 48, 47, 5, 6, 1, 1, 47, 47, 47, 1, 47, 47, 47, 47, 9, 10, 11, 12, 47, 47, 47, 47, 47, 47, 47, 47, 13, 47, 47, 14, 15, 16, 17, - 18, 19, 20, 47, 1, 1, 60, 60, + 18, 19, 20, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 5, 47, 1, 1, 60, 60, 60, 60, 60, 60, 60, 1, 1, 60, 60, 60, 1, 60, 0 }; static const char _myanmar_syllable_machine_trans_targs[] = { - 0, 1, 26, 37, 0, 27, 29, 51, - 54, 39, 40, 41, 28, 43, 44, 46, - 47, 48, 30, 50, 45, 0, 2, 13, - 0, 3, 5, 14, 15, 16, 4, 18, - 19, 21, 22, 23, 6, 25, 20, 12, - 9, 10, 11, 7, 8, 17, 24, 0, - 0, 36, 33, 34, 35, 31, 32, 38, - 42, 49, 52, 53, 0 + 0, 1, 25, 35, 0, 26, 30, 49, + 52, 37, 38, 39, 29, 41, 42, 44, + 45, 46, 27, 48, 43, 26, 0, 2, + 12, 0, 3, 7, 13, 14, 15, 6, + 17, 18, 20, 21, 22, 4, 24, 19, + 11, 5, 8, 9, 10, 16, 23, 0, + 0, 34, 0, 28, 31, 32, 33, 36, + 40, 47, 50, 51, 0 }; static const char _myanmar_syllable_machine_trans_actions[] = { - 3, 0, 0, 0, 4, 0, 0, 0, + 3, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 5, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 7, 0, + 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, - 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 9 + 0, 0, 0, 0, 0, 0, 0, 9, + 10, 0, 11, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12 }; static const char _myanmar_syllable_machine_to_state_actions[] = { @@ -390,7 +496,7 @@ static const char _myanmar_syllable_machine_to_state_actions[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0, 0 }; static const char _myanmar_syllable_machine_from_state_actions[] = { @@ -400,17 +506,17 @@ static const char _myanmar_syllable_machine_from_state_actions[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0, 0 }; static const short _myanmar_syllable_machine_eof_trans[] = { - 0, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 48, 48, 48, 48, 48, 48, + 0, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, + 23, 48, 51, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 22, 22, 48, 61 + 48, 23, 23, 48, 61 }; static const int myanmar_syllable_machine_start = 0; @@ -424,7 +530,7 @@ static const int myanmar_syllable_machine_en_main = 0; -#line 117 "hb-ot-shaper-myanmar-machine.rl" +#line 118 "hb-ot-shaper-myanmar-machine.rl" #define found_syllable(syllable_type) \ @@ -443,7 +549,7 @@ find_syllables_myanmar (hb_buffer_t *buffer) int cs; hb_glyph_info_t *info = buffer->info; -#line 447 "hb-ot-shaper-myanmar-machine.hh" +#line 553 "hb-ot-shaper-myanmar-machine.hh" { cs = myanmar_syllable_machine_start; ts = 0; @@ -451,7 +557,7 @@ find_syllables_myanmar (hb_buffer_t *buffer) act = 0; } -#line 137 "hb-ot-shaper-myanmar-machine.rl" +#line 138 "hb-ot-shaper-myanmar-machine.rl" p = 0; @@ -459,7 +565,7 @@ find_syllables_myanmar (hb_buffer_t *buffer) unsigned int syllable_serial = 1; -#line 463 "hb-ot-shaper-myanmar-machine.hh" +#line 569 "hb-ot-shaper-myanmar-machine.hh" { int _slen; int _trans; @@ -473,7 +579,7 @@ _resume: #line 1 "NONE" {ts = p;} break; -#line 477 "hb-ot-shaper-myanmar-machine.hh" +#line 583 "hb-ot-shaper-myanmar-machine.hh" } _keys = _myanmar_syllable_machine_trans_keys + (cs<<1); @@ -491,35 +597,59 @@ _eof_trans: goto _again; switch ( _myanmar_syllable_machine_trans_actions[_trans] ) { - case 6: -#line 110 "hb-ot-shaper-myanmar-machine.rl" + case 8: +#line 111 "hb-ot-shaper-myanmar-machine.rl" {te = p+1;{ found_syllable (myanmar_consonant_syllable); }} break; case 4: -#line 111 "hb-ot-shaper-myanmar-machine.rl" +#line 112 "hb-ot-shaper-myanmar-machine.rl" {te = p+1;{ found_syllable (myanmar_non_myanmar_cluster); }} break; - case 8: -#line 112 "hb-ot-shaper-myanmar-machine.rl" + case 10: +#line 113 "hb-ot-shaper-myanmar-machine.rl" {te = p+1;{ found_syllable (myanmar_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }} break; case 3: -#line 113 "hb-ot-shaper-myanmar-machine.rl" +#line 114 "hb-ot-shaper-myanmar-machine.rl" {te = p+1;{ found_syllable (myanmar_non_myanmar_cluster); }} break; - case 5: -#line 110 "hb-ot-shaper-myanmar-machine.rl" - {te = p;p--;{ found_syllable (myanmar_consonant_syllable); }} - break; case 7: -#line 112 "hb-ot-shaper-myanmar-machine.rl" - {te = p;p--;{ found_syllable (myanmar_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }} +#line 111 "hb-ot-shaper-myanmar-machine.rl" + {te = p;p--;{ found_syllable (myanmar_consonant_syllable); }} break; case 9: #line 113 "hb-ot-shaper-myanmar-machine.rl" + {te = p;p--;{ found_syllable (myanmar_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }} + break; + case 12: +#line 114 "hb-ot-shaper-myanmar-machine.rl" {te = p;p--;{ found_syllable (myanmar_non_myanmar_cluster); }} break; -#line 523 "hb-ot-shaper-myanmar-machine.hh" + case 11: +#line 1 "NONE" + { switch( act ) { + case 2: + {{p = ((te))-1;} found_syllable (myanmar_non_myanmar_cluster); } + break; + case 3: + {{p = ((te))-1;} found_syllable (myanmar_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; } + break; + } + } + break; + case 6: +#line 1 "NONE" + {te = p+1;} +#line 112 "hb-ot-shaper-myanmar-machine.rl" + {act = 2;} + break; + case 5: +#line 1 "NONE" + {te = p+1;} +#line 113 "hb-ot-shaper-myanmar-machine.rl" + {act = 3;} + break; +#line 653 "hb-ot-shaper-myanmar-machine.hh" } _again: @@ -528,7 +658,7 @@ _again: #line 1 "NONE" {ts = 0;} break; -#line 532 "hb-ot-shaper-myanmar-machine.hh" +#line 662 "hb-ot-shaper-myanmar-machine.hh" } if ( ++p != pe ) @@ -544,7 +674,7 @@ _again: } -#line 145 "hb-ot-shaper-myanmar-machine.rl" +#line 146 "hb-ot-shaper-myanmar-machine.rl" } diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-myanmar-machine.rl b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-myanmar-machine.rl index e8d1e788c..0b7a95997 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-myanmar-machine.rl +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-myanmar-machine.rl @@ -72,6 +72,7 @@ export DOTTEDCIRCLE = 11; export A = 9; export Ra = 15; export CS = 18; +export SMPst= 57; export VAbv = 20; export VBlw = 21; @@ -91,15 +92,15 @@ export ML = 41; # Medial Mon La j = ZWJ|ZWNJ; # Joiners k = (Ra As H); # Kinzi - +sm = SM | SMPst; c = C|Ra; # is_consonant medial_group = MY? As? MR? ((MW MH? ML? | MH ML? | ML) As?)?; main_vowel_group = (VPre.VS?)* VAbv* VBlw* A* (DB As?)?; post_vowel_group = VPst MH? ML? As* VAbv* A* (DB As?)?; -pwo_tone_group = PT A* DB? As?; +tone_group = sm | PT A* DB? As?; -complex_syllable_tail = As* medial_group main_vowel_group post_vowel_group* pwo_tone_group* SM* j?; +complex_syllable_tail = As* medial_group main_vowel_group post_vowel_group* tone_group* j?; syllable_tail = (H (c|IV).VS?)* (H | complex_syllable_tail); consonant_syllable = (k|CS)? (c|IV|GB|DOTTEDCIRCLE).VS? syllable_tail; @@ -108,7 +109,7 @@ other = any; main := |* consonant_syllable => { found_syllable (myanmar_consonant_syllable); }; - j => { found_syllable (myanmar_non_myanmar_cluster); }; + j | SMPst => { found_syllable (myanmar_non_myanmar_cluster); }; broken_cluster => { found_syllable (myanmar_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }; other => { found_syllable (myanmar_non_myanmar_cluster); }; *|; diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.hh b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.hh index e9da28d45..65b6adc36 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.hh @@ -166,556 +166,556 @@ static const unsigned char _use_syllable_machine_indicies[] = { 19, 20, 21, 8, 22, 23, 24, 25, 5, 26, 27, 28, 5, 29, 30, 31, 32, 33, 34, 35, 32, 1, 5, 36, - 5, 37, 5, 5, 35, 5, 39, 40, - 38, 41, 38, 38, 38, 38, 38, 38, - 38, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 39, 51, 52, 53, 54, 38, - 55, 56, 57, 38, 58, 59, 38, 60, - 61, 62, 63, 60, 38, 38, 38, 38, - 64, 38, 38, 63, 38, 39, 40, 38, - 41, 38, 38, 38, 38, 38, 38, 38, - 42, 43, 44, 45, 46, 47, 48, 49, - 50, 39, 51, 52, 53, 54, 38, 55, - 56, 57, 38, 38, 38, 38, 60, 61, - 62, 63, 60, 38, 38, 38, 38, 64, - 38, 38, 63, 38, 39, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 41, 38, 38, 38, 38, 38, 38, - 38, 38, 43, 44, 45, 46, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 55, 56, 57, 38, 38, 38, 38, 38, - 61, 62, 63, 65, 38, 38, 38, 38, - 43, 38, 41, 38, 38, 38, 38, 38, - 38, 38, 38, 43, 44, 45, 46, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 55, 56, 57, 38, 38, 38, 38, - 38, 61, 62, 63, 65, 38, 41, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 44, 45, 46, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 61, 62, 63, - 38, 41, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 45, 46, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 61, 62, 63, 38, 41, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 46, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 61, 62, 63, 38, 41, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 61, 62, - 38, 41, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 62, 38, 41, 38, 41, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 44, - 45, 46, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 55, 56, 57, 38, - 38, 38, 38, 38, 61, 62, 63, 65, - 38, 41, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 44, 45, 46, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 56, 57, 38, 38, 38, 38, 38, - 61, 62, 63, 65, 38, 41, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 44, - 45, 46, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 57, 38, - 38, 38, 38, 38, 61, 62, 63, 65, - 38, 66, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 41, 38, - 41, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 44, 45, 46, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 61, - 62, 63, 65, 38, 41, 38, 38, 38, - 38, 38, 38, 38, 42, 43, 44, 45, - 46, 38, 38, 38, 38, 38, 38, 52, - 53, 54, 38, 55, 56, 57, 38, 38, - 38, 38, 38, 61, 62, 63, 65, 38, - 38, 38, 38, 43, 38, 41, 38, 38, - 38, 38, 38, 38, 38, 38, 43, 44, - 45, 46, 38, 38, 38, 38, 38, 38, - 52, 53, 54, 38, 55, 56, 57, 38, - 38, 38, 38, 38, 61, 62, 63, 65, - 38, 38, 38, 38, 43, 38, 41, 38, - 38, 38, 38, 38, 38, 38, 38, 43, - 44, 45, 46, 38, 38, 38, 38, 38, - 38, 38, 53, 54, 38, 55, 56, 57, - 38, 38, 38, 38, 38, 61, 62, 63, - 65, 38, 38, 38, 38, 43, 38, 41, - 38, 38, 38, 38, 38, 38, 38, 38, - 43, 44, 45, 46, 38, 38, 38, 38, - 38, 38, 38, 38, 54, 38, 55, 56, - 57, 38, 38, 38, 38, 38, 61, 62, - 63, 65, 38, 38, 38, 38, 43, 38, - 67, 38, 41, 38, 38, 38, 38, 38, - 38, 38, 42, 43, 44, 45, 46, 38, - 48, 49, 38, 38, 38, 52, 53, 54, - 38, 55, 56, 57, 38, 38, 38, 38, - 38, 61, 62, 63, 65, 38, 38, 38, - 38, 43, 38, 41, 38, 38, 38, 38, - 38, 38, 38, 38, 43, 44, 45, 46, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 55, 56, 57, 38, 38, 38, - 38, 38, 61, 62, 63, 65, 38, 38, - 38, 38, 43, 38, 67, 38, 41, 38, - 38, 38, 38, 38, 38, 38, 42, 43, - 44, 45, 46, 38, 38, 49, 38, 38, - 38, 52, 53, 54, 38, 55, 56, 57, - 38, 38, 38, 38, 38, 61, 62, 63, - 65, 38, 38, 38, 38, 43, 38, 67, - 38, 41, 38, 38, 38, 38, 38, 38, - 38, 42, 43, 44, 45, 46, 38, 38, - 38, 38, 38, 38, 52, 53, 54, 38, - 55, 56, 57, 38, 38, 38, 38, 38, - 61, 62, 63, 65, 38, 38, 38, 38, - 43, 38, 67, 38, 41, 38, 38, 38, - 38, 38, 38, 38, 42, 43, 44, 45, - 46, 47, 48, 49, 38, 38, 38, 52, - 53, 54, 38, 55, 56, 57, 38, 38, - 38, 38, 38, 61, 62, 63, 65, 38, - 38, 38, 38, 43, 38, 39, 40, 38, - 41, 38, 38, 38, 38, 38, 38, 38, - 42, 43, 44, 45, 46, 47, 48, 49, - 50, 38, 51, 52, 53, 54, 38, 55, - 56, 57, 38, 38, 38, 38, 60, 61, - 62, 63, 60, 38, 38, 38, 38, 64, - 38, 38, 63, 38, 39, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 41, 38, 39, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 41, 38, 38, 38, 38, 38, 38, 38, - 38, 43, 44, 45, 46, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 55, - 56, 57, 38, 38, 38, 38, 38, 61, - 62, 63, 65, 38, 41, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 58, - 59, 38, 41, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 59, 38, - 4, 69, 68, 70, 68, 68, 68, 68, - 68, 68, 68, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 4, 80, 81, 82, - 83, 68, 84, 85, 86, 68, 68, 68, - 68, 87, 88, 89, 90, 91, 68, 68, - 68, 68, 92, 68, 68, 93, 68, 4, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 70, 68, 68, 68, - 68, 68, 68, 68, 68, 72, 73, 74, - 75, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 84, 85, 86, 68, 68, - 68, 68, 68, 88, 89, 90, 94, 68, - 68, 68, 68, 72, 68, 70, 68, 68, - 68, 68, 68, 68, 68, 68, 72, 73, - 74, 75, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 84, 85, 86, 68, - 68, 68, 68, 68, 88, 89, 90, 94, - 68, 70, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 73, 74, 75, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 88, 89, 90, 68, 70, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 74, - 75, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 88, 89, 90, 68, 70, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 75, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 88, 89, - 90, 68, 70, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 88, 89, 68, 70, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 89, 68, 70, 68, - 70, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 73, 74, 75, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 84, - 85, 86, 68, 68, 68, 68, 68, 88, - 89, 90, 94, 68, 70, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 73, 74, - 75, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 85, 86, 68, 68, - 68, 68, 68, 88, 89, 90, 94, 68, - 70, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 73, 74, 75, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 86, 68, 68, 68, 68, 68, 88, - 89, 90, 94, 68, 96, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, - 95, 97, 95, 70, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 73, 74, 75, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 88, 89, 90, 94, 68, 70, - 68, 68, 68, 68, 68, 68, 68, 71, - 72, 73, 74, 75, 68, 68, 68, 68, - 68, 68, 81, 82, 83, 68, 84, 85, - 86, 68, 68, 68, 68, 68, 88, 89, - 90, 94, 68, 68, 68, 68, 72, 68, - 70, 68, 68, 68, 68, 68, 68, 68, - 68, 72, 73, 74, 75, 68, 68, 68, - 68, 68, 68, 81, 82, 83, 68, 84, - 85, 86, 68, 68, 68, 68, 68, 88, - 89, 90, 94, 68, 68, 68, 68, 72, - 68, 70, 68, 68, 68, 68, 68, 68, - 68, 68, 72, 73, 74, 75, 68, 68, - 68, 68, 68, 68, 68, 82, 83, 68, - 84, 85, 86, 68, 68, 68, 68, 68, - 88, 89, 90, 94, 68, 68, 68, 68, - 72, 68, 70, 68, 68, 68, 68, 68, - 68, 68, 68, 72, 73, 74, 75, 68, - 68, 68, 68, 68, 68, 68, 68, 83, - 68, 84, 85, 86, 68, 68, 68, 68, - 68, 88, 89, 90, 94, 68, 68, 68, - 68, 72, 68, 98, 68, 70, 68, 68, - 68, 68, 68, 68, 68, 71, 72, 73, - 74, 75, 68, 77, 78, 68, 68, 68, - 81, 82, 83, 68, 84, 85, 86, 68, - 68, 68, 68, 68, 88, 89, 90, 94, - 68, 68, 68, 68, 72, 68, 70, 68, - 68, 68, 68, 68, 68, 68, 68, 72, - 73, 74, 75, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 84, 85, 86, - 68, 68, 68, 68, 68, 88, 89, 90, - 94, 68, 68, 68, 68, 72, 68, 98, - 68, 70, 68, 68, 68, 68, 68, 68, - 68, 71, 72, 73, 74, 75, 68, 68, - 78, 68, 68, 68, 81, 82, 83, 68, - 84, 85, 86, 68, 68, 68, 68, 68, - 88, 89, 90, 94, 68, 68, 68, 68, - 72, 68, 98, 68, 70, 68, 68, 68, - 68, 68, 68, 68, 71, 72, 73, 74, - 75, 68, 68, 68, 68, 68, 68, 81, - 82, 83, 68, 84, 85, 86, 68, 68, - 68, 68, 68, 88, 89, 90, 94, 68, - 68, 68, 68, 72, 68, 98, 68, 70, - 68, 68, 68, 68, 68, 68, 68, 71, - 72, 73, 74, 75, 76, 77, 78, 68, - 68, 68, 81, 82, 83, 68, 84, 85, - 86, 68, 68, 68, 68, 68, 88, 89, - 90, 94, 68, 68, 68, 68, 72, 68, - 4, 69, 68, 70, 68, 68, 68, 68, - 68, 68, 68, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 68, 80, 81, 82, - 83, 68, 84, 85, 86, 68, 68, 68, - 68, 87, 88, 89, 90, 91, 68, 68, - 68, 68, 92, 68, 68, 93, 68, 4, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 100, 99, 4, 95, - 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 97, 95, 4, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 70, 68, 68, 68, 68, 68, - 68, 68, 68, 72, 73, 74, 75, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 84, 85, 86, 68, 68, 68, 68, - 68, 88, 89, 90, 94, 68, 100, 99, - 102, 103, 101, 6, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 105, 104, 106, - 107, 68, 70, 68, 68, 68, 68, 68, - 68, 68, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 106, 117, 118, 119, 120, - 68, 121, 122, 123, 68, 58, 59, 68, - 124, 125, 126, 127, 128, 68, 68, 68, - 68, 129, 68, 68, 130, 68, 106, 107, - 68, 70, 68, 68, 68, 68, 68, 68, - 68, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 106, 117, 118, 119, 120, 68, - 121, 122, 123, 68, 68, 68, 68, 124, - 125, 126, 127, 128, 68, 68, 68, 68, - 129, 68, 68, 130, 68, 106, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 70, 68, 68, 68, 68, 68, - 68, 68, 68, 109, 110, 111, 112, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 121, 122, 123, 68, 68, 68, 68, - 68, 125, 126, 127, 131, 68, 68, 68, - 68, 109, 68, 70, 68, 68, 68, 68, - 68, 68, 68, 68, 109, 110, 111, 112, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 121, 122, 123, 68, 68, 68, - 68, 68, 125, 126, 127, 131, 68, 70, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 110, 111, 112, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 125, 126, - 127, 68, 70, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 111, 112, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 125, 126, 127, 68, 70, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 112, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 125, 126, 127, 68, - 70, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 125, - 126, 68, 70, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 126, 68, 70, 68, 70, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 110, 111, 112, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 121, 122, 123, - 68, 68, 68, 68, 68, 125, 126, 127, - 131, 68, 70, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 110, 111, 112, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 122, 123, 68, 68, 68, 68, - 68, 125, 126, 127, 131, 68, 70, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 110, 111, 112, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 123, - 68, 68, 68, 68, 68, 125, 126, 127, - 131, 68, 132, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 97, - 95, 70, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 110, 111, 112, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 125, 126, 127, 131, 68, 70, 68, 68, - 68, 68, 68, 68, 68, 108, 109, 110, - 111, 112, 68, 68, 68, 68, 68, 68, - 118, 119, 120, 68, 121, 122, 123, 68, - 68, 68, 68, 68, 125, 126, 127, 131, - 68, 68, 68, 68, 109, 68, 70, 68, - 68, 68, 68, 68, 68, 68, 68, 109, - 110, 111, 112, 68, 68, 68, 68, 68, - 68, 118, 119, 120, 68, 121, 122, 123, - 68, 68, 68, 68, 68, 125, 126, 127, - 131, 68, 68, 68, 68, 109, 68, 70, - 68, 68, 68, 68, 68, 68, 68, 68, - 109, 110, 111, 112, 68, 68, 68, 68, - 68, 68, 68, 119, 120, 68, 121, 122, - 123, 68, 68, 68, 68, 68, 125, 126, - 127, 131, 68, 68, 68, 68, 109, 68, - 70, 68, 68, 68, 68, 68, 68, 68, - 68, 109, 110, 111, 112, 68, 68, 68, - 68, 68, 68, 68, 68, 120, 68, 121, - 122, 123, 68, 68, 68, 68, 68, 125, - 126, 127, 131, 68, 68, 68, 68, 109, - 68, 133, 68, 70, 68, 68, 68, 68, - 68, 68, 68, 108, 109, 110, 111, 112, - 68, 114, 115, 68, 68, 68, 118, 119, - 120, 68, 121, 122, 123, 68, 68, 68, - 68, 68, 125, 126, 127, 131, 68, 68, - 68, 68, 109, 68, 70, 68, 68, 68, - 68, 68, 68, 68, 68, 109, 110, 111, - 112, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 121, 122, 123, 68, 68, - 68, 68, 68, 125, 126, 127, 131, 68, - 68, 68, 68, 109, 68, 133, 68, 70, - 68, 68, 68, 68, 68, 68, 68, 108, - 109, 110, 111, 112, 68, 68, 115, 68, - 68, 68, 118, 119, 120, 68, 121, 122, - 123, 68, 68, 68, 68, 68, 125, 126, - 127, 131, 68, 68, 68, 68, 109, 68, - 133, 68, 70, 68, 68, 68, 68, 68, - 68, 68, 108, 109, 110, 111, 112, 68, - 68, 68, 68, 68, 68, 118, 119, 120, - 68, 121, 122, 123, 68, 68, 68, 68, - 68, 125, 126, 127, 131, 68, 68, 68, - 68, 109, 68, 133, 68, 70, 68, 68, - 68, 68, 68, 68, 68, 108, 109, 110, - 111, 112, 113, 114, 115, 68, 68, 68, - 118, 119, 120, 68, 121, 122, 123, 68, - 68, 68, 68, 68, 125, 126, 127, 131, - 68, 68, 68, 68, 109, 68, 106, 107, - 68, 70, 68, 68, 68, 68, 68, 68, - 68, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 68, 117, 118, 119, 120, 68, - 121, 122, 123, 68, 68, 68, 68, 124, - 125, 126, 127, 128, 68, 68, 68, 68, - 129, 68, 68, 130, 68, 106, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 100, 99, 106, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, - 95, 97, 95, 106, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, - 70, 68, 68, 68, 68, 68, 68, 68, - 68, 109, 110, 111, 112, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 121, - 122, 123, 68, 68, 68, 68, 68, 125, - 126, 127, 131, 68, 100, 99, 8, 9, - 134, 11, 134, 134, 134, 134, 134, 134, - 134, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 8, 22, 23, 24, 25, 134, - 26, 27, 28, 134, 134, 134, 134, 32, - 33, 34, 35, 32, 134, 134, 134, 134, - 37, 134, 134, 35, 134, 8, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 11, 134, 134, 134, 134, 134, - 134, 134, 134, 14, 15, 16, 17, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 26, 27, 28, 134, 134, 134, 134, - 134, 33, 34, 35, 135, 134, 134, 134, - 134, 14, 134, 11, 134, 134, 134, 134, - 134, 134, 134, 134, 14, 15, 16, 17, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 26, 27, 28, 134, 134, 134, - 134, 134, 33, 34, 35, 135, 134, 11, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 15, 16, 17, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 33, 34, - 35, 134, 11, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 16, 17, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 33, 34, 35, 134, 11, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 17, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 33, 34, 35, 134, - 11, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 33, - 34, 134, 11, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 34, 134, 11, 134, 11, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 15, 16, 17, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 26, 27, 28, - 134, 134, 134, 134, 134, 33, 34, 35, - 135, 134, 11, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 15, 16, 17, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 27, 28, 134, 134, 134, 134, - 134, 33, 34, 35, 135, 134, 11, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 15, 16, 17, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 28, - 134, 134, 134, 134, 134, 33, 34, 35, - 135, 134, 136, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 11, - 134, 11, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 15, 16, 17, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 33, 34, 35, 135, 134, 11, 134, 134, - 134, 134, 134, 134, 134, 13, 14, 15, - 16, 17, 134, 134, 134, 134, 134, 134, - 23, 24, 25, 134, 26, 27, 28, 134, - 134, 134, 134, 134, 33, 34, 35, 135, - 134, 134, 134, 134, 14, 134, 11, 134, - 134, 134, 134, 134, 134, 134, 134, 14, - 15, 16, 17, 134, 134, 134, 134, 134, - 134, 23, 24, 25, 134, 26, 27, 28, - 134, 134, 134, 134, 134, 33, 34, 35, - 135, 134, 134, 134, 134, 14, 134, 11, - 134, 134, 134, 134, 134, 134, 134, 134, - 14, 15, 16, 17, 134, 134, 134, 134, - 134, 134, 134, 24, 25, 134, 26, 27, - 28, 134, 134, 134, 134, 134, 33, 34, - 35, 135, 134, 134, 134, 134, 14, 134, - 11, 134, 134, 134, 134, 134, 134, 134, - 134, 14, 15, 16, 17, 134, 134, 134, - 134, 134, 134, 134, 134, 25, 134, 26, - 27, 28, 134, 134, 134, 134, 134, 33, - 34, 35, 135, 134, 134, 134, 134, 14, - 134, 137, 134, 11, 134, 134, 134, 134, - 134, 134, 134, 13, 14, 15, 16, 17, - 134, 19, 20, 134, 134, 134, 23, 24, - 25, 134, 26, 27, 28, 134, 134, 134, - 134, 134, 33, 34, 35, 135, 134, 134, - 134, 134, 14, 134, 11, 134, 134, 134, - 134, 134, 134, 134, 134, 14, 15, 16, - 17, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 26, 27, 28, 134, 134, - 134, 134, 134, 33, 34, 35, 135, 134, - 134, 134, 134, 14, 134, 137, 134, 11, - 134, 134, 134, 134, 134, 134, 134, 13, - 14, 15, 16, 17, 134, 134, 20, 134, - 134, 134, 23, 24, 25, 134, 26, 27, - 28, 134, 134, 134, 134, 134, 33, 34, - 35, 135, 134, 134, 134, 134, 14, 134, - 137, 134, 11, 134, 134, 134, 134, 134, - 134, 134, 13, 14, 15, 16, 17, 134, - 134, 134, 134, 134, 134, 23, 24, 25, - 134, 26, 27, 28, 134, 134, 134, 134, - 134, 33, 34, 35, 135, 134, 134, 134, - 134, 14, 134, 137, 134, 11, 134, 134, - 134, 134, 134, 134, 134, 13, 14, 15, - 16, 17, 18, 19, 20, 134, 134, 134, - 23, 24, 25, 134, 26, 27, 28, 134, - 134, 134, 134, 134, 33, 34, 35, 135, - 134, 134, 134, 134, 14, 134, 8, 9, - 134, 11, 134, 134, 134, 134, 134, 134, - 134, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 134, 22, 23, 24, 25, 134, - 26, 27, 28, 134, 134, 134, 134, 32, - 33, 34, 35, 32, 134, 134, 134, 134, - 37, 134, 134, 35, 134, 8, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 11, 134, 8, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 11, 134, 134, 134, 134, 134, 134, - 134, 134, 14, 15, 16, 17, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 26, 27, 28, 134, 134, 134, 134, 134, - 33, 34, 35, 135, 134, 138, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 11, - 134, 10, 11, 134, 4, 134, 134, 134, - 4, 134, 134, 134, 134, 134, 8, 9, - 10, 11, 134, 134, 134, 134, 134, 134, - 134, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 8, 22, 23, 24, 25, 134, - 26, 27, 28, 134, 29, 30, 134, 32, - 33, 34, 35, 32, 134, 134, 134, 134, - 37, 134, 134, 35, 134, 11, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 29, 30, 134, 11, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 30, - 134, 4, 139, 139, 139, 4, 139, 141, - 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 142, 140, 143, 140, 143, - 144, 140, 141, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 1, 142, 142, - 140, 141, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 142, 140, 143, - 140, 141, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 142, 140, 143, - 140, 143, 140, 39, 40, 38, 41, 38, - 38, 38, 38, 38, 38, 38, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 39, - 51, 52, 53, 54, 38, 55, 56, 57, - 38, 58, 59, 38, 60, 61, 62, 63, - 60, 1, 38, 2, 38, 64, 38, 38, - 63, 38, 0 + 5, 37, 5, 5, 38, 5, 40, 41, + 39, 42, 39, 39, 39, 39, 39, 39, + 39, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 40, 52, 53, 54, 55, 39, + 56, 57, 58, 39, 59, 60, 39, 61, + 62, 63, 64, 61, 39, 39, 39, 39, + 65, 39, 39, 64, 39, 40, 41, 39, + 42, 39, 39, 39, 39, 39, 39, 39, + 43, 44, 45, 46, 47, 48, 49, 50, + 51, 40, 52, 53, 54, 55, 39, 56, + 57, 58, 39, 39, 39, 39, 61, 62, + 63, 64, 61, 39, 39, 39, 39, 65, + 39, 39, 64, 39, 40, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 42, 39, 39, 39, 39, 39, 39, + 39, 39, 44, 45, 46, 47, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 56, 57, 58, 39, 39, 39, 39, 39, + 62, 63, 64, 66, 39, 39, 39, 39, + 44, 39, 42, 39, 39, 39, 39, 39, + 39, 39, 39, 44, 45, 46, 47, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 56, 57, 58, 39, 39, 39, 39, + 39, 62, 63, 64, 66, 39, 42, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 45, 46, 47, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 62, 63, 64, + 39, 42, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 46, 47, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 62, 63, 64, 39, 42, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 47, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 62, 63, 64, 39, 42, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 62, 63, + 39, 42, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 63, 39, 42, 39, 42, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 45, + 46, 47, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 56, 57, 58, 39, + 39, 39, 39, 39, 62, 63, 64, 66, + 39, 42, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 45, 46, 47, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 57, 58, 39, 39, 39, 39, 39, + 62, 63, 64, 66, 39, 42, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 45, + 46, 47, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 58, 39, + 39, 39, 39, 39, 62, 63, 64, 66, + 39, 67, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 42, 39, + 42, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 45, 46, 47, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 62, + 63, 64, 66, 39, 42, 39, 39, 39, + 39, 39, 39, 39, 43, 44, 45, 46, + 47, 39, 39, 39, 39, 39, 39, 53, + 54, 55, 39, 56, 57, 58, 39, 39, + 39, 39, 39, 62, 63, 64, 66, 39, + 39, 39, 39, 44, 39, 42, 39, 39, + 39, 39, 39, 39, 39, 39, 44, 45, + 46, 47, 39, 39, 39, 39, 39, 39, + 53, 54, 55, 39, 56, 57, 58, 39, + 39, 39, 39, 39, 62, 63, 64, 66, + 39, 39, 39, 39, 44, 39, 42, 39, + 39, 39, 39, 39, 39, 39, 39, 44, + 45, 46, 47, 39, 39, 39, 39, 39, + 39, 39, 54, 55, 39, 56, 57, 58, + 39, 39, 39, 39, 39, 62, 63, 64, + 66, 39, 39, 39, 39, 44, 39, 42, + 39, 39, 39, 39, 39, 39, 39, 39, + 44, 45, 46, 47, 39, 39, 39, 39, + 39, 39, 39, 39, 55, 39, 56, 57, + 58, 39, 39, 39, 39, 39, 62, 63, + 64, 66, 39, 39, 39, 39, 44, 39, + 68, 39, 42, 39, 39, 39, 39, 39, + 39, 39, 43, 44, 45, 46, 47, 39, + 49, 50, 39, 39, 39, 53, 54, 55, + 39, 56, 57, 58, 39, 39, 39, 39, + 39, 62, 63, 64, 66, 39, 39, 39, + 39, 44, 39, 42, 39, 39, 39, 39, + 39, 39, 39, 39, 44, 45, 46, 47, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 56, 57, 58, 39, 39, 39, + 39, 39, 62, 63, 64, 66, 39, 39, + 39, 39, 44, 39, 68, 39, 42, 39, + 39, 39, 39, 39, 39, 39, 43, 44, + 45, 46, 47, 39, 39, 50, 39, 39, + 39, 53, 54, 55, 39, 56, 57, 58, + 39, 39, 39, 39, 39, 62, 63, 64, + 66, 39, 39, 39, 39, 44, 39, 68, + 39, 42, 39, 39, 39, 39, 39, 39, + 39, 43, 44, 45, 46, 47, 39, 39, + 39, 39, 39, 39, 53, 54, 55, 39, + 56, 57, 58, 39, 39, 39, 39, 39, + 62, 63, 64, 66, 39, 39, 39, 39, + 44, 39, 68, 39, 42, 39, 39, 39, + 39, 39, 39, 39, 43, 44, 45, 46, + 47, 48, 49, 50, 39, 39, 39, 53, + 54, 55, 39, 56, 57, 58, 39, 39, + 39, 39, 39, 62, 63, 64, 66, 39, + 39, 39, 39, 44, 39, 40, 41, 39, + 42, 39, 39, 39, 39, 39, 39, 39, + 43, 44, 45, 46, 47, 48, 49, 50, + 51, 39, 52, 53, 54, 55, 39, 56, + 57, 58, 39, 39, 39, 39, 61, 62, + 63, 64, 61, 39, 39, 39, 39, 65, + 39, 39, 64, 39, 40, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 42, 39, 40, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 42, 39, 39, 39, 39, 39, 39, 39, + 39, 44, 45, 46, 47, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 56, + 57, 58, 39, 39, 39, 39, 39, 62, + 63, 64, 66, 39, 42, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 59, + 60, 39, 42, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 60, 39, + 4, 70, 69, 71, 69, 69, 69, 69, + 69, 69, 69, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 4, 81, 82, 83, + 84, 69, 85, 86, 87, 69, 69, 69, + 69, 88, 89, 90, 91, 92, 69, 69, + 69, 69, 93, 69, 69, 94, 69, 4, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 71, 69, 69, 69, + 69, 69, 69, 69, 69, 73, 74, 75, + 76, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 85, 86, 87, 69, 69, + 69, 69, 69, 89, 90, 91, 95, 69, + 69, 69, 69, 73, 69, 71, 69, 69, + 69, 69, 69, 69, 69, 69, 73, 74, + 75, 76, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 85, 86, 87, 69, + 69, 69, 69, 69, 89, 90, 91, 95, + 69, 71, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 74, 75, 76, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 89, 90, 91, 69, 71, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 75, + 76, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 89, 90, 91, 69, 71, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 76, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 89, 90, + 91, 69, 71, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 89, 90, 69, 71, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 90, 69, 71, 69, + 71, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 74, 75, 76, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 85, + 86, 87, 69, 69, 69, 69, 69, 89, + 90, 91, 95, 69, 71, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 74, 75, + 76, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 86, 87, 69, 69, + 69, 69, 69, 89, 90, 91, 95, 69, + 71, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 74, 75, 76, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 87, 69, 69, 69, 69, 69, 89, + 90, 91, 95, 69, 97, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 98, 96, 71, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 74, 75, 76, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 89, 90, 91, 95, 69, 71, + 69, 69, 69, 69, 69, 69, 69, 72, + 73, 74, 75, 76, 69, 69, 69, 69, + 69, 69, 82, 83, 84, 69, 85, 86, + 87, 69, 69, 69, 69, 69, 89, 90, + 91, 95, 69, 69, 69, 69, 73, 69, + 71, 69, 69, 69, 69, 69, 69, 69, + 69, 73, 74, 75, 76, 69, 69, 69, + 69, 69, 69, 82, 83, 84, 69, 85, + 86, 87, 69, 69, 69, 69, 69, 89, + 90, 91, 95, 69, 69, 69, 69, 73, + 69, 71, 69, 69, 69, 69, 69, 69, + 69, 69, 73, 74, 75, 76, 69, 69, + 69, 69, 69, 69, 69, 83, 84, 69, + 85, 86, 87, 69, 69, 69, 69, 69, + 89, 90, 91, 95, 69, 69, 69, 69, + 73, 69, 71, 69, 69, 69, 69, 69, + 69, 69, 69, 73, 74, 75, 76, 69, + 69, 69, 69, 69, 69, 69, 69, 84, + 69, 85, 86, 87, 69, 69, 69, 69, + 69, 89, 90, 91, 95, 69, 69, 69, + 69, 73, 69, 99, 69, 71, 69, 69, + 69, 69, 69, 69, 69, 72, 73, 74, + 75, 76, 69, 78, 79, 69, 69, 69, + 82, 83, 84, 69, 85, 86, 87, 69, + 69, 69, 69, 69, 89, 90, 91, 95, + 69, 69, 69, 69, 73, 69, 71, 69, + 69, 69, 69, 69, 69, 69, 69, 73, + 74, 75, 76, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 85, 86, 87, + 69, 69, 69, 69, 69, 89, 90, 91, + 95, 69, 69, 69, 69, 73, 69, 99, + 69, 71, 69, 69, 69, 69, 69, 69, + 69, 72, 73, 74, 75, 76, 69, 69, + 79, 69, 69, 69, 82, 83, 84, 69, + 85, 86, 87, 69, 69, 69, 69, 69, + 89, 90, 91, 95, 69, 69, 69, 69, + 73, 69, 99, 69, 71, 69, 69, 69, + 69, 69, 69, 69, 72, 73, 74, 75, + 76, 69, 69, 69, 69, 69, 69, 82, + 83, 84, 69, 85, 86, 87, 69, 69, + 69, 69, 69, 89, 90, 91, 95, 69, + 69, 69, 69, 73, 69, 99, 69, 71, + 69, 69, 69, 69, 69, 69, 69, 72, + 73, 74, 75, 76, 77, 78, 79, 69, + 69, 69, 82, 83, 84, 69, 85, 86, + 87, 69, 69, 69, 69, 69, 89, 90, + 91, 95, 69, 69, 69, 69, 73, 69, + 4, 70, 69, 71, 69, 69, 69, 69, + 69, 69, 69, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 69, 81, 82, 83, + 84, 69, 85, 86, 87, 69, 69, 69, + 69, 88, 89, 90, 91, 92, 69, 69, + 69, 69, 93, 69, 69, 94, 69, 4, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 101, 100, 4, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 98, 96, 4, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 71, 69, 69, 69, 69, 69, + 69, 69, 69, 73, 74, 75, 76, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 85, 86, 87, 69, 69, 69, 69, + 69, 89, 90, 91, 95, 69, 101, 100, + 103, 104, 102, 6, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 106, 105, 107, + 108, 69, 71, 69, 69, 69, 69, 69, + 69, 69, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 107, 118, 119, 120, 121, + 69, 122, 123, 124, 69, 59, 60, 69, + 125, 126, 127, 128, 129, 69, 69, 69, + 69, 130, 69, 69, 131, 69, 107, 108, + 69, 71, 69, 69, 69, 69, 69, 69, + 69, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 107, 118, 119, 120, 121, 69, + 122, 123, 124, 69, 69, 69, 69, 125, + 126, 127, 128, 129, 69, 69, 69, 69, + 130, 69, 69, 131, 69, 107, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 71, 69, 69, 69, 69, 69, + 69, 69, 69, 110, 111, 112, 113, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 122, 123, 124, 69, 69, 69, 69, + 69, 126, 127, 128, 132, 69, 69, 69, + 69, 110, 69, 71, 69, 69, 69, 69, + 69, 69, 69, 69, 110, 111, 112, 113, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 122, 123, 124, 69, 69, 69, + 69, 69, 126, 127, 128, 132, 69, 71, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 111, 112, 113, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 126, 127, + 128, 69, 71, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 112, 113, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 126, 127, 128, 69, 71, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 113, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 126, 127, 128, 69, + 71, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 126, + 127, 69, 71, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 127, 69, 71, 69, 71, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 111, 112, 113, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 122, 123, 124, + 69, 69, 69, 69, 69, 126, 127, 128, + 132, 69, 71, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 111, 112, 113, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 123, 124, 69, 69, 69, 69, + 69, 126, 127, 128, 132, 69, 71, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 111, 112, 113, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 124, + 69, 69, 69, 69, 69, 126, 127, 128, + 132, 69, 133, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 98, + 96, 71, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 111, 112, 113, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 126, 127, 128, 132, 69, 71, 69, 69, + 69, 69, 69, 69, 69, 109, 110, 111, + 112, 113, 69, 69, 69, 69, 69, 69, + 119, 120, 121, 69, 122, 123, 124, 69, + 69, 69, 69, 69, 126, 127, 128, 132, + 69, 69, 69, 69, 110, 69, 71, 69, + 69, 69, 69, 69, 69, 69, 69, 110, + 111, 112, 113, 69, 69, 69, 69, 69, + 69, 119, 120, 121, 69, 122, 123, 124, + 69, 69, 69, 69, 69, 126, 127, 128, + 132, 69, 69, 69, 69, 110, 69, 71, + 69, 69, 69, 69, 69, 69, 69, 69, + 110, 111, 112, 113, 69, 69, 69, 69, + 69, 69, 69, 120, 121, 69, 122, 123, + 124, 69, 69, 69, 69, 69, 126, 127, + 128, 132, 69, 69, 69, 69, 110, 69, + 71, 69, 69, 69, 69, 69, 69, 69, + 69, 110, 111, 112, 113, 69, 69, 69, + 69, 69, 69, 69, 69, 121, 69, 122, + 123, 124, 69, 69, 69, 69, 69, 126, + 127, 128, 132, 69, 69, 69, 69, 110, + 69, 134, 69, 71, 69, 69, 69, 69, + 69, 69, 69, 109, 110, 111, 112, 113, + 69, 115, 116, 69, 69, 69, 119, 120, + 121, 69, 122, 123, 124, 69, 69, 69, + 69, 69, 126, 127, 128, 132, 69, 69, + 69, 69, 110, 69, 71, 69, 69, 69, + 69, 69, 69, 69, 69, 110, 111, 112, + 113, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 122, 123, 124, 69, 69, + 69, 69, 69, 126, 127, 128, 132, 69, + 69, 69, 69, 110, 69, 134, 69, 71, + 69, 69, 69, 69, 69, 69, 69, 109, + 110, 111, 112, 113, 69, 69, 116, 69, + 69, 69, 119, 120, 121, 69, 122, 123, + 124, 69, 69, 69, 69, 69, 126, 127, + 128, 132, 69, 69, 69, 69, 110, 69, + 134, 69, 71, 69, 69, 69, 69, 69, + 69, 69, 109, 110, 111, 112, 113, 69, + 69, 69, 69, 69, 69, 119, 120, 121, + 69, 122, 123, 124, 69, 69, 69, 69, + 69, 126, 127, 128, 132, 69, 69, 69, + 69, 110, 69, 134, 69, 71, 69, 69, + 69, 69, 69, 69, 69, 109, 110, 111, + 112, 113, 114, 115, 116, 69, 69, 69, + 119, 120, 121, 69, 122, 123, 124, 69, + 69, 69, 69, 69, 126, 127, 128, 132, + 69, 69, 69, 69, 110, 69, 107, 108, + 69, 71, 69, 69, 69, 69, 69, 69, + 69, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 69, 118, 119, 120, 121, 69, + 122, 123, 124, 69, 69, 69, 69, 125, + 126, 127, 128, 129, 69, 69, 69, 69, + 130, 69, 69, 131, 69, 107, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 101, 100, 107, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, + 96, 98, 96, 107, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 71, 69, 69, 69, 69, 69, 69, 69, + 69, 110, 111, 112, 113, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 122, + 123, 124, 69, 69, 69, 69, 69, 126, + 127, 128, 132, 69, 101, 100, 8, 9, + 135, 11, 135, 135, 135, 135, 135, 135, + 135, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 8, 22, 23, 24, 25, 135, + 26, 27, 28, 135, 135, 135, 135, 32, + 33, 34, 38, 32, 135, 135, 135, 135, + 37, 135, 135, 38, 135, 8, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 11, 135, 135, 135, 135, 135, + 135, 135, 135, 14, 15, 16, 17, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 26, 27, 28, 135, 135, 135, 135, + 135, 33, 34, 38, 136, 135, 135, 135, + 135, 14, 135, 11, 135, 135, 135, 135, + 135, 135, 135, 135, 14, 15, 16, 17, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 26, 27, 28, 135, 135, 135, + 135, 135, 33, 34, 38, 136, 135, 11, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 15, 16, 17, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 33, 34, + 38, 135, 11, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 16, 17, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 33, 34, 38, 135, 11, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 17, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 33, 34, 38, 135, + 11, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 33, + 34, 135, 11, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 34, 135, 11, 137, 11, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 15, 16, 17, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 26, 27, 28, + 135, 135, 135, 135, 135, 33, 34, 38, + 136, 135, 11, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 15, 16, 17, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 27, 28, 135, 135, 135, 135, + 135, 33, 34, 38, 136, 135, 11, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 15, 16, 17, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 28, + 135, 135, 135, 135, 135, 33, 34, 38, + 136, 135, 138, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 11, + 135, 11, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 15, 16, 17, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 33, 34, 38, 136, 135, 11, 135, 135, + 135, 135, 135, 135, 135, 13, 14, 15, + 16, 17, 135, 135, 135, 135, 135, 135, + 23, 24, 25, 135, 26, 27, 28, 135, + 135, 135, 135, 135, 33, 34, 38, 136, + 135, 135, 135, 135, 14, 135, 11, 135, + 135, 135, 135, 135, 135, 135, 135, 14, + 15, 16, 17, 135, 135, 135, 135, 135, + 135, 23, 24, 25, 135, 26, 27, 28, + 135, 135, 135, 135, 135, 33, 34, 38, + 136, 135, 135, 135, 135, 14, 135, 11, + 135, 135, 135, 135, 135, 135, 135, 135, + 14, 15, 16, 17, 135, 135, 135, 135, + 135, 135, 135, 24, 25, 135, 26, 27, + 28, 135, 135, 135, 135, 135, 33, 34, + 38, 136, 135, 135, 135, 135, 14, 135, + 11, 135, 135, 135, 135, 135, 135, 135, + 135, 14, 15, 16, 17, 135, 135, 135, + 135, 135, 135, 135, 135, 25, 135, 26, + 27, 28, 135, 135, 135, 135, 135, 33, + 34, 38, 136, 135, 135, 135, 135, 14, + 135, 139, 135, 11, 135, 135, 135, 135, + 135, 135, 135, 13, 14, 15, 16, 17, + 135, 19, 20, 135, 135, 135, 23, 24, + 25, 135, 26, 27, 28, 135, 135, 135, + 135, 135, 33, 34, 38, 136, 135, 135, + 135, 135, 14, 135, 11, 135, 135, 135, + 135, 135, 135, 135, 135, 14, 15, 16, + 17, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 26, 27, 28, 135, 135, + 135, 135, 135, 33, 34, 38, 136, 135, + 135, 135, 135, 14, 135, 139, 135, 11, + 135, 135, 135, 135, 135, 135, 135, 13, + 14, 15, 16, 17, 135, 135, 20, 135, + 135, 135, 23, 24, 25, 135, 26, 27, + 28, 135, 135, 135, 135, 135, 33, 34, + 38, 136, 135, 135, 135, 135, 14, 135, + 139, 135, 11, 135, 135, 135, 135, 135, + 135, 135, 13, 14, 15, 16, 17, 135, + 135, 135, 135, 135, 135, 23, 24, 25, + 135, 26, 27, 28, 135, 135, 135, 135, + 135, 33, 34, 38, 136, 135, 135, 135, + 135, 14, 135, 139, 135, 11, 135, 135, + 135, 135, 135, 135, 135, 13, 14, 15, + 16, 17, 18, 19, 20, 135, 135, 135, + 23, 24, 25, 135, 26, 27, 28, 135, + 135, 135, 135, 135, 33, 34, 38, 136, + 135, 135, 135, 135, 14, 135, 8, 9, + 135, 11, 135, 135, 135, 135, 135, 135, + 135, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 135, 22, 23, 24, 25, 135, + 26, 27, 28, 135, 135, 135, 135, 32, + 33, 34, 38, 32, 135, 135, 135, 135, + 37, 135, 135, 38, 135, 8, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 11, 135, 8, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 11, 135, 135, 135, 135, 135, 135, + 135, 135, 14, 15, 16, 17, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 26, 27, 28, 135, 135, 135, 135, 135, + 33, 34, 38, 136, 135, 140, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 11, + 135, 10, 11, 135, 4, 135, 135, 135, + 4, 135, 135, 135, 135, 135, 8, 9, + 10, 11, 135, 135, 135, 135, 135, 135, + 135, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 8, 22, 23, 24, 25, 135, + 26, 27, 28, 135, 29, 30, 135, 32, + 33, 34, 38, 32, 135, 135, 135, 135, + 37, 135, 135, 38, 135, 11, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 29, 30, 135, 11, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 30, + 135, 4, 141, 141, 141, 4, 141, 143, + 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 144, 142, 145, 142, 145, + 146, 142, 143, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 1, 144, 144, + 142, 143, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 144, 142, 145, + 142, 143, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 144, 142, 145, + 142, 145, 142, 40, 41, 39, 42, 39, + 39, 39, 39, 39, 39, 39, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 40, + 52, 53, 54, 55, 39, 56, 57, 58, + 39, 59, 60, 39, 61, 62, 63, 64, + 61, 1, 39, 2, 39, 65, 39, 39, + 64, 39, 0 }; static const char _use_syllable_machine_trans_targs[] = { @@ -723,21 +723,21 @@ static const char _use_syllable_machine_trans_targs[] = { 90, 91, 116, 1, 118, 104, 92, 93, 94, 95, 108, 110, 111, 112, 113, 105, 106, 107, 99, 100, 101, 119, 120, 121, - 114, 96, 97, 98, 126, 115, 1, 3, - 4, 1, 17, 5, 6, 7, 8, 21, - 23, 24, 25, 26, 18, 19, 20, 12, - 13, 14, 29, 30, 27, 9, 10, 11, - 28, 15, 16, 22, 1, 32, 1, 45, - 33, 34, 35, 36, 49, 51, 52, 53, - 54, 46, 47, 48, 40, 41, 42, 55, - 37, 38, 39, 56, 57, 58, 43, 1, - 44, 1, 50, 1, 1, 1, 60, 1, - 1, 1, 62, 63, 76, 64, 65, 66, - 67, 80, 82, 83, 84, 85, 77, 78, - 79, 71, 72, 73, 86, 68, 69, 70, - 87, 88, 89, 74, 75, 81, 1, 102, - 103, 109, 117, 1, 1, 1, 123, 124, - 125 + 114, 96, 97, 98, 126, 115, 98, 1, + 3, 4, 1, 17, 5, 6, 7, 8, + 21, 23, 24, 25, 26, 18, 19, 20, + 12, 13, 14, 29, 30, 27, 9, 10, + 11, 28, 15, 16, 22, 1, 32, 1, + 45, 33, 34, 35, 36, 49, 51, 52, + 53, 54, 46, 47, 48, 40, 41, 42, + 55, 37, 38, 39, 56, 57, 58, 43, + 1, 44, 1, 50, 1, 1, 1, 60, + 1, 1, 1, 62, 63, 76, 64, 65, + 66, 67, 80, 82, 83, 84, 85, 77, + 78, 79, 71, 72, 73, 86, 68, 69, + 70, 87, 88, 89, 74, 75, 81, 1, + 102, 1, 103, 109, 117, 1, 1, 1, + 123, 124, 125 }; static const char _use_syllable_machine_trans_actions[] = { @@ -745,21 +745,21 @@ static const char _use_syllable_machine_trans_actions[] = { 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 0, 7, 0, - 0, 8, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 7, 0, 8, 9, + 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 9, 0, 10, 0, + 0, 0, 0, 0, 0, 11, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 11, - 0, 12, 0, 13, 14, 15, 0, 16, - 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 14, 0, 15, 16, 17, 0, + 18, 19, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 0, - 0, 0, 0, 20, 21, 22, 0, 0, - 0 + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 21, + 0, 22, 0, 0, 0, 23, 24, 25, + 0, 0, 0 }; static const char _use_syllable_machine_to_state_actions[] = { @@ -801,22 +801,22 @@ static const char _use_syllable_machine_from_state_actions[] = { }; static const short _use_syllable_machine_eof_trans[] = { - 1, 0, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 69, - 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 96, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 100, - 96, 69, 100, 102, 105, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 96, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 100, 96, - 69, 100, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, - 135, 140, 141, 141, 141, 141, 39 + 1, 0, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 97, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 101, + 97, 70, 101, 103, 106, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 97, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 101, 97, + 70, 101, 136, 136, 136, 136, 136, 136, + 136, 136, 138, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 136, 136, 136, 136, + 136, 142, 143, 143, 143, 143, 40 }; static const int use_syllable_machine_start = 1; @@ -830,7 +830,7 @@ static const int use_syllable_machine_en_main = 1; -#line 185 "hb-ot-shaper-use-machine.rl" +#line 186 "hb-ot-shaper-use-machine.rl" #define found_syllable(syllable_type) \ @@ -937,7 +937,7 @@ find_syllables_use (hb_buffer_t *buffer) act = 0; } -#line 285 "hb-ot-shaper-use-machine.rl" +#line 286 "hb-ot-shaper-use-machine.rl" unsigned int syllable_serial = 1; @@ -974,87 +974,111 @@ _eof_trans: goto _again; switch ( _use_syllable_machine_trans_actions[_trans] ) { - case 6: + case 7: #line 1 "NONE" {te = p+1;} break; - case 14: + case 16: #line 173 "hb-ot-shaper-use-machine.rl" {te = p+1;{ found_syllable (use_virama_terminated_cluster); }} break; - case 12: + case 14: #line 174 "hb-ot-shaper-use-machine.rl" {te = p+1;{ found_syllable (use_sakot_terminated_cluster); }} break; - case 10: + case 12: #line 175 "hb-ot-shaper-use-machine.rl" {te = p+1;{ found_syllable (use_standard_cluster); }} break; - case 18: + case 20: #line 176 "hb-ot-shaper-use-machine.rl" {te = p+1;{ found_syllable (use_number_joiner_terminated_cluster); }} break; - case 16: + case 18: #line 177 "hb-ot-shaper-use-machine.rl" {te = p+1;{ found_syllable (use_numeral_cluster); }} break; - case 8: + case 10: #line 178 "hb-ot-shaper-use-machine.rl" {te = p+1;{ found_syllable (use_symbol_cluster); }} break; - case 22: + case 25: #line 179 "hb-ot-shaper-use-machine.rl" {te = p+1;{ found_syllable (use_hieroglyph_cluster); }} break; case 5: -#line 180 "hb-ot-shaper-use-machine.rl" +#line 181 "hb-ot-shaper-use-machine.rl" {te = p+1;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }} break; case 4: -#line 181 "hb-ot-shaper-use-machine.rl" +#line 182 "hb-ot-shaper-use-machine.rl" {te = p+1;{ found_syllable (use_non_cluster); }} break; - case 13: + case 15: #line 173 "hb-ot-shaper-use-machine.rl" {te = p;p--;{ found_syllable (use_virama_terminated_cluster); }} break; - case 11: + case 13: #line 174 "hb-ot-shaper-use-machine.rl" {te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }} break; - case 9: + case 11: #line 175 "hb-ot-shaper-use-machine.rl" {te = p;p--;{ found_syllable (use_standard_cluster); }} break; - case 17: + case 19: #line 176 "hb-ot-shaper-use-machine.rl" {te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }} break; - case 15: + case 17: #line 177 "hb-ot-shaper-use-machine.rl" {te = p;p--;{ found_syllable (use_numeral_cluster); }} break; - case 7: + case 9: #line 178 "hb-ot-shaper-use-machine.rl" {te = p;p--;{ found_syllable (use_symbol_cluster); }} break; - case 21: + case 24: #line 179 "hb-ot-shaper-use-machine.rl" {te = p;p--;{ found_syllable (use_hieroglyph_cluster); }} break; - case 19: -#line 180 "hb-ot-shaper-use-machine.rl" + case 21: +#line 181 "hb-ot-shaper-use-machine.rl" {te = p;p--;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }} break; - case 20: -#line 181 "hb-ot-shaper-use-machine.rl" + case 23: +#line 182 "hb-ot-shaper-use-machine.rl" {te = p;p--;{ found_syllable (use_non_cluster); }} break; case 1: #line 178 "hb-ot-shaper-use-machine.rl" {{p = ((te))-1;}{ found_syllable (use_symbol_cluster); }} break; -#line 1058 "hb-ot-shaper-use-machine.hh" + case 22: +#line 1 "NONE" + { switch( act ) { + case 8: + {{p = ((te))-1;} found_syllable (use_non_cluster); } + break; + case 9: + {{p = ((te))-1;} found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; } + break; + } + } + break; + case 6: +#line 1 "NONE" + {te = p+1;} +#line 180 "hb-ot-shaper-use-machine.rl" + {act = 8;} + break; + case 8: +#line 1 "NONE" + {te = p+1;} +#line 181 "hb-ot-shaper-use-machine.rl" + {act = 9;} + break; +#line 1082 "hb-ot-shaper-use-machine.hh" } _again: @@ -1063,7 +1087,7 @@ _again: #line 1 "NONE" {ts = 0;} break; -#line 1067 "hb-ot-shaper-use-machine.hh" +#line 1091 "hb-ot-shaper-use-machine.hh" } if ( ++p != pe ) @@ -1079,7 +1103,7 @@ _again: } -#line 290 "hb-ot-shaper-use-machine.rl" +#line 291 "hb-ot-shaper-use-machine.rl" } diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.rl b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.rl index f5a2091a3..4460e35e6 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.rl +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-machine.rl @@ -177,6 +177,7 @@ main := |* numeral_cluster ZWNJ? => { found_syllable (use_numeral_cluster); }; symbol_cluster ZWNJ? => { found_syllable (use_symbol_cluster); }; hieroglyph_cluster ZWNJ? => { found_syllable (use_hieroglyph_cluster); }; + FMPst => { found_syllable (use_non_cluster); }; broken_cluster ZWNJ? => { found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }; other => { found_syllable (use_non_cluster); }; *|; diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag-table.hh b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag-table.hh index 66ba9f1b0..26eb34f5c 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag-table.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-tag-table.hh @@ -6,8 +6,8 @@ * * on files with these headers: * - * <meta name="updated_at" content="2024-07-07 12:57 AM" /> - * File-Date: 2024-06-14 + * <meta name="updated_at" content="2024-12-05 07:13 PM" /> + * File-Date: 2024-11-19 */ #ifndef HB_OT_TAG_TABLE_HH @@ -830,6 +830,7 @@ static const LangTag ot_languages3[] = { {HB_TAG('k','f','x',' '), HB_TAG('K','U','L',' ')}, /* Kullu Pahari -> Kulvi */ {HB_TAG('k','f','y',' '), HB_TAG('K','M','N',' ')}, /* Kumaoni */ {HB_TAG('k','g','e',' '), HB_TAG_NONE }, /* Komering != Khutsuri Georgian */ +/*{HB_TAG('k','g','f',' '), HB_TAG('K','G','F',' ')},*/ /* Kube */ {HB_TAG('k','h','a',' '), HB_TAG('K','S','I',' ')}, /* Khasi */ {HB_TAG('k','h','b',' '), HB_TAG('X','B','D',' ')}, /* Lü */ {HB_TAG('k','h','k',' '), HB_TAG('M','N','G',' ')}, /* Halh Mongolian -> Mongolian */ @@ -855,6 +856,7 @@ static const LangTag ot_languages3[] = { {HB_TAG('k','l','m',' '), HB_TAG_NONE }, /* Migum != Kalmyk */ {HB_TAG('k','l','n',' '), HB_TAG('K','A','L',' ')}, /* Kalenjin [macrolanguage] */ {HB_TAG('k','m','b',' '), HB_TAG('M','B','N',' ')}, /* Kimbundu -> Mbundu */ +/*{HB_TAG('k','m','g',' '), HB_TAG('K','M','G',' ')},*/ /* Kâte */ {HB_TAG('k','m','n',' '), HB_TAG_NONE }, /* Awtuw != Kumaoni */ {HB_TAG('k','m','o',' '), HB_TAG_NONE }, /* Kwoma != Komo */ {HB_TAG('k','m','r',' '), HB_TAG('K','U','R',' ')}, /* Northern Kurdish -> Kurdish */ @@ -898,6 +900,7 @@ static const LangTag ot_languages3[] = { {HB_TAG('k','s','i',' '), HB_TAG_NONE }, /* Krisa != Khasi */ {HB_TAG('k','s','m',' '), HB_TAG_NONE }, /* Kumba != Kildin Sami */ {HB_TAG('k','s','s',' '), HB_TAG('K','I','S',' ')}, /* Southern Kisi -> Kisii */ +/*{HB_TAG('k','s','u',' '), HB_TAG('K','S','U',' ')},*/ /* Khamyang */ {HB_TAG('k','s','w',' '), HB_TAG('K','S','W',' ')}, /* S’gaw Karen */ {HB_TAG('k','s','w',' '), HB_TAG('K','R','N',' ')}, /* S'gaw Karen -> Karen */ {HB_TAG('k','t','b',' '), HB_TAG('K','E','B',' ')}, /* Kambaata -> Kebena */ @@ -911,6 +914,7 @@ static const LangTag ot_languages3[] = { {HB_TAG('k','u','y',' '), HB_TAG_NONE }, /* Kuuku-Ya'u != Kuy */ {HB_TAG('k','v','b',' '), HB_TAG('M','L','Y',' ')}, /* Kubu -> Malay */ {HB_TAG('k','v','l',' '), HB_TAG('K','R','N',' ')}, /* Kayaw -> Karen */ + {HB_TAG('k','v','q',' '), HB_TAG('K','V','Q',' ')}, /* Geba Karen */ {HB_TAG('k','v','q',' '), HB_TAG('K','R','N',' ')}, /* Geba Karen -> Karen */ {HB_TAG('k','v','r',' '), HB_TAG('M','L','Y',' ')}, /* Kerinci -> Malay */ {HB_TAG('k','v','t',' '), HB_TAG('K','R','N',' ')}, /* Lahta Karen -> Karen */ @@ -1146,6 +1150,7 @@ static const LangTag ot_languages3[] = { {HB_TAG('n','o','d',' '), HB_TAG('N','T','A',' ')}, /* Northern Thai -> Northern Tai */ /*{HB_TAG('n','o','e',' '), HB_TAG('N','O','E',' ')},*/ /* Nimadi */ /*{HB_TAG('n','o','g',' '), HB_TAG('N','O','G',' ')},*/ /* Nogai */ +/*{HB_TAG('n','o','p',' '), HB_TAG('N','O','P',' ')},*/ /* Numanggang */ /*{HB_TAG('n','o','v',' '), HB_TAG('N','O','V',' ')},*/ /* Novial */ {HB_TAG('n','p','i',' '), HB_TAG('N','E','P',' ')}, /* Nepali */ {HB_TAG('n','p','l',' '), HB_TAG('N','A','H',' ')}, /* Southeastern Puebla Nahuatl -> Nahuatl */ @@ -1156,6 +1161,7 @@ static const LangTag ot_languages3[] = { {HB_TAG('n','s','u',' '), HB_TAG('N','A','H',' ')}, /* Sierra Negra Nahuatl -> Nahuatl */ {HB_TAG('n','t','o',' '), HB_TAG_NONE }, /* Ntomba != Esperanto */ {HB_TAG('n','u','e',' '), HB_TAG('B','A','D','0')}, /* Ngundu -> Banda */ +/*{HB_TAG('n','u','k',' '), HB_TAG('N','U','K',' ')},*/ /* Nuu-chah-nulth */ {HB_TAG('n','u','u',' '), HB_TAG('B','A','D','0')}, /* Ngbundu -> Banda */ {HB_TAG('n','u','z',' '), HB_TAG('N','A','H',' ')}, /* Tlamacazapa Nahuatl -> Nahuatl */ {HB_TAG('n','w','e',' '), HB_TAG('B','M','L',' ')}, /* Ngwe -> Bamileke */ @@ -1399,8 +1405,10 @@ static const LangTag ot_languages3[] = { {HB_TAG('s','i','z',' '), HB_TAG('B','B','R',' ')}, /* Siwi -> Berber */ /*{HB_TAG('s','j','a',' '), HB_TAG('S','J','A',' ')},*/ /* Epena */ {HB_TAG('s','j','d',' '), HB_TAG('K','S','M',' ')}, /* Kildin Sami */ +/*{HB_TAG('s','j','e',' '), HB_TAG('S','J','E',' ')},*/ /* Pite Sami */ {HB_TAG('s','j','o',' '), HB_TAG('S','I','B',' ')}, /* Xibe -> Sibe */ {HB_TAG('s','j','s',' '), HB_TAG('B','B','R',' ')}, /* Senhaja De Srair -> Berber */ +/*{HB_TAG('s','j','u',' '), HB_TAG('S','J','U',' ')},*/ /* Ume Sami */ {HB_TAG('s','k','g',' '), HB_TAG('M','L','G',' ')}, /* Sakalava Malagasy -> Malagasy */ {HB_TAG('s','k','r',' '), HB_TAG('S','R','K',' ')}, /* Saraiki */ {HB_TAG('s','k','s',' '), HB_TAG_NONE }, /* Maia != Skolt Sami */ @@ -1461,6 +1469,7 @@ static const LangTag ot_languages3[] = { {HB_TAG('t','a','q',' '), HB_TAG('B','B','R',' ')}, /* Tamasheq -> Berber */ {HB_TAG('t','a','s',' '), HB_TAG('C','P','P',' ')}, /* Tay Boi -> Creoles */ {HB_TAG('t','a','u',' '), HB_TAG('A','T','H',' ')}, /* Upper Tanana -> Athapaskan */ +/*{HB_TAG('t','b','v',' '), HB_TAG('T','B','V',' ')},*/ /* Tobo */ {HB_TAG('t','c','b',' '), HB_TAG('A','T','H',' ')}, /* Tanacross -> Athapaskan */ {HB_TAG('t','c','e',' '), HB_TAG('A','T','H',' ')}, /* Southern Tutchone -> Athapaskan */ {HB_TAG('t','c','h',' '), HB_TAG('C','P','P',' ')}, /* Turks And Caicos Creole English -> Creoles */ @@ -1623,7 +1632,7 @@ static const LangTag ot_languages3[] = { {HB_TAG('y','b','a',' '), HB_TAG_NONE }, /* Yala != Yoruba */ {HB_TAG('y','b','b',' '), HB_TAG('B','M','L',' ')}, /* Yemba -> Bamileke */ {HB_TAG('y','b','d',' '), HB_TAG('A','R','K',' ')}, /* Yangbye (retired code) -> Rakhine */ - {HB_TAG('y','c','r',' '), HB_TAG_NONE }, /* Yilan Creole != Y-Cree */ + {HB_TAG('y','c','r',' '), HB_TAG('C','P','P',' ')}, /* Yilan Creole -> Creoles */ {HB_TAG('y','d','d',' '), HB_TAG('J','I','I',' ')}, /* Eastern Yiddish -> Yiddish */ /*{HB_TAG('y','g','p',' '), HB_TAG('Y','G','P',' ')},*/ /* Gepo */ {HB_TAG('y','i','h',' '), HB_TAG('J','I','I',' ')}, /* Western Yiddish -> Yiddish */ diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-common.hh b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-common.hh index efbbfb25d..3ab58ae30 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-common.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-common.hh @@ -885,9 +885,9 @@ struct TupleVariationData * no need to do find_shared_points () again */ hb_vector_t<char> *shared_points_bytes = nullptr; - /* total compiled byte size as TupleVariationData format, initialized to its - * min_size: 4 */ - unsigned compiled_byte_size = 4; + /* total compiled byte size as TupleVariationData format, initialized to 0 */ + unsigned compiled_byte_size = 0; + bool needs_padding = false; /* for gvar iup delta optimization: whether this is a composite glyph */ bool is_composite = false; @@ -1219,12 +1219,21 @@ struct TupleVariationData bool compile_bytes (const hb_map_t& axes_index_map, const hb_map_t& axes_old_index_tag_map, bool use_shared_points, + bool is_gvar = false, const hb_hashmap_t<const hb_vector_t<char>*, unsigned>* shared_tuples_idx_map = nullptr) { + // return true for empty glyph + if (!tuple_vars) + return true; + // compile points set and store data in hashmap if (!compile_all_point_sets ()) return false; + /* total compiled byte size as TupleVariationData format, initialized to its + * min_size: 4 */ + compiled_byte_size += 4; + if (use_shared_points) { find_shared_points (); @@ -1253,6 +1262,13 @@ struct TupleVariationData return false; compiled_byte_size += tuple.compiled_tuple_header.length + points_data_length + tuple.compiled_deltas.length; } + + if (is_gvar && (compiled_byte_size % 2)) + { + needs_padding = true; + compiled_byte_size += 1; + } + return true; } @@ -1295,7 +1311,7 @@ struct TupleVariationData } /* padding for gvar */ - if (is_gvar && (compiled_byte_size % 2)) + if (is_gvar && needs_padding) { HBUINT8 pad; pad = 0; diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh index b021a00f6..96cc2e887 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh @@ -140,6 +140,7 @@ struct glyph_variations_t for (tuple_variations_t& vars: glyph_variations) if (!vars.compile_bytes (axes_index_map, axes_old_index_tag_map, true, /* use shared points*/ + true, &shared_tuples_idx_map)) return false; diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-paint.h b/source/libs/harfbuzz/harfbuzz-src/src/hb-paint.h index b0cd384e2..d8896a523 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-paint.h +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-paint.h @@ -146,7 +146,7 @@ typedef void (*hb_paint_pop_transform_func_t) (hb_paint_funcs_t *funcs, * * A virtual method for the #hb_paint_funcs_t to render a color glyph by glyph index. * - * Return value: %true if the glyph was painted, %false otherwise. + * Return value: `true` if the glyph was painted, `false` otherwise. * * Since: 8.2.0 */ diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-sanitize.hh b/source/libs/harfbuzz/harfbuzz-src/src/hb-sanitize.hh index 408649c76..199165a1e 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-sanitize.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-sanitize.hh @@ -72,8 +72,8 @@ * * === The sanitize() contract === * - * The sanitize() method of each object type shall return true if it's safe to - * call other methods of the object, and %false otherwise. + * The sanitize() method of each object type shall return `true` if it's safe to + * call other methods of the object, and `false` otherwise. * * Note that what sanitize() checks for might align with what the specification * describes as valid table data, but does not have to be. In particular, we diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-serialize.hh b/source/libs/harfbuzz/harfbuzz-src/src/hb-serialize.hh index e988451eb..f066d0e31 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-serialize.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-serialize.hh @@ -36,9 +36,7 @@ #include "hb-map.hh" #include "hb-pool.hh" -#ifdef HB_EXPERIMENTAL_API -#include "hb-subset-repacker.h" -#endif +#include "hb-subset-serialize.h" /* * Serialize @@ -75,8 +73,7 @@ struct hb_serialize_context_t object_t () = default; -#ifdef HB_EXPERIMENTAL_API - object_t (const hb_object_t &o) + object_t (const hb_subset_serialize_object_t &o) { head = o.head; tail = o.tail; @@ -89,7 +86,6 @@ struct hb_serialize_context_t for (unsigned i = 0; i < o.num_virtual_links; i++) virtual_links.push (o.virtual_links[i]); } -#endif bool add_virtual_link (objidx_t objidx) { @@ -148,8 +144,7 @@ struct hb_serialize_context_t link_t () = default; -#ifdef HB_EXPERIMENTAL_API - link_t (const hb_link_t &o) + link_t (const hb_subset_serialize_link_t &o) { width = o.width; is_signed = 0; @@ -158,7 +153,6 @@ struct hb_serialize_context_t bias = 0; objidx = o.objidx; } -#endif HB_INTERNAL static int cmp (const void* a, const void* b) { @@ -400,6 +394,7 @@ struct hb_serialize_context_t { merge_virtual_links (obj, objidx); obj->fini (); + object_pool.release (obj); return objidx; } } @@ -463,9 +458,11 @@ struct hb_serialize_context_t while (packed.length > 1 && packed.tail ()->head < tail) { - packed_map.del (packed.tail ()); - assert (!packed.tail ()->next); - packed.tail ()->fini (); + object_t *obj = packed.tail (); + packed_map.del (obj); + assert (!obj->next); + obj->fini (); + object_pool.release (obj); packed.pop (); } if (packed.length > 1) diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.h b/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.h index d4d4fdfd2..b09bf0587 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.h +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.h @@ -53,6 +53,7 @@ hb_shape_full (hb_font_t *font, unsigned int num_features, const char * const *shaper_list); +#ifdef HB_EXPERIMENTAL_API HB_EXTERN hb_bool_t hb_shape_justify (hb_font_t *font, hb_buffer_t *buffer, @@ -64,6 +65,7 @@ hb_shape_justify (hb_font_t *font, float *advance, /* IN/OUT */ hb_tag_t *var_tag, /* OUT */ float *var_value /* OUT */); +#endif HB_EXTERN const char ** hb_shape_list_shapers (void); diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.cc b/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.cc index b874949df..2f0b54f47 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.cc +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-input.cc @@ -534,7 +534,6 @@ hb_subset_input_pin_axis_location (hb_subset_input_t *input, * * Note: input min value can not be bigger than input max value. If the input * default value is not within the new min/max range, it'll be clamped. - * Note: currently it supports gvar and cvar tables only. * * Return value: `true` if success, `false` otherwise * @@ -597,6 +596,144 @@ hb_subset_input_get_axis_range (hb_subset_input_t *input, *axis_max_value = triple->maximum; return true; } + +/** + * hb_subset_axis_range_from_string: + * @str: a string to parse + * @len: length of @str, or -1 if str is NULL terminated + * @axis_min_value: (out): the axis min value to initialize with the parsed value + * @axis_max_value: (out): the axis max value to initialize with the parsed value + * @axis_def_value: (out): the axis default value to initialize with the parse + * value + * + * Parses a string into a subset axis range(min, def, max). + * Axis positions string is in the format of min:def:max or min:max + * When parsing axis positions, empty values as meaning the existing value for that part + * E.g: :300:500 + * Specifies min = existing, def = 300, max = 500 + * In the output axis_range, if a value should be set to it's default value, + * then it will be set to NaN + * + * Return value: + * `true` if @str is successfully parsed, `false` otherwise + * + * Since: 10.2.0 + */ +HB_EXTERN hb_bool_t +hb_subset_axis_range_from_string (const char *str, int len, + float *axis_min_value, + float *axis_max_value, + float *axis_def_value) +{ + if (len < 0) + len = strlen (str); + + const char *end = str + len; + const char* part = strpbrk (str, ":"); + if (!part) + { + // Single value. + if (strcmp (str, "drop") == 0) + { + *axis_min_value = NAN; + *axis_def_value = NAN; + *axis_max_value = NAN; + return true; + } + + double v; + if (!hb_parse_double (&str, end, &v)) return false; + + *axis_min_value = v; + *axis_def_value = v; + *axis_max_value = v; + return true; + } + + float values[3]; + int count = 0; + for (int i = 0; i < 3; i++) { + count++; + if (!*str || part == str) + { + values[i] = NAN; + + if (part == NULL) break; + str = part + 1; + part = strpbrk (str, ":"); + continue; + } + + double v; + if (!hb_parse_double (&str, part, &v)) return false; + values[i] = v; + + if (part == NULL) break; + str = part + 1; + part = strpbrk (str, ":"); + } + + if (count == 2) + { + *axis_min_value = values[0]; + *axis_def_value = NAN; + *axis_max_value = values[1]; + return true; + } + else if (count == 3) + { + *axis_min_value = values[0]; + *axis_def_value = values[1]; + *axis_max_value = values[2]; + return true; + } + return false; +} + +/** + * hb_subset_axis_range_to_string: + * @input: a #hb_subset_input_t object. + * @axis_tag: an axis to convert + * @buf: (array length=size) (out caller-allocates): output string + * @size: the allocated size of @buf + * + * Converts an axis range into a `NULL`-terminated string in the format + * understood by hb_subset_axis_range_from_string(). The client in responsible for + * allocating big enough size for @buf, 128 bytes is more than enough. + * + * Since: 10.2.0 + */ +HB_EXTERN void +hb_subset_axis_range_to_string (hb_subset_input_t *input, + hb_tag_t axis_tag, + char *buf, unsigned size) +{ + if (unlikely (!size)) return; + Triple* triple; + if (!input->axes_location.has(axis_tag, &triple)) { + return; + } + + char s[128]; + unsigned len = 0; + + hb_locale_t clocale HB_UNUSED; + hb_locale_t oldlocale HB_UNUSED; + oldlocale = hb_uselocale (clocale = newlocale (LC_ALL_MASK, "C", NULL)); + len += hb_max (0, snprintf (s, ARRAY_LENGTH (s) - len, "%g", (double) triple->minimum)); + s[len++] = ':'; + + len += hb_max (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%g", (double) triple->middle)); + s[len++] = ':'; + + len += hb_max (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%g", (double) triple->maximum)); + (void) hb_uselocale (((void) freelocale (clocale), oldlocale)); + + assert (len < ARRAY_LENGTH (s)); + len = hb_min (len, size - 1); + hb_memcpy (buf, s, len); + buf[len] = '\0'; +} #endif /** diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc b/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc index 59020dbe8..c88fd75a5 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.cc @@ -678,7 +678,8 @@ _populate_unicodes_to_retain (const hb_set_t *unicodes, hb_subset_plan_t *plan) { OT::cmap::accelerator_t cmap (plan->source); - unsigned size_threshold = plan->source->get_num_glyphs (); + unsigned size_threshold = plan->source->get_num_glyphs (); + if (glyphs->is_empty () && unicodes->get_population () < size_threshold) { @@ -797,6 +798,21 @@ _populate_unicodes_to_retain (const hb_set_t *unicodes, plan->unicodes.add_sorted_array (&arr.arrayZ->first, arr.length, sizeof (*arr.arrayZ)); plan->_glyphset_gsub.add_array (&arr.arrayZ->second, arr.length, sizeof (*arr.arrayZ)); } + + // Variation selectors don't have glyphs associated with them in the cmap so they will have been filtered out above + // but should still be retained. Add them back here. + + // However, the min and max codepoints for OS/2 should be calculated without considering variation selectors, + // so record those first. + plan->os2_info.min_cmap_codepoint = plan->unicodes.get_min(); + plan->os2_info.max_cmap_codepoint = plan->unicodes.get_max(); + + hb_set_t variation_selectors_to_retain; + cmap.collect_variation_selectors(&variation_selectors_to_retain); + + variation_selectors_to_retain.iter() + | hb_filter(unicodes) + | hb_sink(&plan->unicodes) + ; } static unsigned diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.hh b/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.hh index 19a9fa691..fe80c08bc 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-plan.hh @@ -41,6 +41,13 @@ namespace OT { struct Feature; } +struct os2_info_t { + hb_codepoint_t min_cmap_codepoint; + hb_codepoint_t max_cmap_codepoint; +}; + +typedef struct os2_info_t os2_info_t; + struct head_maxp_info_t { head_maxp_info_t () @@ -180,6 +187,8 @@ struct hb_subset_plan_t //recalculated head/maxp table info after instancing mutable head_maxp_info_t head_maxp_info; + os2_info_t os2_info; + const hb_subset_accelerator_t* accelerator; hb_subset_accelerator_t* inprogress_accelerator; diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-repacker.h b/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-repacker.h deleted file mode 100644 index 245cf6076..000000000 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-repacker.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright © 2022 Google, Inc. - * - * This is part of HarfBuzz, a text shaping library. - * - * Permission is hereby granted, without written agreement and without - * license or royalty fees, to use, copy, modify, and distribute this - * software and its documentation for any purpose, provided that the - * above copyright notice and the following two paragraphs appear in - * all copies of this software. - * - * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR - * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES - * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN - * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS - * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO - * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. - * - */ - -#ifndef HB_SUBSET_REPACKER_H -#define HB_SUBSET_REPACKER_H - -#include "hb.h" - -HB_BEGIN_DECLS - -#ifdef HB_EXPERIMENTAL_API -/* - * struct hb_link_t - * width: offsetSize in bytes - * position: position of the offset field in bytes - * from beginning of subtable - * objidx: index of subtable - */ -struct hb_link_t -{ - unsigned width; - unsigned position; - unsigned objidx; -}; - -typedef struct hb_link_t hb_link_t; - -/* - * struct hb_object_t - * head: start of object data - * tail: end of object data - * num_real_links: num of offset field in the object - * real_links: pointer to array of offset info - * num_virtual_links: num of objects that must be packed - * after current object in the final serialized order - * virtual_links: array of virtual link info - */ -struct hb_object_t -{ - char *head; - char *tail; - unsigned num_real_links; - hb_link_t *real_links; - unsigned num_virtual_links; - hb_link_t *virtual_links; -}; - -typedef struct hb_object_t hb_object_t; - -HB_EXTERN hb_blob_t* -hb_subset_repack_or_fail (hb_tag_t table_tag, - hb_object_t* hb_objects, - unsigned num_hb_objs); - -#endif - -HB_END_DECLS - -#endif /* HB_SUBSET_REPACKER_H */ diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-repacker.cc b/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-serialize.cc similarity index 68% rename from source/libs/harfbuzz/harfbuzz-src/src/hb-subset-repacker.cc rename to source/libs/harfbuzz/harfbuzz-src/src/hb-subset-serialize.cc index 6a29b35be..dc7613654 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-repacker.cc +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-serialize.cc @@ -22,37 +22,36 @@ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * */ -#include "hb-repacker.hh" -#ifdef HB_EXPERIMENTAL_API +#include "hb.hh" + +#include "hb-subset-serialize.h" +#include "hb-repacker.hh" /** - * hb_subset_repack_or_fail: + * hb_subset_serialize_or_fail: * @table_tag: tag of the table being packed, needed to allow table specific optimizations. - * @hb_objects: raw array of struct hb_object_t, which provides + * @hb_objects: raw array of struct hb_subset_serialize_object_t, which provides * object graph info - * @num_hb_objs: number of hb_object_t in the hb_objects array. + * @num_hb_objs: number of hb_subset_serialize_object_t in the hb_objects array. * - * Given the input object graph info, repack a table to eliminate - * offset overflows. A nullptr is returned if the repacking attempt fails. + * Given the input object graph info, repack a table to eliminate offset overflows and + * serialize it into a continuous array of bytes. A nullptr is returned if the serializing attempt fails. * Table specific optimizations (eg. extension promotion in GSUB/GPOS) may be performed. * Passing HB_TAG_NONE will disable table specific optimizations. * - * XSince: EXPERIMENTAL + * Since: 10.2.0 **/ -hb_blob_t* hb_subset_repack_or_fail (hb_tag_t table_tag, - hb_object_t* hb_objects, - unsigned num_hb_objs) +HB_EXTERN hb_blob_t * +hb_subset_serialize_or_fail (hb_tag_t table_tag, + hb_subset_serialize_object_t *hb_objects, + unsigned num_hb_objs) { - hb_vector_t<const hb_object_t *> packed; + hb_vector_t<const hb_subset_serialize_object_t *> packed; packed.alloc (num_hb_objs + 1); packed.push (nullptr); for (unsigned i = 0 ; i < num_hb_objs ; i++) packed.push (&(hb_objects[i])); - return hb_resolve_overflows (packed, - table_tag, - 20, - true); + return hb_resolve_overflows (packed, table_tag, 20, true); } -#endif diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-serialize.h b/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-serialize.h new file mode 100644 index 000000000..9035d4ced --- /dev/null +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-serialize.h @@ -0,0 +1,83 @@ +/* + * Copyright © 2022 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + */ + +#ifndef HB_SUBSET_SERIALIZE_H +#define HB_SUBSET_SERIALIZE_H + +#include "hb.h" + +HB_BEGIN_DECLS + +/** + * hb_subset_serialize_link_t: + * @width: offsetSize in bytes + * @position: position of the offset field in bytes from + * beginning of subtable + * @objidx: index of subtable + * + * Represents a link between two objects in the object graph + * to be serialized. + * + * Since: 10.2.0 + */ +typedef struct hb_subset_serialize_link_t { + unsigned int width; + unsigned int position; + unsigned int objidx; +} hb_subset_serialize_link_t; + +/** + * hb_subset_serialize_object_t: + * @head: start of object data + * @tail: end of object data + * @num_real_links: number of offset field in the object + * @real_links: array of offset info + * @num_virtual_links: number of objects that must be packed + * after current object in the final + * serialized order + * @virtual_links: array of virtual link info + * + * Represents an object in the object graph to be serialized. + * + * Since: 10.2.0 + */ +typedef struct hb_subset_serialize_object_t { + char *head; + char *tail; + unsigned int num_real_links; + hb_subset_serialize_link_t *real_links; + unsigned int num_virtual_links; + hb_subset_serialize_link_t *virtual_links; +} hb_subset_serialize_object_t; + +HB_EXTERN hb_blob_t * +hb_subset_serialize_or_fail (hb_tag_t table_tag, + hb_subset_serialize_object_t *hb_objects, + unsigned num_hb_objs); + + +HB_END_DECLS + +#endif /* HB_SUBSET_SERIALIZE_H */ diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc b/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc index 7cea9f183..4e96c9853 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc @@ -295,7 +295,7 @@ _try_subset (const TableType *table, DEBUG_MSG (SUBSET, nullptr, "OT::%c%c%c%c ran out of room; reallocating to %u bytes.", HB_UNTAG (c->table_tag), buf_size); - if (unlikely (buf_size > c->source_blob->length * 16 || + if (unlikely (buf_size > c->source_blob->length * 256 || !buf->alloc (buf_size, true))) { DEBUG_MSG (SUBSET, nullptr, "OT::%c%c%c%c failed to reallocate %u bytes.", diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.h b/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.h index 365c21a63..71276c7a6 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.h +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.h @@ -203,6 +203,18 @@ hb_subset_input_set_axis_range (hb_subset_input_t *input, float axis_max_value, float axis_def_value); +HB_EXTERN hb_bool_t +hb_subset_axis_range_from_string (const char *str, int len, + float *axis_min_value, + float *axis_max_value, + float *axis_def_value); + +HB_EXTERN void +hb_subset_axis_range_to_string (hb_subset_input_t *input, + hb_tag_t axis_tag, + char *buf, + unsigned size); + #ifdef HB_EXPERIMENTAL_API HB_EXTERN hb_bool_t hb_subset_input_override_name_table (hb_subset_input_t *input, diff --git a/source/libs/harfbuzz/harfbuzz-src/src/hb-utf.hh b/source/libs/harfbuzz/harfbuzz-src/src/hb-utf.hh index 1120bd1cc..6db9bf2fd 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/hb-utf.hh +++ b/source/libs/harfbuzz/harfbuzz-src/src/hb-utf.hh @@ -458,19 +458,21 @@ struct hb_ascii_t template <typename utf_t> static inline const typename utf_t::codepoint_t * hb_utf_offset_to_pointer (const typename utf_t::codepoint_t *start, + const typename utf_t::codepoint_t *text, + unsigned text_len, signed offset) { hb_codepoint_t unicode; while (offset-- > 0) start = utf_t::next (start, - start + utf_t::max_len, + text + text_len, &unicode, HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT); while (offset++ < 0) start = utf_t::prev (start, - start - utf_t::max_len, + text, &unicode, HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT); diff --git a/source/libs/harfbuzz/harfbuzz-src/src/meson.build b/source/libs/harfbuzz/harfbuzz-src/src/meson.build index 5ca15d90e..b9daabf01 100644 --- a/source/libs/harfbuzz/harfbuzz-src/src/meson.build +++ b/source/libs/harfbuzz/harfbuzz-src/src/meson.build @@ -383,7 +383,7 @@ hb_subset_sources = files( 'hb-subset-plan.cc', 'hb-subset-plan.hh', 'hb-subset-plan-member-list.hh', - 'hb-subset-repacker.cc', + 'hb-subset-serialize.cc', 'graph/gsubgpos-context.cc', 'graph/gsubgpos-context.hh', 'graph/gsubgpos-graph.hh', @@ -398,7 +398,7 @@ hb_subset_sources = files( hb_subset_headers = files( 'hb-subset.h', - 'hb-subset-repacker.h' + 'hb-subset-serialize.h' ) hb_gobject_sources = files( @@ -875,6 +875,7 @@ endmacro() cmake_config.set('PACKAGE_CMAKE_INSTALL_INCLUDEDIR', '${PACKAGE_PREFIX_DIR}/@0@'.format(cmake_install_includedir)) cmake_config.set('PACKAGE_CMAKE_INSTALL_LIBDIR', '${PACKAGE_PREFIX_DIR}/@0@'.format(cmake_install_libdir)) cmake_config.set('PACKAGE_INCLUDE_INSTALL_DIR', '${PACKAGE_PREFIX_DIR}/@0@/@1@'.format(cmake_install_includedir, meson.project_name())) +cmake_config.set('HARFBUZZ_VERSION', meson.project_version()) cmake_config.set('HB_HAVE_GOBJECT', have_gobject ? 'YES' : 'NO') cmake_config.set('HB_LIBRARY_TYPE', get_option('default_library') == 'static' ? 'STATIC' : 'SHARED') diff --git a/source/libs/harfbuzz/include/Makefile.am b/source/libs/harfbuzz/include/Makefile.am index 38f8fe51d..c208f1627 100644 --- a/source/libs/harfbuzz/include/Makefile.am +++ b/source/libs/harfbuzz/include/Makefile.am @@ -1,4 +1,4 @@ -## $Id: Makefile.am 65798 2023-02-12 04:02:23Z kakuto $ +## $Id: Makefile.am 73427 2025-01-11 23:22:13Z kakuto $ ## Proxy Makefile.am to install harfbuzz headers for TeX Live. ## ## Copyright 2015-2016 Karl Berry <tex-live@tug.org> @@ -30,7 +30,7 @@ hdr_links = \ $(HARFBUZZ_SRC)/hb-shape.h \ $(HARFBUZZ_SRC)/hb-shape-plan.h \ $(HARFBUZZ_SRC)/hb-style.h \ - $(HARFBUZZ_SRC)/hb-subset-repacker.h \ + $(HARFBUZZ_SRC)/hb-subset-serialize.h \ $(HARFBUZZ_SRC)/hb-unicode.h \ $(HARFBUZZ_BLD)/hb-version.h diff --git a/source/libs/harfbuzz/include/Makefile.in b/source/libs/harfbuzz/include/Makefile.in index f0754f26e..e6cf30dfe 100644 --- a/source/libs/harfbuzz/include/Makefile.in +++ b/source/libs/harfbuzz/include/Makefile.in @@ -259,7 +259,7 @@ hdr_links = $(HARFBUZZ_SRC)/hb.h $(HARFBUZZ_SRC)/hb-aat-layout.h \ $(HARFBUZZ_SRC)/hb-paint.h $(HARFBUZZ_SRC)/hb-set.h \ $(HARFBUZZ_SRC)/hb-shape.h $(HARFBUZZ_SRC)/hb-shape-plan.h \ $(HARFBUZZ_SRC)/hb-style.h \ - $(HARFBUZZ_SRC)/hb-subset-repacker.h \ + $(HARFBUZZ_SRC)/hb-subset-serialize.h \ $(HARFBUZZ_SRC)/hb-unicode.h $(HARFBUZZ_BLD)/hb-version.h \ $(HARFBUZZ_SRC)/hb-ot.h $(HARFBUZZ_SRC)/hb-ot-color.h \ $(HARFBUZZ_SRC)/hb-ot-font.h $(HARFBUZZ_SRC)/hb-ot-layout.h \ diff --git a/source/libs/harfbuzz/version.ac b/source/libs/harfbuzz/version.ac index c5bfc25d7..27b278353 100644 --- a/source/libs/harfbuzz/version.ac +++ b/source/libs/harfbuzz/version.ac @@ -8,4 +8,4 @@ dnl dnl -------------------------------------------------------- dnl dnl m4-include this file to define the current harfbuzz version -m4_define([harfbuzz_version], [10.1.0]) +m4_define([harfbuzz_version], [10.2.0]) diff --git a/source/libs/libpng/README b/source/libs/libpng/README index 515904aea..1629b291b 100644 --- a/source/libs/libpng/README +++ b/source/libs/libpng/README @@ -1,4 +1,4 @@ - Building libpng-1.6.44 as part of the TL tree + Building libpng-1.6.45 as part of the TL tree ============================================= This directory libs/libpng/ uses a proxy Makefile.am to build the libpng library @@ -14,4 +14,4 @@ copied to libs/libpng/configure.ac. ============================= 2009-07-23 Peter Breitenlohner <peb@mppmu.mpg.de> -2024-09-13 Akira Kakuto <kakuto@jcom.zaq.ne.jp> +2025-01-08 Akira Kakuto <kakuto@jcom.zaq.ne.jp> diff --git a/source/libs/libpng/TLpatches/ChangeLog b/source/libs/libpng/TLpatches/ChangeLog index 19136b0aa..6229a47b2 100644 --- a/source/libs/libpng/TLpatches/ChangeLog +++ b/source/libs/libpng/TLpatches/ChangeLog @@ -1,3 +1,7 @@ +2025-01-08 Akira Kakuto <kakuto@jcom.zaq.ne.jp> + + Import libpng-1.6.45. + 2024-09-13 Akira Kakuto <kakuto@jcom.zaq.ne.jp> Import libpng-1.6.44. diff --git a/source/libs/libpng/TLpatches/TL-Changes b/source/libs/libpng/TLpatches/TL-Changes index 20db4d347..887231a11 100644 --- a/source/libs/libpng/TLpatches/TL-Changes +++ b/source/libs/libpng/TLpatches/TL-Changes @@ -1,5 +1,5 @@ -Changes applied to the libpng-1.6.44/ tree as obtained from: - https://sourceforge.net/projects/libpng/files/libpng16/1.6.44/ +Changes applied to the libpng-1.6.45/ tree as obtained from: + https://sourceforge.net/projects/libpng/files/libpng16/1.6.45/ Copied: scripts/pnglibconf.h.prebuilt -> pnglibconf.h @@ -7,7 +7,9 @@ Copied: Removed: .github (dir) .appveyor.yml + .cmake-format.yaml .editorconfig + .editorconfig-checker.json .gitignore .travis.yml .yamllint.yml diff --git a/source/libs/libpng/configure b/source/libs/libpng/configure index fc988d5d8..9c540bd52 100755 --- a/source/libs/libpng/configure +++ b/source/libs/libpng/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for libpng (TeX Live) 1.6.44. +# Generated by GNU Autoconf 2.72 for libpng (TeX Live) 1.6.45. # # Report bugs to <tex-k@tug.org>. # @@ -604,8 +604,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='libpng (TeX Live)' PACKAGE_TARNAME='libpng--tex-live-' -PACKAGE_VERSION='1.6.44' -PACKAGE_STRING='libpng (TeX Live) 1.6.44' +PACKAGE_VERSION='1.6.45' +PACKAGE_STRING='libpng (TeX Live) 1.6.45' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1342,7 +1342,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures libpng (TeX Live) 1.6.44 to adapt to many kinds of systems. +'configure' configures libpng (TeX Live) 1.6.45 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1414,7 +1414,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libpng (TeX Live) 1.6.44:";; + short | recursive ) echo "Configuration of libpng (TeX Live) 1.6.45:";; esac cat <<\_ACEOF @@ -1534,7 +1534,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libpng (TeX Live) configure 1.6.44 +libpng (TeX Live) configure 1.6.45 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. @@ -1861,7 +1861,7 @@ 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 libpng (TeX Live) $as_me 1.6.44, which was +It was created by libpng (TeX Live) $as_me 1.6.45, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -4822,7 +4822,7 @@ fi # Define the identity of the package. PACKAGE='libpng--tex-live-' - VERSION='1.6.44' + VERSION='1.6.45' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -7996,7 +7996,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libpng (TeX Live) $as_me 1.6.44, which was +This file was extended by libpng (TeX Live) $as_me 1.6.45, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -8064,7 +8064,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -libpng (TeX Live) config.status 1.6.44 +libpng (TeX Live) config.status 1.6.45 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" diff --git a/source/libs/libpng/libpng-src/ANNOUNCE b/source/libs/libpng/libpng-src/ANNOUNCE index a2a7ac363..719b23abc 100644 --- a/source/libs/libpng/libpng-src/ANNOUNCE +++ b/source/libs/libpng/libpng-src/ANNOUNCE @@ -1,5 +1,5 @@ -libpng 1.6.44 - September 12, 2024 -================================== +libpng 1.6.45 - January 7, 2025 +=============================== This is a public release of libpng, intended for use in production code. @@ -9,13 +9,13 @@ Files available for download Source files with LF line endings (for Unix/Linux): - * libpng-1.6.44.tar.xz (LZMA-compressed, recommended) - * libpng-1.6.44.tar.gz (deflate-compressed) + * libpng-1.6.45.tar.xz (LZMA-compressed, recommended) + * libpng-1.6.45.tar.gz (deflate-compressed) Source files with CRLF line endings (for Windows): - * lpng1644.7z (LZMA-compressed, recommended) - * lpng1644.zip (deflate-compressed) + * lpng1645.7z (LZMA-compressed, recommended) + * lpng1645.zip (deflate-compressed) Other information: @@ -25,29 +25,18 @@ Other information: * TRADEMARK.md -Changes from version 1.6.43 to version 1.6.44 +Changes from version 1.6.44 to version 1.6.45 --------------------------------------------- - * Hardened calculations in chroma handling to prevent overflows, and - relaxed a constraint in cHRM validation to accomodate the standard - ACES AP1 set of color primaries. + * Added support for the cICP chunk. + (Contributed by Lucas Chollet and John Bowler) + * Adjusted and improved various checks in colorspace calculations. (Contributed by John Bowler) - * Removed the ASM implementation of ARM Neon optimizations and updated - the build accordingly. Only the remaining C implementation shall be - used from now on, thus ensuring the support of the PAC/BTI security - features on ARM64. - (Contributed by Ross Burton and John Bowler) - * Fixed the pickup of the PNG_HARDWARE_OPTIMIZATIONS option in the - CMake build on FreeBSD/amd64. This is an important performance fix - on this platform. - * Applied various fixes and improvements to the CMake build. - (Contributed by Eric Riff, Benjamin Buch and Erik Scholz) - * Added fuzzing targets for the simplified read API. - (Contributed by Mikhail Khachayants) - * Fixed a build error involving pngtest.c under a custom config. - This was a regression introduced in a code cleanup in libpng-1.6.43. - (Contributed by Ben Wagner) - * Fixed and improved the config files for AppVeyor CI and Travis CI. + * Rearranged the write order of colorspace chunks for better conformance + with the PNG v3 draft specification. + (Contributed by John Bowler) + * Raised the minimum required CMake version from 3.6 to 3.14. + * Forked off a development branch for libpng version 1.8. Send comments/corrections/commendations to png-mng-implement at lists.sf.net. diff --git a/source/libs/libpng/libpng-src/AUTHORS b/source/libs/libpng/libpng-src/AUTHORS index 544341694..f30a4ee19 100644 --- a/source/libs/libpng/libpng-src/AUTHORS +++ b/source/libs/libpng/libpng-src/AUTHORS @@ -17,6 +17,7 @@ Authors, for copyright and licensing purposes. * James Yu * John Bowler * Kevin Bracey + * Lucas Chollet * Magnus Holmgren * Mandar Sahastrabuddhe * Mans Rullgard diff --git a/source/libs/libpng/libpng-src/CHANGES b/source/libs/libpng/libpng-src/CHANGES index 724ccca2d..3f37f3f39 100644 --- a/source/libs/libpng/libpng-src/CHANGES +++ b/source/libs/libpng/libpng-src/CHANGES @@ -6218,6 +6218,17 @@ Version 1.6.44 [September 12, 2024] (Contributed by Ben Wagner) Fixed and improved the config files for AppVeyor CI and Travis CI. +Version 1.6.45 [January 7, 2025] + Added support for the cICP chunk. + (Contributed by Lucas Chollet and John Bowler) + Adjusted and improved various checks in colorspace calculations. + (Contributed by John Bowler) + Rearranged the write order of colorspace chunks for better conformance + with the PNG v3 draft specification. + (Contributed by John Bowler) + Raised the minimum required CMake version from 3.6 to 3.14. + Forked off a development branch for libpng version 1.8. + Send comments/corrections/commendations to png-mng-implement at lists.sf.net. Subscription is required; visit https://lists.sourceforge.net/lists/listinfo/png-mng-implement diff --git a/source/libs/libpng/libpng-src/CMakeLists.txt b/source/libs/libpng/libpng-src/CMakeLists.txt index 16cc2617d..f10f48907 100644 --- a/source/libs/libpng/libpng-src/CMakeLists.txt +++ b/source/libs/libpng/libpng-src/CMakeLists.txt @@ -1,9 +1,8 @@ - # CMakeLists.txt - CMake lists for libpng # -# Copyright (c) 2018-2024 Cosmin Truta. -# Copyright (c) 2007-2018 Glenn Randers-Pehrson. -# Originally written by Christian Ehrlicher, 2007. +# Copyright (c) 2018-2025 Cosmin Truta +# Copyright (c) 2007-2018 Glenn Randers-Pehrson +# Originally written by Christian Ehrlicher, 2007 # # Use, modification and distribution are subject to # the same licensing terms and conditions as libpng. @@ -15,11 +14,11 @@ # # SPDX-License-Identifier: libpng-2.0 -cmake_minimum_required(VERSION 3.6) +cmake_minimum_required(VERSION 3.14) set(PNGLIB_MAJOR 1) set(PNGLIB_MINOR 6) -set(PNGLIB_REVISION 44) +set(PNGLIB_REVISION 45) set(PNGLIB_SUBREVISION 0) #set(PNGLIB_SUBREVISION "git") set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_REVISION}) @@ -30,11 +29,6 @@ project(libpng VERSION ${PNGLIB_VERSION} LANGUAGES C ASM) -if(POLICY CMP0074) - # Allow find_package() to use the ZLIB_ROOT variable, if available. - cmake_policy(SET CMP0074 NEW) -endif() - include(CheckCSourceCompiles) include(GNUInstallDirs) @@ -69,7 +63,7 @@ option(PNG_TESTS "Build the libpng tests" ON) # Same as above, but for the third-party tools. # Although these tools are targetted at development environments only, # the users are allowed to override the option to build by default. -if (ANDROID OR IOS) +if(ANDROID OR IOS) option(PNG_TOOLS "Build the libpng tools" OFF) else() option(PNG_TOOLS "Build the libpng tools" ON) @@ -98,7 +92,7 @@ option(PNG_HARDWARE_OPTIMIZATIONS "Enable hardware optimizations" ON) # to check CMAKE_OSX_ARCHITECTURES to identify which hardware-specific flags to # enable. Note that this will fail if you attempt to build a universal binary # in a single CMake invocation. -if (APPLE AND CMAKE_OSX_ARCHITECTURES) +if(APPLE AND CMAKE_OSX_ARCHITECTURES) string(TOLOWER "${CMAKE_OSX_ARCHITECTURES}" PNG_TARGET_ARCHITECTURE) else() string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" PNG_TARGET_ARCHITECTURE) @@ -106,24 +100,25 @@ endif() message(STATUS "Building for target architecture: ${PNG_TARGET_ARCHITECTURE}") # Allow the users to specify a custom location of zlib. -# This option is deprecated, and no longer needed with CMake 3.12 and newer. -# Under the CMake policy CMP0074, if zlib is being built alongside libpng as a -# subproject, its location can be passed on to CMake via the ZLIB_ROOT variable. -option(PNG_BUILD_ZLIB "Custom zlib location, else find_package is used" OFF) -if(NOT PNG_BUILD_ZLIB) - find_package(ZLIB REQUIRED) -elseif(POLICY CMP0074) +# With CMake 3.12 and newer, this option is no longer necessary. +option(PNG_BUILD_ZLIB "[Deprecated; please use ZLIB_ROOT]" OFF) +if(PNG_BUILD_ZLIB) if("x${ZLIB_ROOT}" STREQUAL "x") - message(DEPRECATION - "The option PNG_BUILD_ZLIB has been deprecated; please use ZLIB_ROOT instead") + message(SEND_ERROR + "The option PNG_BUILD_ZLIB=${PNG_BUILD_ZLIB} is no longer supported; " + "please use ZLIB_ROOT instead") else() message(SEND_ERROR - "The option PNG_BUILD_ZLIB=${PNG_BUILD_ZLIB} and " - "the variable ZLIB_ROOT=\"${ZLIB_ROOT}\" are mutually exclusive") + "The option PNG_BUILD_ZLIB=${PNG_BUILD_ZLIB} is no longer supported; " + "using ZLIB_ROOT=\"${ZLIB_ROOT}\"") endif() endif() -if(UNIX AND NOT APPLE AND NOT BEOS AND NOT HAIKU AND NOT EMSCRIPTEN) +find_package(ZLIB REQUIRED) + +if(UNIX + AND NOT (APPLE OR BEOS OR HAIKU) + AND NOT EMSCRIPTEN) find_library(M_LIBRARY m) if(M_LIBRARY) set(M_LIBRARY m) @@ -136,188 +131,188 @@ endif() if(PNG_HARDWARE_OPTIMIZATIONS) -# Set definitions and sources for ARM. -if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm|aarch)") - if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm64|aarch64)") - set(PNG_ARM_NEON_POSSIBLE_VALUES on off) - set(PNG_ARM_NEON "on" - CACHE STRING "Enable ARM NEON optimizations: on|off; on is default") - else() - set(PNG_ARM_NEON_POSSIBLE_VALUES check on off) - set(PNG_ARM_NEON "off" - CACHE STRING "Enable ARM NEON optimizations: check|on|off; off is default") - endif() - set_property(CACHE PNG_ARM_NEON - PROPERTY STRINGS ${PNG_ARM_NEON_POSSIBLE_VALUES}) - list(FIND PNG_ARM_NEON_POSSIBLE_VALUES ${PNG_ARM_NEON} index) - if(index EQUAL -1) - message(FATAL_ERROR "PNG_ARM_NEON must be one of [${PNG_ARM_NEON_POSSIBLE_VALUES}]") - elseif(NOT PNG_ARM_NEON STREQUAL "off") - set(libpng_arm_sources - arm/arm_init.c - arm/filter_neon_intrinsics.c - arm/palette_neon_intrinsics.c) - if(PNG_ARM_NEON STREQUAL "on") - add_definitions(-DPNG_ARM_NEON_OPT=2) - elseif(PNG_ARM_NEON STREQUAL "check") - add_definitions(-DPNG_ARM_NEON_CHECK_SUPPORTED) + # Set definitions and sources for ARM. + if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm|aarch)") + if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm64|aarch64)") + set(PNG_ARM_NEON_POSSIBLE_VALUES on off) + set(PNG_ARM_NEON "on" + CACHE STRING "Enable ARM NEON optimizations: on|off; on is default") + else() + set(PNG_ARM_NEON_POSSIBLE_VALUES check on off) + set(PNG_ARM_NEON "off" + CACHE STRING "Enable ARM NEON optimizations: check|on|off; off is default") + endif() + set_property(CACHE PNG_ARM_NEON + PROPERTY STRINGS ${PNG_ARM_NEON_POSSIBLE_VALUES}) + list(FIND PNG_ARM_NEON_POSSIBLE_VALUES ${PNG_ARM_NEON} index) + if(index EQUAL -1) + message(FATAL_ERROR "PNG_ARM_NEON must be one of [${PNG_ARM_NEON_POSSIBLE_VALUES}]") + elseif(NOT PNG_ARM_NEON STREQUAL "off") + set(libpng_arm_sources + arm/arm_init.c + arm/filter_neon_intrinsics.c + arm/palette_neon_intrinsics.c) + if(PNG_ARM_NEON STREQUAL "on") + add_definitions(-DPNG_ARM_NEON_OPT=2) + elseif(PNG_ARM_NEON STREQUAL "check") + add_definitions(-DPNG_ARM_NEON_CHECK_SUPPORTED) + endif() + else() + add_definitions(-DPNG_ARM_NEON_OPT=0) endif() - else() - add_definitions(-DPNG_ARM_NEON_OPT=0) endif() -endif() -# Set definitions and sources for PowerPC. -if(PNG_TARGET_ARCHITECTURE MATCHES "^(powerpc|ppc64)") - set(PNG_POWERPC_VSX_POSSIBLE_VALUES on off) - set(PNG_POWERPC_VSX "on" - CACHE STRING "Enable POWERPC VSX optimizations: on|off; on is default") - set_property(CACHE PNG_POWERPC_VSX - PROPERTY STRINGS ${PNG_POWERPC_VSX_POSSIBLE_VALUES}) - list(FIND PNG_POWERPC_VSX_POSSIBLE_VALUES ${PNG_POWERPC_VSX} index) - if(index EQUAL -1) - message(FATAL_ERROR "PNG_POWERPC_VSX must be one of [${PNG_POWERPC_VSX_POSSIBLE_VALUES}]") - elseif(NOT PNG_POWERPC_VSX STREQUAL "off") - set(libpng_powerpc_sources - powerpc/powerpc_init.c - powerpc/filter_vsx_intrinsics.c) - if(PNG_POWERPC_VSX STREQUAL "on") - add_definitions(-DPNG_POWERPC_VSX_OPT=2) + # Set definitions and sources for PowerPC. + if(PNG_TARGET_ARCHITECTURE MATCHES "^(powerpc|ppc64)") + set(PNG_POWERPC_VSX_POSSIBLE_VALUES on off) + set(PNG_POWERPC_VSX "on" + CACHE STRING "Enable POWERPC VSX optimizations: on|off; on is default") + set_property(CACHE PNG_POWERPC_VSX + PROPERTY STRINGS ${PNG_POWERPC_VSX_POSSIBLE_VALUES}) + list(FIND PNG_POWERPC_VSX_POSSIBLE_VALUES ${PNG_POWERPC_VSX} index) + if(index EQUAL -1) + message(FATAL_ERROR "PNG_POWERPC_VSX must be one of [${PNG_POWERPC_VSX_POSSIBLE_VALUES}]") + elseif(NOT PNG_POWERPC_VSX STREQUAL "off") + set(libpng_powerpc_sources + powerpc/powerpc_init.c + powerpc/filter_vsx_intrinsics.c) + if(PNG_POWERPC_VSX STREQUAL "on") + add_definitions(-DPNG_POWERPC_VSX_OPT=2) + endif() + else() + add_definitions(-DPNG_POWERPC_VSX_OPT=0) endif() - else() - add_definitions(-DPNG_POWERPC_VSX_OPT=0) endif() -endif() -# Set definitions and sources for Intel. -if(PNG_TARGET_ARCHITECTURE MATCHES "^(i[3-6]86|x86|amd64)") - set(PNG_INTEL_SSE_POSSIBLE_VALUES on off) - set(PNG_INTEL_SSE "on" - CACHE STRING "Enable INTEL_SSE optimizations: on|off; on is default") - set_property(CACHE PNG_INTEL_SSE - PROPERTY STRINGS ${PNG_INTEL_SSE_POSSIBLE_VALUES}) - list(FIND PNG_INTEL_SSE_POSSIBLE_VALUES ${PNG_INTEL_SSE} index) - if(index EQUAL -1) - message(FATAL_ERROR "PNG_INTEL_SSE must be one of [${PNG_INTEL_SSE_POSSIBLE_VALUES}]") - elseif(NOT PNG_INTEL_SSE STREQUAL "off") - set(libpng_intel_sources - intel/intel_init.c - intel/filter_sse2_intrinsics.c) - if(PNG_INTEL_SSE STREQUAL "on") - add_definitions(-DPNG_INTEL_SSE_OPT=1) + # Set definitions and sources for Intel. + if(PNG_TARGET_ARCHITECTURE MATCHES "^(i[3-6]86|x86|amd64)") + set(PNG_INTEL_SSE_POSSIBLE_VALUES on off) + set(PNG_INTEL_SSE "on" + CACHE STRING "Enable INTEL_SSE optimizations: on|off; on is default") + set_property(CACHE PNG_INTEL_SSE + PROPERTY STRINGS ${PNG_INTEL_SSE_POSSIBLE_VALUES}) + list(FIND PNG_INTEL_SSE_POSSIBLE_VALUES ${PNG_INTEL_SSE} index) + if(index EQUAL -1) + message(FATAL_ERROR "PNG_INTEL_SSE must be one of [${PNG_INTEL_SSE_POSSIBLE_VALUES}]") + elseif(NOT PNG_INTEL_SSE STREQUAL "off") + set(libpng_intel_sources + intel/intel_init.c + intel/filter_sse2_intrinsics.c) + if(PNG_INTEL_SSE STREQUAL "on") + add_definitions(-DPNG_INTEL_SSE_OPT=1) + endif() + else() + add_definitions(-DPNG_INTEL_SSE_OPT=0) endif() - else() - add_definitions(-DPNG_INTEL_SSE_OPT=0) endif() -endif() -# Set definitions and sources for MIPS. -if(PNG_TARGET_ARCHITECTURE MATCHES "^(mipsel|mips64el)") - set(PNG_MIPS_MSA_POSSIBLE_VALUES on off) - set(PNG_MIPS_MSA "on" - CACHE STRING "Enable MIPS_MSA optimizations: on|off; on is default") - set_property(CACHE PNG_MIPS_MSA - PROPERTY STRINGS ${PNG_MIPS_MSA_POSSIBLE_VALUES}) - list(FIND PNG_MIPS_MSA_POSSIBLE_VALUES ${PNG_MIPS_MSA} index_msa) - if(index_msa EQUAL -1) - message(FATAL_ERROR "PNG_MIPS_MSA must be one of [${PNG_MIPS_MSA_POSSIBLE_VALUES}]") - endif() + # Set definitions and sources for MIPS. + if(PNG_TARGET_ARCHITECTURE MATCHES "^(mipsel|mips64el)") + set(PNG_MIPS_MSA_POSSIBLE_VALUES on off) + set(PNG_MIPS_MSA "on" + CACHE STRING "Enable MIPS_MSA optimizations: on|off; on is default") + set_property(CACHE PNG_MIPS_MSA + PROPERTY STRINGS ${PNG_MIPS_MSA_POSSIBLE_VALUES}) + list(FIND PNG_MIPS_MSA_POSSIBLE_VALUES ${PNG_MIPS_MSA} index_msa) + if(index_msa EQUAL -1) + message(FATAL_ERROR "PNG_MIPS_MSA must be one of [${PNG_MIPS_MSA_POSSIBLE_VALUES}]") + endif() - set(PNG_MIPS_MMI_POSSIBLE_VALUES on off) - set(PNG_MIPS_MMI "on" - CACHE STRING "Enable MIPS_MMI optimizations: on|off; on is default") - set_property(CACHE PNG_MIPS_MMI - PROPERTY STRINGS ${PNG_MIPS_MMI_POSSIBLE_VALUES}) - list(FIND PNG_MIPS_MMI_POSSIBLE_VALUES ${PNG_MIPS_MMI} index_mmi) - if(index_mmi EQUAL -1) - message(FATAL_ERROR "PNG_MIPS_MMI must be one of [${PNG_MIPS_MMI_POSSIBLE_VALUES}]") - endif() + set(PNG_MIPS_MMI_POSSIBLE_VALUES on off) + set(PNG_MIPS_MMI "on" + CACHE STRING "Enable MIPS_MMI optimizations: on|off; on is default") + set_property(CACHE PNG_MIPS_MMI + PROPERTY STRINGS ${PNG_MIPS_MMI_POSSIBLE_VALUES}) + list(FIND PNG_MIPS_MMI_POSSIBLE_VALUES ${PNG_MIPS_MMI} index_mmi) + if(index_mmi EQUAL -1) + message(FATAL_ERROR "PNG_MIPS_MMI must be one of [${PNG_MIPS_MMI_POSSIBLE_VALUES}]") + endif() - if(PNG_MIPS_MSA STREQUAL "on" AND PNG_MIPS_MMI STREQUAL "on") - set(libpng_mips_sources - mips/mips_init.c - mips/filter_msa_intrinsics.c - mips/filter_mmi_inline_assembly.c) - add_definitions(-DPNG_MIPS_MSA_OPT=2) - add_definitions(-DPNG_MIPS_MMI_OPT=1) - elseif(PNG_MIPS_MSA STREQUAL "on") - set(libpng_mips_sources - mips/mips_init.c - mips/filter_msa_intrinsics.c) - add_definitions(-DPNG_MIPS_MSA_OPT=2) - add_definitions(-DPNG_MIPS_MMI_OPT=0) - elseif(PNG_MIPS_MMI STREQUAL "on") - set(libpng_mips_sources - mips/mips_init.c - mips/filter_mmi_inline_assembly.c) - add_definitions(-DPNG_MIPS_MSA_OPT=0) - add_definitions(-DPNG_MIPS_MMI_OPT=1) + if(PNG_MIPS_MSA STREQUAL "on" AND PNG_MIPS_MMI STREQUAL "on") + set(libpng_mips_sources + mips/mips_init.c + mips/filter_msa_intrinsics.c + mips/filter_mmi_inline_assembly.c) + add_definitions(-DPNG_MIPS_MSA_OPT=2) + add_definitions(-DPNG_MIPS_MMI_OPT=1) + elseif(PNG_MIPS_MSA STREQUAL "on") + set(libpng_mips_sources + mips/mips_init.c + mips/filter_msa_intrinsics.c) + add_definitions(-DPNG_MIPS_MSA_OPT=2) + add_definitions(-DPNG_MIPS_MMI_OPT=0) + elseif(PNG_MIPS_MMI STREQUAL "on") + set(libpng_mips_sources + mips/mips_init.c + mips/filter_mmi_inline_assembly.c) + add_definitions(-DPNG_MIPS_MSA_OPT=0) + add_definitions(-DPNG_MIPS_MMI_OPT=1) else() - add_definitions(-DPNG_MIPS_MSA_OPT=0) - add_definitions(-DPNG_MIPS_MMI_OPT=0) + add_definitions(-DPNG_MIPS_MSA_OPT=0) + add_definitions(-DPNG_MIPS_MMI_OPT=0) endif() -endif() + endif() -# Set definitions and sources for LoongArch. -if(PNG_TARGET_ARCHITECTURE MATCHES "^(loongarch)") - include(CheckCCompilerFlag) - set(PNG_LOONGARCH_LSX_POSSIBLE_VALUES on off) - set(PNG_LOONGARCH_LSX "on" - CACHE STRING "Enable LOONGARCH_LSX optimizations: on|off; on is default") - set_property(CACHE PNG_LOONGARCH_LSX - PROPERTY STRINGS ${PNG_LOONGARCH_LSX_POSSIBLE_VALUES}) - list(FIND PNG_LOONGARCH_LSX_POSSIBLE_VALUES ${PNG_LOONGARCH_LSX} index) - if(index EQUAL -1) - message(FATAL_ERROR "PNG_LOONGARCH_LSX must be one of [${PNG_LOONGARCH_LSX_POSSIBLE_VALUES}]") - elseif(NOT PNG_LOONGARCH_LSX STREQUAL "off") - CHECK_C_COMPILER_FLAG("-mlsx" COMPILER_SUPPORTS_LSX) - if(COMPILER_SUPPORTS_LSX) - set(libpng_loongarch_sources - loongarch/loongarch_lsx_init.c - loongarch/filter_lsx_intrinsics.c) - set_source_files_properties(${libpng_loongarch_sources} - PROPERTIES - COMPILE_FLAGS "-mlsx") - add_definitions(-DPNG_LOONGARCH_LSX_OPT=1) + # Set definitions and sources for LoongArch. + if(PNG_TARGET_ARCHITECTURE MATCHES "^(loongarch)") + include(CheckCCompilerFlag) + set(PNG_LOONGARCH_LSX_POSSIBLE_VALUES on off) + set(PNG_LOONGARCH_LSX "on" + CACHE STRING "Enable LOONGARCH_LSX optimizations: on|off; on is default") + set_property(CACHE PNG_LOONGARCH_LSX + PROPERTY STRINGS ${PNG_LOONGARCH_LSX_POSSIBLE_VALUES}) + list(FIND PNG_LOONGARCH_LSX_POSSIBLE_VALUES ${PNG_LOONGARCH_LSX} index) + if(index EQUAL -1) + message(FATAL_ERROR "PNG_LOONGARCH_LSX must be one of [${PNG_LOONGARCH_LSX_POSSIBLE_VALUES}]") + elseif(NOT PNG_LOONGARCH_LSX STREQUAL "off") + CHECK_C_COMPILER_FLAG("-mlsx" COMPILER_SUPPORTS_LSX) + if(COMPILER_SUPPORTS_LSX) + set(libpng_loongarch_sources + loongarch/loongarch_lsx_init.c + loongarch/filter_lsx_intrinsics.c) + set_source_files_properties(${libpng_loongarch_sources} + PROPERTIES + COMPILE_FLAGS "-mlsx") + add_definitions(-DPNG_LOONGARCH_LSX_OPT=1) + else() + message(FATAL_ERROR "Compiler does not support -mlsx option") + endif() else() - message(FATAL_ERROR "Compiler does not support -mlsx option") + add_definitions(-DPNG_LOONGARCH_LSX_OPT=0) endif() - else() - add_definitions(-DPNG_LOONGARCH_LSX_OPT=0) endif() -endif() else(PNG_HARDWARE_OPTIMIZATIONS) -# Set definitions and sources for ARM. -if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm|aarch)") - add_definitions(-DPNG_ARM_NEON_OPT=0) -endif() + # Set definitions and sources for ARM. + if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm|aarch)") + add_definitions(-DPNG_ARM_NEON_OPT=0) + endif() -# Set definitions and sources for PowerPC. -if(PNG_TARGET_ARCHITECTURE MATCHES "^(powerpc|ppc64)") - add_definitions(-DPNG_POWERPC_VSX_OPT=0) -endif() + # Set definitions and sources for PowerPC. + if(PNG_TARGET_ARCHITECTURE MATCHES "^(powerpc|ppc64)") + add_definitions(-DPNG_POWERPC_VSX_OPT=0) + endif() -# Set definitions and sources for Intel. -if(PNG_TARGET_ARCHITECTURE MATCHES "^(i[3-6]86|x86|amd64)") - add_definitions(-DPNG_INTEL_SSE_OPT=0) -endif() + # Set definitions and sources for Intel. + if(PNG_TARGET_ARCHITECTURE MATCHES "^(i[3-6]86|x86|amd64)") + add_definitions(-DPNG_INTEL_SSE_OPT=0) + endif() -# Set definitions and sources for MIPS. -if(PNG_TARGET_ARCHITECTURE MATCHES "^(mipsel|mips64el)") - add_definitions(-DPNG_MIPS_MSA_OPT=0) -endif() + # Set definitions and sources for MIPS. + if(PNG_TARGET_ARCHITECTURE MATCHES "^(mipsel|mips64el)") + add_definitions(-DPNG_MIPS_MSA_OPT=0) + endif() -# Set definitions and sources for LoongArch. -if(PNG_TARGET_ARCHITECTURE MATCHES "^(loongarch)") - add_definitions(-DPNG_LOONGARCH_LSX_OPT=0) -endif() + # Set definitions and sources for LoongArch. + if(PNG_TARGET_ARCHITECTURE MATCHES "^(loongarch)") + add_definitions(-DPNG_LOONGARCH_LSX_OPT=0) + endif() endif(PNG_HARDWARE_OPTIMIZATIONS) option(ld-version-script "Enable linker version script" ON) -if(ld-version-script AND NOT ANDROID AND NOT APPLE) +if(ld-version-script AND NOT (ANDROID OR APPLE)) # Check if LD supports linker scripts. file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map" " VERS_1 { global: sym1; local: *; }; @@ -363,12 +358,15 @@ else() message(STATUS "Could not find an AWK-compatible program") endif() -if(NOT AWK OR ANDROID OR IOS) +if(NOT AWK OR (ANDROID OR IOS)) # No awk available to generate sources; use pre-built pnglibconf.h configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt ${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h) add_custom_target(png_genfiles) else() + # Include the internal module PNGGenConfig.cmake + include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGGenConfig.cmake) + # Copy the awk scripts, converting their line endings to Unix (LF) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/checksym.awk ${CMAKE_CURRENT_BINARY_DIR}/scripts/checksym.awk @@ -383,93 +381,6 @@ else() @ONLY NEWLINE_STYLE LF) - # Generate .chk from .out with awk: - # generate_chk(INPUT inputfile OUTPUT outputfile [DEPENDS dep1 [dep2...]]) - function(generate_chk) - set(options) - set(oneValueArgs INPUT OUTPUT) - set(multiValueArgs DEPENDS) - cmake_parse_arguments(_GC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - if(NOT _GC_INPUT) - message(FATAL_ERROR "generate_chk: Missing INPUT argument") - endif() - if(NOT _GC_OUTPUT) - message(FATAL_ERROR "generate_chk: Missing OUTPUT argument") - endif() - - add_custom_command(OUTPUT "${_GC_OUTPUT}" - COMMAND "${CMAKE_COMMAND}" - "-DINPUT=${_GC_INPUT}" - "-DOUTPUT=${_GC_OUTPUT}" - -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/genchk.cmake" - DEPENDS "${_GC_INPUT}" ${_GC_DEPENDS} - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") - endfunction() - - # Generate .out from .c with awk - # generate_out(INPUT inputfile OUTPUT outputfile [DEPENDS dep1 [dep2...]]) - function(generate_out) - set(options) - set(oneValueArgs INPUT OUTPUT) - set(multiValueArgs DEPENDS) - cmake_parse_arguments(_GO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - if(NOT _GO_INPUT) - message(FATAL_ERROR "generate_out: Missing INPUT argument") - endif() - if(NOT _GO_OUTPUT) - message(FATAL_ERROR "generate_out: Missing OUTPUT argument") - endif() - - add_custom_command(OUTPUT "${_GO_OUTPUT}" - COMMAND "${CMAKE_COMMAND}" - "-DINPUT=${_GO_INPUT}" - "-DOUTPUT=${_GO_OUTPUT}" - -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/genout.cmake" - DEPENDS "${_GO_INPUT}" ${_GO_DEPENDS} - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") - endfunction() - - # Generate specific source file with awk - # generate_source(OUTPUT outputfile [DEPENDS dep1 [dep2...]]) - function(generate_source) - set(options) - set(oneValueArgs OUTPUT) - set(multiValueArgs DEPENDS) - cmake_parse_arguments(_GSO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - if(NOT _GSO_OUTPUT) - message(FATAL_ERROR "generate_source: Missing OUTPUT argument") - endif() - - add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${_GSO_OUTPUT}" - COMMAND "${CMAKE_COMMAND}" - "-DOUTPUT=${_GSO_OUTPUT}" - -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/gensrc.cmake" - DEPENDS ${_GSO_DEPENDS} - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") - endfunction() - - # Copy file - # generate_copy(INPUT inputfile OUTPUT outputfile [DEPENDS dep1 [dep2...]]) - function(generate_copy) - set(options) - set(oneValueArgs INPUT OUTPUT) - set(multiValueArgs DEPENDS) - cmake_parse_arguments(_GCO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - if(NOT _GCO_INPUT) - message(FATAL_ERROR "generate_copy: Missing INPUT argument") - endif() - if(NOT _GCO_OUTPUT) - message(FATAL_ERROR "generate_copy: Missing OUTPUT argument") - endif() - - add_custom_command(OUTPUT "${_GCO_OUTPUT}" - COMMAND "${CMAKE_COMMAND}" - -E remove "${_GCO_OUTPUT}" - COMMAND "${CMAKE_COMMAND}" - -E copy "${_GCO_INPUT}" "${_GCO_OUTPUT}" - DEPENDS "${source}" ${_GCO_DEPENDS}) - endfunction() - # Generate scripts/pnglibconf.h generate_source(OUTPUT "scripts/pnglibconf.c" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.dfa" @@ -591,7 +502,7 @@ else() "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk" png_scripts_symbols_chk "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out" png_scripts_symbols_out "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out" png_scripts_vers_out) -endif(NOT AWK OR ANDROID OR IOS) +endif(NOT AWK OR (ANDROID OR IOS)) # List the source code files. set(libpng_public_hdrs @@ -605,7 +516,7 @@ set(libpng_private_hdrs pnginfo.h pngstruct.h ) -if(AWK AND NOT ANDROID AND NOT IOS) +if(AWK AND NOT (ANDROID OR IOS)) list(APPEND libpng_private_hdrs "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h") endif() set(libpng_sources @@ -776,30 +687,8 @@ endif() if(PNG_TESTS AND PNG_SHARED) enable_testing() - function(png_add_test) - set(options) - set(oneValueArgs NAME COMMAND) - set(multiValueArgs OPTIONS FILES) - cmake_parse_arguments(_PAT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - if(NOT _PAT_NAME) - message(FATAL_ERROR "png_add_test: Missing NAME argument") - endif() - if(NOT _PAT_COMMAND) - message(FATAL_ERROR "png_add_test: Missing COMMAND argument") - endif() - - set(TEST_OPTIONS "${_PAT_OPTIONS}") - set(TEST_FILES "${_PAT_FILES}") - - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/test.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/tests/${_PAT_NAME}.cmake" - @ONLY) - add_test(NAME "${_PAT_NAME}" - COMMAND "${CMAKE_COMMAND}" - "-DLIBPNG=$<TARGET_FILE:png_shared>" - "-DTEST_COMMAND=$<TARGET_FILE:${_PAT_COMMAND}>" - -P "${CMAKE_CURRENT_BINARY_DIR}/tests/${_PAT_NAME}.cmake") - endfunction() + # Include the internal module PNGTest.cmake + include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGTest.cmake) # Find test PNG files by globbing, but sort lists to ensure # consistency between different filesystems. @@ -807,6 +696,8 @@ if(PNG_TESTS AND PNG_SHARED) list(SORT PNGSUITE_PNGS) file(GLOB TEST_PNGS "${CMAKE_CURRENT_SOURCE_DIR}/contrib/testpngs/*.png") list(SORT TEST_PNGS) + file(GLOB TEST_PNG3_PNGS "${CMAKE_CURRENT_SOURCE_DIR}/contrib/testpngs/png-3/*.png") + list(SORT TEST_PNG3_PNGS) set(PNGTEST_PNG "${CMAKE_CURRENT_SOURCE_DIR}/pngtest.png") @@ -817,6 +708,10 @@ if(PNG_TESTS AND PNG_SHARED) COMMAND pngtest FILES "${PNGTEST_PNG}") + png_add_test(NAME pngtest-png-3 + COMMAND pngtest + FILES "${TEST_PNG3_PNGS}") + add_executable(pngvalid ${pngvalid_sources}) target_link_libraries(pngvalid PRIVATE png_shared) @@ -973,9 +868,14 @@ if(PNG_SHARED AND PNG_TOOLS) list(APPEND PNG_BIN_TARGETS png-fix-itxt) endif() -# Create a symlink from src to dest (if possible), or, alternatively, -# copy src to dest if different. +# Create a symlink that points to a target file (if symlinking is possible), +# or make a copy of the target file (if symlinking is not possible): +# create_symlink(<destfile> [FILE <file> | TARGET <target>]) function(create_symlink DEST_FILE) + # TODO: + # Replace this implementation with CMake's built-in create_symlink function, + # which has been fully functional on all platforms, including Windows, since + # CMake version 3.13. cmake_parse_arguments(_SYM "" "FILE;TARGET" "" ${ARGN}) if(NOT _SYM_FILE AND NOT _SYM_TARGET) message(FATAL_ERROR "create_symlink: Missing FILE or TARGET argument") diff --git a/source/libs/libpng/libpng-src/INSTALL b/source/libs/libpng/libpng-src/INSTALL index 042d72929..df1a49446 100644 --- a/source/libs/libpng/libpng-src/INSTALL +++ b/source/libs/libpng/libpng-src/INSTALL @@ -1,4 +1,3 @@ - Installing libpng Contents diff --git a/source/libs/libpng/libpng-src/LICENSE b/source/libs/libpng/libpng-src/LICENSE index 25f298f0f..ea6df986c 100644 --- a/source/libs/libpng/libpng-src/LICENSE +++ b/source/libs/libpng/libpng-src/LICENSE @@ -4,8 +4,8 @@ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE PNG Reference Library License version 2 --------------------------------------- - * Copyright (c) 1995-2024 The PNG Reference Library Authors. - * Copyright (c) 2018-2024 Cosmin Truta. + * Copyright (c) 1995-2025 The PNG Reference Library Authors. + * Copyright (c) 2018-2025 Cosmin Truta. * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. * Copyright (c) 1996-1997 Andreas Dilger. * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. diff --git a/source/libs/libpng/libpng-src/README b/source/libs/libpng/libpng-src/README index 3af606889..1f73eb58c 100644 --- a/source/libs/libpng/libpng-src/README +++ b/source/libs/libpng/libpng-src/README @@ -1,4 +1,4 @@ -README for libpng version 1.6.44 +README for libpng version 1.6.45 ================================ See the note about version numbers near the top of `png.h`. @@ -157,8 +157,6 @@ Files included in this distribution "PNG: The Definitive Guide" by Greg Roelofs, O'Reilly, 1999 libtests/ => Test programs - oss-fuzz/ => Files used by the OSS-Fuzz project for fuzz-testing - libpng pngexif/ => Program to inspect the EXIF information in PNG files pngminim/ => Minimal decoder, encoder, and progressive decoder programs demonstrating the use of pngusr.dfa diff --git a/source/libs/libpng/libpng-src/TODO b/source/libs/libpng/libpng-src/TODO index 562dab069..8ddb7d123 100644 --- a/source/libs/libpng/libpng-src/TODO +++ b/source/libs/libpng/libpng-src/TODO @@ -1,23 +1,22 @@ -TODO - list of things to do for libpng: +TODO list for libpng +-------------------- -* Fix all defects (duh!) -* Better C++ wrapper / full C++ implementation (?) -* Fix the problems with C++ and 'extern "C"'. -* cHRM transformation. -* Palette creation. -* "grayscale->palette" transformation and "palette->grayscale" detection. -* Improved dithering. -* Multi-lingual error and warning message support. -* Complete sRGB transformation. (Currently it simply uses gamma=0.45455.) -* Man pages for function calls. -* Better documentation. -* Better filter selection - (e.g., counting huffman bits/precompression; filter inertia; filter costs). -* Histogram creation. -* Text conversion between different code pages (e.g., Latin-1 -> Mac). -* Avoid building gamma tables whenever possible. -* Greater precision in changing to linear gamma for compositing against - background, and in doing rgb-to-gray transformations. -* Investigate pre-incremented loop counters and other loop constructions. -* Interpolated method of handling interlacing. -* More validations for libpng transformations. + * Fix all defects (duh!) + * cHRM transformation. + * Palette creation. + * "grayscale->palette" transformation and "palette->grayscale" detection. + * Improved dithering. + * Multi-lingual error and warning message support. + * Complete sRGB transformation. (Currently it simply uses gamma=0.45455.) + * Man pages for function calls. + * Better documentation. + * Better filter selection + (e.g., counting huffman bits/precompression; filter inertia; filter costs). + * Histogram creation. + * Text conversion between different code pages (e.g., Latin-1 to Mac). + * Avoid building gamma tables whenever possible. + * Greater precision in changing to linear gamma for compositing against + background, and in doing rgb-to-gray transformations. + * Investigate pre-incremented loop counters and other loop constructions. + * Interpolated method of handling interlacing. + * More validations for libpng transformations. diff --git a/source/libs/libpng/libpng-src/arm/arm_init.c b/source/libs/libpng/libpng-src/arm/arm_init.c index 84d05556f..50376081a 100644 --- a/source/libs/libpng/libpng-src/arm/arm_init.c +++ b/source/libs/libpng/libpng-src/arm/arm_init.c @@ -1,4 +1,3 @@ - /* arm_init.c - NEON optimised filter functions * * Copyright (c) 2018-2022 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/arm/filter_neon.S b/source/libs/libpng/libpng-src/arm/filter_neon.S index fc3c7a296..0cbd372cb 100644 --- a/source/libs/libpng/libpng-src/arm/filter_neon.S +++ b/source/libs/libpng/libpng-src/arm/filter_neon.S @@ -1,4 +1,3 @@ - /* filter_neon.S - placeholder file * * Copyright (c) 2024 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/arm/filter_neon_intrinsics.c b/source/libs/libpng/libpng-src/arm/filter_neon_intrinsics.c index 4466d48b2..7c3e0da4d 100644 --- a/source/libs/libpng/libpng-src/arm/filter_neon_intrinsics.c +++ b/source/libs/libpng/libpng-src/arm/filter_neon_intrinsics.c @@ -1,4 +1,3 @@ - /* filter_neon_intrinsics.c - NEON optimised filter functions * * Copyright (c) 2018 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/arm/palette_neon_intrinsics.c b/source/libs/libpng/libpng-src/arm/palette_neon_intrinsics.c index 92c7d6f9f..3068e9b6e 100644 --- a/source/libs/libpng/libpng-src/arm/palette_neon_intrinsics.c +++ b/source/libs/libpng/libpng-src/arm/palette_neon_intrinsics.c @@ -1,4 +1,3 @@ - /* palette_neon_intrinsics.c - NEON optimised palette expansion functions * * Copyright (c) 2018-2019 Cosmin Truta @@ -64,7 +63,7 @@ png_do_expand_palette_rgba8_neon(png_structrp png_ptr, png_row_infop row_info, { png_uint_32 row_width = row_info->width; const png_uint_32 *riffled_palette = - (const png_uint_32 *)png_ptr->riffled_palette; + png_aligncastconst(png_const_uint_32p, png_ptr->riffled_palette); const png_uint_32 pixels_per_chunk = 4; png_uint_32 i; diff --git a/source/libs/libpng/libpng-src/ci/ci_lint.sh b/source/libs/libpng/libpng-src/ci/ci_lint.sh index d1754715d..163d955de 100644 --- a/source/libs/libpng/libpng-src/ci/ci_lint.sh +++ b/source/libs/libpng/libpng-src/ci/ci_lint.sh @@ -80,7 +80,7 @@ function ci_lint_text_files { } ci_info "## LINTING: text files ##" ci_spawn "$CI_EDITORCONFIG_CHECKER" --version - ci_spawn "$CI_EDITORCONFIG_CHECKER" || { + ci_spawn "$CI_EDITORCONFIG_CHECKER" --config .editorconfig-checker.json || { # Linting failed. return 1 } @@ -93,7 +93,9 @@ function ci_lint_yaml_files { } ci_info "## LINTING: YAML files ##" ci_spawn "$CI_YAMLLINT" --version - find . \( -iname "*.yml" -o -iname "*.yaml" \) -not -path "./out/*" | { + # Considering that the YAML format is an extension of the JSON format, + # we can lint both the YAML files and the plain JSON files here. + find . \( -iname "*.yml" -o -iname "*.yaml" -o -iname "*.json" \) -not -path "./out/*" | { local my_file while IFS="" read -r my_file do diff --git a/source/libs/libpng/libpng-src/ci/ci_verify_cmake.sh b/source/libs/libpng/libpng-src/ci/ci_verify_cmake.sh index 9fe634026..d48062cf5 100644 --- a/source/libs/libpng/libpng-src/ci/ci_verify_cmake.sh +++ b/source/libs/libpng/libpng-src/ci/ci_verify_cmake.sh @@ -17,12 +17,6 @@ CI_OUT_DIR="$CI_TOPLEVEL_DIR/out" CI_BUILD_DIR="$CI_OUT_DIR/ci_verify_cmake.$CI_TARGET_SYSTEM.$CI_TARGET_ARCH.build" CI_INSTALL_DIR="$CI_OUT_DIR/ci_verify_cmake.$CI_TARGET_SYSTEM.$CI_TARGET_ARCH.install" -# Keep the following relative paths in sync with the absolute paths. -# We use them for the benefit of native Windows tools that might be -# otherwise confused by the path encoding used by Bash-on-Windows. -CI_BUILD_TO_SRC_RELDIR="../.." -CI_BUILD_TO_INSTALL_RELDIR="../ci_verify_cmake.$CI_TARGET_SYSTEM.$CI_TARGET_ARCH.install" - function ci_init_build { # Ensure that the mandatory variables are initialized. CI_CMAKE="${CI_CMAKE:-cmake}" @@ -148,40 +142,33 @@ function ci_build { all_cmake_build_flags+=($CI_CMAKE_BUILD_FLAGS) all_ctest_flags+=($CI_CTEST_FLAGS) # And... build! - # Use $CI_BUILD_TO_SRC_RELDIR and $CI_BUILD_TO_INSTALL_RELDIR - # instead of $CI_SRC_DIR and $CI_INSTALL_DIR from this point onwards. ci_spawn mkdir -p "$CI_BUILD_DIR" - ci_spawn cd "$CI_BUILD_DIR" - [[ $CI_BUILD_TO_SRC_RELDIR -ef $CI_SRC_DIR ]] || { - ci_err_internal "bad or missing \$CI_BUILD_TO_SRC_RELDIR" - } - ci_spawn mkdir -p "$CI_INSTALL_DIR" - [[ $CI_BUILD_TO_INSTALL_RELDIR -ef $CI_INSTALL_DIR ]] || { - ci_err_internal "bad or missing \$CI_BUILD_TO_INSTALL_RELDIR" - } # Spawn "cmake ...". - ci_spawn "$CI_CMAKE" -DCMAKE_INSTALL_PREFIX="$CI_BUILD_TO_INSTALL_RELDIR" \ - "${all_cmake_vars[@]}" \ - "$CI_BUILD_TO_SRC_RELDIR" + ci_spawn "$CI_CMAKE" -B "$CI_BUILD_DIR" \ + -S . \ + -DCMAKE_INSTALL_PREFIX="$CI_INSTALL_DIR" \ + "${all_cmake_vars[@]}" # Spawn "cmake --build ...". - ci_spawn "$CI_CMAKE" --build . \ + ci_spawn "$CI_CMAKE" --build "$CI_BUILD_DIR" \ --config "$CI_CMAKE_BUILD_TYPE" \ "${all_cmake_build_flags[@]}" ci_expr $((CI_NO_TEST)) || { # Spawn "ctest" if testing is not disabled. + ci_spawn pushd "$CI_BUILD_DIR" ci_spawn "$CI_CTEST" --build-config "$CI_CMAKE_BUILD_TYPE" \ "${all_ctest_flags[@]}" + ci_spawn popd } ci_expr $((CI_NO_INSTALL)) || { # Spawn "cmake --build ... --target install" if installation is not disabled. - ci_spawn "$CI_CMAKE" --build . \ + ci_spawn "$CI_CMAKE" --build "$CI_BUILD_DIR" \ --config "$CI_CMAKE_BUILD_TYPE" \ --target install \ "${all_cmake_build_flags[@]}" } ci_expr $((CI_NO_CLEAN)) || { # Spawn "make --build ... --target clean" if cleaning is not disabled. - ci_spawn "$CI_CMAKE" --build . \ + ci_spawn "$CI_CMAKE" --build "$CI_BUILD_DIR" \ --config "$CI_CMAKE_BUILD_TYPE" \ --target clean \ "${all_cmake_build_flags[@]}" diff --git a/source/libs/libpng/libpng-src/ci/ci_verify_configure.sh b/source/libs/libpng/libpng-src/ci/ci_verify_configure.sh index 141c7a283..b0e4d4944 100644 --- a/source/libs/libpng/libpng-src/ci/ci_verify_configure.sh +++ b/source/libs/libpng/libpng-src/ci/ci_verify_configure.sh @@ -122,6 +122,10 @@ function ci_build { ci_spawn export CFLAGS="${CFLAGS:-"-O2"} -fsanitize=$CI_SANITIZERS" ci_spawn export LDFLAGS="${LDFLAGS}${LDFLAGS:+" "}-fsanitize=$CI_SANITIZERS" } + # Spawn "autogen.sh" if the configure script is not available. + [[ -x "$CI_SRC_DIR/configure" ]] || { + ci_spawn "$CI_SRC_DIR/autogen.sh" --maintainer + } # And... build! ci_spawn mkdir -p "$CI_BUILD_DIR" ci_spawn cd "$CI_BUILD_DIR" diff --git a/source/libs/libpng/libpng-src/ci/ci_verify_version.sh b/source/libs/libpng/libpng-src/ci/ci_verify_version.sh index c786f06ac..3203b201f 100644 --- a/source/libs/libpng/libpng-src/ci/ci_verify_version.sh +++ b/source/libs/libpng/libpng-src/ci/ci_verify_version.sh @@ -89,9 +89,9 @@ function ci_verify_version { fi if [[ $PNG_LIBPNG_BUILD_BASE_TYPE -eq $PNG_LIBPNG_BUILD_STABLE ]] then - ci_info "matched: \$PNG_LIBPNG_BUILD_BASE_TYPE -eq \$PNG_LIBPNG_BUILD_BETA" + ci_info "matched: \$PNG_LIBPNG_BUILD_BASE_TYPE -eq \$PNG_LIBPNG_BUILD_STABLE" else - ci_err "mismatched: \$PNG_LIBPNG_BUILD_BASE_TYPE -ne \$PNG_LIBPNG_BUILD_BETA" + ci_err "mismatched: \$PNG_LIBPNG_BUILD_BASE_TYPE -ne \$PNG_LIBPNG_BUILD_STABLE" fi elif [[ "$PNG_LIBPNG_VER_STRING" == "$my_expect".git ]] then @@ -101,11 +101,11 @@ function ci_verify_version { else ci_err "mismatched: \$PNG_LIBPNG_VER_BUILD -eq 0" fi - if [[ $PNG_LIBPNG_BUILD_BASE_TYPE -eq $PNG_LIBPNG_BUILD_BETA ]] + if [[ $PNG_LIBPNG_BUILD_BASE_TYPE -ne $PNG_LIBPNG_BUILD_STABLE ]] then - ci_info "matched: \$PNG_LIBPNG_BUILD_BASE_TYPE -eq \$PNG_LIBPNG_BUILD_BETA" + ci_info "matched: \$PNG_LIBPNG_BUILD_BASE_TYPE -ne \$PNG_LIBPNG_BUILD_STABLE" else - ci_err "mismatched: \$PNG_LIBPNG_BUILD_BASE_TYPE -ne \$PNG_LIBPNG_BUILD_BETA" + ci_err "mismatched: \$PNG_LIBPNG_BUILD_BASE_TYPE -eq \$PNG_LIBPNG_BUILD_STABLE" fi else ci_err "unexpected: \$PNG_LIBPNG_VER_STRING == '$PNG_LIBPNG_VER_STRING'" diff --git a/source/libs/libpng/libpng-src/configure.ac b/source/libs/libpng/libpng-src/configure.ac index 22113b265..ab77979c2 100644 --- a/source/libs/libpng/libpng-src/configure.ac +++ b/source/libs/libpng/libpng-src/configure.ac @@ -25,7 +25,7 @@ AC_PREREQ([2.68]) dnl Version number stuff here: -AC_INIT([libpng],[1.6.44],[png-mng-implement@lists.sourceforge.net]) +AC_INIT([libpng],[1.6.45],[png-mng-implement@lists.sourceforge.net]) AC_CONFIG_MACRO_DIR([scripts/autoconf]) # libpng does not follow GNU file name conventions (hence 'foreign') @@ -46,10 +46,10 @@ dnl automake, so the following is not necessary (and is not defined anyway): dnl AM_PREREQ([1.11.2]) dnl stop configure from automagically running automake -PNGLIB_VERSION=1.6.44 +PNGLIB_VERSION=1.6.45 PNGLIB_MAJOR=1 PNGLIB_MINOR=6 -PNGLIB_RELEASE=44 +PNGLIB_RELEASE=45 dnl End of version number stuff diff --git a/source/libs/libpng/libpng-src/contrib/.editorconfig b/source/libs/libpng/libpng-src/contrib/.editorconfig index e1b551df7..8b1466b1d 100644 --- a/source/libs/libpng/libpng-src/contrib/.editorconfig +++ b/source/libs/libpng/libpng-src/contrib/.editorconfig @@ -3,5 +3,7 @@ root = false [*.[ch]] +indent_size = unset +indent_style = unset max_doc_length = unset max_line_length = unset diff --git a/source/libs/libpng/libpng-src/contrib/README.txt b/source/libs/libpng/libpng-src/contrib/README.txt index 97963c6d5..34dfbae4c 100644 --- a/source/libs/libpng/libpng-src/contrib/README.txt +++ b/source/libs/libpng/libpng-src/contrib/README.txt @@ -1,3 +1,5 @@ +External contributions to libpng +-------------------------------- This "contrib" directory contains contributions which are not necessarily under the libpng license, although all are open source. They are not part of diff --git a/source/libs/libpng/libpng-src/contrib/examples/README.txt b/source/libs/libpng/libpng-src/contrib/examples/README.txt index 48dab4f0f..7833d536c 100644 --- a/source/libs/libpng/libpng-src/contrib/examples/README.txt +++ b/source/libs/libpng/libpng-src/contrib/examples/README.txt @@ -1,4 +1,3 @@ - This directory (contrib/examples) contains examples of libpng usage. NO COPYRIGHT RIGHTS ARE CLAIMED TO ANY OF THE FILES IN THIS DIRECTORY. diff --git a/source/libs/libpng/libpng-src/contrib/libtests/pngimage.c b/source/libs/libpng/libpng-src/contrib/libtests/pngimage.c index be176b2bc..d22f7bcd0 100644 --- a/source/libs/libpng/libpng-src/contrib/libtests/pngimage.c +++ b/source/libs/libpng/libpng-src/contrib/libtests/pngimage.c @@ -1,4 +1,3 @@ - /* pngimage.c * * Copyright (c) 2021 Cosmin Truta @@ -1019,7 +1018,12 @@ compare_read(struct display *dp, int applied_transforms) C(height); C(bit_depth); C(color_type); - C(interlace_method); +# ifdef PNG_WRITE_INTERLACING_SUPPORTED + /* If write interlace has been disabled, the PNG file is still + * written correctly, but as a regular (not-interlaced) PNG. + */ + C(interlace_method); +# endif C(compression_method); C(filter_method); diff --git a/source/libs/libpng/libpng-src/contrib/libtests/pngstest.c b/source/libs/libpng/libpng-src/contrib/libtests/pngstest.c index 973e60f52..1d15421b5 100644 --- a/source/libs/libpng/libpng-src/contrib/libtests/pngstest.c +++ b/source/libs/libpng/libpng-src/contrib/libtests/pngstest.c @@ -1,4 +1,3 @@ - /* pngstest.c * * Copyright (c) 2021 Cosmin Truta @@ -3500,7 +3499,7 @@ main(int argc, char **argv) int retval = 0; int c; -#if PNG_LIBPNG_VER >= 10700 +#if PNG_LIBPNG_VER == 10700 /* This error should not exist in 1.7 or later: */ opts |= GBG_ERROR; #endif diff --git a/source/libs/libpng/libpng-src/contrib/libtests/pngunknown.c b/source/libs/libpng/libpng-src/contrib/libtests/pngunknown.c index dfa9d10a1..88133defb 100644 --- a/source/libs/libpng/libpng-src/contrib/libtests/pngunknown.c +++ b/source/libs/libpng/libpng-src/contrib/libtests/pngunknown.c @@ -1,4 +1,3 @@ - /* pngunknown.c - test the read side unknown chunk handling * * Copyright (c) 2021 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/contrib/libtests/pngvalid.c b/source/libs/libpng/libpng-src/contrib/libtests/pngvalid.c index 3d66154dd..bddf32141 100644 --- a/source/libs/libpng/libpng-src/contrib/libtests/pngvalid.c +++ b/source/libs/libpng/libpng-src/contrib/libtests/pngvalid.c @@ -1,4 +1,3 @@ - /* pngvalid.c - validate libpng by constructing then reading png files. * * Copyright (c) 2021 Cosmin Truta @@ -304,20 +303,20 @@ make_four_random_bytes(png_uint_32* seed, png_bytep bytes) #if defined PNG_READ_SUPPORTED || defined PNG_WRITE_tRNS_SUPPORTED ||\ defined PNG_WRITE_FILTER_SUPPORTED static void -randomize(void *pv, size_t size) +randomize_bytes(void *pv, size_t size) { static png_uint_32 random_seed[2] = {0x56789abc, 0xd}; make_random_bytes(random_seed, pv, size); } -#define R8(this) randomize(&(this), sizeof (this)) +#define R8(this) randomize_bytes(&(this), sizeof (this)) #ifdef PNG_READ_SUPPORTED static png_byte random_byte(void) { unsigned char b1[1]; - randomize(b1, sizeof b1); + randomize_bytes(b1, sizeof b1); return b1[0]; } #endif /* READ */ @@ -326,7 +325,7 @@ static png_uint_16 random_u16(void) { unsigned char b2[2]; - randomize(b2, sizeof b2); + randomize_bytes(b2, sizeof b2); return png_get_uint_16(b2); } @@ -336,7 +335,7 @@ static png_uint_32 random_u32(void) { unsigned char b4[4]; - randomize(b4, sizeof b4); + randomize_bytes(b4, sizeof b4); return png_get_uint_32(b4); } #endif /* READ_FILLER || READ_RGB_TO_GRAY */ @@ -2574,7 +2573,7 @@ modifier_init(png_modifier *pm) * in the rgb_to_gray check, replacing it with an exact copy of the libpng 1.5 * algorithm. */ -#define DIGITIZE PNG_LIBPNG_VER < 10700 +#define DIGITIZE PNG_LIBPNG_VER != 10700 /* If pm->calculations_use_input_precision is set then operations will happen * with the precision of the input, not the precision of the output depth. @@ -3986,7 +3985,7 @@ transform_row(png_const_structp pp, png_byte buffer[TRANSFORM_ROWMAX], # define check_interlace_type(type) ((void)(type)) # define set_write_interlace_handling(pp,type) png_set_interlace_handling(pp) # define do_own_interlace 0 -#elif PNG_LIBPNG_VER < 10700 +#elif PNG_LIBPNG_VER != 10700 # define set_write_interlace_handling(pp,type) (1) static void check_interlace_type(int const interlace_type) @@ -4014,7 +4013,7 @@ check_interlace_type(int const interlace_type) # define do_own_interlace 1 #endif /* WRITE_INTERLACING tests */ -#if PNG_LIBPNG_VER >= 10700 || defined PNG_WRITE_INTERLACING_SUPPORTED +#if PNG_LIBPNG_VER == 10700 || defined PNG_WRITE_INTERLACING_SUPPORTED # define CAN_WRITE_INTERLACE 1 #else # define CAN_WRITE_INTERLACE 0 @@ -4633,10 +4632,10 @@ static const struct { /* no warnings makes these errors undetectable prior to 1.7.0 */ { sBIT0_error_fn, "sBIT(0): failed to detect error", - PNG_LIBPNG_VER < 10700 }, + PNG_LIBPNG_VER != 10700 }, { sBIT_error_fn, "sBIT(too big): failed to detect error", - PNG_LIBPNG_VER < 10700 }, + PNG_LIBPNG_VER != 10700 }, }; static void @@ -6236,7 +6235,7 @@ image_pixel_add_alpha(image_pixel *this, const standard_display *display, { if (this->colour_type == PNG_COLOR_TYPE_GRAY) { -# if PNG_LIBPNG_VER < 10700 +# if PNG_LIBPNG_VER != 10700 if (!for_background && this->bit_depth < 8) this->bit_depth = this->sample_depth = 8; # endif @@ -6246,7 +6245,7 @@ image_pixel_add_alpha(image_pixel *this, const standard_display *display, /* After 1.7 the expansion of bit depth only happens if there is a * tRNS chunk to expand at this point. */ -# if PNG_LIBPNG_VER >= 10700 +# if PNG_LIBPNG_VER == 10700 if (!for_background && this->bit_depth < 8) this->bit_depth = this->sample_depth = 8; # endif @@ -7127,7 +7126,7 @@ image_transform_png_set_tRNS_to_alpha_mod(const image_transform *this, image_pixel *that, png_const_structp pp, const transform_display *display) { -#if PNG_LIBPNG_VER < 10700 +#if PNG_LIBPNG_VER != 10700 /* LIBPNG BUG: this always forces palette images to RGB. */ if (that->colour_type == PNG_COLOR_TYPE_PALETTE) image_pixel_convert_PLTE(that); @@ -7137,13 +7136,13 @@ image_transform_png_set_tRNS_to_alpha_mod(const image_transform *this, * convert to an alpha channel. */ if (that->have_tRNS) -# if PNG_LIBPNG_VER >= 10700 +# if PNG_LIBPNG_VER == 10700 if (that->colour_type != PNG_COLOR_TYPE_PALETTE && (that->colour_type & PNG_COLOR_MASK_ALPHA) == 0) # endif image_pixel_add_alpha(that, &display->this, 0/*!for background*/); -#if PNG_LIBPNG_VER < 10700 +#if PNG_LIBPNG_VER != 10700 /* LIBPNG BUG: otherwise libpng still expands to 8 bits! */ else { @@ -7172,7 +7171,7 @@ image_transform_png_set_tRNS_to_alpha_add(image_transform *this, * any action on a palette image. */ return -# if PNG_LIBPNG_VER >= 10700 +# if PNG_LIBPNG_VER == 10700 colour_type != PNG_COLOR_TYPE_PALETTE && # endif (colour_type & PNG_COLOR_MASK_ALPHA) == 0; @@ -7313,7 +7312,7 @@ image_transform_png_set_expand_gray_1_2_4_to_8_mod( const image_transform *this, image_pixel *that, png_const_structp pp, const transform_display *display) { -#if PNG_LIBPNG_VER < 10700 +#if PNG_LIBPNG_VER != 10700 image_transform_png_set_expand_mod(this, that, pp, display); #else /* Only expand grayscale of bit depth less than 8: */ @@ -7329,7 +7328,7 @@ static int image_transform_png_set_expand_gray_1_2_4_to_8_add(image_transform *this, const image_transform **that, png_byte colour_type, png_byte bit_depth) { -#if PNG_LIBPNG_VER < 10700 +#if PNG_LIBPNG_VER != 10700 return image_transform_png_set_expand_add(this, that, colour_type, bit_depth); #else @@ -7359,7 +7358,7 @@ image_transform_png_set_expand_16_set(const image_transform *this, png_set_expand_16(pp); /* NOTE: prior to 1.7 libpng does SET_EXPAND as well, so tRNS is expanded. */ -# if PNG_LIBPNG_VER < 10700 +# if PNG_LIBPNG_VER != 10700 if (that->this.has_tRNS) that->this.is_transparent = 1; # endif @@ -7412,7 +7411,7 @@ image_transform_png_set_scale_16_set(const image_transform *this, transform_display *that, png_structp pp, png_infop pi) { png_set_scale_16(pp); -# if PNG_LIBPNG_VER < 10700 +# if PNG_LIBPNG_VER != 10700 /* libpng will limit the gamma table size: */ that->max_gamma_8 = PNG_MAX_GAMMA_8; # endif @@ -7460,7 +7459,7 @@ image_transform_png_set_strip_16_set(const image_transform *this, transform_display *that, png_structp pp, png_infop pi) { png_set_strip_16(pp); -# if PNG_LIBPNG_VER < 10700 +# if PNG_LIBPNG_VER != 10700 /* libpng will limit the gamma table size: */ that->max_gamma_8 = PNG_MAX_GAMMA_8; # endif @@ -7647,7 +7646,7 @@ image_transform_png_set_rgb_to_gray_ini(const image_transform *this, else { /* The default (built in) coefficients, as above: */ -# if PNG_LIBPNG_VER < 10700 +# if PNG_LIBPNG_VER != 10700 data.red_coefficient = 6968 / 32768.; data.green_coefficient = 23434 / 32768.; data.blue_coefficient = 2366 / 32768.; @@ -7730,7 +7729,7 @@ image_transform_png_set_rgb_to_gray_ini(const image_transform *this, * conversion adds another +/-2 in the 16-bit case and * +/-(1<<(15-PNG_MAX_GAMMA_8)) in the 8-bit case. */ -# if PNG_LIBPNG_VER < 10700 +# if PNG_LIBPNG_VER != 10700 if (that->this.bit_depth < 16) that->max_gamma_8 = PNG_MAX_GAMMA_8; # endif @@ -7907,7 +7906,7 @@ image_transform_png_set_rgb_to_gray_mod(const image_transform *this, { double gray, err; -# if PNG_LIBPNG_VER < 10700 +# if PNG_LIBPNG_VER != 10700 if (that->colour_type == PNG_COLOR_TYPE_PALETTE) image_pixel_convert_PLTE(that); # endif @@ -8094,7 +8093,7 @@ image_transform_png_set_rgb_to_gray_mod(const image_transform *this, double b = that->bluef; double be = that->bluee; -# if PNG_LIBPNG_VER < 10700 +# if PNG_LIBPNG_VER != 10700 /* The true gray case involves no math in earlier versions (not * true, there was some if gamma correction was happening too.) */ @@ -9873,7 +9872,7 @@ gamma_component_validate(const char *name, const validate_info *vi, * lost. This can result in up to a +/-1 error in the presence of * an sbit less than the bit depth. */ -# if PNG_LIBPNG_VER < 10700 +# if PNG_LIBPNG_VER != 10700 # define SBIT_ERROR .5 # else # define SBIT_ERROR 1. @@ -10733,7 +10732,7 @@ static void perform_gamma_scale16_tests(png_modifier *pm) # ifndef PNG_MAX_GAMMA_8 # define PNG_MAX_GAMMA_8 11 # endif -# if defined PNG_MAX_GAMMA_8 || PNG_LIBPNG_VER < 10700 +# if defined PNG_MAX_GAMMA_8 || PNG_LIBPNG_VER != 10700 # define SBIT_16_TO_8 PNG_MAX_GAMMA_8 # else # define SBIT_16_TO_8 16 @@ -11736,7 +11735,7 @@ int main(int argc, char **argv) * code that 16-bit arithmetic is used for 8-bit samples when it would make a * difference. */ - pm.assume_16_bit_calculations = PNG_LIBPNG_VER >= 10700; + pm.assume_16_bit_calculations = PNG_LIBPNG_VER == 10700; /* Currently 16 bit expansion happens at the end of the pipeline, so the * calculations are done in the input bit depth not the output. @@ -11760,13 +11759,13 @@ int main(int argc, char **argv) pm.test_lbg_gamma_threshold = 1; pm.test_lbg_gamma_transform = PNG_LIBPNG_VER >= 10600; pm.test_lbg_gamma_sbit = 1; - pm.test_lbg_gamma_composition = PNG_LIBPNG_VER >= 10700; + pm.test_lbg_gamma_composition = PNG_LIBPNG_VER == 10700; /* And the test encodings */ pm.encodings = test_encodings; pm.nencodings = ARRAY_SIZE(test_encodings); -# if PNG_LIBPNG_VER < 10700 +# if PNG_LIBPNG_VER != 10700 pm.sbitlow = 8U; /* because libpng doesn't do sBIT below 8! */ # else pm.sbitlow = 1U; @@ -11796,7 +11795,7 @@ int main(int argc, char **argv) pm.maxout16 = .499; /* Error in *encoded* value */ pm.maxabs16 = .00005;/* 1/20000 */ pm.maxcalc16 =1./65535;/* +/-1 in 16 bits for compose errors */ -# if PNG_LIBPNG_VER < 10700 +# if PNG_LIBPNG_VER != 10700 pm.maxcalcG = 1./((1<<PNG_MAX_GAMMA_8)-1); # else pm.maxcalcG = 1./((1<<16)-1); diff --git a/source/libs/libpng/libpng-src/contrib/libtests/readpng.c b/source/libs/libpng/libpng-src/contrib/libtests/readpng.c index 7528e90bd..376616a1f 100644 --- a/source/libs/libpng/libpng-src/contrib/libtests/readpng.c +++ b/source/libs/libpng/libpng-src/contrib/libtests/readpng.c @@ -1,4 +1,3 @@ - /* readpng.c * * Copyright (c) 2013 John Cunningham Bowler diff --git a/source/libs/libpng/libpng-src/contrib/libtests/tarith.c b/source/libs/libpng/libpng-src/contrib/libtests/tarith.c index e35b7ab26..d41b9e177 100644 --- a/source/libs/libpng/libpng-src/contrib/libtests/tarith.c +++ b/source/libs/libpng/libpng-src/contrib/libtests/tarith.c @@ -1,4 +1,3 @@ - /* tarith.c * * Copyright (c) 2021 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/contrib/libtests/timepng.c b/source/libs/libpng/libpng-src/contrib/libtests/timepng.c index 0093a4548..a66f51345 100644 --- a/source/libs/libpng/libpng-src/contrib/libtests/timepng.c +++ b/source/libs/libpng/libpng-src/contrib/libtests/timepng.c @@ -1,4 +1,3 @@ - /* timepng.c * * Copyright (c) 2013,2016 John Cunningham Bowler diff --git a/source/libs/libpng/libpng-src/contrib/mips-mmi/linux.c b/source/libs/libpng/libpng-src/contrib/mips-mmi/linux.c index 31525fde9..dc003807c 100644 --- a/source/libs/libpng/libpng-src/contrib/mips-mmi/linux.c +++ b/source/libs/libpng/libpng-src/contrib/mips-mmi/linux.c @@ -1,4 +1,3 @@ - /* contrib/mips-mmi/linux.c * * Copyright (c) 2024 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/contrib/mips-msa/linux.c b/source/libs/libpng/libpng-src/contrib/mips-msa/linux.c index cae8ca50f..5651df707 100644 --- a/source/libs/libpng/libpng-src/contrib/mips-msa/linux.c +++ b/source/libs/libpng/libpng-src/contrib/mips-msa/linux.c @@ -1,4 +1,3 @@ - /* contrib/mips-msa/linux.c * * Copyright (c) 2020-2023 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/contrib/oss-fuzz/Dockerfile b/source/libs/libpng/libpng-src/contrib/oss-fuzz/Dockerfile index c9bc4145e..f5bc1a985 100644 --- a/source/libs/libpng/libpng-src/contrib/oss-fuzz/Dockerfile +++ b/source/libs/libpng/libpng-src/contrib/oss-fuzz/Dockerfile @@ -1,5 +1,3 @@ -# Copyright 2024 Cosmin Truta -# Copyright 2017 Glenn Randers-Pehrson # Copyright 2016 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -17,12 +15,11 @@ ################################################################################ FROM gcr.io/oss-fuzz-base/base-builder - +MAINTAINER glennrp@gmail.com RUN apt-get update && \ - apt-get install -y make autoconf automake libtool zlib1g-dev - -RUN git clone --depth=1 https://github.com/pnggroup/libpng.git && \ - git clone --depth=1 https://github.com/madler/zlib.git && \ - cp libpng/contrib/oss-fuzz/build.sh $SRC + apt-get install -y make autoconf automake libtool -WORKDIR /home/libpng +RUN git clone --depth 1 https://github.com/madler/zlib.git +RUN git clone --depth 1 https://github.com/glennrp/libpng.git +RUN cp libpng/contrib/oss-fuzz/build.sh $SRC +WORKDIR libpng diff --git a/source/libs/libpng/libpng-src/contrib/oss-fuzz/README.txt b/source/libs/libpng/libpng-src/contrib/oss-fuzz/README.txt index b01af52ac..66d5242c5 100644 --- a/source/libs/libpng/libpng-src/contrib/oss-fuzz/README.txt +++ b/source/libs/libpng/libpng-src/contrib/oss-fuzz/README.txt @@ -1,7 +1,3 @@ -libpng additions to oss-fuzz -============================ - -Copyright (c) 2024 Cosmin Truta Copyright (c) 2017 Glenn Randers-Pehrson This code is released under the libpng license. diff --git a/source/libs/libpng/libpng-src/contrib/oss-fuzz/build.sh b/source/libs/libpng/libpng-src/contrib/oss-fuzz/build.sh index 1970f9c06..7b8f02639 100755 --- a/source/libs/libpng/libpng-src/contrib/oss-fuzz/build.sh +++ b/source/libs/libpng/libpng-src/contrib/oss-fuzz/build.sh @@ -1,8 +1,6 @@ -#!/usr/bin/env bash -set -eu +#!/bin/bash -eu -# Copyright 2024 Cosmin Truta -# Copyright 2017 Glenn Randers-Pehrson +# Copyright 2017-2018 Glenn Randers-Pehrson # Copyright 2016 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -17,31 +15,36 @@ set -eu # See the License for the specific language governing permissions and # limitations under the License. # +# Revisions by Glenn Randers-Pehrson, 2017: +# 1. Build only the library, not the tools (changed "make -j$(nproc) all" to +# "make -j$(nproc) libpng16.la"). +# 2. Disabled WARNING and WRITE options in pnglibconf.dfa. +# 3. Build zlib alongside libpng ################################################################################ # Disable logging via library build configuration control. -sed -e "s/option STDIO/option STDIO disabled/" \ - -e "s/option WARNING /option WARNING disabled/" \ - -e "s/option WRITE enables WRITE_INT_FUNCTIONS/option WRITE disabled/" \ - scripts/pnglibconf.dfa >scripts/pnglibconf.dfa.tmp -mv -f scripts/pnglibconf.dfa.tmp scripts/pnglibconf.dfa +cat scripts/pnglibconf.dfa | \ + sed -e "s/option STDIO/option STDIO disabled/" \ + -e "s/option WARNING /option WARNING disabled/" \ + -e "s/option WRITE enables WRITE_INT_FUNCTIONS/option WRITE disabled/" \ +> scripts/pnglibconf.dfa.temp +mv scripts/pnglibconf.dfa.temp scripts/pnglibconf.dfa -# Build the libpng library ("libpng16.la"), excluding the auxiliary tools. +# build the libpng library. autoreconf -f -i ./configure --with-libpng-prefix=OSS_FUZZ_ make -j$(nproc) clean make -j$(nproc) libpng16.la -# Build libpng_read_fuzzer. +# build libpng_read_fuzzer. $CXX $CXXFLAGS -std=c++11 -I. \ $SRC/libpng/contrib/oss-fuzz/libpng_read_fuzzer.cc \ -o $OUT/libpng_read_fuzzer \ -lFuzzingEngine .libs/libpng16.a -lz -# Add seed corpus. +# add seed corpus. find $SRC/libpng -name "*.png" | grep -v crashers | \ xargs zip $OUT/libpng_read_fuzzer_seed_corpus.zip cp $SRC/libpng/contrib/oss-fuzz/*.dict \ - $SRC/libpng/contrib/oss-fuzz/*.options \ - $OUT/ + $SRC/libpng/contrib/oss-fuzz/*.options $OUT/ diff --git a/source/libs/libpng/libpng-src/contrib/oss-fuzz/libpng_read_fuzzer.cc b/source/libs/libpng/libpng-src/contrib/oss-fuzz/libpng_read_fuzzer.cc index ad9f9adc6..bfb5d9d3d 100644 --- a/source/libs/libpng/libpng-src/contrib/oss-fuzz/libpng_read_fuzzer.cc +++ b/source/libs/libpng/libpng-src/contrib/oss-fuzz/libpng_read_fuzzer.cc @@ -1,4 +1,3 @@ - // libpng_read_fuzzer.cc // Copyright 2017-2018 Glenn Randers-Pehrson // Copyright 2015 The Chromium Authors. All rights reserved. diff --git a/source/libs/libpng/libpng-src/contrib/pngexif/.editorconfig b/source/libs/libpng/libpng-src/contrib/pngexif/.editorconfig index ce8fbbfc1..e00082696 100644 --- a/source/libs/libpng/libpng-src/contrib/pngexif/.editorconfig +++ b/source/libs/libpng/libpng-src/contrib/pngexif/.editorconfig @@ -4,6 +4,7 @@ root = true [*] charset = utf-8 +indent_size = 4 indent_style = space insert_final_newline = true max_doc_length = 79 diff --git a/source/libs/libpng/libpng-src/contrib/pngminim/README b/source/libs/libpng/libpng-src/contrib/pngminim/README index e17fe35b6..51d5a3c23 100644 --- a/source/libs/libpng/libpng-src/contrib/pngminim/README +++ b/source/libs/libpng/libpng-src/contrib/pngminim/README @@ -1,4 +1,3 @@ - This demonstrates the use of PNG_USER_CONFIG, pngusr.h and pngusr.dfa to build minimal decoder, encoder, and progressive reader applications. diff --git a/source/libs/libpng/libpng-src/contrib/pngminus/CHANGES.txt b/source/libs/libpng/libpng-src/contrib/pngminus/CHANGES.txt index 85e590a4a..12535b13c 100644 --- a/source/libs/libpng/libpng-src/contrib/pngminus/CHANGES.txt +++ b/source/libs/libpng/libpng-src/contrib/pngminus/CHANGES.txt @@ -1,4 +1,3 @@ - pnm2png / png2pnm --- conversion from PBM/PGM/PPM-file to PNG-file copyright (C) 1999-2019 by Willem van Schaik <willem at schaik dot com> diff --git a/source/libs/libpng/libpng-src/contrib/pngminus/LICENSE.txt b/source/libs/libpng/libpng-src/contrib/pngminus/LICENSE.txt index a8d413728..6bdb4f879 100644 --- a/source/libs/libpng/libpng-src/contrib/pngminus/LICENSE.txt +++ b/source/libs/libpng/libpng-src/contrib/pngminus/LICENSE.txt @@ -1,4 +1,3 @@ - pnm2png / png2pnm --- conversion from PBM/PGM/PPM-file to PNG-file copyright (C) 1999-2019 by Willem van Schaik <willem at schaik dot com> diff --git a/source/libs/libpng/libpng-src/contrib/pngsuite/README b/source/libs/libpng/libpng-src/contrib/pngsuite/README index d236b02e7..25f0f54fd 100644 --- a/source/libs/libpng/libpng-src/contrib/pngsuite/README +++ b/source/libs/libpng/libpng-src/contrib/pngsuite/README @@ -1,4 +1,3 @@ - pngsuite -------- Copyright (c) Willem van Schaik, 1999, 2011, 2012 diff --git a/source/libs/libpng/libpng-src/contrib/pngsuite/interlaced/README b/source/libs/libpng/libpng-src/contrib/pngsuite/interlaced/README index f171eee01..296fffba6 100644 --- a/source/libs/libpng/libpng-src/contrib/pngsuite/interlaced/README +++ b/source/libs/libpng/libpng-src/contrib/pngsuite/interlaced/README @@ -1,2 +1 @@ - These images fail the "pngimage-quick" and "pngimage-full" tests. diff --git a/source/libs/libpng/libpng-src/contrib/testpngs/png-3/cicp-display-p3_reencoded.png b/source/libs/libpng/libpng-src/contrib/testpngs/png-3/cicp-display-p3_reencoded.png new file mode 100644 index 0000000000000000000000000000000000000000..91d8e6bc4819b50bdc57025b8ee826620c3facba GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^DL`z*!3-qlzV7P*QY^`y&H+5U42*fqkKY6NJOMr- zu0Z<#|Nq8mGlArsjT|?Dd|gi$$B>BDw`UD`fr^+HEc@pget2GNLc<qF6`@WSrHLMJ b>f~95Vo7yD_DZ$=K#dHZu6{1-oD!M<njk7A literal 0 HcmV?d00001 diff --git a/source/libs/libpng/libpng-src/contrib/visupng/.editorconfig b/source/libs/libpng/libpng-src/contrib/visupng/.editorconfig index d946b1446..d5bcb5312 100644 --- a/source/libs/libpng/libpng-src/contrib/visupng/.editorconfig +++ b/source/libs/libpng/libpng-src/contrib/visupng/.editorconfig @@ -5,7 +5,8 @@ root = true [*] charset = utf-8 end_of_line = unset -indent_style = unset +indent_size = 4 +indent_style = space insert_final_newline = true max_doc_length = 80 max_line_length = 100 diff --git a/source/libs/libpng/libpng-src/example.c b/source/libs/libpng/libpng-src/example.c index 3465fbb37..dd53d8a87 100644 --- a/source/libs/libpng/libpng-src/example.c +++ b/source/libs/libpng/libpng-src/example.c @@ -1,4 +1,3 @@ - #if 0 /* in case someone actually tries to compile this */ /* example.c - an example of using libpng diff --git a/source/libs/libpng/libpng-src/intel/filter_sse2_intrinsics.c b/source/libs/libpng/libpng-src/intel/filter_sse2_intrinsics.c index d3c0fe9e2..2993f650b 100644 --- a/source/libs/libpng/libpng-src/intel/filter_sse2_intrinsics.c +++ b/source/libs/libpng/libpng-src/intel/filter_sse2_intrinsics.c @@ -1,4 +1,3 @@ - /* filter_sse2_intrinsics.c - SSE2 optimized filter functions * * Copyright (c) 2018 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/intel/intel_init.c b/source/libs/libpng/libpng-src/intel/intel_init.c index 2f8168b7c..9e4610d25 100644 --- a/source/libs/libpng/libpng-src/intel/intel_init.c +++ b/source/libs/libpng/libpng-src/intel/intel_init.c @@ -1,4 +1,3 @@ - /* intel_init.c - SSE2 optimized filter functions * * Copyright (c) 2018 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/libpng-manual.txt b/source/libs/libpng/libpng-src/libpng-manual.txt index 2ce366d67..57881c19a 100644 --- a/source/libs/libpng/libpng-src/libpng-manual.txt +++ b/source/libs/libpng/libpng-src/libpng-manual.txt @@ -1,6 +1,6 @@ libpng-manual.txt - A description on how to use and modify libpng - Copyright (c) 2018-2024 Cosmin Truta + Copyright (c) 2018-2025 Cosmin Truta Copyright (c) 1998-2018 Glenn Randers-Pehrson This document is released under the libpng license. @@ -9,9 +9,9 @@ libpng-manual.txt - A description on how to use and modify libpng Based on: - libpng version 1.6.36, December 2018, through 1.6.44 - September 2024 + libpng version 1.6.36, December 2018, through 1.6.45 - January 2025 Updated and distributed by Cosmin Truta - Copyright (c) 2018-2024 Cosmin Truta + Copyright (c) 2018-2025 Cosmin Truta libpng versions 0.97, January 1998, through 1.6.35 - July 2018 Updated and distributed by Glenn Randers-Pehrson @@ -5173,7 +5173,7 @@ a pre-existing bug where the per-chunk 'keep' setting is ignored, and makes it possible to skip IDAT chunks in the sequential reader. The machine-generated configure files are no longer included in branches -libpng16 and later of the GIT repository. They continue to be included +libpng17 and later of the GIT repository. They continue to be included in the tarball releases, however. Libpng-1.6.0 through 1.6.2 used the CMF bytes at the beginning of the IDAT diff --git a/source/libs/libpng/libpng-src/libpng.3 b/source/libs/libpng/libpng-src/libpng.3 index 5a3c89cb9..3daec28c0 100644 --- a/source/libs/libpng/libpng-src/libpng.3 +++ b/source/libs/libpng/libpng-src/libpng.3 @@ -1,6 +1,6 @@ -.TH LIBPNG 3 "September 12, 2024" +.TH LIBPNG 3 "January 7, 2025" .SH NAME -libpng \- Portable Network Graphics (PNG) Reference Library 1.6.44 +libpng \- Portable Network Graphics (PNG) Reference Library 1.6.45 .SH SYNOPSIS \fB#include <png.h>\fP @@ -519,7 +519,7 @@ Following is a copy of the libpng-manual.txt file that accompanies libpng. .SH LIBPNG.TXT libpng-manual.txt - A description on how to use and modify libpng - Copyright (c) 2018-2024 Cosmin Truta + Copyright (c) 2018-2025 Cosmin Truta Copyright (c) 1998-2018 Glenn Randers-Pehrson This document is released under the libpng license. @@ -528,9 +528,9 @@ libpng-manual.txt - A description on how to use and modify libpng Based on: - libpng version 1.6.36, December 2018, through 1.6.44 - September 2024 + libpng version 1.6.36, December 2018, through 1.6.45 - January 2025 Updated and distributed by Cosmin Truta - Copyright (c) 2018-2024 Cosmin Truta + Copyright (c) 2018-2025 Cosmin Truta libpng versions 0.97, January 1998, through 1.6.35 - July 2018 Updated and distributed by Glenn Randers-Pehrson @@ -5692,7 +5692,7 @@ a pre-existing bug where the per-chunk 'keep' setting is ignored, and makes it possible to skip IDAT chunks in the sequential reader. The machine-generated configure files are no longer included in branches -libpng16 and later of the GIT repository. They continue to be included +libpng17 and later of the GIT repository. They continue to be included in the tarball releases, however. Libpng-1.6.0 through 1.6.2 used the CMF bytes at the beginning of the IDAT diff --git a/source/libs/libpng/libpng-src/libpngpf.3 b/source/libs/libpng/libpng-src/libpngpf.3 index b7557ca27..592981cf4 100644 --- a/source/libs/libpng/libpng-src/libpngpf.3 +++ b/source/libs/libpng/libpng-src/libpngpf.3 @@ -1,6 +1,6 @@ -.TH LIBPNGPF 3 "September 12, 2024" +.TH LIBPNGPF 3 "January 7, 2025" .SH NAME -libpng \- Portable Network Graphics (PNG) Reference Library 1.6.44 +libpng \- Portable Network Graphics (PNG) Reference Library 1.6.45 (private functions) .SH SYNOPSIS diff --git a/source/libs/libpng/libpng-src/mips/filter_msa_intrinsics.c b/source/libs/libpng/libpng-src/mips/filter_msa_intrinsics.c index 1b734f4d9..a294f5513 100644 --- a/source/libs/libpng/libpng-src/mips/filter_msa_intrinsics.c +++ b/source/libs/libpng/libpng-src/mips/filter_msa_intrinsics.c @@ -1,4 +1,3 @@ - /* filter_msa_intrinsics.c - MSA optimised filter functions * * Copyright (c) 2018-2024 Cosmin Truta @@ -47,7 +46,7 @@ uint8_t *psrc_lw_m = (uint8_t *) (psrc); \ uint32_t val_m; \ \ - asm volatile ( \ + __asm__ volatile ( \ "lw %[val_m], %[psrc_lw_m] \n\t" \ \ : [val_m] "=r" (val_m) \ @@ -62,7 +61,7 @@ uint8_t *pdst_sh_m = (uint8_t *) (pdst); \ uint16_t val_m = (val); \ \ - asm volatile ( \ + __asm__ volatile ( \ "sh %[val_m], %[pdst_sh_m] \n\t" \ \ : [pdst_sh_m] "=m" (*pdst_sh_m) \ @@ -75,7 +74,7 @@ uint8_t *pdst_sw_m = (uint8_t *) (pdst); \ uint32_t val_m = (val); \ \ - asm volatile ( \ + __asm__ volatile ( \ "sw %[val_m], %[pdst_sw_m] \n\t" \ \ : [pdst_sw_m] "=m" (*pdst_sw_m) \ @@ -83,20 +82,20 @@ ); \ } - #if (__mips == 64) + #if __mips == 64 #define SD(val, pdst) \ { \ uint8_t *pdst_sd_m = (uint8_t *) (pdst); \ uint64_t val_m = (val); \ \ - asm volatile ( \ + __asm__ volatile ( \ "sd %[val_m], %[pdst_sd_m] \n\t" \ \ : [pdst_sd_m] "=m" (*pdst_sd_m) \ : [val_m] "r" (val_m) \ ); \ } - #else + #else #define SD(val, pdst) \ { \ uint8_t *pdst_sd_m = (uint8_t *) (pdst); \ @@ -108,17 +107,17 @@ SW(val0_m, pdst_sd_m); \ SW(val1_m, pdst_sd_m + 4); \ } - #endif + #endif /* __mips == 64 */ #else #define MSA_SRLI_B(a, b) (a >> b) -#if (__mips_isa_rev >= 6) +#if __mips_isa_rev >= 6 #define LW(psrc) \ ( { \ uint8_t *psrc_lw_m = (uint8_t *) (psrc); \ uint32_t val_m; \ \ - asm volatile ( \ + __asm__ volatile ( \ "lw %[val_m], %[psrc_lw_m] \n\t" \ \ : [val_m] "=r" (val_m) \ @@ -133,7 +132,7 @@ uint8_t *pdst_sh_m = (uint8_t *) (pdst); \ uint16_t val_m = (val); \ \ - asm volatile ( \ + __asm__ volatile ( \ "sh %[val_m], %[pdst_sh_m] \n\t" \ \ : [pdst_sh_m] "=m" (*pdst_sh_m) \ @@ -146,7 +145,7 @@ uint8_t *pdst_sw_m = (uint8_t *) (pdst); \ uint32_t val_m = (val); \ \ - asm volatile ( \ + __asm__ volatile ( \ "sw %[val_m], %[pdst_sw_m] \n\t" \ \ : [pdst_sw_m] "=m" (*pdst_sw_m) \ @@ -154,20 +153,20 @@ ); \ } - #if (__mips == 64) + #if __mips == 64 #define SD(val, pdst) \ { \ uint8_t *pdst_sd_m = (uint8_t *) (pdst); \ uint64_t val_m = (val); \ \ - asm volatile ( \ + __asm__ volatile ( \ "sd %[val_m], %[pdst_sd_m] \n\t" \ \ : [pdst_sd_m] "=m" (*pdst_sd_m) \ : [val_m] "r" (val_m) \ ); \ } - #else + #else #define SD(val, pdst) \ { \ uint8_t *pdst_sd_m = (uint8_t *) (pdst); \ @@ -179,14 +178,14 @@ SW(val0_m, pdst_sd_m); \ SW(val1_m, pdst_sd_m + 4); \ } - #endif -#else // !(__mips_isa_rev >= 6) + #endif /* __mips == 64 */ +#else #define LW(psrc) \ ( { \ uint8_t *psrc_lw_m = (uint8_t *) (psrc); \ uint32_t val_m; \ \ - asm volatile ( \ + __asm__ volatile ( \ "ulw %[val_m], %[psrc_lw_m] \n\t" \ \ : [val_m] "=r" (val_m) \ @@ -201,7 +200,7 @@ uint8_t *pdst_sh_m = (uint8_t *) (pdst); \ uint16_t val_m = (val); \ \ - asm volatile ( \ + __asm__ volatile ( \ "ush %[val_m], %[pdst_sh_m] \n\t" \ \ : [pdst_sh_m] "=m" (*pdst_sh_m) \ @@ -214,7 +213,7 @@ uint8_t *pdst_sw_m = (uint8_t *) (pdst); \ uint32_t val_m = (val); \ \ - asm volatile ( \ + __asm__ volatile ( \ "usw %[val_m], %[pdst_sw_m] \n\t" \ \ : [pdst_sw_m] "=m" (*pdst_sw_m) \ @@ -222,7 +221,7 @@ ); \ } - #define SD(val, pdst) \ + #define SD(val, pdst) \ { \ uint8_t *pdst_sd_m = (uint8_t *) (pdst); \ uint32_t val0_m, val1_m; \ @@ -238,14 +237,14 @@ { \ uint8_t *pdst_m = (uint8_t *) (pdst); \ \ - asm volatile ( \ + __asm__ volatile ( \ "usw $0, %[pdst_m] \n\t" \ \ : [pdst_m] "=m" (*pdst_m) \ : \ ); \ } -#endif // (__mips_isa_rev >= 6) +#endif /* __mips_isa_rev >= 6 */ #endif #define LD_B(RTYPE, psrc) *((RTYPE *) (psrc)) diff --git a/source/libs/libpng/libpng-src/mips/mips_init.c b/source/libs/libpng/libpng-src/mips/mips_init.c index 5c6fa1dbf..143f0a371 100644 --- a/source/libs/libpng/libpng-src/mips/mips_init.c +++ b/source/libs/libpng/libpng-src/mips/mips_init.c @@ -1,4 +1,3 @@ - /* mips_init.c - MSA optimised filter functions * * Copyright (c) 2018-2024 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/png.5 b/source/libs/libpng/libpng-src/png.5 index 14a3c432b..082bf8b3f 100644 --- a/source/libs/libpng/libpng-src/png.5 +++ b/source/libs/libpng/libpng-src/png.5 @@ -1,4 +1,4 @@ -.TH PNG 5 "September 12, 2024" +.TH PNG 5 "January 7, 2025" .SH NAME png \- Portable Network Graphics (PNG) format @@ -20,6 +20,11 @@ matching on heterogeneous platforms. .SH "SEE ALSO" .BR "libpng"(3), " zlib"(3), " deflate"(5), " " and " zlib"(5) .LP +PNG Specification (Third Edition) Candidate Recommendation Draft, July 2024: +.IP +.br +https://www.w3.org/TR/2024/CRD-png-3-20240718/ +.LP PNG Specification (Second Edition), November 2003: .IP .br diff --git a/source/libs/libpng/libpng-src/png.c b/source/libs/libpng/libpng-src/png.c index 9a9fb23d9..466af7d99 100644 --- a/source/libs/libpng/libpng-src/png.c +++ b/source/libs/libpng/libpng-src/png.c @@ -1,7 +1,6 @@ - /* png.c - location for general purpose libpng functions * - * Copyright (c) 2018-2024 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -14,7 +13,7 @@ #include "pngpriv.h" /* Generate a compiler error if there is an old png.h in the search path. */ -typedef png_libpng_version_1_6_44 Your_png_h_is_not_version_1_6_44; +typedef png_libpng_version_1_6_45 Your_png_h_is_not_version_1_6_45; /* Tells libpng that we have already handled the first "num_bytes" bytes * of the PNG file signature. If the PNG data is embedded into another @@ -794,8 +793,8 @@ png_get_copyright(png_const_structrp png_ptr) return PNG_STRING_COPYRIGHT #else return PNG_STRING_NEWLINE \ - "libpng version 1.6.44" PNG_STRING_NEWLINE \ - "Copyright (c) 2018-2024 Cosmin Truta" PNG_STRING_NEWLINE \ + "libpng version 1.6.45" PNG_STRING_NEWLINE \ + "Copyright (c) 2018-2025 Cosmin Truta" PNG_STRING_NEWLINE \ "Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson" \ PNG_STRING_NEWLINE \ "Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \ @@ -1203,22 +1202,66 @@ png_colorspace_sync(png_const_structrp png_ptr, png_inforp info_ptr) #endif /* GAMMA */ #ifdef PNG_COLORSPACE_SUPPORTED -static int -png_safe_add(png_int_32 *addend0_and_result, png_int_32 addend1, - png_int_32 addend2) { - /* Safely add three integers. Returns 0 on success, 1 on overlow. +static png_int_32 +png_fp_add(png_int_32 addend0, png_int_32 addend1, int *error) +{ + /* Safely add two fixed point values setting an error flag and returning 0.5 + * on overflow. * IMPLEMENTATION NOTE: ANSI requires signed overflow not to occur, therefore * relying on addition of two positive values producing a negative one is not * safe. */ - int addend0 = *addend0_and_result; - if (0x7fffffff - addend0 < addend1) - return 1; - addend0 += addend1; - if (0x7fffffff - addend1 < addend2) - return 1; - *addend0_and_result = addend0 + addend2; - return 0; + if (addend0 > 0) + { + if (0x7fffffff - addend0 >= addend1) + return addend0+addend1; + } + else if (addend0 < 0) + { + if (-0x7fffffff - addend0 <= addend1) + return addend0+addend1; + } + else + return addend1; + + *error = 1; + return PNG_FP_1/2; +} + +static png_int_32 +png_fp_sub(png_int_32 addend0, png_int_32 addend1, int *error) +{ + /* As above but calculate addend0-addend1. */ + if (addend1 > 0) + { + if (-0x7fffffff + addend1 <= addend0) + return addend0-addend1; + } + else if (addend1 < 0) + { + if (0x7fffffff + addend1 >= addend0) + return addend0-addend1; + } + else + return addend0; + + *error = 1; + return PNG_FP_1/2; +} + +static int +png_safe_add(png_int_32 *addend0_and_result, png_int_32 addend1, + png_int_32 addend2) +{ + /* Safely add three integers. Returns 0 on success, 1 on overflow. Does not + * set the result on overflow. + */ + int error = 0; + int result = png_fp_add(*addend0_and_result, + png_fp_add(addend1, addend2, &error), + &error); + if (!error) *addend0_and_result = result; + return error; } /* Added at libpng-1.5.5 to support read and write of true CIEXYZ values for @@ -1229,7 +1272,7 @@ png_safe_add(png_int_32 *addend0_and_result, png_int_32 addend1, static int png_xy_from_XYZ(png_xy *xy, const png_XYZ *XYZ) { - png_int_32 d, dred, dgreen, dwhite, whiteX, whiteY; + png_int_32 d, dred, dgreen, dblue, dwhite, whiteX, whiteY; /* 'd' in each of the blocks below is just X+Y+Z for each component, * x, y and z are X,Y,Z/(X+Y+Z). @@ -1237,44 +1280,52 @@ png_xy_from_XYZ(png_xy *xy, const png_XYZ *XYZ) d = XYZ->red_X; if (png_safe_add(&d, XYZ->red_Y, XYZ->red_Z)) return 1; - if (png_muldiv(&xy->redx, XYZ->red_X, PNG_FP_1, d) == 0) + dred = d; + if (png_muldiv(&xy->redx, XYZ->red_X, PNG_FP_1, dred) == 0) return 1; - if (png_muldiv(&xy->redy, XYZ->red_Y, PNG_FP_1, d) == 0) + if (png_muldiv(&xy->redy, XYZ->red_Y, PNG_FP_1, dred) == 0) return 1; - dred = d; - whiteX = XYZ->red_X; - whiteY = XYZ->red_Y; d = XYZ->green_X; if (png_safe_add(&d, XYZ->green_Y, XYZ->green_Z)) return 1; - if (png_muldiv(&xy->greenx, XYZ->green_X, PNG_FP_1, d) == 0) + dgreen = d; + if (png_muldiv(&xy->greenx, XYZ->green_X, PNG_FP_1, dgreen) == 0) return 1; - if (png_muldiv(&xy->greeny, XYZ->green_Y, PNG_FP_1, d) == 0) + if (png_muldiv(&xy->greeny, XYZ->green_Y, PNG_FP_1, dgreen) == 0) return 1; - dgreen = d; - whiteX += XYZ->green_X; - whiteY += XYZ->green_Y; d = XYZ->blue_X; if (png_safe_add(&d, XYZ->blue_Y, XYZ->blue_Z)) return 1; - if (png_muldiv(&xy->bluex, XYZ->blue_X, PNG_FP_1, d) == 0) + dblue = d; + if (png_muldiv(&xy->bluex, XYZ->blue_X, PNG_FP_1, dblue) == 0) return 1; - if (png_muldiv(&xy->bluey, XYZ->blue_Y, PNG_FP_1, d) == 0) + if (png_muldiv(&xy->bluey, XYZ->blue_Y, PNG_FP_1, dblue) == 0) return 1; - whiteX += XYZ->blue_X; - whiteY += XYZ->blue_Y; /* The reference white is simply the sum of the end-point (X,Y,Z) vectors so * the fillowing calculates (X+Y+Z) of the reference white (media white, * encoding white) itself: */ + d = dblue; if (png_safe_add(&d, dred, dgreen)) return 1; - dwhite = d; + /* Find the white X,Y values from the sum of the red, green and blue X,Y + * values. + */ + d = XYZ->red_X; + if (png_safe_add(&d, XYZ->green_X, XYZ->blue_X)) + return 1; + whiteX = d; + + d = XYZ->red_Y; + if (png_safe_add(&d, XYZ->green_Y, XYZ->blue_Y)) + return 1; + whiteY = d; + if (png_muldiv(&xy->whitex, whiteX, PNG_FP_1, dwhite) == 0) return 1; if (png_muldiv(&xy->whitey, whiteY, PNG_FP_1, dwhite) == 0) @@ -1289,6 +1340,29 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy) png_fixed_point red_inverse, green_inverse, blue_scale; png_fixed_point left, right, denominator; + /* Check xy and, implicitly, z. Note that wide gamut color spaces typically + * have end points with 0 tristimulus values (these are impossible end + * points, but they are used to cover the possible colors). We check + * xy->whitey against 5, not 0, to avoid a possible integer overflow. + * + * The limits here will *not* accept ACES AP0, where bluey is -7700 + * (-0.0770) because the PNG spec itself requires the xy values to be + * unsigned. whitey is also required to be 5 or more to avoid overflow. + * + * Instead the upper limits have been relaxed to accomodate ACES AP1 where + * redz ends up as -600 (-0.006). ProPhotoRGB was already "in range." + * The new limit accomodates the AP0 and AP1 ranges for z but not AP0 redy. + */ + const png_fixed_point fpLimit = PNG_FP_1+(PNG_FP_1/10); + if (xy->redx < 0 || xy->redx > fpLimit) return 1; + if (xy->redy < 0 || xy->redy > fpLimit-xy->redx) return 1; + if (xy->greenx < 0 || xy->greenx > fpLimit) return 1; + if (xy->greeny < 0 || xy->greeny > fpLimit-xy->greenx) return 1; + if (xy->bluex < 0 || xy->bluex > fpLimit) return 1; + if (xy->bluey < 0 || xy->bluey > fpLimit-xy->bluex) return 1; + if (xy->whitex < 0 || xy->whitex > fpLimit) return 1; + if (xy->whitey < 5 || xy->whitey > fpLimit-xy->whitex) return 1; + /* The reverse calculation is more difficult because the original tristimulus * value had 9 independent values (red,green,blue)x(X,Y,Z) however only 8 * derived values were recorded in the cHRM chunk; @@ -1432,18 +1506,23 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy) * (green-x - blue-x)*(red-y - blue-y)-(green-y - blue-y)*(red-x - blue-x) * * Accuracy: - * The input values have 5 decimal digits of accuracy. The values are all in - * the range 0 < value < 1, so simple products are in the same range but may - * need up to 10 decimal digits to preserve the original precision and avoid - * underflow. Because we are using a 32-bit signed representation we cannot - * match this; the best is a little over 9 decimal digits, less than 10. + * The input values have 5 decimal digits of accuracy. + * + * In the previous implementation the values were all in the range 0 < value + * < 1, so simple products are in the same range but may need up to 10 + * decimal digits to preserve the original precision and avoid underflow. + * Because we are using a 32-bit signed representation we cannot match this; + * the best is a little over 9 decimal digits, less than 10. + * + * This range has now been extended to allow values up to 1.1, or 110,000 in + * fixed point. * * The approach used here is to preserve the maximum precision within the * signed representation. Because the red-scale calculation above uses the - * difference between two products of values that must be in the range -1..+1 - * it is sufficient to divide the product by 7; ceil(100,000/32767*2). The - * factor is irrelevant in the calculation because it is applied to both - * numerator and denominator. + * difference between two products of values that must be in the range + * -1.1..+1.1 it is sufficient to divide the product by 8; + * ceil(121,000/32767*2). The factor is irrelevant in the calculation + * because it is applied to both numerator and denominator. * * Note that the values of the differences of the products of the * chromaticities in the above equations tend to be small, for example for @@ -1465,19 +1544,25 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy) * Adobe Wide Gamut RGB * 0.258728243040113 0.724682314948566 0.016589442011321 */ - /* By the argument, above overflow should be impossible here. The return - * value of 2 indicates an internal error to the caller. + int error = 0; + + /* By the argument above overflow should be impossible here, however the + * code now simply returns a failure code. The xy subtracts in the arguments + * to png_muldiv are *not* checked for overflow because the checks at the + * start guarantee they are in the range 0..110000 and png_fixed_point is a + * 32-bit signed number. */ - if (png_muldiv(&left, xy->greenx-xy->bluex, xy->redy - xy->bluey, 7) == 0) + if (png_muldiv(&left, xy->greenx-xy->bluex, xy->redy - xy->bluey, 8) == 0) return 1; - if (png_muldiv(&right, xy->greeny-xy->bluey, xy->redx - xy->bluex, 7) == 0) + if (png_muldiv(&right, xy->greeny-xy->bluey, xy->redx - xy->bluex, 8) == 0) return 1; - denominator = left - right; + denominator = png_fp_sub(left, right, &error); + if (error) return 1; /* Now find the red numerator. */ - if (png_muldiv(&left, xy->greenx-xy->bluex, xy->whitey-xy->bluey, 7) == 0) + if (png_muldiv(&left, xy->greenx-xy->bluex, xy->whitey-xy->bluey, 8) == 0) return 1; - if (png_muldiv(&right, xy->greeny-xy->bluey, xy->whitex-xy->bluex, 7) == 0) + if (png_muldiv(&right, xy->greeny-xy->bluey, xy->whitex-xy->bluex, 8) == 0) return 1; /* Overflow is possible here and it indicates an extreme set of PNG cHRM @@ -1485,29 +1570,35 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy) * scale value because this allows us to delay the multiplication of white-y * into the denominator, which tends to produce a small number. */ - if (png_muldiv(&red_inverse, xy->whitey, denominator, left-right) == 0 || + if (png_muldiv(&red_inverse, xy->whitey, denominator, + png_fp_sub(left, right, &error)) == 0 || error || red_inverse <= xy->whitey /* r+g+b scales = white scale */) return 1; /* Similarly for green_inverse: */ - if (png_muldiv(&left, xy->redy-xy->bluey, xy->whitex-xy->bluex, 7) == 0) + if (png_muldiv(&left, xy->redy-xy->bluey, xy->whitex-xy->bluex, 8) == 0) return 1; - if (png_muldiv(&right, xy->redx-xy->bluex, xy->whitey-xy->bluey, 7) == 0) + if (png_muldiv(&right, xy->redx-xy->bluex, xy->whitey-xy->bluey, 8) == 0) return 1; - if (png_muldiv(&green_inverse, xy->whitey, denominator, left-right) == 0 || + if (png_muldiv(&green_inverse, xy->whitey, denominator, + png_fp_sub(left, right, &error)) == 0 || error || green_inverse <= xy->whitey) return 1; /* And the blue scale, the checks above guarantee this can't overflow but it * can still produce 0 for extreme cHRM values. */ - blue_scale = png_reciprocal(xy->whitey) - png_reciprocal(red_inverse) - - png_reciprocal(green_inverse); - if (blue_scale <= 0) + blue_scale = png_fp_sub(png_fp_sub(png_reciprocal(xy->whitey), + png_reciprocal(red_inverse), &error), + png_reciprocal(green_inverse), &error); + if (error || blue_scale <= 0) return 1; - /* And fill in the png_XYZ: */ + /* And fill in the png_XYZ. Again the subtracts are safe because of the + * checks on the xy values at the start (the subtracts just calculate the + * corresponding z values.) + */ if (png_muldiv(&XYZ->red_X, xy->redx, PNG_FP_1, red_inverse) == 0) return 1; if (png_muldiv(&XYZ->red_Y, xy->redy, PNG_FP_1, red_inverse) == 0) diff --git a/source/libs/libpng/libpng-src/png.h b/source/libs/libpng/libpng-src/png.h index 04a233f39..d25fbe9ed 100644 --- a/source/libs/libpng/libpng-src/png.h +++ b/source/libs/libpng/libpng-src/png.h @@ -1,9 +1,8 @@ - /* png.h - header file for PNG reference library * - * libpng version 1.6.44 + * libpng version 1.6.45 * - * Copyright (c) 2018-2024 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -15,7 +14,7 @@ * libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger * libpng versions 0.97, January 1998, through 1.6.35, July 2018: * Glenn Randers-Pehrson - * libpng versions 1.6.36, December 2018, through 1.6.44, September 2024: + * libpng versions 1.6.36, December 2018, through 1.6.45, January 2025: * Cosmin Truta * See also "Contributing Authors", below. */ @@ -27,8 +26,8 @@ * PNG Reference Library License version 2 * --------------------------------------- * - * * Copyright (c) 1995-2024 The PNG Reference Library Authors. - * * Copyright (c) 2018-2024 Cosmin Truta. + * * Copyright (c) 1995-2025 The PNG Reference Library Authors. + * * Copyright (c) 2018-2025 Cosmin Truta. * * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. * * Copyright (c) 1996-1997 Andreas Dilger. * * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -239,7 +238,7 @@ * ... * 1.5.30 15 10530 15.so.15.30[.0] * ... - * 1.6.44 16 10644 16.so.16.44[.0] + * 1.6.45 16 10645 16.so.16.45[.0] * * Henceforth the source version will match the shared-library major and * minor numbers; the shared-library major version number will be used for @@ -275,7 +274,7 @@ */ /* Version information for png.h - this should match the version in png.c */ -#define PNG_LIBPNG_VER_STRING "1.6.44" +#define PNG_LIBPNG_VER_STRING "1.6.45" #define PNG_HEADER_VERSION_STRING " libpng version " PNG_LIBPNG_VER_STRING "\n" /* The versions of shared library builds should stay in sync, going forward */ @@ -286,7 +285,7 @@ /* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ #define PNG_LIBPNG_VER_MAJOR 1 #define PNG_LIBPNG_VER_MINOR 6 -#define PNG_LIBPNG_VER_RELEASE 44 +#define PNG_LIBPNG_VER_RELEASE 45 /* This should be zero for a public release, or non-zero for a * development version. @@ -317,7 +316,7 @@ * From version 1.0.1 it is: * XXYYZZ, where XX=major, YY=minor, ZZ=release */ -#define PNG_LIBPNG_VER 10644 /* 1.6.44 */ +#define PNG_LIBPNG_VER 10645 /* 1.6.45 */ /* Library configuration: these options cannot be changed after * the library has been built. @@ -427,7 +426,7 @@ extern "C" { /* This triggers a compiler error in png.c, if png.c and png.h * do not agree upon the version number. */ -typedef char* png_libpng_version_1_6_44; +typedef char* png_libpng_version_1_6_45; /* Basic control structions. Read libpng-manual.txt or libpng.3 for more info. * @@ -745,6 +744,7 @@ typedef png_unknown_chunk * * png_unknown_chunkpp; #define PNG_INFO_sCAL 0x4000U /* ESR, 1.0.6 */ #define PNG_INFO_IDAT 0x8000U /* ESR, 1.0.6 */ #define PNG_INFO_eXIf 0x10000U /* GR-P, 1.6.31 */ +#define PNG_INFO_cICP 0x20000U /* This is used for the transformation routines, as some of them * change these values for the row. It also should enable using @@ -1974,6 +1974,17 @@ PNG_FIXED_EXPORT(233, void, png_set_cHRM_XYZ_fixed, (png_const_structrp png_ptr, png_fixed_point int_blue_Z)) #endif +#ifdef PNG_cICP_SUPPORTED +PNG_EXPORT(250, png_uint_32, png_get_cICP, (png_const_structrp png_ptr, + png_inforp info_ptr, png_bytep colour_primaries, + png_bytep transfer_function, png_bytep matrix_coefficients, + png_bytep video_full_range_flag)); +PNG_EXPORT(251, void, png_set_cICP, (png_const_structrp png_ptr, + png_inforp info_ptr, png_byte colour_primaries, + png_byte transfer_function, png_byte matrix_coefficients, + png_byte video_full_range_flag)); +#endif + #ifdef PNG_eXIf_SUPPORTED PNG_EXPORT(246, png_uint_32, png_get_eXIf, (png_const_structrp png_ptr, png_inforp info_ptr, png_bytep *exif)); @@ -3238,7 +3249,7 @@ PNG_EXPORT(244, int, png_set_option, (png_structrp png_ptr, int option, * one to use is one more than this.) */ #ifdef PNG_EXPORT_LAST_ORDINAL - PNG_EXPORT_LAST_ORDINAL(249); + PNG_EXPORT_LAST_ORDINAL(251); #endif #ifdef __cplusplus diff --git a/source/libs/libpng/libpng-src/pngconf.h b/source/libs/libpng/libpng-src/pngconf.h index 4a4b58ac8..11a40b8d8 100644 --- a/source/libs/libpng/libpng-src/pngconf.h +++ b/source/libs/libpng/libpng-src/pngconf.h @@ -1,9 +1,8 @@ - /* pngconf.h - machine-configurable file for libpng * - * libpng version 1.6.44 + * libpng version 1.6.45 * - * Copyright (c) 2018-2024 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. diff --git a/source/libs/libpng/libpng-src/pngdebug.h b/source/libs/libpng/libpng-src/pngdebug.h index 00d5a4569..ab9ea632d 100644 --- a/source/libs/libpng/libpng-src/pngdebug.h +++ b/source/libs/libpng/libpng-src/pngdebug.h @@ -1,4 +1,3 @@ - /* pngdebug.h - Debugging macros for libpng, also used in pngtest.c * * Copyright (c) 2018 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/pngerror.c b/source/libs/libpng/libpng-src/pngerror.c index 1babf9f8d..aa0ae58e1 100644 --- a/source/libs/libpng/libpng-src/pngerror.c +++ b/source/libs/libpng/libpng-src/pngerror.c @@ -1,4 +1,3 @@ - /* pngerror.c - stub functions for i/o and memory allocation * * Copyright (c) 2018-2024 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/pngget.c b/source/libs/libpng/libpng-src/pngget.c index 1084b268f..9be881432 100644 --- a/source/libs/libpng/libpng-src/pngget.c +++ b/source/libs/libpng/libpng-src/pngget.c @@ -1,4 +1,3 @@ - /* pngget.c - retrieval of values from info struct * * Copyright (c) 2018-2024 Cosmin Truta @@ -785,6 +784,31 @@ png_get_sPLT(png_const_structrp png_ptr, png_inforp info_ptr, } #endif +#ifdef PNG_cICP_SUPPORTED +png_uint_32 PNGAPI +png_get_cICP(png_const_structrp png_ptr, + png_inforp info_ptr, png_bytep colour_primaries, + png_bytep transfer_function, png_bytep matrix_coefficients, + png_bytep video_full_range_flag) +{ + png_debug1(1, "in %s retrieval function", "cICP"); + + if (png_ptr != NULL && info_ptr != NULL && + (info_ptr->valid & PNG_INFO_cICP) != 0 && + colour_primaries != NULL && transfer_function != NULL && + matrix_coefficients != NULL && video_full_range_flag != NULL) + { + *colour_primaries = info_ptr->cicp_colour_primaries; + *transfer_function = info_ptr->cicp_transfer_function; + *matrix_coefficients = info_ptr->cicp_matrix_coefficients; + *video_full_range_flag = info_ptr->cicp_video_full_range_flag; + return (PNG_INFO_cICP); + } + + return (0); +} +#endif + #ifdef PNG_eXIf_SUPPORTED png_uint_32 PNGAPI png_get_eXIf(png_const_structrp png_ptr, png_inforp info_ptr, diff --git a/source/libs/libpng/libpng-src/pnginfo.h b/source/libs/libpng/libpng-src/pnginfo.h index 1f98dedc4..e85420c1a 100644 --- a/source/libs/libpng/libpng-src/pnginfo.h +++ b/source/libs/libpng/libpng-src/pnginfo.h @@ -1,4 +1,3 @@ - /* pnginfo.h - header file for PNG reference library * * Copyright (c) 2018 Cosmin Truta @@ -101,6 +100,14 @@ struct png_info_def png_colorspace colorspace; #endif +#ifdef PNG_cICP_SUPPORTED + /* cICP chunk data */ + png_byte cicp_colour_primaries; + png_byte cicp_transfer_function; + png_byte cicp_matrix_coefficients; + png_byte cicp_video_full_range_flag; +#endif + #ifdef PNG_iCCP_SUPPORTED /* iCCP chunk data. */ png_charp iccp_name; /* profile name */ diff --git a/source/libs/libpng/libpng-src/pnglibconf.h b/source/libs/libpng/libpng-src/pnglibconf.h index f5ce441ec..695aae6fe 100644 --- a/source/libs/libpng/libpng-src/pnglibconf.h +++ b/source/libs/libpng/libpng-src/pnglibconf.h @@ -1,8 +1,8 @@ /* pnglibconf.h - library build configuration */ -/* libpng version 1.6.44 */ +/* libpng version 1.6.45 */ -/* Copyright (c) 2018-2024 Cosmin Truta */ +/* Copyright (c) 2018-2025 Cosmin Truta */ /* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */ /* This code is released under the libpng license. */ @@ -88,6 +88,7 @@ #define PNG_READ_USER_TRANSFORM_SUPPORTED #define PNG_READ_bKGD_SUPPORTED #define PNG_READ_cHRM_SUPPORTED +#define PNG_READ_cICP_SUPPORTED #define PNG_READ_eXIf_SUPPORTED #define PNG_READ_gAMA_SUPPORTED #define PNG_READ_hIST_SUPPORTED @@ -158,6 +159,7 @@ #define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED #define PNG_WRITE_bKGD_SUPPORTED #define PNG_WRITE_cHRM_SUPPORTED +#define PNG_WRITE_cICP_SUPPORTED #define PNG_WRITE_eXIf_SUPPORTED #define PNG_WRITE_gAMA_SUPPORTED #define PNG_WRITE_hIST_SUPPORTED @@ -176,6 +178,7 @@ #define PNG_WRITE_zTXt_SUPPORTED #define PNG_bKGD_SUPPORTED #define PNG_cHRM_SUPPORTED +#define PNG_cICP_SUPPORTED #define PNG_eXIf_SUPPORTED #define PNG_gAMA_SUPPORTED #define PNG_hIST_SUPPORTED diff --git a/source/libs/libpng/libpng-src/pngmem.c b/source/libs/libpng/libpng-src/pngmem.c index 09ed9c1c9..d391c13ff 100644 --- a/source/libs/libpng/libpng-src/pngmem.c +++ b/source/libs/libpng/libpng-src/pngmem.c @@ -1,4 +1,3 @@ - /* pngmem.c - stub functions for memory allocation * * Copyright (c) 2018 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/pngpread.c b/source/libs/libpng/libpng-src/pngpread.c index ffab19c08..1bf880eab 100644 --- a/source/libs/libpng/libpng-src/pngpread.c +++ b/source/libs/libpng/libpng-src/pngpread.c @@ -1,4 +1,3 @@ - /* pngpread.c - read a png file in push mode * * Copyright (c) 2018-2024 Cosmin Truta @@ -32,6 +31,21 @@ if (png_ptr->push_length + 4 > png_ptr->buffer_size) \ if (png_ptr->buffer_size < N) \ { png_push_save_buffer(png_ptr); return; } +#ifdef PNG_READ_INTERLACING_SUPPORTED +/* Arrays to facilitate interlacing - use pass (0 - 6) as index. */ + +/* Start of interlace block */ +static const png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; +/* Offset to next interlace block */ +static const png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; +/* Start of interlace block in the y direction */ +static const png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; +/* Offset to next interlace block in the y direction */ +static const png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; + +/* TODO: Move these arrays to a common utility module to avoid duplication. */ +#endif + void PNGAPI png_process_data(png_structrp png_ptr, png_inforp info_ptr, png_bytep buffer, size_t buffer_size) @@ -294,6 +308,14 @@ png_push_read_chunk(png_structrp png_ptr, png_inforp info_ptr) png_handle_cHRM(png_ptr, info_ptr, png_ptr->push_length); } +#endif +#ifdef PNG_READ_cICP_SUPPORTED + else if (png_ptr->chunk_name == png_cICP) + { + PNG_PUSH_SAVE_BUFFER_IF_FULL + png_handle_cICP(png_ptr, info_ptr, png_ptr->push_length); + } + #endif #ifdef PNG_READ_eXIf_SUPPORTED else if (png_ptr->chunk_name == png_eXIf) @@ -976,27 +998,6 @@ png_push_process_row(png_structrp png_ptr) void /* PRIVATE */ png_read_push_finish_row(png_structrp png_ptr) { -#ifdef PNG_READ_INTERLACING_SUPPORTED - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static const png_byte png_pass_start[] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static const png_byte png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1}; - - /* Start of interlace block in the y direction */ - static const png_byte png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1}; - - /* Offset to next interlace block in the y direction */ - static const png_byte png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2}; - - /* Height of interlace block. This is not currently used - if you need - * it, uncomment it here and in png.h - static const png_byte png_pass_height[] = {8, 8, 4, 4, 2, 2, 1}; - */ -#endif - png_ptr->row_number++; if (png_ptr->row_number < png_ptr->num_rows) return; diff --git a/source/libs/libpng/libpng-src/pngpriv.h b/source/libs/libpng/libpng-src/pngpriv.h index b59084e7e..84f77c350 100644 --- a/source/libs/libpng/libpng-src/pngpriv.h +++ b/source/libs/libpng/libpng-src/pngpriv.h @@ -1,4 +1,3 @@ - /* pngpriv.h - private declarations for use inside libpng * * Copyright (c) 2018-2024 Cosmin Truta @@ -835,6 +834,7 @@ #define png_PLTE PNG_U32( 80, 76, 84, 69) #define png_bKGD PNG_U32( 98, 75, 71, 68) #define png_cHRM PNG_U32( 99, 72, 82, 77) +#define png_cICP PNG_U32( 99, 73, 67, 80) #define png_eXIf PNG_U32(101, 88, 73, 102) /* registered July 2017 */ #define png_fRAc PNG_U32(102, 82, 65, 99) /* registered, not defined */ #define png_gAMA PNG_U32(103, 65, 77, 65) @@ -1131,6 +1131,12 @@ PNG_INTERNAL_FUNCTION(void,png_write_cHRM_fixed,(png_structrp png_ptr, /* The xy value must have been previously validated */ #endif +#ifdef PNG_WRITE_cICP_SUPPORTED +PNG_INTERNAL_FUNCTION(void,png_write_cICP,(png_structrp png_ptr, + png_byte colour_primaries, png_byte transfer_function, + png_byte matrix_coefficients, png_byte video_full_range_flag), PNG_EMPTY); +#endif + #ifdef PNG_WRITE_sRGB_SUPPORTED PNG_INTERNAL_FUNCTION(void,png_write_sRGB,(png_structrp png_ptr, int intent),PNG_EMPTY); @@ -1474,6 +1480,11 @@ PNG_INTERNAL_FUNCTION(void,png_handle_cHRM,(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); #endif +#ifdef PNG_READ_cICP_SUPPORTED +PNG_INTERNAL_FUNCTION(void,png_handle_cICP,(png_structrp png_ptr, + png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); +#endif + #ifdef PNG_READ_eXIf_SUPPORTED PNG_INTERNAL_FUNCTION(void,png_handle_eXIf,(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); diff --git a/source/libs/libpng/libpng-src/pngread.c b/source/libs/libpng/libpng-src/pngread.c index 07a39df6e..49e19a496 100644 --- a/source/libs/libpng/libpng-src/pngread.c +++ b/source/libs/libpng/libpng-src/pngread.c @@ -1,7 +1,6 @@ - /* pngread.c - read a PNG file * - * Copyright (c) 2018-2024 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -175,6 +174,11 @@ png_read_info(png_structrp png_ptr, png_inforp info_ptr) png_handle_cHRM(png_ptr, info_ptr, length); #endif +#ifdef PNG_READ_cICP_SUPPORTED + else if (chunk_name == png_cICP) + png_handle_cICP(png_ptr, info_ptr, length); +#endif + #ifdef PNG_READ_eXIf_SUPPORTED else if (chunk_name == png_eXIf) png_handle_eXIf(png_ptr, info_ptr, length); @@ -852,6 +856,11 @@ png_read_end(png_structrp png_ptr, png_inforp info_ptr) png_handle_cHRM(png_ptr, info_ptr, length); #endif +#ifdef PNG_READ_cICP_SUPPORTED + else if (chunk_name == png_cICP) + png_handle_cICP(png_ptr, info_ptr, length); +#endif + #ifdef PNG_READ_eXIf_SUPPORTED else if (chunk_name == png_eXIf) png_handle_eXIf(png_ptr, info_ptr, length); diff --git a/source/libs/libpng/libpng-src/pngrio.c b/source/libs/libpng/libpng-src/pngrio.c index 794635810..3b137f275 100644 --- a/source/libs/libpng/libpng-src/pngrio.c +++ b/source/libs/libpng/libpng-src/pngrio.c @@ -1,4 +1,3 @@ - /* pngrio.c - functions for data input * * Copyright (c) 2018 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/pngrtran.c b/source/libs/libpng/libpng-src/pngrtran.c index 1526123e0..124906635 100644 --- a/source/libs/libpng/libpng-src/pngrtran.c +++ b/source/libs/libpng/libpng-src/pngrtran.c @@ -1,4 +1,3 @@ - /* pngrtran.c - transforms the data in a row for PNG readers * * Copyright (c) 2018-2024 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/pngrutil.c b/source/libs/libpng/libpng-src/pngrutil.c index d31dc21da..7c609b4b4 100644 --- a/source/libs/libpng/libpng-src/pngrutil.c +++ b/source/libs/libpng/libpng-src/pngrutil.c @@ -1,4 +1,3 @@ - /* pngrutil.c - utilities to read a PNG file * * Copyright (c) 2018-2024 Cosmin Truta @@ -18,6 +17,21 @@ #ifdef PNG_READ_SUPPORTED +#ifdef PNG_READ_INTERLACING_SUPPORTED +/* Arrays to facilitate interlacing - use pass (0 - 6) as index. */ + +/* Start of interlace block */ +static const png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; +/* Offset to next interlace block */ +static const png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; +/* Start of interlace block in the y direction */ +static const png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; +/* Offset to next interlace block in the y direction */ +static const png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; + +/* TODO: Move these arrays to a common utility module to avoid duplication. */ +#endif + png_uint_32 PNGAPI png_get_uint_31(png_const_structrp png_ptr, png_const_bytep buf) { @@ -2032,6 +2046,47 @@ png_handle_bKGD(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) } #endif +#ifdef PNG_READ_cICP_SUPPORTED +void /* PRIVATE */ +png_handle_cICP(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) +{ + png_byte buf[4]; + + png_debug(1, "in png_handle_cICP"); + + if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) + png_chunk_error(png_ptr, "missing IHDR"); + + else if ((png_ptr->mode & (PNG_HAVE_IDAT|PNG_HAVE_PLTE)) != 0) + { + png_crc_finish(png_ptr, length); + png_chunk_benign_error(png_ptr, "out of place"); + return; + } + + else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_cICP) != 0) + { + png_crc_finish(png_ptr, length); + png_chunk_benign_error(png_ptr, "duplicate"); + return; + } + + else if (length != 4) + { + png_crc_finish(png_ptr, length); + png_chunk_benign_error(png_ptr, "invalid"); + return; + } + + png_crc_read(png_ptr, buf, 4); + + if (png_crc_finish(png_ptr, 0) != 0) + return; + + png_set_cICP(png_ptr, info_ptr, buf[0], buf[1], buf[2], buf[3]); +} +#endif + #ifdef PNG_READ_eXIf_SUPPORTED void /* PRIVATE */ png_handle_eXIf(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) @@ -3684,10 +3739,6 @@ void /* PRIVATE */ png_do_read_interlace(png_row_infop row_info, png_bytep row, int pass, png_uint_32 transformations /* Because these may affect the byte layout */) { - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - /* Offset to next interlace block */ - static const unsigned int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - png_debug(1, "in png_do_read_interlace"); if (row != NULL && row_info != NULL) { @@ -4325,20 +4376,6 @@ png_read_finish_IDAT(png_structrp png_ptr) void /* PRIVATE */ png_read_finish_row(png_structrp png_ptr) { - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static const png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static const png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - - /* Start of interlace block in the y direction */ - static const png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; - - /* Offset to next interlace block in the y direction */ - static const png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; - png_debug(1, "in png_read_finish_row"); png_ptr->row_number++; if (png_ptr->row_number < png_ptr->num_rows) @@ -4390,20 +4427,6 @@ png_read_finish_row(png_structrp png_ptr) void /* PRIVATE */ png_read_start_row(png_structrp png_ptr) { - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static const png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static const png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - - /* Start of interlace block in the y direction */ - static const png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; - - /* Offset to next interlace block in the y direction */ - static const png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; - unsigned int max_pixel_depth; size_t row_bytes; diff --git a/source/libs/libpng/libpng-src/pngset.c b/source/libs/libpng/libpng-src/pngset.c index eb1c8c7a3..462b50cf2 100644 --- a/source/libs/libpng/libpng-src/pngset.c +++ b/source/libs/libpng/libpng-src/pngset.c @@ -1,7 +1,6 @@ - /* pngset.c - storage of image information into info struct * - * Copyright (c) 2018-2024 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -134,6 +133,32 @@ png_set_cHRM_XYZ(png_const_structrp png_ptr, png_inforp info_ptr, double red_X, #endif /* cHRM */ +#ifdef PNG_cICP_SUPPORTED +void PNGAPI +png_set_cICP(png_const_structrp png_ptr, png_inforp info_ptr, + png_byte colour_primaries, png_byte transfer_function, + png_byte matrix_coefficients, png_byte video_full_range_flag) +{ + png_debug1(1, "in %s storage function", "cICP"); + + if (png_ptr == NULL || info_ptr == NULL) + return; + + info_ptr->cicp_colour_primaries = colour_primaries; + info_ptr->cicp_transfer_function = transfer_function; + info_ptr->cicp_matrix_coefficients = matrix_coefficients; + info_ptr->cicp_video_full_range_flag = video_full_range_flag; + + if (info_ptr->cicp_matrix_coefficients != 0) + { + png_warning(png_ptr, "Invalid cICP matrix coefficients"); + return; + } + + info_ptr->valid |= PNG_INFO_cICP; +} +#endif /* cICP */ + #ifdef PNG_eXIf_SUPPORTED void PNGAPI png_set_eXIf(png_const_structrp png_ptr, png_inforp info_ptr, @@ -1395,6 +1420,7 @@ png_set_keep_unknown_chunks(png_structrp png_ptr, int keep, static const png_byte chunks_to_ignore[] = { 98, 75, 71, 68, '\0', /* bKGD */ 99, 72, 82, 77, '\0', /* cHRM */ + 99, 73, 67, 80, '\0', /* cICP */ 101, 88, 73, 102, '\0', /* eXIf */ 103, 65, 77, 65, '\0', /* gAMA */ 104, 73, 83, 84, '\0', /* hIST */ diff --git a/source/libs/libpng/libpng-src/pngstruct.h b/source/libs/libpng/libpng-src/pngstruct.h index e591d94d5..7e919d0a3 100644 --- a/source/libs/libpng/libpng-src/pngstruct.h +++ b/source/libs/libpng/libpng-src/pngstruct.h @@ -1,4 +1,3 @@ - /* pngstruct.h - header file for PNG reference library * * Copyright (c) 2018-2022 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/pngtest.c b/source/libs/libpng/libpng-src/pngtest.c index 5969f5031..e723438fd 100644 --- a/source/libs/libpng/libpng-src/pngtest.c +++ b/source/libs/libpng/libpng-src/pngtest.c @@ -1,7 +1,6 @@ - /* pngtest.c - a test program for libpng * - * Copyright (c) 2018-2024 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -51,7 +50,7 @@ #define STDERR stdout /* Generate a compiler error if there is an old png.h in the search path. */ -typedef png_libpng_version_1_6_44 Your_png_h_is_not_version_1_6_44; +typedef png_libpng_version_1_6_45 Your_png_h_is_not_version_1_6_45; /* Ensure that all version numbers in png.h are consistent with one another. */ #if (PNG_LIBPNG_VER != PNG_LIBPNG_VER_MAJOR * 10000 + \ @@ -1168,6 +1167,21 @@ test_one_file(const char *inname, const char *outname) #endif #endif /* Floating point */ #endif /* Fixed point */ +#ifdef PNG_cICP_SUPPORTED + { + png_byte colour_primaries; + png_byte transfer_function; + png_byte matrix_coefficients; + png_byte video_full_range_flag; + + if (png_get_cICP(read_ptr, read_info_ptr, + &colour_primaries, &transfer_function, + &matrix_coefficients, &video_full_range_flag) != 0) + png_set_cICP(write_ptr, write_info_ptr, + colour_primaries, transfer_function, + matrix_coefficients, video_full_range_flag); + } +#endif #ifdef PNG_iCCP_SUPPORTED { png_charp name; diff --git a/source/libs/libpng/libpng-src/pngtest.png b/source/libs/libpng/libpng-src/pngtest.png index 66df0c4e6f6d13981148bf2fbb85df2b797028a7..cf620eb32637a6e8b36fc60e83cd54c96c765ee1 100644 GIT binary patch delta 39 tcmdn)vfX8Zs${W~X9z10_%7A`#=yY9SRCZ;#CY?hPW?nh;f;aM6an*B466VD delta 39 vcmdn)vfX8Zs${yOuOkD)#(wTUiL49^42;D=?oNz1PwLc9R21GA_)HN1080%M diff --git a/source/libs/libpng/libpng-src/pngtrans.c b/source/libs/libpng/libpng-src/pngtrans.c index 62cb21edf..222b4987f 100644 --- a/source/libs/libpng/libpng-src/pngtrans.c +++ b/source/libs/libpng/libpng-src/pngtrans.c @@ -1,4 +1,3 @@ - /* pngtrans.c - transforms the data in a row (used by both readers and writers) * * Copyright (c) 2018-2024 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/pngwio.c b/source/libs/libpng/libpng-src/pngwio.c index 10e919dd0..38c9c006c 100644 --- a/source/libs/libpng/libpng-src/pngwio.c +++ b/source/libs/libpng/libpng-src/pngwio.c @@ -1,4 +1,3 @@ - /* pngwio.c - functions for data output * * Copyright (c) 2018 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/pngwrite.c b/source/libs/libpng/libpng-src/pngwrite.c index 77e412f43..8b1b06c20 100644 --- a/source/libs/libpng/libpng-src/pngwrite.c +++ b/source/libs/libpng/libpng-src/pngwrite.c @@ -1,7 +1,6 @@ - /* pngwrite.c - general routines to write a PNG file * - * Copyright (c) 2018-2024 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -128,29 +127,61 @@ png_write_info_before_PLTE(png_structrp png_ptr, png_const_inforp info_ptr) * the application continues writing the PNG. So check the 'invalid' * flag here too. */ -#ifdef PNG_GAMMA_SUPPORTED -# ifdef PNG_WRITE_gAMA_SUPPORTED - if ((info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) == 0 && - (info_ptr->colorspace.flags & PNG_COLORSPACE_FROM_gAMA) != 0 && - (info_ptr->valid & PNG_INFO_gAMA) != 0) - png_write_gAMA_fixed(png_ptr, info_ptr->colorspace.gamma); -# endif +#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED + /* Write unknown chunks first; PNG v3 establishes a precedence order + * for colourspace chunks. It is certain therefore that new + * colourspace chunks will have a precedence and very likely it will be + * higher than all known so far. Writing the unknown chunks here is + * most likely to present the chunks in the most convenient order. + * + * FUTURE: maybe write chunks in the order the app calls png_set_chnk + * to give the app control. + */ + write_unknown_chunks(png_ptr, info_ptr, PNG_HAVE_IHDR); +#endif + +#ifdef PNG_WRITE_sBIT_SUPPORTED + /* PNG v3: a streaming app will need to see this before cICP because + * the information is helpful in handling HLG encoding (which is + * natively 10 bits but gets expanded to 16 in PNG.) + * + * The app shouldn't care about the order ideally, but it might have + * no choice. In PNG v3, apps are allowed to reject PNGs where the + * APNG chunks are out of order so it behooves libpng to be nice here. + */ + if ((info_ptr->valid & PNG_INFO_sBIT) != 0) + png_write_sBIT(png_ptr, &(info_ptr->sig_bit), info_ptr->color_type); #endif + /* PNG v3: the July 2004 version of the TR introduced the concept of colour + * space priority. As above it therefore behooves libpng to write the colour + * space chunks in the priority order so that a streaming app need not buffer + * them. + */ #ifdef PNG_COLORSPACE_SUPPORTED - /* Write only one of sRGB or an ICC profile. If a profile was supplied - * and it matches one of the known sRGB ones issue a warning. +# ifdef PNG_WRITE_cICP_SUPPORTED /* Priority 4 */ + if ((info_ptr->valid & PNG_INFO_cICP) != 0) + { + png_write_cICP(png_ptr, + info_ptr->cicp_colour_primaries, + info_ptr->cicp_transfer_function, + info_ptr->cicp_matrix_coefficients, + info_ptr->cicp_video_full_range_flag); + } +# endif + + /* PNG v3 change: it is now permitted to write both sRGB and ICC profiles, + * however because the libpng code auto-generates an sRGB for the + * corresponding ICC profiles and because PNG v2 disallowed this we need + * to only write one. + * + * Remove the PNG v2 warning about writing an sRGB ICC profile as well + * because it's invalid with PNG v3. */ -# ifdef PNG_WRITE_iCCP_SUPPORTED +# ifdef PNG_WRITE_iCCP_SUPPORTED /* Priority 3 */ if ((info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) == 0 && (info_ptr->valid & PNG_INFO_iCCP) != 0) { -# ifdef PNG_WRITE_sRGB_SUPPORTED - if ((info_ptr->valid & PNG_INFO_sRGB) != 0) - png_app_warning(png_ptr, - "profile matches sRGB but writing iCCP instead"); -# endif - png_write_iCCP(png_ptr, info_ptr->iccp_name, info_ptr->iccp_profile); } @@ -159,20 +190,24 @@ png_write_info_before_PLTE(png_structrp png_ptr, png_const_inforp info_ptr) # endif # endif -# ifdef PNG_WRITE_sRGB_SUPPORTED +# ifdef PNG_WRITE_sRGB_SUPPORTED /* Priority 2 */ if ((info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) == 0 && (info_ptr->valid & PNG_INFO_sRGB) != 0) png_write_sRGB(png_ptr, info_ptr->colorspace.rendering_intent); # endif /* WRITE_sRGB */ #endif /* COLORSPACE */ -#ifdef PNG_WRITE_sBIT_SUPPORTED - if ((info_ptr->valid & PNG_INFO_sBIT) != 0) - png_write_sBIT(png_ptr, &(info_ptr->sig_bit), info_ptr->color_type); +#ifdef PNG_GAMMA_SUPPORTED +# ifdef PNG_WRITE_gAMA_SUPPORTED /* Priority 1 */ + if ((info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) == 0 && + (info_ptr->colorspace.flags & PNG_COLORSPACE_FROM_gAMA) != 0 && + (info_ptr->valid & PNG_INFO_gAMA) != 0) + png_write_gAMA_fixed(png_ptr, info_ptr->colorspace.gamma); +# endif #endif #ifdef PNG_COLORSPACE_SUPPORTED -# ifdef PNG_WRITE_cHRM_SUPPORTED +# ifdef PNG_WRITE_cHRM_SUPPORTED /* Also priority 1 */ if ((info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) == 0 && (info_ptr->colorspace.flags & PNG_COLORSPACE_FROM_cHRM) != 0 && (info_ptr->valid & PNG_INFO_cHRM) != 0) @@ -180,10 +215,6 @@ png_write_info_before_PLTE(png_structrp png_ptr, png_const_inforp info_ptr) # endif #endif -#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED - write_unknown_chunks(png_ptr, info_ptr, PNG_HAVE_IHDR); -#endif - png_ptr->mode |= PNG_WROTE_INFO_BEFORE_PLTE; } } diff --git a/source/libs/libpng/libpng-src/pngwtran.c b/source/libs/libpng/libpng-src/pngwtran.c index 49a13c1e9..a20847023 100644 --- a/source/libs/libpng/libpng-src/pngwtran.c +++ b/source/libs/libpng/libpng-src/pngwtran.c @@ -1,4 +1,3 @@ - /* pngwtran.c - transforms the data in a row for PNG writers * * Copyright (c) 2018 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/pngwutil.c b/source/libs/libpng/libpng-src/pngwutil.c index 14cc4ce36..8b2bf4e6d 100644 --- a/source/libs/libpng/libpng-src/pngwutil.c +++ b/source/libs/libpng/libpng-src/pngwutil.c @@ -1,4 +1,3 @@ - /* pngwutil.c - utilities to write a PNG file * * Copyright (c) 2018-2024 Cosmin Truta @@ -9,12 +8,30 @@ * This code is released under the libpng license. * For conditions of distribution and use, see the disclaimer * and license in png.h + * + * This file contains routines that are only called from within + * libpng itself during the course of writing an image. */ #include "pngpriv.h" #ifdef PNG_WRITE_SUPPORTED +#ifdef PNG_WRITE_INTERLACING_SUPPORTED +/* Arrays to facilitate interlacing - use pass (0 - 6) as index. */ + +/* Start of interlace block */ +static const png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; +/* Offset to next interlace block */ +static const png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; +/* Start of interlace block in the y direction */ +static const png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; +/* Offset to next interlace block in the y direction */ +static const png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; + +/* TODO: Move these arrays to a common utility module to avoid duplication. */ +#endif + #ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED /* Place a 32-bit number into a buffer in PNG byte order. We work * with unsigned numbers for convenience, although one supported @@ -1471,6 +1488,29 @@ png_write_bKGD(png_structrp png_ptr, png_const_color_16p back, int color_type) } #endif +#ifdef PNG_WRITE_cICP_SUPPORTED +/* Write the cICP data */ +void /* PRIVATE */ +png_write_cICP(png_structrp png_ptr, + png_byte colour_primaries, png_byte transfer_function, + png_byte matrix_coefficients, png_byte video_full_range_flag) +{ + png_byte buf[4]; + + png_debug(1, "in png_write_cICP"); + + png_write_chunk_header(png_ptr, png_cICP, 4); + + buf[0] = colour_primaries; + buf[1] = transfer_function; + buf[2] = matrix_coefficients; + buf[3] = video_full_range_flag; + png_write_chunk_data(png_ptr, buf, 4); + + png_write_chunk_end(png_ptr); +} +#endif + #ifdef PNG_WRITE_eXIf_SUPPORTED /* Write the Exif data */ void /* PRIVATE */ @@ -1889,22 +1929,6 @@ png_write_tIME(png_structrp png_ptr, png_const_timep mod_time) void /* PRIVATE */ png_write_start_row(png_structrp png_ptr) { -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static const png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static const png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - - /* Start of interlace block in the y direction */ - static const png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; - - /* Offset to next interlace block in the y direction */ - static const png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; -#endif - png_alloc_size_t buf_size; int usr_pixel_depth; @@ -2004,22 +2028,6 @@ png_write_start_row(png_structrp png_ptr) void /* PRIVATE */ png_write_finish_row(png_structrp png_ptr) { -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static const png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static const png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - - /* Start of interlace block in the y direction */ - static const png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; - - /* Offset to next interlace block in the y direction */ - static const png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; -#endif - png_debug(1, "in png_write_finish_row"); /* Next row */ @@ -2095,14 +2103,6 @@ png_write_finish_row(png_structrp png_ptr) void /* PRIVATE */ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass) { - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static const png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static const png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - png_debug(1, "in png_do_write_interlace"); /* We don't have to do anything on the last pass (6) */ diff --git a/source/libs/libpng/libpng-src/powerpc/powerpc_init.c b/source/libs/libpng/libpng-src/powerpc/powerpc_init.c index 54426c558..902748009 100644 --- a/source/libs/libpng/libpng-src/powerpc/powerpc_init.c +++ b/source/libs/libpng/libpng-src/powerpc/powerpc_init.c @@ -1,4 +1,3 @@ - /* powerpc_init.c - POWERPC optimised filter functions * * Copyright (c) 2018 Cosmin Truta diff --git a/source/libs/libpng/libpng-src/projects/vstudio/build.bat b/source/libs/libpng/libpng-src/projects/vstudio/build.bat new file mode 100644 index 000000000..d129d4b6e --- /dev/null +++ b/source/libs/libpng/libpng-src/projects/vstudio/build.bat @@ -0,0 +1,25 @@ +@echo off +@setlocal enableextensions + +if "%~1" == "/?" goto :help +if "%~1" == "-?" goto :help +if "%~1" == "/help" goto :help +if "%~1" == "-help" goto :help +if "%~1" == "--help" goto :help +goto :run + +:help +echo Usage: +echo %~nx0 [SOLUTION_CONFIG] +echo Examples: +echo %~nx0 "Release|Win32" (default) +echo %~nx0 "Debug|Win32" +echo %~nx0 "Release|ARM64" +echo %~nx0 "Debug|ARM64" +echo etc. +exit /b 2 + +:run +set _SOLUTION_CONFIG="%~1" +if %_SOLUTION_CONFIG% == "" set _SOLUTION_CONFIG="Release|Win32" +devenv "%~dp0.\vstudio.sln" /build %_SOLUTION_CONFIG% diff --git a/source/libs/libpng/libpng-src/projects/vstudio/libpng/libpng.vcxproj b/source/libs/libpng/libpng-src/projects/vstudio/libpng/libpng.vcxproj index e10f4ff8b..1044fe1d6 100644 --- a/source/libs/libpng/libpng-src/projects/vstudio/libpng/libpng.vcxproj +++ b/source/libs/libpng/libpng-src/projects/vstudio/libpng/libpng.vcxproj @@ -158,11 +158,11 @@ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ClCompile> <PrecompiledHeader>Use</PrecompiledHeader> - <WarningLevel>$(WarningLevel)</WarningLevel> + <WarningLevel>Level3</WarningLevel> <MinimalRebuild>false</MinimalRebuild> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <PreprocessorDefinitions>WIN32;_DEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <IntrinsicFunctions>true</IntrinsicFunctions> <FunctionLevelLinking>true</FunctionLevelLinking> <FloatingPointExceptions>false</FloatingPointExceptions> @@ -173,7 +173,7 @@ <StringPooling>true</StringPooling> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <AdditionalIncludeDirectories>$(ZLibSrcDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> + <TreatWarningAsError>false</TreatWarningAsError> <Optimization>Disabled</Optimization> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> </ClCompile> @@ -188,11 +188,11 @@ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'"> <ClCompile> <PrecompiledHeader>Use</PrecompiledHeader> - <WarningLevel>$(WarningLevel)</WarningLevel> + <WarningLevel>Level3</WarningLevel> <MinimalRebuild>false</MinimalRebuild> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <PreprocessorDefinitions>WIN32;_DEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <IntrinsicFunctions>true</IntrinsicFunctions> <FunctionLevelLinking>true</FunctionLevelLinking> <FloatingPointExceptions>false</FloatingPointExceptions> @@ -203,7 +203,7 @@ <StringPooling>true</StringPooling> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <AdditionalIncludeDirectories>$(ZLibSrcDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> + <TreatWarningAsError>false</TreatWarningAsError> <Optimization>Disabled</Optimization> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> </ClCompile> @@ -223,7 +223,7 @@ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <IntrinsicFunctions>true</IntrinsicFunctions> <FunctionLevelLinking>true</FunctionLevelLinking> <FloatingPointExceptions>false</FloatingPointExceptions> @@ -250,7 +250,7 @@ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <IntrinsicFunctions>true</IntrinsicFunctions> <FunctionLevelLinking>true</FunctionLevelLinking> <FloatingPointExceptions>false</FloatingPointExceptions> @@ -271,12 +271,12 @@ </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ClCompile> - <WarningLevel>$(WarningLevel)</WarningLevel> + <WarningLevel>Level3</WarningLevel> <PrecompiledHeader>Use</PrecompiledHeader> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <FloatingPointExceptions>false</FloatingPointExceptions> <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType> <PrecompiledHeaderFile>pngpriv.h</PrecompiledHeaderFile> @@ -286,7 +286,7 @@ <MinimalRebuild>false</MinimalRebuild> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <AdditionalIncludeDirectories>$(ZLibSrcDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> + <TreatWarningAsError>false</TreatWarningAsError> <Optimization>Full</Optimization> </ClCompile> <Link> @@ -301,12 +301,12 @@ </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> <ClCompile> - <WarningLevel>$(WarningLevel)</WarningLevel> + <WarningLevel>Level3</WarningLevel> <PrecompiledHeader>Use</PrecompiledHeader> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <FloatingPointExceptions>false</FloatingPointExceptions> <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType> <PrecompiledHeaderFile>pngpriv.h</PrecompiledHeaderFile> @@ -316,7 +316,7 @@ <MinimalRebuild>false</MinimalRebuild> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <AdditionalIncludeDirectories>$(ZLibSrcDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> + <TreatWarningAsError>false</TreatWarningAsError> <Optimization>Full</Optimization> </ClCompile> <Link> @@ -337,7 +337,7 @@ <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <FloatingPointExceptions>false</FloatingPointExceptions> <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType> <PrecompiledHeaderFile>pngpriv.h</PrecompiledHeaderFile> @@ -369,7 +369,7 @@ <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <FloatingPointExceptions>false</FloatingPointExceptions> <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType> <PrecompiledHeaderFile>pngpriv.h</PrecompiledHeaderFile> @@ -396,7 +396,7 @@ <ItemGroup> <ClCompile Include="..\..\..\arm\arm_init.c"> <DeploymentContent>true</DeploymentContent> - <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug Library|ARM64'">WIN32;_DEBUG;PNG_ARM_NEON_OPT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug Library|ARM64'">WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;PNG_ARM_NEON_OPT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug Library|ARM64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'">NotUsing</PrecompiledHeader> @@ -405,7 +405,7 @@ </ClCompile> <ClCompile Include="..\..\..\arm\filter_neon_intrinsics.c"> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug Library|ARM64'">NotUsing</PrecompiledHeader> - <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug Library|ARM64'">WIN32;_DEBUG;PNG_ARM_NEON_OPT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug Library|ARM64'">WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;PNG_ARM_NEON_OPT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader> @@ -413,7 +413,7 @@ </ClCompile> <ClCompile Include="..\..\..\arm\palette_neon_intrinsics.c"> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug Library|ARM64'">NotUsing</PrecompiledHeader> - <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug Library|ARM64'">WIN32;_DEBUG;PNG_ARM_NEON_OPT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug Library|ARM64'">WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;PNG_ARM_NEON_OPT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug Library|Win32'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader> diff --git a/source/libs/libpng/libpng-src/projects/vstudio/pnglibconf/pnglibconf.vcxproj b/source/libs/libpng/libpng-src/projects/vstudio/pnglibconf/pnglibconf.vcxproj index e0a3887a4..f033f5061 100644 --- a/source/libs/libpng/libpng-src/projects/vstudio/pnglibconf/pnglibconf.vcxproj +++ b/source/libs/libpng/libpng-src/projects/vstudio/pnglibconf/pnglibconf.vcxproj @@ -48,7 +48,7 @@ </PropertyGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ClCompile> - <WarningLevel>$(WarningLevel)</WarningLevel> + <WarningLevel>Level3</WarningLevel> <Optimization>MaxSpeed</Optimization> <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> @@ -73,7 +73,7 @@ </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> <ClCompile> - <WarningLevel>$(WarningLevel)</WarningLevel> + <WarningLevel>Level3</WarningLevel> <Optimization>MaxSpeed</Optimization> <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> diff --git a/source/libs/libpng/libpng-src/projects/vstudio/pngstest/pngstest.vcxproj b/source/libs/libpng/libpng-src/projects/vstudio/pngstest/pngstest.vcxproj index 3937cb41d..e59459818 100644 --- a/source/libs/libpng/libpng-src/projects/vstudio/pngstest/pngstest.vcxproj +++ b/source/libs/libpng/libpng-src/projects/vstudio/pngstest/pngstest.vcxproj @@ -149,7 +149,7 @@ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -182,7 +182,7 @@ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -216,7 +216,7 @@ <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -249,7 +249,7 @@ <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -275,17 +275,17 @@ </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ClCompile> - <WarningLevel>$(WarningLevel)</WarningLevel> + <WarningLevel>Level3</WarningLevel> <PrecompiledHeader>NotUsing</PrecompiledHeader> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Full</Optimization> <FunctionLevelLinking>false</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> - <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> + <TreatWarningAsError>false</TreatWarningAsError> <StringPooling>true</StringPooling> <MinimalRebuild>false</MinimalRebuild> <BrowseInformation>true</BrowseInformation> @@ -310,17 +310,17 @@ </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> <ClCompile> - <WarningLevel>$(WarningLevel)</WarningLevel> + <WarningLevel>Level3</WarningLevel> <PrecompiledHeader>NotUsing</PrecompiledHeader> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Full</Optimization> <FunctionLevelLinking>false</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> - <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> + <TreatWarningAsError>false</TreatWarningAsError> <StringPooling>true</StringPooling> <MinimalRebuild>false</MinimalRebuild> <BrowseInformation>true</BrowseInformation> @@ -352,7 +352,7 @@ <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <FunctionLevelLinking>false</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -388,7 +388,7 @@ <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <FunctionLevelLinking>false</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> diff --git a/source/libs/libpng/libpng-src/projects/vstudio/pngtest/pngtest.vcxproj b/source/libs/libpng/libpng-src/projects/vstudio/pngtest/pngtest.vcxproj index 72beced2b..58f662fcd 100644 --- a/source/libs/libpng/libpng-src/projects/vstudio/pngtest/pngtest.vcxproj +++ b/source/libs/libpng/libpng-src/projects/vstudio/pngtest/pngtest.vcxproj @@ -149,7 +149,7 @@ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -182,7 +182,7 @@ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -216,7 +216,7 @@ <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -249,7 +249,7 @@ <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -275,17 +275,17 @@ </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ClCompile> - <WarningLevel>$(WarningLevel)</WarningLevel> + <WarningLevel>Level3</WarningLevel> <PrecompiledHeader>NotUsing</PrecompiledHeader> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Full</Optimization> <FunctionLevelLinking>false</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> - <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> + <TreatWarningAsError>false</TreatWarningAsError> <StringPooling>true</StringPooling> <MinimalRebuild>false</MinimalRebuild> <BrowseInformation>true</BrowseInformation> @@ -310,17 +310,17 @@ </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> <ClCompile> - <WarningLevel>$(WarningLevel)</WarningLevel> + <WarningLevel>Level3</WarningLevel> <PrecompiledHeader>NotUsing</PrecompiledHeader> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Full</Optimization> <FunctionLevelLinking>false</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> - <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> + <TreatWarningAsError>false</TreatWarningAsError> <StringPooling>true</StringPooling> <MinimalRebuild>false</MinimalRebuild> <BrowseInformation>true</BrowseInformation> @@ -352,7 +352,7 @@ <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <FunctionLevelLinking>false</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -389,7 +389,7 @@ <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <FunctionLevelLinking>false</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> diff --git a/source/libs/libpng/libpng-src/projects/vstudio/pngunknown/pngunknown.vcxproj b/source/libs/libpng/libpng-src/projects/vstudio/pngunknown/pngunknown.vcxproj index f4d130d0b..c1568feb6 100644 --- a/source/libs/libpng/libpng-src/projects/vstudio/pngunknown/pngunknown.vcxproj +++ b/source/libs/libpng/libpng-src/projects/vstudio/pngunknown/pngunknown.vcxproj @@ -149,7 +149,7 @@ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -182,7 +182,7 @@ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -216,7 +216,7 @@ <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -249,7 +249,7 @@ <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -275,17 +275,17 @@ </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ClCompile> - <WarningLevel>$(WarningLevel)</WarningLevel> + <WarningLevel>Level3</WarningLevel> <PrecompiledHeader>NotUsing</PrecompiledHeader> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Full</Optimization> <FunctionLevelLinking>false</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> - <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> + <TreatWarningAsError>false</TreatWarningAsError> <StringPooling>true</StringPooling> <MinimalRebuild>false</MinimalRebuild> <BrowseInformation>true</BrowseInformation> @@ -310,17 +310,17 @@ </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> <ClCompile> - <WarningLevel>$(WarningLevel)</WarningLevel> + <WarningLevel>Level3</WarningLevel> <PrecompiledHeader>NotUsing</PrecompiledHeader> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Full</Optimization> <FunctionLevelLinking>false</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> - <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> + <TreatWarningAsError>false</TreatWarningAsError> <StringPooling>true</StringPooling> <MinimalRebuild>false</MinimalRebuild> <BrowseInformation>true</BrowseInformation> @@ -352,7 +352,7 @@ <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <FunctionLevelLinking>false</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -388,7 +388,7 @@ <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <FunctionLevelLinking>false</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> diff --git a/source/libs/libpng/libpng-src/projects/vstudio/pngvalid/pngvalid.vcxproj b/source/libs/libpng/libpng-src/projects/vstudio/pngvalid/pngvalid.vcxproj index 3726193bf..d016df815 100644 --- a/source/libs/libpng/libpng-src/projects/vstudio/pngvalid/pngvalid.vcxproj +++ b/source/libs/libpng/libpng-src/projects/vstudio/pngvalid/pngvalid.vcxproj @@ -149,7 +149,7 @@ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -182,7 +182,7 @@ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -216,7 +216,7 @@ <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -249,7 +249,7 @@ <Optimization>Disabled</Optimization> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -275,17 +275,17 @@ </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ClCompile> - <WarningLevel>$(WarningLevel)</WarningLevel> + <WarningLevel>Level3</WarningLevel> <PrecompiledHeader>NotUsing</PrecompiledHeader> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Full</Optimization> <FunctionLevelLinking>false</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> - <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> + <TreatWarningAsError>false</TreatWarningAsError> <StringPooling>true</StringPooling> <MinimalRebuild>false</MinimalRebuild> <BrowseInformation>true</BrowseInformation> @@ -310,17 +310,17 @@ </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> <ClCompile> - <WarningLevel>$(WarningLevel)</WarningLevel> + <WarningLevel>Level3</WarningLevel> <PrecompiledHeader>NotUsing</PrecompiledHeader> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Full</Optimization> <FunctionLevelLinking>false</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;PNG_USE_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> - <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> + <TreatWarningAsError>false</TreatWarningAsError> <StringPooling>true</StringPooling> <MinimalRebuild>false</MinimalRebuild> <BrowseInformation>true</BrowseInformation> @@ -352,7 +352,7 @@ <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <FunctionLevelLinking>false</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> @@ -388,7 +388,7 @@ <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <FunctionLevelLinking>false</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>$(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <CompileAsManaged>false</CompileAsManaged> diff --git a/source/libs/libpng/libpng-src/projects/vstudio/zlib.props b/source/libs/libpng/libpng-src/projects/vstudio/zlib.props index 878627966..b84a2c0fc 100644 --- a/source/libs/libpng/libpng-src/projects/vstudio/zlib.props +++ b/source/libs/libpng/libpng-src/projects/vstudio/zlib.props @@ -2,7 +2,7 @@ <!-- * zlib.props - location of zlib source * - * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2018-2024 Cosmin Truta * Copyright (c) 1998-2011 Glenn Randers-Pehrson * * This code is released under the libpng license. @@ -14,44 +14,43 @@ --> <Project ToolsVersion="4.0" - xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup Label="Globals"> <!-- Place the name of the directory containing the source of zlib used for - debugging in this property. + debugging in this property. The directory need only contain the '.c' and '.h' files from the - source. + source. - If you use a relative directory name (as below) then it must be - relative to the project directories; these are one level deeper than - the directories containing this file. + If you use a relative directory name (as below) then it must be + relative to the project directories; these are one level deeper than + the directories containing this file. - If the version of zlib you use does not match that used when the - distribution was built you will get warnings from pngtest that the zlib - versions do not match. The zlib version used in this build is recorded - below: + If the version of zlib you use does not match that used when the + distribution was built you will get warnings from pngtest that the + zlib versions do not match. The zlib version used in this build is + recorded below: --> <ZLibSrcDir>..\..\..\..\zlib</ZLibSrcDir> <!-- The following line allows compilation for an ARM target with Visual Studio 2012. Notice that this is not supported by the Visual Studio 2012 IDE and that the programs that result cannot be run unless they - signed by Microsoft. This is therefore untested; only Microsoft can - test it: + are signed by Microsoft. This is therefore untested; only Microsoft + can test it: --> <WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport> - <!-- The following lines provide a global (solution level) control of the - warnings issued by the compiler, these are used in the individual - project files (*/*.vcxproj) with, for zlib, some extra disables. + <!-- The following lines provide a global (solution-level) control of the + warnings issued by the compiler. - Different versions of Visual Studio may require different settings, - these settings work with Visual Studio 2013. Just set - TreatWarningAsError to false to check the build without failing on - errors. + Considering how different versions of Visual Studio sometimes require + different settings, and their compilers issue different warnings, we + set TreatWarningAsError to false to avoid unforeseen and undesirable + build failures for the users who upgrade to a newer Visual Studio that + might bring along a more pedantic compiler: --> - <WarningLevel>EnableAllWarnings</WarningLevel> - <TreatWarningAsError>true</TreatWarningAsError> - <DisableSpecificWarnings>4255;4668;4710;4711;4746;4820;4996</DisableSpecificWarnings> + <WarningLevel>Level3</WarningLevel> + <TreatWarningAsError>false</TreatWarningAsError> </PropertyGroup> </Project> diff --git a/source/libs/libpng/libpng-src/projects/vstudio/zlib/zlib.vcxproj b/source/libs/libpng/libpng-src/projects/vstudio/zlib/zlib.vcxproj index 23e606517..7858706ef 100644 --- a/source/libs/libpng/libpng-src/projects/vstudio/zlib/zlib.vcxproj +++ b/source/libs/libpng/libpng-src/projects/vstudio/zlib/zlib.vcxproj @@ -154,13 +154,13 @@ <ClCompile> <PreprocessorDefinitions>WIN32;_DEBUG;Z_SOLO;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <WarningLevel>Level3</WarningLevel> + <WarningLevel>$(WarningLevel)</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Disabled</Optimization> <BrowseInformation>true</BrowseInformation> <FunctionLevelLinking>true</FunctionLevelLinking> - <DisableSpecificWarnings>$(DisableSpecificWarnings);4127;4131;4242;4244</DisableSpecificWarnings> - <TreatWarningAsError>false</TreatWarningAsError> + <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> + <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> </ClCompile> <Link> <TargetMachine>MachineX86</TargetMachine> @@ -172,13 +172,13 @@ <ClCompile> <PreprocessorDefinitions>WIN32;_DEBUG;Z_SOLO;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <WarningLevel>Level3</WarningLevel> + <WarningLevel>$(WarningLevel)</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Disabled</Optimization> <BrowseInformation>true</BrowseInformation> <FunctionLevelLinking>true</FunctionLevelLinking> - <DisableSpecificWarnings>$(DisableSpecificWarnings);4127;4131;4242;4244</DisableSpecificWarnings> - <TreatWarningAsError>false</TreatWarningAsError> + <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> + <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> </ClCompile> <Link> <GenerateDebugInformation>true</GenerateDebugInformation> @@ -188,13 +188,13 @@ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ClCompile> <PreprocessorDefinitions>WIN32;_DEBUG;Z_SOLO;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <WarningLevel>Level3</WarningLevel> + <WarningLevel>$(WarningLevel)</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Disabled</Optimization> <BrowseInformation>true</BrowseInformation> <FunctionLevelLinking>true</FunctionLevelLinking> - <DisableSpecificWarnings>$(DisableSpecificWarnings);4127;4131;4242;4244</DisableSpecificWarnings> - <TreatWarningAsError>false</TreatWarningAsError> + <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> + <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> </ClCompile> <Link> @@ -206,13 +206,13 @@ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'"> <ClCompile> <PreprocessorDefinitions>WIN32;_DEBUG;Z_SOLO;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <WarningLevel>Level3</WarningLevel> + <WarningLevel>$(WarningLevel)</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Disabled</Optimization> <BrowseInformation>true</BrowseInformation> <FunctionLevelLinking>true</FunctionLevelLinking> - <DisableSpecificWarnings>$(DisableSpecificWarnings);4127;4131;4242;4244</DisableSpecificWarnings> - <TreatWarningAsError>false</TreatWarningAsError> + <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> + <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> </ClCompile> <Link> @@ -222,7 +222,7 @@ </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|Win32'"> <ClCompile> - <WarningLevel>Level3</WarningLevel> + <WarningLevel>$(WarningLevel)</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Full</Optimization> <IntrinsicFunctions>true</IntrinsicFunctions> @@ -230,8 +230,8 @@ <BufferSecurityCheck>false</BufferSecurityCheck> <BrowseInformation>true</BrowseInformation> <FunctionLevelLinking>true</FunctionLevelLinking> - <DisableSpecificWarnings>$(DisableSpecificWarnings);4127;4131;4242;4244</DisableSpecificWarnings> - <TreatWarningAsError>false</TreatWarningAsError> + <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> + <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <PreprocessorDefinitions>WIN32;NDEBUG;Z_SOLO;%(PreprocessorDefinitions)</PreprocessorDefinitions> </ClCompile> @@ -246,7 +246,7 @@ </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Library|ARM64'"> <ClCompile> - <WarningLevel>Level3</WarningLevel> + <WarningLevel>$(WarningLevel)</WarningLevel> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <Optimization>Full</Optimization> <IntrinsicFunctions>true</IntrinsicFunctions> @@ -254,8 +254,8 @@ <BufferSecurityCheck>false</BufferSecurityCheck> <BrowseInformation>true</BrowseInformation> <FunctionLevelLinking>true</FunctionLevelLinking> - <DisableSpecificWarnings>$(DisableSpecificWarnings);4127;4131;4242;4244</DisableSpecificWarnings> - <TreatWarningAsError>false</TreatWarningAsError> + <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> + <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> <PreprocessorDefinitions>WIN32;NDEBUG;Z_SOLO;%(PreprocessorDefinitions)</PreprocessorDefinitions> </ClCompile> @@ -277,7 +277,7 @@ <BufferSecurityCheck>false</BufferSecurityCheck> <BrowseInformation>true</BrowseInformation> <FunctionLevelLinking>true</FunctionLevelLinking> - <DisableSpecificWarnings>$(DisableSpecificWarnings);4127;4131;4242;4244</DisableSpecificWarnings> + <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> <PreprocessorDefinitions>WIN32;NDEBUG;Z_SOLO;%(PreprocessorDefinitions)</PreprocessorDefinitions> </ClCompile> @@ -302,7 +302,7 @@ <BufferSecurityCheck>false</BufferSecurityCheck> <BrowseInformation>true</BrowseInformation> <FunctionLevelLinking>true</FunctionLevelLinking> - <DisableSpecificWarnings>$(DisableSpecificWarnings);4127;4131;4242;4244</DisableSpecificWarnings> + <DisableSpecificWarnings>$(DisableSpecificWarnings)</DisableSpecificWarnings> <TreatWarningAsError>$(TreatWarningAsError)</TreatWarningAsError> <PreprocessorDefinitions>WIN32;NDEBUG;Z_SOLO;%(PreprocessorDefinitions)</PreprocessorDefinitions> </ClCompile> diff --git a/source/libs/libpng/libpng-src/scripts/README.txt b/source/libs/libpng/libpng-src/scripts/README.txt index 326160cbb..3764e79a7 100644 --- a/source/libs/libpng/libpng-src/scripts/README.txt +++ b/source/libs/libpng/libpng-src/scripts/README.txt @@ -1,79 +1,73 @@ +Scripts and makefiles for libpng +-------------------------------- -Makefiles for libpng + pnglibconf.h.prebuilt => Configuration settings -pnglibconf.h.prebuilt => Configuration settings - makefile.linux => Linux/ELF makefile - (gcc, creates shared libpng16.so.16.1.6.*) - makefile.linux-opt=> Linux/ELF makefile with hardware optimizations on - (gcc, creates shared libpng16.so.16.1.6.*) - makefile.gcc => Generic makefile (gcc, creates static libpng.a) - makefile.acorn => Acorn makefile - makefile.aix => AIX/gcc makefile - makefile.amiga => Amiga makefile - makefile.atari => Atari makefile - makefile.bc32 => 32-bit Borland C++ (all modules compiled in C mode) - makefile.beos => BeOS makefile - makefile.clang => Generic clang makefile - makefile.darwin => Darwin makefile, for macOS (formerly Mac OS X) - makefile.dec => DEC Alpha UNIX makefile - makefile.dj2 => DJGPP 2 makefile - makefile.freebsd => FreeBSD makefile - makefile.gcc => Generic gcc makefile - makefile.hpgcc => HPUX makefile using gcc - makefile.hpux => HPUX (10.20 and 11.00) makefile - makefile.hp64 => HPUX (10.20 and 11.00) makefile, 64-bit - makefile.ibmc => IBM C/C++ version 3.x for Win32 and OS/2 (static) - makefile.intel => Intel C/C++ version 4.0 and later - makefile.mips => MIPS makefile - makefile.netbsd => NetBSD/cc makefile, makes shared libpng.so - makefile.openbsd => OpenBSD makefile - makefile.sco => SCO OSr5 ELF and Unixware 7 with Native cc - makefile.sggcc => Silicon Graphics makefile - (gcc, creates shared libpng16.so.16.1.6.*) - makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib) - makefile.solaris => Solaris 2.X makefile - (gcc, creates shared libpng16.so.16.1.6.*) - makefile.so9 => Solaris 9 makefile - (gcc, creates shared libpng16.so.16.1.6.*) - makefile.std => Generic UNIX makefile (cc, creates static libpng.a) - makefile.sunos => Sun makefile - makefile.32sunu => Sun Ultra 32-bit makefile - makefile.64sunu => Sun Ultra 64-bit makefile - makefile.vcwin32 => makefile for Microsoft Visual C++ 4.0 and later - makevms.com => VMS build script - smakefile.ppc => AMIGA smakefile for SAS C V6.58/7.00 PPC compiler - (Requires SCOPTIONS, copied from scripts/SCOPTIONS.ppc) + makefile.aix => AIX/gcc makefile + makefile.amiga => Amiga makefile + makefile.atari => Atari makefile + makefile.bc32 => Borland C makefile, for Win32 + makefile.beos => BeOS makefile + makefile.clang => Generic clang makefile + makefile.darwin => Darwin makefile, for macOS (formerly Mac OS X) + makefile.dec => DEC Alpha UNIX makefile + makefile.dj2 => DJGPP 2 makefile + makefile.emcc => Emscripten makefile + makefile.freebsd => FreeBSD makefile + makefile.gcc => Generic gcc makefile + makefile.hpgcc => HPUX makefile using gcc + makefile.hpux => HPUX (10.20 and 11.00) makefile + makefile.hp64 => HPUX (10.20 and 11.00) makefile, 64-bit + makefile.ibmc => IBM C/C++ version 3.x for Win32 and OS/2 (static lib) + makefile.intel => Intel C/C++ version 4.0 and later + makefile.linux => Linux/ELF makefile + (gcc, creates shared libpng16.so.16.1.6.*) + makefile.mips => MIPS makefile + makefile.msys => MSYS (MinGW) makefile + makefile.netbsd => NetBSD/cc makefile, makes shared libpng.so + makefile.openbsd => OpenBSD makefile + makefile.riscos => Acorn RISCOS makefile + makefile.sco => SCO OSr5 ELF and Unixware 7 with Native cc + makefile.sgi => Silicon Graphics IRIX makefile (cc, static lib) + makefile.sggcc => Silicon Graphics makefile + (gcc, creates shared libpng16.so.16.1.6.*) + makefile.solaris => Solaris 2.X makefile + (gcc, creates shared libpng16.so.16.1.6.*) + makefile.so9 => Solaris 9 makefile + (gcc, creates shared libpng16.so.16.1.6.*) + makefile.std => Generic UNIX makefile (cc, static lib) + makefile.sunos => Sun makefile + makefile.32sunu => Sun Ultra 32-bit makefile + makefile.64sunu => Sun Ultra 64-bit makefile + makefile.vcwin32 => makefile for Microsoft Visual C++ 4.0 and later + makevms.com => VMS build script + smakefile.ppc => AMIGA smakefile for SAS C V6.58/7.00 PPC compiler + (Requires SCOPTIONS, copied from SCOPTIONS.ppc) -Other supporting scripts: - README.txt => This file - descrip.mms => VMS makefile for MMS or MMK - libpng-config-body.in => used by several makefiles to create libpng-config - libpng-config-head.in => used by several makefiles to create libpng-config - libpng.pc.in => Used by several makefiles to create libpng.pc - pngwin.rc => Used by the visualc71 project - pngwin.def => Used by makefile.os2 - pngwin.dfn => Used to maintain pngwin.def - SCOPTIONS.ppc => Used with smakefile.ppc +Other supporting scripts +------------------------ - checksym.awk => Used for maintaining pnglibconf.h - def.dfn => Used for maintaining pnglibconf.h - options.awk => Used for maintaining pnglibconf.h - pnglibconf.dfa => Used for maintaining pnglibconf.h - pnglibconf.mak => Used for maintaining pnglibconf.h - sym.dfn => Used for symbol versioning - symbols.def => Used for symbol versioning - symbols.dfn => Used for symbol versioning - vers.dfn => Used for symbol versioning + README.txt => This file + descrip.mms => VMS makefile for MMS or MMK + libpng-config-body.in => used by several makefiles to create libpng-config + libpng-config-head.in => used by several makefiles to create libpng-config + libpng.pc.in => Used by several makefiles to create libpng.pc + macro.lst => Used by GNU Autotools + pngwin.rc => Used by the visualc71 project + pngwin.def => Used by makefile.os2 + pngwin.dfn => Used to maintain pngwin.def + SCOPTIONS.ppc => Used with smakefile.ppc - libtool.m4 => Used by autoconf tools - ltoptions.m4 => Used by autoconf tools - ltsugar.m4 => Used by autoconf tools - ltversion.m4 => Used by autoconf tools - lt~obsolete.m4 => Used by autoconf tools - - intprefix.dfn => Used by autoconf tools - macro.lst => Used by autoconf tools - prefix.dfn => Used by autoconf tools + checksym.awk => Used for maintaining pnglibconf.h + dfn.awk => Used for maintaining pnglibconf.h + options.awk => Used for maintaining pnglibconf.h + pnglibconf.dfa => Used for maintaining pnglibconf.h + pnglibconf.mak => Used for maintaining pnglibconf.h + intprefix.c => Used for symbol versioning + prefix.c => Used for symbol versioning + sym.c => Used for symbol versioning + symbols.c => Used for symbol versioning + vers.c => Used for symbol versioning Further information can be found in comments in the individual scripts and makefiles. diff --git a/source/libs/libpng/libpng-src/scripts/autoconf/libtool.m4 b/source/libs/libpng/libpng-src/scripts/autoconf/libtool.m4 index 79a2451ef..8d323b3ee 100644 --- a/source/libs/libpng/libpng-src/scripts/autoconf/libtool.m4 +++ b/source/libs/libpng/libpng-src/scripts/autoconf/libtool.m4 @@ -1,6 +1,6 @@ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # -# Copyright (C) 1996-2001, 2003-2019, 2021-2022 Free Software +# Copyright (C) 1996-2001, 2003-2019, 2021-2024 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # @@ -9,13 +9,13 @@ # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl -# Copyright (C) 2014 Free Software Foundation, Inc. +# 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 of the License, or +# 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 @@ -32,7 +32,7 @@ m4_define([_LT_COPYING], [dnl # along with this program. If not, see <http://www.gnu.org/licenses/>. ]) -# serial 59 LT_INIT +# serial 63 LT_INIT # LT_PREREQ(VERSION) @@ -60,7 +60,7 @@ esac # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], -[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK +[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 @@ -616,7 +616,7 @@ 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), incase it is used in configure for compilation +# AC_OUTPUT is called), in case it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} @@ -651,9 +651,9 @@ 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) 2011 Free Software Foundation, Inc. +Copyright (C) 2024 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." +gives unlimited permission to copy, distribute and modify it." while test 0 != $[#] do @@ -730,7 +730,6 @@ _LT_CONFIG_SAVE_COMMANDS([ cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. @@ -975,6 +974,7 @@ _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE + # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ @@ -1025,6 +1025,21 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ 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 @@ -1049,7 +1064,7 @@ _LT_EOF echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF -int main() { return 0;} +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 @@ -1074,13 +1089,32 @@ _LT_EOF 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' ;; + _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 @@ -1126,7 +1160,7 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], _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_cv_apple_cc_single_mod"; then +[ 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 @@ -1256,7 +1290,9 @@ lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` + # 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 ;; #( /*) @@ -1368,7 +1404,7 @@ mips64*-*linux*) ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*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 @@ -1383,7 +1419,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; - x86_64-*linux*) + x86_64-*linux*|x86_64-gnu*) case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" @@ -1412,7 +1448,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; - x86_64-*linux*) + x86_64-*linux*|x86_64-gnu*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) @@ -1495,7 +1531,7 @@ _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 thats what people were doing historically (setting +# 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. @@ -1545,7 +1581,7 @@ AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) -AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_REQUIRE([AC_PROG_RANLIB]) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) @@ -1556,15 +1592,8 @@ old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in @@ -1696,14 +1725,14 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. + 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* | cegcc*) + 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, @@ -1725,7 +1754,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=8192; ;; - bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) + 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` @@ -1885,11 +1914,11 @@ else /* 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 () __attribute__((visibility("default"))); +int fnord (void) __attribute__((visibility("default"))); #endif -int fnord () { return 42; } -int main () +int fnord (void) { return 42; } +int main (void) { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; @@ -1946,7 +1975,7 @@ else lt_cv_dlopen_self=yes ;; - mingw* | pw32* | cegcc*) + mingw* | windows* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; @@ -2314,7 +2343,7 @@ if test yes = "$GCC"; then *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + 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` @@ -2372,7 +2401,7 @@ BEGIN {RS = " "; FS = "/|\n";} { # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + 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` @@ -2447,7 +2476,7 @@ aix[[4-9]]*) # 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 --with-aix-soname=svr4 only. + # 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 @@ -2541,7 +2570,7 @@ bsdi[[45]]*) # libtool to hard-code these into programs ;; -cygwin* | mingw* | pw32* | cegcc*) +cygwin* | mingw* | windows* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no @@ -2552,15 +2581,29 @@ cygwin* | mingw* | pw32* | cegcc*) # gcc library_names_spec='$libname.dll.a' # 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~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' + # 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' @@ -2573,7 +2616,7 @@ cygwin* | mingw* | pw32* | cegcc*) m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; - mingw* | cegcc*) + mingw* | windows* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; @@ -2592,7 +2635,7 @@ m4_if([$1], [],[ library_names_spec='$libname.dll.lib' case $build_os in - mingw*) + mingw* | windows*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' @@ -2699,7 +2742,21 @@ freebsd* | dragonfly* | midnightbsd*) need_version=yes ;; esac - shlibpath_var=LD_LIBRARY_PATH + case $host_cpu in + powerpc64) + # On FreeBSD bi-arch platforms, a different variable is used for 32-bit + # binaries. See <https://man.freebsd.org/cgi/man.cgi?query=ld.so>. + 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 @@ -2729,8 +2786,9 @@ haiku*) soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes + 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*) @@ -2840,7 +2898,7 @@ 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' + library_names_spec='$libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH @@ -2852,8 +2910,9 @@ linux*android*) hardcode_into_libs=yes dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + # -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. @@ -2887,7 +2946,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) # before this can be enabled. hardcode_into_libs=yes - # Ideally, we could use ldconfig to report *all* directores which are + # 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, @@ -2907,6 +2966,18 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) 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 @@ -2925,6 +2996,18 @@ netbsd*) 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' @@ -2944,7 +3027,7 @@ newsos6) dynamic_linker='ldqnx.so' ;; -openbsd* | bitrig*) +openbsd*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no @@ -3004,6 +3087,17 @@ 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 @@ -3101,6 +3195,21 @@ uts4*) 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 ;; @@ -3276,7 +3385,7 @@ 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*) + *-*-mingw* | *-*-windows*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) @@ -3385,7 +3494,7 @@ case $reload_flag in esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | mingw* | windows* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi @@ -3457,7 +3566,6 @@ lt_cv_deplibs_check_method='unknown' # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. # '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 @@ -3484,7 +3592,7 @@ cygwin*) lt_cv_file_magic_cmd='func_win32_libid' ;; -mingw* | pw32*) +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. @@ -3493,7 +3601,7 @@ mingw* | pw32*) 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)' + 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 ;; @@ -3566,7 +3674,11 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; -netbsd*) +*-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 @@ -3584,7 +3696,7 @@ newos6*) lt_cv_deplibs_check_method=pass_all ;; -openbsd* | bitrig*) +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 @@ -3600,6 +3712,10 @@ rdos*) lt_cv_deplibs_check_method=pass_all ;; +serenity*) + lt_cv_deplibs_check_method=pass_all + ;; + solaris*) lt_cv_deplibs_check_method=pass_all ;; @@ -3648,7 +3764,7 @@ file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in - mingw* | pw32*) + mingw* | windows* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else @@ -3700,7 +3816,7 @@ else # 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*) lt_bad_file=conftest.nm/nofile ;; + 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 @@ -3791,7 +3907,7 @@ lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in -cygwin* | mingw* | pw32* | cegcc*) +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 @@ -3823,16 +3939,16 @@ _LT_DECL([], [sharedlib_from_linklib_cmd], [1], 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_mainfest_tool], - [lt_cv_path_mainfest_tool=no +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_mainfest_tool=yes + lt_cv_path_manifest_tool=yes fi rm -f conftest*]) -if test yes != "$lt_cv_path_mainfest_tool"; then +if test yes != "$lt_cv_path_manifest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl @@ -3861,7 +3977,7 @@ AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-mingw* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) @@ -3936,7 +4052,7 @@ case $host_os in aix*) symcode='[[BCDT]]' ;; -cygwin* | mingw* | pw32* | cegcc*) +cygwin* | mingw* | windows* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) @@ -3951,7 +4067,7 @@ osf*) symcode='[[BCDEGQRST]]' ;; solaris*) - symcode='[[BDRT]]' + symcode='[[BCDRT]]' ;; sco3.2v5*) symcode='[[DT]]' @@ -4015,7 +4131,7 @@ $lt_c_name_lib_hook\ # Handle CRLF in mingw tool chain opt_cr= case $build_os in -mingw*) +mingw* | windows*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac @@ -4066,13 +4182,14 @@ void nm_test_func(void){} #ifdef __cplusplus } #endif -int main(){nm_test_var='a';nm_test_func();return(0);} +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 - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + $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" @@ -4242,7 +4359,7 @@ m4_if([$1], [CXX], [ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) + 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 @@ -4318,7 +4435,7 @@ m4_if([$1], [CXX], [ ;; esac ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) + 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], [], @@ -4444,7 +4561,9 @@ m4_if([$1], [CXX], [ ;; esac ;; - netbsd*) + netbsd* | netbsdelf*-gnu) + ;; + *-mlibc) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise @@ -4474,6 +4593,8 @@ m4_if([$1], [CXX], [ ;; psos*) ;; + serenity*) + ;; solaris*) case $cc_basename in CC* | sunCC*) @@ -4566,7 +4687,7 @@ m4_if([$1], [CXX], [ # PIC is the default for these OSes. ;; - mingw* | cygwin* | pw32* | os2* | cegcc*) + 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 @@ -4670,7 +4791,7 @@ m4_if([$1], [CXX], [ esac ;; - mingw* | cygwin* | pw32* | os2* | cegcc*) + 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], [], @@ -4712,6 +4833,12 @@ m4_if([$1], [CXX], [ _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*) @@ -4794,6 +4921,12 @@ m4_if([$1], [CXX], [ _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. @@ -4810,6 +4943,9 @@ m4_if([$1], [CXX], [ _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' @@ -4945,7 +5081,7 @@ m4_if([$1], [CXX], [ pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; - cygwin* | mingw* | cegcc*) + cygwin* | mingw* | windows* | cegcc*) case $cc_basename in cl* | icl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' @@ -5003,7 +5139,7 @@ dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in - cygwin* | mingw* | pw32* | cegcc*) + 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. @@ -5015,9 +5151,6 @@ dnl Note also adjust exclude_expsyms for C++ above. # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes @@ -5118,7 +5251,7 @@ _LT_EOF fi ;; - cygwin* | mingw* | pw32* | cegcc*) + 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' @@ -5128,6 +5261,7 @@ _LT_EOF _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' @@ -5147,7 +5281,7 @@ _LT_EOF haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=no ;; os2*) @@ -5174,7 +5308,7 @@ _LT_EOF 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(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)='@' ;; @@ -5253,6 +5387,7 @@ _LT_EOF 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*) @@ -5273,7 +5408,12 @@ _LT_EOF fi ;; - netbsd*) + *-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= @@ -5575,7 +5715,7 @@ _LT_EOF _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; - cygwin* | mingw* | pw32* | cegcc*) + 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 @@ -5592,14 +5732,14 @@ _LT_EOF # 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_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 -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + $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' @@ -5811,11 +5951,15 @@ _LT_EOF # 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 ;; - netbsd*) + *-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 @@ -5837,7 +5981,7 @@ _LT_EOF *nto* | *qnx*) ;; - openbsd* | bitrig*) + openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no @@ -5880,7 +6024,7 @@ _LT_EOF 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(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)='@' ;; @@ -5916,6 +6060,9 @@ _LT_EOF _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; + serenity*) + ;; + solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test yes = "$GCC"; then @@ -6174,7 +6321,7 @@ _LT_TAGDECL([], [hardcode_direct], [0], _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 + "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 @@ -6232,7 +6379,7 @@ _LT_TAGVAR(objext, $1)=$objext lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' +lt_simple_link_test_code='int main(void){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other @@ -6421,8 +6568,7 @@ if test yes != "$_lt_caught_CXX_error"; then wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then + 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)= @@ -6442,7 +6588,7 @@ if test yes != "$_lt_caught_CXX_error"; then # 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"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' else GXX=no @@ -6651,7 +6797,7 @@ if test yes != "$_lt_caught_CXX_error"; then esac ;; - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | mingw* | windows* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl* | ,icl* | no,icl*) # Native MSVC or ICC @@ -6704,6 +6850,7 @@ if test yes != "$_lt_caught_CXX_error"; then _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' @@ -6750,7 +6897,7 @@ if test yes != "$_lt_caught_CXX_error"; then 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(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)='@' ;; @@ -6791,7 +6938,7 @@ if test yes != "$_lt_caught_CXX_error"; then haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=no ;; hpux9*) @@ -6818,7 +6965,7 @@ if test yes != "$_lt_caught_CXX_error"; then # 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"' + 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 @@ -6883,7 +7030,7 @@ if test yes != "$_lt_caught_CXX_error"; then # 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"' + 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 @@ -7115,6 +7262,10 @@ if test yes != "$_lt_caught_CXX_error"; then 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' @@ -7131,7 +7282,7 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(ld_shlibs, $1)=yes ;; - openbsd* | bitrig*) + openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no @@ -7222,7 +7373,7 @@ if test yes != "$_lt_caught_CXX_error"; then # 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"' + 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 @@ -7237,6 +7388,9 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(ld_shlibs, $1)=no ;; + serenity*) + ;; + sunos4*) case $cc_basename in CC*) @@ -7306,7 +7460,7 @@ if test yes != "$_lt_caught_CXX_error"; then # 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"' + 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. @@ -7317,7 +7471,7 @@ if test yes != "$_lt_caught_CXX_error"; then # 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"' + 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' @@ -7555,10 +7709,11 @@ if AC_TRY_EVAL(ac_compile); then case $prev$p in -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. + # Some compilers place space between "-{L,R,l}" and the path. # Remove the space. - if test x-L = "$p" || - test x-R = "$p"; then + if test x-L = x"$p" || + test x-R = x"$p" || + test x-l = x"$p"; then prev=$p continue fi @@ -8216,7 +8371,7 @@ AC_SUBST([DLLTOOL]) # ---------------- # Check for a file(cmd) program that can be used to detect file type and magic m4_defun([_LT_DECL_FILECMD], -[AC_CHECK_TOOL([FILECMD], [file], [:]) +[AC_CHECK_PROG([FILECMD], [file], [file], [:]) _LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types]) ])# _LD_DECL_FILECMD @@ -8232,73 +8387,6 @@ _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 - -m4_ifndef([AC_PROG_SED], [ -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f "$lt_ac_sed" && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test 10 -lt "$lt_ac_count" && break - lt_ac_count=`expr $lt_ac_count + 1` - if test "$lt_ac_count" -gt "$lt_ac_max"; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) @@ -8345,7 +8433,7 @@ AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in - *-*-mingw* ) # actually msys + *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) @@ -8358,7 +8446,7 @@ AC_CACHE_VAL(lt_cv_to_host_file_cmd, ;; *-*-cygwin* ) case $build in - *-*-mingw* ) # actually msys + *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) @@ -8384,9 +8472,9 @@ 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* ) + *-*-mingw* | *-*-windows* ) case $build in - *-*-mingw* ) # actually msys + *-*-mingw* | *-*-windows* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac diff --git a/source/libs/libpng/libpng-src/scripts/autoconf/ltoptions.m4 b/source/libs/libpng/libpng-src/scripts/autoconf/ltoptions.m4 index b0b5e9c21..25caa8902 100644 --- a/source/libs/libpng/libpng-src/scripts/autoconf/ltoptions.m4 +++ b/source/libs/libpng/libpng-src/scripts/autoconf/ltoptions.m4 @@ -1,6 +1,6 @@ # Helper functions for option handling. -*- Autoconf -*- # -# Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2022 Free +# Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2024 Free # Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # @@ -8,7 +8,7 @@ # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# serial 8 ltoptions.m4 +# 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])]) @@ -128,7 +128,7 @@ LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) +*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) @@ -323,29 +323,39 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_AIX_SONAME([DEFAULT]) # ---------------------------------- -# implement the --with-aix-soname flag, 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'. +# 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_WITH([aix-soname], - [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], + 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 $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) - with_aix_soname=$lt_cv_with_aix_soname]) + [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 @@ -376,30 +386,50 @@ LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) # _LT_WITH_PIC([MODE]) # -------------------- -# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' +# 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_WITH([pic], - [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], +[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 $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])]) + 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 diff --git a/source/libs/libpng/libpng-src/scripts/autoconf/ltsugar.m4 b/source/libs/libpng/libpng-src/scripts/autoconf/ltsugar.m4 index 902508bd9..5b5c80a3a 100644 --- a/source/libs/libpng/libpng-src/scripts/autoconf/ltsugar.m4 +++ b/source/libs/libpng/libpng-src/scripts/autoconf/ltsugar.m4 @@ -1,6 +1,6 @@ # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # -# Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2022 Free Software +# Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2024 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # diff --git a/source/libs/libpng/libpng-src/scripts/autoconf/ltversion.m4 b/source/libs/libpng/libpng-src/scripts/autoconf/ltversion.m4 index b155d0ace..228df3f39 100644 --- a/source/libs/libpng/libpng-src/scripts/autoconf/ltversion.m4 +++ b/source/libs/libpng/libpng-src/scripts/autoconf/ltversion.m4 @@ -1,6 +1,6 @@ # ltversion.m4 -- version numbers -*- Autoconf -*- # -# Copyright (C) 2004, 2011-2019, 2021-2022 Free Software Foundation, +# Copyright (C) 2004, 2011-2019, 2021-2024 Free Software Foundation, # Inc. # Written by Scott James Remnant, 2004 # @@ -10,15 +10,15 @@ # @configure_input@ -# serial 4245 ltversion.m4 +# serial 4441 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.4.7]) -m4_define([LT_PACKAGE_REVISION], [2.4.7]) +m4_define([LT_PACKAGE_VERSION], [2.5.4]) +m4_define([LT_PACKAGE_REVISION], [2.5.4]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.7' -macro_revision='2.4.7' +[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) ]) diff --git a/source/libs/libpng/libpng-src/scripts/autoconf/lt~obsolete.m4 b/source/libs/libpng/libpng-src/scripts/autoconf/lt~obsolete.m4 index 0f7a8759d..22b534697 100644 --- a/source/libs/libpng/libpng-src/scripts/autoconf/lt~obsolete.m4 +++ b/source/libs/libpng/libpng-src/scripts/autoconf/lt~obsolete.m4 @@ -1,6 +1,6 @@ # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # -# Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2022 Free +# Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2024 Free # Software Foundation, Inc. # Written by Scott James Remnant, 2004. # diff --git a/source/libs/libpng/libpng-src/scripts/cmake/PNGConfig.cmake b/source/libs/libpng/libpng-src/scripts/cmake/PNGConfig.cmake index 3b6f646de..b569d4502 100644 --- a/source/libs/libpng/libpng-src/scripts/cmake/PNGConfig.cmake +++ b/source/libs/libpng/libpng-src/scripts/cmake/PNGConfig.cmake @@ -1,15 +1,28 @@ -include(CMakeFindDependencyMacro) - -find_dependency(ZLIB REQUIRED) - -include("${CMAKE_CURRENT_LIST_DIR}/PNGTargets.cmake") - -if(NOT TARGET PNG::PNG) - if(TARGET PNG::png_shared) - add_library(PNG::PNG INTERFACE IMPORTED) - target_link_libraries(PNG::PNG INTERFACE PNG::png_shared) - elseif(TARGET PNG::png_static) - add_library(PNG::PNG INTERFACE IMPORTED) - target_link_libraries(PNG::PNG INTERFACE PNG::png_static) - endif() -endif() +# PNGConfig.cmake +# CMake config file compatible with the FindPNG module. + +# Copyright (c) 2024 Cosmin Truta +# Written by Benjamin Buch, 2024 +# +# Use, modification and distribution are subject to +# the same licensing terms and conditions as libpng. +# Please see the copyright notice in png.h or visit +# http://libpng.org/pub/png/src/libpng-LICENSE.txt +# +# SPDX-License-Identifier: libpng-2.0 + +include(CMakeFindDependencyMacro) + +find_dependency(ZLIB REQUIRED) + +include("${CMAKE_CURRENT_LIST_DIR}/PNGTargets.cmake") + +if(NOT TARGET PNG::PNG) + if(TARGET PNG::png_shared) + add_library(PNG::PNG INTERFACE IMPORTED) + target_link_libraries(PNG::PNG INTERFACE PNG::png_shared) + elseif(TARGET PNG::png_static) + add_library(PNG::PNG INTERFACE IMPORTED) + target_link_libraries(PNG::PNG INTERFACE PNG::png_static) + endif() +endif() diff --git a/source/libs/libpng/libpng-src/scripts/cmake/PNGGenConfig.cmake b/source/libs/libpng/libpng-src/scripts/cmake/PNGGenConfig.cmake new file mode 100644 index 000000000..4a0030edd --- /dev/null +++ b/source/libs/libpng/libpng-src/scripts/cmake/PNGGenConfig.cmake @@ -0,0 +1,104 @@ +# PNGGenConfig.cmake +# Utility functions for configuring and building libpng + +# Copyright (c) 2018-2025 Cosmin Truta +# Copyright (c) 2016-2018 Glenn Randers-Pehrson +# Written by Roger Leigh, 2016 +# +# Use, modification and distribution are subject to +# the same licensing terms and conditions as libpng. +# Please see the copyright notice in png.h or visit +# http://libpng.org/pub/png/src/libpng-LICENSE.txt +# +# SPDX-License-Identifier: libpng-2.0 + +# Generate .chk from .out with awk, based upon the automake logic: +# generate_chk(INPUT <file> OUTPUT <file> [DEPENDS <deps>...]) +function(generate_chk) + set(options) + set(oneValueArgs INPUT OUTPUT) + set(multiValueArgs DEPENDS) + cmake_parse_arguments(_GC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if(NOT _GC_INPUT) + message(FATAL_ERROR "generate_chk: Missing INPUT argument") + endif() + if(NOT _GC_OUTPUT) + message(FATAL_ERROR "generate_chk: Missing OUTPUT argument") + endif() + + # Run genchk.cmake to generate the .chk file. + add_custom_command(OUTPUT "${_GC_OUTPUT}" + COMMAND "${CMAKE_COMMAND}" + "-DINPUT=${_GC_INPUT}" + "-DOUTPUT=${_GC_OUTPUT}" + -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/genchk.cmake" + DEPENDS "${_GC_INPUT}" ${_GC_DEPENDS} + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") +endfunction() + +# Generate .out from C source file with awk: +# generate_out(INPUT <file> OUTPUT <file> [DEPENDS <deps>...]) +function(generate_out) + set(options) + set(oneValueArgs INPUT OUTPUT) + set(multiValueArgs DEPENDS) + cmake_parse_arguments(_GO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if(NOT _GO_INPUT) + message(FATAL_ERROR "generate_out: Missing INPUT argument") + endif() + if(NOT _GO_OUTPUT) + message(FATAL_ERROR "generate_out: Missing OUTPUT argument") + endif() + + # Run genout.cmake to generate the .out file. + add_custom_command(OUTPUT "${_GO_OUTPUT}" + COMMAND "${CMAKE_COMMAND}" + "-DINPUT=${_GO_INPUT}" + "-DOUTPUT=${_GO_OUTPUT}" + -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/genout.cmake" + DEPENDS "${_GO_INPUT}" ${_GO_DEPENDS} + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") +endfunction() + +# Generate a source file with awk: +# generate_source(OUTPUT <file> [DEPENDS <deps>...]) +function(generate_source) + set(options) + set(oneValueArgs OUTPUT) + set(multiValueArgs DEPENDS) + cmake_parse_arguments(_GSO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if(NOT _GSO_OUTPUT) + message(FATAL_ERROR "generate_source: Missing OUTPUT argument") + endif() + + # Run gensrc.cmake to generate the source file. + add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${_GSO_OUTPUT}" + COMMAND "${CMAKE_COMMAND}" + "-DOUTPUT=${_GSO_OUTPUT}" + -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/cmake/gensrc.cmake" + DEPENDS ${_GSO_DEPENDS} + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") +endfunction() + +# Generate an identical file copy: +# generate_copy(INPUT <file> OUTPUT <file> [DEPENDS <deps>...]) +function(generate_copy) + set(options) + set(oneValueArgs INPUT OUTPUT) + set(multiValueArgs DEPENDS) + cmake_parse_arguments(_GCO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if(NOT _GCO_INPUT) + message(FATAL_ERROR "generate_copy: Missing INPUT argument") + endif() + if(NOT _GCO_OUTPUT) + message(FATAL_ERROR "generate_copy: Missing OUTPUT argument") + endif() + + # Make a forced file copy, overwriting any pre-existing output file. + add_custom_command(OUTPUT "${_GCO_OUTPUT}" + COMMAND "${CMAKE_COMMAND}" + -E remove "${_GCO_OUTPUT}" + COMMAND "${CMAKE_COMMAND}" + -E copy "${_GCO_INPUT}" "${_GCO_OUTPUT}" + DEPENDS "${source}" ${_GCO_DEPENDS}) +endfunction() diff --git a/source/libs/libpng/libpng-src/scripts/cmake/PNGTest.cmake b/source/libs/libpng/libpng-src/scripts/cmake/PNGTest.cmake new file mode 100644 index 000000000..184773bc0 --- /dev/null +++ b/source/libs/libpng/libpng-src/scripts/cmake/PNGTest.cmake @@ -0,0 +1,42 @@ +# PNGTest.cmake +# Utility functions for testing libpng + +# Copyright (c) 2018-2025 Cosmin Truta +# Copyright (c) 2016-2018 Glenn Randers-Pehrson +# Written by Roger Leigh, 2016 +# +# Use, modification and distribution are subject to +# the same licensing terms and conditions as libpng. +# Please see the copyright notice in png.h or visit +# http://libpng.org/pub/png/src/libpng-LICENSE.txt +# +# SPDX-License-Identifier: libpng-2.0 + +# Add a custom target to run a test: +# png_add_test(NAME <test> COMMAND <command> [OPTIONS <options>...] [FILES <files>...]) +function(png_add_test) + set(options) + set(oneValueArgs NAME COMMAND) + set(multiValueArgs OPTIONS FILES) + cmake_parse_arguments(_PAT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if(NOT _PAT_NAME) + message(FATAL_ERROR "png_add_test: Missing NAME argument") + endif() + if(NOT _PAT_COMMAND) + message(FATAL_ERROR "png_add_test: Missing COMMAND argument") + endif() + + # Initialize the global variables used by the "${_PAT_NAME}.cmake" script. + set(TEST_OPTIONS "${_PAT_OPTIONS}") + set(TEST_FILES "${_PAT_FILES}") + + # Generate and run the "${_PAT_NAME}.cmake" script. + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/test.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/tests/${_PAT_NAME}.cmake" + @ONLY) + add_test(NAME "${_PAT_NAME}" + COMMAND "${CMAKE_COMMAND}" + "-DLIBPNG=$<TARGET_FILE:png_shared>" + "-DTEST_COMMAND=$<TARGET_FILE:${_PAT_COMMAND}>" + -P "${CMAKE_CURRENT_BINARY_DIR}/tests/${_PAT_NAME}.cmake") +endfunction() diff --git a/source/libs/libpng/libpng-src/scripts/cmake/test.cmake.in b/source/libs/libpng/libpng-src/scripts/cmake/test.cmake.in index a1cd30f55..b578da926 100644 --- a/source/libs/libpng/libpng-src/scripts/cmake/test.cmake.in +++ b/source/libs/libpng/libpng-src/scripts/cmake/test.cmake.in @@ -26,7 +26,8 @@ if(WIN32) set(ENV{PATH} "${LIBPNG_DIR};$ENV{PATH}") endif() -message("Running ${TEST_COMMAND}" ${TEST_OPTIONS} ${NATIVE_TEST_FILES}) +string(JOIN " " TEST_COMMAND_STRING "${TEST_COMMAND}" ${TEST_OPTIONS} ${NATIVE_TEST_FILES}) +message(STATUS "Running ${TEST_COMMAND_STRING}") execute_process(COMMAND "${TEST_COMMAND}" ${TEST_OPTIONS} ${NATIVE_TEST_FILES} RESULT_VARIABLE TEST_STATUS) if(TEST_STATUS) diff --git a/source/libs/libpng/libpng-src/scripts/descrip.mms b/source/libs/libpng/libpng-src/scripts/descrip.mms index c440fc350..f0d0b4896 100644 --- a/source/libs/libpng/libpng-src/scripts/descrip.mms +++ b/source/libs/libpng/libpng-src/scripts/descrip.mms @@ -1,4 +1,3 @@ - cc_defs = /inc=$(ZLIBSRC) c_deb = diff --git a/source/libs/libpng/libpng-src/scripts/intprefix.c b/source/libs/libpng/libpng-src/scripts/intprefix.c index 4085e5401..3c9dc57a5 100644 --- a/source/libs/libpng/libpng-src/scripts/intprefix.c +++ b/source/libs/libpng/libpng-src/scripts/intprefix.c @@ -1,4 +1,3 @@ - /* intprefix.c - generate an unprefixed internal symbol list * * Copyright (c) 2013-2014 Glenn Randers-Pehrson diff --git a/source/libs/libpng/libpng-src/scripts/libpng-config-body.in b/source/libs/libpng/libpng-src/scripts/libpng-config-body.in index b466432d5..181984b4b 100644 --- a/source/libs/libpng/libpng-src/scripts/libpng-config-body.in +++ b/source/libs/libpng/libpng-src/scripts/libpng-config-body.in @@ -1,4 +1,3 @@ - usage() { cat <<EOF diff --git a/source/libs/libpng/libpng-src/scripts/libpng-config-head.in b/source/libs/libpng/libpng-src/scripts/libpng-config-head.in index 3d26a0a6a..039a14597 100644 --- a/source/libs/libpng/libpng-src/scripts/libpng-config-head.in +++ b/source/libs/libpng/libpng-src/scripts/libpng-config-head.in @@ -11,7 +11,7 @@ # Modeled after libxml-config. -version=1.6.44 +version=1.6.45 prefix="" libdir="" libs="" diff --git a/source/libs/libpng/libpng-src/scripts/libpng.pc.in b/source/libs/libpng/libpng-src/scripts/libpng.pc.in index fc3f6f67f..9192fd476 100644 --- a/source/libs/libpng/libpng-src/scripts/libpng.pc.in +++ b/source/libs/libpng/libpng-src/scripts/libpng.pc.in @@ -5,6 +5,6 @@ includedir=@includedir@/libpng16 Name: libpng Description: Loads and saves PNG files -Version: 1.6.44 +Version: 1.6.45 Libs: -L${libdir} -lpng16 Cflags: -I${includedir} diff --git a/source/libs/libpng/libpng-src/scripts/pnglibconf.dfa b/source/libs/libpng/libpng-src/scripts/pnglibconf.dfa index fe8e48123..83000d618 100644 --- a/source/libs/libpng/libpng-src/scripts/pnglibconf.dfa +++ b/source/libs/libpng/libpng-src/scripts/pnglibconf.dfa @@ -8,7 +8,7 @@ com pnglibconf.h - library build configuration com version com -com Copyright (c) 2018-2024 Cosmin Truta +com Copyright (c) 2018-2025 Cosmin Truta com Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson com com This code is released under the libpng license. @@ -846,6 +846,7 @@ setting IDAT_READ_SIZE default PNG_ZBUF_SIZE # Ancillary chunks chunk bKGD chunk cHRM enables COLORSPACE +chunk cICP enables COLORSPACE, GAMMA chunk eXIf chunk gAMA enables GAMMA chunk hIST diff --git a/source/libs/libpng/libpng-src/scripts/pnglibconf.h.prebuilt b/source/libs/libpng/libpng-src/scripts/pnglibconf.h.prebuilt index f5ce441ec..695aae6fe 100644 --- a/source/libs/libpng/libpng-src/scripts/pnglibconf.h.prebuilt +++ b/source/libs/libpng/libpng-src/scripts/pnglibconf.h.prebuilt @@ -1,8 +1,8 @@ /* pnglibconf.h - library build configuration */ -/* libpng version 1.6.44 */ +/* libpng version 1.6.45 */ -/* Copyright (c) 2018-2024 Cosmin Truta */ +/* Copyright (c) 2018-2025 Cosmin Truta */ /* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */ /* This code is released under the libpng license. */ @@ -88,6 +88,7 @@ #define PNG_READ_USER_TRANSFORM_SUPPORTED #define PNG_READ_bKGD_SUPPORTED #define PNG_READ_cHRM_SUPPORTED +#define PNG_READ_cICP_SUPPORTED #define PNG_READ_eXIf_SUPPORTED #define PNG_READ_gAMA_SUPPORTED #define PNG_READ_hIST_SUPPORTED @@ -158,6 +159,7 @@ #define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED #define PNG_WRITE_bKGD_SUPPORTED #define PNG_WRITE_cHRM_SUPPORTED +#define PNG_WRITE_cICP_SUPPORTED #define PNG_WRITE_eXIf_SUPPORTED #define PNG_WRITE_gAMA_SUPPORTED #define PNG_WRITE_hIST_SUPPORTED @@ -176,6 +178,7 @@ #define PNG_WRITE_zTXt_SUPPORTED #define PNG_bKGD_SUPPORTED #define PNG_cHRM_SUPPORTED +#define PNG_cICP_SUPPORTED #define PNG_eXIf_SUPPORTED #define PNG_gAMA_SUPPORTED #define PNG_hIST_SUPPORTED diff --git a/source/libs/libpng/libpng-src/scripts/prefix.c b/source/libs/libpng/libpng-src/scripts/prefix.c index 06576ae6a..8a39482b0 100644 --- a/source/libs/libpng/libpng-src/scripts/prefix.c +++ b/source/libs/libpng/libpng-src/scripts/prefix.c @@ -1,4 +1,3 @@ - /* prefix.c - generate an unprefixed symbol list * * Copyright (c) 2013-2014 Glenn Randers-Pehrson diff --git a/source/libs/libpng/libpng-src/scripts/sym.c b/source/libs/libpng/libpng-src/scripts/sym.c index 7571de2b7..0749449d0 100644 --- a/source/libs/libpng/libpng-src/scripts/sym.c +++ b/source/libs/libpng/libpng-src/scripts/sym.c @@ -1,4 +1,3 @@ - /* sym.c - define format of libpng.sym * * Copyright (c) 2011-2014 Glenn Randers-Pehrson diff --git a/source/libs/libpng/libpng-src/scripts/symbols.c b/source/libs/libpng/libpng-src/scripts/symbols.c index d51a8303c..d5bb1d0f9 100644 --- a/source/libs/libpng/libpng-src/scripts/symbols.c +++ b/source/libs/libpng/libpng-src/scripts/symbols.c @@ -1,4 +1,3 @@ - /* symbols.c - find all exported symbols * * Copyright (c) 2011-2014 Glenn Randers-Pehrson diff --git a/source/libs/libpng/libpng-src/scripts/symbols.def b/source/libs/libpng/libpng-src/scripts/symbols.def index 82494bbf9..305bd1a28 100644 --- a/source/libs/libpng/libpng-src/scripts/symbols.def +++ b/source/libs/libpng/libpng-src/scripts/symbols.def @@ -253,3 +253,5 @@ EXPORTS png_set_eXIf @247 png_get_eXIf_1 @248 png_set_eXIf_1 @249 + png_get_cICP @250 + png_set_cICP @251 diff --git a/source/libs/libpng/libpng-src/scripts/vers.c b/source/libs/libpng/libpng-src/scripts/vers.c index d74972643..137749c70 100644 --- a/source/libs/libpng/libpng-src/scripts/vers.c +++ b/source/libs/libpng/libpng-src/scripts/vers.c @@ -1,4 +1,3 @@ - /* vers.c - define format of libpng.vers * * Copyright (c) 2011-2014 Glenn Randers-Pehrson diff --git a/source/libs/libpng/libpng-src/tests/pngtest-all b/source/libs/libpng/libpng-src/tests/pngtest-all index 668d92e9c..0998425a8 100644 --- a/source/libs/libpng/libpng-src/tests/pngtest-all +++ b/source/libs/libpng/libpng-src/tests/pngtest-all @@ -24,6 +24,9 @@ TEST(){ # The "standard" test TEST --strict "${srcdir}"/pngtest.png +# PNG-3 tests +TEST --strict "${srcdir}"/contrib/testpngs/png-3/*.png + # Various crashers # Use --relaxed because some come from fuzzers that don't maintain CRCs TEST --relaxed "${srcdir}"/contrib/testpngs/crashers/badcrc.png diff --git a/source/libs/libpng/version.ac b/source/libs/libpng/version.ac index da9dd431e..d1d79f58a 100644 --- a/source/libs/libpng/version.ac +++ b/source/libs/libpng/version.ac @@ -8,4 +8,4 @@ dnl dnl -------------------------------------------------------- dnl dnl m4-include this file to define the current libpng version -m4_define([libpng_version], [1.6.44]) +m4_define([libpng_version], [1.6.45]) diff --git a/source/libs/luajit/ChangeLog b/source/libs/luajit/ChangeLog index 4cbd97000..429f6f0d6 100644 --- a/source/libs/luajit/ChangeLog +++ b/source/libs/luajit/ChangeLog @@ -1,3 +1,9 @@ +2025-01-15 J. Neusch\"afer <j.ne@posteo.net> + + * ac/withenable.ac: just KPSE_WITH_LIB([luajit]), no more [tree]. + * ac/luajit.ac: new file for KPSE_TRY_LIB. + https://tug.org/pipermail/tex-live/2025-January/051043.html + 2023-08-23 TANAKA Takuji <ttk@t-lab.opal.ne.jp> * luajiterr.test: Make easier to test on Windows. @@ -16,7 +22,6 @@ Import LuaJIT-2.1.0-beta3. * version.ac: Adjust. - 2016-03-09 Luigi Scarso <luigi.scarso@gmail.com> Import LuaJIT-2.1.0-beta2. diff --git a/source/libs/luajit/ac/luajit.ac b/source/libs/luajit/ac/luajit.ac new file mode 100644 index 000000000..4c3fccb35 --- /dev/null +++ b/source/libs/luajit/ac/luajit.ac @@ -0,0 +1,10 @@ +dnl $Id: luajit.ac 73471 2025-01-15 22:51:07Z karl $ +## libs/luajit/ac/luajit.ac: configure.ac fragment for the TeX Live subdirectory libs/luajit/ +dnl +dnl Copyright 2025 Karl Berry <tex-live@tug.org> +dnl You may freely use, modify and/or distribute this file. +dnl +## basic check of system luajit +KPSE_TRY_LIB([luajit], + [#include <luajit.h>], + [const char *v = LUAJIT_VERSION;]) diff --git a/source/libs/luajit/ac/withenable.ac b/source/libs/luajit/ac/withenable.ac index 7f7a246e5..2f2bbc34f 100644 --- a/source/libs/luajit/ac/withenable.ac +++ b/source/libs/luajit/ac/withenable.ac @@ -1,9 +1,11 @@ +dnl $Id: withenable.ac 73471 2025-01-15 22:51:07Z karl $ ## libs/luajit/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/luajit/ dnl -dnl Copyright (C) 2014 Peter Breitenlohner <tex-live@tug.org> +dnl Copyright 2015-2025 Karl Berry <tex-live@tug.org> +dnl Copyright 2014 Peter Breitenlohner <tex-live@tug.org> dnl You may freely use, modify and/or distribute this file. dnl dnl extra_dirs = libs/luajit/native dnl ## configure options and TL libraries required for luajit -KPSE_WITH_LIB([luajit], , [tree]) +KPSE_WITH_LIB([luajit]) diff --git a/source/libs/pplib/ChangeLog b/source/libs/pplib/ChangeLog index 61229efce..c92887e10 100644 --- a/source/libs/pplib/ChangeLog +++ b/source/libs/pplib/ChangeLog @@ -1,3 +1,8 @@ +2025-01-21 Vincenzo Mantova <vlmantova@gmail.com> + + * ac/withenable.ac (KPSE_WITH_LIB): depend on zlib. + https://tug.org/pipermail/tlbuild/2024q2/005555.html + 2023-12-23 TANAKA Takuji <ttk@t-lab.opal.ne.jp> * pplib-src/src/util/README.md, diff --git a/source/libs/pplib/ac/withenable.ac b/source/libs/pplib/ac/withenable.ac index 285913046..73dc5ce85 100644 --- a/source/libs/pplib/ac/withenable.ac +++ b/source/libs/pplib/ac/withenable.ac @@ -4,4 +4,4 @@ dnl Copyright (C) 2013 Peter Breitenlohner <tex-live@tug.org> dnl You may freely use, modify and/or distribute this file. dnl ## configure options and TL libraries required for pplib -KPSE_WITH_LIB([pplib], , [tree]) +KPSE_WITH_LIB([pplib], [zlib], [tree]) diff --git a/source/m4/ChangeLog b/source/m4/ChangeLog index 9573af778..af3d5555c 100644 --- a/source/m4/ChangeLog +++ b/source/m4/ChangeLog @@ -1,3 +1,12 @@ +2025-01-15 J. Neusch\"afer <j.ne@posteo.net> + + configure support for system luajit library. + * kpse-luajit-flags.m4 (KPSE_LUAJIT_FLAGS): just [lt], not [lt tree]. + (KPSE_LUAJIT_OPTIONS, KPSE_LUAJIT_SYSTEM_FLAGS): new defuns. + * kpse-pkgs.m4 (KPSE_ALL_SYSTEM_FLAGS): include + KPSE_LUAJIT_SYSTEM_FLAGS. + https://tug.org/pipermail/tex-live/2025-January/051043.html + 2024-04-28 Karl Berry <karl@freefriends.org> * kpse-common.m4 (KPSE_BASIC): diff --git a/source/m4/kpse-luajit-flags.m4 b/source/m4/kpse-luajit-flags.m4 index 7357a2949..260d65265 100644 --- a/source/m4/kpse-luajit-flags.m4 +++ b/source/m4/kpse-luajit-flags.m4 @@ -1,6 +1,6 @@ -# $Id: kpse-luajit-flags.m4 55138 2020-05-14 17:47:47Z karl $ +# $Id: kpse-luajit-flags.m4 73471 2025-01-15 22:51:07Z karl $ # Public macros for the TeX Live (TL) tree. -# Copyright 2019 Karl Berry <tex-live@tug.org> +# Copyright 2019-2025 Karl Berry <tex-live@tug.org> # Copyright 2014 Peter Breitenlohner <tex-live@tug.org> # # This file is free software; the copyright holder @@ -13,7 +13,7 @@ # LIBS required for the `-ltexluajit' library in libs/luajit/ of the TL tree. AC_DEFUN([KPSE_LUAJIT_FLAGS], [dnl echo 'tldbg:[$0] called.' >&AS_MESSAGE_LOG_FD -_KPSE_LIB_FLAGS([luajit], [texluajit], [lt tree], +_KPSE_LIB_FLAGS([luajit], [texluajit], [lt], [-IBLD/libs/luajit/include], [BLD/libs/luajit/libtexluajit.la], [], @@ -61,6 +61,14 @@ esac echo 'tldbg:[$0] done.' >&AS_MESSAGE_LOG_FD ]) # KPSE_LUAJIT_FLAGS +# KPSE_LUAJIT_OPTIONS([WITH-SYSTEM]) +# ---------------------------------- +AC_DEFUN([KPSE_LUAJIT_OPTIONS], [_KPSE_LIB_OPTIONS([luajit], [$1], [pkg-config])]) + +# KPSE_LUAJIT_SYSTEM_FLAGS +# ------------------------ +AC_DEFUN([KPSE_LUAJIT_SYSTEM_FLAGS], [_KPSE_PKG_CONFIG_FLAGS([luajit], [luajit])]) + # KPSE_LUAJIT_DEFINES # ------------------- # Set the make variable LUAJIT_DEFINES to the CPPFLAGS required when diff --git a/source/m4/kpse-pkgs.m4 b/source/m4/kpse-pkgs.m4 index f4febe778..d5743c8e5 100644 --- a/source/m4/kpse-pkgs.m4 +++ b/source/m4/kpse-pkgs.m4 @@ -1,6 +1,6 @@ -# $Id: kpse-pkgs.m4 69664 2024-02-01 22:56:12Z karl $ +# $Id: kpse-pkgs.m4 73471 2025-01-15 22:51:07Z karl $ # Private Autoconf macros for the TeX Live (TL) tree. -# Copyright 2016-2024 Karl Berry <tex-live@tug.org> +# Copyright 2016-2025 Karl Berry <tex-live@tug.org> # Copyright 2009-2015 Peter Breitenlohner <tex-live@tug.org> # # This file is free software; the copyright holder @@ -77,6 +77,7 @@ AC_REQUIRE([KPSE_GRAPHITE2_SYSTEM_FLAGS])[]dnl AC_REQUIRE([KPSE_TECKIT_SYSTEM_FLAGS])[]dnl AC_REQUIRE([KPSE_ICU_SYSTEM_FLAGS])[]dnl AC_REQUIRE([KPSE_HARFBUZZ_SYSTEM_FLAGS])[]dnl +AC_REQUIRE([KPSE_LUAJIT_SYSTEM_FLAGS])[]dnl ]) # KPSE_ALL_SYSTEM_FLAGS # KPSE_UTILS_PKGS() diff --git a/source/reautoconf b/source/reautoconf index da255293f..e9549dea4 100755 --- a/source/reautoconf +++ b/source/reautoconf @@ -1,9 +1,9 @@ #! /bin/sh -# $Id: reautoconf 71106 2024-04-28 16:42:22Z karl $ +# $Id: reautoconf 73472 2025-01-15 22:51:19Z karl $ # This "reautoconf" script at the root of the TeX Live source tree # runs autoreconf (from PATH) in all relevant TL directories. # -# Copyright 2008-2023 Karl Berry. +# Copyright 2008-2025 Karl Berry. # Copyright 2004-2009 Peter Breitenlohner. # Copyright 2005 Olaf Weber. # @@ -47,7 +47,7 @@ source tree. Report bugs (and any other discussion) to: tlbuild@tug.org (https://lists.tug.org/tlbuild) -Version: $Id: reautoconf 71106 2024-04-28 16:42:22Z karl $ +Version: $Id: reautoconf 73472 2025-01-15 22:51:19Z karl $ " do_cmd=eval @@ -85,6 +85,7 @@ echo "$0: using `autoheader --version | sed 1q`" echo "$0: using `autom4te --version | sed 1q`" echo "$0: using `automake --version | sed 1q`" echo "$0: using `aclocal --version | sed 1q`" +echo "$0: using `libtool --version | sed 1q`" echo "$0: if you want to use different versions, set PATH." # Give users a chance to quit here. diff --git a/source/texk/Makefile.in b/source/texk/Makefile.in index 511b47f48..070ae9daa 100644 --- a/source/texk/Makefile.in +++ b/source/texk/Makefile.in @@ -98,6 +98,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../m4/kpse-common.m4 \ $(top_srcdir)/../m4/kpse-kpathsea-flags.m4 \ $(top_srcdir)/../m4/kpse-libpng-flags.m4 \ $(top_srcdir)/../m4/kpse-lt-hack.m4 \ + $(top_srcdir)/../m4/kpse-luajit-flags.m4 \ $(top_srcdir)/../m4/kpse-mktex.m4 \ $(top_srcdir)/../m4/kpse-options.m4 \ $(top_srcdir)/../m4/kpse-pkgs.m4 \ diff --git a/source/texk/README b/source/texk/README index 258266f36..247b0fe2d 100644 --- a/source/texk/README +++ b/source/texk/README @@ -1,4 +1,4 @@ -$Id: README 72806 2024-11-09 10:39:33Z takuji $ +$Id: README 73430 2025-01-12 14:58:51Z karl $ Copyright 2006-2024 TeX Users Group. You may freely use, modify and/or distribute this file. @@ -61,7 +61,7 @@ dvipos - maintained here, by us dvipsk - maintained here, by us -dvisvgm 3.2.2 - checked 7mar24 +dvisvgm 3.4.3 - checked 11jan25 https://dvisvgm.de/Downloads/ https://github.com/mgieseki/dvisvgm https://ctan.org/pkg/dvisvgm diff --git a/source/texk/aclocal.m4 b/source/texk/aclocal.m4 index d960cd5f4..7ed461906 100644 --- a/source/texk/aclocal.m4 +++ b/source/texk/aclocal.m4 @@ -1348,6 +1348,7 @@ m4_include([../m4/kpse-harfbuzz-flags.m4]) m4_include([../m4/kpse-kpathsea-flags.m4]) m4_include([../m4/kpse-libpng-flags.m4]) m4_include([../m4/kpse-lt-hack.m4]) +m4_include([../m4/kpse-luajit-flags.m4]) m4_include([../m4/kpse-mktex.m4]) m4_include([../m4/kpse-options.m4]) m4_include([../m4/kpse-pkgs.m4]) diff --git a/source/texk/configure b/source/texk/configure index a7309d6d1..76bf31dd5 100755 --- a/source/texk/configure +++ b/source/texk/configure @@ -809,6 +809,7 @@ with_system_harfbuzz with_system_graphite2 with_system_zziplib with_system_libpng +with_system_luajit with_system_zlib with_zlib_includes with_zlib_libdir @@ -1553,6 +1554,8 @@ Optional Packages: pkg-config) --with-system-libpng use installed libpng headers and library (requires pkg-config) + --with-system-luajit use installed luajit headers and library (requires + pkg-config) --with-system-zlib use installed zlib headers and library --with-zlib-includes=DIR zlib headers installed in DIR @@ -4729,6 +4732,10 @@ fi ## libs/pplib/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/pplib/ ## configure options and TL libraries required for pplib +test "x$need_pplib" = xyes && { + need_zlib=yes +} + ## libs/harfbuzz/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/harfbuzz/ ## configure options and TL libraries required for harfbuzz @@ -4867,6 +4874,24 @@ test "x$need_libpng" = xyes && { ## libs/luajit/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/luajit/ ## configure options and TL libraries required for luajit +# Check whether --with-system-luajit was given. +if test ${with_system_luajit+y} +then : + withval=$with_system_luajit; +fi +if test "x$with_system_luajit" = x; then + if test -f $srcdir/../libs/luajit/configure; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Assuming \`luajit' headers and library from TL tree" >&5 +printf "%s\n" "$as_me: Assuming \`luajit' headers and library from TL tree" >&6;} + with_system_luajit=no + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Assuming installed \`luajit' headers and library" >&5 +printf "%s\n" "$as_me: Assuming installed \`luajit' headers and library" >&6;} + with_system_luajit=yes + fi + ac_configure_args="$ac_configure_args '--with-system-luajit=$with_system_luajit'" +fi + ## libs/lua53/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/lua53/ ## configure options and TL libraries required for lua53 diff --git a/source/texk/kpathsea/ChangeLog b/source/texk/kpathsea/ChangeLog index 6c09d3e13..9babe7980 100644 --- a/source/texk/kpathsea/ChangeLog +++ b/source/texk/kpathsea/ChangeLog @@ -1,3 +1,14 @@ +2025-01-15 Karl Berry <karl@freefriends.org> + + * kpsewhich.c (main): output blank line for search files that are + not found, if more than one search file is specified. + Suggestion from Norbert and Deyan, thread starting at + https://tug.org/pipermail/texhax/2024-July/026506.html + (USAGE): mention this. + * doc/kpathsea.texi (Invoking kpsewhich): mention this, + and the exit status. + (kpsewhich examples): new node. + 2024-11-06 Karl Berry <karl@freefriends.org> * tex-file.c (kpathsea_name_ok): don't allow writing to the diff --git a/source/texk/kpathsea/NEWS b/source/texk/kpathsea/NEWS index 101d0cbaa..ebfb4a18b 100644 --- a/source/texk/kpathsea/NEWS +++ b/source/texk/kpathsea/NEWS @@ -1,6 +1,9 @@ -$Id: NEWS 72783 2024-11-06 22:37:50Z karl $ +$Id: NEWS 73462 2025-01-15 18:18:01Z karl $ This file records noteworthy changes. (Public domain.) +* kpsewhich outputs a blank line when a given file cannot be found, + if more than one file to search for is specified. + * A file named ".tex" can no longer be written from TeX; previously this was allowed as a special case. (The LaTeX 2024-11-01 release changes their build process so as not to write it from TeX.) diff --git a/source/texk/kpathsea/doc/kpathsea.info b/source/texk/kpathsea/doc/kpathsea.info index e8e49782e..e4b8db2b9 100644 --- a/source/texk/kpathsea/doc/kpathsea.info +++ b/source/texk/kpathsea/doc/kpathsea.info @@ -1,9 +1,9 @@ -This is kpathsea.info, produced by makeinfo version 7.0.2 from +This is kpathsea.info, produced by makeinfo version 7.2 from kpathsea.texi. This file documents the Kpathsea library for path searching. - Copyright © 1996–2024 Karl Berry & Olaf Weber. + Copyright © 1996-2025 Karl Berry & Olaf Weber. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are @@ -37,7 +37,7 @@ Kpathsea library **************** This manual documents the Kpathsea library for path searching. It -corresponds to version 6.4.0, released in November 2024. +corresponds to version 6.4.0, released in January 2025. * Menu: @@ -62,9 +62,9 @@ File: kpathsea.info, Node: Introduction, Next: unixtex.ftp, Prev: Top, Up: T ************** This manual corresponds to version 6.4.0 of the Kpathsea library, -released in November 2024. +released in January 2025. - The library’s fundamental purpose is to return a filename from a list + The library's fundamental purpose is to return a filename from a list of directories specified by the user, similar to what shells do when looking up program names to execute. @@ -72,9 +72,9 @@ looking up program names to execute. this library: • Dviljk (see the ‘dvilj’ man page) - • Dvipsk (*note (dvips)::) - • GNU font utilities (*note (fontu)::) - • Web2c (*note (web2c)::) + • Dvipsk (*note (dvips)Top::) + • GNU font utilities (*note (fontu)Top::) + • Web2c (*note (web2c)Top::) • Xdvik (see the ‘xdvi’ man page) Other software that we do not maintain also uses it. @@ -82,7 +82,7 @@ Other software that we do not maintain also uses it. Kpathsea is now maintained as part of the TeX Live distribution (<https://tug.org/texlive>), which includes several more Kpathsea-using programs. For information on configuration, building, installing, and -more, *note (tlbuild)::. +more, *note (tlbuild)Top::. The library is still actively maintained. If you have comments or suggestions, please send along (*note Reporting bugs::). @@ -98,7 +98,7 @@ See accompanying files for the text of the GNU licenses, or <https://gnu.org/licenses>. If you know enough about TeX to be reading this manual, then you (or -your institution) should consider joining the TeX Users Group (if you’re +your institution) should consider joining the TeX Users Group (if you're already a member, thanks!). TUG produces the periodical ‘TUGboat’, sponsors an annual meeting and publishes the proceedings, and arranges courses on TeX for all levels of users throughout the world. See @@ -116,7 +116,7 @@ File: kpathsea.info, Node: History, Up: Introduction This section is for those people who are curious about how the library came about. If you like to read historical accounts of software, we -urge you to seek out the GNU Autoconf manual and the “Errors of TeX†+urge you to seek out the GNU Autoconf manual and the "Errors of TeX" paper by Don Knuth, published in his book ‘Digital Typography’, among other places. @@ -126,7 +126,7 @@ Tim Morgan and I were jointly maintaining it for a time. (I should mention here that Tim had made Web2c into a real distribution long before I had ever used it or even heard of it, and Tom Rokicki did the original implementation. When I started, I was using ‘pxp’ and ‘pc’ on -VAX 11/750’s and the hot new Sun 2 machines.) +VAX 11/750's and the hot new Sun 2 machines.) It must have been later in 1990 and 1991 that I started working on ‘TeX for the Impatient’. Dvips, Xdvi, Web2c, and the GNU fontutils @@ -134,23 +134,23 @@ VAX 11/750’s and the hot new Sun 2 machines.) variables, and, more importantly, had different bugs in their path searching. This became extremely painful, as I was stressing everything to the limit working on the book. I also desperately wanted to -implement subdirectory searching, since I couldn’t stand putting -everything in one big directory, and also couldn’t stand having to +implement subdirectory searching, since I couldn't stand putting +everything in one big directory, and also couldn't stand having to explicitly specify ‘cm’, ‘pandora’, ... in a path. In the first incarnation, I just hacked separately on each -program—that was the original subdirectory searching code in both Xdvi +program--that was the original subdirectory searching code in both Xdvi and Dvips. That is, I tried to go with the flow in each program, rather -than changing the program’s calling sequences to conform to new +than changing the program's calling sequences to conform to new routines. Then, as bugs inevitably appeared, I found I was fixing the same thing three times (Web2c and fontutils were already sharing code, since -I maintained both of those—there was no Dvipsk or Xdvik or Dviljk at +I maintained both of those--there was no Dvipsk or Xdvik or Dviljk at this point). After a while, I finally started sharing source files. -They weren’t yet a library, though. I just kept things up to date with +They weren't yet a library, though. I just kept things up to date with shell scripts. (I was developing on a 386 running ISC 2.2 at the time, -and so didn’t have symbolic links. An awful experience.) +and so didn't have symbolic links. An awful experience.) The ChangeLogs for Xdvik and Dvipsk record initial releases of those distributions in May and June 1992. I think it was because I was tired @@ -159,14 +159,14 @@ because of the path searching. Autoconf was being developed by David MacKenzie and others, and I was adapting it to TeX and friends. I started to make a separate library that other programs could link -with on my birthday in April 1993, according to the ChangeLog. I don’t +with on my birthday in April 1993, according to the ChangeLog. I don't remember exactly why I finally took the time to make it a separate library; a conversation with david zuhn initiated it. Just seemed like it was time. Dviljk got started in March 1994 after I bought a Laserjet 4. (Kpathsea work got suspended while Norm Walsh and I, with Gustaf -Neumann’s help, implemented a way for TeX to get at all those neat +Neumann's help, implemented a way for TeX to get at all those neat builtin LJ4 fonts ... such a treat to have something to typeset in besides Palatino!) @@ -175,18 +175,18 @@ path-searching features in Kpathsea that I plan to, driven beyond my initial goals by Thomas Esser and others. I then started to integrate Web2c with Kpathsea. After the release of a stable Web2c, I hope to be able to stop development, and turn most of my attention back to making -fonts for GNU. (Always assuming Micros**t hasn’t completely obliterated -Unix by then, or that software patents haven’t stopped software +fonts for GNU. (Always assuming Micros**t hasn't completely obliterated +Unix by then, or that software patents haven't stopped software development by anybody smaller than a company with a million-dollar-a-year legal budget. Which is actually what I think is -likely to happen, but that’s another story...) +likely to happen, but that's another story...) [Olaf writes.] At the end of 1997, Unix is still alive and kicking, individuals still develop software, and Web2c development still continues. Karl had been looking for some time for someone to take up part of the burden, and I volunteered. - [Karl writes again.] Indeed, time goes on. As of 2006 or so, Olaf’s + [Karl writes again.] Indeed, time goes on. As of 2006 or so, Olaf's available time for Kpathsea was reduced, and I started taking overall care of it again, although I did not do any significant new development. In 2009, Taco Hoekwater implemented a major rearrangement to make the @@ -222,7 +222,7 @@ system from scratch, it is more reliable and less work to retrieve these files as part of a larger package. In any case, the Stanford ftp site is not the canonical source for -anything except what was created as part of Knuth’s original TeX, so do +anything except what was created as part of Knuth's original TeX, so do not rely on any other files available there being up-to-date. The best place to check for up-to-date files is CTAN (the Comprehensive TeX Archive Network), <https://ctan.org>. @@ -234,7 +234,7 @@ File: kpathsea.info, Node: Security, Next: TeX directory structure, Prev: uni ********** None of the programs in the TeX system require any special system -privileges, so there’s no first-level security concern of people gaining +privileges, so there's no first-level security concern of people gaining illegitimate root access. Thus, the general goal of our security measures is to make an @@ -262,7 +262,7 @@ have been taken to make the TeX system safe in this regard: • LuaTeX is a special case. Since Lua is a general-purpose programming language, it has all the usual functionality for writing files, executing shell commands, and plenty more. When - LuaTeX is used in its so-called “kpse†mode, as with LuaLaTeX, we + LuaTeX is used in its so-called "kpse" mode, as with LuaLaTeX, we have nevertheless done our best to also make it safe to execute by default, by disabling or restricting the various problematic Lua features. *Note Safe filenames::, for a bit more about this. (By @@ -274,7 +274,7 @@ have been taken to make the TeX system safe in this regard: unchecked) arithmetic overflow and other nefarious constructs (some are listed at <https://tug.org/texmfbug/nobug.html>. While disturbing, TeX has no special system access and so these crashes - don’t present a security risk. + don't present a security risk. • One more issue is the desire for a globally writable font cache directory; see the section below for this (*note Global font cache @@ -290,12 +290,12 @@ File: kpathsea.info, Node: Global font cache and security, Up: Security 3.1 Global font cache and security ================================== -It’s useful to make arbitrary fonts on user demand with ‘mktexpk’ and +It's useful to make arbitrary fonts on user demand with ‘mktexpk’ and friends. Where do these files get installed? By default, the ‘mktexpk’ distributed with Kpathsea assumes a world-writable ‘/var/tmp’ directory; this is a simple and convenient approach, but it does not suit all situations, because it means that a local cache of fonts is created on -every user’s system. +every user's system. To avoid this duplication, many people consider a shared, globally writable font tree desirable, in spite of the potential security @@ -310,7 +310,7 @@ directories under ‘texmf’ be append-only with an option in ‘mktex.cnf’. Another approach is to establish a group (or user) for TeX files, make the ‘texmf’ tree writable only to that group (or user), and make ‘mktexpk’ et al. setgid to that group (or setuid to that user). Then -users must invoke the scripts to install things. (If you’re worried +users must invoke the scripts to install things. (If you're worried about the inevitable security holes in scripts, then you could write a C wrapper to exec the script.) @@ -446,9 +446,9 @@ a path ‘.:/dir’, Kpathsea checks each element of the path in turn: first ‘./foo’, then ‘/dir/foo’, returning the first match (or possibly all matches). - The “colon†and “slash†mentioned here aren’t necessarily ‘:’ and ‘/’ + The "colon" and "slash" mentioned here aren't necessarily ‘:’ and ‘/’ on non-Unix systems. Kpathsea tries to adapt to other operating -systems’ conventions. +systems' conventions. To check a particular path element E, Kpathsea first sees if a prebuilt database (*note Filename database::) applies to E, i.e., if the @@ -464,7 +464,7 @@ file being searched for. (To help speed future lookups of files in the same directory, the directory in which a file is found is floated to the top of the directory list.) - The “file must exist†condition comes into play with VF files and + The "file must exist" condition comes into play with VF files and input files read by the TeX ‘\openin’ command. These files might very well not exist (consider ‘cmr10.vf’), and so it would be wrong to search the disk for them. Therefore, if you fail to update ‘ls-R’ when you @@ -484,7 +484,7 @@ This is not done on Windows. *Note Casefolding search::. Although the simplest and most common path element is a directory name, Kpathsea supports additional features in search paths: layered -default values, environment variable names, config file values, users’ +default values, environment variable names, config file values, users' home directories, and recursive subdirectory searching. Thus, we say that Kpathsea “expands†a path element, meaning transforming all the magic specifications into the basic directory name or names. This @@ -526,7 +526,7 @@ In the order in which Kpathsea looks for them: the program being run is named ‘latex’. 2. A program-specific configuration file, e.g., an ‘S /a:/b’ line in - Dvips’ ‘config.ps’ (*note (dvips)Config files::). + Dvips' ‘config.ps’ (*note (dvips)Config files::). 3. A line in a Kpathsea configuration file ‘texmf.cnf’, e.g., ‘TEXINPUTS=/c:/d’ (see below). @@ -541,7 +541,7 @@ expansion::). * Menu: -* Config files:: Kpathsea’s runtime config files (texmf.cnf). +* Config files:: Kpathsea's runtime config files (texmf.cnf). File: kpathsea.info, Node: Config files, Up: Path sources @@ -562,7 +562,7 @@ later files. Thus, if the search path is ‘.:$TEXMF’, values from ‘./texmf.cnf’ override those from ‘$TEXMF/texmf.cnf’. If Kpathsea cannot find any ‘texmf.cnf’ file, it reports a warning -including all the directories it checked. If you don’t want to see this +including all the directories it checked. If you don't want to see this warning, set the environment variable ‘KPATHSEA_WARNING’ to the single character ‘0’ (zero, not oh). @@ -573,7 +573,7 @@ mentions most features. The format of ‘texmf.cnf’ files follows: • Comments start with ‘%’ or ‘#’, either at the beginning of a line or preceded by whitespace, and continue to the end of the line. That is, similar to most shells, a comment character in the - “middle†of a value does not start a comment. Examples: + "middle" of a value does not start a comment. Examples: % this is a comment var = a%b % but the value of var will be "a%b" @@ -644,7 +644,7 @@ depends on the context in which it is used. The rules are inherent in the multiple levels of interpretation of the configuration (parsing, expansion, search, ...) and so cannot be concisely stated, unfortunately. There is no general escape mechanism; in particular, ‘\’ -is not an “escape character†in ‘texmf.cnf’ files. When it comes +is not an "escape character" in ‘texmf.cnf’ files. When it comes choosing directory names for installation, it is safest to avoid them all. @@ -659,7 +659,7 @@ File: kpathsea.info, Node: Path expansion, Next: Casefolding search, Prev: Pa Kpathsea recognizes certain special characters and constructions in search paths, similar to that in shells. As a general example: ‘~$USER/{foo,bar}//baz’ expands to all subdirectories under directories -‘foo’ and ‘bar’ in $USER’s home directory that contain a directory or +‘foo’ and ‘bar’ in $USER's home directory that contain a directory or file ‘baz’. These expansions are explained in the sections below. @@ -698,7 +698,7 @@ then the final value used for searching will be: /home/karl:.:$TEXMF//tex - Put another way, default expansion works on “formats†(search paths), + Put another way, default expansion works on "formats" (search paths), and not directly on environment variables. Example, showing the trailing ‘:’ ignored in the first case and expanded in the second: @@ -709,9 +709,9 @@ trailing ‘:’ ignored in the first case and expanded in the second: Since Kpathsea looks for multiple configuration files, it would be natural to expect that (for example) an extra colon in ‘./texmf.cnf’ -would expand to the path in ‘$TEXMF/texmf.cnf’. Or, with Dvips’ +would expand to the path in ‘$TEXMF/texmf.cnf’. Or, with Dvips' configuration files, that an extra colon in ‘config.$PRINTER’ would -expand to the path in ‘config.ps’. This doesn’t happen. It’s not clear +expand to the path in ‘config.ps’. This doesn't happen. It's not clear this would be desirable in all cases, and trying to devise a way to specify the path to which the extra colon should expand seemed truly baroque. @@ -721,7 +721,7 @@ in more than one place, Kpathsea changes only one extra ‘:’ and leaves any others in place (they will eventually be ignored). Kpathsea checks first for a leading ‘:’, then a trailing ‘:’, then a doubled ‘:’. - You can trace this by debugging “paths†(*note Debugging::). Default + You can trace this by debugging "paths" (*note Debugging::). Default expansion is implemented in the source file ‘kpathsea/kdefault.c’. @@ -741,7 +741,7 @@ the next ‘}’ (braces may not be nested around variable names). Otherwise, Kpathsea gives a warning and ignores the ‘$’ and its following character. - You must quote the $’s and braces as necessary for your shell. + You must quote the $'s and braces as necessary for your shell. _Shell_ variable values cannot be seen by Kpathsea, i.e., ones defined by ‘set’ in C shells and without ‘export’ in Bourne shells. @@ -769,7 +769,7 @@ A leading ‘~’ in a path element is replaced by the value of the environment variable ‘HOME’, or ‘.’ if ‘HOME’ is not set. On Windows, the environment variable ‘USERPROFILE’ is checked instead of ‘HOME’. - A leading ‘~USER’ in a path element is replaced by USER’s home + A leading ‘~USER’ in a path element is replaced by USER's home directory from the system ‘passwd’ database. For example, @@ -797,7 +797,7 @@ File: kpathsea.info, Node: Brace expansion, Next: KPSE_DOT expansion, Prev: T foo/{1,2}/baz expands to ‘foo/1/baz:foo/2/baz’. ‘:’ is the path separator on the -current system; e.g., on a Windows system, it’s ‘;’. +current system; e.g., on a Windows system, it's ‘;’. Braces can be nested; for example, ‘x{A,B{1,2}}y’ expands to ‘xAy:xB1y:xB2y’. @@ -837,7 +837,7 @@ Two or more consecutive slashes in a path element following a directory D is replaced by all subdirectories of D: first those subdirectories directly under D, then the subsubdirectories under those, and so on. At each level, the order in which the directories are searched is -unspecified. (It’s “directory orderâ€, and definitely not alphabetical.) +unspecified. (It's "directory order", and definitely not alphabetical.) If you specify any filename components after the ‘//’, only subdirectories which match those components are included. For example, @@ -846,7 +846,7 @@ and so on, but not ‘/a/b/c’ or ‘/a/1’. You can include multiple ‘//’ constructs in the path. - ‘//’ at the beginning of a path is ignored; you didn’t really want to + ‘//’ at the beginning of a path is ignored; you didn't really want to search every directory on the system, did you? I should mention one related implementation trick, which I took from @@ -857,8 +857,8 @@ it. the POSIX specification), a directory which contains no subdirectories will have exactly two links (namely, one for ‘.’ and one for ‘..’). That is to say, the ‘st_nlink’ field in the ‘stat’ structure will be -two. Thus, we don’t have to stat everything in the bottom-level (leaf) -directories—we can just check ‘st_nlink’, notice it’s two, and do no +two. Thus, we don't have to stat everything in the bottom-level (leaf) +directories--we can just check ‘st_nlink’, notice it's two, and do no more work. But if you have a directory that contains a single subdirectory and @@ -868,7 +868,7 @@ one of those 501 entries. Therein lies slowness. You can disable the trick by undefining ‘ST_NLINK_TRICK’ in ‘kpathsea/config.h’. (It is undefined by default except under Unix.) - Unfortunately, in some cases files in leaf directories are ‘stat’’d: + Unfortunately, in some cases files in leaf directories are ‘stat’'d: if the path specification is, say, ‘$TEXMF/fonts//pk//’, then files in a subdirectory ‘.../pk’, even if it is a leaf, are checked. The reason cannot be explained without reference to the implementation, so read @@ -912,7 +912,7 @@ Macs be case-insensitive some years ago, and this has exacerbated a problem of people creating documents that use, say, an image under the name ‘foo.jpg’, while the actual file is named ‘foo.JPG’ or ‘Foo.jpg’. It works on the Mac but if the document is transferred and run on a -standard case-sensitive Unix (file)system, the file can’t be found, due +standard case-sensitive Unix (file)system, the file can't be found, due only to differences in case. This same problematic scenario has always existed on Windows, but for @@ -924,7 +924,7 @@ Kpathsea behavior. Windows, where (for practical purposes) all file names are case-insensitive at the kernel level, and so the normal search will already have definitively matched or not. Therefore, search results in -unusual cases can be different on Windows and Unix—but this has always +unusual cases can be different on Windows and Unix--but this has always been true. @@ -944,7 +944,7 @@ mismatches are rare to begin with, and name collisions with respect only to case thus even more rare, the hope is that it will not cause difficulties in practice. - If it’s desirable in a given situation to have the exact same search + If it's desirable in a given situation to have the exact same search behavior as previously, that can be accomplished by setting the configuration variable ‘texmf_casefold_search’ to ‘0’ (*note Path sources::). @@ -953,7 +953,7 @@ sources::). Example #1: suppose the file ‘./foobar.tex’ exists. Now, searching for ‘./FooBar.TeX’ (or any other case variation) will succeed, returning -‘./foobar.tex’—the name as stored on disk. In previous releases, or if +‘./foobar.tex’--the name as stored on disk. In previous releases, or if ‘texmf_casefold_search’ is false, the search would fail. Example #2: suppose we are using a case-sensitive (file)system, and @@ -1005,7 +1005,7 @@ steps: tr ':' '\n' </tmp/texdirs >/tmp/texdirlist # colons to newlines find `cat /tmp/texdirlist` -iname somefile.tex -print </tmp/texdirlist - Sorry that it’s annoyingly lengthy, but implementing this inside + Sorry that it's annoyingly lengthy, but implementing this inside Kpathsea would be a lot of error-prone trouble for something that is only useful for debugging. If your ‘find’ does not support ‘-iname’, you can get GNU Find from <https://gnu.org/software/findutils>. @@ -1020,7 +1020,7 @@ you can get GNU Find from <https://gnu.org/software/findutils>. system call). • Kpathsea does not do any case-insensitive matching of the - directories along the path. It’s not going to find + directories along the path. It's not going to find ‘/Some/Random/file.tex’ when looking for ‘/some/random/file.tex’. The casefolding only happens with the elements of the leaf directory. @@ -1065,13 +1065,13 @@ several hierarchies in TeX Live). Kpathsea looks for ‘ls-R’ files along the ‘TEXMFDBS’ path. It is best for this to contain all and only those hierarchies from ‘$TEXMF’ -which are specified with ‘!!’—and also to specify them with ‘!!’ in +which are specified with ‘!!’--and also to specify them with ‘!!’ in ‘TEXMFDBS’. (See the end of this section for more on ‘!!’.) The recommended way to create and maintain ‘ls-R’ is to run the ‘mktexlsr’ script, which is installed in ‘$(bindir)’ (‘/usr/local/bin’ by default). That script goes to some trouble to follow symbolic links -as necessary, etc. It’s also invoked by the distributed ‘mktex...’ +as necessary, etc. It's also invoked by the distributed ‘mktex...’ scripts. At its simplest, though, you can build ‘ls-R’ with the command @@ -1079,7 +1079,7 @@ scripts. presuming your ‘ls’ produces the right output format (see the section below). GNU ‘ls’, for example, outputs in this format. Also presuming -your ‘ls’ hasn’t been aliased in a system file (e.g., ‘/etc/profile’) to +your ‘ls’ hasn't been aliased in a system file (e.g., ‘/etc/profile’) to something problematic, e.g., ‘ls --color=tty’. In that case, you will have to disable the alias before generating ‘ls-R’. For the precise definition of the file format, see *note Database format::. @@ -1136,8 +1136,8 @@ File: kpathsea.info, Node: Filename aliases, Next: Database format, Prev: ls- In some circumstances, you may wish to find a file under several names. For example, suppose a TeX document was created using a DOS system and -tries to read ‘longtabl.sty’. But now it’s being run on a Unix system, -and the file has its original name, ‘longtable.sty’. The file won’t be +tries to read ‘longtabl.sty’. But now it's being run on a Unix system, +and the file has its original name, ‘longtable.sty’. The file won't be found. You need to give the actual file ‘longtable.sty’ an alias ‘longtabl.sty’. @@ -1162,22 +1162,22 @@ File: kpathsea.info, Node: Database format, Prev: Filename aliases, Up: Filen 5.5.3 Database format --------------------- -The “database†read by Kpathsea is a line-oriented file of plain text. +The "database" read by Kpathsea is a line-oriented file of plain text. The format is that generated by GNU (and most other) ‘ls’ programs given the ‘-R’ option, as follows. • Blank lines are ignored. • If a line begins with ‘/’ or ‘./’ or ‘../’ and ends with a colon, - it’s the name of a directory. (‘../’ lines aren’t useful, however, + it's the name of a directory. (‘../’ lines aren't useful, however, and should not be generated.) • All other lines define entries in the most recently seen directory. - /’s in such lines will produce possibly-strange results. + /'s in such lines will produce possibly-strange results. • Files with no preceding directory line are ignored. - For example, here’s the first few lines of ‘ls-R’ (which totals about + For example, here's the first few lines of ‘ls-R’ (which totals about 30K bytes) on my system: bibtex @@ -1219,23 +1219,55 @@ in administrative scripts. It is used heavily in the distributed can start with either ‘-’ or ‘--’, and any unambiguous abbreviation is accepted. + Kpsewhich looks up each non-option argument on the command line as a +filename, and outputs (by default) the first file found to standard +output. If a file is not found, and more than FILENAME is given, a +blank line is output for that file. See examples below. + + The exit status is zero if all files were found, nonzero otherwise. + * Menu: +* kpsewhich examples:: Simple examples of running kpsewhich. * Path searching options:: Changing the mode, resolution, etc. * Specially-recognized files:: Default formats for texmf.cnf, etc. * Auxiliary tasks:: Path and variable expansion, etc. * Standard options:: ‘--help’ and ‘--version’. -File: kpathsea.info, Node: Path searching options, Next: Specially-recognized files, Up: Invoking kpsewhich +File: kpathsea.info, Node: kpsewhich examples, Next: Path searching options, Up: Invoking kpsewhich -5.6.1 Path searching options ----------------------------- +5.6.1 ‘kpsewhich’ examples +-------------------------- + +Some examples of running ‘kpsewhich’ with a typical TeX tree. A basic +successful search (exit status 0): + + $ kpsewhich plain.tex + /usr/local/texlive/2024/texmf-dist/tex/plain/base/plain.tex + + Searching for multiple files, one of which is not found (exit status +is 1 for this): + + $ kpsewhich plain.tex foobar plain.mf + /usr/local/texlive/2024/texmf-dist/tex/plain/base/plain.tex -Kpsewhich looks up each non-option argument on the command line as a -filename, and returns the first file found. + /usr/local/texlive/2024/texmf-dist/metafont/base/plain.mf - Various options alter the path searching behavior: + Using ‘--all’ to see all files by the same name (exit status 0): + + $ kpsewhich --all language.dat + /usr/local/texlive/2024/texmf-dist/tex/generic/config/language.dat + /usr/local/texlive/2024/texmf-dist/lambda/generic/config/language.dat + + +File: kpathsea.info, Node: Path searching options, Next: Specially-recognized files, Prev: kpsewhich examples, Up: Invoking kpsewhich + +5.6.2 Path searching options +---------------------------- + +Various options alter the path searching behavior. Options apply to all +lookups. ‘--all’ Report all matches found, one per line. By default, if there is @@ -1243,6 +1275,11 @@ filename, and returns the first file found. at random). Exception: with the glyph formats (‘pk’, ‘gf’), this option has no effect and only the first match is returned. + With both ‘-all’ and multiple input files, there's no easy way to + discern which matches belong to which files; you have to check the + basename of the output. This could be improved, if there is any + demand. + ‘--casefold-search’ ‘--no-casefold-search’ Explicitly enable or disable the fallback to a case-insensitive @@ -1290,7 +1327,7 @@ filename, and returns the first file found. to find them. For example, ‘cont-en.fmt’ typically exists for both ‘pdftex’ and ‘xetex’. With the default path settings, you can use ‘--engine=/’ to look for any dump file, regardless of engine; if a - dump file exists for more than one engine, it’s indeterminate which + dump file exists for more than one engine, it's indeterminate which one is returned. (The ‘/’ ends up specifying a normal recursive search along the path where the dumps are stored, namely ‘$TEXMF/web2c{/$engine,}’.) @@ -1306,7 +1343,7 @@ filename, and returns the first file found. configuration files you can use ‘--format="dvips config"’. (The quotes are for the sake of the shell.) - Here’s the current list of recognized names and the associated + Here's the current list of recognized names and the associated suffixes. *Note Supported file formats::, for more information on each of these. @@ -1450,7 +1487,7 @@ filename, and returns the first file found. /another/place/foo.sty Because of the above rules, the presence of a leading ‘/’ is - important, since it “anchors†the match to a full component name: + important, since it "anchors" the match to a full component name: kpsewhich --subdir=/lace foo.sty ⇒ @@ -1469,20 +1506,20 @@ filename, and returns the first file found. one you are interested in. We only match at the end because a site might happen to install TeX - in ‘/some/coincidental/pkg1/path/’, and we wouldn’t want to match + in ‘/some/coincidental/pkg1/path/’, and we wouldn't want to match ‘texmf-dist/scripts/pkg2/’ that when searching for ‘/pkg1’. File: kpathsea.info, Node: Specially-recognized files, Next: Auxiliary tasks, Prev: Path searching options, Up: Invoking kpsewhich -5.6.2 Specially-recognized files for ‘kpsewhich’ +5.6.3 Specially-recognized files for ‘kpsewhich’ ------------------------------------------------ ‘kpsewhich’ recognizes a few special filenames on the command line and -defaults to using the ‘known’ file formats for them, merely to save the +defaults to using the 'known' file formats for them, merely to save the time and trouble of specifying the format. This is only a feature of ‘kpsewhich’; when using the Kpathsea library itself, none of these -special filenames are recognized, and it’s still up to the caller to +special filenames are recognized, and it's still up to the caller to specify the desired format. Here is the list of special filenames to ‘kpsewhich’, along with @@ -1518,14 +1555,14 @@ their corresponding format: A user-specified format will override the above defaults. - Another reference for information about TeX’s many special files is + Another reference for information about TeX's many special files is ‘tcfmgr.map’, found in ‘texmf/texconfig/tcfmgr.map’, which records various information about the above configuration files (among others). File: kpathsea.info, Node: Auxiliary tasks, Next: Standard options, Prev: Specially-recognized files, Up: Invoking kpsewhich -5.6.3 Auxiliary tasks +5.6.4 Auxiliary tasks --------------------- Kpsewhich provides some features in addition to path lookup as such: @@ -1596,7 +1633,7 @@ Kpsewhich provides some features in addition to path lookup as such: Example: ‘FOO='.;~' kpsewhich --var-brace-value=FOO’ outputs (on a Unix-ish system) ‘.:/home/karl’, supposing the latter is the - current user’s home directory. Note that the ‘;’ in the source + current user's home directory. Note that the ‘;’ in the source value, as commonly used in ‘texmf.cnf’, has changed to a ‘:’, as the normal path separator on the current system. On a Windows-ish system, the ‘;’ would remain. @@ -1619,7 +1656,7 @@ Kpsewhich provides some features in addition to path lookup as such: File: kpathsea.info, Node: Standard options, Prev: Auxiliary tasks, Up: Invoking kpsewhich -5.6.4 Standard options +5.6.5 Standard options ---------------------- Kpsewhich accepts the standard GNU options: @@ -1650,7 +1687,7 @@ particularly). Kpathsea provides a standard way to search for files of any of the supported file types; glyph fonts are a bit different than all the rest. -Searches are based solely on names of files, not their contents—if a GF +Searches are based solely on names of files, not their contents--if a GF file is (mis)named ‘cmr10.600pk’, it will be found as a PK file. * Menu: @@ -1782,7 +1819,7 @@ Auxiliary tasks::). suffix ‘.mft’. ‘misc fonts’ - (font-related files that don’t fit the other categories) + (font-related files that don't fit the other categories) ‘MISCFONTS’ ‘mlbib’ @@ -1907,7 +1944,7 @@ the following table. (binary files used by ‘foo’) ‘FOOINPUTS’. If an environment variable by these names are set, the corresponding -‘texmf.cnf’ definition won’t be looked at (unless, as usual, the +‘texmf.cnf’ definition won't be looked at (unless, as usual, the environment variable value has an extra ‘:’). *Note Default expansion::. @@ -1946,8 +1983,8 @@ searches are the exception, as described in the next section). 3. If the file format defines a program to invoke to create missing files, run it (*note mktex scripts::). - The order in which we search for “suffixed†name (item 1) or the -“as-is†name (item 2) is controlled by the ‘try_std_extension_first’ + The order in which we search for "suffixed" name (item 1) or the +"as-is" name (item 2) is controlled by the ‘try_std_extension_first’ configuration value. The default set in ‘texmf.cnf’ is true, since common suffixes are already recognized: ‘babel.sty’ will only look for ‘babel.sty’, not ‘babel.sty.tex’, regardless of this setting. @@ -2014,7 +2051,7 @@ file first, then a GF file. filesystems (such as DOS) that permit only three-character extensions. If that fails, Kpathsea looks for a font with a close-enough DPI. -“Close enough†is defined by the macro ‘KPSE_BITMAP_TOLERANCE’ in +"Close enough" is defined by the macro ‘KPSE_BITMAP_TOLERANCE’ in ‘kpathsea/tex-glyph.h’ to be ‘DPI / 500 + 1’. This is slightly more than the 0.2% minimum allowed by the DVI standard (<CTAN:/dviware/driv-standard/level-0>). @@ -2039,7 +2076,7 @@ found are read; earlier definitions override later ones. instead of ‘ptmr’, you can (you get ‘ptmr8r’). 2. A few fonts have historically had multiple names: specifically, - LaTeX’s “circle font†has variously been known as ‘circle10’, + LaTeX's "circle font" has variously been known as ‘circle10’, ‘lcircle10’, and ‘lcirc10’. Aliases can make all the names equivalent, so that it no longer matters what the name of the installed file is; TeX documents will find their favorite name. @@ -2084,7 +2121,7 @@ fonts equivalent. Fontmaps are implemented in the file ‘kpathsea/fontmap.c’. The Fontname distribution has much more information on font naming (*note -(fontname)::). +(fontname)Top::). File: kpathsea.info, Node: Fallback font, Prev: Fontmap, Up: Glyph lookup @@ -2130,7 +2167,7 @@ possibilities: DVI or VF file tries to typeset. ‘none’ - Don’t suppress any warnings. + Don't suppress any warnings. ‘readable’ Suppress warnings about attempts to access a file whose permissions @@ -2154,7 +2191,7 @@ configured by default to invoke an external program to create it dynamically (*note mktex configuration::). These are collectively known as “‘mktex’ scriptsâ€, since most of them are named ‘mktex...’. - For example, this is useful for fonts (bitmaps, TFM’s, and + For example, this is useful for fonts (bitmaps, TFM's, and arbitrarily-sizable Metafont sources such as the Sauter and EC fonts), since any given document can use fonts never before referenced. Building all fonts in advance is therefore impractical, if not @@ -2210,7 +2247,7 @@ for instance, which defines the default mode, resolution, some special directory names, etc. If you prefer not to change the distributed scripts, you can simply create ‘mktex.cnf’ with the appropriate definitions (you do not need to create it if you have nothing to put in -it). ‘mktex.cnf’ has no special syntax; it’s an arbitrary Bourne shell +it). ‘mktex.cnf’ has no special syntax; it's an arbitrary Bourne shell script. The distribution contains a sample ‘mktex.cnf’ for you to copy and modify as you please (it is not installed anywhere). @@ -2226,10 +2263,10 @@ and modify as you please (it is not installed anywhere). If none of the options below are enabled, ‘mktexpk’, ‘mktextfm’, and ‘mktexmf’ follow the following procedure to decide where fonts should be -installed. Find the tree where the font’s sources are, and test the +installed. Find the tree where the font's sources are, and test the permissions of the ‘fonts’ directory of that tree to determine whether it is writable. If it is, put the files in the tree in appropriate -locations. If it isn’t writable, see whether the tree is a system tree +locations. If it isn't writable, see whether the tree is a system tree (named in ‘SYSTEXMF’). If so, the ‘VARTEXFONTS’ tree is used. In all other cases the working directory is used. @@ -2239,7 +2276,7 @@ other cases the working directory is used. Tell ‘mktexdir’ to create directories append-only, i.e., set their sticky bit (*note (coreutils)Mode Structure::). This feature is silently ignored on non-Unix platforms (e.g. Windows/NT and - MS-DOS) which don’t support similar functionality. This feature is + MS-DOS) which don't support similar functionality. This feature is enabled by default. ‘dosnames’ @@ -2248,18 +2285,18 @@ other cases the working directory is used. clash with other TeX-related filenames; ‘mktex’ scripts do nothing about filenames which exceed the 8+3 MS-DOS limits but remain unique when truncated (by the OS) to these limits, and nether do - the scripts care about possible clashes with files which aren’t + the scripts care about possible clashes with files which aren't related with TeX. For example, ‘cmr10.600pk’ would clash with ‘cmr10.600gf’ and is therefore changed when ‘dosnames’ is in - effect, but ‘mf.pool’ and ‘mp.base’ don’t clash with any + effect, but ‘mf.pool’ and ‘mp.base’ don't clash with any TeX-related files and are therefore unchanged. This feature is turned on by default on MS-DOS. If you do not wish ‘dosnames’ to be set on an MS-DOS platform, you need to set the - ‘MT_FEATURES’ environment variable to a value that doesn’t include + ‘MT_FEATURES’ environment variable to a value that doesn't include ‘dosnames’. You can also change the default setting by editing ‘mktex.opt’, but only if you use the ‘mktex’ shell scripts; the - emulation programs don’t consult ‘mktex.opt’. + emulation programs don't consult ‘mktex.opt’. ‘fontmaps’ Instead of deriving the location of a font in the destination tree @@ -2347,7 +2384,7 @@ program; for example, ‘DVIPSMAKEPK’ for Dvipsk. problem, you can then execute the log file to create the missing files. If the environment variable ‘TEXMF_OUTPUT_DIRECTORY’ is set, -‘missfont.log’ is first tried to be written there; if it’s not set, the +‘missfont.log’ is first tried to be written there; if it's not set, the current directory is tried first. If that first write fails and the environment variable or configuration file value ‘TEXMFOUTPUT’ is set, we try to write ‘missfont.log’ there. Otherwise nothing is written. @@ -2372,10 +2409,10 @@ also be passed: ‘--mfmode NAME’ Sets the Metafont mode to NAME. ‘--bdpi NUM’ - Sets the “base dpi†for the font. This must match the mode being + Sets the "base dpi" for the font. This must match the mode being used. ‘--mag STRING’ - A “magstep†string suitable for the Metafont ‘mag’ variable. This + A "magstep" string suitable for the Metafont ‘mag’ variable. This must match the combination of BDPI and DPI being used. ‘--destdir STRING’ A directory name. If the directory is absolute, it is used as-is. @@ -2446,7 +2483,7 @@ file types: ‘tex-file.[ch]’ must be modified to do this. For example, Kpathsea has support for looking up Dvips config files, even though no program other than Dvips is likely to ever want to do so. I felt this was acceptable, since along with new file types should also come new -defaults in ‘texmf.cnf’ (and its descendant ‘paths.h’), since it’s +defaults in ‘texmf.cnf’ (and its descendant ‘paths.h’), since it's simplest for users if they can modify one configuration file for all kinds of paths. @@ -2494,12 +2531,12 @@ this: anywhere. You can use ‘kpsewhich --expand-var=\$SELFAUTOLOC’, etc., to see the values. - 3. Set debugging options. *Note Debugging::. If your program doesn’t + 3. Set debugging options. *Note Debugging::. If your program doesn't have a debugging option already, you can define one and set ‘kpse->debug’ to the number that the user supplies (as in Dviljk and Web2c), or you can just omit this altogether (users can always set the ‘KPATHSEA_DEBUG’ environment variable). If you do have - runtime debugging already, you need to merge Kpathsea’s options + runtime debugging already, you need to merge Kpathsea's options with yours (as in Dvipsk and Xdvik). 4. If your program has its own configuration files that can define @@ -2508,7 +2545,7 @@ this: (This array is indexed by file type; see ‘tex-file.h’.) See ‘resident.c’ in Dvipsk for an example. - 5. Call ‘kpathsea_init_prog’ (see ‘proginit.c’). It’s useful for the + 5. Call ‘kpathsea_init_prog’ (see ‘proginit.c’). It's useful for the DVI drivers, at least, but for other programs it may be simpler to extract the parts of it that actually apply. This does not initialize any paths, it just looks for (and sets) certain @@ -2521,7 +2558,7 @@ this: 6. The routine to actually find a file of type FORMAT is ‘kpathsea_find_file’. You can call ‘kpathsea_find_file’ after doing only the first and second of the initialization steps - above—Kpathsea automatically reads the ‘texmf.cnf’ generic config + above--Kpathsea automatically reads the ‘texmf.cnf’ generic config files, looks for environment variables, and does expansions at the first lookup. @@ -2540,7 +2577,7 @@ this: *’. It always assumes the file must exist, and thus will search the disk if necessary (unless the search path specified ‘!!’, etc.). In other words, if you are looking up a VF or some other - file that need not exist, don’t use this. + file that need not exist, don't use this. 10. To close the Kpathsea library instance you are using, call ‘kpathsea_finish’. This function closes any open log files and @@ -2571,12 +2608,12 @@ system. to potentially dangerous files is a configuration variable ‘openout_any’. It specifies one of three levels: - • When set to ‘a’ (for “anyâ€), no restrictions are imposed. + • When set to ‘a’ (for "any"), no restrictions are imposed. - • When is set to ‘r’ (for “restrictedâ€), filenames beginning with ‘.’ + • When is set to ‘r’ (for "restricted"), filenames beginning with ‘.’ are disallowed. - • When set to ‘p’ (for “paranoidâ€), additional restrictions are + • When set to ‘p’ (for "paranoid"), additional restrictions are imposed. 1. First, an absolute filename must refer to a file in (or in a @@ -2584,7 +2621,7 @@ to potentially dangerous files is a configuration variable environment variable or the ‘TEXMFOUTPUT’ environment variable or configuration file setting. - 2. LuaTeX uses a so-called “extended†mode, in which the values + 2. LuaTeX uses a so-called "extended" mode, in which the values of ‘TEXMFVAR’ and ‘TEXMFSYSVAR’ are also checked for absolute filenames. This is done because, in practice, fundamental parts of the LuaLaTeX system (notably ‘luaotfload’) need a @@ -2603,7 +2640,7 @@ another. *Note (web2c)Shell escapes::. if the final result is an acceptable directory; they are simply forbidden. That is, Kpathsea merely considers the value as a string, not looking on the filesystem at all. (However, if another program -wants to do such resolutions and check the result, that’s ok.) +wants to do such resolutions and check the result, that's ok.) For backwards compatibility, ‘y’ and ‘1’ are synonyms of ‘a’, while ‘n’ and ‘0’ are synonyms for ‘r’. @@ -2613,7 +2650,7 @@ argument, returns ‘true’ if that filename is acceptable to be opened for output or ‘false’ otherwise. The Kpsewhich program has an option (‘--safe-out-name’) providing a command line interface for the check. - For LuaTeX’s extended mode, the function is + For LuaTeX's extended mode, the function is ‘kpathsea_out_name_ok_extended’, and the Kpsewhich option is ‘--safe-extended-out-name’. @@ -2638,10 +2675,10 @@ Thus: Furthermore, there are ‘kpse_...’ versions of all the above functions (as usual), with the default library instance implicitly passed as the first argument. LuaTeX provides both ‘kpse.*’ and ‘kpathsea.*’ -bindings, so it’s good to always have both. +bindings, so it's good to always have both. Sorry for the combinatorial explosion, but we hope no further options -will ever be needed. If so, we’ll likely provide a more generic +will ever be needed. If so, we'll likely provide a more generic interface as well as the above. @@ -2687,7 +2724,7 @@ will be the value found or ‘NULL’. This function is declared in The routine to do full variable and tilde expansion of an arbitrary string in the context of a search path (as opposed to simply retrieving a value) is ‘kpathsea_var_expand’, also declared in -‘kpathsea/variable.h’. However, it’s generally only necessary to set +‘kpathsea/variable.h’. However, it's generally only necessary to set the search path structure components as explained in the previous section instead of using this directly. Because of its usage with any input string, undefined ‘$FOO’ constructs in the argument to @@ -2728,7 +2765,7 @@ File: kpathsea.info, Node: Bug checklist, Next: Mailing lists, Up: Reporting 8.1 Bug checklist ================= -Before reporting a bug, please check below to be sure it isn’t already +Before reporting a bug, please check below to be sure it isn't already known (*note Common problems::). Bug reports should be sent via electronic mail to <tex-k@tug.org>. @@ -2749,7 +2786,7 @@ investigation, your report should include the following: • Any options you gave to ‘configure’. This is recorded in the ‘config.status’ files. - If you are reporting a bug in ‘configure’ itself, it’s probably + If you are reporting a bug in ‘configure’ itself, it's probably system-dependent, and it will be unlikely the maintainers can do anything useful if you merely report that thus-and-such is broken. Therefore, you need to do some additional work: for some bugs, you @@ -2765,13 +2802,13 @@ investigation, your report should include the following: You can get this by setting the environment variable ‘KPATHSEA_DEBUG’ to ‘-1’ before running the program. Please look at the log yourself to make sure the behavior is really a bug - before reporting it; perhaps “old†environment variable settings + before reporting it; perhaps "old" environment variable settings are causing files not to be found, for example. • The contents of any input files necessary to reproduce the bug. For bugs in DVI-reading programs, for example, this generally means - a DVI file (and any EPS or other files it uses)—TeX source files - are helpful, but the DVI file is required, because that’s the + a DVI file (and any EPS or other files it uses)--TeX source files + are helpful, but the DVI file is required, because that's the actual program input. • If you are sending a patch (do so if you can!), please do so in the @@ -2820,13 +2857,13 @@ File: kpathsea.info, Node: Debugging, Next: Logging, Prev: Mailing lists, Up Kpathsea provides a number of runtime debugging options, detailed below by their names and corresponding numeric values. When the files you -expect aren’t being found, the thing to do is enable these options and +expect aren't being found, the thing to do is enable these options and examine the output. You can set these with some runtime argument (e.g., ‘-d’) to the program; in that case, you should use the numeric values described in -the program’s documentation (which, for Dvipsk and Xdvik, are different -than those below). It’s best to give the ‘-d’ (or whatever) option +the program's documentation (which, for Dvipsk and Xdvik, are different +than those below). It's best to give the ‘-d’ (or whatever) option first, for maximal output. Dvipsk and Xdvik have additional program-specific debugging options as well. @@ -2847,7 +2884,7 @@ it easily. For example, in Bourne-compatible shells: (*note Invoking kpsewhich::), instead of the original program. In any case, you cannot use the names below; you must always use -somebody’s numbers. (Sorry.) To set more than one option, just sum the +somebody's numbers. (Sorry.) To set more than one option, just sum the corresponding numbers. ‘KPSE_DEBUG_STAT (1)’ @@ -2867,7 +2904,7 @@ corresponding numbers. ‘KPSE_DEBUG_FOPEN (4)’ Report file openings and closings. Especially useful when your - system’s file table is full, for seeing which files have been + system's file table is full, for seeing which files have been opened but never closed. In case you want to set breakpoints in a debugger: this works by redefining ‘fopen’ (‘fclose’) to be ‘kpse_fopen_trace’ (‘kpse_fclose_trace’). @@ -2875,15 +2912,15 @@ corresponding numbers. ‘KPSE_DEBUG_PATHS (8)’ Report general path information for each file type Kpathsea is asked to search. This is useful when you are trying to track down - how a particular path got defined—from ‘texmf.cnf’, ‘config.ps’, an - environment variable, the compile-time default, etc. This is the - contents of the ‘kpse_format_info_type’ structure defined in + how a particular path got defined--from ‘texmf.cnf’, ‘config.ps’, + an environment variable, the compile-time default, etc. This is + the contents of the ‘kpse_format_info_type’ structure defined in ‘tex-file.h’. ‘KPSE_DEBUG_EXPAND (16)’ Report the directory list corresponding to each path element Kpathsea searches. This is only relevant when Kpathsea searches - the disk, since ‘ls-R’ searches don’t look through directory lists + the disk, since ‘ls-R’ searches don't look through directory lists in this way. ‘KPSE_DEBUG_SEARCH (32)’ @@ -2935,12 +2972,12 @@ your filesystem is full, or in discovering usage patterns at your site. To do this, define the environment or config file variable ‘TEXMFLOG’. The value is the name of the file to append the information -to. The file is created if it doesn’t exist, and appended to if it +to. The file is created if it doesn't exist, and appended to if it does. Each successful search turns into one line in the log file: two words separated by a space. The first word is the time of the search, as the -integer number of seconds since “the epochâ€, i.e., UTC midnight 1 +integer number of seconds since "the epoch", i.e., UTC midnight 1 January 1970 (more precisely, the result of the ‘time’ system call). The second word is the filename. @@ -2977,7 +3014,7 @@ execution, ... * Menu: -* Unable to find files:: If your program can’t find fonts (or whatever). +* Unable to find files:: If your program can't find fonts (or whatever). * Slow path searching:: If it takes forever to find anything. * Unable to generate fonts:: If mktexpk fails. * TeX or Metafont failing:: Likely compiler bugs. @@ -2992,12 +3029,12 @@ If a program complains it cannot find fonts (or other input files), any of several things might be wrong. In any case, you may find the debugging options helpful. *Note Debugging::. - • Perhaps you simply haven’t installed all the necessary files; the + • Perhaps you simply haven't installed all the necessary files; the basic fonts and input files are distributed separately from the programs. *Note unixtex.ftp::. • You have (perhaps unknowingly) told Kpathsea to use search paths - that don’t reflect where the files actually are. One common cause + that don't reflect where the files actually are. One common cause is having environment variables set from a previous installation, thus overriding what you carefully set in ‘texmf.cnf’ (*note Supported file formats::). System ‘/etc/profile’ or other files @@ -3006,7 +3043,7 @@ debugging options helpful. *Note Debugging::. • Your files reside in a directory that is only pointed to via a symbolic link, in a leaf directory and is not listed in ‘ls-R’. - Unfortunately, Kpathsea’s subdirectory searching has an + Unfortunately, Kpathsea's subdirectory searching has an irremediable deficiency: If a directory D being searched for subdirectories contains plain files and symbolic links to other directories, but no true subdirectories, D will be considered a @@ -3020,12 +3057,12 @@ debugging options helpful. *Note Debugging::. The directory immediately followed by the ‘//’ in the path specification, however, is always searched for subdirectories, even if it is a leaf. Presumably you would not have asked for the - directory to be searched for subdirectories if you didn’t want it + directory to be searched for subdirectories if you didn't want it to be. - • If the fonts (or whatever) don’t already exist, ‘mktexpk’ (or + • If the fonts (or whatever) don't already exist, ‘mktexpk’ (or ‘mktexmf’ or ‘mktextfm’) will try to create them. If these rather - complicated shell scripts fail, you’ll eventually get an error + complicated shell scripts fail, you'll eventually get an error message saying something like ‘Can't find font FONTNAME’. The best solution is to fix (or at least report) the bug in ‘mktexpk’; the workaround is to generate the necessary fonts by hand with @@ -3047,7 +3084,7 @@ culprits: takes a noticeable time. The solution is to create and maintain a separate ‘ls-R’ file that lists all the files in your main TeX hierarchy. *Note Filename database::. Kpathsea always uses ‘ls-R’ - if it’s present; there’s no need to recompile or reconfigure any of + if it's present; there's no need to recompile or reconfigure any of the programs. • Your recursively-searched directories (e.g., @@ -3056,7 +3093,7 @@ culprits: optimization (*note Subdirectory expansion::). It is best to have only directories (and perhaps a ‘README’) in the - upper levels of the directory structure, and it’s very important to + upper levels of the directory structure, and it's very important to have _only_ files, and no subdirectories, in the leaf directories where the dozens of TFM, PK, or whatever files reside. @@ -3094,7 +3131,7 @@ configuration file: M lqmed If Metafont runs, but generates fonts at the wrong resolution or for -the wrong device, most likely ‘mktexpk’’s built-in guess for the mode is +the wrong device, most likely ‘mktexpk’'s built-in guess for the mode is wrong, and you should override it as above. See <https://ctan.org/pkg/modes> for a list of resolutions and mode @@ -3103,7 +3140,7 @@ names for most devices (additional submissions are welcome). If Metafont runs but generates fonts at a resolution of 2602dpi (and prints out the name of each character as well as just a character number, and maybe tries to display the characters), then your Metafont -base file probably hasn’t been made properly. (It’s using the default +base file probably hasn't been made properly. (It's using the default ‘proof’ mode, instead of an actual device mode.) To make a proper ‘plain.base’, assuming the local mode definitions are contained in a file ‘modes.mf’, run the following command (assuming Unix): @@ -3130,9 +3167,9 @@ running a normal input file, the problem is usually a compiler bug passed, problems may lurk. Optimization occasionally causes trouble in programs other than TeX and Metafont themselves, too. - For a workaround, if you enabled any optimization flags, it’s best to + For a workaround, if you enabled any optimization flags, it's best to omit optimization entirely. In any case, the way to find the facts is -to run the program under the debugger and see where it’s failing. +to run the program under the debugger and see where it's failing. Also, if you have trouble with a system C compiler, I advise trying the GNU C compiler. And vice versa, unfortunately; but in that case I @@ -3142,7 +3179,7 @@ also recommend reporting a bug to the GCC mailing list; see *note To report compiler bugs effectively requires perseverance and perspicacity: you must find the miscompiled line, and that usually involves delving backwards in time from the point of error, checking -through TeX’s (or whatever program’s) data structures. Good luck. +through TeX's (or whatever program's) data structures. Good luck. File: kpathsea.info, Node: Index, Prev: Reporting bugs, Up: Top @@ -3153,54 +3190,49 @@ Index �[index�] * Menu: -* !! and casefolding: Casefolding examples. - (line 57) -* !! in path specifications: ls-R. (line 57) -* !! in TEXMFDBS: ls-R. (line 11) -* $ expansion: Variable expansion. (line 6) * --all: Path searching options. - (line 12) + (line 10) * --casefold-search: Path searching options. - (line 19) + (line 22) * --cnf-line: Path searching options. - (line 28) + (line 31) * --cnf-line, source for path: Path sources. (line 9) * --color=tty: ls-R. (line 25) * --debug=NUM: Auxiliary tasks. (line 9) * --dpi=NUM: Path searching options. - (line 49) + (line 52) * --engine=NAME: Path searching options. - (line 53) + (line 56) * --expand-braces=STRING: Auxiliary tasks. (line 12) * --expand-path=STRING: Auxiliary tasks. (line 16) * --expand-var=STRING: Auxiliary tasks. (line 34) * --format=NAME: Path searching options. - (line 70) + (line 73) * --help: Standard options. (line 8) * --help-formats: Auxiliary tasks. (line 42) * --interactive: Path searching options. - (line 152) + (line 155) * --mktex=FILETYPE: Path searching options. - (line 157) + (line 160) * --mode=STRING: Path searching options. - (line 163) + (line 166) * --must-exist: Path searching options. - (line 168) + (line 171) * --no-casefold-search: Path searching options. - (line 19) + (line 22) * --no-mktex=FILETYPE: Path searching options. - (line 157) + (line 160) * --path=STRING: Path searching options. - (line 173) + (line 176) * --progname=NAME: Path searching options. - (line 181) + (line 184) * --safe-extended-in-name=NAME: Auxiliary tasks. (line 48) * --safe-extended-out-name=NAME: Auxiliary tasks. (line 48) * --safe-in-name=NAME: Auxiliary tasks. (line 54) * --safe-out-name=NAME: Auxiliary tasks. (line 54) * --show-path=NAME: Auxiliary tasks. (line 60) * --subdir=STRING: Path searching options. - (line 186) + (line 189) * --var-brace-value=VARIABLE: Auxiliary tasks. (line 66) * --var-value=VARIABLE: Auxiliary tasks. (line 80) * --version: Standard options. (line 11) @@ -3214,10 +3246,17 @@ Index * -1 debugging value: Debugging. (line 23) * -A option to ls: ls-R. (line 39) * -D NUM: Path searching options. - (line 49) + (line 52) * -iname, find predicate: Casefolding examples. (line 78) * -L option to ls: ls-R. (line 44) +* ; translated to : in texmf.cnf: Config files. (line 66) +* : may not be :: Searching overview. (line 13) +* :: expansion: Default expansion. (line 6) +* !! and casefolding: Casefolding examples. + (line 57) +* !! in path specifications: ls-R. (line 57) +* !! in TEXMFDBS: ls-R. (line 11) * . directories, ignored: ls-R. (line 39) * . files: ls-R. (line 39) * .2602gf: Unable to generate fonts. @@ -3333,6 +3372,7 @@ Index (line 53) * .web <1>: Supported file formats. (line 227) +* { expansion: Brace expansion. (line 6) * / may not be /: Searching overview. (line 13) * /, trailing in home directory: Tilde expansion. (line 19) * //: Subdirectory expansion. @@ -3341,20 +3381,17 @@ Index (line 14) * /etc/profile and aliases: ls-R. (line 25) * /var/tmp/texfonts: mktex configuration. (line 113) -* 2602gf: Unable to generate fonts. - (line 36) -* 8.3 filenames, using: mktex configuration. (line 68) -* : may not be :: Searching overview. (line 13) -* :: expansion: Default expansion. (line 6) -* ; translated to : in texmf.cnf: Config files. (line 66) -* = omitted in texmf.cnf and misparsing: Config files. (line 86) * \, line continuation in texmf.cnf: Config files. (line 37) * \openin: Searching overview. (line 31) * \openout: Security. (line 16) * \special, suppressing warnings about: Suppressing warnings. (line 31) -* { expansion: Brace expansion. (line 6) +* = omitted in texmf.cnf and misparsing: Config files. (line 86) * ~ expansion: Tilde expansion. (line 6) +* $ expansion: Variable expansion. (line 6) +* 2602gf: Unable to generate fonts. + (line 36) +* 8.3 filenames, using: mktex configuration. (line 68) * absolute filenames: Searching overview. (line 58) * access system call: Casefolding examples. (line 86) @@ -3366,7 +3403,7 @@ Index * all: Suppressing warnings. (line 13) * all matches, finding: Path searching options. - (line 12) + (line 10) * alphabetical order, not: Subdirectory expansion. (line 6) * announcement mailing list: Mailing lists. (line 6) @@ -3514,7 +3551,7 @@ Index * ENCFONTS: Supported file formats. (line 61) * engine name: Path searching options. - (line 53) + (line 56) * environment variable, source for path: Path sources. (line 12) * environment variables for TeX: Supported file formats. (line 6) @@ -3525,6 +3562,7 @@ Index * error message macros: Calling sequence. (line 22) * examples, of casefolding searches: Casefolding examples. (line 6) +* examples, of running kpsewhich: kpsewhich examples. (line 6) * excessive startup time: Slow path searching. (line 6) * expand.c: Brace expansion. (line 26) * expanding symlinks: Calling sequence. (line 31) @@ -3625,7 +3663,7 @@ Index (line 84) * input lines, reading: Calling sequence. (line 91) * interactive query: Path searching options. - (line 152) + (line 155) * interface, not frozen: Introduction. (line 29) * introduction: Introduction. (line 6) * kdebug:: Debugging. (line 105) @@ -3633,8 +3671,6 @@ Index * Knuth, Donald E.: History. (line 6) * Knuth, Donald E., archive of programs by: unixtex.ftp. (line 20) * Kpathsea config file, source for path: Path sources. (line 20) -* kpathsea.h: Programming overview. - (line 26) * kpathsea_cnf_get: Programming with config files. (line 27) * KPATHSEA_DEBUG: Calling sequence. (line 28) @@ -3644,12 +3680,12 @@ Index * kpathsea_find_glyph: Glyph lookup. (line 26) * kpathsea_find_glyph <1>: Calling sequence. (line 70) * kpathsea_finish: Calling sequence. (line 87) -* kpathsea_init_prog: Fallback font. (line 15) -* kpathsea_init_prog <1>: Calling sequence. (line 53) * kpathsea_in_name_ok: Safe filenames. (line 59) * kpathsea_in_name_ok_extended: Safe filenames. (line 59) * kpathsea_in_name_ok_silent: Safe filenames. (line 72) * kpathsea_in_name_ok_silent_extended: Safe filenames. (line 72) +* kpathsea_init_prog: Fallback font. (line 15) +* kpathsea_init_prog <1>: Calling sequence. (line 53) * kpathsea_new: Calling sequence. (line 9) * kpathsea_open_file: Calling sequence. (line 79) * kpathsea_out_name_ok: Safe filenames. (line 50) @@ -3660,16 +3696,9 @@ Index * kpathsea_var_value: Programming with config files. (line 10) * KPATHSEA_WARNING: Config files. (line 18) +* kpathsea.h: Programming overview. + (line 26) * kpse mode of LuaTeX: Security. (line 32) -* kpse->debug: Debugging. (line 6) -* kpse->debug <1>: Debugging. (line 18) -* kpse->debug variable: Calling sequence. (line 39) -* kpse->format_info: Calling sequence. (line 47) -* kpse->invocation_name: Calling sequence. (line 22) -* kpse->invocation_short_name: Calling sequence. (line 22) -* kpse->program_name: Calling sequence. (line 22) -* kpsewhich: Invoking kpsewhich. (line 6) -* Kpsewhich, and debugging: Debugging. (line 31) * KPSE_BITMAP_TOLERANCE: Basic glyph lookup. (line 15) * KPSE_DEBUG_EXPAND (16): Debugging. (line 68) * KPSE_DEBUG_FOPEN (4): Debugging. (line 53) @@ -3680,6 +3709,16 @@ Index * KPSE_DEBUG_VARS (64): Debugging. (line 83) * KPSE_DOT expansion: KPSE_DOT expansion. (line 6) * kpse_format_info_type: Debugging. (line 61) +* kpse->debug: Debugging. (line 6) +* kpse->debug <1>: Debugging. (line 18) +* kpse->debug variable: Calling sequence. (line 39) +* kpse->format_info: Calling sequence. (line 47) +* kpse->invocation_name: Calling sequence. (line 22) +* kpse->invocation_short_name: Calling sequence. (line 22) +* kpse->program_name: Calling sequence. (line 22) +* kpsewhich: Invoking kpsewhich. (line 6) +* kpsewhich examples: kpsewhich examples. (line 6) +* Kpsewhich, and debugging: Debugging. (line 31) * last-resort font: Fallback font. (line 6) * lcircle10: Fontmap. (line 19) * leading colons: Default expansion. (line 6) @@ -3738,8 +3777,8 @@ Index (line 121) * mismatched checksum warnings: Suppressing warnings. (line 17) -* missfont.log: mktex script names. (line 35) * MISSFONT_LOG: mktex script names. (line 45) +* missfont.log: mktex script names. (line 35) * missing character warnings: Suppressing warnings. (line 20) * mkocp: mktex script names. (line 18) @@ -3756,7 +3795,7 @@ Index * mktexfmt: mktex script names. (line 10) * mktexmf: mktex script names. (line 15) * mktexpk: mktex script names. (line 24) -* mktexpk can’t guess mode: Unable to generate fonts. +* mktexpk can't guess mode: Unable to generate fonts. (line 12) * mktextex: mktex script names. (line 27) * mktextfm: mktex script names. (line 30) @@ -3865,7 +3904,7 @@ Index * reporting bugs: Reporting bugs. (line 6) * resident.c: Calling sequence. (line 47) * resolution, setting: Path searching options. - (line 49) + (line 52) * resolutions, last-resort: Fallback font. (line 6) * restricted mode, for output files: Safe filenames. (line 15) * retrieving TeX: unixtex.ftp. (line 6) @@ -3907,6 +3946,10 @@ Index * sources for search paths: Path sources. (line 6) * special: Suppressing warnings. (line 30) +* st_nlink: Subdirectory expansion. + (line 26) +* ST_NLINK_TRICK: Subdirectory expansion. + (line 38) * stack trace: Bug checklist. (line 58) * standalone path searching: Invoking kpsewhich. (line 6) * standard error and debugging output: Debugging. (line 27) @@ -3916,10 +3959,6 @@ Index * strip: mktex configuration. (line 107) * stripsupplier: mktex configuration. (line 101) * striptypeface: mktex configuration. (line 104) -* st_nlink: Subdirectory expansion. - (line 26) -* ST_NLINK_TRICK: Subdirectory expansion. - (line 38) * subdirectory searching: Subdirectory expansion. (line 6) * suffixes, filename: File lookup. (line 24) @@ -3959,6 +3998,9 @@ Index * TeX glyph lookup: Glyph lookup. (line 6) * TeX support: TeX support. (line 6) * TeX Users Group: Introduction. (line 42) +* TEX_HUSH: Searching overview. (line 63) +* TEX_HUSH <1>: Suppressing warnings. + (line 6) * tex-file.c: File lookup. (line 37) * tex-file.h: Programming overview. (line 26) @@ -3997,6 +4039,11 @@ Index (line 184) * TEXMF: TeX directory structure. (line 6) +* texmf_casefold_search: Casefolding search. (line 12) +* TEXMF_OUTPUT_DIRECTORY, and missfont.log: mktex script names. + (line 39) +* TEXMF_OUTPUT_DIRECTORY, and paranoid output files: Safe filenames. + (line 21) * texmf.cnf: Specially-recognized files. (line 38) * texmf.cnf missing, warning about: Config files. (line 18) @@ -4024,11 +4071,6 @@ Index * texmfvar: mktex configuration. (line 122) * TEXMFVAR: mktex configuration. (line 123) * TEXMFVAR <1>: Safe filenames. (line 26) -* texmf_casefold_search: Casefolding search. (line 12) -* TEXMF_OUTPUT_DIRECTORY, and missfont.log: mktex script names. - (line 39) -* TEXMF_OUTPUT_DIRECTORY, and paranoid output files: Safe filenames. - (line 21) * TEXPICTS: Supported file formats. (line 79) * TEXPKS: Supported file formats. @@ -4042,9 +4084,6 @@ Index * TEXSIZES: Fallback font. (line 6) * TEXSOURCES: Supported file formats. (line 192) -* TEX_HUSH: Searching overview. (line 63) -* TEX_HUSH <1>: Suppressing warnings. - (line 6) * TFMFONTS: Supported file formats. (line 203) * tilde expansion: Tilde expansion. (line 6) @@ -4081,9 +4120,9 @@ Index * unrestricted mode, for output files: Safe filenames. (line 13) * unusable ls-R warning: ls-R. (line 51) * usage patterns, finding: Logging. (line 6) -* USERPROFILE, as ~ expansion: Tilde expansion. (line 6) * USE_TEXMFVAR: mktex configuration. (line 128) * USE_VARTEXFONTS: mktex configuration. (line 118) +* USERPROFILE, as ~ expansion: Tilde expansion. (line 6) * varfonts: mktex configuration. (line 112) * variable expansion: Variable expansion. (line 6) * variable.c: Variable expansion. (line 32) @@ -4121,69 +4160,69 @@ Index * XDVISIZES: Fallback font. (line 6) * zuhn, david: History. (line 50) - Tag Table: -Node: Top1483 -Node: Introduction2266 -Node: History4362 -Node: unixtex.ftp9012 -Node: Security10496 -Node: Global font cache and security13217 -Node: TeX directory structure15214 -Node: Path searching19389 -Node: Searching overview20347 -Node: Path sources24272 -Node: Config files25546 -Node: Path expansion30604 -Node: Default expansion31575 -Node: Variable expansion33711 -Node: Tilde expansion35182 -Node: Brace expansion36232 -Node: KPSE_DOT expansion37229 -Node: Subdirectory expansion37754 -Node: Casefolding search40209 -Node: Casefolding rationale40986 -Node: Casefolding examples42347 -Node: Filename database47576 -Node: ls-R48590 -Node: Filename aliases52467 -Node: Database format53713 -Node: Invoking kpsewhich54774 -Node: Path searching options55757 -Node: Specially-recognized files65769 -Node: Auxiliary tasks67252 -Node: Standard options71398 -Node: TeX support71766 -Node: Supported file formats73125 -Node: File lookup81880 -Node: Glyph lookup83693 -Node: Basic glyph lookup84841 -Node: Fontmap85753 -Node: Fallback font88367 -Node: Suppressing warnings89303 -Node: mktex scripts90468 -Node: mktex configuration91713 -Node: mktex script names97822 -Node: mktex script arguments99507 -Node: Programming100430 -Node: Programming overview101073 -Node: Calling sequence103986 -Node: Safe filenames109332 -Ref: openout_any109491 -Node: Program-specific files113324 -Node: Programming with config files114377 -Node: Reporting bugs116026 -Node: Bug checklist116704 -Node: Mailing lists120272 -Node: Debugging120949 -Node: Logging126219 -Node: Common problems128132 -Node: Unable to find files128611 -Node: Slow path searching131079 -Node: Unable to generate fonts132480 -Node: TeX or Metafont failing135022 -Node: Index136232 +Node: Top1479 +Node: Introduction2261 +Node: History4364 +Node: unixtex.ftp8984 +Node: Security10466 +Node: Global font cache and security13179 +Node: TeX directory structure15170 +Node: Path searching19345 +Node: Searching overview20303 +Node: Path sources24210 +Node: Config files25480 +Node: Path expansion30528 +Node: Default expansion31497 +Node: Variable expansion33619 +Node: Tilde expansion35088 +Node: Brace expansion36136 +Node: KPSE_DOT expansion37131 +Node: Subdirectory expansion37656 +Node: Casefolding search40096 +Node: Casefolding rationale40873 +Node: Casefolding examples42231 +Node: Filename database47453 +Node: ls-R48467 +Node: Filename aliases52339 +Node: Database format53581 +Node: Invoking kpsewhich54630 +Node: kpsewhich examples56021 +Node: Path searching options56909 +Node: Specially-recognized files67083 +Node: Auxiliary tasks68558 +Node: Standard options72702 +Node: TeX support73070 +Node: Supported file formats74428 +Node: File lookup83179 +Node: Glyph lookup84984 +Node: Basic glyph lookup86132 +Node: Fontmap87040 +Node: Fallback font89651 +Node: Suppressing warnings90587 +Node: mktex scripts91750 +Node: mktex configuration92993 +Node: mktex script names99086 +Node: mktex script arguments100769 +Node: Programming101684 +Node: Programming overview102327 +Node: Calling sequence105238 +Node: Safe filenames110575 +Ref: openout_any110734 +Node: Program-specific files114543 +Node: Programming with config files115596 +Node: Reporting bugs117243 +Node: Bug checklist117921 +Node: Mailing lists121478 +Node: Debugging122155 +Node: Logging127412 +Node: Common problems129319 +Node: Unable to find files129796 +Node: Slow path searching132252 +Node: Unable to generate fonts133647 +Node: TeX or Metafont failing136183 +Node: Index137385 End Tag Table diff --git a/source/texk/kpathsea/doc/kpathsea.texi b/source/texk/kpathsea/doc/kpathsea.texi index 4e2e42c03..a7c866627 100644 --- a/source/texk/kpathsea/doc/kpathsea.texi +++ b/source/texk/kpathsea/doc/kpathsea.texi @@ -3,12 +3,12 @@ @settitle Kpathsea: A library for path searching @set version 6.4.0 -@set month-year November 2024 +@set month-year January 2025 @copying This file documents the Kpathsea library for path searching. -Copyright @copyright{} 1996--2024 Karl Berry & Olaf Weber. +Copyright @copyright{} 1996--2025 Karl Berry & Olaf Weber. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are @@ -1516,7 +1516,15 @@ The options and filename(s) to look up can be intermixed. Options can start with either @samp{-} or @samp{--}, and any unambiguous abbreviation is accepted. +Kpsewhich looks up each non-option argument on the command line as a +filename, and outputs (by default) the first file found to standard +output. If a file is not found, and more than @var{filename} is given, +a blank line is output for that file. See examples below. + +The exit status is zero if all files were found, nonzero otherwise. + @menu +* kpsewhich examples:: Simple examples of running kpsewhich. * Path searching options:: Changing the mode, resolution, etc. * Specially-recognized files:: Default formats for texmf.cnf, etc. * Auxiliary tasks:: Path and variable expansion, etc. @@ -1524,15 +1532,45 @@ abbreviation is accepted. @end menu +@node kpsewhich examples +@subsection @code{kpsewhich} examples + +@cindex @code{kpsewhich} examples +@cindex examples, of running @code{kpsewhich} + +Some examples of running @code{kpsewhich} with a typical @TeX{} tree. +A basic successful search (exit status 0): + +@example +$ kpsewhich plain.tex +/usr/local/texlive/2024/texmf-dist/tex/plain/base/plain.tex +@end example + +Searching for multiple files, one of which is not found (exit status +is 1 for this): + +@example +$ kpsewhich plain.tex foobar plain.mf +/usr/local/texlive/2024/texmf-dist/tex/plain/base/plain.tex + +/usr/local/texlive/2024/texmf-dist/metafont/base/plain.mf +@end example + +Using @code{--all} to see all files by the same name (exit status 0): + +@example +$ kpsewhich --all language.dat +/usr/local/texlive/2024/texmf-dist/tex/generic/config/language.dat +/usr/local/texlive/2024/texmf-dist/lambda/generic/config/language.dat +@end example + @node Path searching options @subsection Path searching options @cindex path searching options -Kpsewhich looks up each non-option argument on the command line as a -filename, and returns the first file found. - -Various options alter the path searching behavior: +Various options alter the path searching behavior. Options apply to +all lookups. @table @samp @item --all @@ -1543,6 +1581,10 @@ than one match, just one will be reported (chosen effectively at random). Exception: with the glyph formats (@code{pk}, @code{gf}), this option has no effect and only the first match is returned. +With both @code{-all} and multiple input files, there's no easy way to +discern which matches belong to which files; you have to check the +basename of the output. This could be improved, if there is any demand. + @item --casefold-search @itemx --no-casefold-search @opindex --casefold-search diff --git a/source/texk/kpathsea/kpsewhich.c b/source/texk/kpathsea/kpsewhich.c index 96ca5d1ed..cb55fd8f9 100644 --- a/source/texk/kpathsea/kpsewhich.c +++ b/source/texk/kpathsea/kpsewhich.c @@ -1,7 +1,7 @@ /* kpsewhich -- standalone path lookup and variable expansion for Kpathsea. Ideas from Thomas Esser, Pierre MacKay, and many others. - Copyright 1995-2024 Karl Berry & Olaf Weber. + Copyright 1995-2025 Karl Berry & Olaf Weber. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -477,13 +477,18 @@ Standalone path lookup and expansion for the Kpathsea library.\n\ The default is to look up each FILENAME in turn and report its\n\ first match (if any) to standard output.\n\ \n\ +If multiple FILENAMEs are given and a given file is not found, a blank\n\ +line is written to standard output.\n\ +\n\ When looking up format (.fmt/.base/.mem) files, it is usually necessary\n\ to also use -engine, or nothing will be returned; in particular,\n\ -engine=/ will return matching format files for any engine.\n\ \n\ +The exit status is 0 if all files are found, nonzero otherwise.\n\ +\n\ -all output all matches, one per line (no effect with pk/gf).\n\ [-no]-casefold-search fall back to case-insensitive search if no exact match.\n\ --cnf-line=STRING parse STRING as a configuration file line.\n\ +-cnf-line=STRING handle STRING as a configuration file line.\n\ -debug=NUM set debugging flags.\n\ -D, -dpi=NUM use a base resolution of NUM; default 600.\n\ -engine=STRING set engine name to STRING.\n\ @@ -501,13 +506,13 @@ to also use -engine, or nothing will be returned; in particular,\n\ -progname=STRING set program name to STRING.\n\ -safe-in-name=STRING check if STRING is ok to open for input.\n\ -safe-out-name=STRING check if STRING is ok to open for output.\n\ --safe-extended-in-name=STRING also check TEXMF[SYS]VAR].\n\ --safe-extended-out-name=STRING also check TEXMF[SYS]VAR].\n\ +-safe-extended-in-name=STRING also check TEXMF[SYS]VAR.\n\ +-safe-extended-out-name=STRING also check TEXMF[SYS]VAR.\n\ -show-path=TYPE output search path for file type TYPE\n\ (list shown by -help-formats).\n\ -subdir=STRING only output matches whose directory ends with STRING.\n\ --var-brace-value=STRING output brace-expanded value of variable $STRING.\n\ --var-value=STRING output variable-expanded value of variable $STRING.\n\ +-var-brace-value=STRING output brace-expanded value of variable STRING.\n\ +-var-value=STRING output variable-expanded value of variable STRING.\n\ -version display version information number and exit.\n \ " @@ -951,7 +956,14 @@ main (int argc, string *argv) /* Usual case: look up each given filename. */ for (; optind < argc; optind++) { - unfound += lookup (kpse, argv[optind]); + unsigned status = lookup (kpse, argv[optind]); + unfound += status; + if (status == 1 && optind + 1 < argc) { + /* If not found, and more than one input file is specified, + output blank line so the return strings can be matched + up with the input strings. */ + puts (""); + } } if (interactive) { diff --git a/source/texk/texlive/linked_scripts/Makefile.am b/source/texk/texlive/linked_scripts/Makefile.am index f9e9be254..cdd976056 100644 --- a/source/texk/texlive/linked_scripts/Makefile.am +++ b/source/texk/texlive/linked_scripts/Makefile.am @@ -1,7 +1,7 @@ -## $Id: Makefile.am 73132 2024-12-15 21:15:55Z karl $ +## $Id: Makefile.am 73378 2025-01-08 21:19:18Z karl $ ## Makefile.am for the TeX Live subdirectory texk/texlive/linked_scripts/ ## -## Copyright 2016-2024 Karl Berry <tex-live@tug.org> +## Copyright 2016-2025 Karl Berry <tex-live@tug.org> ## Copyright 2009-2015 Peter Breitenlohner <tex-live@tug.org> ## You may freely use, modify and/or distribute this file. ## @@ -106,6 +106,7 @@ texmf_other_scripts = \ accfonts/vpl2ovp \ accfonts/vpl2vpl \ albatross/albatross.sh \ + aomart/aom-fullref.pl \ arara/arara.sh \ attachfile2/pdfatfi.pl \ authorindex/authorindex \ diff --git a/source/texk/texlive/linked_scripts/Makefile.in b/source/texk/texlive/linked_scripts/Makefile.in index b57edb40e..ee984ef56 100644 --- a/source/texk/texlive/linked_scripts/Makefile.in +++ b/source/texk/texlive/linked_scripts/Makefile.in @@ -326,6 +326,7 @@ texmf_other_scripts = \ accfonts/vpl2ovp \ accfonts/vpl2vpl \ albatross/albatross.sh \ + aomart/aom-fullref.pl \ arara/arara.sh \ attachfile2/pdfatfi.pl \ authorindex/authorindex \ diff --git a/source/texk/web2c/ChangeLog b/source/texk/web2c/ChangeLog index 2262e95a6..756b381f3 100644 --- a/source/texk/web2c/ChangeLog +++ b/source/texk/web2c/ChangeLog @@ -1,3 +1,19 @@ +2025-01-21 Vincenzo Mantova <vlmantova@gmail.com> + + * configure.ac (KPSE_HARFBUZZ_FLAGS): needed for lua[jit]hbtex, + not luatex[53]. + (KPSE_CHECK_FRAMEWORK, KPSE_FONTCONFIG_FLAGS) [enable_xetex]: + make checks conditional. + https://tug.org/pipermail/tlbuild/2024q2/005555.html + +2025-01-19 Karl Berry <karl@freefriends.org> + + * configure.ac (LIBS): + +2025-01-01 Andreas Scherer <https://ascherer.github.io> + + * ctangleboot.cin: CWEB 4.12.1 release. + 2024-12-01 Luigi Scarso <luigi.scarso@gmail.com> * doc/luatex: development LuaTeX Reference Manual, kept in sync with diff --git a/source/texk/web2c/Makefile.in b/source/texk/web2c/Makefile.in index fa3ac7120..a9abfae55 100644 --- a/source/texk/web2c/Makefile.in +++ b/source/texk/web2c/Makefile.in @@ -115,22 +115,23 @@ bin_PROGRAMS = tangle$(EXEEXT) ctangle$(EXEEXT) $(am__EXEEXT_4) \ $(am__EXEEXT_20) $(am__EXEEXT_21) $(am__EXEEXT_22) \ $(am__EXEEXT_23) $(am__EXEEXT_24) $(am__EXEEXT_25) \ $(am__EXEEXT_26) $(am__EXEEXT_27) $(am__EXEEXT_28) \ - $(am__EXEEXT_29) $(am__EXEEXT_30) + $(am__EXEEXT_29) $(am__EXEEXT_30) $(am__EXEEXT_31) noinst_PROGRAMS = tangleboot$(EXEEXT) ctangleboot$(EXEEXT) \ - $(am__EXEEXT_31) $(am__EXEEXT_32) $(am__EXEEXT_33) \ - $(am__EXEEXT_34) $(am__EXEEXT_35) $(am__EXEEXT_36) \ - $(am__EXEEXT_37) $(am__EXEEXT_38) $(am__EXEEXT_39) \ - $(am__EXEEXT_40) $(am__EXEEXT_41) -TESTS = tangle.test $(am__EXEEXT_44) ctiedir/ctie.test \ + $(am__EXEEXT_32) $(am__EXEEXT_33) $(am__EXEEXT_34) \ + $(am__EXEEXT_35) $(am__EXEEXT_36) $(am__EXEEXT_37) \ + $(am__EXEEXT_38) $(am__EXEEXT_39) $(am__EXEEXT_40) \ + $(am__EXEEXT_41) $(am__EXEEXT_42) +TESTS = tangle.test $(am__EXEEXT_45) ctiedir/ctie.test \ cwebdir/ctwill.test cwebdir/cweave.test tiedir/tie.test \ $(am__append_6) $(am__append_16) $(am__append_25) \ $(am__append_34) $(am__append_42) $(am__append_55) \ $(am__append_56) $(am__append_58) $(am__append_62) \ - $(am__EXEEXT_45) $(am__append_68) $(am__append_71) \ - $(am__append_76) $(am__append_81) $(am__append_84) \ - $(am__append_105) $(am__append_106) $(am__append_107) \ - $(am__append_108) $(am__append_116) $(am__append_118) \ - $(am__append_120) $(am__append_143) libmd5/md5.test + $(am__EXEEXT_46) $(am__append_69) $(am__append_72) \ + $(am__append_77) $(am__append_82) $(am__append_85) \ + $(am__append_106) $(am__append_107) $(am__append_108) \ + $(am__append_109) $(am__append_111) $(am__append_119) \ + $(am__append_121) $(am__append_123) $(am__append_146) \ + libmd5/md5.test @WEB_TRUE@am__append_1 = $(web_programs) @WEB_TRUE@am__append_2 = $(web_tests) @TEX_TRUE@am__append_3 = tex @@ -202,132 +203,138 @@ TESTS = tangle.test $(am__EXEEXT_44) ctiedir/ctie.test \ @PWEB_TRUE@am__append_65 = $(pweb_tests) @UPTEX_TRUE@am__append_66 = uptex @UPWEB_TRUE@am__append_67 = $(upweb_programs) -@UPTEX_TRUE@am__append_68 = $(uptex_tests) -@UPTEX_TRUE@am__append_69 = uptrip.diffs -@UPTEX_TRUE@am__append_70 = uptrip-clean -@UPWEB_TRUE@am__append_71 = $(upweb_tests) -@EUPTEX_TRUE@am__append_72 = euptex -@EUPTEX_TRUE@@UPTEX_FALSE@am__append_73 = euptex$(EXEEXT):uptex -@EUPTEX_TRUE@am__append_74 = euptex$(EXEEXT):eptex -@EUPTEX_TRUE@@PTEX_FALSE@am__append_75 = euptex$(EXEEXT):ptex -@EUPTEX_TRUE@am__append_76 = $(euptex_tests) -@EUPTEX_TRUE@am__append_77 = euptrip.diffs -@EUPTEX_TRUE@am__append_78 = euptrip-clean -@HITEX_TRUE@am__append_79 = hitex hishrink histretch -@HITEX_TRUE@am__append_80 = himktables -@HITEX_TRUE@am__append_81 = $(hitex_tests) -@MINGW32_TRUE@am__append_82 = \ +@UPWEB_TRUE@am__append_68 = upbibtex$(EXEEXT):pbibtex \ +@UPWEB_TRUE@ updvitype$(EXEEXT):pdvitype \ +@UPWEB_TRUE@ uppltotf$(EXEEXT):ppltotf \ +@UPWEB_TRUE@ uptftopl$(EXEEXT):ptftopl +@UPTEX_TRUE@am__append_69 = $(uptex_tests) +@UPTEX_TRUE@am__append_70 = uptrip.diffs +@UPTEX_TRUE@am__append_71 = uptrip-clean +@UPWEB_TRUE@am__append_72 = $(upweb_tests) +@EUPTEX_TRUE@am__append_73 = euptex +@EUPTEX_TRUE@@UPTEX_FALSE@am__append_74 = euptex$(EXEEXT):uptex +@EUPTEX_TRUE@am__append_75 = euptex$(EXEEXT):eptex +@EUPTEX_TRUE@@PTEX_FALSE@am__append_76 = euptex$(EXEEXT):ptex +@EUPTEX_TRUE@am__append_77 = $(euptex_tests) +@EUPTEX_TRUE@am__append_78 = euptrip.diffs +@EUPTEX_TRUE@am__append_79 = euptrip-clean +@HITEX_TRUE@am__append_80 = hitex hishrink histretch +@HITEX_TRUE@am__append_81 = himktables +@HITEX_TRUE@am__append_82 = $(hitex_tests) +@MINGW32_TRUE@am__append_83 = \ @MINGW32_TRUE@ pdftexdir/regex/regex.c \ @MINGW32_TRUE@ pdftexdir/regex/regex.h -@PDFTEX_TRUE@am__append_83 = pdftex ttf2afm pdftosrc -@PDFTEX_TRUE@am__append_84 = $(pdftex_tests) $(ttf2afm_tests) \ +@PDFTEX_TRUE@am__append_84 = pdftex ttf2afm pdftosrc +@PDFTEX_TRUE@am__append_85 = $(pdftex_tests) $(ttf2afm_tests) \ @PDFTEX_TRUE@ $(pdftosrc_tests) -@LUATEX_TRUE@am__append_85 = luatex -@LUATEX_TRUE@@WIN32_TRUE@am__append_86 = call_luatex -@LUATEX_TRUE@@WIN32_TRUE@am__append_87 = install-luatex-links -@LUATEX_TRUE@@WIN32_TRUE@am__append_88 = uninstall-luatex-links -@LUATEX_TRUE@@WIN32_FALSE@am__append_89 = luatex$(EXEEXT):texlua luatex$(EXEEXT):texluac -@LUAHBTEX_TRUE@am__append_90 = luahbtex -@LUAHBTEX_TRUE@@WIN32_TRUE@am__append_91 = call_luahbtex -@LUAHBTEX_TRUE@@WIN32_TRUE@am__append_92 = install-luahbtex-links -@LUAHBTEX_TRUE@@WIN32_TRUE@am__append_93 = uninstall-luahbtex-links +@LUATEX_TRUE@am__append_86 = luatex +@LUATEX_TRUE@@WIN32_TRUE@am__append_87 = call_luatex +@LUATEX_TRUE@@WIN32_TRUE@am__append_88 = install-luatex-links +@LUATEX_TRUE@@WIN32_TRUE@am__append_89 = uninstall-luatex-links +@LUATEX_TRUE@@WIN32_FALSE@am__append_90 = luatex$(EXEEXT):texlua luatex$(EXEEXT):texluac +@LUAHBTEX_TRUE@am__append_91 = luahbtex +@LUAHBTEX_TRUE@@WIN32_TRUE@am__append_92 = call_luahbtex +@LUAHBTEX_TRUE@@WIN32_TRUE@am__append_93 = install-luahbtex-links +@LUAHBTEX_TRUE@@WIN32_TRUE@am__append_94 = uninstall-luahbtex-links # keep texlua[c] as links to luatex unless luatex is not installed. -@LUAHBTEX_TRUE@@LUATEX_FALSE@@WIN32_FALSE@am__append_94 = luahbtex$(EXEEXT):texlua luahbtex$(EXEEXT):texluac -@LUAJITTEX_TRUE@am__append_95 = luajittex -@LUAJITTEX_TRUE@@WIN32_TRUE@am__append_96 = call_luajittex -@LUAJITTEX_TRUE@@WIN32_TRUE@am__append_97 = install-luajittex-links -@LUAJITTEX_TRUE@@WIN32_TRUE@am__append_98 = uninstall-luajittex-links -@LUAJITTEX_TRUE@@WIN32_FALSE@am__append_99 = luajittex$(EXEEXT):texluajit luajittex$(EXEEXT):texluajitc -@LUAJITHBTEX_TRUE@am__append_100 = luajithbtex -@LUAJITHBTEX_TRUE@@WIN32_TRUE@am__append_101 = call_luajithbtex -@LUAJITHBTEX_TRUE@@WIN32_TRUE@am__append_102 = install-luajithbtex-links -@LUAJITHBTEX_TRUE@@WIN32_TRUE@am__append_103 = uninstall-luajithbtex-links +@LUAHBTEX_TRUE@@LUATEX_FALSE@@WIN32_FALSE@am__append_95 = luahbtex$(EXEEXT):texlua luahbtex$(EXEEXT):texluac +@LUAJITTEX_TRUE@am__append_96 = luajittex +@LUAJITTEX_TRUE@@WIN32_TRUE@am__append_97 = call_luajittex +@LUAJITTEX_TRUE@@WIN32_TRUE@am__append_98 = install-luajittex-links +@LUAJITTEX_TRUE@@WIN32_TRUE@am__append_99 = uninstall-luajittex-links +@LUAJITTEX_TRUE@@WIN32_FALSE@am__append_100 = luajittex$(EXEEXT):texluajit luajittex$(EXEEXT):texluajitc +@LUAJITHBTEX_TRUE@am__append_101 = luajithbtex +@LUAJITHBTEX_TRUE@@WIN32_TRUE@am__append_102 = call_luajithbtex +@LUAJITHBTEX_TRUE@@WIN32_TRUE@am__append_103 = install-luajithbtex-links +@LUAJITHBTEX_TRUE@@WIN32_TRUE@am__append_104 = uninstall-luajithbtex-links # keep texluajit[c] as links to luajittex unless luajittex is not installed. -@LUAJITHBTEX_TRUE@@LUAJITTEX_FALSE@@WIN32_FALSE@am__append_104 = luajithbtex$(EXEEXT):texluajit luajithbtex$(EXEEXT):texluajitc -@LUATEX_TRUE@am__append_105 = $(luatex_tests) -@LUAHBTEX_TRUE@am__append_106 = $(luahbtex_tests) -@LUAJITTEX_TRUE@am__append_107 = $(luajittex_tests) -@LUAJITHBTEX_TRUE@am__append_108 = $(luajithbtex_tests) -@XETEX_TRUE@am__append_109 = xetex -@XETEX_MACOSX_TRUE@am__append_110 = -DXETEX_MAC -@XETEX_MACOSX_TRUE@am__append_111 = -std=c++11 -@XETEX_MACOSX_FALSE@am__append_112 = $(FONTCONFIG_INCLUDES) -@XETEX_MACOSX_FALSE@am__append_113 = $(FONTCONFIG_LIBS) -@XETEX_MACOSX_TRUE@am__append_114 = \ +@LUAJITHBTEX_TRUE@@LUAJITTEX_FALSE@@WIN32_FALSE@am__append_105 = luajithbtex$(EXEEXT):texluajit luajithbtex$(EXEEXT):texluajitc +@LUATEX_TRUE@am__append_106 = $(luatex_tests) +@LUAHBTEX_TRUE@am__append_107 = $(luahbtex_tests) +@LUAJITTEX_TRUE@am__append_108 = $(luajittex_tests) +@LUAJITHBTEX_TRUE@am__append_109 = $(luajithbtex_tests) +@TEXPROF_TRUE@am__append_110 = texprof texprofile +@TEXPROF_TRUE@am__append_111 = $(texprof_tests) +@XETEX_TRUE@am__append_112 = xetex +@XETEX_MACOSX_TRUE@am__append_113 = -DXETEX_MAC +@XETEX_MACOSX_TRUE@am__append_114 = -std=c++11 +@XETEX_MACOSX_FALSE@am__append_115 = $(FONTCONFIG_INCLUDES) +@XETEX_MACOSX_FALSE@am__append_116 = $(FONTCONFIG_LIBS) +@XETEX_MACOSX_TRUE@am__append_117 = \ @XETEX_MACOSX_TRUE@ xetexdir/XeTeXFontInst_Mac.cpp \ @XETEX_MACOSX_TRUE@ xetexdir/XeTeXFontInst_Mac.h \ @XETEX_MACOSX_TRUE@ xetexdir/XeTeXFontMgr_Mac.mm \ @XETEX_MACOSX_TRUE@ xetexdir/XeTeXFontMgr_Mac.h \ @XETEX_MACOSX_TRUE@ xetexdir/XeTeX_mac.c -@XETEX_MACOSX_FALSE@am__append_115 = \ +@XETEX_MACOSX_FALSE@am__append_118 = \ @XETEX_MACOSX_FALSE@ xetexdir/XeTeXFontMgr_FC.cpp \ @XETEX_MACOSX_FALSE@ xetexdir/XeTeXFontMgr_FC.h -@XETEX_TRUE@am__append_116 = $(xetex_tests) -@OTANGLE_TRUE@am__append_117 = $(omegaware_programs) -@OTANGLE_TRUE@am__append_118 = $(OTANGLE_tests) $(OMFONTS_tests) -@ALEPH_TRUE@am__append_119 = aleph -@ALEPH_TRUE@am__append_120 = $(aleph_tests) -@SYNCTEX_TRUE@am__append_121 = synctex -@SYNCTEX_TRUE@am__append_122 = $(LTLIBSYNCTEX) -@SYNCTEX_TRUE@am__append_123 = $(LIBSYNCTEX) -@MINGW32_TRUE@am__append_124 = $(KPATHSEA_INCLUDES) -@MINGW32_TRUE@am__append_125 = -lshlwapi $(KPATHSEA_LIBS) -@MINGW32_TRUE@am__append_126 = -lshlwapi -@TEX_SYNCTEX_TRUE@am__append_127 = -I$(srcdir)/synctexdir \ +@XETEX_TRUE@am__append_119 = $(xetex_tests) +@OTANGLE_TRUE@am__append_120 = $(omegaware_programs) +@OTANGLE_TRUE@am__append_121 = $(OTANGLE_tests) $(OMFONTS_tests) +@ALEPH_TRUE@am__append_122 = aleph +@ALEPH_TRUE@am__append_123 = $(aleph_tests) +@SYNCTEX_TRUE@am__append_124 = synctex +@SYNCTEX_TRUE@am__append_125 = $(LTLIBSYNCTEX) +@SYNCTEX_TRUE@am__append_126 = $(LIBSYNCTEX) +@MINGW32_TRUE@am__append_127 = $(KPATHSEA_INCLUDES) +@MINGW32_TRUE@am__append_128 = -lshlwapi $(KPATHSEA_LIBS) +@MINGW32_TRUE@am__append_129 = -lshlwapi +@TEX_SYNCTEX_TRUE@am__append_130 = -I$(srcdir)/synctexdir \ @TEX_SYNCTEX_TRUE@ $(ZLIB_INCLUDES) -D__SyncTeX__ \ @TEX_SYNCTEX_TRUE@ -DSYNCTEX_ENGINE_H=\"synctex-tex.h\" -@TEX_SYNCTEX_TRUE@am__append_128 = $(ZLIB_LIBS) -@TEX_SYNCTEX_TRUE@am__append_129 = $(ZLIB_DEPEND) -@TEX_SYNCTEX_TRUE@am__append_130 = \ +@TEX_SYNCTEX_TRUE@am__append_131 = $(ZLIB_LIBS) +@TEX_SYNCTEX_TRUE@am__append_132 = $(ZLIB_DEPEND) +@TEX_SYNCTEX_TRUE@am__append_133 = \ @TEX_SYNCTEX_TRUE@ synctexdir/synctex.c \ @TEX_SYNCTEX_TRUE@ synctexdir/synctex.h \ @TEX_SYNCTEX_TRUE@ synctexdir/synctex-common.h \ @TEX_SYNCTEX_TRUE@ synctexdir/synctex-tex.h -@ETEX_SYNCTEX_TRUE@am__append_131 = -I$(srcdir)/synctexdir \ +@ETEX_SYNCTEX_TRUE@am__append_134 = -I$(srcdir)/synctexdir \ @ETEX_SYNCTEX_TRUE@ $(ZLIB_INCLUDES) -D__SyncTeX__ \ @ETEX_SYNCTEX_TRUE@ -DSYNCTEX_ENGINE_H=\"synctex-etex.h\" -@ETEX_SYNCTEX_TRUE@am__append_132 = $(ZLIB_LIBS) -@ETEX_SYNCTEX_TRUE@am__append_133 = $(ZLIB_DEPEND) -@ETEX_SYNCTEX_TRUE@am__append_134 = \ +@ETEX_SYNCTEX_TRUE@am__append_135 = $(ZLIB_LIBS) +@ETEX_SYNCTEX_TRUE@am__append_136 = $(ZLIB_DEPEND) +@ETEX_SYNCTEX_TRUE@am__append_137 = \ @ETEX_SYNCTEX_TRUE@ synctexdir/synctex.c \ @ETEX_SYNCTEX_TRUE@ synctexdir/synctex.h \ @ETEX_SYNCTEX_TRUE@ synctexdir/synctex-common.h \ @ETEX_SYNCTEX_TRUE@ synctexdir/synctex-etex.h -@EUPTEX_SYNCTEX_TRUE@am__append_135 = -I$(srcdir)/synctexdir \ +@EUPTEX_SYNCTEX_TRUE@am__append_138 = -I$(srcdir)/synctexdir \ @EUPTEX_SYNCTEX_TRUE@ $(ZLIB_INCLUDES) -D__SyncTeX__ \ @EUPTEX_SYNCTEX_TRUE@ -DSYNCTEX_ENGINE_H=\"synctex-euptex.h\" -@EUPTEX_SYNCTEX_TRUE@am__append_136 = $(ZLIB_LIBS) -@EUPTEX_SYNCTEX_TRUE@am__append_137 = $(ZLIB_DEPEND) -@EUPTEX_SYNCTEX_TRUE@am__append_138 = \ +@EUPTEX_SYNCTEX_TRUE@am__append_139 = $(ZLIB_LIBS) +@EUPTEX_SYNCTEX_TRUE@am__append_140 = $(ZLIB_DEPEND) +@EUPTEX_SYNCTEX_TRUE@am__append_141 = \ @EUPTEX_SYNCTEX_TRUE@ synctexdir/synctex.c \ @EUPTEX_SYNCTEX_TRUE@ synctexdir/synctex.h \ @EUPTEX_SYNCTEX_TRUE@ synctexdir/synctex-common.h \ @EUPTEX_SYNCTEX_TRUE@ synctexdir/synctex-euptex.h -@PDFTEX_SYNCTEX_TRUE@am__append_139 = -I$(srcdir)/synctexdir \ +@PDFTEX_SYNCTEX_TRUE@am__append_142 = -I$(srcdir)/synctexdir \ @PDFTEX_SYNCTEX_TRUE@ -D__SyncTeX__ \ @PDFTEX_SYNCTEX_TRUE@ -DSYNCTEX_ENGINE_H=\"synctex-pdftex.h\" -@PDFTEX_SYNCTEX_TRUE@am__append_140 = \ +@PDFTEX_SYNCTEX_TRUE@am__append_143 = \ @PDFTEX_SYNCTEX_TRUE@ synctexdir/synctex.c \ @PDFTEX_SYNCTEX_TRUE@ synctexdir/synctex.h \ @PDFTEX_SYNCTEX_TRUE@ synctexdir/synctex-common.h \ @PDFTEX_SYNCTEX_TRUE@ synctexdir/synctex-pdftex.h -@XETEX_SYNCTEX_TRUE@am__append_141 = -I$(srcdir)/synctexdir \ +@XETEX_SYNCTEX_TRUE@am__append_144 = -I$(srcdir)/synctexdir \ @XETEX_SYNCTEX_TRUE@ -D__SyncTeX__ \ @XETEX_SYNCTEX_TRUE@ -DSYNCTEX_ENGINE_H=\"synctex-xetex.h\" -@XETEX_SYNCTEX_TRUE@am__append_142 = \ +@XETEX_SYNCTEX_TRUE@am__append_145 = \ @XETEX_SYNCTEX_TRUE@ synctexdir/synctex.c \ @XETEX_SYNCTEX_TRUE@ synctexdir/synctex.h \ @XETEX_SYNCTEX_TRUE@ synctexdir/synctex-common.h \ @XETEX_SYNCTEX_TRUE@ synctexdir/synctex-xetex.h -@SYNCTEX_TRUE@am__append_143 = $(synctex_tests) +@SYNCTEX_TRUE@am__append_146 = $(synctex_tests) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/web2c-disable.m4 \ @@ -425,25 +432,26 @@ am__EXEEXT_3 = odvicopy$(EXEEXT) odvitype$(EXEEXT) otangle$(EXEEXT) \ @LUAHBTEX_TRUE@am__EXEEXT_24 = luahbtex$(EXEEXT) @LUAJITTEX_TRUE@am__EXEEXT_25 = luajittex$(EXEEXT) @LUAJITHBTEX_TRUE@am__EXEEXT_26 = luajithbtex$(EXEEXT) -@XETEX_TRUE@am__EXEEXT_27 = xetex$(EXEEXT) -@OTANGLE_TRUE@am__EXEEXT_28 = $(am__EXEEXT_3) -@ALEPH_TRUE@am__EXEEXT_29 = aleph$(EXEEXT) -@SYNCTEX_TRUE@am__EXEEXT_30 = synctex$(EXEEXT) +@TEXPROF_TRUE@am__EXEEXT_27 = texprof$(EXEEXT) texprofile$(EXEEXT) +@XETEX_TRUE@am__EXEEXT_28 = xetex$(EXEEXT) +@OTANGLE_TRUE@am__EXEEXT_29 = $(am__EXEEXT_3) +@ALEPH_TRUE@am__EXEEXT_30 = aleph$(EXEEXT) +@SYNCTEX_TRUE@am__EXEEXT_31 = synctex$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libdir)" \ "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" \ "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(syncincludedir)" -@MF_TRUE@@WIN32_TRUE@am__EXEEXT_31 = call_mf$(EXEEXT) -@MFLUA_TRUE@@WIN32_TRUE@am__EXEEXT_32 = call_mflua$(EXEEXT) -@MFLUAJIT_TRUE@@WIN32_TRUE@am__EXEEXT_33 = call_mfluajit$(EXEEXT) -@MP_TRUE@@WIN32_TRUE@am__EXEEXT_34 = call_mpost$(EXEEXT) -@PMP_TRUE@@WIN32_TRUE@am__EXEEXT_35 = call_pmpost$(EXEEXT) -@UPMP_TRUE@@WIN32_TRUE@am__EXEEXT_36 = call_upmpost$(EXEEXT) -@HITEX_TRUE@am__EXEEXT_37 = himktables$(EXEEXT) -@LUATEX_TRUE@@WIN32_TRUE@am__EXEEXT_38 = call_luatex$(EXEEXT) -@LUAHBTEX_TRUE@@WIN32_TRUE@am__EXEEXT_39 = call_luahbtex$(EXEEXT) -@LUAJITTEX_TRUE@@WIN32_TRUE@am__EXEEXT_40 = call_luajittex$(EXEEXT) -@LUAJITHBTEX_TRUE@@WIN32_TRUE@am__EXEEXT_41 = \ +@MF_TRUE@@WIN32_TRUE@am__EXEEXT_32 = call_mf$(EXEEXT) +@MFLUA_TRUE@@WIN32_TRUE@am__EXEEXT_33 = call_mflua$(EXEEXT) +@MFLUAJIT_TRUE@@WIN32_TRUE@am__EXEEXT_34 = call_mfluajit$(EXEEXT) +@MP_TRUE@@WIN32_TRUE@am__EXEEXT_35 = call_mpost$(EXEEXT) +@PMP_TRUE@@WIN32_TRUE@am__EXEEXT_36 = call_pmpost$(EXEEXT) +@UPMP_TRUE@@WIN32_TRUE@am__EXEEXT_37 = call_upmpost$(EXEEXT) +@HITEX_TRUE@am__EXEEXT_38 = himktables$(EXEEXT) +@LUATEX_TRUE@@WIN32_TRUE@am__EXEEXT_39 = call_luatex$(EXEEXT) +@LUAHBTEX_TRUE@@WIN32_TRUE@am__EXEEXT_40 = call_luahbtex$(EXEEXT) +@LUAJITTEX_TRUE@@WIN32_TRUE@am__EXEEXT_41 = call_luajittex$(EXEEXT) +@LUAJITHBTEX_TRUE@@WIN32_TRUE@am__EXEEXT_42 = \ @LUAJITHBTEX_TRUE@@WIN32_TRUE@ call_luajithbtex$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -1600,6 +1608,10 @@ tex_OBJECTS = $(dist_tex_OBJECTS) $(nodist_tex_OBJECTS) @TEX_SYNCTEX_TRUE@am__DEPENDENCIES_13 = $(am__DEPENDENCIES_1) tex_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_13) +texprof_SOURCES = texprof.c +texprof_OBJECTS = texprof-texprof.$(OBJEXT) +texprofile_SOURCES = texprofile.c +texprofile_OBJECTS = texprofile-texprofile.$(OBJEXT) nodist_tftopl_OBJECTS = tftopl.$(OBJEXT) tftopl_OBJECTS = $(nodist_tftopl_OBJECTS) tftopl_LDADD = $(LDADD) @@ -1804,7 +1816,8 @@ am__depfiles_remade = ./$(DEPDIR)/aleph-aleph-pool.Po \ ./$(DEPDIR)/ptex-ptexini.Po ./$(DEPDIR)/tangle.Po \ ./$(DEPDIR)/tangleboot.Po ./$(DEPDIR)/tex-tex-pool.Po \ ./$(DEPDIR)/tex-tex0.Po ./$(DEPDIR)/tex-texextra.Po \ - ./$(DEPDIR)/tex-texini.Po ./$(DEPDIR)/tftopl.Po \ + ./$(DEPDIR)/tex-texini.Po ./$(DEPDIR)/texprof-texprof.Po \ + ./$(DEPDIR)/texprofile-texprofile.Po ./$(DEPDIR)/tftopl.Po \ ./$(DEPDIR)/tie-tie.Po ./$(DEPDIR)/twill.Po \ ./$(DEPDIR)/upbibtex-upbibtex.Po \ ./$(DEPDIR)/updvitype-updvitype.Po ./$(DEPDIR)/upmpost-pmp.Po \ @@ -2517,8 +2530,8 @@ SOURCES = $(libff_a_SOURCES) $(libkanji_a_SOURCES) \ $(nodist_pmpost_SOURCES) $(nodist_pooltype_SOURCES) \ $(dist_ptex_SOURCES) $(nodist_ptex_SOURCES) $(synctex_SOURCES) \ $(nodist_tangle_SOURCES) $(nodist_tangleboot_SOURCES) \ - $(dist_tex_SOURCES) $(nodist_tex_SOURCES) \ - $(nodist_tftopl_SOURCES) $(nodist_tie_SOURCES) \ + $(dist_tex_SOURCES) $(nodist_tex_SOURCES) texprof.c \ + texprofile.c $(nodist_tftopl_SOURCES) $(nodist_tie_SOURCES) \ $(ttf2afm_SOURCES) $(EXTRA_ttf2afm_SOURCES) \ $(nodist_twill_SOURCES) $(upbibtex_SOURCES) \ $(nodist_upbibtex_SOURCES) $(updvitype_SOURCES) \ @@ -2547,10 +2560,11 @@ DIST_SOURCES = $(libff_a_SOURCES) $(libkanji_a_SOURCES) \ $(dist_mf_nowin_SOURCES) $(dist_mflua_SOURCES) \ $(dist_mfluajit_SOURCES) $(am__dist_pdftex_SOURCES_DIST) \ $(pdftosrc_SOURCES) $(dist_ptex_SOURCES) $(synctex_SOURCES) \ - $(am__dist_tex_SOURCES_DIST) $(ttf2afm_SOURCES) \ - $(EXTRA_ttf2afm_SOURCES) $(upbibtex_SOURCES) \ - $(updvitype_SOURCES) $(uppltotf_SOURCES) $(dist_uptex_SOURCES) \ - $(uptftopl_SOURCES) $(am__dist_xetex_SOURCES_DIST) + $(am__dist_tex_SOURCES_DIST) texprof.c texprofile.c \ + $(ttf2afm_SOURCES) $(EXTRA_ttf2afm_SOURCES) \ + $(upbibtex_SOURCES) $(updvitype_SOURCES) $(uppltotf_SOURCES) \ + $(dist_uptex_SOURCES) $(uptftopl_SOURCES) \ + $(am__dist_xetex_SOURCES_DIST) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ @@ -2762,15 +2776,15 @@ am__set_TESTS_bases = \ bases=`echo $$bases` AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)' RECHECK_LOGS = $(TEST_LOGS) -am__EXEEXT_42 = bibtex.test dvicopy.test dvitype.test gftodvi.test \ +am__EXEEXT_43 = bibtex.test dvicopy.test dvitype.test gftodvi.test \ gftopk.test gftype.test mft.test patgen.test pktogf.test \ pktype.test pltotf.test pooltype.test tftopl.test vftovp.test \ vptovf.test weave.test twill.test -am__EXEEXT_43 = $(am__EXEEXT_42) tests/bibtex-openout-test.pl \ +am__EXEEXT_44 = $(am__EXEEXT_43) tests/bibtex-openout-test.pl \ tests/bibtex-longline-test.pl tests/bibtex-mem.test \ tests/bibtex-bigauth.test tests/bibtex-auxinclude.test -@WEB_TRUE@am__EXEEXT_44 = $(am__EXEEXT_43) -am__EXEEXT_45 = +@WEB_TRUE@am__EXEEXT_45 = $(am__EXEEXT_44) +am__EXEEXT_46 = TEST_SUITE_LOG = test-suite.log am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) @@ -3008,7 +3022,7 @@ NM = @NM@ NMEDIT = @NMEDIT@ OBJCXX = @OBJCXX@ OBJCXXDEPMODE = @OBJCXXDEPMODE@ -OBJCXXFLAGS = @OBJCXXFLAGS@ $(am__append_111) +OBJCXXFLAGS = @OBJCXXFLAGS@ $(am__append_114) OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTANGLE = @OTANGLE@ @@ -3157,8 +3171,8 @@ EXTRA_LIBRARIES = libmf.a libmflua.a libmfluaotfcc.a libmfluapotrace.a \ libluaharfbuzz.a libluajitharfbuzz.a libxetex.a libsynctex.a \ libmd5.a EXTRA_LTLIBRARIES = libsynctex.la -lib_LIBRARIES = $(am__append_123) -lib_LTLIBRARIES = $(am__append_122) +lib_LIBRARIES = $(am__append_126) +lib_LTLIBRARIES = $(am__append_125) dist_man_MANS = synctexdir/man1/synctex.1 synctexdir/man5/synctex.5 nodist_man_MANS = TEST_EXTENSIONS = .pl .test @@ -3278,12 +3292,13 @@ EXTRA_DIST = PROJECTS cftests cpascal.h help.h w2c/config.h \ ptexdir/tests/pknj-e.log ptexdir/tests/p-pknj-sa.typ \ ptexdir/tests/p-pknj-ea.typ ptexdir/tests/ucs.tex \ ptexdir/tests/ucs-s.log ptexdir/tests/ucs-e.log \ - $(uptex_web_srcs) $(uptex_ch_srcs) uptexdir/uptex.defines \ - uptexdir/upbibtex.ch uptexdir/updvitype.ch \ - uptexdir/uppltotf.ch uptexdir/uptftopl.ch uptexdir/COPYRIGHT \ - uptexdir/COPYRIGHT.ja uptexdir/ChangeLog $(uptex_tests) \ - $(upweb_tests) tests/enc-u.bbl tests/enc-eu.bbl \ - tests/enc-su.bbl tests/enc-uu.bbl uptexdir/tests/uptex3.tex \ + ptexdir/tests/p-jchwidow.log $(uptex_web_srcs) \ + $(uptex_ch_srcs) uptexdir/uptex.defines uptexdir/upbibtex.ch \ + uptexdir/updvitype.ch uptexdir/uppltotf.ch \ + uptexdir/uptftopl.ch uptexdir/COPYRIGHT uptexdir/COPYRIGHT.ja \ + uptexdir/ChangeLog $(uptex_tests) $(upweb_tests) \ + tests/enc-u.bbl tests/enc-eu.bbl tests/enc-su.bbl \ + tests/enc-uu.bbl uptexdir/tests/uptex3.tex \ uptexdir/tests/uptex3.dvi uptexdir/tests/uptex4.tex \ uptexdir/tests/uptex4.dvi uptexdir/tests/uptex5.tex \ uptexdir/tests/uptex5.dvi uptexdir/tests/uptex3a.typ \ @@ -3302,6 +3317,7 @@ EXTRA_DIST = PROJECTS cftests cpascal.h help.h w2c/config.h \ uptexdir/tests/lmr1.tex uptexdir/tests/up-lmr1.log \ uptexdir/tests/lmr2.tex uptexdir/tests/up-lmr2.log \ uptexdir/tests/noto1.tex uptexdir/tests/up-noto1.log \ + uptexdir/tests/jchwidow.tex uptexdir/tests/up-jchwidow.log \ $(euptex_web_srcs) $(euptex_ch_srcs) euptexdir/euptex.defines \ euptexdir/COPYRIGHT euptexdir/COPYRIGHT.jis \ euptexdir/ChangeLog euptexdir/EUPTEX.txt $(euptex_tests) \ @@ -3331,22 +3347,23 @@ EXTRA_DIST = PROJECTS cftests cpascal.h help.h w2c/config.h \ euptexdir/tests/eup-ofm.log euptexdir/tests/eup-prim.tex \ euptexdir/tests/eup-prim.log euptexdir/tests/ucs.tex \ euptexdir/tests/ucs-s.log euptexdir/tests/ucs-e.log \ - euptexdir/tests/ucs-u.log hitexdir/ChangeLog $(hitex_web) \ - $(hitex_tests) hitexdir/tests/hello.tex \ - hitexdir/tests/rule.tex pdftexdir/regex/COPYING.LIB \ - pdftexdir/regex/README $(pdftex_ch_srcs) \ - pdftexdir/pdftex.defines pdftexdir/ChangeLog pdftexdir/NEWS \ - pdftexdir/README pdftexdir/change-files.txt $(pdftex_tests) \ - tests/wprob.tex pdftexdir/tests/pdfimage.tex tests/1-4.jpg \ - tests/B.pdf tests/basic.tex tests/lily-ledger-broken.png \ - tests/expanded.tex tests/expanded.txt tests/cnfline.tex \ - tests/partoken-ok.tex tests/partoken-xfail.tex \ - $(ttf2afm_tests) pdftexdir/tests/postV3.afm \ - pdftexdir/tests/postV3.ttf pdftexdir/tests/postV7.afm \ - pdftexdir/tests/postV7.ttf $(pdftosrc_tests) \ - pdftexdir/tests/test-13.pdf pdftexdir/tests/test-13.xref \ - pdftexdir/tests/test-15.pdf pdftexdir/tests/test-15.xref \ - $(libluasocket_sources) luatexdir/luasocket/src/ftp_lua.c \ + euptexdir/tests/ucs-u.log euptexdir/tests/eup-jchwidow.log \ + hitexdir/ChangeLog $(hitex_web) $(hitex_tests) \ + hitexdir/tests/hello.tex hitexdir/tests/rule.tex \ + pdftexdir/regex/COPYING.LIB pdftexdir/regex/README \ + $(pdftex_ch_srcs) pdftexdir/pdftex.defines pdftexdir/ChangeLog \ + pdftexdir/NEWS pdftexdir/README pdftexdir/change-files.txt \ + $(pdftex_tests) tests/wprob.tex pdftexdir/tests/pdfimage.tex \ + tests/1-4.jpg tests/B.pdf tests/basic.tex \ + tests/lily-ledger-broken.png tests/expanded.tex \ + tests/expanded.txt tests/cnfline.tex tests/partoken-ok.tex \ + tests/partoken-xfail.tex $(ttf2afm_tests) \ + pdftexdir/tests/postV3.afm pdftexdir/tests/postV3.ttf \ + pdftexdir/tests/postV7.afm pdftexdir/tests/postV7.ttf \ + $(pdftosrc_tests) pdftexdir/tests/test-13.pdf \ + pdftexdir/tests/test-13.xref pdftexdir/tests/test-15.pdf \ + pdftexdir/tests/test-15.xref $(libluasocket_sources) \ + luatexdir/luasocket/src/ftp_lua.c \ luatexdir/luasocket/src/headers_lua.c \ luatexdir/luasocket/src/http_lua.c \ luatexdir/luasocket/src/ltn12_lua.c \ @@ -3526,9 +3543,11 @@ EXTRA_DIST = PROJECTS cftests cpascal.h help.h w2c/config.h \ luatexdir/luaharfbuzz/luaharfbuzz-scm-1.rockspec \ luatexdir/luaharfbuzz/Makefile luatexdir/luaharfbuzz/README.md \ luatexdir/luaharfbuzz/README-win.md \ - luatexdir/luaharfbuzz/THANKS $(xetex_web_srcs) \ - $(xetex_ch_srcs) xetexdir/xetex.defines xetexdir/ChangeLog \ - xetexdir/COPYING xetexdir/NEWS xetexdir/image/README \ + luatexdir/luaharfbuzz/THANKS texprofdir/ChangeLog \ + $(texprof_web) $(texprofile_web) $(texprof_tests) \ + texprofdir/tests/hello.tex $(xetex_web_srcs) $(xetex_ch_srcs) \ + xetexdir/xetex.defines xetexdir/ChangeLog xetexdir/COPYING \ + xetexdir/NEWS xetexdir/image/README \ xetexdir/unicode-char-prep.pl xetexdir/xewebmac.tex \ $(xetex_tests) xetexdir/tests/bug73.log \ xetexdir/tests/bug73.tex xetexdir/tests/filedump.log \ @@ -3645,7 +3664,7 @@ DISTCLEANFILES = CXXLD.sh tangle.c tangle.h tangle.p tangle-web2c \ ptests/xcmr10.pl ptests/xsample*.typ ptests/x*min10.* \ ptests/xchcode*.* ptests/xskipjfmp.* ptrip.diffs p-ctrlsym.log \ p-ctrlsym.out p-ctrlsym.tex p-endline*.* p-jctrlsym*.* \ - p-chartoken.* p-lineend.* p-pknj-*.* p-ucs*.* \ + p-chartoken.* p-lineend.* p-pknj-*.* p-ucs*.* p-jchwidow*.* \ $(nodist_uptex_SOURCES) uptex.web uptex.ch uptex-web2c uptex.p \ uptex.pool uptex-tangle $(upweb_programs:=.c) \ $(upweb_programs:=.h) $(upweb_programs:=.p) \ @@ -3658,13 +3677,14 @@ DISTCLEANFILES = CXXLD.sh tangle.c tangle.h tangle.p tangle-web2c \ uptests/x*min10.* uptests/xchcode*.* uptests/xtestnewu*.* \ uptests/xuparse.* uptests/yuparse.* uptests/ygkhuge*.* \ uptests/ygk256*.* uptests/xskipjfmp.* uptrip.diffs up-ofm.* \ - up-prim.* up-lmr*.* up-noto*.* $(nodist_euptex_SOURCES) \ - euptex.web euptex.ch euptex-web2c euptex.p euptex.pool \ - euptex-tangle euptrip.diffs pdfprimitive-euptex.* \ - eup-ctrlsym.log eup-ctrlsym.out eup-ctrlsym.tex eup-endline*.* \ - eup-jctrlsym*.* eup-pknj-*.* eup-postpena*.* eup-free_*.* \ - eup-inhibitglue*.* eup-kinsoku*.* eup-ofm.* eup-prim.* \ - eup-ucs*.* $(nodist_hitex_SOURCES) $(nodist_hishrink_SOURCES) \ + up-prim.* up-lmr*.* up-noto*.* up-jchwidow.* \ + $(nodist_euptex_SOURCES) euptex.web euptex.ch euptex-web2c \ + euptex.p euptex.pool euptex-tangle euptrip.diffs \ + pdfprimitive-euptex.* eup-ctrlsym.log eup-ctrlsym.out \ + eup-ctrlsym.tex eup-endline*.* eup-jctrlsym*.* eup-pknj-*.* \ + eup-postpena*.* eup-free_*.* eup-inhibitglue*.* eup-kinsoku*.* \ + eup-ofm.* eup-prim.* eup-ucs*.* eup-jchwidow.* \ + $(nodist_hitex_SOURCES) $(nodist_hishrink_SOURCES) \ $(nodist_histretch_SOURCES) hiformat-tangle hitex-tangle \ hello.log rule.log $(nodist_pdftex_SOURCES) pdftex-final.ch \ pdftex-web2c pdftex.p pdftex.pool pdftex-tangle pwprob.log \ @@ -3672,52 +3692,53 @@ DISTCLEANFILES = CXXLD.sh tangle.c tangle.h tangle.p tangle-web2c \ cnfline.log partoken-ok.log partoken-xfail.log pdftests/fn*.* \ postV3.afm postV7.afm test-13.pdf test-13.xref test-15.pdf \ test-15.xref $(nodist_libluatex_sources) luaimage.* \ - luajitimage.* $(nodist_xetex_SOURCES) xetex.web xetex-final.ch \ - xetex-web2c xetex.p xetex.pool xetex-tangle bug73.fmt \ - bug73.log bug73.out bug73.tex filedump.log filedump.out \ - filedump.tex xe-ctrlsym.fmt xe-ctrlsym.log xe-ctrlsym.out \ - xe-ctrlsym.tex xetests/fn*.* $(omegaware_programs:=.c) \ - $(omegaware_programs:=.h) $(omegaware_programs:=.p) \ - $(omegaware_programs:=-web2c) ofm2opl.web opl2ofm.web \ - ovf2ovp.web ovp2ovf.web omegaware/bad*.* \ - omegaware/tests/charwdr.* omegaware/tests/charwdv.* \ - omegaware/tests/xcheck* omegaware/tests/xlevel1.* \ - omegaware/tests/xlig*.* ofont*vf omegaware/tests/xpagenum.* \ - omegaware/tests/xofont* omegaware/tests/Cherokee.tfm \ - omegaware/tests/OCherokee.ofm omegaware/tests/OCherokee.opl \ - omegaware/tests/OCherokee.ovf omegaware/tests/xCherokee.* \ - omegaware/tests/xOCherokee.* ocftest.* omegaware/tests/xinbmp* \ - omegaware/tests/xoverbmp* omegaware/tests/xrealnum.* \ - omegaware/tests/xrepeated.* omegaware/tests/sample*.ofm \ - omegaware/tests/sample*.ovf omegaware/tests/sample1-h.opl \ - omegaware/tests/xsample*.out omegaware/tests/shortend.* \ - omegaware/tests/specialhex.ofm omegaware/tests/specialhex.opl \ - omegaware/tests/specialhex.ovf omegaware/tests/xspecialhex.* \ - omegaware/tests/yrepeat* omegaware/tests/*yarabic* \ - $(nodist_aleph_SOURCES) aleph.web aleph.ch aleph-web2c aleph.p \ - aleph.pool aleph-tangle al-ofm.* al-lmr*.* + luajitimage.* $(nodist_texprof_SOURCES) texprofile-tangle \ + texprof-tangle hello.log $(nodist_xetex_SOURCES) xetex.web \ + xetex-final.ch xetex-web2c xetex.p xetex.pool xetex-tangle \ + bug73.fmt bug73.log bug73.out bug73.tex filedump.log \ + filedump.out filedump.tex xe-ctrlsym.fmt xe-ctrlsym.log \ + xe-ctrlsym.out xe-ctrlsym.tex xetests/fn*.* \ + $(omegaware_programs:=.c) $(omegaware_programs:=.h) \ + $(omegaware_programs:=.p) $(omegaware_programs:=-web2c) \ + ofm2opl.web opl2ofm.web ovf2ovp.web ovp2ovf.web \ + omegaware/bad*.* omegaware/tests/charwdr.* \ + omegaware/tests/charwdv.* omegaware/tests/xcheck* \ + omegaware/tests/xlevel1.* omegaware/tests/xlig*.* ofont*vf \ + omegaware/tests/xpagenum.* omegaware/tests/xofont* \ + omegaware/tests/Cherokee.tfm omegaware/tests/OCherokee.ofm \ + omegaware/tests/OCherokee.opl omegaware/tests/OCherokee.ovf \ + omegaware/tests/xCherokee.* omegaware/tests/xOCherokee.* \ + ocftest.* omegaware/tests/xinbmp* omegaware/tests/xoverbmp* \ + omegaware/tests/xrealnum.* omegaware/tests/xrepeated.* \ + omegaware/tests/sample*.ofm omegaware/tests/sample*.ovf \ + omegaware/tests/sample1-h.opl omegaware/tests/xsample*.out \ + omegaware/tests/shortend.* omegaware/tests/specialhex.ofm \ + omegaware/tests/specialhex.opl omegaware/tests/specialhex.ovf \ + omegaware/tests/xspecialhex.* omegaware/tests/yrepeat* \ + omegaware/tests/*yarabic* $(nodist_aleph_SOURCES) aleph.web \ + aleph.ch aleph-web2c aleph.p aleph.pool aleph-tangle al-ofm.* \ + al-lmr*.* CLEANFILES = $(EXTRA_PROGRAMS) $(EXTRA_LIBRARIES) $(EXTRA_LTLIBRARIES) TRIPTRAP_CLEAN = $(am__append_8) $(am__append_18) $(am__append_27) \ $(am__append_36) $(am__append_44) $(am__append_60) \ - $(am__append_64) $(am__append_70) $(am__append_78) + $(am__append_64) $(am__append_71) $(am__append_79) TRIPTRAP = $(am__append_7) $(am__append_17) $(am__append_26) \ $(am__append_35) $(am__append_43) $(am__append_59) \ - $(am__append_63) $(am__append_69) $(am__append_77) + $(am__append_63) $(am__append_70) $(am__append_78) bin_links = $(am__append_5) $(am__append_14) $(am__append_15) \ $(am__append_24) $(am__append_33) $(am__append_41) \ - $(am__append_49) $(am__append_54) upbibtex$(EXEEXT):pbibtex \ - updvitype$(EXEEXT):pdvitype uppltotf$(EXEEXT):ppltotf \ - uptftopl$(EXEEXT):ptftopl $(am__append_73) $(am__append_74) \ - $(am__append_75) $(am__append_89) $(am__append_94) \ - $(am__append_99) $(am__append_104) + $(am__append_49) $(am__append_54) $(am__append_68) \ + $(am__append_74) $(am__append_75) $(am__append_76) \ + $(am__append_90) $(am__append_95) $(am__append_100) \ + $(am__append_105) install_exe_links = $(am__append_12) $(am__append_22) $(am__append_31) \ $(am__append_39) $(am__append_47) $(am__append_52) \ - $(am__append_87) $(am__append_92) $(am__append_97) \ - $(am__append_102) + $(am__append_88) $(am__append_93) $(am__append_98) \ + $(am__append_103) uninstall_exe_links = $(am__append_13) $(am__append_23) \ $(am__append_32) $(am__append_40) $(am__append_48) \ - $(am__append_53) $(am__append_88) $(am__append_93) \ - $(am__append_98) $(am__append_103) + $(am__append_53) $(am__append_89) $(am__append_94) \ + $(am__append_99) $(am__append_104) NEVER_DIST = `find . $(NEVER_NAMES)` cwebdir/cweave.log \ cwebdir/cweave.trs cwebdir/ctwill.log cwebdir/ctwill.trs \ cwebdir/refsort.log cwebdir/refsort.trs cwebdir/twinx.log \ @@ -3894,18 +3915,18 @@ tie_CPPFLAGS = $(AM_CPPFLAGS) -DNOT_WEB2C initex_CPPFLAGS = -DEXEPROG=\"tex.exe\" nodist_initex_SOURCES = callexe.c initex_LDADD = -tex_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_127) +tex_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_130) # With --enable-ipc, TeX may need to link with -lsocket. -tex_LDADD = $(LDADD) $(ipc_socketlibs) $(am__append_128) +tex_LDADD = $(LDADD) $(ipc_socketlibs) $(am__append_131) # TeX C sources tex_c_h = texini.c tex0.c texcoerce.h texd.h nodist_tex_SOURCES = $(tex_c_h) tex-pool.c -dist_tex_SOURCES = texextra.c $(am__append_130) +dist_tex_SOURCES = texextra.c $(am__append_133) # We must create texd.h before building the tex_OBJECTS. -tex_prereq = texd.h $(am__append_129) +tex_prereq = texd.h $(am__append_132) tex_ch_srcs = \ tex.web \ tex.ch \ @@ -4405,21 +4426,21 @@ libmplib_web = mplibdir/mp.w mplibdir/psout.w mplibdir/svgout.w \ mplibdir/pngout.w mplibdir/mpmath.w mplibdir/mpmathbinary.w \ mplibdir/mpmathinterval.w mplibdir/mpmathdecimal.w \ mplibdir/mpmathdouble.w mplibdir/mpstrings.w mplibdir/tfmin.w -etex_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_INCLUDES) $(am__append_131) +etex_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_INCLUDES) $(am__append_134) # With --enable-ipc, e-TeX may need to link with -lsocket. -etex_LDADD = $(LDADD) $(ZLIB_LIBS) $(ipc_socketlibs) $(am__append_132) +etex_LDADD = $(LDADD) $(ZLIB_LIBS) $(ipc_socketlibs) $(am__append_135) etex_DEPENDENCIES = $(ZLIB_DEPEND) # e-TeX C sources etex_c_h = etexini.c etex0.c etexcoerce.h etexd.h nodist_etex_SOURCES = $(etex_c_h) etex-pool.c dist_etex_SOURCES = etexdir/etexextra.c etexdir/etexextra.h \ - etexdir/etex_version.h $(am__append_134) + etexdir/etex_version.h $(am__append_137) # We must create etexd.h and etexdir/etex_version.h before building the # etex_OBJECTS. -etex_prereq = etexd.h etexdir/etex_version.h $(am__append_133) +etex_prereq = etexd.h etexdir/etex_version.h $(am__append_136) etex_web_srcs = \ tex.web \ etexdir/etex.ch @@ -4487,7 +4508,7 @@ ptex_tests = \ ptexdir/wcfname.test \ ptexdir/ptex-ctrlsym.test \ ptexdir/ptex-prntknj.test \ - ptexdir/ptex-ucs.test + ptexdir/ptex-ucs.test ptexdir/ptex-widow.test uptex_cppflags = $(PTEXENC_INCLUDES) $(AM_CPPFLAGS) $(ZLIB_INCLUDES) uptex_ldadd = libukanji.a $(pproglib) $(PTEXENC_LIBS) $(LDADD) $(ZLIB_LIBS) @@ -4552,7 +4573,8 @@ uptex_tests = \ uptexdir/upkcat.test \ uptexdir/wcfname.test uptexdir/wcfname0.test \ uptexdir/uptex-ofm.test uptexdir/uptex-prim.test \ - uptexdir/uptex-lmr.test uptexdir/uptex-noto.test + uptexdir/uptex-lmr.test uptexdir/uptex-noto.test \ + uptexdir/uptex-widow.test # uppPLtoTF/upTFtoPL upweb_tests = uptexdir/upbibtex.test uptexdir/updvitype.test \ @@ -4564,23 +4586,23 @@ upweb_tests = uptexdir/upbibtex.test uptexdir/updvitype.test \ uptexdir/newjfm.test uptexdir/uparse.test uptexdir/gkhuge.test \ uptexdir/gk256.test euptex_CPPFLAGS = $(PTEXENC_INCLUDES) $(AM_CPPFLAGS) \ - -I$(srcdir)/libmd5 $(ZLIB_INCLUDES) $(am__append_135) + -I$(srcdir)/libmd5 $(ZLIB_INCLUDES) $(am__append_138) # With --enable-ipc, e-upTeX may need to link with -lsocket. euptex_LDADD = libukanji.a $(pproglib) $(PTEXENC_LIBS) $(LDADD) \ - $(ipc_socketlibs) libmd5.a $(ZLIB_LIBS) $(am__append_136) + $(ipc_socketlibs) libmd5.a $(ZLIB_LIBS) $(am__append_139) euptex_DEPENDENCIES = libukanji.a $(pproglib) $(PTEXENC_DEPEND) $(default_dependencies) libmd5.a $(ZLIB_DEPEND) # e-upTeX C sources euptex_c_h = euptexini.c euptex0.c euptexcoerce.h euptexd.h nodist_euptex_SOURCES = $(euptex_c_h) euptex-pool.c dist_euptex_SOURCES = euptexdir/euptexextra.c euptexdir/euptexextra.h \ - $(am__append_138) + $(am__append_141) # We must create euptexd.h and [eu]ptexdir/[eu]ptex_version.h before building the euptex_OBJECTS. euptex_prereq = euptexd.h etexdir/etex_version.h \ uptexdir/ptex_version.h euptexdir/eptex_version.h \ - uptexdir/uptex_version.h $(am__append_137) + uptexdir/uptex_version.h $(am__append_140) euptex_web_srcs = \ tex.web \ etexdir/etex.ch \ @@ -4620,7 +4642,7 @@ euptex_tests = \ euptexdir/euptex-prntknj.test \ euptexdir/euptex-kinsoku.test \ euptexdir/euptex-ofm.test euptexdir/euptex-prim.test \ - euptexdir/euptex-ucs.test + euptexdir/euptex-ucs.test euptexdir/euptex-widow.test # At the moment, these are the only man pages handled in the @@ -4629,6 +4651,9 @@ euptex_tests = \ @HITEX_TRUE@man1_MANS = hitexdir/man/hishrink.man hitexdir/man/histretch.man \ @HITEX_TRUE@ hitexdir/man/hitex.man + +# See hitex.am for comments about handling man. +@TEXPROF_TRUE@man1_MANS = texprofdir/man/texprof.man texprofdir/man/texprofile.man hitex_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_INCLUDES) -I$(srcdir)/libmd5 \ -DINIT -DSTAT -DWEB2CVERSION="\"${WEB2CVERSION}\"" # -DDEBUG drops into an interactive debugging session. @@ -4701,7 +4726,7 @@ libpdftex_a_SOURCES = pdftexdir/avl.c pdftexdir/avl.h \ pdftexdir/writejbig2.c pdftexdir/writejpg.c \ pdftexdir/writepng.c pdftexdir/writet1.c pdftexdir/writet3.c \ pdftexdir/writettf.c pdftexdir/writettf.h pdftexdir/writezip.c \ - $(am__append_82) + $(am__append_83) @MINGW32_TRUE@REGEX_INCLUDES = -I$(srcdir)/pdftexdir/regex EXTRA_libpdftex_a_SOURCES = pdftexdir/macnames.c \ pdftexdir/regex/regcomp.c pdftexdir/regex/regex_internal.c \ @@ -4717,7 +4742,7 @@ pdftex_dependencies = $(proglib) $(KPATHSEA_DEPEND) $(LIBPNG_DEPEND) \ # Force Automake to use CXXLD for linking nodist_EXTRA_pdftex_SOURCES = dummy.cxx pdf_tangle = WEBINPUTS=.:$(srcdir)/pdftexdir AM_V_P=$(AM_V_P) $(SHELL) ./tangle-sh $@ $(TANGLE) -pdftex_CPPFLAGS = $(pdftex_cppflags) $(am__append_139) +pdftex_CPPFLAGS = $(pdftex_cppflags) $(am__append_142) pdftex_CXXFLAGS = $(WARNING_CXXFLAGS) # With --enable-ipc, pdfTeX may need to link with -lsocket. @@ -4730,7 +4755,7 @@ pdftex_c_h = pdftexini.c pdftex0.c pdftexcoerce.h pdftexd.h nodist_pdftex_SOURCES = $(pdftex_c_h) pdftex-pool.c dist_pdftex_SOURCES = pdftexdir/pdftexextra.c pdftexdir/pdftexextra.h \ pdftexdir/pdftex_version.h pdftexdir/etex_version.h \ - $(am__append_140) + $(am__append_143) pdftex_ch_srcs = \ pdftexdir/pdftex.web \ pdftexdir/tex.ch0 \ @@ -5407,6 +5432,29 @@ libluaharfbuzz_a_SOURCES = \ luatexdir/luaharfbuzz/src/luaharfbuzz/variation.c libluajitharfbuzz_a_SOURCES = $(libluaharfbuzz_a_SOURCES) +texprof_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/libmd5 -DINIT -DSTAT \ + -DWEB2CVERSION="\"${WEB2CVERSION}\"" +# -DDEBUG drops into an interactive debugging session. +texprof_LDADD = $(KPATHSEA_LIBS) libmd5.a +texprof_DEPENDENCIES = $(KPATHSEA_DEPEND) libmd5.a +# +texprofile_CPPFLAGS = $(AM_CPPFLAGS) +texprofile_LDADD = +texprofile_DEPENDENCIES = +# +# TeXprof CWEB sources +texprof_web = texprofdir/texprof.w +texprofile_web = texprofdir/texprofile.w + +# Creating several files: need stamp file and two rules with identical recipes +texprof_ctangle_sh = CWEBINPUTS=$(srcdir)/texprofdir AM_V_P=$(AM_V_P) $(SHELL) ./tangle-sh $@ $(CTANGLE) + +# For each cweb (.w) source file, list the files generated. +texprof_c = texprof.c +texprofile_c = texprofile.c + +# +texprof_tests = texprofdir/tests/hello.test # Force Automake to use CXXLD for linking nodist_EXTRA_xetex_SOURCES = dummy.cxx @@ -5415,18 +5463,18 @@ libxetex = libxetex.a xetex_cppflags = $(AM_CPPFLAGS) -I$(srcdir)/xetexdir $(ICU_INCLUDES) \ $(FREETYPE2_INCLUDES) $(TECKIT_INCLUDES) $(HARFBUZZ_INCLUDES) \ $(GRAPHITE2_INCLUDES) $(LIBPNG_INCLUDES) $(ZLIB_INCLUDES) \ - $(PPLIB_INCLUDES) -I$(srcdir)/libmd5 $(am__append_110) \ - $(am__append_112) + $(PPLIB_INCLUDES) -I$(srcdir)/libmd5 $(am__append_113) \ + $(am__append_115) xetex_ldadd = $(libxetex) $(HARFBUZZ_LIBS) $(GRAPHITE2_LIBS) \ $(ICU_LIBS) $(ICU_LIBS_EXTRA) $(TECKIT_LIBS) $(LIBPNG_LIBS) \ $(FREETYPE2_LIBS) $(PPLIB_LIBS) $(ZLIB_LIBS) libmd5.a \ - $(am__append_113) + $(am__append_116) xetex_dependencies = $(proglib) $(KPATHSEA_DEPEND) $(ICU_DEPEND) \ $(TECKIT_DEPEND) $(HARFBUZZ_DEPEND) $(GRAPHITE2_DEPEND) \ $(LIBPNG_DEPEND) $(FREETYPE2_DEPEND) $(ZLIB_DEPEND) \ $(PPLIB_DEPEND) libmd5.a @XETEX_MACOSX_TRUE@xetex_LDFLAGS = -framework ApplicationServices -framework Cocoa -xetex_CPPFLAGS = $(xetex_cppflags) $(am__append_141) +xetex_CPPFLAGS = $(xetex_cppflags) $(am__append_144) xetex_CFLAGS = $(WARNING_CFLAGS) xetex_CXXFLAGS = # $(WARNING_CXXFLAGS) xetex_LDADD = $(xetex_ldadd) $(LDADD) $(ipc_socketlibs) @@ -5435,7 +5483,7 @@ xetex_c_h = xetexini.c xetex0.c xetexcoerce.h xetexd.h nodist_xetex_SOURCES = $(xetex_c_h) xetex-pool.c dist_xetex_SOURCES = xetexdir/xetexextra.c xetexdir/xetexextra.h \ xetexdir/etex_version.h xetexdir/xetex_version.h \ - $(am__append_142) + $(am__append_145) xetex_ch_srcs = \ xetexdir/xetex.web \ xetexdir/tex.ch0 \ @@ -5469,7 +5517,7 @@ libxetex_a_SOURCES = xetexdir/XeTeXFontInst.cpp \ xetexdir/image/jpegimage.h xetexdir/image/mfileio.c \ xetexdir/image/mfileio.h xetexdir/image/numbers.c \ xetexdir/image/numbers.h xetexdir/image/pngimage.c \ - xetexdir/image/pngimage.h $(am__append_114) $(am__append_115) + xetexdir/image/pngimage.h $(am__append_117) $(am__append_118) # We must create xetexd.h etc. before building the libxetex_a_OBJECTS. libxetex_prereq = xetexd.h $(xetex_dependencies) @@ -5578,13 +5626,13 @@ aleph_tests = alephdir/aleph.test \ synctex_SOURCES = \ synctexdir/synctex_main.c -synctex_CPPFLAGS = -I$(srcdir)/synctexdir $(am__append_124) -synctex_LDADD = $(libsynctex) $(ZLIB_LIBS) $(am__append_125) +synctex_CPPFLAGS = -I$(srcdir)/synctexdir $(am__append_127) +synctex_LDADD = $(libsynctex) $(ZLIB_LIBS) $(am__append_128) libsynctex = $(LTLIBSYNCTEX) $(LIBSYNCTEX) libsynctex_la_CPPFLAGS = -I$(srcdir)/synctexdir $(ZLIB_INCLUDES) -DSYNCTEX_USE_LOCAL_HEADER libsynctex_a_CPPFLAGS = $(libsynctex_la_CPPFLAGS) libsynctex_la_LDFLAGS = -rpath @libdir@ -bindir @bindir@ -no-undefined -version-info $(SYNCTEX_LT_VERSINFO) -libsynctex_la_LIBADD = $(ZLIB_LIBS) $(am__append_126) +libsynctex_la_LIBADD = $(ZLIB_LIBS) $(am__append_129) libsynctex_la_SOURCES = \ synctexdir/synctex_parser.c \ synctexdir/synctex_parser_local.h \ @@ -8308,6 +8356,14 @@ tex$(EXEEXT): $(tex_OBJECTS) $(tex_DEPENDENCIES) $(EXTRA_tex_DEPENDENCIES) @rm -f tex$(EXEEXT) $(AM_V_CCLD)$(LINK) $(tex_OBJECTS) $(tex_LDADD) $(LIBS) +texprof$(EXEEXT): $(texprof_OBJECTS) $(texprof_DEPENDENCIES) $(EXTRA_texprof_DEPENDENCIES) + @rm -f texprof$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(texprof_OBJECTS) $(texprof_LDADD) $(LIBS) + +texprofile$(EXEEXT): $(texprofile_OBJECTS) $(texprofile_DEPENDENCIES) $(EXTRA_texprofile_DEPENDENCIES) + @rm -f texprofile$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(texprofile_OBJECTS) $(texprofile_LDADD) $(LIBS) + tftopl$(EXEEXT): $(tftopl_OBJECTS) $(tftopl_DEPENDENCIES) $(EXTRA_tftopl_DEPENDENCIES) @rm -f tftopl$(EXEEXT) $(AM_V_CCLD)$(LINK) $(tftopl_OBJECTS) $(tftopl_LDADD) $(LIBS) @@ -8617,6 +8673,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tex-tex0.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tex-texextra.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tex-texini.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/texprof-texprof.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/texprofile-texprofile.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftopl.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tie-tie.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/twill.Po@am__quote@ # am--include-marker @@ -18231,6 +18289,34 @@ tex-tex-pool.obj: tex-pool.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tex_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tex-tex-pool.obj `if test -f 'tex-pool.c'; then $(CYGPATH_W) 'tex-pool.c'; else $(CYGPATH_W) '$(srcdir)/tex-pool.c'; fi` +texprof-texprof.o: texprof.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(texprof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT texprof-texprof.o -MD -MP -MF $(DEPDIR)/texprof-texprof.Tpo -c -o texprof-texprof.o `test -f 'texprof.c' || echo '$(srcdir)/'`texprof.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/texprof-texprof.Tpo $(DEPDIR)/texprof-texprof.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='texprof.c' object='texprof-texprof.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) $(texprof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o texprof-texprof.o `test -f 'texprof.c' || echo '$(srcdir)/'`texprof.c + +texprof-texprof.obj: texprof.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(texprof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT texprof-texprof.obj -MD -MP -MF $(DEPDIR)/texprof-texprof.Tpo -c -o texprof-texprof.obj `if test -f 'texprof.c'; then $(CYGPATH_W) 'texprof.c'; else $(CYGPATH_W) '$(srcdir)/texprof.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/texprof-texprof.Tpo $(DEPDIR)/texprof-texprof.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='texprof.c' object='texprof-texprof.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) $(texprof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o texprof-texprof.obj `if test -f 'texprof.c'; then $(CYGPATH_W) 'texprof.c'; else $(CYGPATH_W) '$(srcdir)/texprof.c'; fi` + +texprofile-texprofile.o: texprofile.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(texprofile_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT texprofile-texprofile.o -MD -MP -MF $(DEPDIR)/texprofile-texprofile.Tpo -c -o texprofile-texprofile.o `test -f 'texprofile.c' || echo '$(srcdir)/'`texprofile.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/texprofile-texprofile.Tpo $(DEPDIR)/texprofile-texprofile.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='texprofile.c' object='texprofile-texprofile.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) $(texprofile_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o texprofile-texprofile.o `test -f 'texprofile.c' || echo '$(srcdir)/'`texprofile.c + +texprofile-texprofile.obj: texprofile.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(texprofile_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT texprofile-texprofile.obj -MD -MP -MF $(DEPDIR)/texprofile-texprofile.Tpo -c -o texprofile-texprofile.obj `if test -f 'texprofile.c'; then $(CYGPATH_W) 'texprofile.c'; else $(CYGPATH_W) '$(srcdir)/texprofile.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/texprofile-texprofile.Tpo $(DEPDIR)/texprofile-texprofile.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='texprofile.c' object='texprofile-texprofile.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) $(texprofile_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o texprofile-texprofile.obj `if test -f 'texprofile.c'; then $(CYGPATH_W) 'texprofile.c'; else $(CYGPATH_W) '$(srcdir)/texprofile.c'; fi` + tie-tie.o: tie.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tie_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tie-tie.o -MD -MP -MF $(DEPDIR)/tie-tie.Tpo -c -o tie-tie.o `test -f 'tie.c' || echo '$(srcdir)/'`tie.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tie-tie.Tpo $(DEPDIR)/tie-tie.Po @@ -19907,6 +19993,8 @@ distclean: distclean-recursive -rm -f ./$(DEPDIR)/tex-tex0.Po -rm -f ./$(DEPDIR)/tex-texextra.Po -rm -f ./$(DEPDIR)/tex-texini.Po + -rm -f ./$(DEPDIR)/texprof-texprof.Po + -rm -f ./$(DEPDIR)/texprofile-texprofile.Po -rm -f ./$(DEPDIR)/tftopl.Po -rm -f ./$(DEPDIR)/tie-tie.Po -rm -f ./$(DEPDIR)/twill.Po @@ -20683,6 +20771,8 @@ maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/tex-tex0.Po -rm -f ./$(DEPDIR)/tex-texextra.Po -rm -f ./$(DEPDIR)/tex-texini.Po + -rm -f ./$(DEPDIR)/texprof-texprof.Po + -rm -f ./$(DEPDIR)/texprofile-texprofile.Po -rm -f ./$(DEPDIR)/tftopl.Po -rm -f ./$(DEPDIR)/tie-tie.Po -rm -f ./$(DEPDIR)/twill.Po @@ -21749,7 +21839,7 @@ mfluajittrap.diffs: mfluajit$(EXEEXT) gftype$(EXEEXT) tftopl$(EXEEXT) mfluajittrap-clean: rm -rf mfluajittrapdir -$(libmfluajitlpeg_a_OBJECTS): $(LUA_DEPEND) +$(libmfluajitlpeg_a_OBJECTS): $(LUAJIT_DEPEND) .PHONY: install-mpost-links uninstall-mpost-links @WIN32_TRUE@install-mpost-links: call_mpost$(EXEEXT) @@ -21999,7 +22089,7 @@ ptex.ch: tie$(EXEEXT) ptex.web $(ptex_ch_srcs) ptexdir/ptriptest.log: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) ptexdir/pver.log ptexdir/wcfname.log \ ptexdir/ptex-ctrlsym.log ptexdir/ptex-prntknj.log \ - ptexdir/ptex-ucs.log: ptex$(EXEEXT) + ptexdir/ptex-ucs.log ptexdir/ptex-widow.log: ptex$(EXEEXT) ptrip.diffs: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) $(triptrap_diffs) $@ @@ -22073,7 +22163,8 @@ uptexdir/uptriptest.log uptexdir/ptriptest.log: \ uptexdir/upver.log uptexdir/upkcat.log \ uptexdir/wcfname.log uptexdir/wcfname0.log \ uptexdir/uptex-ofm.log uptexdir/uptex-prim.log \ - uptexdir/uptex-lmr.log uptexdir/uptex-noto.log: uptex$(EXEEXT) + uptexdir/uptex-lmr.log uptexdir/uptex-noto.log \ + uptexdir/uptex-widow.log: uptex$(EXEEXT) uptexdir/upbibtex.log: upbibtex$(EXEEXT) uptexdir/updvitype.log: updvitype$(EXEEXT) uptexdir/uppltotf.log: uppltotf$(EXEEXT) @@ -22124,7 +22215,7 @@ euptexdir/eupver.log euptexdir/upkcat.log \ euptexdir/euptex-ctrlsym.log euptexdir/euptex-prntknj.log \ euptexdir/euptex-kinsoku.log \ euptexdir/euptex-ofm.log euptexdir/euptex-prim.log \ - euptexdir/euptex-ucs.log: euptex$(EXEEXT) + euptexdir/euptex-ucs.log euptexdir/euptex-widow.log: euptex$(EXEEXT) euptrip.diffs: euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) $(triptrap_diffs) $@ @@ -22319,6 +22410,23 @@ luatexdir/luajithbtex.log luatexdir/luajithbimage.log: luajithbtex$(EXEEXT) $(libluaharfbuzz_a_OBJECTS): $(LUA_DEPEND) $(libluajitharfbuzz_a_OBJECTS): $(LUAJIT_DEPEND) + +# convenience target to build all the programs here. +@TEXPROF_TRUE@texprofall: texprof texprofile + +$(texprof_c): texprof-tangle +$(texprofile_c): texprofile-tangle + +# +texprof-tangle: ctangle$(EXEEXT) texprofdir/texprof.w tangle-sh + $(texprof_ctangle_sh) texprof + +texprofile-tangle: ctangle$(EXEEXT) texprofdir/texprofile.w tangle-sh + $(texprof_ctangle_sh) texprofile + +texprofdir/tests/hello.log: texprof$(EXEEXT) texprofile$(EXEEXT) + +# (end of texprof.am) $(xetex_OBJECTS): $(xetex_prereq) $(xetex_c_h): xetex-web2c diff --git a/source/texk/web2c/configure b/source/texk/web2c/configure index bb0f957b0..87b324a4b 100755 --- a/source/texk/web2c/configure +++ b/source/texk/web2c/configure @@ -1081,6 +1081,7 @@ with_system_ptexenc with_system_zlib with_zlib_includes with_zlib_libdir +with_system_luajit with_system_libpng with_system_freetype2 with_system_pixman @@ -1850,6 +1851,8 @@ Optional Packages: --with-zlib-includes=DIR zlib headers installed in DIR --with-zlib-libdir=DIR zlib library installed in DIR + --with-system-luajit use installed luajit headers and library (requires + pkg-config) --with-system-libpng use installed libpng headers and library (requires pkg-config) --with-system-freetype2 use installed freetype2 headers and library @@ -24328,7 +24331,8 @@ fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Mac OS X ApplicationServices framework" >&5 +if test "x$enable_xetex" = xyes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Mac OS X ApplicationServices framework" >&5 printf %s "checking for Mac OS X ApplicationServices framework... " >&6; } if test ${kpse_cv_have_ApplicationServices+y} then : @@ -24364,7 +24368,7 @@ printf "%s\n" "#define HAVE_APPLICATIONSERVICES 1" >>confdefs.h fi -if test -n "$ac_tool_prefix"; 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 @@ -24539,7 +24543,7 @@ fi -if test "x$kpse_cv_have_ApplicationServices:$kpse_cv_have_fontconfig" = xno:no + if test "x$kpse_cv_have_ApplicationServices:$kpse_cv_have_fontconfig" = xno:no then : if test "x$enable_xetex" = xyes then : @@ -24553,6 +24557,7 @@ fi enable_xetex=no fi +fi fi if test "x$kpse_cv_have_ApplicationServices" = xyes; then XETEX_MACOSX_TRUE= @@ -29053,8 +29058,22 @@ ${top_builddir}/../../libs/lua52/include/lua.h: echo 'tldbg:KPSE_LUAJIT_FLAGS called.' >&5 ##tldbg _KPSE_LIB_FLAGS: Setup luajit (-ltexluajit) flags. -echo 'tldbg:_KPSE_LIB_FLAGS called: libdir=luajit, libname=texluajit, options=lt tree, tlincl=-IBLD/libs/luajit/include, tllib=BLD/libs/luajit/libtexluajit.la, tlextra=, rebuildsrcdeps=, rebuildblddeps=${top_builddir}/../../libs/luajit/include/luajit.h.' >&5 -##tldbg _KPSE_LIB_FLAGS_TL: luajit (texluajit) lt tree. +echo 'tldbg:_KPSE_LIB_FLAGS called: libdir=luajit, libname=texluajit, options=lt, tlincl=-IBLD/libs/luajit/include, tllib=BLD/libs/luajit/libtexluajit.la, tlextra=, rebuildsrcdeps=, rebuildblddeps=${top_builddir}/../../libs/luajit/include/luajit.h.' >&5 +##tldbg _KPSE_LIB_FLAGS_TL: luajit (texluajit) lt. + +# Check whether --with-system-luajit was given. +if test ${with_system_luajit+y} +then : + withval=$with_system_luajit; +fi +if test "x$with_system_luajit" = xyes; then + if $PKG_CONFIG luajit; then + LUAJIT_INCLUDES=`$PKG_CONFIG luajit --cflags` + LUAJIT_LIBS=`$PKG_CONFIG luajit --libs` +elif test "x$need_luajit:$with_system_luajit" = xyes:yes; then + as_fn_error $? "did not find luajit" "$LINENO" 5 +fi +else LUAJIT_INCLUDES="-I$kpse_BLD/libs/luajit/include" LUAJIT_LIBS="$kpse_BLD/libs/luajit/libtexluajit.la" LUAJIT_DEPEND='${top_builddir}/../../libs/luajit/libtexluajit.la' @@ -29063,6 +29082,7 @@ $(LUAJIT_DEPEND): ${top_builddir}/../../libs/luajit/include/luajit.h cd ${top_builddir}/../../libs/luajit && $(MAKE) $(AM_MAKEFLAGS) rebuild ${top_builddir}/../../libs/luajit/include/luajit.h: cd ${top_builddir}/../../libs/luajit && $(MAKE) $(AM_MAKEFLAGS) rebuild' +fi # # checking for openbsd for additional jit libraries needed, which is the # case for clang; no point in going to the trouble elsewhere since no @@ -29692,9 +29712,10 @@ ${top_builddir}/../../libs/teckit/include/teckit/TECkit_Common.h: fi -# LuaTeX and XeTeX need harfbuzz. +# XeTeX and lua[jit]hbtex need harfbuzz, but not regular luatex[53]. if test "x$enable_xetex" = xyes \ - || test "x$enable_luatex" = xyes || test "x$enable_luatex53" = xyes; then + || test "x$enable_luahbtex" = xyes \ + || test "x$enable_luajithbtex" = xyes; then ##tldbg _KPSE_LIB_FLAGS: Setup graphite2 (-lgraphite2) flags. echo 'tldbg:_KPSE_LIB_FLAGS called: libdir=graphite2, libname=graphite2, options=, tlincl=-IBLD/libs/graphite2/include -DGRAPHITE2_STATIC, tllib=BLD/libs/graphite2/libgraphite2.a, tlextra=, rebuildsrcdeps=, rebuildblddeps=${top_builddir}/../../libs/graphite2/include/graphite2/Font.h.' >&5 ##tldbg _KPSE_LIB_FLAGS_TL: graphite2 (graphite2) . diff --git a/source/texk/web2c/configure.ac b/source/texk/web2c/configure.ac index be437c08c..795c3070b 100644 --- a/source/texk/web2c/configure.ac +++ b/source/texk/web2c/configure.ac @@ -1,4 +1,4 @@ -dnl $Id: configure.ac 71105 2024-04-28 16:42:00Z karl $ +dnl $Id: configure.ac 73540 2025-01-21 15:14:18Z karl $ dnl Process this file with Autoconf to produce a configure script for Web2c. dnl dnl Copyright 2015-2024 Karl Berry <tex-live@tug.org> @@ -156,11 +156,15 @@ AM_CONDITIONAL([USE_DLOPEN], [test "x$ac_cv_header_dlfcn_h" = xyes]) AC_SUBST([lua_socketlibs]) AC_SUBST([ipc_socketlibs]) -KPSE_CHECK_FRAMEWORK([ApplicationServices], [CTFontRef font]) -KPSE_FONTCONFIG_FLAGS -AS_IF([test "x$kpse_cv_have_ApplicationServices:$kpse_cv_have_fontconfig" = xno:no], - [WEB2C_DISABLE([xetex], [neither ApplicationServices framework nor fontconfig library])]) -AM_CONDITIONAL([XETEX_MACOSX], [test "x$kpse_cv_have_ApplicationServices" = xyes]) +if test "x$enable_xetex" = xyes; then + KPSE_CHECK_FRAMEWORK([ApplicationServices], [CTFontRef font]) + KPSE_FONTCONFIG_FLAGS + AS_IF([test "x$kpse_cv_have_ApplicationServices:$kpse_cv_have_fontconfig" = xno:no], + [WEB2C_DISABLE([xetex], + [neither ApplicationServices framework nor fontconfig library])]) +fi +AM_CONDITIONAL([XETEX_MACOSX], + [test "x$kpse_cv_have_ApplicationServices" = xyes]) dnl Generate *TEX and ALEPH conditionals. m4_foreach([Kpse_Prog], [kpse_tex_progs], @@ -279,9 +283,10 @@ KPSE_XPDF_FLAGS KPSE_ZZIPLIB_FLAGS KPSE_TECKIT_FLAGS -# LuaTeX and XeTeX need harfbuzz. +# XeTeX and lua[jit]hbtex need harfbuzz, but not regular luatex[53]. if test "x$enable_xetex" = xyes \ - || test "x$enable_luatex" = xyes || test "x$enable_luatex53" = xyes; then + || test "x$enable_luahbtex" = xyes \ + || test "x$enable_luajithbtex" = xyes; then KPSE_HARFBUZZ_FLAGS fi # end xetex/luatex for harfbuzz diff --git a/source/texk/web2c/ctangleboot.cin b/source/texk/web2c/ctangleboot.cin index 3483628ef..b0118c268 100644 --- a/source/texk/web2c/ctangleboot.cin +++ b/source/texk/web2c/ctangleboot.cin @@ -28,7 +28,7 @@ /*:5*/ #line 67 "cwebdir/ctangle.w" -#define banner "This is CTANGLE, Version 4.12" \ +#define banner "This is CTANGLE, Version 4.12.1" \ \ #define _(s) gettext(s) \ diff --git a/source/texk/web2c/cwebdir/ChangeLog b/source/texk/web2c/cwebdir/ChangeLog index 28e1ea3ba..259cf462d 100644 --- a/source/texk/web2c/cwebdir/ChangeLog +++ b/source/texk/web2c/cwebdir/ChangeLog @@ -1,3 +1,52 @@ +2025-01-15 Andreas Scherer <https://ascherer.github.io> + + * ctwill-mini.ch: Don't mess with /PageLabels in CTWILL output. + +2025-01-14 Andreas Scherer <https://ascherer.github.io> + + * texinputs/pdfctwimac.tex: Switch on PDF outlines. + +2025-01-11 Andreas Scherer <https://ascherer.github.io> + + * ctwill-proofsort: Support multiple definitions of identifiers. + +2025-01-01 Andreas Scherer <https://ascherer.github.io> + + * Makefile, + * comm-{mac,mini,ql,w2c}.ch, + * comm-w2c.h, + * common.h, + * common.w, + * ctang-{bs,pc,ql,vms,w2c,w32}.ch, + * ctangle.c, + * ctangle.w, + * ctwill-w2c.ch, + * cweav-{bs,pc,ql,vms,w2c,w32}.ch, + * cweave.w, + * cwebacromac.tex, + * cwebmac.tex, + * cwebman-w2c.ch, + * cwebman.tex, + * po/cweb-tl.pot, + * po/cweb.pot, + * po/de/cweb-tl.po, + * po/de/cweb.po, + * po/de/web2c-help.po, + * po/it/cweb.po, + * po/web2c-help.pot, + * prod-{cweave,twill}.w, + * prod.w: CWEB 4.12.1 release. + +2024-12-31 Andreas Scherer <https://ascherer.github.io> + + * texinputs/pdfctwimac.tex: Append 'Names of the sections'. + +2024-12-27 Andreas Scherer <https://ascherer.github.io> + + * ctwill-mini.ch, + * ctwimac.tex, + * texinputs/pdfctwimac.tex: Rename page dimensions. + 2024-11-20 Andreas Scherer <https://ascherer.github.io> * cwebman-w2c.ch: Link to extended WEB manual in TeX Live. diff --git a/source/texk/web2c/cwebdir/Makefile b/source/texk/web2c/cwebdir/Makefile index a11936f98..af72873bf 100644 --- a/source/texk/web2c/cwebdir/Makefile +++ b/source/texk/web2c/cwebdir/Makefile @@ -1,6 +1,6 @@ # This file is part of CWEB. # It is distributed WITHOUT ANY WARRANTY, express or implied. -# Version 4.12 --- August 2024 +# Version 4.12.1 --- January 2025 # Copyright (C) 1987,1990,1993,2000 Silvio Levy and Donald E. Knuth @@ -216,6 +216,6 @@ tarball: tar zcvhf /tmp/cweb.tgz $(ALL) examples ctan: - git archive -o ~/cweb-4.12.zip --prefix=cweb/ cweb-4.12 + git archive -o ~/cweb-4.12.1.zip --prefix=cweb/ cweb-4.12.1 make PDF=pdf usermanual - cd ..; zip -r ~/cweb-4.12.zip cweb/cwebman.pdf + cd ..; zip -r ~/cweb-4.12.1.zip cweb/cwebman.pdf diff --git a/source/texk/web2c/cwebdir/comm-mac.ch b/source/texk/web2c/cwebdir/comm-mac.ch index 1540a9a4e..50b562739 100644 --- a/source/texk/web2c/cwebdir/comm-mac.ch +++ b/source/texk/web2c/cwebdir/comm-mac.ch @@ -4,9 +4,9 @@ No changes to CTANGLE or CWEAVE are needed. (Contributed 13 Oct 2000 by AndPio@aol.com; slightly edited by Don Knuth) @x in limbo, change the title page document to specify Mac version - \centerline{(Version 4.12)} + \centerline{(Version 4.12.1)} @y - \centerline{(Version 4.12 for MacOS)} + \centerline{(Version 4.12.1 for MacOS)} @z @x section 23: Make input_ln accept \n, \r, \n\r, or \r\n as line endings diff --git a/source/texk/web2c/cwebdir/comm-ql.ch b/source/texk/web2c/cwebdir/comm-ql.ch index 8510fc093..31fe2966e 100644 --- a/source/texk/web2c/cwebdir/comm-ql.ch +++ b/source/texk/web2c/cwebdir/comm-ql.ch @@ -10,24 +10,24 @@ ex <dev_>cc;'-v -h -c -=500000 -DCWEBINPUTS=flp2_ common_c' @x \def\v{\char'174} % vertical (|) in typewriter font -\def\title{Common code for CTANGLE and CWEAVE (Version 4.12)} +\def\title{Common code for CTANGLE and CWEAVE (Version 4.12.1)} \def\topofcontents{\null\vfill \centerline{\titlefont Common code for {\ttitlefont CTANGLE} and {\ttitlefont CWEAVE}} \vskip 15pt - \centerline{(Version 4.12)} + \centerline{(Version 4.12.1)} \vfill} \def\botofcontents{\vfill \noindent @y \def\v{\char'174} % vertical (|) in typewriter font -\def\title{Common code for CTANGLE and CWEAVE (QL Version 4.12)} +\def\title{Common code for CTANGLE and CWEAVE (QL Version 4.12.1)} \def\topofcontents{\null\vfill \centerline{\titlefont Common code for {\ttitlefont CTANGLE} and {\ttitlefont CWEAVE}} \vskip 15pt - \centerline{(Version 4.12)} + \centerline{(Version 4.12.1)} \vfill} \def\botofcontents{\vfill \noindent diff --git a/source/texk/web2c/cwebdir/comm-w2c.ch b/source/texk/web2c/cwebdir/comm-w2c.ch index f0d5b6a80..41507b2f5 100644 --- a/source/texk/web2c/cwebdir/comm-w2c.ch +++ b/source/texk/web2c/cwebdir/comm-w2c.ch @@ -17,16 +17,16 @@ @q Please send comments, suggestions, etc. to tex-k@@tug.org. @> @x [0.0] l.25 -\def\title{Common code for CTANGLE and CWEAVE (Version 4.12)} +\def\title{Common code for CTANGLE and CWEAVE (Version 4.12.1)} @y \def\Kpathsea/{{\mc KPATHSEA\spacefactor1000}} \ifacro\sanitizecommand\Kpathsea{KPATHSEA}\fi -\def\title{Common code for CTANGLE and CWEAVE (4.12 [\TeX~Live])} +\def\title{Common code for CTANGLE and CWEAVE (4.12.1 [\TeX~Live])} @z @x [0.0] l.30 - \centerline{(Version 4.12)} + \centerline{(Version 4.12.1)} @y - \centerline{(Version 4.12 [\TeX~Live])} + \centerline{(Version 4.12.1 [\TeX~Live])} @z @x [0.0] l.32 diff --git a/source/texk/web2c/cwebdir/comm-w2c.h b/source/texk/web2c/cwebdir/comm-w2c.h index 154371c4f..908855471 100644 --- a/source/texk/web2c/cwebdir/comm-w2c.h +++ b/source/texk/web2c/cwebdir/comm-w2c.h @@ -2,7 +2,7 @@ % This program by Silvio Levy and Donald E. Knuth % is based on a program by Knuth. % It is distributed WITHOUT ANY WARRANTY, express or implied. -% Version 4.12 --- August 2024 (works also with later versions) +% Version 4.12.1 --- January 2025 (works also with later versions) % Copyright (C) 1987,1990,1993 Silvio Levy and Donald E. Knuth diff --git a/source/texk/web2c/cwebdir/common.h b/source/texk/web2c/cwebdir/common.h index 2e02af934..30b00cb78 100644 --- a/source/texk/web2c/cwebdir/common.h +++ b/source/texk/web2c/cwebdir/common.h @@ -2,7 +2,7 @@ % This program by Silvio Levy and Donald E. Knuth % is based on a program by Knuth. % It is distributed WITHOUT ANY WARRANTY, express or implied. -% Version 4.12 --- August 2024 (works also with later versions) +% Version 4.12.1 --- January 2025 (works also with later versions) % Copyright (C) 1987,1990,1993 Silvio Levy and Donald E. Knuth diff --git a/source/texk/web2c/cwebdir/common.w b/source/texk/web2c/cwebdir/common.w index 1c077736b..f54df852a 100644 --- a/source/texk/web2c/cwebdir/common.w +++ b/source/texk/web2c/cwebdir/common.w @@ -2,7 +2,7 @@ % This program by Silvio Levy and Donald E. Knuth % is based on a program by Knuth. % It is distributed WITHOUT ANY WARRANTY, express or implied. -% Version 4.12 --- August 2024 +% Version 4.12.1 --- january 2025 % Copyright (C) 1987,1990,1993,2000 Silvio Levy and Donald E. Knuth @@ -22,12 +22,12 @@ \def\v{\char'174} % vertical (|) in typewriter font -\def\title{Common code for CTANGLE and CWEAVE (Version 4.12)} +\def\title{Common code for CTANGLE and CWEAVE (Version 4.12.1)} \def\topofcontents{\null\vfill \centerline{\titlefont Common code for {\ttitlefont CTANGLE} and {\ttitlefont CWEAVE}} \vskip 15pt - \centerline{(Version 4.12)} + \centerline{(Version 4.12.1)} \vfill} \def\botofcontents{\vfill \noindent diff --git a/source/texk/web2c/cwebdir/ctang-bs.ch b/source/texk/web2c/cwebdir/ctang-bs.ch index 234f41039..f874351c5 100644 --- a/source/texk/web2c/cwebdir/ctang-bs.ch +++ b/source/texk/web2c/cwebdir/ctang-bs.ch @@ -17,12 +17,12 @@ by using "huge" pointers. The ``banner line'' defined here should be changed whenever \.{CTANGLE} is modified. -@d banner "This is CTANGLE (Version 4.12)" +@d banner "This is CTANGLE (Version 4.12.1)" @y The ``banner line'' defined here should be changed whenever \.{CTANGLE} is modified. -@d banner "This is CTANGLE (Version 4.12pc/big)" +@d banner "This is CTANGLE (Version 4.12.1pc/big)" @z diff --git a/source/texk/web2c/cwebdir/ctang-pc.ch b/source/texk/web2c/cwebdir/ctang-pc.ch index 61db92aa7..47066fffc 100644 --- a/source/texk/web2c/cwebdir/ctang-pc.ch +++ b/source/texk/web2c/cwebdir/ctang-pc.ch @@ -9,9 +9,9 @@ that allows >64K arrays. If you need lots of bytes and toks, try the alternate change files with -bs suffix instead of -pc. @x section 1 -@d banner "This is CTANGLE (Version 4.12)" +@d banner "This is CTANGLE (Version 4.12.1)" @y -@d banner "This is CTANGLE (Version 4.12pc)" +@d banner "This is CTANGLE (Version 4.12.1pc)" @z @x section 17 @d max_bytes 100000 /* the number of bytes in identifiers, diff --git a/source/texk/web2c/cwebdir/ctang-ql.ch b/source/texk/web2c/cwebdir/ctang-ql.ch index 41831c850..105634960 100644 --- a/source/texk/web2c/cwebdir/ctang-ql.ch +++ b/source/texk/web2c/cwebdir/ctang-ql.ch @@ -7,15 +7,15 @@ ex <dev_>cc;"-v -h -c -=500000 ctangle_c" @x -\def\title{CTANGLE (Version 4.12)} +\def\title{CTANGLE (Version 4.12.1)} @y -\def\title{CTANGLE (QL Version 4.12)} +\def\title{CTANGLE (QL Version 4.12.1)} @z @x section 1 -@d banner "This is CTANGLE (Version 4.12)" +@d banner "This is CTANGLE (Version 4.12.1)" @y -@d banner "This is CTANGLE (QL Version 4.12)" +@d banner "This is CTANGLE (QL Version 4.12.1)" @z @x diff --git a/source/texk/web2c/cwebdir/ctang-vms.ch b/source/texk/web2c/cwebdir/ctang-vms.ch index 7f142df49..d053756d5 100644 --- a/source/texk/web2c/cwebdir/ctang-vms.ch +++ b/source/texk/web2c/cwebdir/ctang-vms.ch @@ -10,9 +10,9 @@ created: (these changes not necessary for initial bootstrapping) @x section 1 (01-FEB-1992 ST) -@d banner "This is CTANGLE (Version 4.12)" +@d banner "This is CTANGLE (Version 4.12.1)" @y -@d banner "This is CTANGLE (VAX/VMS Version 4.12)" +@d banner "This is CTANGLE (VAX/VMS Version 4.12.1)" @z @x section 5 (01-FEB-1992 ST) diff --git a/source/texk/web2c/cwebdir/ctang-w2c.ch b/source/texk/web2c/cwebdir/ctang-w2c.ch index 61eea96a0..50e2fef21 100644 --- a/source/texk/web2c/cwebdir/ctang-w2c.ch +++ b/source/texk/web2c/cwebdir/ctang-w2c.ch @@ -17,15 +17,15 @@ @q Please send comments, suggestions, etc. to tex-k@@tug.org. @> @x [0.0] l.30 -\def\title{CTANGLE (Version 4.12)} +\def\title{CTANGLE (Version 4.12.1)} @y -\def\title{CTANGLE (Version 4.12 [\TeX~Live])} +\def\title{CTANGLE (Version 4.12.1 [\TeX~Live])} @z @x [0.0] l.34 - \centerline{(Version 4.12)} + \centerline{(Version 4.12.1)} @y - \centerline{(Version 4.12 [\TeX~Live])} + \centerline{(Version 4.12.1 [\TeX~Live])} @z @x [0.0] l.36 @@ -41,9 +41,9 @@ @z @x [1.1] l.64 -@d banner "This is CTANGLE (Version 4.12)" +@d banner "This is CTANGLE (Version 4.12.1)" @y -@d banner "This is CTANGLE, Version 4.12" +@d banner "This is CTANGLE, Version 4.12.1" /* will be extended by the \TeX~Live |versionstring| */ @z diff --git a/source/texk/web2c/cwebdir/ctang-w32.ch b/source/texk/web2c/cwebdir/ctang-w32.ch index 2a5c6f118..bd2b75c25 100644 --- a/source/texk/web2c/cwebdir/ctang-w32.ch +++ b/source/texk/web2c/cwebdir/ctang-w32.ch @@ -4,9 +4,9 @@ This is the change file for CWEB's CTANGLE under Win32 Changes necessary for compiling with Borland C/C++ @x section 1 -@d banner "This is CTANGLE (Version 4.12)" +@d banner "This is CTANGLE (Version 4.12.1)" @y -@d banner "This is CTANGLE (Version 4.12win32)" +@d banner "This is CTANGLE (Version 4.12.1win32)" @z @x section 24 diff --git a/source/texk/web2c/cwebdir/ctangle.c b/source/texk/web2c/cwebdir/ctangle.c index d1cf6c676..d5bf68060 100644 --- a/source/texk/web2c/cwebdir/ctangle.c +++ b/source/texk/web2c/cwebdir/ctangle.c @@ -15,7 +15,7 @@ /*:5*/ #line 67 "ctangle.w" -#define banner "This is CTANGLE (Version 4.12)" \ +#define banner "This is CTANGLE (Version 4.12.1)" \ #define ctangle false #define cweave true \ diff --git a/source/texk/web2c/cwebdir/ctangle.w b/source/texk/web2c/cwebdir/ctangle.w index b42595baa..5fc4cfc30 100644 --- a/source/texk/web2c/cwebdir/ctangle.w +++ b/source/texk/web2c/cwebdir/ctangle.w @@ -2,7 +2,7 @@ % This program by Silvio Levy and Donald E. Knuth % is based on a program by Knuth. % It is distributed WITHOUT ANY WARRANTY, express or implied. -% Version 4.12 --- August 2024 +% Version 4.12.1 --- January 2025 % Copyright (C) 1987,1990,1993,2000 Silvio Levy and Donald E. Knuth @@ -27,11 +27,11 @@ \mathchardef\RA="3221 % right arrow \mathchardef\BA="3224 % double arrow -\def\title{CTANGLE (Version 4.12)} +\def\title{CTANGLE (Version 4.12.1)} \def\topofcontents{\null\vfill \centerline{\titlefont The {\ttitlefont CTANGLE} processor} \vskip 15pt - \centerline{(Version 4.12)} + \centerline{(Version 4.12.1)} \vfill} \def\botofcontents{\vfill \noindent @@ -61,7 +61,7 @@ Joachim Schrod, Lee Wittenberg, and others who have contributed improvements. The ``banner line'' defined here should be changed whenever \.{CTANGLE} is modified. -@d banner "This is CTANGLE (Version 4.12)" +@d banner "This is CTANGLE (Version 4.12.1)" @c @<Include files@>@/ diff --git a/source/texk/web2c/cwebdir/cweav-bs.ch b/source/texk/web2c/cwebdir/cweav-bs.ch index 458a0a7e6..872995093 100644 --- a/source/texk/web2c/cwebdir/cweav-bs.ch +++ b/source/texk/web2c/cwebdir/cweav-bs.ch @@ -20,12 +20,12 @@ This file contributed by Barry Schwartz, trashman@crud.mn.org, 28 Jun 94. The ``banner line'' defined here should be changed whenever \.{CWEAVE} is modified. -@d banner "This is CWEAVE (Version 4.12)" +@d banner "This is CWEAVE (Version 4.12.1)" @y The ``banner line'' defined here should be changed whenever \.{CWEAVE} is modified. -@d banner "This is CWEAVE (Version 4.12pc/big)" +@d banner "This is CWEAVE (Version 4.12.1pc/big)" @z diff --git a/source/texk/web2c/cwebdir/cweav-pc.ch b/source/texk/web2c/cwebdir/cweav-pc.ch index ae1fb9f45..9875d6cad 100644 --- a/source/texk/web2c/cwebdir/cweav-pc.ch +++ b/source/texk/web2c/cwebdir/cweav-pc.ch @@ -11,9 +11,9 @@ that allows >64K arrays. (If you need lots more bytes, try the alternate change files that have -bs in their name instead of -pc.) @x section 1 -@d banner "This is CWEAVE (Version 4.12)" +@d banner "This is CWEAVE (Version 4.12.1)" @y -@d banner "This is CWEAVE (Version 4.12pc)" +@d banner "This is CWEAVE (Version 4.12.1pc)" @z @x section 17 diff --git a/source/texk/web2c/cwebdir/cweav-ql.ch b/source/texk/web2c/cwebdir/cweav-ql.ch index fd369064d..aaaf58fd6 100644 --- a/source/texk/web2c/cwebdir/cweav-ql.ch +++ b/source/texk/web2c/cwebdir/cweav-ql.ch @@ -7,15 +7,15 @@ ex <dev_>cc;"-v -h -c =500000 cweave_c" @x -\def\title{CWEAVE (Version 4.12)} +\def\title{CWEAVE (Version 4.12.1)} @y -\def\title{CWEAVE (QL Version 4.12)} +\def\title{CWEAVE (QL Version 4.12.1)} @z @x section 1 -@d banner "This is CWEAVE (Version 4.12)" +@d banner "This is CWEAVE (Version 4.12.1)" @y -@d banner "This is CWEAVE (QL Version 4.12)" +@d banner "This is CWEAVE (QL Version 4.12.1)" @z @x diff --git a/source/texk/web2c/cwebdir/cweav-vms.ch b/source/texk/web2c/cwebdir/cweav-vms.ch index f4630f986..f04a456ea 100644 --- a/source/texk/web2c/cwebdir/cweav-vms.ch +++ b/source/texk/web2c/cwebdir/cweav-vms.ch @@ -13,9 +13,9 @@ modified: (also modified by Don Knuth to keep version numbers uptodate) @x section 1 (01-FEB-1992 ST) -@d banner "This is CWEAVE (Version 4.12)" +@d banner "This is CWEAVE (Version 4.12.1)" @y -@d banner "This is CWEAVE (VAX/VMS Version 4.12)" +@d banner "This is CWEAVE (VAX/VMS Version 4.12.1)" @z @x section 5 (01-FEB-1992 ST) diff --git a/source/texk/web2c/cwebdir/cweav-w2c.ch b/source/texk/web2c/cwebdir/cweav-w2c.ch index b0adceab7..5838e0045 100644 --- a/source/texk/web2c/cwebdir/cweav-w2c.ch +++ b/source/texk/web2c/cwebdir/cweav-w2c.ch @@ -17,15 +17,15 @@ @q Please send comments, suggestions, etc. to tex-k@@tug.org. @> @x [0.0] l.34 -\def\title{CWEAVE (Version 4.12)} +\def\title{CWEAVE (Version 4.12.1)} @y -\def\title{CWEAVE (Version 4.12 [\TeX~Live])} +\def\title{CWEAVE (Version 4.12.1 [\TeX~Live])} @z @x [0.0] l.38 - \centerline{(Version 4.12)} + \centerline{(Version 4.12.1)} @y - \centerline{(Version 4.12 [\TeX~Live])} + \centerline{(Version 4.12.1 [\TeX~Live])} @z @x [0.0] l.40 @@ -41,9 +41,9 @@ @z @x [1.1] l.69 -@d banner "This is CWEAVE (Version 4.12)" +@d banner "This is CWEAVE (Version 4.12.1)" @y -@d banner "This is CWEAVE, Version 4.12" +@d banner "This is CWEAVE, Version 4.12.1" /* will be extended by the \TeX~Live |versionstring| */ @z diff --git a/source/texk/web2c/cwebdir/cweav-w32.ch b/source/texk/web2c/cwebdir/cweav-w32.ch index 2f9a2127a..5478d0406 100644 --- a/source/texk/web2c/cwebdir/cweav-w32.ch +++ b/source/texk/web2c/cwebdir/cweav-w32.ch @@ -2,9 +2,9 @@ This is the change file for CWEB's CWEAVE under Win32 (Contributed by Fabrice Popineau, February 2002) @x section 1 -@d banner "This is CWEAVE (Version 4.12)" +@d banner "This is CWEAVE (Version 4.12.1)" @y -@d banner "This is CWEAVE (Version 4.12win32)" +@d banner "This is CWEAVE (Version 4.12.1win32)" @z @x section 32 diff --git a/source/texk/web2c/cwebdir/cweave.w b/source/texk/web2c/cwebdir/cweave.w index 015a3183b..39de8a432 100644 --- a/source/texk/web2c/cwebdir/cweave.w +++ b/source/texk/web2c/cwebdir/cweave.w @@ -2,7 +2,7 @@ % This program by Silvio Levy and Donald E. Knuth % is based on a program by Knuth. % It is distributed WITHOUT ANY WARRANTY, express or implied. -% Version 4.12 --- August 2024 +% Version 4.12.1 --- January 2025 % Copyright (C) 1987,1990,1993,2000 Silvio Levy and Donald E. Knuth @@ -31,11 +31,11 @@ \def\skipxTeX{\\{skip\_\TEX/}} \def\copyxTeX{\\{copy\_\TEX/}} -\def\title{CWEAVE (Version 4.12)} +\def\title{CWEAVE (Version 4.12.1)} \def\topofcontents{\null\vfill \centerline{\titlefont The {\ttitlefont CWEAVE} processor} \vskip 15pt - \centerline{(Version 4.12)} + \centerline{(Version 4.12.1)} \vfill} \def\botofcontents{\vfill \noindent @@ -66,7 +66,7 @@ Crusius, and others who have contributed improvements. The ``banner line'' defined here should be changed whenever \.{CWEAVE} is modified. -@d banner "This is CWEAVE (Version 4.12)" +@d banner "This is CWEAVE (Version 4.12.1)" @c @<Include files@>@/ diff --git a/source/texk/web2c/cwebdir/cwebmac.tex b/source/texk/web2c/cwebdir/cwebmac.tex index 53454300a..2b7b14bf0 100644 --- a/source/texk/web2c/cwebdir/cwebmac.tex +++ b/source/texk/web2c/cwebdir/cwebmac.tex @@ -1,7 +1,7 @@ % standard macros for CWEB listings (in addition to plain.tex) -% Version 4.12 --- August 2024 +% Version 4.12.1 --- January 2025 \ifx\renewenvironment\undefined\else\endinput\fi % LaTeX will use other macros -\xdef\fmtversion{\fmtversion+CWEB4.12} +\xdef\fmtversion{\fmtversion+CWEB4.12.1} \chardef\cwebversion=4 \chardef\cwebrevision=12 \parskip 0pt % no stretch between paragraphs diff --git a/source/texk/web2c/cwebdir/cwebman.tex b/source/texk/web2c/cwebdir/cwebman.tex index 25654a531..c71bda316 100644 --- a/source/texk/web2c/cwebdir/cwebman.tex +++ b/source/texk/web2c/cwebdir/cwebman.tex @@ -31,7 +31,7 @@ \def\lheader{\mainfont\the\pageno\hfill\sc\runninghead\hfill} \def\rheader{\hfill\sc\runninghead\hfill\mainfont\the\pageno} -\def\runninghead{{\ninett CWEB} USER MANUAL (VERSION 4.12)} +\def\runninghead{{\ninett CWEB} USER MANUAL (VERSION 4.12.1)} % This verbatim mode assumes that ! marks are !! in the text being copied. \def\verbatim{\begingroup @@ -45,7 +45,7 @@ \null\vfill \centerline{\titlefont The {\ttitlefont CWEB} System of Structured Documentation} -\vskip 18pt\centerline{(Version 4.12 --- August 2024)} +\vskip 18pt\centerline{(Version 4.12.1 --- January 2025)} \vskip 24pt \centerline{\authorfont Donald E. Knuth and Silvio Levy} \vfill @@ -1610,7 +1610,7 @@ $$\lpile{\.{\\def\\topofcontents\{\\null\\vfill}\cr \.{ { }\\titlefalse \% include headline on the contents page}\cr \.{ { }\\def\\rheader\{\\mainfont The \{\\tt CWEAVE\}{ }processor\\hfil\}}\cr \.{ { }\\centerline\{\\titlefont The \{\\ttitlefont CWEAVE\}{ }processor\}}\cr - \.{ { }\\vskip 15pt \\centerline\{(Version 4.12)\}{ }\\vfill\}}\cr}$$ + \.{ { }\\vskip 15pt \\centerline\{(Version 4.12.1)\}{ }\\vfill\}}\cr}$$ Redefining \.{\\rheader}, which is the headline for right-hand pages, suffices in this case to put the desired information at the top of the contents page. diff --git a/source/texk/web2c/cwebdir/prod.w b/source/texk/web2c/cwebdir/prod.w index 851c5ffe2..1a21fb5de 100644 --- a/source/texk/web2c/cwebdir/prod.w +++ b/source/texk/web2c/cwebdir/prod.w @@ -2,7 +2,7 @@ % This program by Silvio Levy and Donald E. Knuth % is based on a program by Knuth. % It is distributed WITHOUT ANY WARRANTY, express or implied. -% Version 4.12 --- August 2024 +% Version 4.12.1 --- January 2025 % @ Here is a table of all the productions. Each production that combines two or more consecutive scraps implicitly inserts a {\tt \$} diff --git a/source/texk/web2c/euptexdir/am/euptex.am b/source/texk/web2c/euptexdir/am/euptex.am index 6bd35fbfb..a7c652022 100644 --- a/source/texk/web2c/euptexdir/am/euptex.am +++ b/source/texk/web2c/euptexdir/am/euptex.am @@ -1,4 +1,4 @@ -## $Id: euptex.am 72600 2024-10-20 06:53:25Z takuji $ +## $Id: euptex.am 73271 2025-01-02 12:27:29Z takuji $ ## texk/web2c/euptexdir/am/euptex.am: Makefile fragment for e-upTeX. ## ## Copyright 2015-2024 Karl Berry <tex-live@tug.org> @@ -105,7 +105,7 @@ euptex_tests = \ euptexdir/euptex-prntknj.test \ euptexdir/euptex-kinsoku.test \ euptexdir/euptex-ofm.test euptexdir/euptex-prim.test \ - euptexdir/euptex-ucs.test + euptexdir/euptex-ucs.test euptexdir/euptex-widow.test euptexdir/euptriptest.log euptexdir/eptriptest.log: \ euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) euptexdir/pdfprimitive.log: euptex$(EXEEXT) @@ -114,7 +114,7 @@ euptexdir/eupver.log euptexdir/upkcat.log \ euptexdir/euptex-ctrlsym.log euptexdir/euptex-prntknj.log \ euptexdir/euptex-kinsoku.log \ euptexdir/euptex-ofm.log euptexdir/euptex-prim.log \ - euptexdir/euptex-ucs.log: euptex$(EXEEXT) + euptexdir/euptex-ucs.log euptexdir/euptex-widow.log: euptex$(EXEEXT) EXTRA_DIST += $(euptex_tests) @@ -140,20 +140,20 @@ EXTRA_DIST += \ euptexdir/tests/pdfprimitive-euptex.log DISTCLEANFILES += pdfprimitive-euptex.* -## euptex-ctrlsym.test +## euptexdir/euptex-ctrlsym.test EXTRA_DIST += euptexdir/tests/ctrlsym.tex euptexdir/tests/ctrlsym.log \ euptexdir/tests/endlinechar.tex euptexdir/tests/endline.log \ euptexdir/tests/control-symbol.tex euptexdir/tests/jctrlsym.log \ euptexdir/tests/eup-endlinea.typ euptexdir/tests/eup-jctrlsyma.typ DISTCLEANFILES += eup-ctrlsym.log eup-ctrlsym.out eup-ctrlsym.tex \ eup-endline*.* eup-jctrlsym*.* -## euptex-prntknj.test +## euptexdir/euptex-prntknj.test EXTRA_DIST += euptexdir/tests/printkanji.tex euptexdir/tests/pknj-s.log \ euptexdir/tests/pknj-e.log euptexdir/tests/pknj-u.log \ euptexdir/tests/eup-pknj-sa.typ euptexdir/tests/eup-pknj-ea.typ \ euptexdir/tests/eup-pknj-ua.typ DISTCLEANFILES += eup-pknj-*.* -## euptex-kinsoku.test +## euptexdir/euptex-kinsoku.test EXTRA_DIST += euptexdir/tests/postpena.tex euptexdir/tests/postpena.log \ euptexdir/tests/free_ixsp.tex euptexdir/tests/free_ixsp.log \ euptexdir/tests/free_pena.tex euptexdir/tests/free_pena.log \ @@ -161,16 +161,19 @@ EXTRA_DIST += euptexdir/tests/postpena.tex euptexdir/tests/postpena.log \ euptexdir/tests/kinsoku-table.tex euptexdir/tests/kinsoku-table.log \ euptexdir/tests/kinsoku-search.tex euptexdir/tests/kinsoku-search.log DISTCLEANFILES += eup-postpena*.* eup-free_*.* eup-inhibitglue*.* eup-kinsoku*.* -## euptex-ofm.test +## euptexdir/euptex-ofm.test EXTRA_DIST += euptexdir/tests/eup-ofm.tex euptexdir/tests/eup-ofm.log DISTCLEANFILES += eup-ofm.* -## euptex-prim.test +## euptexdir/euptex-prim.test EXTRA_DIST += euptexdir/tests/eup-prim.tex euptexdir/tests/eup-prim.log DISTCLEANFILES += eup-prim.* -## euptex-ucs.test +## euptexdir/euptex-ucs.test EXTRA_DIST += euptexdir/tests/ucs.tex euptexdir/tests/ucs-s.log \ euptexdir/tests/ucs-e.log euptexdir/tests/ucs-u.log DISTCLEANFILES += eup-ucs*.* +## euptexdir/euptex-widow.test +EXTRA_DIST += euptexdir/tests/eup-jchwidow.log +DISTCLEANFILES += eup-jchwidow.* euptrip.diffs: euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) $(triptrap_diffs) $@ diff --git a/source/texk/web2c/lib/ChangeLog b/source/texk/web2c/lib/ChangeLog index 0d7a53e8c..f022d1a81 100644 --- a/source/texk/web2c/lib/ChangeLog +++ b/source/texk/web2c/lib/ChangeLog @@ -1,3 +1,7 @@ +2025-01-01 Akira Kakuto <kakuto@jcom.zaq.ne.jp> + + * printversion.c: Update copyright year. + 2024-04-14 TANAKA Takuji <ttk@t-lab.opal.ne.jp> * Makefile.am: Remove eptex. diff --git a/source/texk/web2c/lib/printversion.c b/source/texk/web2c/lib/printversion.c index 1a0e12b69..a05afe48c 100644 --- a/source/texk/web2c/lib/printversion.c +++ b/source/texk/web2c/lib/printversion.c @@ -56,7 +56,7 @@ printversionandexit (const_string banner, #endif if (copyright_holder) { - printf ("Copyright 2024 %s.\n", copyright_holder); + printf ("Copyright 2025 %s.\n", copyright_holder); if (!author) author = copyright_holder; } diff --git a/source/texk/web2c/luatexdir/luatex_svnversion.h b/source/texk/web2c/luatexdir/luatex_svnversion.h index 75176b33f..b963f5fbb 100644 --- a/source/texk/web2c/luatexdir/luatex_svnversion.h +++ b/source/texk/web2c/luatexdir/luatex_svnversion.h @@ -1,4 +1,4 @@ #ifndef luatex_svn_revision_h #define luatex_svn_revision_h -#define luatex_svn_revision 7643 +#define luatex_svn_revision 7644 #endif diff --git a/source/texk/web2c/man/ChangeLog b/source/texk/web2c/man/ChangeLog index b047bb6ab..5c4208bb6 100644 --- a/source/texk/web2c/man/ChangeLog +++ b/source/texk/web2c/man/ChangeLog @@ -1,3 +1,7 @@ +2025-01-01 Andreas Scherer <https://ascherer.github.io> + + * ctwill.man: CWEB 4.12.1 release. + 2024-08-12 Andreas Scherer <https://ascherer.github.io> * ctwill.man: CWEB 4.12 release. diff --git a/source/texk/web2c/man/ctwill.man b/source/texk/web2c/man/ctwill.man index a30dcd6a0..c2d9e3b34 100644 --- a/source/texk/web2c/man/ctwill.man +++ b/source/texk/web2c/man/ctwill.man @@ -1,6 +1,6 @@ .\" Automatically generated by Pandoc .\" -.TH "CTWILL" "1" "August 12, 2024" "Web2c @VERSION@" "General Commands Manual" +.TH "CTWILL" "1" "January 1, 2025." "Web2c @VERSION@" "General Commands Manual" .SH NAME ctwill, ctwill-proofsort, ctwill-refsort, ctwill-twinx \- translate CWEB to TeX with mini-indexes @@ -122,7 +122,7 @@ The present incarnation of \f[B]ctwill\f[R] and its utilities tries hard to be a drop-in replacement for the original package. There are, however, a few differences worth noting: .IP \[bu] 2 -This version is based on the most recent version of CWEB (4.12). +This version is based on the most recent version of CWEB (4.12.1). .IP \[bu] 2 In TeX\ Live the utility programs are prefixed with \f[B]ctwill\-\f[R] and the macro files with \f[B]ct\f[R] for technical reasons. diff --git a/source/texk/web2c/mfluajitdir/am/mfluajitlpeg.am b/source/texk/web2c/mfluajitdir/am/mfluajitlpeg.am index a9245cae4..462045a6f 100644 --- a/source/texk/web2c/mfluajitdir/am/mfluajitlpeg.am +++ b/source/texk/web2c/mfluajitdir/am/mfluajitlpeg.am @@ -1,13 +1,13 @@ ## texk/web2c/mfluajitdir/am/mfluajitlpeg.am: Makefile fragment for libmfluajitlpeg. ## -## Copyright (C) 2023 Luigi Scarso <tex-live@tug.org> +## Copyright (C) 2023-2025 Luigi Scarso <tex-live@tug.org> ## You may freely use, modify and/or distribute this file. ## mfluajitlpeg ## EXTRA_LIBRARIES += libmfluajitlpeg.a -$(libmfluajitlpeg_a_OBJECTS): $(LUA_DEPEND) +$(libmfluajitlpeg_a_OBJECTS): $(LUAJIT_DEPEND) libmfluajitlpeg_a_CPPFLAGS = \ -I$(top_srcdir)/mfluadir/luapeg \ diff --git a/source/texk/web2c/mplibdir/mpmathbinary.w b/source/texk/web2c/mplibdir/mpmathbinary.w index cf5c28c9c..6d1274667 100644 --- a/source/texk/web2c/mplibdir/mpmathbinary.w +++ b/source/texk/web2c/mplibdir/mpmathbinary.w @@ -1,4 +1,4 @@ -% $Id: mpmathbinary.w 69812 2024-02-11 23:09:24Z karl $ +% $Id: mpmathbinary.w 71144 2024-05-01 17:04:18Z lscarso $ % % This file is part of MetaPost; % the MetaPost program is in the public domain. diff --git a/source/texk/web2c/mplibdir/mpmathinterval.w b/source/texk/web2c/mplibdir/mpmathinterval.w index 26abd88a6..549035508 100644 --- a/source/texk/web2c/mplibdir/mpmathinterval.w +++ b/source/texk/web2c/mplibdir/mpmathinterval.w @@ -1,4 +1,4 @@ -% $Id: mpmathinterval.w 69812 2024-02-11 23:09:24Z karl $ +% $Id: mpmathinterval.w 71144 2024-05-01 17:04:18Z lscarso $ % % This file is part of MetaPost; % the MetaPost program is in the public domain. diff --git a/source/texk/web2c/ptexdir/am/ptex.am b/source/texk/web2c/ptexdir/am/ptex.am index 00a1cb090..641a99f65 100644 --- a/source/texk/web2c/ptexdir/am/ptex.am +++ b/source/texk/web2c/ptexdir/am/ptex.am @@ -1,4 +1,4 @@ -## $Id: ptex.am 72333 2024-09-21 09:29:37Z takuji $ +## $Id: ptex.am 73271 2025-01-02 12:27:29Z takuji $ ## texk/web2c/ptexdir/am/ptex.am: Makefile fragment for pTeX. ## ## Copyright 2015-2024 Karl Berry <tex-live@tug.org> @@ -110,11 +110,11 @@ ptex_tests = \ ptexdir/wcfname.test \ ptexdir/ptex-ctrlsym.test \ ptexdir/ptex-prntknj.test \ - ptexdir/ptex-ucs.test + ptexdir/ptex-ucs.test ptexdir/ptex-widow.test ptexdir/ptriptest.log: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) ptexdir/pver.log ptexdir/wcfname.log \ ptexdir/ptex-ctrlsym.log ptexdir/ptex-prntknj.log \ - ptexdir/ptex-ucs.log: ptex$(EXEEXT) + ptexdir/ptex-ucs.log ptexdir/ptex-widow.log: ptex$(EXEEXT) EXTRA_DIST += $(ptex_tests) $(pweb_tests) DISTCLEANFILES += $(pweb_programs:=.c) $(pweb_programs:=.h) \ @@ -182,15 +182,18 @@ EXTRA_DIST += ptexdir/tests/ctrlsym.tex ptexdir/tests/ctrlsym.log \ ptexdir/tests/ptexlineendmode.tex ptexdir/tests/p-lineenda.typ DISTCLEANFILES += p-ctrlsym.log p-ctrlsym.out p-ctrlsym.tex \ p-endline*.* p-jctrlsym*.* p-chartoken.* p-lineend.* -## ptex-prntknj.test +## ptexdir/ptex-prntknj.test EXTRA_DIST += ptexdir/tests/printkanji.tex \ ptexdir/tests/pknj-s.log ptexdir/tests/pknj-e.log \ ptexdir/tests/p-pknj-sa.typ ptexdir/tests/p-pknj-ea.typ DISTCLEANFILES += p-pknj-*.* -## ptex-ucs.test +## ptexdir/ptex-ucs.test EXTRA_DIST += ptexdir/tests/ucs.tex ptexdir/tests/ucs-s.log \ ptexdir/tests/ucs-e.log DISTCLEANFILES += p-ucs*.* +## ptexdir/ptex-widow.test +EXTRA_DIST += ptexdir/tests/p-jchwidow.log +DISTCLEANFILES += p-jchwidow*.* ptrip.diffs: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) $(triptrap_diffs) $@ diff --git a/source/texk/web2c/texprofdir/am/texprof.am b/source/texk/web2c/texprofdir/am/texprof.am index e69de29bb..59e7023df 100644 --- a/source/texk/web2c/texprofdir/am/texprof.am +++ b/source/texk/web2c/texprofdir/am/texprof.am @@ -0,0 +1,70 @@ +## $Id: texprof.am 72628 2024-10-23 06:54:27Z mruckert $ +## texk/web2c/texprofdir/am/texprof.am: Makefile fragment for TeXprof +## +## Copyright 2024 Martin Ruckert <ruckert@cs.hm.edu> +## You may freely use, modify and/or distribute this file. + +if TEXPROF +bin_PROGRAMS += texprof texprofile + +# convenience target to build all the programs here. +texprofall: texprof texprofile + +# See hitex.am for comments about handling man. +man1_MANS = texprofdir/man/texprof.man texprofdir/man/texprofile.man +endif TEXPROF + +texprof_CPPFLAGS = $(AM_CPPFLAGS) +texprof_CPPFLAGS += -I$(srcdir)/libmd5 +texprof_CPPFLAGS += -DINIT -DSTAT -DWEB2CVERSION="\"${WEB2CVERSION}\"" +# -DDEBUG drops into an interactive debugging session. +texprof_LDADD = $(KPATHSEA_LIBS) libmd5.a +texprof_DEPENDENCIES = $(KPATHSEA_DEPEND) libmd5.a +# +texprofile_CPPFLAGS = $(AM_CPPFLAGS) +texprofile_LDADD = +texprofile_DEPENDENCIES = +# +# TeXprof CWEB sources +texprof_web = texprofdir/texprof.w +texprofile_web = texprofdir/texprofile.w + +# Creating several files: need stamp file and two rules with identical recipes +texprof_ctangle_sh = CWEBINPUTS=$(srcdir)/texprofdir AM_V_P=$(AM_V_P) $(SHELL) ./tangle-sh $@ $(CTANGLE) + +# For each cweb (.w) source file, list the files generated. +texprof_c = texprof.c +texprofile_c = texprofile.c + +$(texprof_c): texprof-tangle +$(texprofile_c): texprofile-tangle + +# +texprof-tangle: ctangle$(EXEEXT) texprofdir/texprof.w tangle-sh + $(texprof_ctangle_sh) texprof + +texprofile-tangle: ctangle$(EXEEXT) texprofdir/texprofile.w tangle-sh + $(texprof_ctangle_sh) texprofile + +EXTRA_DIST += texprofdir/ChangeLog $(texprof_web) $(texprofile_web) + +DISTCLEANFILES += $(nodist_texprof_SOURCES) +DISTCLEANFILES += texprofile-tangle texprof-tangle + +## TeXprof tests +# +texprof_tests = texprofdir/tests/hello.test + +texprofdir/tests/hello.log: texprof$(EXEEXT) texprofile$(EXEEXT) + +EXTRA_DIST += $(texprof_tests) + +if TEXPROF +TESTS += $(texprof_tests) +endif TEXPROF + +## hello.test +EXTRA_DIST += texprofdir/tests/hello.tex +DISTCLEANFILES += hello.log + +# (end of texprof.am) diff --git a/source/texk/web2c/uptexdir/am/uptex.am b/source/texk/web2c/uptexdir/am/uptex.am index 44c3a01c5..af75f4dc0 100644 --- a/source/texk/web2c/uptexdir/am/uptex.am +++ b/source/texk/web2c/uptexdir/am/uptex.am @@ -1,4 +1,4 @@ -## $Id: uptex.am 72600 2024-10-20 06:53:25Z takuji $ +## $Id: uptex.am 73540 2025-01-21 15:14:18Z karl $ ## texk/web2c/uptexdir/am/uptex.am: Makefile fragment for upTeX. ## ## Copyright 2016-2024 Karl Berry <tex-live@tug.org> @@ -104,7 +104,9 @@ upbibtex.p: tangle$(EXEEXT) upbibtex.web uptexdir/upbibtex.ch upbibtex.web: tie$(EXEEXT) bibtex.web bibtex.ch $(tie_m) bibtex.web bibtex.ch EXTRA_DIST += uptexdir/upbibtex.ch +if UPWEB bin_links += upbibtex$(EXEEXT):pbibtex +endif # UPWEB ## upDVItype ## @@ -122,7 +124,9 @@ updvitype.p: tangle$(EXEEXT) updvitype.web uptexdir/updvitype.ch updvitype.web: tie$(EXEEXT) dvitype.web dvitype.ch $(tie_m) dvitype.web dvitype.ch EXTRA_DIST += uptexdir/updvitype.ch +if UPWEB bin_links += updvitype$(EXEEXT):pdvitype +endif # UPWEB ## upPLtoTF ## @@ -140,7 +144,9 @@ uppltotf.p: tangle$(EXEEXT) uppltotf.web uptexdir/uppltotf.ch uppltotf.web: tie$(EXEEXT) pltotf.web pltotf.ch $(tie_m) pltotf.web pltotf.ch EXTRA_DIST += uptexdir/uppltotf.ch +if UPWEB bin_links += uppltotf$(EXEEXT):ppltotf +endif # UPWEB ## upTFtoPL ## @@ -158,7 +164,9 @@ uptftopl.p: tangle$(EXEEXT) uptftopl.web uptexdir/uptftopl.ch uptftopl.web: tie$(EXEEXT) tftopl.web tftopl.ch $(tie_m) tftopl.web tftopl.ch EXTRA_DIST += uptexdir/uptftopl.ch +if UPWEB bin_links += uptftopl$(EXEEXT):ptftopl +endif # UPWEB ## EXTRA_DIST += \ @@ -173,13 +181,15 @@ uptex_tests = \ uptexdir/upkcat.test \ uptexdir/wcfname.test uptexdir/wcfname0.test \ uptexdir/uptex-ofm.test uptexdir/uptex-prim.test \ - uptexdir/uptex-lmr.test uptexdir/uptex-noto.test + uptexdir/uptex-lmr.test uptexdir/uptex-noto.test \ + uptexdir/uptex-widow.test uptexdir/uptriptest.log uptexdir/ptriptest.log: \ uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) uptexdir/upver.log uptexdir/upkcat.log \ uptexdir/wcfname.log uptexdir/wcfname0.log \ uptexdir/uptex-ofm.log uptexdir/uptex-prim.log \ - uptexdir/uptex-lmr.log uptexdir/uptex-noto.log: uptex$(EXEEXT) + uptexdir/uptex-lmr.log uptexdir/uptex-noto.log \ + uptexdir/uptex-widow.log: uptex$(EXEEXT) upweb_tests = \ uptexdir/upbibtex.test \ uptexdir/updvitype.test \ @@ -283,6 +293,9 @@ DISTCLEANFILES += up-lmr*.* ## uptexdir/uptex-noto.test EXTRA_DIST += uptexdir/tests/noto1.tex uptexdir/tests/up-noto1.log DISTCLEANFILES += up-noto*.* +## uptexdir/uptex-widow.test +EXTRA_DIST += uptexdir/tests/jchwidow.tex uptexdir/tests/up-jchwidow.log +DISTCLEANFILES += up-jchwidow.* uptrip.diffs: uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) $(triptrap_diffs) $@ diff --git a/source/utils/Makefile.in b/source/utils/Makefile.in index 3b74d44cd..80bae239c 100644 --- a/source/utils/Makefile.in +++ b/source/utils/Makefile.in @@ -98,6 +98,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../m4/kpse-common.m4 \ $(top_srcdir)/../m4/kpse-kpathsea-flags.m4 \ $(top_srcdir)/../m4/kpse-libpng-flags.m4 \ $(top_srcdir)/../m4/kpse-lt-hack.m4 \ + $(top_srcdir)/../m4/kpse-luajit-flags.m4 \ $(top_srcdir)/../m4/kpse-mktex.m4 \ $(top_srcdir)/../m4/kpse-options.m4 \ $(top_srcdir)/../m4/kpse-pkgs.m4 \ diff --git a/source/utils/aclocal.m4 b/source/utils/aclocal.m4 index d960cd5f4..7ed461906 100644 --- a/source/utils/aclocal.m4 +++ b/source/utils/aclocal.m4 @@ -1348,6 +1348,7 @@ m4_include([../m4/kpse-harfbuzz-flags.m4]) m4_include([../m4/kpse-kpathsea-flags.m4]) m4_include([../m4/kpse-libpng-flags.m4]) m4_include([../m4/kpse-lt-hack.m4]) +m4_include([../m4/kpse-luajit-flags.m4]) m4_include([../m4/kpse-mktex.m4]) m4_include([../m4/kpse-options.m4]) m4_include([../m4/kpse-pkgs.m4]) diff --git a/source/utils/configure b/source/utils/configure index 9a096e640..0f52cec53 100755 --- a/source/utils/configure +++ b/source/utils/configure @@ -809,6 +809,7 @@ with_system_harfbuzz with_system_graphite2 with_system_zziplib with_system_libpng +with_system_luajit with_system_zlib with_zlib_includes with_zlib_libdir @@ -1553,6 +1554,8 @@ Optional Packages: pkg-config) --with-system-libpng use installed libpng headers and library (requires pkg-config) + --with-system-luajit use installed luajit headers and library (requires + pkg-config) --with-system-zlib use installed zlib headers and library --with-zlib-includes=DIR zlib headers installed in DIR @@ -4729,6 +4732,10 @@ fi ## libs/pplib/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/pplib/ ## configure options and TL libraries required for pplib +test "x$need_pplib" = xyes && { + need_zlib=yes +} + ## libs/harfbuzz/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/harfbuzz/ ## configure options and TL libraries required for harfbuzz @@ -4867,6 +4874,24 @@ test "x$need_libpng" = xyes && { ## libs/luajit/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/luajit/ ## configure options and TL libraries required for luajit +# Check whether --with-system-luajit was given. +if test ${with_system_luajit+y} +then : + withval=$with_system_luajit; +fi +if test "x$with_system_luajit" = x; then + if test -f $srcdir/../libs/luajit/configure; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Assuming \`luajit' headers and library from TL tree" >&5 +printf "%s\n" "$as_me: Assuming \`luajit' headers and library from TL tree" >&6;} + with_system_luajit=no + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Assuming installed \`luajit' headers and library" >&5 +printf "%s\n" "$as_me: Assuming installed \`luajit' headers and library" >&6;} + with_system_luajit=yes + fi + ac_configure_args="$ac_configure_args '--with-system-luajit=$with_system_luajit'" +fi + ## libs/lua53/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/lua53/ ## configure options and TL libraries required for lua53 -- GitLab