From 54f293f89eab7b8a86504eb600995edfc12fdb76 Mon Sep 17 00:00:00 2001 From: CharlesThobe Date: Tue, 14 Dec 2021 13:06:18 +0200 Subject: [PATCH] Initial organization of files --- .gitignore | 49 + 3rdparty/expat/AUTHORS | 10 + 3rdparty/expat/CMake.README | 42 + 3rdparty/expat/CMakeLists.txt | 713 + 3rdparty/expat/COPYING | 21 + 3rdparty/expat/Changes | 817 + 3rdparty/expat/ConfigureChecks.cmake | 66 + 3rdparty/expat/Makefile.am | 154 + 3rdparty/expat/Makefile.in | 1047 + 3rdparty/expat/README.md | 194 + 3rdparty/expat/acinclude.m4 | 12 + 3rdparty/expat/aclocal.m4 | 1203 + 3rdparty/expat/cmake/expat-config.cmake.in | 75 + 3rdparty/expat/cmake/mingw-toolchain.cmake | 36 + 3rdparty/expat/configure | 21160 ++++ 3rdparty/expat/configure.ac | 345 + 3rdparty/expat/conftools/PrintPath | 116 + 3rdparty/expat/conftools/ar-lib | 271 + .../conftools/ax-append-compile-flags.m4 | 46 + 3rdparty/expat/conftools/ax-append-flag.m4 | 50 + .../expat/conftools/ax-append-link-flags.m4 | 44 + .../expat/conftools/ax-check-compile-flag.m4 | 77 + .../expat/conftools/ax-check-link-flag.m4 | 53 + .../expat/conftools/ax-require-defined.m4 | 37 + 3rdparty/expat/conftools/compile | 348 + 3rdparty/expat/conftools/config.guess | 1676 + 3rdparty/expat/conftools/config.sub | 1814 + 3rdparty/expat/conftools/depcomp | 791 + 3rdparty/expat/conftools/expat.m4 | 43 + .../expatcfg-compiler-supports-visibility.m4 | 39 + 3rdparty/expat/conftools/get-version.sh | 35 + 3rdparty/expat/conftools/install-sh | 529 + 3rdparty/expat/conftools/ltmain.sh | 11210 +++ 3rdparty/expat/conftools/missing | 215 + 3rdparty/expat/conftools/test-driver | 148 + 3rdparty/expat/doc/Makefile.am | 59 + 3rdparty/expat/doc/Makefile.in | 602 + 3rdparty/expat/doc/expat.png | Bin 0 -> 920 bytes 3rdparty/expat/doc/reference.html | 2396 + 3rdparty/expat/doc/style.css | 101 + 3rdparty/expat/doc/valid-xhtml10.png | Bin 0 -> 1981 bytes 3rdparty/expat/doc/xmlwf.1 | 263 + 3rdparty/expat/doc/xmlwf.xml | 473 + 3rdparty/expat/examples/Makefile.am | 39 + 3rdparty/expat/examples/Makefile.in | 660 + 3rdparty/expat/examples/elements.c | 97 + 3rdparty/expat/examples/outline.c | 119 + 3rdparty/expat/expat.pc.in | 11 + 3rdparty/expat/expat_config.h.cmake | 115 + 3rdparty/expat/expat_config.h.in | 132 + 3rdparty/expat/fix-xmltest-log.sh | 48 + 3rdparty/expat/lib/Makefile.am | 76 + 3rdparty/expat/lib/Makefile.in | 810 + 3rdparty/expat/lib/ascii.h | 120 + 3rdparty/expat/lib/asciitab.h | 64 + 3rdparty/expat/lib/expat.h | 1024 + 3rdparty/expat/lib/expat_external.h | 158 + 3rdparty/expat/lib/iasciitab.h | 65 + 3rdparty/expat/lib/internal.h | 123 + 3rdparty/expat/lib/latin1tab.h | 64 + 3rdparty/expat/lib/libexpat.def | 78 + 3rdparty/expat/lib/libexpatw.def | 78 + 3rdparty/expat/lib/nametab.h | 136 + 3rdparty/expat/lib/siphash.h | 398 + 3rdparty/expat/lib/utf8tab.h | 64 + 3rdparty/expat/lib/winconfig.h | 56 + 3rdparty/expat/lib/xmlparse.c | 6914 ++ 3rdparty/expat/lib/xmlrole.c | 1249 + 3rdparty/expat/lib/xmlrole.h | 139 + 3rdparty/expat/lib/xmltok.c | 1672 + 3rdparty/expat/lib/xmltok.h | 315 + 3rdparty/expat/lib/xmltok_impl.c | 1805 + 3rdparty/expat/lib/xmltok_impl.h | 73 + 3rdparty/expat/lib/xmltok_ns.c | 118 + 3rdparty/expat/m4/libtool.m4 | 8387 ++ 3rdparty/expat/m4/ltoptions.m4 | 437 + 3rdparty/expat/m4/ltsugar.m4 | 124 + 3rdparty/expat/m4/ltversion.m4 | 23 + 3rdparty/expat/m4/lt~obsolete.m4 | 99 + 3rdparty/expat/run.sh.in | 12 + 3rdparty/expat/test-driver-wrapper.sh | 43 + 3rdparty/expat/tests/Makefile.am | 66 + 3rdparty/expat/tests/Makefile.in | 1254 + 3rdparty/expat/tests/README.txt | 13 + 3rdparty/expat/tests/benchmark/Makefile.am | 40 + 3rdparty/expat/tests/benchmark/Makefile.in | 651 + 3rdparty/expat/tests/benchmark/README.txt | 16 + 3rdparty/expat/tests/benchmark/benchmark.c | 145 + 3rdparty/expat/tests/chardata.c | 98 + 3rdparty/expat/tests/chardata.h | 60 + 3rdparty/expat/tests/memcheck.c | 190 + 3rdparty/expat/tests/memcheck.h | 57 + 3rdparty/expat/tests/minicheck.c | 229 + 3rdparty/expat/tests/minicheck.h | 119 + 3rdparty/expat/tests/runtests.c | 11637 +++ 3rdparty/expat/tests/runtestspp.cpp | 36 + 3rdparty/expat/tests/structdata.c | 155 + 3rdparty/expat/tests/structdata.h | 70 + 3rdparty/expat/tests/udiffer.py | 62 + 3rdparty/expat/tests/xmltest.log.expected | 10 + 3rdparty/expat/tests/xmltest.sh | 142 + 3rdparty/expat/win32/MANIFEST.txt | 25 + 3rdparty/expat/win32/README.txt | 60 + 3rdparty/expat/win32/build_expat_iss.bat | 84 + 3rdparty/expat/win32/expat.iss | 69 + 3rdparty/expat/xmlwf/Makefile.am | 60 + 3rdparty/expat/xmlwf/Makefile.in | 783 + 3rdparty/expat/xmlwf/codepage.c | 94 + 3rdparty/expat/xmlwf/codepage.h | 34 + 3rdparty/expat/xmlwf/ct.c | 173 + 3rdparty/expat/xmlwf/filemap.h | 53 + 3rdparty/expat/xmlwf/readfilemap.c | 140 + 3rdparty/expat/xmlwf/unixfilemap.c | 103 + 3rdparty/expat/xmlwf/win32filemap.c | 118 + 3rdparty/expat/xmlwf/xmlfile.c | 273 + 3rdparty/expat/xmlwf/xmlfile.h | 43 + 3rdparty/expat/xmlwf/xmlmime.c | 191 + 3rdparty/expat/xmlwf/xmlmime.h | 51 + 3rdparty/expat/xmlwf/xmltchar.h | 74 + 3rdparty/expat/xmlwf/xmlwf.c | 1130 + 3rdparty/expat/xmlwf/xmlwf_helpgen.py | 69 + 3rdparty/expat/xmlwf/xmlwf_helpgen.sh | 35 + 3rdparty/libflac/AUTHORS | 41 + 3rdparty/libflac/COPYING.FDL | 397 + 3rdparty/libflac/COPYING.GPL | 340 + 3rdparty/libflac/COPYING.LGPL | 504 + 3rdparty/libflac/COPYING.Xiph | 28 + 3rdparty/libflac/FLAC.dsw | 683 + 3rdparty/libflac/FLAC.sln | 265 + 3rdparty/libflac/Makefile.am | 52 + 3rdparty/libflac/Makefile.in | 673 + 3rdparty/libflac/Makefile.lite | 106 + 3rdparty/libflac/README | 254 + 3rdparty/libflac/aclocal.m4 | 8287 ++ 3rdparty/libflac/all.dsp | 67 + 3rdparty/libflac/all_dynamic.dsp | 67 + 3rdparty/libflac/all_static.dsp | 67 + 3rdparty/libflac/autogen.sh | 162 + 3rdparty/libflac/build/Makefile.am | 21 + 3rdparty/libflac/build/Makefile.in | 375 + 3rdparty/libflac/build/config.mk | 52 + 3rdparty/libflac/build/exe.mk | 97 + 3rdparty/libflac/build/lib.mk | 124 + 3rdparty/libflac/config.guess | 1411 + 3rdparty/libflac/config.h.in | 134 + 3rdparty/libflac/config.rpath | 571 + 3rdparty/libflac/config.sub | 1500 + 3rdparty/libflac/configure | 25257 +++++ 3rdparty/libflac/configure.in | 390 + 3rdparty/libflac/depcomp | 479 + 3rdparty/libflac/doc/Doxyfile | 1220 + 3rdparty/libflac/doc/FLAC.tag | 12259 +++ 3rdparty/libflac/doc/Makefile.am | 43 + 3rdparty/libflac/doc/Makefile.in | 566 + 3rdparty/libflac/doc/Makefile.lite | 28 + 3rdparty/libflac/doc/doxygen.footer.html | 23 + 3rdparty/libflac/doc/doxygen.header.html | 6 + 3rdparty/libflac/doc/html/Makefile.am | 80 + 3rdparty/libflac/doc/html/Makefile.in | 607 + .../doc/html/api/+_2all_8h-source.html | 73 + .../doc/html/api/+_2export_8h-source.html | 89 + .../libflac/doc/html/api/+_2export_8h.html | 55 + .../doc/html/api/+_2metadata_8h-source.html | 751 + .../libflac/doc/html/api/+_2metadata_8h.html | 66 + .../libflac/doc/html/api/all_8h-source.html | 77 + 3rdparty/libflac/doc/html/api/annotated.html | 81 + .../doc/html/api/assert_8h-source.html | 77 + .../doc/html/api/callback_8h-source.html | 103 + .../libflac/doc/html/api/callback_8h.html | 59 + .../classFLAC_1_1Decoder_1_1File-members.html | 87 + .../api/classFLAC_1_1Decoder_1_1File.html | 1457 + .../html/api/classFLAC_1_1Decoder_1_1File.png | Bin 0 -> 488 bytes ...lassFLAC_1_1Decoder_1_1Stream-members.html | 79 + .../api/classFLAC_1_1Decoder_1_1Stream.html | 1268 + .../api/classFLAC_1_1Decoder_1_1Stream.png | Bin 0 -> 499 bytes ...1_1Decoder_1_1Stream_1_1State-members.html | 36 + ...assFLAC_1_1Decoder_1_1Stream_1_1State.html | 59 + .../classFLAC_1_1Encoder_1_1File-members.html | 102 + .../api/classFLAC_1_1Encoder_1_1File.html | 2124 + .../html/api/classFLAC_1_1Encoder_1_1File.png | Bin 0 -> 492 bytes ...lassFLAC_1_1Encoder_1_1Stream-members.html | 93 + .../api/classFLAC_1_1Encoder_1_1Stream.html | 1882 + .../api/classFLAC_1_1Encoder_1_1Stream.png | Bin 0 -> 502 bytes ...1_1Encoder_1_1Stream_1_1State-members.html | 36 + ...assFLAC_1_1Encoder_1_1Stream_1_1State.html | 59 + ...AC_1_1Metadata_1_1Application-members.html | 71 + .../classFLAC_1_1Metadata_1_1Application.html | 548 + .../classFLAC_1_1Metadata_1_1Application.png | Bin 0 -> 576 bytes ...lassFLAC_1_1Metadata_1_1Chain-members.html | 46 + .../api/classFLAC_1_1Metadata_1_1Chain.html | 453 + ..._1Metadata_1_1Chain_1_1Status-members.html | 35 + ...ssFLAC_1_1Metadata_1_1Chain_1_1Status.html | 56 + ...sFLAC_1_1Metadata_1_1CueSheet-members.html | 82 + .../classFLAC_1_1Metadata_1_1CueSheet.html | 799 + .../api/classFLAC_1_1Metadata_1_1CueSheet.png | Bin 0 -> 562 bytes ...Metadata_1_1CueSheet_1_1Track-members.html | 52 + ...FLAC_1_1Metadata_1_1CueSheet_1_1Track.html | 131 + ...sFLAC_1_1Metadata_1_1Iterator-members.html | 45 + .../classFLAC_1_1Metadata_1_1Iterator.html | 370 + ...ssFLAC_1_1Metadata_1_1Padding-members.html | 67 + .../api/classFLAC_1_1Metadata_1_1Padding.html | 498 + .../api/classFLAC_1_1Metadata_1_1Padding.png | Bin 0 -> 562 bytes ...ssFLAC_1_1Metadata_1_1Picture-members.html | 82 + .../api/classFLAC_1_1Metadata_1_1Picture.html | 696 + .../api/classFLAC_1_1Metadata_1_1Picture.png | Bin 0 -> 550 bytes ...FLAC_1_1Metadata_1_1Prototype-members.html | 56 + .../classFLAC_1_1Metadata_1_1Prototype.html | 435 + .../classFLAC_1_1Metadata_1_1Prototype.png | Bin 0 -> 2712 bytes ...FLAC_1_1Metadata_1_1SeekTable-members.html | 72 + .../classFLAC_1_1Metadata_1_1SeekTable.html | 646 + .../classFLAC_1_1Metadata_1_1SeekTable.png | Bin 0 -> 577 bytes ...1_1Metadata_1_1SimpleIterator-members.html | 50 + ...assFLAC_1_1Metadata_1_1SimpleIterator.html | 561 + ...a_1_1SimpleIterator_1_1Status-members.html | 35 + ...1Metadata_1_1SimpleIterator_1_1Status.html | 56 + ...LAC_1_1Metadata_1_1StreamInfo-members.html | 84 + .../classFLAC_1_1Metadata_1_1StreamInfo.html | 575 + .../classFLAC_1_1Metadata_1_1StreamInfo.png | Bin 0 -> 575 bytes ...ssFLAC_1_1Metadata_1_1Unknown-members.html | 69 + .../api/classFLAC_1_1Metadata_1_1Unknown.html | 542 + .../api/classFLAC_1_1Metadata_1_1Unknown.png | Bin 0 -> 552 bytes ..._1_1Metadata_1_1VorbisComment-members.html | 74 + ...lassFLAC_1_1Metadata_1_1VorbisComment.html | 685 + ...classFLAC_1_1Metadata_1_1VorbisComment.png | Bin 0 -> 618 bytes ...ata_1_1VorbisComment_1_1Entry-members.html | 58 + ...1_1Metadata_1_1VorbisComment_1_1Entry.html | 152 + 3rdparty/libflac/doc/html/api/classes.html | 41 + .../doc/html/api/decoder_8h-source.html | 190 + 3rdparty/libflac/doc/html/api/decoder_8h.html | 50 + 3rdparty/libflac/doc/html/api/dir_000000.html | 42 + 3rdparty/libflac/doc/html/api/dir_000001.html | 48 + 3rdparty/libflac/doc/html/api/dir_000002.html | 56 + 3rdparty/libflac/doc/html/api/dirs.html | 37 + 3rdparty/libflac/doc/html/api/doxygen.css | 309 + 3rdparty/libflac/doc/html/api/doxygen.png | Bin 0 -> 1281 bytes .../doc/html/api/encoder_8h-source.html | 203 + 3rdparty/libflac/doc/html/api/encoder_8h.html | 51 + .../doc/html/api/export_8h-source.html | 95 + 3rdparty/libflac/doc/html/api/export_8h.html | 55 + 3rdparty/libflac/doc/html/api/files.html | 46 + .../doc/html/api/format_8h-source.html | 521 + 3rdparty/libflac/doc/html/api/format_8h.html | 330 + 3rdparty/libflac/doc/html/api/functions.html | 260 + .../libflac/doc/html/api/functions_func.html | 210 + .../libflac/doc/html/api/functions_vars.html | 117 + 3rdparty/libflac/doc/html/api/globals.html | 39 + .../libflac/doc/html/api/globals_0x66.html | 529 + .../libflac/doc/html/api/globals_0x67.html | 42 + .../libflac/doc/html/api/globals_defs.html | 58 + .../libflac/doc/html/api/globals_enum.html | 57 + .../libflac/doc/html/api/globals_eval.html | 177 + .../libflac/doc/html/api/globals_func.html | 233 + .../libflac/doc/html/api/globals_type.html | 59 + .../libflac/doc/html/api/globals_vars.html | 135 + .../libflac/doc/html/api/group__flac.html | 50 + .../doc/html/api/group__flac__callbacks.html | 299 + .../doc/html/api/group__flac__decoder.html | 44 + .../doc/html/api/group__flac__encoder.html | 44 + .../doc/html/api/group__flac__export.html | 148 + .../doc/html/api/group__flac__format.html | 3353 + .../doc/html/api/group__flac__metadata.html | 60 + .../api/group__flac__metadata__level0.html | 308 + .../api/group__flac__metadata__level1.html | 950 + .../api/group__flac__metadata__level2.html | 1428 + .../api/group__flac__metadata__object.html | 2741 + .../api/group__flac__stream__decoder.html | 2854 + .../api/group__flac__stream__encoder.html | 3644 + .../libflac/doc/html/api/group__flacpp.html | 45 + .../doc/html/api/group__flacpp__decoder.html | 50 + .../doc/html/api/group__flacpp__encoder.html | 50 + .../doc/html/api/group__flacpp__export.html | 54 + .../doc/html/api/group__flacpp__metadata.html | 50 + .../api/group__flacpp__metadata__level0.html | 414 + .../api/group__flacpp__metadata__level1.html | 50 + .../api/group__flacpp__metadata__level2.html | 52 + .../api/group__flacpp__metadata__object.html | 227 + .../libflac/doc/html/api/group__porting.html | 52 + .../group__porting__1__1__2__to__1__1__3.html | 101 + .../group__porting__1__1__3__to__1__1__4.html | 38 + .../group__porting__1__1__4__to__1__2__0.html | 39 + 3rdparty/libflac/doc/html/api/hierarchy.html | 87 + 3rdparty/libflac/doc/html/api/index.html | 57 + .../doc/html/api/metadata_8h-source.html | 335 + .../libflac/doc/html/api/metadata_8h.html | 283 + 3rdparty/libflac/doc/html/api/modules.html | 72 + .../doc/html/api/ordinals_8h-source.html | 112 + .../html/api/stream__decoder_8h-source.html | 333 + .../doc/html/api/stream__decoder_8h.html | 206 + .../html/api/stream__encoder_8h-source.html | 305 + .../doc/html/api/stream__encoder_8h.html | 236 + ...ctFLAC____EntropyCodingMethod-members.html | 34 + .../structFLAC____EntropyCodingMethod.html | 54 + ...CodingMethod__PartitionedRice-members.html | 33 + ..._EntropyCodingMethod__PartitionedRice.html | 95 + ...thod__PartitionedRiceContents-members.html | 34 + ...CodingMethod__PartitionedRiceContents.html | 120 + .../html/api/structFLAC____Frame-members.html | 34 + .../doc/html/api/structFLAC____Frame.html | 53 + .../structFLAC____FrameFooter-members.html | 32 + .../html/api/structFLAC____FrameFooter.html | 70 + .../structFLAC____FrameHeader-members.html | 41 + .../html/api/structFLAC____FrameHeader.html | 251 + .../structFLAC____IOCallbacks-members.html | 37 + .../html/api/structFLAC____IOCallbacks.html | 63 + .../structFLAC____StreamDecoder-members.html | 33 + .../html/api/structFLAC____StreamDecoder.html | 50 + .../structFLAC____StreamEncoder-members.html | 33 + .../html/api/structFLAC____StreamEncoder.html | 50 + .../structFLAC____StreamMetadata-members.html | 43 + .../api/structFLAC____StreamMetadata.html | 163 + ...__StreamMetadata__Application-members.html | 33 + ...ctFLAC____StreamMetadata__Application.html | 50 + ...C____StreamMetadata__CueSheet-members.html | 36 + ...tructFLAC____StreamMetadata__CueSheet.html | 170 + ...reamMetadata__CueSheet__Index-members.html | 33 + ...AC____StreamMetadata__CueSheet__Index.html | 95 + ...reamMetadata__CueSheet__Track-members.html | 38 + ...AC____StreamMetadata__CueSheet__Track.html | 220 + ...AC____StreamMetadata__Padding-members.html | 32 + ...structFLAC____StreamMetadata__Padding.html | 70 + ...AC____StreamMetadata__Picture-members.html | 40 + ...structFLAC____StreamMetadata__Picture.html | 270 + ...____StreamMetadata__SeekPoint-members.html | 34 + ...ructFLAC____StreamMetadata__SeekPoint.html | 120 + ...____StreamMetadata__SeekTable-members.html | 33 + ...ructFLAC____StreamMetadata__SeekTable.html | 54 + ...___StreamMetadata__StreamInfo-members.html | 40 + ...uctFLAC____StreamMetadata__StreamInfo.html | 71 + ...AC____StreamMetadata__Unknown-members.html | 32 + ...structFLAC____StreamMetadata__Unknown.html | 47 + ...StreamMetadata__VorbisComment-members.html | 34 + ...FLAC____StreamMetadata__VorbisComment.html | 53 + ...etadata__VorbisComment__Entry-members.html | 33 + ..._StreamMetadata__VorbisComment__Entry.html | 52 + .../api/structFLAC____Subframe-members.html | 38 + .../doc/html/api/structFLAC____Subframe.html | 63 + ...uctFLAC____Subframe__Constant-members.html | 32 + .../api/structFLAC____Subframe__Constant.html | 70 + ...structFLAC____Subframe__Fixed-members.html | 35 + .../api/structFLAC____Subframe__Fixed.html | 145 + .../structFLAC____Subframe__LPC-members.html | 38 + .../html/api/structFLAC____Subframe__LPC.html | 220 + ...uctFLAC____Subframe__Verbatim-members.html | 32 + .../api/structFLAC____Subframe__Verbatim.html | 70 + 3rdparty/libflac/doc/html/changelog.html | 832 + 3rdparty/libflac/doc/html/comparison.html | 431 + .../html/comparison__chopin_prelude_24.html | 168 + .../html/comparison__dream_theater_600.html | 168 + .../html/comparison__eddie_warner_titus.html | 168 + ...ison__fanfare_de_l_eventail_de_jeanne.html | 168 + .../comparison__gloria_estefan_conga.html | 168 + .../html/comparison__hand_in_my_pocket.html | 168 + .../comparison__l_sub_raga_sivapriya.html | 168 + .../doc/html/comparison__laetatus_sum.html | 168 + .../comparison__mummified_in_barbed_wire.html | 168 + .../html/comparison__prokofiev_pcon3_3.html | 168 + .../doc/html/comparison__ravel_sq4_4.html | 168 + .../doc/html/comparison__scarlatti_k42.html | 168 + .../comparison__tool_forty_six_and_2.html | 168 + .../doc/html/comparison__white_room.html | 168 + .../doc/html/comparison_all_cpudectime.html | 165 + .../doc/html/comparison_all_cpuenctime.html | 165 + .../doc/html/comparison_all_procdectime.html | 165 + .../doc/html/comparison_all_procenctime.html | 165 + .../doc/html/comparison_all_ratio.html | 165 + 3rdparty/libflac/doc/html/developers.html | 141 + 3rdparty/libflac/doc/html/documentation.html | 105 + .../libflac/doc/html/documentation_bugs.html | 101 + .../doc/html/documentation_example_code.html | 81 + .../html/documentation_format_overview.html | 130 + .../libflac/doc/html/documentation_tasks.html | 226 + .../libflac/doc/html/documentation_tools.html | 92 + .../doc/html/documentation_tools_flac.html | 1135 + .../html/documentation_tools_metaflac.html | 570 + .../doc/html/documentation_tools_plugins.html | 94 + 3rdparty/libflac/doc/html/download.html | 284 + 3rdparty/libflac/doc/html/faq.html | 402 + 3rdparty/libflac/doc/html/favicon.ico | Bin 0 -> 1406 bytes 3rdparty/libflac/doc/html/features.html | 127 + 3rdparty/libflac/doc/html/flac.css | 191 + 3rdparty/libflac/doc/html/format.html | 1852 + 3rdparty/libflac/doc/html/id.html | 289 + 3rdparty/libflac/doc/html/images/1x1.gif | Bin 0 -> 61 bytes 3rdparty/libflac/doc/html/images/Makefile.am | 30 + 3rdparty/libflac/doc/html/images/Makefile.in | 554 + 3rdparty/libflac/doc/html/images/cafebug.gif | Bin 0 -> 2371 bytes .../images/hw/Blackbird_Front_low3_325x87.jpg | Bin 0 -> 4052 bytes .../images/hw/MS300frontsmall_270x108.jpg | Bin 0 -> 5153 bytes .../libflac/doc/html/images/hw/Makefile.am | 52 + .../libflac/doc/html/images/hw/Makefile.in | 427 + .../html/images/hw/MediaBox_Frt_170x325.jpg | Bin 0 -> 8004 bytes .../html/images/hw/SB_Hero_Black_325x182.jpg | Bin 0 -> 8229 bytes .../images/hw/Sooloos-ControlOne_325x328.jpg | Bin 0 -> 17304 bytes .../doc/html/images/hw/Z500_front_325x94.jpg | Bin 0 -> 5155 bytes .../doc/html/images/hw/a2_01_325x252.jpg | Bin 0 -> 15381 bytes .../doc/html/images/hw/arcus_325x135.jpg | Bin 0 -> 5887 bytes .../doc/html/images/hw/bmp-1430_325x241.jpg | Bin 0 -> 16381 bytes .../images/hw/cs505_front_lrg_325x113.jpg | Bin 0 -> 4714 bytes ...s_3-4lft-hires_product_eva8000_325x127.jpg | Bin 0 -> 7461 bytes .../images/hw/escient_ProductLine_325x163.jpg | Bin 0 -> 11972 bytes .../hw/hifidelio_bl_front_Z_RGB_325x163.jpg | Bin 0 -> 7835 bytes .../images/hw/i-station-mini-dx_325x237.jpg | Bin 0 -> 11164 bytes .../doc/html/images/hw/iwod-g10_325x257.jpg | Bin 0 -> 13591 bytes .../html/images/hw/knc_hr-2800_325x209.jpg | Bin 0 -> 13385 bytes .../hw/mediaready_prodmain_MRMCa_325x232.jpg | Bin 0 -> 19199 bytes .../doc/html/images/hw/meizu_m6_325x206.jpg | Bin 0 -> 15043 bytes .../html/images/hw/musica_artwork_325x90.jpg | Bin 0 -> 6815 bytes .../images/hw/neodigits_x5000_325x124.jpg | Bin 0 -> 5347 bytes .../doc/html/images/hw/onda-vx737_325x240.jpg | Bin 0 -> 16304 bytes .../images/hw/request_n_front_325x103.jpg | Bin 0 -> 6406 bytes .../doc/html/images/hw/rio_karma_279x254.jpg | Bin 0 -> 10570 bytes .../images/hw/sonos_family_RGB_325x200.jpg | Bin 0 -> 7843 bytes .../html/images/hw/teclast-tl29_325x244.jpg | Bin 0 -> 12000 bytes .../hw/transporter_hero_grey_325x208.jpg | Bin 0 -> 9984 bytes .../doc/html/images/hw/tvix-4000_325x204.jpg | Bin 0 -> 7685 bytes .../hw/vibez_nofm_combi_black_b_325x220.jpg | Bin 0 -> 10940 bytes 3rdparty/libflac/doc/html/images/logo100.gif | Bin 0 -> 2411 bytes 3rdparty/libflac/doc/html/images/logo130.gif | Bin 0 -> 3738 bytes 3rdparty/libflac/doc/html/index.html | 148 + 3rdparty/libflac/doc/html/itunes.html | 91 + 3rdparty/libflac/doc/html/license.html | 93 + 3rdparty/libflac/doc/html/links.html | 485 + 3rdparty/libflac/doc/html/news.html | 697 + 3rdparty/libflac/doc/html/ogg_mapping.html | 138 + 3rdparty/libflac/doc/html/ru/Makefile.am | 36 + 3rdparty/libflac/doc/html/ru/Makefile.in | 411 + 3rdparty/libflac/doc/html/ru/authors.html | 112 + 3rdparty/libflac/doc/html/ru/comparison.html | 864 + 3rdparty/libflac/doc/html/ru/developers.html | 109 + .../libflac/doc/html/ru/documentation.html | 516 + 3rdparty/libflac/doc/html/ru/download.html | 109 + 3rdparty/libflac/doc/html/ru/features.html | 124 + 3rdparty/libflac/doc/html/ru/format.html | 1006 + 3rdparty/libflac/doc/html/ru/goals.html | 104 + 3rdparty/libflac/doc/html/ru/id.html | 128 + 3rdparty/libflac/doc/html/ru/index.html | 121 + 3rdparty/libflac/doc/html/ru/links.html | 124 + 3rdparty/libflac/doc/html/ru/news.html | 304 + 3rdparty/libflac/examples/Makefile.am | 27 + 3rdparty/libflac/examples/Makefile.in | 528 + 3rdparty/libflac/examples/Makefile.lite | 49 + 3rdparty/libflac/examples/README | 12 + 3rdparty/libflac/examples/c/Makefile.am | 18 + 3rdparty/libflac/examples/c/Makefile.in | 520 + .../libflac/examples/c/decode/Makefile.am | 18 + .../libflac/examples/c/decode/Makefile.in | 520 + .../examples/c/decode/file/Makefile.am | 29 + .../examples/c/decode/file/Makefile.in | 512 + .../examples/c/decode/file/Makefile.lite | 39 + .../c/decode/file/example_c_decode_file.dsp | 100 + .../decode/file/example_c_decode_file.vcproj | 204 + .../libflac/examples/c/decode/file/main.c | 190 + .../libflac/examples/c/encode/Makefile.am | 18 + .../libflac/examples/c/encode/Makefile.in | 520 + .../examples/c/encode/file/Makefile.am | 29 + .../examples/c/encode/file/Makefile.in | 512 + .../examples/c/encode/file/Makefile.lite | 39 + .../c/encode/file/example_c_encode_file.dsp | 100 + .../encode/file/example_c_encode_file.vcproj | 204 + .../libflac/examples/c/encode/file/main.c | 173 + 3rdparty/libflac/examples/cpp/Makefile.am | 18 + 3rdparty/libflac/examples/cpp/Makefile.in | 520 + .../libflac/examples/cpp/decode/Makefile.am | 18 + .../libflac/examples/cpp/decode/Makefile.in | 520 + .../examples/cpp/decode/file/Makefile.am | 30 + .../examples/cpp/decode/file/Makefile.in | 515 + .../examples/cpp/decode/file/Makefile.lite | 41 + .../decode/file/example_cpp_decode_file.dsp | 100 + .../file/example_cpp_decode_file.vcproj | 204 + .../libflac/examples/cpp/decode/file/main.cpp | 189 + .../libflac/examples/cpp/encode/Makefile.am | 18 + .../libflac/examples/cpp/encode/Makefile.in | 520 + .../examples/cpp/encode/file/Makefile.am | 30 + .../examples/cpp/encode/file/Makefile.in | 515 + .../examples/cpp/encode/file/Makefile.lite | 41 + .../encode/file/example_cpp_encode_file.dsp | 100 + .../file/example_cpp_encode_file.vcproj | 204 + .../libflac/examples/cpp/encode/file/main.cpp | 175 + 3rdparty/libflac/examples/examples.dsp | 67 + 3rdparty/libflac/include/FLAC++/Makefile.am | 38 + 3rdparty/libflac/include/FLAC++/Makefile.in | 464 + 3rdparty/libflac/include/FLAC++/all.h | 48 + 3rdparty/libflac/include/FLAC++/decoder.h | 245 + 3rdparty/libflac/include/FLAC++/encoder.h | 260 + 3rdparty/libflac/include/FLAC++/export.h | 80 + 3rdparty/libflac/include/FLAC++/metadata.h | 1156 + 3rdparty/libflac/include/FLAC/Makefile.am | 42 + 3rdparty/libflac/include/FLAC/Makefile.in | 467 + 3rdparty/libflac/include/FLAC/all.h | 370 + 3rdparty/libflac/include/FLAC/assert.h | 45 + 3rdparty/libflac/include/FLAC/callback.h | 184 + 3rdparty/libflac/include/FLAC/export.h | 91 + 3rdparty/libflac/include/FLAC/format.h | 1010 + 3rdparty/libflac/include/FLAC/metadata.h | 2181 + 3rdparty/libflac/include/FLAC/ordinals.h | 80 + .../libflac/include/FLAC/stream_decoder.h | 1559 + .../libflac/include/FLAC/stream_encoder.h | 1768 + 3rdparty/libflac/include/Makefile.am | 22 + 3rdparty/libflac/include/Makefile.in | 522 + 3rdparty/libflac/include/share/Makefile.am | 14 + 3rdparty/libflac/include/share/Makefile.in | 514 + 3rdparty/libflac/include/share/alloc.h | 212 + 3rdparty/libflac/include/share/endswap.h | 77 + 3rdparty/libflac/include/share/getopt.h | 184 + 3rdparty/libflac/include/share/grabbag.h | 29 + .../libflac/include/share/grabbag/Makefile.am | 10 + .../libflac/include/share/grabbag/Makefile.in | 362 + .../libflac/include/share/grabbag/cuesheet.h | 42 + 3rdparty/libflac/include/share/grabbag/file.h | 63 + .../libflac/include/share/grabbag/picture.h | 46 + .../include/share/grabbag/replaygain.h | 72 + .../libflac/include/share/grabbag/seektable.h | 38 + .../include/share/replaygain_analysis.h | 59 + .../include/share/replaygain_synthesis.h | 51 + 3rdparty/libflac/include/share/utf8.h | 25 + .../include/test_libs_common/Makefile.am | 7 + .../include/test_libs_common/Makefile.in | 359 + .../test_libs_common/file_utils_flac.h | 34 + .../include/test_libs_common/metadata_utils.h | 70 + 3rdparty/libflac/install-sh | 294 + 3rdparty/libflac/ltmain.sh | 6496 ++ 3rdparty/libflac/m4/Makefile.am | 20 + 3rdparty/libflac/m4/Makefile.in | 374 + 3rdparty/libflac/m4/ogg.m4 | 102 + 3rdparty/libflac/m4/xmms.m4 | 148 + 3rdparty/libflac/man/Makefile.am | 35 + 3rdparty/libflac/man/Makefile.in | 438 + 3rdparty/libflac/man/flac.1 | 331 + 3rdparty/libflac/man/flac.sgml | 727 + 3rdparty/libflac/man/metaflac.1 | 299 + 3rdparty/libflac/man/metaflac.sgml | 570 + 3rdparty/libflac/missing | 336 + 3rdparty/libflac/mkinstalldirs | 111 + 3rdparty/libflac/obj/Makefile.am | 20 + 3rdparty/libflac/obj/Makefile.in | 523 + 3rdparty/libflac/obj/debug/Makefile.am | 20 + 3rdparty/libflac/obj/debug/Makefile.in | 523 + 3rdparty/libflac/obj/debug/bin/Makefile.am | 16 + 3rdparty/libflac/obj/debug/bin/Makefile.in | 369 + 3rdparty/libflac/obj/debug/lib/Makefile.am | 16 + 3rdparty/libflac/obj/debug/lib/Makefile.in | 369 + 3rdparty/libflac/obj/release/Makefile.am | 20 + 3rdparty/libflac/obj/release/Makefile.in | 523 + 3rdparty/libflac/obj/release/bin/Makefile.am | 16 + 3rdparty/libflac/obj/release/bin/Makefile.in | 369 + 3rdparty/libflac/obj/release/lib/Makefile.am | 16 + 3rdparty/libflac/obj/release/lib/Makefile.in | 369 + 3rdparty/libflac/src/Makefile.am | 42 + 3rdparty/libflac/src/Makefile.in | 545 + 3rdparty/libflac/src/Makefile.lite | 61 + 3rdparty/libflac/src/flac/Makefile.am | 58 + 3rdparty/libflac/src/flac/Makefile.in | 584 + 3rdparty/libflac/src/flac/Makefile.lite | 47 + .../libflac/src/flac/Makefile.lite.iffscan | 41 + 3rdparty/libflac/src/flac/analyze.c | 247 + 3rdparty/libflac/src/flac/analyze.h | 31 + 3rdparty/libflac/src/flac/decode.c | 1380 + 3rdparty/libflac/src/flac/decode.h | 74 + 3rdparty/libflac/src/flac/encode.c | 2936 + 3rdparty/libflac/src/flac/encode.h | 122 + 3rdparty/libflac/src/flac/flac.dsp | 156 + 3rdparty/libflac/src/flac/flac.vcproj | 260 + 3rdparty/libflac/src/flac/foreign_metadata.c | 588 + 3rdparty/libflac/src/flac/foreign_metadata.h | 59 + 3rdparty/libflac/src/flac/iffscan.c | 112 + 3rdparty/libflac/src/flac/iffscan.dsp | 108 + 3rdparty/libflac/src/flac/iffscan.vcproj | 212 + .../libflac/src/flac/local_string_utils.c | 109 + .../libflac/src/flac/local_string_utils.h | 27 + 3rdparty/libflac/src/flac/main.c | 2181 + 3rdparty/libflac/src/flac/utils.c | 316 + 3rdparty/libflac/src/flac/utils.h | 63 + 3rdparty/libflac/src/flac/vorbiscomment.c | 248 + 3rdparty/libflac/src/flac/vorbiscomment.h | 26 + 3rdparty/libflac/src/libFLAC++/Makefile.am | 55 + 3rdparty/libflac/src/libFLAC++/Makefile.in | 607 + 3rdparty/libflac/src/libFLAC++/Makefile.lite | 47 + 3rdparty/libflac/src/libFLAC++/flac++.pc.in | 11 + 3rdparty/libflac/src/libFLAC++/libFLAC++.m4 | 117 + .../src/libFLAC++/libFLAC++_dynamic.dsp | 139 + .../src/libFLAC++/libFLAC++_dynamic.vcproj | 230 + .../src/libFLAC++/libFLAC++_static.dsp | 132 + .../src/libFLAC++/libFLAC++_static.vcproj | 203 + 3rdparty/libflac/src/libFLAC++/metadata.cpp | 1589 + .../libflac/src/libFLAC++/stream_decoder.cpp | 389 + .../libflac/src/libFLAC++/stream_encoder.cpp | 511 + 3rdparty/libflac/src/libFLAC/Makefile.am | 118 + 3rdparty/libflac/src/libFLAC/Makefile.in | 872 + 3rdparty/libflac/src/libFLAC/Makefile.lite | 90 + 3rdparty/libflac/src/libFLAC/bitmath.c | 149 + 3rdparty/libflac/src/libFLAC/bitreader.c | 1331 + 3rdparty/libflac/src/libFLAC/bitwriter.c | 865 + 3rdparty/libflac/src/libFLAC/cpu.c | 422 + 3rdparty/libflac/src/libFLAC/crc.c | 142 + 3rdparty/libflac/src/libFLAC/fixed.c | 435 + 3rdparty/libflac/src/libFLAC/flac.pc.in | 10 + 3rdparty/libflac/src/libFLAC/float.c | 308 + 3rdparty/libflac/src/libFLAC/format.c | 593 + 3rdparty/libflac/src/libFLAC/ia32/Makefile.am | 45 + 3rdparty/libflac/src/libFLAC/ia32/Makefile.in | 487 + .../src/libFLAC/ia32/bitreader_asm.nasm | 568 + .../libflac/src/libFLAC/ia32/cpu_asm.nasm | 121 + .../libflac/src/libFLAC/ia32/fixed_asm.nasm | 312 + .../libflac/src/libFLAC/ia32/lpc_asm.nasm | 1511 + 3rdparty/libflac/src/libFLAC/ia32/nasm.h | 75 + .../src/libFLAC/ia32/stream_encoder_asm.nasm | 159 + .../libflac/src/libFLAC/include/Makefile.am | 31 + .../libflac/src/libFLAC/include/Makefile.in | 533 + 3rdparty/libflac/src/libFLAC/include/config.h | 1 + .../src/libFLAC/include/private/Makefile.am | 50 + .../src/libFLAC/include/private/Makefile.in | 455 + .../libflac/src/libFLAC/include/private/all.h | 49 + .../src/libFLAC/include/private/bitmath.h | 42 + .../src/libFLAC/include/private/bitreader.h | 99 + .../src/libFLAC/include/private/bitwriter.h | 103 + .../libflac/src/libFLAC/include/private/cpu.h | 88 + .../libflac/src/libFLAC/include/private/crc.h | 61 + .../src/libFLAC/include/private/fixed.h | 97 + .../src/libFLAC/include/private/float.h | 97 + .../src/libFLAC/include/private/format.h | 44 + .../libflac/src/libFLAC/include/private/lpc.h | 214 + .../libflac/src/libFLAC/include/private/md5.h | 44 + .../src/libFLAC/include/private/memory.h | 56 + .../src/libFLAC/include/private/metadata.h | 45 + .../include/private/ogg_decoder_aspect.h | 79 + .../include/private/ogg_encoder_aspect.h | 62 + .../src/libFLAC/include/private/ogg_helper.h | 43 + .../src/libFLAC/include/private/ogg_mapping.h | 63 + .../include/private/stream_encoder_framing.h | 45 + .../src/libFLAC/include/private/window.h | 71 + .../src/libFLAC/include/protected/Makefile.am | 34 + .../src/libFLAC/include/protected/Makefile.in | 439 + .../src/libFLAC/include/protected/all.h | 38 + .../include/protected/stream_decoder.h | 58 + .../include/protected/stream_encoder.h | 110 + 3rdparty/libflac/src/libFLAC/libFLAC.m4 | 114 + .../libflac/src/libFLAC/libFLAC_dynamic.dsp | 464 + .../src/libFLAC/libFLAC_dynamic.vcproj | 540 + .../libflac/src/libFLAC/libFLAC_static.dsp | 457 + .../libflac/src/libFLAC/libFLAC_static.vcproj | 505 + 3rdparty/libflac/src/libFLAC/lpc.c | 1384 + 3rdparty/libflac/src/libFLAC/md5.c | 424 + 3rdparty/libflac/src/libFLAC/memory.c | 222 + .../libflac/src/libFLAC/metadata_iterators.c | 3363 + .../libflac/src/libFLAC/metadata_object.c | 1819 + .../libflac/src/libFLAC/ogg_decoder_aspect.c | 253 + .../libflac/src/libFLAC/ogg_encoder_aspect.c | 227 + 3rdparty/libflac/src/libFLAC/ogg_helper.c | 209 + 3rdparty/libflac/src/libFLAC/ogg_mapping.c | 47 + 3rdparty/libflac/src/libFLAC/ppc/Makefile.am | 31 + 3rdparty/libflac/src/libFLAC/ppc/Makefile.in | 533 + .../libflac/src/libFLAC/ppc/as/Makefile.am | 52 + .../libflac/src/libFLAC/ppc/as/Makefile.in | 503 + 3rdparty/libflac/src/libFLAC/ppc/as/lpc_asm.s | 429 + .../libflac/src/libFLAC/ppc/gas/Makefile.am | 52 + .../libflac/src/libFLAC/ppc/gas/Makefile.in | 503 + .../libflac/src/libFLAC/ppc/gas/lpc_asm.s | 431 + 3rdparty/libflac/src/libFLAC/stream_decoder.c | 3390 + 3rdparty/libflac/src/libFLAC/stream_encoder.c | 4361 + .../src/libFLAC/stream_encoder_framing.c | 553 + 3rdparty/libflac/src/libFLAC/window.c | 225 + 3rdparty/libflac/src/metaflac/Makefile.am | 54 + 3rdparty/libflac/src/metaflac/Makefile.in | 585 + 3rdparty/libflac/src/metaflac/Makefile.lite | 49 + 3rdparty/libflac/src/metaflac/main.c | 48 + 3rdparty/libflac/src/metaflac/metaflac.dsp | 152 + 3rdparty/libflac/src/metaflac/metaflac.vcproj | 256 + 3rdparty/libflac/src/metaflac/operations.c | 682 + 3rdparty/libflac/src/metaflac/operations.h | 26 + .../src/metaflac/operations_shorthand.h | 25 + .../metaflac/operations_shorthand_cuesheet.c | 217 + .../metaflac/operations_shorthand_picture.c | 173 + .../metaflac/operations_shorthand_seektable.c | 217 + .../operations_shorthand_streaminfo.c | 129 + .../operations_shorthand_vorbiscomment.c | 368 + 3rdparty/libflac/src/metaflac/options.c | 1109 + 3rdparty/libflac/src/metaflac/options.h | 215 + 3rdparty/libflac/src/metaflac/usage.c | 325 + 3rdparty/libflac/src/metaflac/usage.h | 25 + 3rdparty/libflac/src/metaflac/utils.c | 258 + 3rdparty/libflac/src/metaflac/utils.h | 41 + .../src/monkeys_audio_utilities/Makefile.am | 18 + .../src/monkeys_audio_utilities/Makefile.in | 520 + .../flac_mac/Makefile.am | 21 + .../flac_mac/Makefile.in | 375 + .../flac_mac/flac_mac.dsp | 100 + .../flac_mac/flac_mac.vcproj | 200 + .../monkeys_audio_utilities/flac_mac/main.c | 208 + .../flac_ren/Makefile.am | 21 + .../flac_ren/Makefile.in | 375 + .../flac_ren/flac_ren.dsp | 100 + .../flac_ren/flac_ren.vcproj | 200 + .../monkeys_audio_utilities/flac_ren/main.c | 39 + .../libflac/src/plugin_common/Makefile.am | 48 + .../libflac/src/plugin_common/Makefile.in | 539 + .../libflac/src/plugin_common/Makefile.lite | 36 + 3rdparty/libflac/src/plugin_common/README | 2 + 3rdparty/libflac/src/plugin_common/all.h | 26 + 3rdparty/libflac/src/plugin_common/charset.c | 157 + 3rdparty/libflac/src/plugin_common/charset.h | 39 + 3rdparty/libflac/src/plugin_common/defs.h | 24 + 3rdparty/libflac/src/plugin_common/dither.c | 262 + 3rdparty/libflac/src/plugin_common/dither.h | 29 + .../plugin_common/plugin_common_static.dsp | 128 + .../plugin_common/plugin_common_static.vcproj | 209 + .../libflac/src/plugin_common/replaygain.c | 64 + .../libflac/src/plugin_common/replaygain.h | 32 + 3rdparty/libflac/src/plugin_common/tags.c | 358 + 3rdparty/libflac/src/plugin_common/tags.h | 74 + .../libflac/src/plugin_winamp2/Makefile.am | 33 + .../libflac/src/plugin_winamp2/Makefile.in | 536 + .../libflac/src/plugin_winamp2/configure.c | 428 + .../libflac/src/plugin_winamp2/configure.h | 49 + 3rdparty/libflac/src/plugin_winamp2/in_flac.c | 443 + .../libflac/src/plugin_winamp2/in_flac.dsp | 154 + .../libflac/src/plugin_winamp2/in_flac.vcproj | 259 + .../src/plugin_winamp2/include/Makefile.am | 18 + .../src/plugin_winamp2/include/Makefile.in | 520 + .../include/winamp2/Makefile.am | 20 + .../include/winamp2/Makefile.in | 374 + .../src/plugin_winamp2/include/winamp2/in2.h | 107 + .../src/plugin_winamp2/include/winamp2/out.h | 55 + 3rdparty/libflac/src/plugin_winamp2/infobox.c | 459 + 3rdparty/libflac/src/plugin_winamp2/infobox.h | 28 + .../libflac/src/plugin_winamp2/playback.c | 307 + .../libflac/src/plugin_winamp2/playback.h | 92 + .../libflac/src/plugin_winamp2/resource.h | 47 + .../libflac/src/plugin_winamp2/resource.rc | 236 + 3rdparty/libflac/src/plugin_winamp2/tagz.cpp | 921 + 3rdparty/libflac/src/plugin_winamp2/tagz.h | 32 + 3rdparty/libflac/src/plugin_xmms/Makefile.am | 70 + 3rdparty/libflac/src/plugin_xmms/Makefile.in | 588 + .../libflac/src/plugin_xmms/Makefile.lite | 43 + 3rdparty/libflac/src/plugin_xmms/charset.c | 198 + 3rdparty/libflac/src/plugin_xmms/charset.h | 56 + 3rdparty/libflac/src/plugin_xmms/configure.c | 823 + 3rdparty/libflac/src/plugin_xmms/configure.h | 77 + 3rdparty/libflac/src/plugin_xmms/fileinfo.c | 496 + 3rdparty/libflac/src/plugin_xmms/http.c | 899 + 3rdparty/libflac/src/plugin_xmms/http.h | 26 + .../libflac/src/plugin_xmms/locale_hack.h | 55 + 3rdparty/libflac/src/plugin_xmms/plugin.c | 684 + 3rdparty/libflac/src/plugin_xmms/plugin.h | 24 + 3rdparty/libflac/src/plugin_xmms/tag.c | 154 + 3rdparty/libflac/src/plugin_xmms/tag.h | 24 + 3rdparty/libflac/src/share/Makefile.am | 22 + 3rdparty/libflac/src/share/Makefile.in | 525 + 3rdparty/libflac/src/share/Makefile.lite | 53 + 3rdparty/libflac/src/share/README | 5 + 3rdparty/libflac/src/share/getopt/Makefile.am | 20 + 3rdparty/libflac/src/share/getopt/Makefile.in | 496 + .../libflac/src/share/getopt/Makefile.lite | 16 + 3rdparty/libflac/src/share/getopt/getopt.c | 1065 + 3rdparty/libflac/src/share/getopt/getopt1.c | 204 + .../src/share/getopt/getopt_static.dsp | 112 + .../src/share/getopt/getopt_static.vcproj | 185 + .../libflac/src/share/grabbag/Makefile.am | 25 + .../libflac/src/share/grabbag/Makefile.in | 512 + .../libflac/src/share/grabbag/Makefile.lite | 19 + 3rdparty/libflac/src/share/grabbag/cuesheet.c | 611 + 3rdparty/libflac/src/share/grabbag/file.c | 192 + .../src/share/grabbag/grabbag_static.dsp | 144 + .../src/share/grabbag/grabbag_static.vcproj | 221 + 3rdparty/libflac/src/share/grabbag/picture.c | 407 + .../libflac/src/share/grabbag/replaygain.c | 668 + .../libflac/src/share/grabbag/seektable.c | 132 + .../src/share/replaygain_analysis/Makefile.am | 20 + .../src/share/replaygain_analysis/Makefile.in | 500 + .../share/replaygain_analysis/Makefile.lite | 15 + .../replaygain_analysis/replaygain_analysis.c | 430 + .../replaygain_analysis_static.dsp | 108 + .../replaygain_analysis_static.vcproj | 181 + .../share/replaygain_synthesis/Makefile.am | 22 + .../share/replaygain_synthesis/Makefile.in | 602 + .../share/replaygain_synthesis/Makefile.lite | 15 + .../replaygain_synthesis/include/Makefile.am | 18 + .../replaygain_synthesis/include/Makefile.in | 520 + .../include/private/Makefile.am | 19 + .../include/private/Makefile.in | 424 + .../include/private/fast_float_math_hack.h | 39 + .../replaygain_synthesis.c | 467 + .../replaygain_synthesis_static.dsp | 108 + .../replaygain_synthesis_static.vcproj | 185 + 3rdparty/libflac/src/share/utf8/Makefile.am | 25 + 3rdparty/libflac/src/share/utf8/Makefile.in | 507 + 3rdparty/libflac/src/share/utf8/Makefile.lite | 17 + 3rdparty/libflac/src/share/utf8/charmaps.h | 57 + 3rdparty/libflac/src/share/utf8/charset.c | 532 + 3rdparty/libflac/src/share/utf8/charset.h | 72 + .../libflac/src/share/utf8/charset_test.c | 263 + 3rdparty/libflac/src/share/utf8/charsetmap.h | 79 + 3rdparty/libflac/src/share/utf8/iconvert.c | 253 + 3rdparty/libflac/src/share/utf8/iconvert.h | 49 + 3rdparty/libflac/src/share/utf8/makemap.c | 81 + 3rdparty/libflac/src/share/utf8/utf8.c | 319 + .../libflac/src/share/utf8/utf8_static.dsp | 116 + .../libflac/src/share/utf8/utf8_static.vcproj | 201 + 3rdparty/libflac/src/test_grabbag/Makefile.am | 21 + 3rdparty/libflac/src/test_grabbag/Makefile.in | 524 + .../libflac/src/test_grabbag/Makefile.lite | 40 + .../src/test_grabbag/cuesheet/Makefile.am | 31 + .../src/test_grabbag/cuesheet/Makefile.in | 517 + .../src/test_grabbag/cuesheet/Makefile.lite | 40 + .../libflac/src/test_grabbag/cuesheet/main.c | 138 + .../test_grabbag/cuesheet/test_cuesheet.dsp | 96 + .../cuesheet/test_cuesheet.vcproj | 202 + .../src/test_grabbag/picture/Makefile.am | 30 + .../src/test_grabbag/picture/Makefile.in | 515 + .../src/test_grabbag/picture/Makefile.lite | 40 + .../libflac/src/test_grabbag/picture/main.c | 224 + .../src/test_grabbag/picture/test_picture.dsp | 96 + .../test_grabbag/picture/test_picture.vcproj | 202 + .../libflac/src/test_libFLAC++/Makefile.am | 42 + .../libflac/src/test_libFLAC++/Makefile.in | 548 + .../libflac/src/test_libFLAC++/Makefile.lite | 47 + .../libflac/src/test_libFLAC++/decoders.cpp | 1179 + .../libflac/src/test_libFLAC++/decoders.h | 24 + .../libflac/src/test_libFLAC++/encoders.cpp | 553 + .../libflac/src/test_libFLAC++/encoders.h | 24 + 3rdparty/libflac/src/test_libFLAC++/main.cpp | 37 + .../libflac/src/test_libFLAC++/metadata.cpp | 36 + .../libflac/src/test_libFLAC++/metadata.h | 24 + .../src/test_libFLAC++/metadata_manip.cpp | 2210 + .../src/test_libFLAC++/metadata_object.cpp | 2093 + .../src/test_libFLAC++/test_libFLAC++.dsp | 136 + .../src/test_libFLAC++/test_libFLAC++.vcproj | 234 + 3rdparty/libflac/src/test_libFLAC/Makefile.am | 47 + 3rdparty/libflac/src/test_libFLAC/Makefile.in | 548 + .../libflac/src/test_libFLAC/Makefile.lite | 47 + 3rdparty/libflac/src/test_libFLAC/bitwriter.c | 584 + 3rdparty/libflac/src/test_libFLAC/bitwriter.h | 26 + 3rdparty/libflac/src/test_libFLAC/decoders.c | 1048 + 3rdparty/libflac/src/test_libFLAC/decoders.h | 26 + 3rdparty/libflac/src/test_libFLAC/encoders.c | 521 + 3rdparty/libflac/src/test_libFLAC/encoders.h | 26 + 3rdparty/libflac/src/test_libFLAC/format.c | 256 + 3rdparty/libflac/src/test_libFLAC/format.h | 26 + 3rdparty/libflac/src/test_libFLAC/main.c | 49 + 3rdparty/libflac/src/test_libFLAC/metadata.c | 40 + 3rdparty/libflac/src/test_libFLAC/metadata.h | 28 + .../libflac/src/test_libFLAC/metadata_manip.c | 2133 + .../src/test_libFLAC/metadata_object.c | 2299 + .../libflac/src/test_libFLAC/test_libFLAC.dsp | 148 + .../src/test_libFLAC/test_libFLAC.vcproj | 252 + .../libflac/src/test_libs_common/Makefile.am | 30 + .../libflac/src/test_libs_common/Makefile.in | 514 + .../src/test_libs_common/Makefile.lite | 35 + 3rdparty/libflac/src/test_libs_common/README | 2 + .../src/test_libs_common/file_utils_flac.c | 153 + .../src/test_libs_common/metadata_utils.c | 657 + .../test_libs_common_static.dsp | 108 + .../test_libs_common_static.vcproj | 177 + 3rdparty/libflac/src/test_seeking/Makefile.am | 34 + 3rdparty/libflac/src/test_seeking/Makefile.in | 517 + .../libflac/src/test_seeking/Makefile.lite | 40 + 3rdparty/libflac/src/test_seeking/main.c | 501 + .../libflac/src/test_seeking/test_seeking.dsp | 100 + .../src/test_seeking/test_seeking.vcproj | 204 + 3rdparty/libflac/src/test_streams/Makefile.am | 26 + 3rdparty/libflac/src/test_streams/Makefile.in | 508 + .../libflac/src/test_streams/Makefile.lite | 36 + 3rdparty/libflac/src/test_streams/main.c | 927 + .../libflac/src/test_streams/test_streams.dsp | 96 + .../src/test_streams/test_streams.vcproj | 202 + .../libflac/strip_non_asm_libtool_args.sh | 19 + 3rdparty/libflac/test/Makefile.am | 51 + 3rdparty/libflac/test/Makefile.in | 627 + 3rdparty/libflac/test/Makefile.lite | 55 + 3rdparty/libflac/test/cuesheet.ok | 93 + 3rdparty/libflac/test/cuesheets/Makefile.am | 67 + 3rdparty/libflac/test/cuesheets/Makefile.in | 421 + .../cuesheets/bad.000.CATALOG_multiple.cue | 5 + .../bad.001.CATALOG_missing_number.cue | 4 + .../bad.002.CATALOG_number_too_long.cue | 4 + .../bad.003.CATALOG_not_13_digits.cue | 4 + .../test/cuesheets/bad.030.FLAGS_multiple.cue | 5 + .../cuesheets/bad.031.FLAGS_wrong_place_1.cue | 4 + .../cuesheets/bad.032.FLAGS_wrong_place_2.cue | 4 + .../cuesheets/bad.060.INDEX_wrong_place.cue | 5 + .../bad.061.INDEX_missing_number.cue | 4 + .../bad.062.INDEX_invalid_number_1.cue | 4 + .../bad.063.first_INDEX_not_0_or_1.cue | 4 + .../bad.064.INDEX_num_non_sequential.cue | 5 + .../bad.065.INDEX_num_out_of_range.cue | 104 + .../bad.066.INDEX_missing_offset.cue | 4 + .../bad.067.INDEX_illegal_offset.cue | 4 + .../bad.068.INDEX_cdda_illegal_offset.cue | 4 + .../cuesheets/bad.069.nonzero_first_INDEX.cue | 4 + .../bad.070.INDEX_offset_not_ascending_1.cue | 5 + .../bad.071.INDEX_offset_not_ascending_2.cue | 6 + .../test/cuesheets/bad.110.ISRC_multiple.cue | 5 + .../cuesheets/bad.111.ISRC_wrong_place_1.cue | 4 + .../cuesheets/bad.112.ISRC_wrong_place_2.cue | 4 + .../cuesheets/bad.113.ISRC_missing_number.cue | 4 + .../cuesheets/bad.114.ISRC_invalid_number.cue | 4 + .../bad.130.TRACK_missing_INDEX_01_1.cue | 2 + .../bad.131.TRACK_missing_INDEX_01_2.cue | 3 + .../bad.132.TRACK_missing_INDEX_01_3.cue | 4 + .../bad.133.TRACK_missing_INDEX_01_4.cue | 5 + .../bad.134.TRACK_missing_number.cue | 2 + .../bad.135.TRACK_invalid_number_1.cue | 2 + .../bad.136.TRACK_invalid_number_2.cue | 2 + .../bad.137.TRACK_cdda_out_of_range.cue | 2 + .../bad.138.TRACK_num_non_sequential.cue | 6 + .../cuesheets/bad.139.TRACK_missing_type.cue | 2 + .../test/cuesheets/bad.140.no_TRACKs.cue | 1 + .../bad.200.FLAC_leadin_missing_offset.cue | 1 + .../bad.201.FLAC_leadin_illegal_offset.cue | 1 + ...ad.202.FLAC_leadin_cdda_illegal_offset.cue | 1 + .../bad.230.FLAC_leadout_multiple.cue | 3 + .../bad.231.FLAC_leadout_missing_track.cue | 1 + .../bad.232.FLAC_leadout_illegal_track.cue | 1 + .../bad.233.FLAC_leadout_missing_offset.cue | 1 + .../bad.234.FLAC_leadout_illegal_offset.cue | 1 + ....235.FLAC_leadout_offset_not_211680000.cue | 1 + 3rdparty/libflac/test/cuesheets/good.000.cue | 4 + 3rdparty/libflac/test/cuesheets/good.001.cue | 184 + .../test/cuesheets/good.002.dos_format.cue | 4 + .../good.003.missing_final_newline.cue | 4 + ...d.004.dos_format.missing_final_newline.cue | 4 + .../Makefile.am | 45 + .../Makefile.in | 399 + .../case00a-expect.meta | 84 + .../case01a-expect.meta | 79 + .../case01b-expect.meta | 75 + .../case01c-expect.meta | 79 + .../case01d-expect.meta | 79 + .../case01e-expect.meta | 79 + .../case02a-expect.meta | 73 + .../case02b-expect.meta | 74 + .../case02c-expect.meta | 79 + .../case03a-expect.meta | 84 + .../case03b-expect.meta | 84 + .../case03c-expect.meta | 41 + .../case04a-expect.meta | 26 + .../case04b-expect.meta | 36 + .../case04c-expect.meta | 32 + .../case04d-expect.meta | 60 + .../case04e-expect.meta | 70 + .../input-SCPAP.flac | Bin 0 -> 4021 bytes .../input-SCVA.flac | Bin 0 -> 1015 bytes .../input-SCVAUP.flac | Bin 0 -> 4224 bytes .../input-SCVPAP.flac | Bin 0 -> 4228 bytes .../input-SVAUP.flac | Bin 0 -> 3680 bytes .../input-VA.flac | Bin 0 -> 287 bytes .../input0.cue | 7 + .../test/metaflac-test-files/Makefile.am | 84 + .../test/metaflac-test-files/Makefile.in | 438 + .../metaflac-test-files/case00-expect.meta | 24 + .../metaflac-test-files/case01-expect.meta | 9 + .../metaflac-test-files/case02-expect.meta | 28 + .../metaflac-test-files/case03-expect.meta | 25 + .../metaflac-test-files/case04-expect.meta | 26 + .../metaflac-test-files/case05-expect.meta | 27 + .../metaflac-test-files/case06-expect.meta | 28 + .../metaflac-test-files/case07-expect.meta | 4 + .../metaflac-test-files/case08-expect.meta | 27 + .../metaflac-test-files/case09-expect.meta | 25 + .../metaflac-test-files/case10-expect.meta | 6 + .../metaflac-test-files/case11-expect.meta | 9 + .../metaflac-test-files/case12-expect.meta | 12 + .../metaflac-test-files/case13-expect.meta | 10 + .../metaflac-test-files/case14-expect.meta | 13 + .../metaflac-test-files/case15-expect.meta | 16 + .../metaflac-test-files/case16-expect.meta | 33 + .../metaflac-test-files/case17-expect.meta | 25 + .../metaflac-test-files/case18-expect.meta | 29 + .../metaflac-test-files/case19-expect.meta | 25 + .../metaflac-test-files/case20-expect.meta | 29 + .../metaflac-test-files/case21-expect.meta | 24 + .../metaflac-test-files/case22-expect.meta | 18 + .../metaflac-test-files/case23-expect.meta | 18 + .../metaflac-test-files/case24-expect.meta | 18 + .../metaflac-test-files/case25-expect.meta | 14 + .../metaflac-test-files/case26-expect.meta | 22 + .../metaflac-test-files/case27-expect.meta | 13 + .../metaflac-test-files/case28-expect.meta | 13 + .../metaflac-test-files/case29-expect.meta | 9 + .../metaflac-test-files/case30-expect.meta | 9 + .../metaflac-test-files/case31-expect.meta | 15 + .../metaflac-test-files/case32-expect.meta | 15 + .../metaflac-test-files/case33-expect.meta | 19 + .../metaflac-test-files/case34-expect.meta | 19 + .../metaflac-test-files/case35-expect.meta | 19 + .../metaflac-test-files/case36-expect.meta | 15 + .../metaflac-test-files/case37-expect.meta | 19 + .../metaflac-test-files/case38-expect.meta | 19 + .../metaflac-test-files/case39-expect.meta | 20 + .../metaflac-test-files/case40-expect.meta | 22 + .../metaflac-test-files/case41-expect.meta | 27 + .../metaflac-test-files/case42-expect.meta | 22 + .../metaflac-test-files/case43-expect.meta | 49 + .../metaflac-test-files/case44-expect.meta | 28 + .../metaflac-test-files/case45-expect.meta | 49 + .../metaflac-test-files/case46-expect.meta | 62 + .../metaflac-test-files/case47-expect.meta | 75 + .../metaflac-test-files/case48-expect.meta | 88 + .../metaflac-test-files/case49-expect.meta | 101 + .../metaflac-test-files/case50-expect.meta | 114 + .../metaflac-test-files/case51-expect.meta | 127 + .../metaflac-test-files/case52-expect.meta | 140 + .../metaflac-test-files/case53-expect.meta | 153 + .../metaflac-test-files/case54-expect.meta | 166 + .../metaflac-test-files/case55-expect.meta | 179 + .../metaflac-test-files/case56-expect.meta | 192 + .../metaflac-test-files/case57-expect.meta | 205 + .../metaflac-test-files/case58-expect.meta | 218 + .../metaflac-test-files/case59-expect.meta | 231 + .../metaflac-test-files/case60-expect.meta | 49 + .../metaflac-test-files/case61-expect.meta | 62 + .../metaflac-test-files/case62-expect.meta | 75 + 3rdparty/libflac/test/metaflac.flac.in | Bin 0 -> 667 bytes 3rdparty/libflac/test/metaflac.flac.ok | Bin 0 -> 617 bytes 3rdparty/libflac/test/picture.ok | 42 + 3rdparty/libflac/test/pictures/0.gif | Bin 0 -> 95 bytes 3rdparty/libflac/test/pictures/0.jpg | Bin 0 -> 330 bytes 3rdparty/libflac/test/pictures/0.png | Bin 0 -> 446 bytes 3rdparty/libflac/test/pictures/1.gif | Bin 0 -> 871 bytes 3rdparty/libflac/test/pictures/1.png | Bin 0 -> 462 bytes 3rdparty/libflac/test/pictures/2.gif | Bin 0 -> 532 bytes 3rdparty/libflac/test/pictures/2.png | Bin 0 -> 292 bytes 3rdparty/libflac/test/pictures/3.png | Bin 0 -> 308 bytes 3rdparty/libflac/test/pictures/4.jpg | Bin 0 -> 567 bytes 3rdparty/libflac/test/pictures/4.png | Bin 0 -> 1800 bytes 3rdparty/libflac/test/pictures/5.png | Bin 0 -> 1816 bytes 3rdparty/libflac/test/pictures/6.png | Bin 0 -> 543 bytes 3rdparty/libflac/test/pictures/7.png | Bin 0 -> 559 bytes 3rdparty/libflac/test/pictures/8.png | Bin 0 -> 244 bytes 3rdparty/libflac/test/pictures/Makefile.am | 32 + 3rdparty/libflac/test/pictures/Makefile.in | 386 + 3rdparty/libflac/test/test_bins.sh | 114 + 3rdparty/libflac/test/test_flac.sh | 1190 + 3rdparty/libflac/test/test_grabbag.sh | 148 + 3rdparty/libflac/test/test_libFLAC++.sh | 50 + 3rdparty/libflac/test/test_libFLAC.sh | 49 + 3rdparty/libflac/test/test_metaflac.sh | 397 + 3rdparty/libflac/test/test_seeking.sh | 155 + 3rdparty/libflac/test/test_streams.sh | 268 + 3rdparty/lzma/Asm/arm/7zCrcOpt.asm | 100 + 3rdparty/lzma/Asm/x86/7zAsm.asm | 105 + 3rdparty/lzma/Asm/x86/7zCrcOpt.asm | 147 + 3rdparty/lzma/Asm/x86/AesOpt.asm | 237 + 3rdparty/lzma/Asm/x86/XzCrc64Opt.asm | 205 + 3rdparty/lzma/C/7z.h | 202 + 3rdparty/lzma/C/7zAlloc.c | 78 + 3rdparty/lzma/C/7zAlloc.h | 23 + 3rdparty/lzma/C/7zArcIn.c | 1771 + 3rdparty/lzma/C/7zBuf.c | 36 + 3rdparty/lzma/C/7zBuf.h | 35 + 3rdparty/lzma/C/7zBuf2.c | 51 + 3rdparty/lzma/C/7zCrc.c | 128 + 3rdparty/lzma/C/7zCrc.h | 25 + 3rdparty/lzma/C/7zCrcOpt.c | 115 + 3rdparty/lzma/C/7zDec.c | 591 + 3rdparty/lzma/C/7zFile.c | 286 + 3rdparty/lzma/C/7zFile.h | 83 + 3rdparty/lzma/C/7zStream.c | 171 + 3rdparty/lzma/C/7zTypes.h | 256 + 3rdparty/lzma/C/7zVersion.h | 19 + 3rdparty/lzma/C/7zVersion.rc | 55 + 3rdparty/lzma/C/Aes.c | 295 + 3rdparty/lzma/C/Aes.h | 38 + 3rdparty/lzma/C/AesOpt.c | 184 + 3rdparty/lzma/C/Alloc.c | 136 + 3rdparty/lzma/C/Alloc.h | 37 + 3rdparty/lzma/C/Bcj2.c | 256 + 3rdparty/lzma/C/Bcj2.h | 146 + 3rdparty/lzma/C/Bcj2Enc.c | 312 + 3rdparty/lzma/C/Bra.c | 135 + 3rdparty/lzma/C/Bra.h | 64 + 3rdparty/lzma/C/Bra86.c | 82 + 3rdparty/lzma/C/BraIA64.c | 69 + 3rdparty/lzma/C/Compiler.h | 32 + 3rdparty/lzma/C/CpuArch.c | 200 + 3rdparty/lzma/C/CpuArch.h | 223 + 3rdparty/lzma/C/Delta.c | 64 + 3rdparty/lzma/C/Delta.h | 19 + 3rdparty/lzma/C/DllSecur.c | 87 + 3rdparty/lzma/C/DllSecur.h | 19 + 3rdparty/lzma/C/LzFind.c | 1044 + 3rdparty/lzma/C/LzFind.h | 117 + 3rdparty/lzma/C/LzFindMt.c | 803 + 3rdparty/lzma/C/LzFindMt.h | 101 + 3rdparty/lzma/C/LzHash.h | 57 + 3rdparty/lzma/C/Lzma2Dec.c | 378 + 3rdparty/lzma/C/Lzma2Dec.h | 80 + 3rdparty/lzma/C/Lzma2Enc.c | 520 + 3rdparty/lzma/C/Lzma2Enc.h | 62 + 3rdparty/lzma/C/Lzma86.h | 111 + 3rdparty/lzma/C/Lzma86Dec.c | 54 + 3rdparty/lzma/C/Lzma86Enc.c | 106 + 3rdparty/lzma/C/LzmaDec.c | 1100 + 3rdparty/lzma/C/LzmaDec.h | 227 + 3rdparty/lzma/C/LzmaEnc.c | 2351 + 3rdparty/lzma/C/LzmaEnc.h | 78 + 3rdparty/lzma/C/LzmaLib.c | 40 + 3rdparty/lzma/C/LzmaLib.h | 131 + 3rdparty/lzma/C/MtCoder.c | 327 + 3rdparty/lzma/C/MtCoder.h | 98 + 3rdparty/lzma/C/Ppmd.h | 85 + 3rdparty/lzma/C/Ppmd7.c | 710 + 3rdparty/lzma/C/Ppmd7.h | 140 + 3rdparty/lzma/C/Ppmd7Dec.c | 189 + 3rdparty/lzma/C/Ppmd7Enc.c | 187 + 3rdparty/lzma/C/Precomp.h | 10 + 3rdparty/lzma/C/RotateDefs.h | 30 + 3rdparty/lzma/C/Sha256.c | 248 + 3rdparty/lzma/C/Sha256.h | 26 + 3rdparty/lzma/C/Sort.c | 141 + 3rdparty/lzma/C/Sort.h | 18 + 3rdparty/lzma/C/Threads.c | 93 + 3rdparty/lzma/C/Threads.h | 67 + 3rdparty/lzma/C/Util/7z/7z.dsp | 241 + 3rdparty/lzma/C/Util/7z/7z.dsw | 29 + 3rdparty/lzma/C/Util/7z/7zMain.c | 604 + 3rdparty/lzma/C/Util/7z/Precomp.c | 4 + 3rdparty/lzma/C/Util/7z/Precomp.h | 10 + 3rdparty/lzma/C/Util/7z/makefile | 40 + 3rdparty/lzma/C/Util/7z/makefile.gcc | 75 + 3rdparty/lzma/C/Util/Lzma/LzmaUtil.c | 250 + 3rdparty/lzma/C/Util/Lzma/LzmaUtil.dsp | 168 + 3rdparty/lzma/C/Util/Lzma/LzmaUtil.dsw | 29 + 3rdparty/lzma/C/Util/Lzma/makefile | 28 + 3rdparty/lzma/C/Util/Lzma/makefile.gcc | 44 + 3rdparty/lzma/C/Util/LzmaLib/LzmaLib.def | 4 + 3rdparty/lzma/C/Util/LzmaLib/LzmaLib.dsp | 178 + 3rdparty/lzma/C/Util/LzmaLib/LzmaLib.dsw | 29 + 3rdparty/lzma/C/Util/LzmaLib/LzmaLibExports.c | 14 + 3rdparty/lzma/C/Util/LzmaLib/makefile | 34 + 3rdparty/lzma/C/Util/LzmaLib/resource.rc | 3 + 3rdparty/lzma/C/Util/SfxSetup/Precomp.c | 4 + 3rdparty/lzma/C/Util/SfxSetup/Precomp.h | 10 + 3rdparty/lzma/C/Util/SfxSetup/SfxSetup.c | 626 + 3rdparty/lzma/C/Util/SfxSetup/SfxSetup.dsp | 231 + 3rdparty/lzma/C/Util/SfxSetup/SfxSetup.dsw | 29 + 3rdparty/lzma/C/Util/SfxSetup/makefile | 36 + 3rdparty/lzma/C/Util/SfxSetup/makefile_con | 37 + 3rdparty/lzma/C/Util/SfxSetup/resource.rc | 5 + 3rdparty/lzma/C/Util/SfxSetup/setup.ico | Bin 0 -> 1078 bytes 3rdparty/lzma/C/Xz.c | 90 + 3rdparty/lzma/C/Xz.h | 275 + 3rdparty/lzma/C/XzCrc64.c | 86 + 3rdparty/lzma/C/XzCrc64.h | 26 + 3rdparty/lzma/C/XzCrc64Opt.c | 69 + 3rdparty/lzma/C/XzDec.c | 913 + 3rdparty/lzma/C/XzEnc.c | 538 + 3rdparty/lzma/C/XzEnc.h | 39 + 3rdparty/lzma/C/XzIn.c | 313 + 3rdparty/lzma/CPP/7zip/7zip.mak | 240 + 3rdparty/lzma/CPP/7zip/Aes.mak | 7 + .../CPP/7zip/Archive/7z/7zCompressionMode.cpp | 3 + .../CPP/7zip/Archive/7z/7zCompressionMode.h | 74 + .../lzma/CPP/7zip/Archive/7z/7zDecode.cpp | 543 + 3rdparty/lzma/CPP/7zip/Archive/7z/7zDecode.h | 68 + .../lzma/CPP/7zip/Archive/7z/7zEncode.cpp | 656 + 3rdparty/lzma/CPP/7zip/Archive/7z/7zEncode.h | 92 + .../lzma/CPP/7zip/Archive/7z/7zExtract.cpp | 408 + .../CPP/7zip/Archive/7z/7zFolderInStream.cpp | 136 + .../CPP/7zip/Archive/7z/7zFolderInStream.h | 61 + .../lzma/CPP/7zip/Archive/7z/7zHandler.cpp | 755 + 3rdparty/lzma/CPP/7zip/Archive/7z/7zHandler.h | 173 + .../lzma/CPP/7zip/Archive/7z/7zHandlerOut.cpp | 913 + .../lzma/CPP/7zip/Archive/7z/7zHeader.cpp | 19 + 3rdparty/lzma/CPP/7zip/Archive/7z/7zHeader.h | 148 + 3rdparty/lzma/CPP/7zip/Archive/7z/7zIn.cpp | 1643 + 3rdparty/lzma/CPP/7zip/Archive/7z/7zIn.h | 431 + 3rdparty/lzma/CPP/7zip/Archive/7z/7zItem.h | 183 + 3rdparty/lzma/CPP/7zip/Archive/7z/7zOut.cpp | 916 + 3rdparty/lzma/CPP/7zip/Archive/7z/7zOut.h | 321 + .../lzma/CPP/7zip/Archive/7z/7zProperties.cpp | 174 + .../lzma/CPP/7zip/Archive/7z/7zProperties.h | 22 + .../lzma/CPP/7zip/Archive/7z/7zRegister.cpp | 21 + .../lzma/CPP/7zip/Archive/7z/7zSpecStream.cpp | 22 + .../lzma/CPP/7zip/Archive/7z/7zSpecStream.h | 35 + .../lzma/CPP/7zip/Archive/7z/7zUpdate.cpp | 2469 + 3rdparty/lzma/CPP/7zip/Archive/7z/7zUpdate.h | 139 + 3rdparty/lzma/CPP/7zip/Archive/7z/StdAfx.cpp | 3 + 3rdparty/lzma/CPP/7zip/Archive/7z/StdAfx.h | 8 + 3rdparty/lzma/CPP/7zip/Archive/Archive.def | 12 + 3rdparty/lzma/CPP/7zip/Archive/Archive2.def | 19 + .../lzma/CPP/7zip/Archive/ArchiveExports.cpp | 151 + .../CPP/7zip/Archive/Common/CoderMixer2.cpp | 1044 + .../CPP/7zip/Archive/Common/CoderMixer2.h | 437 + .../7zip/Archive/Common/DummyOutStream.cpp | 17 + .../CPP/7zip/Archive/Common/DummyOutStream.h | 25 + .../CPP/7zip/Archive/Common/HandlerOut.cpp | 157 + .../lzma/CPP/7zip/Archive/Common/HandlerOut.h | 67 + .../7zip/Archive/Common/InStreamWithCRC.cpp | 46 + .../CPP/7zip/Archive/Common/InStreamWithCRC.h | 67 + .../CPP/7zip/Archive/Common/ItemNameUtils.cpp | 88 + .../CPP/7zip/Archive/Common/ItemNameUtils.h | 27 + .../CPP/7zip/Archive/Common/MultiStream.cpp | 191 + .../CPP/7zip/Archive/Common/MultiStream.h | 89 + .../7zip/Archive/Common/OutStreamWithCRC.cpp | 18 + .../7zip/Archive/Common/OutStreamWithCRC.h | 37 + .../7zip/Archive/Common/ParseProperties.cpp | 3 + .../CPP/7zip/Archive/Common/ParseProperties.h | 6 + .../lzma/CPP/7zip/Archive/Common/StdAfx.h | 8 + .../lzma/CPP/7zip/Archive/DllExports2.cpp | 122 + 3rdparty/lzma/CPP/7zip/Archive/IArchive.h | 598 + 3rdparty/lzma/CPP/7zip/Archive/Icons/7z.ico | Bin 0 -> 4710 bytes .../lzma/CPP/7zip/Archive/LzmaHandler.cpp | 573 + .../lzma/CPP/7zip/Archive/SplitHandler.cpp | 359 + 3rdparty/lzma/CPP/7zip/Archive/StdAfx.h | 8 + 3rdparty/lzma/CPP/7zip/Archive/XzHandler.cpp | 956 + 3rdparty/lzma/CPP/7zip/Archive/XzHandler.h | 65 + 3rdparty/lzma/CPP/7zip/Asm.mak | 9 + .../lzma/CPP/7zip/Bundles/Alone7z/Alone.dsp | 1817 + .../lzma/CPP/7zip/Bundles/Alone7z/Alone.dsw | 29 + .../lzma/CPP/7zip/Bundles/Alone7z/StdAfx.cpp | 3 + .../lzma/CPP/7zip/Bundles/Alone7z/StdAfx.h | 8 + .../lzma/CPP/7zip/Bundles/Alone7z/makefile | 151 + .../lzma/CPP/7zip/Bundles/Alone7z/resource.rc | 3 + .../7zip/Bundles/Format7zExtractR/StdAfx.cpp | 3 + .../7zip/Bundles/Format7zExtractR/StdAfx.h | 8 + .../7zip/Bundles/Format7zExtractR/makefile | 93 + .../7zip/Bundles/Format7zExtractR/resource.rc | 5 + .../CPP/7zip/Bundles/Format7zR/StdAfx.cpp | 3 + .../lzma/CPP/7zip/Bundles/Format7zR/StdAfx.h | 8 + .../lzma/CPP/7zip/Bundles/Format7zR/makefile | 113 + .../CPP/7zip/Bundles/Format7zR/resource.rc | 5 + .../CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp | 778 + .../lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp | 477 + .../lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsw | 29 + .../lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.cpp | 3 + .../lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.h | 8 + .../lzma/CPP/7zip/Bundles/LzmaCon/makefile | 59 + .../CPP/7zip/Bundles/LzmaCon/makefile.gcc | 195 + .../lzma/CPP/7zip/Bundles/LzmaCon/resource.rc | 3 + .../CPP/7zip/Bundles/LzmaSpec/LzmaSpec.cpp | 715 + 3rdparty/lzma/CPP/7zip/Bundles/SFXCon/7z.ico | Bin 0 -> 1078 bytes .../lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsp | 878 + .../lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsw | 29 + .../lzma/CPP/7zip/Bundles/SFXCon/SfxCon.cpp | 478 + .../lzma/CPP/7zip/Bundles/SFXCon/StdAfx.cpp | 3 + .../lzma/CPP/7zip/Bundles/SFXCon/StdAfx.h | 8 + .../lzma/CPP/7zip/Bundles/SFXCon/makefile | 129 + .../lzma/CPP/7zip/Bundles/SFXCon/resource.rc | 5 + .../Bundles/SFXSetup/ExtractCallbackSfx.cpp | 246 + .../Bundles/SFXSetup/ExtractCallbackSfx.h | 86 + .../7zip/Bundles/SFXSetup/ExtractEngine.cpp | 137 + .../CPP/7zip/Bundles/SFXSetup/ExtractEngine.h | 11 + .../CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp | 769 + .../CPP/7zip/Bundles/SFXSetup/SFXSetup.dsw | 29 + .../CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp | 364 + .../lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.cpp | 3 + .../lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.h | 13 + .../lzma/CPP/7zip/Bundles/SFXSetup/makefile | 110 + .../lzma/CPP/7zip/Bundles/SFXSetup/resource.h | 6 + .../CPP/7zip/Bundles/SFXSetup/resource.rc | 16 + .../lzma/CPP/7zip/Bundles/SFXSetup/setup.ico | Bin 0 -> 1078 bytes 3rdparty/lzma/CPP/7zip/Bundles/SFXWin/7z.ico | Bin 0 -> 1078 bytes .../lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsp | 962 + .../lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsw | 29 + .../lzma/CPP/7zip/Bundles/SFXWin/SfxWin.cpp | 241 + .../lzma/CPP/7zip/Bundles/SFXWin/StdAfx.cpp | 3 + .../lzma/CPP/7zip/Bundles/SFXWin/StdAfx.h | 14 + .../lzma/CPP/7zip/Bundles/SFXWin/makefile | 147 + .../lzma/CPP/7zip/Bundles/SFXWin/resource.h | 1 + .../lzma/CPP/7zip/Bundles/SFXWin/resource.rc | 50 + 3rdparty/lzma/CPP/7zip/Common/CWrappers.cpp | 230 + 3rdparty/lzma/CPP/7zip/Common/CWrappers.h | 114 + 3rdparty/lzma/CPP/7zip/Common/CreateCoder.cpp | 461 + 3rdparty/lzma/CPP/7zip/Common/CreateCoder.h | 182 + .../CPP/7zip/Common/FilePathAutoRename.cpp | 51 + .../lzma/CPP/7zip/Common/FilePathAutoRename.h | 10 + 3rdparty/lzma/CPP/7zip/Common/FileStreams.cpp | 475 + 3rdparty/lzma/CPP/7zip/Common/FileStreams.h | 166 + 3rdparty/lzma/CPP/7zip/Common/FilterCoder.cpp | 418 + 3rdparty/lzma/CPP/7zip/Common/FilterCoder.h | 226 + 3rdparty/lzma/CPP/7zip/Common/InBuffer.cpp | 135 + 3rdparty/lzma/CPP/7zip/Common/InBuffer.h | 90 + .../lzma/CPP/7zip/Common/InOutTempBuffer.cpp | 127 + .../lzma/CPP/7zip/Common/InOutTempBuffer.h | 48 + .../lzma/CPP/7zip/Common/LimitedStreams.cpp | 367 + .../lzma/CPP/7zip/Common/LimitedStreams.h | 252 + .../lzma/CPP/7zip/Common/LockedStream.cpp | 3 + 3rdparty/lzma/CPP/7zip/Common/LockedStream.h | 6 + 3rdparty/lzma/CPP/7zip/Common/MethodId.cpp | 3 + 3rdparty/lzma/CPP/7zip/Common/MethodId.h | 10 + 3rdparty/lzma/CPP/7zip/Common/MethodProps.cpp | 458 + 3rdparty/lzma/CPP/7zip/Common/MethodProps.h | 194 + .../lzma/CPP/7zip/Common/OffsetStream.cpp | 39 + 3rdparty/lzma/CPP/7zip/Common/OffsetStream.h | 26 + 3rdparty/lzma/CPP/7zip/Common/OutBuffer.cpp | 111 + 3rdparty/lzma/CPP/7zip/Common/OutBuffer.h | 63 + .../lzma/CPP/7zip/Common/ProgressUtils.cpp | 51 + 3rdparty/lzma/CPP/7zip/Common/ProgressUtils.h | 35 + 3rdparty/lzma/CPP/7zip/Common/PropId.cpp | 108 + 3rdparty/lzma/CPP/7zip/Common/RegisterArc.h | 78 + 3rdparty/lzma/CPP/7zip/Common/RegisterCodec.h | 106 + 3rdparty/lzma/CPP/7zip/Common/StdAfx.h | 8 + .../lzma/CPP/7zip/Common/StreamBinder.cpp | 156 + 3rdparty/lzma/CPP/7zip/Common/StreamBinder.h | 60 + .../lzma/CPP/7zip/Common/StreamObjects.cpp | 285 + 3rdparty/lzma/CPP/7zip/Common/StreamObjects.h | 157 + 3rdparty/lzma/CPP/7zip/Common/StreamUtils.cpp | 56 + 3rdparty/lzma/CPP/7zip/Common/StreamUtils.h | 13 + 3rdparty/lzma/CPP/7zip/Common/UniqBlocks.cpp | 57 + 3rdparty/lzma/CPP/7zip/Common/UniqBlocks.h | 26 + 3rdparty/lzma/CPP/7zip/Common/VirtThread.cpp | 48 + 3rdparty/lzma/CPP/7zip/Common/VirtThread.h | 24 + 3rdparty/lzma/CPP/7zip/Compress/Bcj2Coder.cpp | 658 + 3rdparty/lzma/CPP/7zip/Compress/Bcj2Coder.h | 117 + .../lzma/CPP/7zip/Compress/Bcj2Register.cpp | 24 + 3rdparty/lzma/CPP/7zip/Compress/BcjCoder.cpp | 24 + 3rdparty/lzma/CPP/7zip/Compress/BcjCoder.h | 31 + .../lzma/CPP/7zip/Compress/BcjRegister.cpp | 17 + .../lzma/CPP/7zip/Compress/BranchMisc.cpp | 23 + 3rdparty/lzma/CPP/7zip/Compress/BranchMisc.h | 35 + .../lzma/CPP/7zip/Compress/BranchRegister.cpp | 41 + 3rdparty/lzma/CPP/7zip/Compress/ByteSwap.cpp | 92 + .../lzma/CPP/7zip/Compress/CodecExports.cpp | 344 + 3rdparty/lzma/CPP/7zip/Compress/CopyCoder.cpp | 115 + 3rdparty/lzma/CPP/7zip/Compress/CopyCoder.h | 46 + .../lzma/CPP/7zip/Compress/CopyRegister.cpp | 15 + .../lzma/CPP/7zip/Compress/DeltaFilter.cpp | 128 + .../lzma/CPP/7zip/Compress/Lzma2Decoder.cpp | 266 + .../lzma/CPP/7zip/Compress/Lzma2Decoder.h | 88 + .../lzma/CPP/7zip/Compress/Lzma2Encoder.cpp | 99 + .../lzma/CPP/7zip/Compress/Lzma2Encoder.h | 36 + .../lzma/CPP/7zip/Compress/Lzma2Register.cpp | 22 + .../lzma/CPP/7zip/Compress/LzmaDecoder.cpp | 268 + 3rdparty/lzma/CPP/7zip/Compress/LzmaDecoder.h | 91 + .../lzma/CPP/7zip/Compress/LzmaEncoder.cpp | 152 + 3rdparty/lzma/CPP/7zip/Compress/LzmaEncoder.h | 38 + .../lzma/CPP/7zip/Compress/LzmaRegister.cpp | 22 + .../lzma/CPP/7zip/Compress/PpmdDecoder.cpp | 163 + 3rdparty/lzma/CPP/7zip/Compress/PpmdDecoder.h | 78 + .../lzma/CPP/7zip/Compress/PpmdEncoder.cpp | 152 + 3rdparty/lzma/CPP/7zip/Compress/PpmdEncoder.h | 58 + .../lzma/CPP/7zip/Compress/PpmdRegister.cpp | 22 + 3rdparty/lzma/CPP/7zip/Compress/StdAfx.h | 8 + 3rdparty/lzma/CPP/7zip/Crc.mak | 8 + 3rdparty/lzma/CPP/7zip/Crc64.mak | 8 + 3rdparty/lzma/CPP/7zip/Crypto/7zAes.cpp | 280 + 3rdparty/lzma/CPP/7zip/Crypto/7zAes.h | 118 + .../lzma/CPP/7zip/Crypto/7zAesRegister.cpp | 17 + 3rdparty/lzma/CPP/7zip/Crypto/MyAes.cpp | 112 + 3rdparty/lzma/CPP/7zip/Crypto/MyAes.h | 55 + 3rdparty/lzma/CPP/7zip/Crypto/MyAesReg.cpp | 16 + 3rdparty/lzma/CPP/7zip/Crypto/RandGen.cpp | 124 + 3rdparty/lzma/CPP/7zip/Crypto/RandGen.h | 21 + 3rdparty/lzma/CPP/7zip/Crypto/StdAfx.h | 8 + 3rdparty/lzma/CPP/7zip/GuiCommon.rc | 81 + 3rdparty/lzma/CPP/7zip/Guid.txt | 216 + 3rdparty/lzma/CPP/7zip/ICoder.h | 371 + 3rdparty/lzma/CPP/7zip/IDecl.h | 28 + 3rdparty/lzma/CPP/7zip/IPassword.h | 23 + 3rdparty/lzma/CPP/7zip/IProgress.h | 19 + 3rdparty/lzma/CPP/7zip/IStream.h | 127 + 3rdparty/lzma/CPP/7zip/MyVersion.h | 2 + 3rdparty/lzma/CPP/7zip/MyVersionInfo.rc | 2 + 3rdparty/lzma/CPP/7zip/PropID.h | 127 + 3rdparty/lzma/CPP/7zip/SubBuild.mak | 3 + .../lzma/CPP/7zip/UI/Client7z/Client7z.cpp | 956 + .../lzma/CPP/7zip/UI/Client7z/Client7z.dsp | 235 + .../lzma/CPP/7zip/UI/Client7z/Client7z.dsw | 29 + 3rdparty/lzma/CPP/7zip/UI/Client7z/StdAfx.cpp | 3 + 3rdparty/lzma/CPP/7zip/UI/Client7z/StdAfx.h | 8 + 3rdparty/lzma/CPP/7zip/UI/Client7z/makefile | 28 + .../lzma/CPP/7zip/UI/Client7z/resource.rc | 3 + .../CPP/7zip/UI/Common/ArchiveCommandLine.cpp | 1361 + .../CPP/7zip/UI/Common/ArchiveCommandLine.h | 147 + .../7zip/UI/Common/ArchiveExtractCallback.cpp | 1635 + .../7zip/UI/Common/ArchiveExtractCallback.h | 338 + .../lzma/CPP/7zip/UI/Common/ArchiveName.cpp | 78 + .../lzma/CPP/7zip/UI/Common/ArchiveName.h | 13 + .../7zip/UI/Common/ArchiveOpenCallback.cpp | 154 + .../CPP/7zip/UI/Common/ArchiveOpenCallback.h | 112 + 3rdparty/lzma/CPP/7zip/UI/Common/Bench.cpp | 3100 + 3rdparty/lzma/CPP/7zip/UI/Common/Bench.h | 55 + .../lzma/CPP/7zip/UI/Common/DefaultName.cpp | 37 + .../lzma/CPP/7zip/UI/Common/DefaultName.h | 11 + 3rdparty/lzma/CPP/7zip/UI/Common/DirItem.h | 157 + .../lzma/CPP/7zip/UI/Common/EnumDirItems.cpp | 898 + .../lzma/CPP/7zip/UI/Common/EnumDirItems.h | 21 + 3rdparty/lzma/CPP/7zip/UI/Common/ExitCode.h | 27 + 3rdparty/lzma/CPP/7zip/UI/Common/Extract.cpp | 474 + 3rdparty/lzma/CPP/7zip/UI/Common/Extract.h | 94 + .../lzma/CPP/7zip/UI/Common/ExtractMode.h | 34 + .../CPP/7zip/UI/Common/ExtractingFilePath.cpp | 237 + .../CPP/7zip/UI/Common/ExtractingFilePath.h | 19 + 3rdparty/lzma/CPP/7zip/UI/Common/HashCalc.cpp | 351 + 3rdparty/lzma/CPP/7zip/UI/Common/HashCalc.h | 107 + .../CPP/7zip/UI/Common/IFileExtractCallback.h | 114 + .../lzma/CPP/7zip/UI/Common/LoadCodecs.cpp | 1072 + 3rdparty/lzma/CPP/7zip/UI/Common/LoadCodecs.h | 424 + .../lzma/CPP/7zip/UI/Common/OpenArchive.cpp | 3544 + .../lzma/CPP/7zip/UI/Common/OpenArchive.h | 417 + .../lzma/CPP/7zip/UI/Common/PropIDUtils.cpp | 574 + .../lzma/CPP/7zip/UI/Common/PropIDUtils.h | 18 + 3rdparty/lzma/CPP/7zip/UI/Common/Property.h | 14 + .../lzma/CPP/7zip/UI/Common/SetProperties.cpp | 80 + .../lzma/CPP/7zip/UI/Common/SetProperties.h | 10 + .../lzma/CPP/7zip/UI/Common/SortUtils.cpp | 25 + 3rdparty/lzma/CPP/7zip/UI/Common/SortUtils.h | 10 + 3rdparty/lzma/CPP/7zip/UI/Common/StdAfx.h | 8 + .../lzma/CPP/7zip/UI/Common/TempFiles.cpp | 19 + 3rdparty/lzma/CPP/7zip/UI/Common/TempFiles.h | 16 + 3rdparty/lzma/CPP/7zip/UI/Common/Update.cpp | 1553 + 3rdparty/lzma/CPP/7zip/UI/Common/Update.h | 198 + .../lzma/CPP/7zip/UI/Common/UpdateAction.cpp | 64 + .../lzma/CPP/7zip/UI/Common/UpdateAction.h | 66 + .../CPP/7zip/UI/Common/UpdateCallback.cpp | 757 + .../lzma/CPP/7zip/UI/Common/UpdateCallback.h | 147 + .../lzma/CPP/7zip/UI/Common/UpdatePair.cpp | 234 + 3rdparty/lzma/CPP/7zip/UI/Common/UpdatePair.h | 27 + .../lzma/CPP/7zip/UI/Common/UpdateProduce.cpp | 70 + .../lzma/CPP/7zip/UI/Common/UpdateProduce.h | 55 + 3rdparty/lzma/CPP/7zip/UI/Common/WorkDir.cpp | 94 + 3rdparty/lzma/CPP/7zip/UI/Common/WorkDir.h | 26 + .../lzma/CPP/7zip/UI/Common/ZipRegistry.h | 125 + .../lzma/CPP/7zip/UI/Console/BenchCon.cpp | 41 + 3rdparty/lzma/CPP/7zip/UI/Console/BenchCon.h | 14 + 3rdparty/lzma/CPP/7zip/UI/Console/Console.mak | 36 + .../lzma/CPP/7zip/UI/Console/ConsoleClose.cpp | 69 + .../lzma/CPP/7zip/UI/Console/ConsoleClose.h | 33 + .../UI/Console/ExtractCallbackConsole.cpp | 764 + .../7zip/UI/Console/ExtractCallbackConsole.h | 164 + 3rdparty/lzma/CPP/7zip/UI/Console/HashCon.cpp | 367 + 3rdparty/lzma/CPP/7zip/UI/Console/HashCon.h | 48 + 3rdparty/lzma/CPP/7zip/UI/Console/List.cpp | 1288 + 3rdparty/lzma/CPP/7zip/UI/Console/List.h | 27 + 3rdparty/lzma/CPP/7zip/UI/Console/Main.cpp | 1146 + 3rdparty/lzma/CPP/7zip/UI/Console/MainAr.cpp | 167 + .../7zip/UI/Console/OpenCallbackConsole.cpp | 111 + .../CPP/7zip/UI/Console/OpenCallbackConsole.h | 65 + .../CPP/7zip/UI/Console/PercentPrinter.cpp | 181 + .../lzma/CPP/7zip/UI/Console/PercentPrinter.h | 62 + 3rdparty/lzma/CPP/7zip/UI/Console/StdAfx.cpp | 3 + 3rdparty/lzma/CPP/7zip/UI/Console/StdAfx.h | 8 + .../7zip/UI/Console/UpdateCallbackConsole.cpp | 674 + .../7zip/UI/Console/UpdateCallbackConsole.h | 124 + .../CPP/7zip/UI/Console/UserInputUtils.cpp | 90 + .../lzma/CPP/7zip/UI/Console/UserInputUtils.h | 24 + 3rdparty/lzma/CPP/7zip/UI/Console/makefile | 69 + 3rdparty/lzma/CPP/7zip/UI/Console/resource.rc | 3 + .../lzma/CPP/7zip/UI/Explorer/MyMessages.cpp | 37 + .../lzma/CPP/7zip/UI/Explorer/MyMessages.h | 16 + .../CPP/7zip/UI/FileManager/BrowseDialog.cpp | 1024 + .../CPP/7zip/UI/FileManager/BrowseDialog.h | 21 + .../CPP/7zip/UI/FileManager/BrowseDialogRes.h | 9 + .../CPP/7zip/UI/FileManager/ComboDialog.cpp | 64 + .../CPP/7zip/UI/FileManager/ComboDialog.h | 28 + .../CPP/7zip/UI/FileManager/ComboDialogRes.h | 4 + .../lzma/CPP/7zip/UI/FileManager/DialogSize.h | 16 + .../7zip/UI/FileManager/ExtractCallback.cpp | 1035 + .../CPP/7zip/UI/FileManager/ExtractCallback.h | 328 + .../CPP/7zip/UI/FileManager/FormatUtils.cpp | 28 + .../CPP/7zip/UI/FileManager/FormatUtils.h | 14 + .../lzma/CPP/7zip/UI/FileManager/LangUtils.h | 40 + .../CPP/7zip/UI/FileManager/MyWindowsNew.h | 76 + .../7zip/UI/FileManager/OverwriteDialog.cpp | 119 + .../CPP/7zip/UI/FileManager/OverwriteDialog.h | 69 + .../7zip/UI/FileManager/OverwriteDialog.rc | 91 + .../7zip/UI/FileManager/OverwriteDialogRes.h | 17 + .../7zip/UI/FileManager/PasswordDialog.cpp | 58 + .../CPP/7zip/UI/FileManager/PasswordDialog.h | 28 + .../CPP/7zip/UI/FileManager/PasswordDialog.rc | 14 + .../7zip/UI/FileManager/PasswordDialogRes.h | 5 + .../7zip/UI/FileManager/ProgressDialog.cpp | 196 + .../CPP/7zip/UI/FileManager/ProgressDialog.h | 170 + .../CPP/7zip/UI/FileManager/ProgressDialog.rc | 12 + .../7zip/UI/FileManager/ProgressDialog2.cpp | 1319 + .../CPP/7zip/UI/FileManager/ProgressDialog2.h | 313 + .../7zip/UI/FileManager/ProgressDialog2.rc | 40 + .../7zip/UI/FileManager/ProgressDialog2Res.h | 48 + .../7zip/UI/FileManager/ProgressDialog2a.rc | 80 + .../7zip/UI/FileManager/ProgressDialogRes.h | 3 + .../CPP/7zip/UI/FileManager/PropertyName.cpp | 23 + .../CPP/7zip/UI/FileManager/PropertyName.h | 10 + .../CPP/7zip/UI/FileManager/PropertyNameRes.h | 95 + .../CPP/7zip/UI/FileManager/SysIconUtils.cpp | 255 + .../CPP/7zip/UI/FileManager/SysIconUtils.h | 62 + .../lzma/CPP/7zip/UI/FileManager/resource.h | 175 + .../CPP/7zip/UI/FileManager/resourceGui.h | 15 + 3rdparty/lzma/CPP/7zip/UI/GUI/Extract.rc | 59 + .../lzma/CPP/7zip/UI/GUI/ExtractDialog.cpp | 418 + 3rdparty/lzma/CPP/7zip/UI/GUI/ExtractDialog.h | 113 + .../lzma/CPP/7zip/UI/GUI/ExtractDialog.rc | 98 + .../lzma/CPP/7zip/UI/GUI/ExtractDialogRes.h | 24 + 3rdparty/lzma/CPP/7zip/UI/GUI/ExtractGUI.cpp | 272 + 3rdparty/lzma/CPP/7zip/UI/GUI/ExtractGUI.h | 38 + 3rdparty/lzma/CPP/7zip/UI/GUI/ExtractRes.h | 51 + 3rdparty/lzma/CPP/7zip/UI/GUI/HashGUI.h | 16 + 3rdparty/lzma/CPP/7zip/UI/GUI/resource2.h | 2 + 3rdparty/lzma/CPP/Build.mak | 119 + 3rdparty/lzma/CPP/Common/AutoPtr.h | 35 + 3rdparty/lzma/CPP/Common/CRC.cpp | 7 + 3rdparty/lzma/CPP/Common/C_FileIO.cpp | 92 + 3rdparty/lzma/CPP/Common/C_FileIO.h | 53 + 3rdparty/lzma/CPP/Common/ComTry.h | 17 + .../lzma/CPP/Common/CommandLineParser.cpp | 203 + 3rdparty/lzma/CPP/Common/CommandLineParser.h | 63 + 3rdparty/lzma/CPP/Common/Common.h | 13 + 3rdparty/lzma/CPP/Common/CrcReg.cpp | 98 + 3rdparty/lzma/CPP/Common/Defs.h | 15 + 3rdparty/lzma/CPP/Common/DynamicBuffer.h | 64 + 3rdparty/lzma/CPP/Common/IntToString.cpp | 146 + 3rdparty/lzma/CPP/Common/IntToString.h | 24 + 3rdparty/lzma/CPP/Common/Lang.h | 23 + 3rdparty/lzma/CPP/Common/ListFileUtils.cpp | 117 + 3rdparty/lzma/CPP/Common/ListFileUtils.h | 14 + 3rdparty/lzma/CPP/Common/MyBuffer.h | 244 + 3rdparty/lzma/CPP/Common/MyCom.h | 262 + 3rdparty/lzma/CPP/Common/MyException.h | 14 + 3rdparty/lzma/CPP/Common/MyGuidDef.h | 54 + 3rdparty/lzma/CPP/Common/MyInitGuid.h | 45 + 3rdparty/lzma/CPP/Common/MyLinux.h | 42 + 3rdparty/lzma/CPP/Common/MyString.cpp | 1564 + 3rdparty/lzma/CPP/Common/MyString.h | 784 + 3rdparty/lzma/CPP/Common/MyTypes.h | 35 + 3rdparty/lzma/CPP/Common/MyUnknown.h | 17 + 3rdparty/lzma/CPP/Common/MyVector.cpp | 3 + 3rdparty/lzma/CPP/Common/MyVector.h | 626 + 3rdparty/lzma/CPP/Common/MyWindows.cpp | 145 + 3rdparty/lzma/CPP/Common/MyWindows.h | 216 + 3rdparty/lzma/CPP/Common/NewHandler.cpp | 163 + 3rdparty/lzma/CPP/Common/NewHandler.h | 69 + 3rdparty/lzma/CPP/Common/Sha256Reg.cpp | 40 + 3rdparty/lzma/CPP/Common/StdAfx.h | 8 + 3rdparty/lzma/CPP/Common/StdInStream.cpp | 94 + 3rdparty/lzma/CPP/Common/StdInStream.h | 33 + 3rdparty/lzma/CPP/Common/StdOutStream.cpp | 106 + 3rdparty/lzma/CPP/Common/StdOutStream.h | 62 + 3rdparty/lzma/CPP/Common/StringConvert.cpp | 313 + 3rdparty/lzma/CPP/Common/StringConvert.h | 77 + 3rdparty/lzma/CPP/Common/StringToInt.cpp | 144 + 3rdparty/lzma/CPP/Common/StringToInt.h | 21 + 3rdparty/lzma/CPP/Common/TextConfig.cpp | 124 + 3rdparty/lzma/CPP/Common/TextConfig.h | 19 + 3rdparty/lzma/CPP/Common/UTFConvert.cpp | 288 + 3rdparty/lzma/CPP/Common/UTFConvert.h | 12 + 3rdparty/lzma/CPP/Common/Wildcard.cpp | 682 + 3rdparty/lzma/CPP/Common/Wildcard.h | 149 + 3rdparty/lzma/CPP/Common/XzCrc64Reg.cpp | 42 + 3rdparty/lzma/CPP/Windows/COM.h | 70 + 3rdparty/lzma/CPP/Windows/CommonDialog.cpp | 185 + 3rdparty/lzma/CPP/Windows/CommonDialog.h | 23 + .../lzma/CPP/Windows/Control/ComboBox.cpp | 66 + 3rdparty/lzma/CPP/Windows/Control/ComboBox.h | 65 + .../lzma/CPP/Windows/Control/CommandBar.h | 52 + 3rdparty/lzma/CPP/Windows/Control/Dialog.cpp | 250 + 3rdparty/lzma/CPP/Windows/Control/Dialog.h | 167 + 3rdparty/lzma/CPP/Windows/Control/Edit.h | 19 + .../lzma/CPP/Windows/Control/ImageList.cpp | 10 + 3rdparty/lzma/CPP/Windows/Control/ImageList.h | 87 + .../lzma/CPP/Windows/Control/ListView.cpp | 155 + 3rdparty/lzma/CPP/Windows/Control/ListView.h | 146 + .../lzma/CPP/Windows/Control/ProgressBar.h | 35 + .../lzma/CPP/Windows/Control/PropertyPage.cpp | 143 + .../lzma/CPP/Windows/Control/PropertyPage.h | 50 + 3rdparty/lzma/CPP/Windows/Control/ReBar.h | 34 + 3rdparty/lzma/CPP/Windows/Control/Static.h | 28 + 3rdparty/lzma/CPP/Windows/Control/StatusBar.h | 42 + 3rdparty/lzma/CPP/Windows/Control/StdAfx.h | 8 + 3rdparty/lzma/CPP/Windows/Control/ToolBar.h | 43 + 3rdparty/lzma/CPP/Windows/Control/Trackbar.h | 27 + 3rdparty/lzma/CPP/Windows/Control/Window2.cpp | 200 + 3rdparty/lzma/CPP/Windows/Control/Window2.h | 51 + 3rdparty/lzma/CPP/Windows/DLL.cpp | 110 + 3rdparty/lzma/CPP/Windows/DLL.h | 58 + 3rdparty/lzma/CPP/Windows/Defs.h | 17 + 3rdparty/lzma/CPP/Windows/ErrorMsg.cpp | 66 + 3rdparty/lzma/CPP/Windows/ErrorMsg.h | 15 + 3rdparty/lzma/CPP/Windows/FileDir.cpp | 690 + 3rdparty/lzma/CPP/Windows/FileDir.h | 104 + 3rdparty/lzma/CPP/Windows/FileFind.cpp | 743 + 3rdparty/lzma/CPP/Windows/FileFind.h | 161 + 3rdparty/lzma/CPP/Windows/FileIO.cpp | 432 + 3rdparty/lzma/CPP/Windows/FileIO.h | 203 + 3rdparty/lzma/CPP/Windows/FileLink.cpp | 436 + 3rdparty/lzma/CPP/Windows/FileMapping.cpp | 12 + 3rdparty/lzma/CPP/Windows/FileMapping.h | 66 + 3rdparty/lzma/CPP/Windows/FileName.cpp | 841 + 3rdparty/lzma/CPP/Windows/FileName.h | 115 + 3rdparty/lzma/CPP/Windows/FileSystem.cpp | 131 + 3rdparty/lzma/CPP/Windows/FileSystem.h | 27 + 3rdparty/lzma/CPP/Windows/Handle.h | 37 + 3rdparty/lzma/CPP/Windows/MemoryLock.cpp | 72 + 3rdparty/lzma/CPP/Windows/MemoryLock.h | 38 + 3rdparty/lzma/CPP/Windows/NtCheck.h | 46 + 3rdparty/lzma/CPP/Windows/PropVariant.cpp | 347 + 3rdparty/lzma/CPP/Windows/PropVariant.h | 112 + 3rdparty/lzma/CPP/Windows/PropVariantConv.cpp | 109 + 3rdparty/lzma/CPP/Windows/PropVariantConv.h | 30 + 3rdparty/lzma/CPP/Windows/Registry.cpp | 390 + 3rdparty/lzma/CPP/Windows/Registry.h | 84 + 3rdparty/lzma/CPP/Windows/ResourceString.cpp | 103 + 3rdparty/lzma/CPP/Windows/ResourceString.h | 16 + 3rdparty/lzma/CPP/Windows/SecurityUtils.cpp | 181 + 3rdparty/lzma/CPP/Windows/SecurityUtils.h | 167 + 3rdparty/lzma/CPP/Windows/Shell.cpp | 340 + 3rdparty/lzma/CPP/Windows/Shell.h | 94 + 3rdparty/lzma/CPP/Windows/StdAfx.h | 8 + 3rdparty/lzma/CPP/Windows/Synchronization.cpp | 10 + 3rdparty/lzma/CPP/Windows/Synchronization.h | 164 + 3rdparty/lzma/CPP/Windows/System.cpp | 112 + 3rdparty/lzma/CPP/Windows/System.h | 17 + 3rdparty/lzma/CPP/Windows/Thread.h | 38 + 3rdparty/lzma/CPP/Windows/TimeUtils.cpp | 203 + 3rdparty/lzma/CPP/Windows/TimeUtils.h | 24 + 3rdparty/lzma/CPP/Windows/Window.cpp | 179 + 3rdparty/lzma/CPP/Windows/Window.h | 284 + 3rdparty/lzma/CS/7zip/Common/CRC.cs | 55 + .../lzma/CS/7zip/Common/CommandLineParser.cs | 274 + 3rdparty/lzma/CS/7zip/Common/InBuffer.cs | 72 + 3rdparty/lzma/CS/7zip/Common/OutBuffer.cs | 47 + .../lzma/CS/7zip/Compress/LZ/IMatchFinder.cs | 24 + .../lzma/CS/7zip/Compress/LZ/LzBinTree.cs | 367 + .../lzma/CS/7zip/Compress/LZ/LzInWindow.cs | 132 + .../lzma/CS/7zip/Compress/LZ/LzOutWindow.cs | 110 + .../lzma/CS/7zip/Compress/LZMA/LzmaBase.cs | 76 + .../lzma/CS/7zip/Compress/LZMA/LzmaDecoder.cs | 398 + .../lzma/CS/7zip/Compress/LZMA/LzmaEncoder.cs | 1480 + .../CS/7zip/Compress/LzmaAlone/LzmaAlone.cs | 364 + .../7zip/Compress/LzmaAlone/LzmaAlone.csproj | 90 + .../CS/7zip/Compress/LzmaAlone/LzmaAlone.sln | 20 + .../CS/7zip/Compress/LzmaAlone/LzmaBench.cs | 340 + .../LzmaAlone/Properties/AssemblyInfo.cs | 29 + .../LzmaAlone/Properties/Resources.cs | 70 + .../Compress/LzmaAlone/Properties/Settings.cs | 42 + .../CS/7zip/Compress/RangeCoder/RangeCoder.cs | 234 + .../7zip/Compress/RangeCoder/RangeCoderBit.cs | 117 + .../Compress/RangeCoder/RangeCoderBitTree.cs | 157 + 3rdparty/lzma/CS/7zip/ICoder.cs | 157 + 3rdparty/lzma/DOC/7zC.txt | 187 + 3rdparty/lzma/DOC/7zFormat.txt | 469 + 3rdparty/lzma/DOC/Methods.txt | 159 + 3rdparty/lzma/DOC/installer.txt | 166 + 3rdparty/lzma/DOC/lzma-history.txt | 363 + 3rdparty/lzma/DOC/lzma-sdk.txt | 357 + 3rdparty/lzma/DOC/lzma-specification.txt | 1176 + 3rdparty/lzma/DOC/lzma.txt | 328 + 3rdparty/lzma/Java/SevenZip/CRC.java | 52 + .../Java/SevenZip/Compression/LZ/BinTree.java | 382 + .../SevenZip/Compression/LZ/InWindow.java | 131 + .../SevenZip/Compression/LZ/OutWindow.java | 85 + .../Java/SevenZip/Compression/LZMA/Base.java | 88 + .../SevenZip/Compression/LZMA/Decoder.java | 329 + .../SevenZip/Compression/LZMA/Encoder.java | 1416 + .../RangeCoder/BitTreeDecoder.java | 55 + .../RangeCoder/BitTreeEncoder.java | 99 + .../Compression/RangeCoder/Decoder.java | 88 + .../Compression/RangeCoder/Encoder.java | 151 + .../lzma/Java/SevenZip/ICodeProgress.java | 6 + 3rdparty/lzma/Java/SevenZip/LzmaAlone.java | 253 + 3rdparty/lzma/Java/SevenZip/LzmaBench.java | 392 + 3rdparty/utf8proc/.travis.yml | 22 + 3rdparty/utf8proc/CMakeLists.txt | 101 + 3rdparty/utf8proc/Doxyfile | 2499 + 3rdparty/utf8proc/LICENSE.md | 93 + 3rdparty/utf8proc/MANIFEST | 9 + 3rdparty/utf8proc/Makefile | 181 + 3rdparty/utf8proc/NEWS.md | 416 + 3rdparty/utf8proc/README.md | 89 + 3rdparty/utf8proc/appveyor.yml | 46 + 3rdparty/utf8proc/bench/Makefile | 40 + 3rdparty/utf8proc/bench/bench.c | 56 + 3rdparty/utf8proc/bench/icu.c | 61 + 3rdparty/utf8proc/bench/unistring.c | 60 + 3rdparty/utf8proc/bench/util.c | 39 + 3rdparty/utf8proc/bench/util.h | 22 + 3rdparty/utf8proc/data/Makefile | 63 + 3rdparty/utf8proc/data/charwidths.jl | 169 + 3rdparty/utf8proc/data/data_generator.rb | 448 + 3rdparty/utf8proc/libutf8proc.pc.in | 10 + 3rdparty/utf8proc/lump.md | 27 + 3rdparty/utf8proc/test/case.c | 76 + 3rdparty/utf8proc/test/charwidth.c | 77 + 3rdparty/utf8proc/test/custom.c | 28 + 3rdparty/utf8proc/test/graphemetest.c | 127 + 3rdparty/utf8proc/test/iscase.c | 62 + 3rdparty/utf8proc/test/iterate.c | 168 + 3rdparty/utf8proc/test/misc.c | 51 + 3rdparty/utf8proc/test/normtest.c | 63 + 3rdparty/utf8proc/test/printproperty.c | 60 + 3rdparty/utf8proc/test/tests.c | 58 + 3rdparty/utf8proc/test/tests.h | 27 + 3rdparty/utf8proc/test/valid.c | 41 + 3rdparty/utf8proc/utf8proc.c | 792 + 3rdparty/utf8proc/utf8proc.h | 733 + 3rdparty/utf8proc/utf8proc_data.c | 16391 +++ 3rdparty/utf8proc/utils.cmake | 20 + 3rdparty/zlib/CMakeLists.txt | 249 + 3rdparty/zlib/ChangeLog | 1515 + 3rdparty/zlib/FAQ | 368 + 3rdparty/zlib/INDEX | 68 + 3rdparty/zlib/Makefile | 5 + 3rdparty/zlib/Makefile.in | 410 + 3rdparty/zlib/README | 115 + 3rdparty/zlib/adler32.c | 186 + 3rdparty/zlib/amiga/Makefile.pup | 69 + 3rdparty/zlib/amiga/Makefile.sas | 68 + 3rdparty/zlib/compress.c | 86 + 3rdparty/zlib/configure | 921 + 3rdparty/zlib/contrib/README.contrib | 78 + 3rdparty/zlib/contrib/ada/buffer_demo.adb | 106 + 3rdparty/zlib/contrib/ada/mtest.adb | 156 + 3rdparty/zlib/contrib/ada/read.adb | 156 + 3rdparty/zlib/contrib/ada/readme.txt | 65 + 3rdparty/zlib/contrib/ada/test.adb | 463 + 3rdparty/zlib/contrib/ada/zlib-streams.adb | 225 + 3rdparty/zlib/contrib/ada/zlib-streams.ads | 114 + 3rdparty/zlib/contrib/ada/zlib-thin.adb | 141 + 3rdparty/zlib/contrib/ada/zlib-thin.ads | 450 + 3rdparty/zlib/contrib/ada/zlib.adb | 701 + 3rdparty/zlib/contrib/ada/zlib.ads | 328 + 3rdparty/zlib/contrib/ada/zlib.gpr | 20 + 3rdparty/zlib/contrib/amd64/amd64-match.S | 452 + 3rdparty/zlib/contrib/asm686/README.686 | 51 + 3rdparty/zlib/contrib/asm686/match.S | 357 + 3rdparty/zlib/contrib/blast/Makefile | 8 + 3rdparty/zlib/contrib/blast/README | 4 + 3rdparty/zlib/contrib/blast/blast.c | 466 + 3rdparty/zlib/contrib/blast/blast.h | 83 + 3rdparty/zlib/contrib/blast/test.pk | Bin 0 -> 8 bytes 3rdparty/zlib/contrib/blast/test.txt | 1 + 3rdparty/zlib/contrib/delphi/ZLib.pas | 557 + 3rdparty/zlib/contrib/delphi/ZLibConst.pas | 11 + 3rdparty/zlib/contrib/delphi/readme.txt | 76 + 3rdparty/zlib/contrib/delphi/zlibd32.mak | 99 + 3rdparty/zlib/contrib/dotzlib/DotZLib.build | 33 + 3rdparty/zlib/contrib/dotzlib/DotZLib.chm | Bin 0 -> 72726 bytes 3rdparty/zlib/contrib/dotzlib/DotZLib.sln | 21 + .../contrib/dotzlib/DotZLib/AssemblyInfo.cs | 58 + .../contrib/dotzlib/DotZLib/ChecksumImpl.cs | 202 + .../contrib/dotzlib/DotZLib/CircularBuffer.cs | 83 + .../zlib/contrib/dotzlib/DotZLib/CodecBase.cs | 198 + .../zlib/contrib/dotzlib/DotZLib/Deflater.cs | 106 + .../zlib/contrib/dotzlib/DotZLib/DotZLib.cs | 288 + .../contrib/dotzlib/DotZLib/DotZLib.csproj | 141 + .../contrib/dotzlib/DotZLib/GZipStream.cs | 301 + .../zlib/contrib/dotzlib/DotZLib/Inflater.cs | 105 + .../zlib/contrib/dotzlib/DotZLib/UnitTests.cs | 274 + 3rdparty/zlib/contrib/dotzlib/LICENSE_1_0.txt | 23 + 3rdparty/zlib/contrib/dotzlib/readme.txt | 58 + 3rdparty/zlib/contrib/gcc_gvmat64/gvmat64.S | 574 + 3rdparty/zlib/contrib/infback9/README | 1 + 3rdparty/zlib/contrib/infback9/infback9.c | 615 + 3rdparty/zlib/contrib/infback9/infback9.h | 37 + 3rdparty/zlib/contrib/infback9/inffix9.h | 107 + 3rdparty/zlib/contrib/infback9/inflate9.h | 47 + 3rdparty/zlib/contrib/infback9/inftree9.c | 324 + 3rdparty/zlib/contrib/infback9/inftree9.h | 61 + 3rdparty/zlib/contrib/inflate86/inffas86.c | 1157 + 3rdparty/zlib/contrib/inflate86/inffast.S | 1368 + 3rdparty/zlib/contrib/iostream/test.cpp | 24 + 3rdparty/zlib/contrib/iostream/zfstream.cpp | 329 + 3rdparty/zlib/contrib/iostream/zfstream.h | 128 + 3rdparty/zlib/contrib/iostream2/zstream.h | 307 + .../zlib/contrib/iostream2/zstream_test.cpp | 25 + 3rdparty/zlib/contrib/iostream3/README | 35 + 3rdparty/zlib/contrib/iostream3/TODO | 17 + 3rdparty/zlib/contrib/iostream3/test.cc | 50 + 3rdparty/zlib/contrib/iostream3/zfstream.cc | 479 + 3rdparty/zlib/contrib/iostream3/zfstream.h | 466 + 3rdparty/zlib/contrib/masmx64/bld_ml64.bat | 2 + 3rdparty/zlib/contrib/masmx64/gvmat64.asm | 553 + 3rdparty/zlib/contrib/masmx64/inffas8664.c | 186 + 3rdparty/zlib/contrib/masmx64/inffasx64.asm | 396 + 3rdparty/zlib/contrib/masmx64/readme.txt | 31 + 3rdparty/zlib/contrib/masmx86/bld_ml32.bat | 2 + 3rdparty/zlib/contrib/masmx86/inffas32.asm | 1080 + 3rdparty/zlib/contrib/masmx86/match686.asm | 479 + 3rdparty/zlib/contrib/masmx86/readme.txt | 27 + 3rdparty/zlib/contrib/minizip/Makefile | 25 + 3rdparty/zlib/contrib/minizip/Makefile.am | 45 + .../contrib/minizip/MiniZip64_Changes.txt | 6 + .../zlib/contrib/minizip/MiniZip64_info.txt | 74 + 3rdparty/zlib/contrib/minizip/configure.ac | 32 + 3rdparty/zlib/contrib/minizip/crypt.h | 131 + 3rdparty/zlib/contrib/minizip/ioapi.c | 247 + 3rdparty/zlib/contrib/minizip/ioapi.h | 208 + 3rdparty/zlib/contrib/minizip/iowin32.c | 462 + 3rdparty/zlib/contrib/minizip/iowin32.h | 28 + 3rdparty/zlib/contrib/minizip/make_vms.com | 25 + 3rdparty/zlib/contrib/minizip/miniunz.c | 660 + 3rdparty/zlib/contrib/minizip/miniunzip.1 | 63 + 3rdparty/zlib/contrib/minizip/minizip.1 | 46 + 3rdparty/zlib/contrib/minizip/minizip.c | 520 + 3rdparty/zlib/contrib/minizip/minizip.pc.in | 12 + 3rdparty/zlib/contrib/minizip/mztools.c | 291 + 3rdparty/zlib/contrib/minizip/mztools.h | 37 + 3rdparty/zlib/contrib/minizip/unzip.c | 2125 + 3rdparty/zlib/contrib/minizip/unzip.h | 437 + 3rdparty/zlib/contrib/minizip/zip.c | 2007 + 3rdparty/zlib/contrib/minizip/zip.h | 362 + 3rdparty/zlib/contrib/pascal/example.pas | 599 + 3rdparty/zlib/contrib/pascal/readme.txt | 76 + 3rdparty/zlib/contrib/pascal/zlibd32.mak | 99 + 3rdparty/zlib/contrib/pascal/zlibpas.pas | 276 + 3rdparty/zlib/contrib/puff/Makefile | 42 + 3rdparty/zlib/contrib/puff/README | 63 + 3rdparty/zlib/contrib/puff/puff.c | 840 + 3rdparty/zlib/contrib/puff/puff.h | 35 + 3rdparty/zlib/contrib/puff/pufftest.c | 165 + 3rdparty/zlib/contrib/puff/zeros.raw | Bin 0 -> 2517 bytes 3rdparty/zlib/contrib/testzlib/testzlib.c | 275 + 3rdparty/zlib/contrib/testzlib/testzlib.txt | 10 + 3rdparty/zlib/contrib/untgz/Makefile | 14 + 3rdparty/zlib/contrib/untgz/Makefile.msc | 17 + 3rdparty/zlib/contrib/untgz/untgz.c | 674 + 3rdparty/zlib/contrib/vstudio/readme.txt | 78 + .../zlib/contrib/vstudio/vc10/miniunz.vcxproj | 310 + .../vstudio/vc10/miniunz.vcxproj.filters | 22 + .../zlib/contrib/vstudio/vc10/minizip.vcxproj | 307 + .../vstudio/vc10/minizip.vcxproj.filters | 22 + .../contrib/vstudio/vc10/testzlib.vcxproj | 420 + .../vstudio/vc10/testzlib.vcxproj.filters | 58 + .../contrib/vstudio/vc10/testzlibdll.vcxproj | 310 + .../vstudio/vc10/testzlibdll.vcxproj.filters | 22 + 3rdparty/zlib/contrib/vstudio/vc10/zlib.rc | 32 + .../contrib/vstudio/vc10/zlibstat.vcxproj | 473 + .../vstudio/vc10/zlibstat.vcxproj.filters | 77 + 3rdparty/zlib/contrib/vstudio/vc10/zlibvc.def | 153 + 3rdparty/zlib/contrib/vstudio/vc10/zlibvc.sln | 135 + .../zlib/contrib/vstudio/vc10/zlibvc.vcxproj | 657 + .../vstudio/vc10/zlibvc.vcxproj.filters | 118 + .../zlib/contrib/vstudio/vc11/miniunz.vcxproj | 314 + .../zlib/contrib/vstudio/vc11/minizip.vcxproj | 311 + .../contrib/vstudio/vc11/testzlib.vcxproj | 426 + .../contrib/vstudio/vc11/testzlibdll.vcxproj | 314 + 3rdparty/zlib/contrib/vstudio/vc11/zlib.rc | 32 + .../contrib/vstudio/vc11/zlibstat.vcxproj | 464 + 3rdparty/zlib/contrib/vstudio/vc11/zlibvc.def | 153 + 3rdparty/zlib/contrib/vstudio/vc11/zlibvc.sln | 117 + .../zlib/contrib/vstudio/vc11/zlibvc.vcxproj | 688 + .../zlib/contrib/vstudio/vc12/miniunz.vcxproj | 316 + .../zlib/contrib/vstudio/vc12/minizip.vcxproj | 313 + .../contrib/vstudio/vc12/testzlib.vcxproj | 430 + .../contrib/vstudio/vc12/testzlibdll.vcxproj | 316 + 3rdparty/zlib/contrib/vstudio/vc12/zlib.rc | 32 + .../contrib/vstudio/vc12/zlibstat.vcxproj | 467 + 3rdparty/zlib/contrib/vstudio/vc12/zlibvc.def | 153 + 3rdparty/zlib/contrib/vstudio/vc12/zlibvc.sln | 119 + .../zlib/contrib/vstudio/vc12/zlibvc.vcxproj | 692 + .../zlib/contrib/vstudio/vc14/miniunz.vcxproj | 316 + .../zlib/contrib/vstudio/vc14/minizip.vcxproj | 313 + .../contrib/vstudio/vc14/testzlib.vcxproj | 430 + .../contrib/vstudio/vc14/testzlibdll.vcxproj | 316 + 3rdparty/zlib/contrib/vstudio/vc14/zlib.rc | 32 + .../contrib/vstudio/vc14/zlibstat.vcxproj | 467 + 3rdparty/zlib/contrib/vstudio/vc14/zlibvc.def | 153 + 3rdparty/zlib/contrib/vstudio/vc14/zlibvc.sln | 119 + .../zlib/contrib/vstudio/vc14/zlibvc.vcxproj | 692 + .../zlib/contrib/vstudio/vc9/miniunz.vcproj | 565 + .../zlib/contrib/vstudio/vc9/minizip.vcproj | 562 + .../zlib/contrib/vstudio/vc9/testzlib.vcproj | 852 + .../contrib/vstudio/vc9/testzlibdll.vcproj | 565 + 3rdparty/zlib/contrib/vstudio/vc9/zlib.rc | 32 + .../zlib/contrib/vstudio/vc9/zlibstat.vcproj | 835 + 3rdparty/zlib/contrib/vstudio/vc9/zlibvc.def | 153 + 3rdparty/zlib/contrib/vstudio/vc9/zlibvc.sln | 144 + .../zlib/contrib/vstudio/vc9/zlibvc.vcproj | 1156 + 3rdparty/zlib/crc32.c | 442 + 3rdparty/zlib/crc32.h | 441 + 3rdparty/zlib/deflate.c | 2163 + 3rdparty/zlib/deflate.h | 349 + 3rdparty/zlib/doc/algorithm.txt | 209 + 3rdparty/zlib/doc/rfc1950.txt | 619 + 3rdparty/zlib/doc/rfc1951.txt | 955 + 3rdparty/zlib/doc/rfc1952.txt | 675 + 3rdparty/zlib/doc/txtvsbin.txt | 107 + 3rdparty/zlib/examples/README.examples | 49 + 3rdparty/zlib/examples/enough.c | 572 + 3rdparty/zlib/examples/fitblk.c | 233 + 3rdparty/zlib/examples/gun.c | 702 + 3rdparty/zlib/examples/gzappend.c | 504 + 3rdparty/zlib/examples/gzjoin.c | 449 + 3rdparty/zlib/examples/gzlog.c | 1059 + 3rdparty/zlib/examples/gzlog.h | 91 + 3rdparty/zlib/examples/zlib_how.html | 545 + 3rdparty/zlib/examples/zpipe.c | 205 + 3rdparty/zlib/examples/zran.c | 409 + 3rdparty/zlib/gzclose.c | 25 + 3rdparty/zlib/gzguts.h | 218 + 3rdparty/zlib/gzlib.c | 637 + 3rdparty/zlib/gzread.c | 654 + 3rdparty/zlib/gzwrite.c | 665 + 3rdparty/zlib/infback.c | 640 + 3rdparty/zlib/inffast.c | 323 + 3rdparty/zlib/inffast.h | 11 + 3rdparty/zlib/inffixed.h | 94 + 3rdparty/zlib/inflate.c | 1561 + 3rdparty/zlib/inflate.h | 125 + 3rdparty/zlib/inftrees.c | 304 + 3rdparty/zlib/inftrees.h | 62 + 3rdparty/zlib/make_vms.com | 867 + 3rdparty/zlib/msdos/Makefile.bor | 115 + 3rdparty/zlib/msdos/Makefile.dj2 | 104 + 3rdparty/zlib/msdos/Makefile.emx | 69 + 3rdparty/zlib/msdos/Makefile.msc | 112 + 3rdparty/zlib/msdos/Makefile.tc | 100 + 3rdparty/zlib/nintendods/Makefile | 126 + 3rdparty/zlib/nintendods/README | 5 + 3rdparty/zlib/old/Makefile.emx | 69 + 3rdparty/zlib/old/Makefile.riscos | 151 + 3rdparty/zlib/old/README | 3 + 3rdparty/zlib/old/descrip.mms | 48 + 3rdparty/zlib/old/os2/Makefile.os2 | 136 + 3rdparty/zlib/old/os2/zlib.def | 51 + 3rdparty/zlib/old/visual-basic.txt | 160 + 3rdparty/zlib/os400/README400 | 48 + 3rdparty/zlib/os400/bndsrc | 119 + 3rdparty/zlib/os400/make.sh | 366 + 3rdparty/zlib/os400/zlib.inc | 527 + 3rdparty/zlib/qnx/package.qpg | 141 + 3rdparty/zlib/test/example.c | 602 + 3rdparty/zlib/test/infcover.c | 671 + 3rdparty/zlib/test/minigzip.c | 651 + 3rdparty/zlib/treebuild.xml | 116 + 3rdparty/zlib/trees.c | 1203 + 3rdparty/zlib/trees.h | 128 + 3rdparty/zlib/uncompr.c | 93 + 3rdparty/zlib/watcom/watcom_f.mak | 43 + 3rdparty/zlib/watcom/watcom_l.mak | 43 + 3rdparty/zlib/win32/DLL_FAQ.txt | 397 + 3rdparty/zlib/win32/Makefile.bor | 110 + 3rdparty/zlib/win32/Makefile.gcc | 182 + 3rdparty/zlib/win32/Makefile.msc | 163 + 3rdparty/zlib/win32/README-WIN32.txt | 103 + 3rdparty/zlib/win32/VisualC.txt | 3 + 3rdparty/zlib/win32/zlib.def | 94 + 3rdparty/zlib/win32/zlib1.rc | 40 + 3rdparty/zlib/zconf.h | 534 + 3rdparty/zlib/zconf.h.cmakein | 536 + 3rdparty/zlib/zconf.h.in | 534 + 3rdparty/zlib/zlib.3 | 149 + 3rdparty/zlib/zlib.3.pdf | Bin 0 -> 19318 bytes 3rdparty/zlib/zlib.h | 1912 + 3rdparty/zlib/zlib.map | 94 + 3rdparty/zlib/zlib.pc.cmakein | 13 + 3rdparty/zlib/zlib.pc.in | 13 + 3rdparty/zlib/zlib2ansi | 152 + 3rdparty/zlib/zutil.c | 325 + 3rdparty/zlib/zutil.h | 271 + chdman_generated_files.txt | 9 + command | 1 + make_files/3rdparty/7z.make | 598 + make_files/3rdparty/expat.make | 328 + make_files/3rdparty/flac.make | 454 + make_files/chdman.make | 320 + make_files/ocore_sdl.make | 403 + make_files/utf8proc.make | 308 + make_files/utils.make | 734 + make_files/zlib.make | 408 + src/chdman.cpp | 3106 + src/icludes/emu/addrmap.cpp | 1399 + src/icludes/emu/addrmap.h | 536 + src/icludes/emu/attotime.cpp | 172 + src/icludes/emu/attotime.h | 377 + src/icludes/emu/bookkeeping.cpp | 211 + src/icludes/emu/bookkeeping.h | 72 + src/icludes/emu/config.cpp | 299 + src/icludes/emu/config.h | 72 + src/icludes/emu/crsshair.cpp | 555 + src/icludes/emu/crsshair.h | 134 + src/icludes/emu/debug/debugbuf.cpp | 1512 + src/icludes/emu/debug/debugbuf.h | 93 + src/icludes/emu/debug/debugcmd.cpp | 4298 + src/icludes/emu/debug/debugcmd.h | 192 + src/icludes/emu/debug/debugcon.cpp | 668 + src/icludes/emu/debug/debugcon.h | 167 + src/icludes/emu/debug/debugcpu.cpp | 1927 + src/icludes/emu/debug/debugcpu.h | 433 + src/icludes/emu/debug/debughlp.cpp | 1929 + src/icludes/emu/debug/debughlp.h | 26 + src/icludes/emu/debug/debugvw.cpp | 535 + src/icludes/emu/debug/debugvw.h | 292 + src/icludes/emu/debug/dvbpoints.cpp | 313 + src/icludes/emu/debug/dvbpoints.h | 50 + src/icludes/emu/debug/dvdisasm.cpp | 579 + src/icludes/emu/debug/dvdisasm.h | 139 + src/icludes/emu/debug/dvmemory.cpp | 1137 + src/icludes/emu/debug/dvmemory.h | 171 + src/icludes/emu/debug/dvrpoints.cpp | 298 + src/icludes/emu/debug/dvrpoints.h | 53 + src/icludes/emu/debug/dvstate.cpp | 337 + src/icludes/emu/debug/dvstate.h | 123 + src/icludes/emu/debug/dvtext.cpp | 175 + src/icludes/emu/debug/dvtext.h | 70 + src/icludes/emu/debug/dvwpoints.cpp | 351 + src/icludes/emu/debug/dvwpoints.h | 49 + src/icludes/emu/debug/express.cpp | 2250 + src/icludes/emu/debug/express.h | 376 + src/icludes/emu/debug/points.cpp | 452 + src/icludes/emu/debug/points.h | 149 + src/icludes/emu/debug/textbuf.cpp | 356 + src/icludes/emu/debug/textbuf.h | 97 + src/icludes/emu/debugger.cpp | 112 + src/icludes/emu/debugger.h | 56 + src/icludes/emu/devcb.cpp | 360 + src/icludes/emu/devcb.h | 2731 + src/icludes/emu/devcpu.cpp | 51 + src/icludes/emu/devcpu.h | 48 + src/icludes/emu/devdelegate.cpp | 34 + src/icludes/emu/devdelegate.h | 291 + src/icludes/emu/devfind.cpp | 507 + src/icludes/emu/devfind.h | 1427 + src/icludes/emu/device.cpp | 1220 + src/icludes/emu/device.h | 1572 + src/icludes/emu/device.ipp | 116 + src/icludes/emu/didisasm.cpp | 74 + src/icludes/emu/didisasm.h | 60 + src/icludes/emu/diexec.cpp | 799 + src/icludes/emu/diexec.h | 345 + src/icludes/emu/digfx.cpp | 367 + src/icludes/emu/digfx.h | 205 + src/icludes/emu/diimage.cpp | 1345 + src/icludes/emu/diimage.h | 381 + src/icludes/emu/dimemory.cpp | 152 + src/icludes/emu/dimemory.h | 132 + src/icludes/emu/dinetwork.cpp | 138 + src/icludes/emu/dinetwork.h | 55 + src/icludes/emu/dinvram.cpp | 35 + src/icludes/emu/dinvram.h | 54 + src/icludes/emu/dipalette.cpp | 513 + src/icludes/emu/dipalette.h | 146 + src/icludes/emu/dipty.cpp | 74 + src/icludes/emu/dipty.h | 46 + src/icludes/emu/dirom.h | 56 + src/icludes/emu/dirom.ipp | 143 + src/icludes/emu/dirtc.cpp | 240 + src/icludes/emu/dirtc.h | 81 + src/icludes/emu/diserial.cpp | 499 + src/icludes/emu/diserial.h | 267 + src/icludes/emu/dislot.cpp | 139 + src/icludes/emu/dislot.h | 232 + src/icludes/emu/disound.cpp | 523 + src/icludes/emu/disound.h | 148 + src/icludes/emu/distate.cpp | 576 + src/icludes/emu/distate.h | 398 + src/icludes/emu/divideo.cpp | 147 + src/icludes/emu/divideo.h | 74 + src/icludes/emu/divtlb.cpp | 362 + src/icludes/emu/divtlb.h | 91 + src/icludes/emu/drawgfx.cpp | 2549 + src/icludes/emu/drawgfx.h | 553 + src/icludes/emu/drawgfxt.ipp | 1908 + src/icludes/emu/drivenum.cpp | 350 + src/icludes/emu/drivenum.h | 142 + src/icludes/emu/driver.cpp | 381 + src/icludes/emu/driver.h | 193 + src/icludes/emu/drivers/empty.cpp | 73 + src/icludes/emu/drivers/testcpu.cpp | 217 + src/icludes/emu/emu.h | 107 + src/icludes/emu/emucore.cpp | 39 + src/icludes/emu/emucore.h | 424 + src/icludes/emu/emufwd.h | 255 + src/icludes/emu/emumem.cpp | 1059 + src/icludes/emu/emumem.h | 2454 + src/icludes/emu/emumem_aspace.cpp | 1309 + src/icludes/emu/emumem_hea.h | 42 + src/icludes/emu/emumem_hedp.cpp | 390 + src/icludes/emu/emumem_hedp.h | 169 + src/icludes/emu/emumem_hedr.h | 105 + src/icludes/emu/emumem_hedr.ipp | 704 + src/icludes/emu/emumem_hedr0.cpp | 124 + src/icludes/emu/emumem_hedr1.cpp | 122 + src/icludes/emu/emumem_hedr2.cpp | 122 + src/icludes/emu/emumem_hedr3.cpp | 123 + src/icludes/emu/emumem_hedw.h | 105 + src/icludes/emu/emumem_hedw.ipp | 703 + src/icludes/emu/emumem_hedw0.cpp | 126 + src/icludes/emu/emumem_hedw1.cpp | 122 + src/icludes/emu/emumem_hedw2.cpp | 122 + src/icludes/emu/emumem_hedw3.cpp | 123 + src/icludes/emu/emumem_hem.cpp | 179 + src/icludes/emu/emumem_hem.h | 89 + src/icludes/emu/emumem_hep.cpp | 79 + src/icludes/emu/emumem_hep.h | 48 + src/icludes/emu/emumem_het.cpp | 101 + src/icludes/emu/emumem_het.h | 56 + src/icludes/emu/emumem_heu.cpp | 341 + src/icludes/emu/emumem_heu.h | 95 + src/icludes/emu/emumem_heun.cpp | 157 + src/icludes/emu/emumem_heun.h | 74 + src/icludes/emu/emumem_mud.cpp | 123 + src/icludes/emu/emumem_mud.h | 41 + src/icludes/emu/emumem_mview.cpp | 1041 + src/icludes/emu/emuopts.cpp | 1299 + src/icludes/emu/emuopts.h | 545 + src/icludes/emu/emupal.cpp | 797 + src/icludes/emu/emupal.h | 421 + src/icludes/emu/fileio.cpp | 826 + src/icludes/emu/fileio.h | 256 + src/icludes/emu/gamedrv.h | 546 + src/icludes/emu/hashfile.cpp | 102 + src/icludes/emu/hashfile.h | 20 + src/icludes/emu/http.cpp | 577 + src/icludes/emu/http.h | 193 + src/icludes/emu/image.cpp | 343 + src/icludes/emu/image.h | 45 + src/icludes/emu/inpttype.ipp | 1073 + src/icludes/emu/input.cpp | 1390 + src/icludes/emu/input.h | 1007 + src/icludes/emu/inputdev.cpp | 1018 + src/icludes/emu/inputdev.h | 405 + src/icludes/emu/ioport.cpp | 3871 + src/icludes/emu/ioport.h | 1818 + src/icludes/emu/layout/README.md | 6 + src/icludes/emu/layout/dualhovu.lay | 51 + src/icludes/emu/layout/dualhsxs.lay | 51 + src/icludes/emu/layout/dualhuov.lay | 51 + src/icludes/emu/layout/ex800.lay | 10 + src/icludes/emu/layout/exorterm155.lay | 77 + src/icludes/emu/layout/generic.h | 35 + src/icludes/emu/layout/hp9122c.lay | 33 + src/icludes/emu/layout/ie15.lay | 129 + src/icludes/emu/layout/lx800.lay | 92 + src/icludes/emu/layout/noscreens.lay | 17 + src/icludes/emu/layout/quadhsxs.lay | 65 + src/icludes/emu/layout/smartboard.lay | 453 + src/icludes/emu/layout/triphsxs.lay | 29 + src/icludes/emu/logmacro.h | 26 + src/icludes/emu/machine.cpp | 1361 + src/icludes/emu/machine.h | 417 + src/icludes/emu/main.cpp | 25 + src/icludes/emu/main.h | 101 + src/icludes/emu/mconfig.cpp | 409 + src/icludes/emu/mconfig.h | 252 + src/icludes/emu/memarray.cpp | 193 + src/icludes/emu/memarray.h | 121 + src/icludes/emu/natkeyboard.cpp | 1121 + src/icludes/emu/natkeyboard.h | 138 + src/icludes/emu/network.cpp | 94 + src/icludes/emu/network.h | 33 + src/icludes/emu/output.cpp | 270 + src/icludes/emu/output.h | 219 + src/icludes/emu/parameters.cpp | 27 + src/icludes/emu/parameters.h | 48 + src/icludes/emu/profiler.cpp | 232 + src/icludes/emu/profiler.h | 213 + src/icludes/emu/recording.cpp | 301 + src/icludes/emu/recording.h | 86 + src/icludes/emu/render.cpp | 3455 + src/icludes/emu/render.h | 711 + src/icludes/emu/rendersw.hxx | 1874 + src/icludes/emu/rendertypes.h | 153 + src/icludes/emu/rendfont.cpp | 1688 + src/icludes/emu/rendfont.h | 115 + src/icludes/emu/rendlay.cpp | 5422 + src/icludes/emu/rendlay.h | 621 + src/icludes/emu/rendutil.cpp | 975 + src/icludes/emu/rendutil.h | 147 + src/icludes/emu/romentry.cpp | 76 + src/icludes/emu/romentry.h | 234 + src/icludes/emu/romload.cpp | 1503 + src/icludes/emu/romload.h | 504 + src/icludes/emu/save.cpp | 1038 + src/icludes/emu/save.h | 417 + src/icludes/emu/schedule.cpp | 987 + src/icludes/emu/schedule.h | 193 + src/icludes/emu/screen.cpp | 1954 + src/icludes/emu/screen.h | 555 + src/icludes/emu/softlist.cpp | 981 + src/icludes/emu/softlist.h | 174 + src/icludes/emu/softlist_dev.cpp | 611 + src/icludes/emu/softlist_dev.h | 167 + src/icludes/emu/sound.cpp | 1602 + src/icludes/emu/sound.h | 851 + src/icludes/emu/speaker.cpp | 190 + src/icludes/emu/speaker.h | 96 + src/icludes/emu/tilemap.cpp | 1795 + src/icludes/emu/tilemap.h | 814 + src/icludes/emu/ui/cmddata.h | 279 + src/icludes/emu/ui/uimain.h | 61 + src/icludes/emu/uiinput.cpp | 464 + src/icludes/emu/uiinput.h | 129 + src/icludes/emu/validity.cpp | 2846 + src/icludes/emu/validity.h | 116 + src/icludes/emu/video.cpp | 1229 + src/icludes/emu/video.h | 174 + src/icludes/emu/video/generic.cpp | 203 + src/icludes/emu/video/generic.h | 45 + src/icludes/emu/video/resnet.cpp | 705 + src/icludes/emu/video/resnet.h | 206 + src/icludes/emu/video/rgbgen.cpp | 117 + src/icludes/emu/video/rgbgen.h | 445 + src/icludes/emu/video/rgbsse.cpp | 188 + src/icludes/emu/video/rgbsse.h | 502 + src/icludes/emu/video/rgbutil.h | 32 + src/icludes/emu/video/rgbvmx.cpp | 200 + src/icludes/emu/video/rgbvmx.h | 728 + src/icludes/emu/xtal.cpp | 926 + src/icludes/emu/xtal.h | 91 + src/icludes/lib/formats/2d_dsk.cpp | 41 + src/icludes/lib/formats/2d_dsk.h | 32 + src/icludes/lib/formats/a26_cas.cpp | 166 + src/icludes/lib/formats/a26_cas.h | 17 + src/icludes/lib/formats/a5105_dsk.cpp | 45 + src/icludes/lib/formats/a5105_dsk.h | 32 + src/icludes/lib/formats/abc800_dsk.cpp | 165 + src/icludes/lib/formats/abc800_dsk.h | 35 + src/icludes/lib/formats/abcfd2_dsk.cpp | 60 + src/icludes/lib/formats/abcfd2_dsk.h | 32 + src/icludes/lib/formats/ace_tap.cpp | 191 + src/icludes/lib/formats/ace_tap.h | 31 + src/icludes/lib/formats/acorn_dsk.cpp | 765 + src/icludes/lib/formats/acorn_dsk.h | 138 + src/icludes/lib/formats/adam_cas.cpp | 209 + src/icludes/lib/formats/adam_cas.h | 19 + src/icludes/lib/formats/adam_dsk.cpp | 68 + src/icludes/lib/formats/adam_dsk.h | 32 + src/icludes/lib/formats/afs_dsk.cpp | 61 + src/icludes/lib/formats/afs_dsk.h | 36 + src/icludes/lib/formats/agat840k_hle_dsk.cpp | 60 + src/icludes/lib/formats/agat840k_hle_dsk.h | 18 + src/icludes/lib/formats/aim_dsk.cpp | 136 + src/icludes/lib/formats/aim_dsk.h | 35 + src/icludes/lib/formats/all.cpp | 1402 + src/icludes/lib/formats/all.h | 27 + src/icludes/lib/formats/ami_dsk.cpp | 162 + src/icludes/lib/formats/ami_dsk.h | 38 + src/icludes/lib/formats/ap2_dsk.cpp | 2083 + src/icludes/lib/formats/ap2_dsk.h | 165 + src/icludes/lib/formats/ap_dsk35.cpp | 1651 + src/icludes/lib/formats/ap_dsk35.h | 82 + src/icludes/lib/formats/apd_dsk.cpp | 213 + src/icludes/lib/formats/apd_dsk.h | 33 + src/icludes/lib/formats/apf_apt.cpp | 250 + src/icludes/lib/formats/apf_apt.h | 12 + src/icludes/lib/formats/apollo_dsk.cpp | 59 + src/icludes/lib/formats/apollo_dsk.h | 33 + src/icludes/lib/formats/applix_dsk.cpp | 41 + src/icludes/lib/formats/applix_dsk.h | 32 + src/icludes/lib/formats/apridisk.cpp | 161 + src/icludes/lib/formats/apridisk.h | 56 + src/icludes/lib/formats/aquarius_caq.cpp | 101 + src/icludes/lib/formats/aquarius_caq.h | 19 + src/icludes/lib/formats/asst128_dsk.cpp | 41 + src/icludes/lib/formats/asst128_dsk.h | 31 + src/icludes/lib/formats/atari_dsk.cpp | 35 + src/icludes/lib/formats/atari_dsk.h | 19 + src/icludes/lib/formats/atom_dsk.cpp | 33 + src/icludes/lib/formats/atom_dsk.h | 26 + src/icludes/lib/formats/atom_tap.cpp | 134 + src/icludes/lib/formats/atom_tap.h | 19 + src/icludes/lib/formats/basicdsk.cpp | 354 + src/icludes/lib/formats/basicdsk.h | 38 + src/icludes/lib/formats/bw12_dsk.cpp | 58 + src/icludes/lib/formats/bw12_dsk.h | 32 + src/icludes/lib/formats/bw2_dsk.cpp | 44 + src/icludes/lib/formats/bw2_dsk.h | 32 + src/icludes/lib/formats/c3040_dsk.cpp | 99 + src/icludes/lib/formats/c3040_dsk.h | 39 + src/icludes/lib/formats/c4040_dsk.cpp | 89 + src/icludes/lib/formats/c4040_dsk.h | 37 + src/icludes/lib/formats/c8280_dsk.cpp | 69 + src/icludes/lib/formats/c8280_dsk.h | 32 + src/icludes/lib/formats/camplynx_cas.cpp | 260 + src/icludes/lib/formats/camplynx_cas.h | 20 + src/icludes/lib/formats/camplynx_dsk.cpp | 55 + src/icludes/lib/formats/camplynx_dsk.h | 32 + src/icludes/lib/formats/cassimg.cpp | 936 + src/icludes/lib/formats/cassimg.h | 236 + src/icludes/lib/formats/cbm_crt.cpp | 252 + src/icludes/lib/formats/cbm_crt.h | 134 + src/icludes/lib/formats/cbm_tap.cpp | 374 + src/icludes/lib/formats/cbm_tap.h | 19 + src/icludes/lib/formats/ccvf_dsk.cpp | 159 + src/icludes/lib/formats/ccvf_dsk.h | 56 + src/icludes/lib/formats/cd90_640_dsk.cpp | 56 + src/icludes/lib/formats/cd90_640_dsk.h | 32 + src/icludes/lib/formats/cgen_cas.cpp | 162 + src/icludes/lib/formats/cgen_cas.h | 19 + src/icludes/lib/formats/cgenie_dsk.cpp | 79 + src/icludes/lib/formats/cgenie_dsk.h | 36 + src/icludes/lib/formats/coco_cas.cpp | 296 + src/icludes/lib/formats/coco_cas.h | 20 + src/icludes/lib/formats/comx35_dsk.cpp | 77 + src/icludes/lib/formats/comx35_dsk.h | 32 + src/icludes/lib/formats/concept_dsk.cpp | 157 + src/icludes/lib/formats/concept_dsk.h | 37 + src/icludes/lib/formats/coupedsk.cpp | 131 + src/icludes/lib/formats/coupedsk.h | 36 + src/icludes/lib/formats/cpis_dsk.cpp | 57 + src/icludes/lib/formats/cpis_dsk.h | 31 + src/icludes/lib/formats/cqm_dsk.cpp | 379 + src/icludes/lib/formats/cqm_dsk.h | 34 + src/icludes/lib/formats/csw_cas.cpp | 231 + src/icludes/lib/formats/csw_cas.h | 20 + src/icludes/lib/formats/d64_dsk.cpp | 328 + src/icludes/lib/formats/d64_dsk.h | 87 + src/icludes/lib/formats/d71_dsk.cpp | 39 + src/icludes/lib/formats/d71_dsk.h | 32 + src/icludes/lib/formats/d80_dsk.cpp | 135 + src/icludes/lib/formats/d80_dsk.h | 46 + src/icludes/lib/formats/d81_dsk.cpp | 162 + src/icludes/lib/formats/d81_dsk.h | 34 + src/icludes/lib/formats/d82_dsk.cpp | 39 + src/icludes/lib/formats/d82_dsk.h | 32 + src/icludes/lib/formats/d88_dsk.cpp | 556 + src/icludes/lib/formats/d88_dsk.h | 35 + src/icludes/lib/formats/dcp_dsk.cpp | 308 + src/icludes/lib/formats/dcp_dsk.h | 34 + src/icludes/lib/formats/dfi_dsk.cpp | 242 + src/icludes/lib/formats/dfi_dsk.h | 27 + src/icludes/lib/formats/dim_dsk.cpp | 139 + src/icludes/lib/formats/dim_dsk.h | 36 + src/icludes/lib/formats/dip_dsk.cpp | 101 + src/icludes/lib/formats/dip_dsk.h | 34 + src/icludes/lib/formats/dmk_dsk.cpp | 231 + src/icludes/lib/formats/dmk_dsk.h | 36 + src/icludes/lib/formats/dmv_dsk.cpp | 53 + src/icludes/lib/formats/dmv_dsk.h | 32 + src/icludes/lib/formats/ds9_dsk.cpp | 123 + src/icludes/lib/formats/ds9_dsk.h | 36 + src/icludes/lib/formats/dsk_dsk.cpp | 500 + src/icludes/lib/formats/dsk_dsk.h | 33 + src/icludes/lib/formats/dvk_mx_dsk.cpp | 184 + src/icludes/lib/formats/dvk_mx_dsk.h | 38 + src/icludes/lib/formats/ep64_dsk.cpp | 41 + src/icludes/lib/formats/ep64_dsk.h | 32 + src/icludes/lib/formats/esq16_dsk.cpp | 156 + src/icludes/lib/formats/esq16_dsk.h | 41 + src/icludes/lib/formats/esq8_dsk.cpp | 193 + src/icludes/lib/formats/esq8_dsk.h | 43 + src/icludes/lib/formats/excali64_dsk.cpp | 41 + src/icludes/lib/formats/excali64_dsk.h | 32 + src/icludes/lib/formats/fc100_cas.cpp | 154 + src/icludes/lib/formats/fc100_cas.h | 19 + src/icludes/lib/formats/fdd_dsk.cpp | 156 + src/icludes/lib/formats/fdd_dsk.h | 34 + src/icludes/lib/formats/fdi_dsk.cpp | 290 + src/icludes/lib/formats/fl1_dsk.cpp | 57 + src/icludes/lib/formats/fl1_dsk.h | 32 + src/icludes/lib/formats/flex_dsk.cpp | 1276 + src/icludes/lib/formats/flex_dsk.h | 58 + src/icludes/lib/formats/flopimg.cpp | 2333 + src/icludes/lib/formats/flopimg.h | 619 + src/icludes/lib/formats/flopimg_legacy.cpp | 880 + src/icludes/lib/formats/flopimg_legacy.h | 214 + src/icludes/lib/formats/fm7_cas.cpp | 112 + src/icludes/lib/formats/fm7_cas.h | 15 + src/icludes/lib/formats/fmsx_cas.cpp | 147 + src/icludes/lib/formats/fmsx_cas.h | 19 + src/icludes/lib/formats/fmtowns_dsk.cpp | 41 + src/icludes/lib/formats/fmtowns_dsk.h | 30 + src/icludes/lib/formats/fs_oric_jasmin.cpp | 623 + src/icludes/lib/formats/fs_oric_jasmin.h | 124 + src/icludes/lib/formats/fs_prodos.cpp | 467 + src/icludes/lib/formats/fs_prodos.h | 110 + src/icludes/lib/formats/fs_unformatted.cpp | 134 + src/icludes/lib/formats/fs_unformatted.h | 57 + src/icludes/lib/formats/fs_vtech.cpp | 366 + src/icludes/lib/formats/fs_vtech.h | 96 + src/icludes/lib/formats/fsblk_vec.cpp | 39 + src/icludes/lib/formats/fsblk_vec.h | 33 + src/icludes/lib/formats/fsd_dsk.cpp | 193 + src/icludes/lib/formats/fsd_dsk.h | 42 + src/icludes/lib/formats/fsmgr.cpp | 453 + src/icludes/lib/formats/fsmgr.h | 445 + src/icludes/lib/formats/g64_dsk.cpp | 207 + src/icludes/lib/formats/g64_dsk.h | 55 + src/icludes/lib/formats/gtp_cas.cpp | 200 + src/icludes/lib/formats/gtp_cas.h | 18 + src/icludes/lib/formats/guab_dsk.cpp | 42 + src/icludes/lib/formats/guab_dsk.h | 32 + src/icludes/lib/formats/h8_cas.cpp | 147 + src/icludes/lib/formats/h8_cas.h | 19 + src/icludes/lib/formats/hect_dsk.cpp | 100 + src/icludes/lib/formats/hect_dsk.h | 23 + src/icludes/lib/formats/hect_tap.cpp | 308 + src/icludes/lib/formats/hect_tap.h | 19 + src/icludes/lib/formats/hector_minidisc.cpp | 41 + src/icludes/lib/formats/hector_minidisc.h | 32 + src/icludes/lib/formats/hp_ipc_dsk.cpp | 40 + src/icludes/lib/formats/hp_ipc_dsk.h | 32 + src/icludes/lib/formats/hpi_dsk.cpp | 500 + src/icludes/lib/formats/hpi_dsk.h | 58 + src/icludes/lib/formats/hti_tape.cpp | 516 + src/icludes/lib/formats/hti_tape.h | 140 + src/icludes/lib/formats/hxchfe_dsk.cpp | 710 + src/icludes/lib/formats/hxchfe_dsk.h | 90 + src/icludes/lib/formats/hxcmfm_dsk.cpp | 163 + src/icludes/lib/formats/hxcmfm_dsk.h | 34 + src/icludes/lib/formats/ibmxdf_dsk.cpp | 268 + src/icludes/lib/formats/ibmxdf_dsk.h | 45 + src/icludes/lib/formats/imageutl.cpp | 193 + src/icludes/lib/formats/imageutl.h | 181 + src/icludes/lib/formats/imd_dsk.cpp | 716 + src/icludes/lib/formats/imd_dsk.h | 48 + src/icludes/lib/formats/img_dsk.cpp | 386 + src/icludes/lib/formats/img_dsk.h | 55 + src/icludes/lib/formats/ipf_dsk.cpp | 710 + src/icludes/lib/formats/ipf_dsk.h | 93 + src/icludes/lib/formats/iq151_dsk.cpp | 45 + src/icludes/lib/formats/iq151_dsk.h | 32 + src/icludes/lib/formats/itt3030_dsk.cpp | 57 + src/icludes/lib/formats/itt3030_dsk.h | 33 + src/icludes/lib/formats/jfd_dsk.cpp | 378 + src/icludes/lib/formats/jfd_dsk.h | 33 + src/icludes/lib/formats/juku_dsk.cpp | 45 + src/icludes/lib/formats/juku_dsk.h | 32 + src/icludes/lib/formats/jvc_dsk.cpp | 283 + src/icludes/lib/formats/jvc_dsk.h | 49 + src/icludes/lib/formats/kaypro_dsk.cpp | 76 + src/icludes/lib/formats/kaypro_dsk.h | 43 + src/icludes/lib/formats/kc85_dsk.cpp | 61 + src/icludes/lib/formats/kc85_dsk.h | 31 + src/icludes/lib/formats/kc_cas.cpp | 391 + src/icludes/lib/formats/kc_cas.h | 17 + src/icludes/lib/formats/kim1_cas.cpp | 197 + src/icludes/lib/formats/kim1_cas.h | 19 + src/icludes/lib/formats/lviv_lvt.cpp | 147 + src/icludes/lib/formats/lviv_lvt.h | 19 + src/icludes/lib/formats/m20_dsk.cpp | 128 + src/icludes/lib/formats/m20_dsk.h | 33 + src/icludes/lib/formats/m5_dsk.cpp | 45 + src/icludes/lib/formats/m5_dsk.h | 31 + src/icludes/lib/formats/mbee_cas.cpp | 259 + src/icludes/lib/formats/mbee_cas.h | 19 + src/icludes/lib/formats/mdos_dsk.cpp | 290 + src/icludes/lib/formats/mdos_dsk.h | 45 + src/icludes/lib/formats/mfi_dsk.cpp | 244 + src/icludes/lib/formats/mfi_dsk.h | 54 + src/icludes/lib/formats/mfm_hd.cpp | 750 + src/icludes/lib/formats/mfm_hd.h | 213 + src/icludes/lib/formats/mm_dsk.cpp | 88 + src/icludes/lib/formats/mm_dsk.h | 44 + src/icludes/lib/formats/ms0515_dsk.cpp | 53 + src/icludes/lib/formats/ms0515_dsk.h | 30 + src/icludes/lib/formats/msx_dsk.cpp | 61 + src/icludes/lib/formats/msx_dsk.h | 34 + src/icludes/lib/formats/mtx_dsk.cpp | 53 + src/icludes/lib/formats/mtx_dsk.h | 32 + src/icludes/lib/formats/mz_cas.cpp | 343 + src/icludes/lib/formats/mz_cas.h | 19 + src/icludes/lib/formats/nanos_dsk.cpp | 46 + src/icludes/lib/formats/nanos_dsk.h | 31 + src/icludes/lib/formats/nascom_dsk.cpp | 53 + src/icludes/lib/formats/nascom_dsk.h | 32 + src/icludes/lib/formats/naslite_dsk.cpp | 53 + src/icludes/lib/formats/naslite_dsk.h | 34 + src/icludes/lib/formats/nes_dsk.cpp | 73 + src/icludes/lib/formats/nes_dsk.h | 19 + src/icludes/lib/formats/nfd_dsk.cpp | 291 + src/icludes/lib/formats/nfd_dsk.h | 34 + src/icludes/lib/formats/opd_dsk.cpp | 62 + src/icludes/lib/formats/opd_dsk.h | 37 + src/icludes/lib/formats/orao_cas.cpp | 130 + src/icludes/lib/formats/orao_cas.h | 18 + src/icludes/lib/formats/oric_dsk.cpp | 218 + src/icludes/lib/formats/oric_dsk.h | 50 + src/icludes/lib/formats/oric_tap.cpp | 523 + src/icludes/lib/formats/oric_tap.h | 19 + src/icludes/lib/formats/os9_dsk.cpp | 586 + src/icludes/lib/formats/os9_dsk.h | 35 + src/icludes/lib/formats/p2000t_cas.cpp | 322 + src/icludes/lib/formats/p2000t_cas.h | 19 + src/icludes/lib/formats/p6001_cas.cpp | 94 + src/icludes/lib/formats/p6001_cas.h | 15 + src/icludes/lib/formats/pasti_dsk.cpp | 613 + src/icludes/lib/formats/pasti_dsk.h | 66 + src/icludes/lib/formats/pc98_dsk.cpp | 90 + src/icludes/lib/formats/pc98_dsk.h | 36 + src/icludes/lib/formats/pc98fdi_dsk.cpp | 107 + src/icludes/lib/formats/pc98fdi_dsk.h | 34 + src/icludes/lib/formats/pc_dsk.cpp | 122 + src/icludes/lib/formats/pc_dsk.h | 35 + src/icludes/lib/formats/phc25_cas.cpp | 179 + src/icludes/lib/formats/phc25_cas.h | 19 + src/icludes/lib/formats/pk8020_dsk.cpp | 44 + src/icludes/lib/formats/pk8020_dsk.h | 32 + src/icludes/lib/formats/pmd_cas.cpp | 216 + src/icludes/lib/formats/pmd_cas.h | 19 + src/icludes/lib/formats/poly_dsk.cpp | 127 + src/icludes/lib/formats/poly_dsk.h | 30 + src/icludes/lib/formats/ppg_dsk.cpp | 65 + src/icludes/lib/formats/ppg_dsk.h | 34 + src/icludes/lib/formats/primoptp.cpp | 245 + src/icludes/lib/formats/primoptp.h | 19 + src/icludes/lib/formats/pyldin_dsk.cpp | 46 + src/icludes/lib/formats/pyldin_dsk.h | 32 + src/icludes/lib/formats/ql_dsk.cpp | 53 + src/icludes/lib/formats/ql_dsk.h | 32 + src/icludes/lib/formats/rc759_dsk.cpp | 41 + src/icludes/lib/formats/rc759_dsk.h | 33 + src/icludes/lib/formats/rk_cas.cpp | 312 + src/icludes/lib/formats/rk_cas.h | 26 + src/icludes/lib/formats/rpk.cpp | 474 + src/icludes/lib/formats/rpk.h | 143 + src/icludes/lib/formats/rx50_dsk.cpp | 237 + src/icludes/lib/formats/rx50_dsk.h | 43 + src/icludes/lib/formats/sc3000_bit.cpp | 103 + src/icludes/lib/formats/sc3000_bit.h | 19 + src/icludes/lib/formats/sdd_dsk.cpp | 64 + src/icludes/lib/formats/sdd_dsk.h | 32 + src/icludes/lib/formats/sdf_dsk.cpp | 199 + src/icludes/lib/formats/sdf_dsk.h | 46 + src/icludes/lib/formats/sf7000_dsk.cpp | 45 + src/icludes/lib/formats/sf7000_dsk.h | 32 + src/icludes/lib/formats/smx_dsk.cpp | 46 + src/icludes/lib/formats/smx_dsk.h | 32 + src/icludes/lib/formats/sol_cas.cpp | 390 + src/icludes/lib/formats/sol_cas.h | 19 + src/icludes/lib/formats/sorc_cas.cpp | 157 + src/icludes/lib/formats/sorc_cas.h | 19 + src/icludes/lib/formats/sorc_dsk.cpp | 157 + src/icludes/lib/formats/sorc_dsk.h | 21 + src/icludes/lib/formats/sord_cas.cpp | 134 + src/icludes/lib/formats/sord_cas.h | 19 + src/icludes/lib/formats/spc1000_cas.cpp | 192 + src/icludes/lib/formats/spc1000_cas.h | 19 + src/icludes/lib/formats/st_dsk.cpp | 334 + src/icludes/lib/formats/st_dsk.h | 58 + src/icludes/lib/formats/svi_cas.cpp | 213 + src/icludes/lib/formats/svi_cas.h | 19 + src/icludes/lib/formats/svi_dsk.cpp | 147 + src/icludes/lib/formats/svi_dsk.h | 34 + src/icludes/lib/formats/swd_dsk.cpp | 50 + src/icludes/lib/formats/swd_dsk.h | 32 + src/icludes/lib/formats/tandy2k_dsk.cpp | 40 + src/icludes/lib/formats/tandy2k_dsk.h | 32 + src/icludes/lib/formats/td0_dsk.cpp | 1036 + src/icludes/lib/formats/td0_dsk.h | 28 + src/icludes/lib/formats/thom_cas.cpp | 780 + src/icludes/lib/formats/thom_cas.h | 25 + src/icludes/lib/formats/thom_dsk.cpp | 86 + src/icludes/lib/formats/thom_dsk.h | 40 + src/icludes/lib/formats/ti99_dsk.cpp | 1529 + src/icludes/lib/formats/ti99_dsk.h | 112 + src/icludes/lib/formats/tiki100_dsk.cpp | 117 + src/icludes/lib/formats/tiki100_dsk.h | 32 + src/icludes/lib/formats/trd_dsk.cpp | 113 + src/icludes/lib/formats/trd_dsk.h | 32 + src/icludes/lib/formats/trs80_dsk.cpp | 459 + src/icludes/lib/formats/trs80_dsk.h | 51 + src/icludes/lib/formats/trs_cas.cpp | 270 + src/icludes/lib/formats/trs_cas.h | 20 + src/icludes/lib/formats/tvc_cas.cpp | 227 + src/icludes/lib/formats/tvc_cas.h | 19 + src/icludes/lib/formats/tvc_dsk.cpp | 46 + src/icludes/lib/formats/tvc_dsk.h | 32 + src/icludes/lib/formats/tzx_cas.cpp | 933 + src/icludes/lib/formats/tzx_cas.h | 21 + src/icludes/lib/formats/uef_cas.cpp | 370 + src/icludes/lib/formats/uef_cas.h | 19 + src/icludes/lib/formats/uniflex_dsk.cpp | 157 + src/icludes/lib/formats/uniflex_dsk.h | 32 + src/icludes/lib/formats/upd765_dsk.cpp | 444 + src/icludes/lib/formats/upd765_dsk.h | 63 + src/icludes/lib/formats/vdk_dsk.cpp | 144 + src/icludes/lib/formats/vdk_dsk.h | 41 + src/icludes/lib/formats/vector06_dsk.cpp | 48 + src/icludes/lib/formats/vector06_dsk.h | 32 + src/icludes/lib/formats/vg5k_cas.cpp | 237 + src/icludes/lib/formats/vg5k_cas.h | 17 + src/icludes/lib/formats/victor9k_dsk.cpp | 452 + src/icludes/lib/formats/victor9k_dsk.h | 64 + src/icludes/lib/formats/vt_cas.cpp | 224 + src/icludes/lib/formats/vt_cas.h | 20 + src/icludes/lib/formats/vt_dsk.cpp | 411 + src/icludes/lib/formats/vt_dsk.h | 58 + src/icludes/lib/formats/wavfile.cpp | 287 + src/icludes/lib/formats/wavfile.h | 17 + src/icludes/lib/formats/wd177x_dsk.cpp | 535 + src/icludes/lib/formats/wd177x_dsk.h | 65 + src/icludes/lib/formats/x07_cas.cpp | 172 + src/icludes/lib/formats/x07_cas.h | 19 + src/icludes/lib/formats/x1_tap.cpp | 140 + src/icludes/lib/formats/x1_tap.h | 17 + src/icludes/lib/formats/xdf_dsk.cpp | 45 + src/icludes/lib/formats/xdf_dsk.h | 32 + src/icludes/lib/formats/zx81_p.cpp | 299 + src/icludes/lib/formats/zx81_p.h | 21 + src/icludes/lib/netlist/.clang-tidy | 14 + src/icludes/lib/netlist/.gitignore | 24 + src/icludes/lib/netlist/adding_devices.md | 82 + src/icludes/lib/netlist/analog/nld_bjt.cpp | 439 + .../lib/netlist/analog/nld_generic_models.h | 380 + src/icludes/lib/netlist/analog/nld_mosfet.cpp | 611 + src/icludes/lib/netlist/analog/nld_opamps.cpp | 281 + .../lib/netlist/analog/nld_switches.cpp | 121 + .../lib/netlist/analog/nlid_fourterm.cpp | 138 + .../lib/netlist/analog/nlid_fourterm.h | 273 + .../lib/netlist/analog/nlid_twoterm.cpp | 221 + src/icludes/lib/netlist/analog/nlid_twoterm.h | 693 + .../lib/netlist/build/create_devinc.py | 89 + .../lib/netlist/build/create_lib_entries.py | 57 + .../lib/netlist/build/create_modules.py | 83 + src/icludes/lib/netlist/build/doxygen.conf | 2428 + src/icludes/lib/netlist/build/makefile | 427 + src/icludes/lib/netlist/build/nltool.help2man | 5 + src/icludes/lib/netlist/build/nlwav.help2man | 5 + src/icludes/lib/netlist/buildVS/netlist.sln | 51 + .../lib/netlist/buildVS/netlistlib.vcxproj | 286 + .../buildVS/netlistlib.vcxproj.filters | 531 + .../lib/netlist/buildVS/nltool.vcxproj | 162 + .../netlist/buildVS/nltool.vcxproj.filters | 25 + src/icludes/lib/netlist/buildVS/nlwav.vcxproj | 162 + .../lib/netlist/buildVS/nlwav.vcxproj.filters | 22 + src/icludes/lib/netlist/core/analog.h | 170 + src/icludes/lib/netlist/core/base_objects.h | 286 + src/icludes/lib/netlist/core/core_device.h | 136 + src/icludes/lib/netlist/core/device.h | 50 + src/icludes/lib/netlist/core/device_macros.h | 174 + src/icludes/lib/netlist/core/devices.h | 183 + src/icludes/lib/netlist/core/exec.h | 125 + src/icludes/lib/netlist/core/logic.h | 210 + src/icludes/lib/netlist/core/logic_family.h | 93 + src/icludes/lib/netlist/core/netlist_state.h | 270 + src/icludes/lib/netlist/core/nets.h | 315 + src/icludes/lib/netlist/core/object_array.h | 225 + src/icludes/lib/netlist/core/param.h | 322 + src/icludes/lib/netlist/core/queue.h | 115 + src/icludes/lib/netlist/core/setup.h | 358 + src/icludes/lib/netlist/core/state_var.h | 185 + src/icludes/lib/netlist/devices/net_lib.cpp | 33 + src/icludes/lib/netlist/devices/net_lib.h | 34 + src/icludes/lib/netlist/devices/nld_2102a.cpp | 91 + src/icludes/lib/netlist/devices/nld_4006.cpp | 114 + src/icludes/lib/netlist/devices/nld_4013.cpp | 122 + src/icludes/lib/netlist/devices/nld_4017.cpp | 113 + src/icludes/lib/netlist/devices/nld_4020.cpp | 170 + src/icludes/lib/netlist/devices/nld_4029.cpp | 268 + src/icludes/lib/netlist/devices/nld_4042.cpp | 116 + src/icludes/lib/netlist/devices/nld_4053.cpp | 142 + src/icludes/lib/netlist/devices/nld_4066.cpp | 83 + src/icludes/lib/netlist/devices/nld_4076.cpp | 127 + src/icludes/lib/netlist/devices/nld_4316.cpp | 70 + src/icludes/lib/netlist/devices/nld_74107.cpp | 153 + src/icludes/lib/netlist/devices/nld_74113.cpp | 146 + src/icludes/lib/netlist/devices/nld_74123.cpp | 290 + src/icludes/lib/netlist/devices/nld_74125.cpp | 77 + src/icludes/lib/netlist/devices/nld_74153.cpp | 107 + src/icludes/lib/netlist/devices/nld_74161.cpp | 26 + src/icludes/lib/netlist/devices/nld_74163.cpp | 24 + src/icludes/lib/netlist/devices/nld_74164.cpp | 116 + src/icludes/lib/netlist/devices/nld_74165.cpp | 97 + src/icludes/lib/netlist/devices/nld_74166.cpp | 120 + src/icludes/lib/netlist/devices/nld_74174.cpp | 164 + src/icludes/lib/netlist/devices/nld_74175.cpp | 115 + src/icludes/lib/netlist/devices/nld_74192.cpp | 153 + src/icludes/lib/netlist/devices/nld_74193.cpp | 137 + src/icludes/lib/netlist/devices/nld_74194.cpp | 113 + src/icludes/lib/netlist/devices/nld_74365.cpp | 71 + src/icludes/lib/netlist/devices/nld_74377.cpp | 101 + src/icludes/lib/netlist/devices/nld_74393.cpp | 88 + src/icludes/lib/netlist/devices/nld_7448.cpp | 137 + src/icludes/lib/netlist/devices/nld_7450.cpp | 90 + src/icludes/lib/netlist/devices/nld_7473.cpp | 138 + src/icludes/lib/netlist/devices/nld_7474.cpp | 117 + src/icludes/lib/netlist/devices/nld_7475.cpp | 98 + src/icludes/lib/netlist/devices/nld_7483.cpp | 112 + src/icludes/lib/netlist/devices/nld_7485.cpp | 96 + src/icludes/lib/netlist/devices/nld_7490.cpp | 143 + src/icludes/lib/netlist/devices/nld_7492.cpp | 135 + src/icludes/lib/netlist/devices/nld_7493.cpp | 133 + src/icludes/lib/netlist/devices/nld_7497.cpp | 168 + .../lib/netlist/devices/nld_74ls629.cpp | 207 + src/icludes/lib/netlist/devices/nld_8277.cpp | 166 + .../lib/netlist/devices/nld_82s115.cpp | 94 + src/icludes/lib/netlist/devices/nld_82s16.cpp | 124 + src/icludes/lib/netlist/devices/nld_9310.cpp | 24 + src/icludes/lib/netlist/devices/nld_9316.cpp | 100 + .../lib/netlist/devices/nld_9316_base.hxx | 158 + src/icludes/lib/netlist/devices/nld_9321.cpp | 66 + src/icludes/lib/netlist/devices/nld_9322.cpp | 109 + .../lib/netlist/devices/nld_am2847.cpp | 129 + .../lib/netlist/devices/nld_dm9314.cpp | 99 + .../lib/netlist/devices/nld_dm9334.cpp | 178 + .../lib/netlist/devices/nld_legacy.cpp | 97 + src/icludes/lib/netlist/devices/nld_log.cpp | 188 + .../lib/netlist/devices/nld_mm5837.cpp | 116 + src/icludes/lib/netlist/devices/nld_ne555.cpp | 163 + .../lib/netlist/devices/nld_r2r_dac.cpp | 93 + src/icludes/lib/netlist/devices/nld_roms.cpp | 305 + .../lib/netlist/devices/nld_schmitt.cpp | 122 + .../lib/netlist/devices/nld_system.cpp | 140 + .../lib/netlist/devices/nld_tms4800.cpp | 89 + .../lib/netlist/devices/nld_tristate.cpp | 74 + .../lib/netlist/devices/nlid_proxy.cpp | 184 + src/icludes/lib/netlist/devices/nlid_proxy.h | 123 + src/icludes/lib/netlist/devices/nlid_system.h | 582 + .../lib/netlist/devices/nlid_truthtable.cpp | 707 + .../lib/netlist/devices/nlid_truthtable.h | 32 + src/icludes/lib/netlist/documentation/doc.css | 14 + .../lib/netlist/documentation/mainpage.dox.h | 169 + .../lib/netlist/documentation/primer_1.dox.h | 69 + .../lib/netlist/documentation/structure.dox.h | 48 + .../lib/netlist/documentation/test1-50r.svg | 1172 + src/icludes/lib/netlist/examples/2n6027.cpp | 96 + .../lib/netlist/examples/7400_astable.c | 35 + .../lib/netlist/examples/74123_mstable.c | 47 + src/icludes/lib/netlist/examples/74125.cpp | 42 + src/icludes/lib/netlist/examples/7414.cpp | 33 + .../lib/netlist/examples/9602_mstable.c | 53 + src/icludes/lib/netlist/examples/bjt.c | 46 + src/icludes/lib/netlist/examples/bjt_eb.c | 44 + src/icludes/lib/netlist/examples/bjt_eb_pnp.c | 35 + src/icludes/lib/netlist/examples/cccs.cpp | 39 + src/icludes/lib/netlist/examples/cd4066.c | 46 + src/icludes/lib/netlist/examples/cdelay.c | 53 + .../lib/netlist/examples/cmos_inverter.cpp | 49 + .../netlist/examples/cmos_inverter_clk.cpp | 63 + .../lib/netlist/examples/congo_bongo.cpp | 505 + .../lib/netlist/examples/congo_bongo.csv | 21 + src/icludes/lib/netlist/examples/cs.cpp | 27 + src/icludes/lib/netlist/examples/diode.c | 31 + .../lib/netlist/examples/lm3900_test.cpp | 103 + .../lib/netlist/examples/lostfound.cpp | 215 + .../lib/netlist/examples/mm5837_noise.c | 38 + .../lib/netlist/examples/msx_mixer_stage.c | 65 + .../lib/netlist/examples/ne555_astable.c | 53 + src/icludes/lib/netlist/examples/ne566.cpp | 34 + .../lib/netlist/examples/nld_74393_test.c | 26 + src/icludes/lib/netlist/examples/nmos_fet.cpp | 54 + src/icludes/lib/netlist/examples/noise.cpp | 36 + .../lib/netlist/examples/norton_opamp.c | 126 + src/icludes/lib/netlist/examples/opamp.c | 187 + .../examples/opamp_amplification_curve.cpp | 94 + src/icludes/lib/netlist/examples/rc.c | 31 + src/icludes/lib/netlist/examples/rl.c | 32 + .../lib/netlist/examples/sn74ls629_osc.c | 35 + src/icludes/lib/netlist/examples/test.c | 87 + src/icludes/lib/netlist/examples/todo.c | 140 + .../lib/netlist/examples/turkey_shoot.cpp | 211 + .../lib/netlist/examples/turkey_shoot.csv | 256 + src/icludes/lib/netlist/examples/vccs.c | 30 + src/icludes/lib/netlist/examples/vccs1.c | 35 + src/icludes/lib/netlist/examples/vs_cs.c | 52 + src/icludes/lib/netlist/examples/zdiode.cpp | 45 + .../lib/netlist/generated/lib_entries.hxx | 119 + .../lib/netlist/generated/nld_devinc.h | 1562 + .../lib/netlist/generated/nlm_modules_lib.cpp | 14 + .../lib/netlist/generated/static_solvers.cpp | 83489 ++++++++++++++++ .../macro/modules/nlmod_icl8038_dip.cpp | 61 + .../netlist/macro/modules/nlmod_ne556_dip.cpp | 24 + .../lib/netlist/macro/modules/nlmod_rtest.cpp | 12 + .../lib/netlist/macro/nlm_base_lib.cpp | 157 + .../lib/netlist/macro/nlm_cd4xxx_lib.cpp | 945 + .../lib/netlist/macro/nlm_opamp_lib.cpp | 657 + .../lib/netlist/macro/nlm_otheric_lib.cpp | 203 + .../lib/netlist/macro/nlm_roms_lib.cpp | 442 + .../lib/netlist/macro/nlm_ttl74xx_lib.cpp | 3291 + src/icludes/lib/netlist/netlist.cppcheck | 26 + src/icludes/lib/netlist/nl_base.cpp | 1113 + src/icludes/lib/netlist/nl_base.h | 83 + src/icludes/lib/netlist/nl_config.h | 327 + .../lib/netlist/nl_create_mame_solvers.sh | 22 + src/icludes/lib/netlist/nl_dice_compat.h | 240 + src/icludes/lib/netlist/nl_errstr.h | 194 + src/icludes/lib/netlist/nl_factory.cpp | 92 + src/icludes/lib/netlist/nl_factory.h | 223 + src/icludes/lib/netlist/nl_interface.h | 239 + src/icludes/lib/netlist/nl_parser.cpp | 586 + src/icludes/lib/netlist/nl_parser.h | 117 + src/icludes/lib/netlist/nl_setup.cpp | 1766 + src/icludes/lib/netlist/nl_setup.h | 280 + src/icludes/lib/netlist/nltypes.h | 283 + src/icludes/lib/netlist/plib/gmres.h | 525 + src/icludes/lib/netlist/plib/palloc.h | 675 + src/icludes/lib/netlist/plib/parray.h | 182 + src/icludes/lib/netlist/plib/pchrono.h | 279 + src/icludes/lib/netlist/plib/pconfig.h | 192 + src/icludes/lib/netlist/plib/pdynlib.cpp | 92 + src/icludes/lib/netlist/plib/pdynlib.h | 127 + src/icludes/lib/netlist/plib/penum.h | 54 + src/icludes/lib/netlist/plib/pexception.cpp | 175 + src/icludes/lib/netlist/plib/pexception.h | 134 + src/icludes/lib/netlist/plib/pfmtlog.cpp | 150 + src/icludes/lib/netlist/plib/pfmtlog.h | 483 + src/icludes/lib/netlist/plib/pfunction.cpp | 480 + src/icludes/lib/netlist/plib/pfunction.h | 181 + src/icludes/lib/netlist/plib/pgsl.h | 132 + src/icludes/lib/netlist/plib/plists.h | 299 + src/icludes/lib/netlist/plib/pmain.cpp | 47 + src/icludes/lib/netlist/plib/pmain.h | 71 + src/icludes/lib/netlist/plib/pmath.h | 453 + src/icludes/lib/netlist/plib/pmatrix2d.h | 247 + src/icludes/lib/netlist/plib/pmatrix_cr.h | 644 + src/icludes/lib/netlist/plib/pmempool.h | 203 + .../lib/netlist/plib/pmulti_threading.h | 89 + src/icludes/lib/netlist/plib/pomp.h | 85 + src/icludes/lib/netlist/plib/poptions.cpp | 295 + src/icludes/lib/netlist/plib/poptions.h | 274 + src/icludes/lib/netlist/plib/ppmf.h | 499 + .../lib/netlist/plib/ppreprocessor.cpp | 766 + src/icludes/lib/netlist/plib/ppreprocessor.h | 127 + src/icludes/lib/netlist/plib/prandom.h | 234 + src/icludes/lib/netlist/plib/psource.h | 175 + src/icludes/lib/netlist/plib/pstate.h | 227 + src/icludes/lib/netlist/plib/pstonum.h | 145 + src/icludes/lib/netlist/plib/pstream.h | 439 + src/icludes/lib/netlist/plib/pstring.cpp | 121 + src/icludes/lib/netlist/plib/pstring.h | 527 + src/icludes/lib/netlist/plib/pstrutil.h | 357 + src/icludes/lib/netlist/plib/ptests.h | 183 + src/icludes/lib/netlist/plib/ptime.h | 230 + src/icludes/lib/netlist/plib/ptimed_queue.h | 308 + src/icludes/lib/netlist/plib/ptokenizer.cpp | 357 + src/icludes/lib/netlist/plib/ptokenizer.h | 276 + src/icludes/lib/netlist/plib/ptypes.h | 333 + src/icludes/lib/netlist/plib/putil.cpp | 84 + src/icludes/lib/netlist/plib/putil.h | 160 + src/icludes/lib/netlist/plib/vector_ops.h | 159 + src/icludes/lib/netlist/prg/nltool.cpp | 1356 + src/icludes/lib/netlist/prg/nlwav.cpp | 848 + .../lib/netlist/solver/nld_matrix_solver.cpp | 671 + .../lib/netlist/solver/nld_matrix_solver.h | 391 + .../netlist/solver/nld_matrix_solver_ext.h | 293 + .../lib/netlist/solver/nld_ms_direct.h | 205 + .../lib/netlist/solver/nld_ms_direct1.h | 50 + .../lib/netlist/solver/nld_ms_direct2.h | 57 + .../lib/netlist/solver/nld_ms_direct_lu.h | 625 + src/icludes/lib/netlist/solver/nld_ms_gcr.h | 343 + src/icludes/lib/netlist/solver/nld_ms_gmres.h | 134 + src/icludes/lib/netlist/solver/nld_ms_sm.h | 292 + src/icludes/lib/netlist/solver/nld_ms_sor.h | 164 + .../lib/netlist/solver/nld_ms_sor_mat.h | 156 + src/icludes/lib/netlist/solver/nld_ms_w.h | 356 + src/icludes/lib/netlist/solver/nld_solver.cpp | 516 + src/icludes/lib/netlist/solver/nld_solver.h | 95 + .../lib/netlist/tests/test_pfunction.cpp | 60 + .../lib/netlist/tests/test_pstring.cpp | 19 + src/icludes/lib/netlist/tools/nl_convert.cpp | 1116 + src/icludes/lib/netlist/tools/nl_convert.h | 291 + src/icludes/lib/util/abi.h | 117 + src/icludes/lib/util/avhuff.cpp | 1078 + src/icludes/lib/util/avhuff.h | 193 + src/icludes/lib/util/aviio.cpp | 3815 + src/icludes/lib/util/aviio.h | 133 + src/icludes/lib/util/base64.hpp | 167 + src/icludes/lib/util/bitmap.cpp | 462 + src/icludes/lib/util/bitmap.h | 415 + src/icludes/lib/util/bitstream.h | 241 + src/icludes/lib/util/cdrom.cpp | 1693 + src/icludes/lib/util/cdrom.h | 187 + src/icludes/lib/util/chd.cpp | 3304 + src/icludes/lib/util/chd.h | 578 + src/icludes/lib/util/chdcd.cpp | 1848 + src/icludes/lib/util/chdcd.h | 40 + src/icludes/lib/util/chdcodec.cpp | 1836 + src/icludes/lib/util/chdcodec.h | 176 + src/icludes/lib/util/client_http.hpp | 442 + src/icludes/lib/util/client_https.hpp | 152 + src/icludes/lib/util/client_ws.hpp | 517 + src/icludes/lib/util/client_wss.hpp | 82 + src/icludes/lib/util/corealloc.cpp | 34 + src/icludes/lib/util/corealloc.h | 66 + src/icludes/lib/util/corefile.cpp | 1175 + src/icludes/lib/util/corefile.h | 123 + src/icludes/lib/util/corestr.cpp | 322 + src/icludes/lib/util/corestr.h | 70 + src/icludes/lib/util/coretmpl.h | 689 + src/icludes/lib/util/coreutil.cpp | 68 + src/icludes/lib/util/coreutil.h | 82 + src/icludes/lib/util/crypto.hpp | 31 + src/icludes/lib/util/delegate.cpp | 287 + src/icludes/lib/util/delegate.h | 972 + src/icludes/lib/util/disasmintf.cpp | 47 + src/icludes/lib/util/disasmintf.h | 82 + src/icludes/lib/util/dynamicclass.cpp | 229 + src/icludes/lib/util/dynamicclass.h | 488 + src/icludes/lib/util/dynamicclass.ipp | 505 + src/icludes/lib/util/endianness.h | 76 + src/icludes/lib/util/flac.cpp | 643 + src/icludes/lib/util/flac.h | 145 + src/icludes/lib/util/harddisk.cpp | 272 + src/icludes/lib/util/harddisk.h | 56 + src/icludes/lib/util/hash.cpp | 425 + src/icludes/lib/util/hash.h | 122 + src/icludes/lib/util/hashing.cpp | 505 + src/icludes/lib/util/hashing.h | 314 + src/icludes/lib/util/huffman.cpp | 761 + src/icludes/lib/util/huffman.h | 222 + src/icludes/lib/util/ioprocs.cpp | 894 + src/icludes/lib/util/ioprocs.h | 258 + src/icludes/lib/util/ioprocsfill.h | 163 + src/icludes/lib/util/ioprocsfilter.cpp | 792 + src/icludes/lib/util/ioprocsfilter.h | 43 + src/icludes/lib/util/ioprocsvec.h | 211 + src/icludes/lib/util/jedparse.cpp | 462 + src/icludes/lib/util/jedparse.h | 92 + src/icludes/lib/util/language.cpp | 221 + src/icludes/lib/util/language.h | 43 + src/icludes/lib/util/lrucache.h | 408 + src/icludes/lib/util/md5.cpp | 250 + src/icludes/lib/util/md5.h | 43 + src/icludes/lib/util/msdib.cpp | 670 + src/icludes/lib/util/msdib.h | 45 + src/icludes/lib/util/nanosvg.cpp | 10 + src/icludes/lib/util/nanosvg.h | 33 + src/icludes/lib/util/opresolv.cpp | 484 + src/icludes/lib/util/opresolv.h | 276 + src/icludes/lib/util/options.cpp | 1162 + src/icludes/lib/util/options.h | 293 + src/icludes/lib/util/palette.cpp | 573 + src/icludes/lib/util/palette.h | 287 + src/icludes/lib/util/path.cpp | 3 + src/icludes/lib/util/path.h | 83 + src/icludes/lib/util/path_to_regex.cpp | 217 + src/icludes/lib/util/path_to_regex.hpp | 110 + src/icludes/lib/util/plaparse.cpp | 376 + src/icludes/lib/util/plaparse.h | 26 + src/icludes/lib/util/png.cpp | 1385 + src/icludes/lib/util/png.h | 122 + src/icludes/lib/util/server_http.hpp | 67 + src/icludes/lib/util/server_http_impl.hpp | 482 + src/icludes/lib/util/server_https.hpp | 99 + src/icludes/lib/util/server_ws.hpp | 49 + src/icludes/lib/util/server_ws_impl.hpp | 718 + src/icludes/lib/util/server_wss.hpp | 82 + src/icludes/lib/util/strformat.cpp | 661 + src/icludes/lib/util/strformat.h | 2432 + src/icludes/lib/util/timeconv.cpp | 101 + src/icludes/lib/util/timeconv.h | 336 + src/icludes/lib/util/un7z.cpp | 676 + src/icludes/lib/util/unicode.cpp | 588 + src/icludes/lib/util/unicode.h | 104 + src/icludes/lib/util/unzip.cpp | 1662 + src/icludes/lib/util/unzip.h | 104 + src/icludes/lib/util/utilfwd.h | 49 + src/icludes/lib/util/vbiparse.cpp | 409 + src/icludes/lib/util/vbiparse.h | 93 + src/icludes/lib/util/vecstream.cpp | 22 + src/icludes/lib/util/vecstream.h | 408 + src/icludes/lib/util/wavwrite.cpp | 195 + src/icludes/lib/util/wavwrite.h | 39 + src/icludes/lib/util/xmlfile.cpp | 1042 + src/icludes/lib/util/xmlfile.h | 252 + src/icludes/lib/util/zippath.cpp | 780 + src/icludes/lib/util/zippath.h | 71 + src/icludes/osd/asio.h | 35 + src/icludes/osd/eigcc.h | 148 + src/icludes/osd/eigccarm.h | 332 + src/icludes/osd/eigccppc.h | 328 + src/icludes/osd/eigccx86.h | 526 + src/icludes/osd/eivc.h | 94 + src/icludes/osd/eivcarm.h | 75 + src/icludes/osd/eivcx86.h | 468 + src/icludes/osd/eminline.h | 495 + src/icludes/osd/mac/appdelegate.h | 15 + src/icludes/osd/mac/appdelegate.mm | 38 + src/icludes/osd/mac/macmain.cpp | 268 + src/icludes/osd/mac/main.mm | 42 + src/icludes/osd/mac/mamefswindow.h | 15 + src/icludes/osd/mac/mamefswindow.mm | 41 + src/icludes/osd/mac/oglview.h | 19 + src/icludes/osd/mac/oglview.mm | 106 + src/icludes/osd/mac/osdmac.h | 87 + src/icludes/osd/mac/video.cpp | 307 + src/icludes/osd/mac/window.cpp | 916 + src/icludes/osd/mac/window.h | 114 + src/icludes/osd/mac/windowcontroller.h | 16 + src/icludes/osd/mac/windowcontroller.mm | 137 + .../osd/modules/debugger/debug_module.h | 33 + .../osd/modules/debugger/debuggdbstub.cpp | 1429 + .../osd/modules/debugger/debugimgui.cpp | 1569 + src/icludes/osd/modules/debugger/debugosx.mm | 347 + src/icludes/osd/modules/debugger/debugqt.cpp | 367 + src/icludes/osd/modules/debugger/debugwin.cpp | 268 + src/icludes/osd/modules/debugger/none.cpp | 53 + .../modules/debugger/osx/breakpointsview.h | 23 + .../modules/debugger/osx/breakpointsview.mm | 27 + .../osd/modules/debugger/osx/consoleview.h | 23 + .../osd/modules/debugger/osx/consoleview.mm | 27 + .../debugger/osx/debugcommandhistory.h | 35 + .../debugger/osx/debugcommandhistory.mm | 113 + .../osd/modules/debugger/osx/debugconsole.h | 69 + .../osd/modules/debugger/osx/debugconsole.mm | 630 + .../osd/modules/debugger/osx/debugosx.h | 49 + .../osd/modules/debugger/osx/debugview.h | 80 + .../osd/modules/debugger/osx/debugview.mm | 911 + .../modules/debugger/osx/debugwindowhandler.h | 121 + .../debugger/osx/debugwindowhandler.mm | 507 + .../modules/debugger/osx/deviceinfoviewer.h | 28 + .../modules/debugger/osx/deviceinfoviewer.mm | 243 + .../osd/modules/debugger/osx/devicesviewer.h | 31 + .../osd/modules/debugger/osx/devicesviewer.mm | 224 + .../modules/debugger/osx/disassemblyview.h | 46 + .../modules/debugger/osx/disassemblyview.mm | 287 + .../modules/debugger/osx/disassemblyviewer.h | 39 + .../modules/debugger/osx/disassemblyviewer.mm | 314 + .../osd/modules/debugger/osx/errorlogview.h | 23 + .../osd/modules/debugger/osx/errorlogview.mm | 28 + .../osd/modules/debugger/osx/errorlogviewer.h | 28 + .../modules/debugger/osx/errorlogviewer.mm | 70 + .../osd/modules/debugger/osx/memoryview.h | 49 + .../osd/modules/debugger/osx/memoryview.mm | 390 + .../osd/modules/debugger/osx/memoryviewer.h | 35 + .../osd/modules/debugger/osx/memoryviewer.mm | 196 + .../osd/modules/debugger/osx/pointsviewer.h | 32 + .../osd/modules/debugger/osx/pointsviewer.mm | 190 + .../modules/debugger/osx/registerpointsview.h | 23 + .../debugger/osx/registerpointsview.mm | 27 + .../osd/modules/debugger/osx/registersview.h | 30 + .../osd/modules/debugger/osx/registersview.mm | 70 + .../modules/debugger/osx/watchpointsview.h | 23 + .../modules/debugger/osx/watchpointsview.mm | 27 + .../modules/debugger/qt/breakpointswindow.cpp | 151 + .../modules/debugger/qt/breakpointswindow.h | 53 + .../osd/modules/debugger/qt/dasmwindow.cpp | 321 + .../osd/modules/debugger/qt/dasmwindow.h | 77 + .../osd/modules/debugger/qt/debuggerview.cpp | 363 + .../osd/modules/debugger/qt/debuggerview.h | 52 + .../debugger/qt/deviceinformationwindow.cpp | 138 + .../debugger/qt/deviceinformationwindow.h | 53 + .../osd/modules/debugger/qt/deviceswindow.cpp | 182 + .../osd/modules/debugger/qt/deviceswindow.h | 79 + .../osd/modules/debugger/qt/logwindow.cpp | 71 + .../osd/modules/debugger/qt/logwindow.h | 47 + .../osd/modules/debugger/qt/mainwindow.cpp | 521 + .../osd/modules/debugger/qt/mainwindow.h | 178 + .../osd/modules/debugger/qt/memorywindow.cpp | 560 + .../osd/modules/debugger/qt/memorywindow.h | 105 + .../osd/modules/debugger/qt/windowqt.cpp | 279 + .../osd/modules/debugger/qt/windowqt.h | 99 + .../modules/debugger/win/consolewininfo.cpp | 611 + .../osd/modules/debugger/win/consolewininfo.h | 60 + .../modules/debugger/win/debugbaseinfo.cpp | 62 + .../osd/modules/debugger/win/debugbaseinfo.h | 38 + .../modules/debugger/win/debugviewinfo.cpp | 1023 + .../osd/modules/debugger/win/debugviewinfo.h | 89 + .../osd/modules/debugger/win/debugwin.h | 50 + .../osd/modules/debugger/win/debugwininfo.cpp | 622 + .../osd/modules/debugger/win/debugwininfo.h | 152 + .../debugger/win/disasmbasewininfo.cpp | 265 + .../modules/debugger/win/disasmbasewininfo.h | 31 + .../modules/debugger/win/disasmviewinfo.cpp | 45 + .../osd/modules/debugger/win/disasmviewinfo.h | 33 + .../modules/debugger/win/disasmwininfo.cpp | 145 + .../osd/modules/debugger/win/disasmwininfo.h | 37 + .../osd/modules/debugger/win/editwininfo.cpp | 243 + .../osd/modules/debugger/win/editwininfo.h | 58 + .../osd/modules/debugger/win/logviewinfo.cpp | 29 + .../osd/modules/debugger/win/logviewinfo.h | 27 + .../osd/modules/debugger/win/logwininfo.cpp | 65 + .../osd/modules/debugger/win/logwininfo.h | 28 + .../modules/debugger/win/memoryviewinfo.cpp | 169 + .../osd/modules/debugger/win/memoryviewinfo.h | 54 + .../modules/debugger/win/memorywininfo.cpp | 390 + .../osd/modules/debugger/win/memorywininfo.h | 40 + .../modules/debugger/win/pointswininfo.cpp | 133 + .../osd/modules/debugger/win/pointswininfo.h | 31 + .../osd/modules/debugger/win/uimetrics.cpp | 71 + .../osd/modules/debugger/win/uimetrics.h | 44 + .../modules/diagnostics/diagnostics_module.h | 42 + .../modules/diagnostics/diagnostics_win32.cpp | 1100 + src/icludes/osd/modules/diagnostics/none.cpp | 50 + src/icludes/osd/modules/file/posixdir.cpp | 296 + src/icludes/osd/modules/file/posixfile.cpp | 541 + src/icludes/osd/modules/file/posixfile.h | 35 + src/icludes/osd/modules/file/posixptty.cpp | 193 + src/icludes/osd/modules/file/posixsocket.cpp | 264 + src/icludes/osd/modules/file/stdfile.cpp | 294 + src/icludes/osd/modules/file/windir.cpp | 141 + src/icludes/osd/modules/file/winfile.cpp | 602 + src/icludes/osd/modules/file/winfile.h | 37 + src/icludes/osd/modules/file/winptty.cpp | 120 + src/icludes/osd/modules/file/winrtdir.cpp | 141 + src/icludes/osd/modules/file/winrtfile.cpp | 472 + src/icludes/osd/modules/file/winrtfile.h | 34 + src/icludes/osd/modules/file/winrtptty.cpp | 87 + src/icludes/osd/modules/file/winrtsocket.cpp | 274 + src/icludes/osd/modules/file/winsocket.cpp | 297 + src/icludes/osd/modules/font/font_dwrite.cpp | 810 + src/icludes/osd/modules/font/font_module.h | 37 + src/icludes/osd/modules/font/font_none.cpp | 32 + src/icludes/osd/modules/font/font_osx.cpp | 302 + src/icludes/osd/modules/font/font_sdl.cpp | 384 + src/icludes/osd/modules/font/font_windows.cpp | 337 + .../osd/modules/input/input_common.cpp | 279 + src/icludes/osd/modules/input/input_common.h | 587 + .../osd/modules/input/input_dinput.cpp | 594 + src/icludes/osd/modules/input/input_dinput.h | 223 + src/icludes/osd/modules/input/input_mac.cpp | 58 + src/icludes/osd/modules/input/input_module.h | 43 + src/icludes/osd/modules/input/input_none.cpp | 62 + .../osd/modules/input/input_rawinput.cpp | 777 + src/icludes/osd/modules/input/input_sdl.cpp | 1243 + .../osd/modules/input/input_sdlcommon.cpp | 295 + .../osd/modules/input/input_sdlcommon.h | 202 + src/icludes/osd/modules/input/input_win32.cpp | 447 + .../osd/modules/input/input_windows.cpp | 154 + src/icludes/osd/modules/input/input_windows.h | 84 + .../osd/modules/input/input_winhybrid.cpp | 453 + src/icludes/osd/modules/input/input_x11.cpp | 683 + .../osd/modules/input/input_xinput.cpp | 317 + src/icludes/osd/modules/input/input_xinput.h | 86 + src/icludes/osd/modules/lib/osdlib.h | 196 + src/icludes/osd/modules/lib/osdlib_macosx.cpp | 279 + src/icludes/osd/modules/lib/osdlib_unix.cpp | 235 + src/icludes/osd/modules/lib/osdlib_win32.cpp | 306 + src/icludes/osd/modules/lib/osdobj_common.cpp | 760 + src/icludes/osd/modules/lib/osdobj_common.h | 321 + src/icludes/osd/modules/midi/midi_module.h | 35 + src/icludes/osd/modules/midi/none.cpp | 92 + src/icludes/osd/modules/midi/portmidi.cpp | 474 + .../osd/modules/monitor/monitor_common.cpp | 117 + .../osd/modules/monitor/monitor_common.h | 47 + .../osd/modules/monitor/monitor_dxgi.cpp | 165 + .../osd/modules/monitor/monitor_mac.cpp | 189 + .../osd/modules/monitor/monitor_module.h | 97 + .../osd/modules/monitor/monitor_sdl.cpp | 164 + .../osd/modules/monitor/monitor_win32.cpp | 140 + .../osd/modules/netdev/netdev_module.h | 28 + src/icludes/osd/modules/netdev/none.cpp | 23 + src/icludes/osd/modules/netdev/pcap.cpp | 296 + src/icludes/osd/modules/netdev/taptun.cpp | 370 + .../osd/modules/opengl/gl_shader_mgr.cpp | 241 + .../osd/modules/opengl/gl_shader_mgr.h | 51 + .../osd/modules/opengl/gl_shader_tool.cpp | 597 + .../osd/modules/opengl/gl_shader_tool.h | 189 + src/icludes/osd/modules/opengl/osd_opengl.h | 1920 + src/icludes/osd/modules/opengl/shader/genc.sh | 50 + .../opengl/shader/glsl_bicubic_rgb32_dir.fsh | 81 + .../shader/glsl_bicubic_rgb32_dir.fsh.c | 82 + .../modules/opengl/shader/glsl_bilinear.vsh | 7 + .../opengl/shader/glsl_bilinear_idx16_lut.fsh | 56 + .../shader/glsl_bilinear_idx16_lut.fsh.c | 59 + .../opengl/shader/glsl_bilinear_rgb32_dir.fsh | 55 + .../shader/glsl_bilinear_rgb32_dir.fsh.c | 57 + .../opengl/shader/glsl_bilinear_rgb32_lut.fsh | 59 + .../shader/glsl_bilinear_rgb32_lut.fsh.c | 62 + .../modules/opengl/shader/glsl_general.vsh | 7 + .../modules/opengl/shader/glsl_general.vsh.c | 11 + .../osd/modules/opengl/shader/glsl_plain.vsh | 7 + .../opengl/shader/glsl_plain_idx16_lut.fsh | 31 + .../opengl/shader/glsl_plain_idx16_lut.fsh.c | 34 + .../opengl/shader/glsl_plain_rgb32_dir.fsh | 25 + .../opengl/shader/glsl_plain_rgb32_dir.fsh.c | 28 + .../opengl/shader/glsl_plain_rgb32_lut.fsh | 29 + .../opengl/shader/glsl_plain_rgb32_lut.fsh.c | 32 + src/icludes/osd/modules/osdhelper.h | 60 + src/icludes/osd/modules/osdmodule.cpp | 93 + src/icludes/osd/modules/osdmodule.h | 110 + src/icludes/osd/modules/osdwindow.cpp | 141 + src/icludes/osd/modules/osdwindow.h | 325 + src/icludes/osd/modules/output/console.cpp | 32 + src/icludes/osd/modules/output/network.cpp | 243 + src/icludes/osd/modules/output/none.cpp | 32 + .../osd/modules/output/output_module.h | 38 + .../osd/modules/output/win32_output.cpp | 361 + src/icludes/osd/modules/output/win32_output.h | 90 + src/icludes/osd/modules/render/aviwrite.cpp | 154 + src/icludes/osd/modules/render/aviwrite.h | 50 + .../osd/modules/render/bgfx/blendreader.cpp | 51 + .../osd/modules/render/bgfx/blendreader.h | 31 + src/icludes/osd/modules/render/bgfx/chain.cpp | 173 + src/icludes/osd/modules/render/bgfx/chain.h | 66 + .../osd/modules/render/bgfx/chainentry.cpp | 392 + .../osd/modules/render/bgfx/chainentry.h | 75 + .../modules/render/bgfx/chainentryreader.cpp | 240 + .../modules/render/bgfx/chainentryreader.h | 32 + .../osd/modules/render/bgfx/chainmanager.cpp | 711 + .../osd/modules/render/bgfx/chainmanager.h | 156 + .../osd/modules/render/bgfx/chainreader.cpp | 141 + .../osd/modules/render/bgfx/chainreader.h | 28 + src/icludes/osd/modules/render/bgfx/clear.cpp | 22 + src/icludes/osd/modules/render/bgfx/clear.h | 30 + .../osd/modules/render/bgfx/clearreader.cpp | 62 + .../osd/modules/render/bgfx/clearreader.h | 31 + .../osd/modules/render/bgfx/cullreader.cpp | 24 + .../osd/modules/render/bgfx/cullreader.h | 25 + .../osd/modules/render/bgfx/depthreader.cpp | 36 + .../osd/modules/render/bgfx/depthreader.h | 27 + .../osd/modules/render/bgfx/effect.cpp | 56 + src/icludes/osd/modules/render/bgfx/effect.h | 37 + .../osd/modules/render/bgfx/effectmanager.cpp | 94 + .../osd/modules/render/bgfx/effectmanager.h | 42 + .../osd/modules/render/bgfx/effectreader.cpp | 106 + .../osd/modules/render/bgfx/effectreader.h | 30 + .../osd/modules/render/bgfx/entryuniform.h | 34 + .../render/bgfx/entryuniformreader.cpp | 59 + .../modules/render/bgfx/entryuniformreader.h | 33 + .../modules/render/bgfx/frameparameter.cpp | 27 + .../osd/modules/render/bgfx/frameparameter.h | 34 + .../osd/modules/render/bgfx/inputpair.cpp | 143 + .../osd/modules/render/bgfx/inputpair.h | 55 + .../osd/modules/render/bgfx/parameter.h | 44 + .../osd/modules/render/bgfx/paramreader.cpp | 66 + .../osd/modules/render/bgfx/paramreader.h | 31 + .../osd/modules/render/bgfx/paramuniform.cpp | 23 + .../osd/modules/render/bgfx/paramuniform.h | 29 + .../render/bgfx/paramuniformreader.cpp | 32 + .../modules/render/bgfx/paramuniformreader.h | 32 + .../osd/modules/render/bgfx/shadermanager.cpp | 115 + .../osd/modules/render/bgfx/shadermanager.h | 41 + .../shaders/chains/blurs/fs_smart-blur.sc | 64 + .../bgfx/shaders/chains/blurs/varying.def.sc | 9 + .../shaders/chains/blurs/vs_smart-blur.sc | 48 + .../chains/crt-geom/fs_crt-geom-deluxe.sc | 322 + .../shaders/chains/crt-geom/fs_crt-geom.sc | 280 + .../bgfx/shaders/chains/crt-geom/fs_gaussx.sc | 29 + .../bgfx/shaders/chains/crt-geom/fs_gaussy.sc | 29 + .../shaders/chains/crt-geom/fs_lowpass.sc | 37 + .../shaders/chains/crt-geom/fs_mipmap8.sc | 148 + .../chains/crt-geom/fs_phosphor_apply.sc | 42 + .../chains/crt-geom/fs_phosphor_update.sc | 45 + .../shaders/chains/crt-geom/varying.def.sc | 13 + .../shaders/chains/crt-geom/vs_crt-geom.sc | 96 + .../bgfx/shaders/chains/crt-geom/vs_gaussx.sc | 18 + .../bgfx/shaders/chains/crt-geom/vs_gaussy.sc | 18 + .../shaders/chains/crt-geom/vs_lowpass.sc | 49 + .../shaders/chains/crt-geom/vs_mipmap8.sc | 11 + .../chains/crt-geom/vs_phosphor_apply.sc | 11 + .../chains/crt-geom/vs_phosphor_update.sc | 11 + .../shaders/chains/crt/fs_crt-caligari.sc | 123 + .../bgfx/shaders/chains/crt/varying.def.sc | 7 + .../shaders/chains/crt/vs_crt-caligari.sc | 45 + .../bgfx/shaders/chains/default/fs_blit.sc | 14 + .../shaders/chains/default/varying.def.sc | 6 + .../bgfx/shaders/chains/default/vs_blit.sc | 14 + .../bgfx/shaders/chains/eagle/fs_eagle.sc | 165 + .../bgfx/shaders/chains/eagle/varying.def.sc | 14 + .../bgfx/shaders/chains/eagle/vs_eagle.sc | 43 + .../bgfx/shaders/chains/hlsl/fs_chroma.sc | 39 + .../bgfx/shaders/chains/hlsl/fs_color.sc | 43 + .../bgfx/shaders/chains/hlsl/fs_deconverge.sc | 21 + .../bgfx/shaders/chains/hlsl/fs_defocus.sc | 57 + .../bgfx/shaders/chains/hlsl/fs_distortion.sc | 248 + .../shaders/chains/hlsl/fs_ntsc_decode.sc | 136 + .../shaders/chains/hlsl/fs_ntsc_encode.sc | 72 + .../bgfx/shaders/chains/hlsl/fs_phosphor.sc | 24 + .../bgfx/shaders/chains/hlsl/fs_post.sc | 167 + .../bgfx/shaders/chains/hlsl/fs_prescale.sc | 30 + .../bgfx/shaders/chains/hlsl/fs_scanline.sc | 101 + .../bgfx/shaders/chains/hlsl/varying.def.sc | 9 + .../bgfx/shaders/chains/hlsl/vs_chroma.sc | 14 + .../bgfx/shaders/chains/hlsl/vs_color.sc | 14 + .../bgfx/shaders/chains/hlsl/vs_deconverge.sc | 32 + .../bgfx/shaders/chains/hlsl/vs_defocus.sc | 14 + .../bgfx/shaders/chains/hlsl/vs_distortion.sc | 14 + .../shaders/chains/hlsl/vs_ntsc_decode.sc | 14 + .../shaders/chains/hlsl/vs_ntsc_encode.sc | 14 + .../bgfx/shaders/chains/hlsl/vs_phosphor.sc | 14 + .../bgfx/shaders/chains/hlsl/vs_post.sc | 14 + .../bgfx/shaders/chains/hlsl/vs_prescale.sc | 14 + .../bgfx/shaders/chains/hlsl/vs_scanline.sc | 14 + .../render/bgfx/shaders/chains/hqx/fs_hq2x.sc | 75 + .../render/bgfx/shaders/chains/hqx/fs_hq3x.sc | 75 + .../render/bgfx/shaders/chains/hqx/fs_hq4x.sc | 75 + .../bgfx/shaders/chains/hqx/varying.def.sc | 9 + .../render/bgfx/shaders/chains/hqx/vs_hq2x.sc | 36 + .../render/bgfx/shaders/chains/hqx/vs_hq3x.sc | 36 + .../render/bgfx/shaders/chains/hqx/vs_hq4x.sc | 36 + .../shaders/chains/lcd-grid/fs_lcd-grid.sc | 106 + .../shaders/chains/lcd-grid/fs_persistence.sc | 16 + .../shaders/chains/lcd-grid/varying.def.sc | 6 + .../shaders/chains/lcd-grid/vs_lcd-grid.sc | 14 + .../shaders/chains/lcd-grid/vs_persistence.sc | 14 + .../bgfx/shaders/chains/misc/fs_blit.sc | 14 + .../bgfx/shaders/chains/misc/fs_blit_bcg.sc | 24 + .../shaders/chains/misc/fs_blit_palette16.sc | 37 + .../bgfx/shaders/chains/misc/fs_blit_rgb32.sc | 14 + .../bgfx/shaders/chains/misc/fs_blit_yuy16.sc | 37 + .../misc/fs_bob-and-ghost-deinterlace.sc | 55 + .../chains/misc/fs_deposterize-pass0.sc | 45 + .../chains/misc/fs_deposterize-pass1.sc | 45 + .../render/bgfx/shaders/chains/misc/fs_lut.sc | 29 + .../bgfx/shaders/chains/misc/fs_saturation.sc | 25 + .../bgfx/shaders/chains/misc/varying.def.sc | 7 + .../bgfx/shaders/chains/misc/vs_blit.sc | 14 + .../misc/vs_bob-and-ghost-deinterlace.sc | 14 + .../chains/misc/vs_deposterize-pass0.sc | 30 + .../chains/misc/vs_deposterize-pass1.sc | 30 + .../render/bgfx/shaders/chains/misc/vs_lut.sc | 14 + .../bgfx/shaders/chains/misc/vs_saturation.sc | 14 + .../pillarbox_left_horizontal/fs_gaussian.sc | 57 + .../fs_offset_sat.sc | 25 + .../pillarbox_left_horizontal/varying.def.sc | 6 + .../pillarbox_left_horizontal/vs_gaussian.sc | 14 + .../vs_offset_sat.sc | 17 + .../pillarbox_left_vertical/fs_gaussian.sc | 57 + .../pillarbox_left_vertical/fs_offset_sat.sc | 25 + .../pillarbox_left_vertical/varying.def.sc | 6 + .../pillarbox_left_vertical/vs_gaussian.sc | 14 + .../pillarbox_left_vertical/vs_offset_sat.sc | 17 + .../pillarbox_right_horizontal/fs_gaussian.sc | 57 + .../fs_offset_sat.sc | 25 + .../pillarbox_right_horizontal/varying.def.sc | 6 + .../pillarbox_right_horizontal/vs_gaussian.sc | 14 + .../vs_offset_sat.sc | 17 + .../pillarbox_right_vertical/fs_gaussian.sc | 57 + .../pillarbox_right_vertical/fs_offset_sat.sc | 25 + .../pillarbox_right_vertical/varying.def.sc | 6 + .../pillarbox_right_vertical/vs_gaussian.sc | 14 + .../pillarbox_right_vertical/vs_offset_sat.sc | 17 + .../bgfx/shaders/chains/unfiltered/fs_blit.sc | 14 + .../shaders/chains/unfiltered/varying.def.sc | 6 + .../bgfx/shaders/chains/unfiltered/vs_blit.sc | 14 + .../warp/fs_dilation-horizontal-fast.sc | 46 + .../bgfx/shaders/chains/warp/varying.def.sc | 7 + .../warp/vs_dilation-horizontal-fast.sc | 51 + .../shaders/chains/xbr/fs_xbr-lv1-noblend.sc | 132 + .../bgfx/shaders/chains/xbr/fs_xbr-lv2-3d.sc | 243 + .../shaders/chains/xbr/fs_xbr-lv2-fast.sc | 178 + .../shaders/chains/xbr/fs_xbr-lv2-noblend.sc | 177 + .../bgfx/shaders/chains/xbr/fs_xbr-lv2.sc | 203 + .../shaders/chains/xbr/fs_xbr-lv3-noblend.sc | 213 + .../bgfx/shaders/chains/xbr/fs_xbr-lv3.sc | 235 + .../xbr/super-xbr/fs_custom-jinc2-sharper.sc | 134 + .../xbr/super-xbr/fs_super-2xbr-3d-pass0.sc | 227 + .../xbr/super-xbr/fs_super-2xbr-3d-pass1.sc | 211 + .../xbr/super-xbr/fs_super-2xbr-3d-pass2.sc | 213 + .../xbr/super-xbr/fs_super-4xbr-3d-pass0.sc | 217 + .../xbr/super-xbr/fs_super-4xbr-3d-pass1.sc | 210 + .../xbr/super-xbr/fs_super-4xbr-3d-pass1f.sc | 211 + .../xbr/super-xbr/fs_super-4xbr-3d-pass2.sc | 226 + .../xbr/super-xbr/fs_super-4xbr-3d-pass3.sc | 210 + .../xbr/super-xbr/fs_super-4xbr-3d-pass3f.sc | 211 + .../xbr/super-xbr/fs_super-xbr-fast-pass0.sc | 169 + .../xbr/super-xbr/fs_super-xbr-fast-pass1.sc | 159 + .../xbr/super-xbr/fs_super-xbr-fast-pass2.sc | 162 + .../xbr/super-xbr/fs_super-xbr-pass0.sc | 160 + .../xbr/super-xbr/fs_super-xbr-pass1.sc | 178 + .../xbr/super-xbr/fs_super-xbr-pass2.sc | 170 + .../chains/xbr/super-xbr/varying.def.sc | 10 + .../xbr/super-xbr/vs_custom-jinc2-sharper.sc | 14 + .../xbr/super-xbr/vs_super-2xbr-3d-pass0.sc | 14 + .../xbr/super-xbr/vs_super-2xbr-3d-pass1.sc | 14 + .../xbr/super-xbr/vs_super-2xbr-3d-pass2.sc | 50 + .../xbr/super-xbr/vs_super-4xbr-3d-pass0.sc | 14 + .../xbr/super-xbr/vs_super-4xbr-3d-pass1.sc | 14 + .../xbr/super-xbr/vs_super-4xbr-3d-pass1f.sc | 24 + .../xbr/super-xbr/vs_super-4xbr-3d-pass2.sc | 14 + .../xbr/super-xbr/vs_super-4xbr-3d-pass3.sc | 14 + .../xbr/super-xbr/vs_super-4xbr-3d-pass3f.sc | 24 + .../xbr/super-xbr/vs_super-xbr-fast-pass0.sc | 40 + .../xbr/super-xbr/vs_super-xbr-fast-pass1.sc | 40 + .../xbr/super-xbr/vs_super-xbr-fast-pass2.sc | 40 + .../xbr/super-xbr/vs_super-xbr-pass0.sc | 50 + .../xbr/super-xbr/vs_super-xbr-pass1.sc | 40 + .../xbr/super-xbr/vs_super-xbr-pass2.sc | 50 + .../xbr/super-xbr/vs_super-xbr-pass3.sc | 50 + .../bgfx/shaders/chains/xbr/varying.def.sc | 13 + .../shaders/chains/xbr/vs_xbr-lv1-noblend.sc | 22 + .../bgfx/shaders/chains/xbr/vs_xbr-lv2-3d.sc | 29 + .../shaders/chains/xbr/vs_xbr-lv2-fast.sc | 29 + .../shaders/chains/xbr/vs_xbr-lv2-noblend.sc | 59 + .../bgfx/shaders/chains/xbr/vs_xbr-lv2.sc | 27 + .../shaders/chains/xbr/vs_xbr-lv3-noblend.sc | 60 + .../bgfx/shaders/chains/xbr/vs_xbr-lv3.sc | 60 + .../xbr/xbr-hybrid/fs_2xbr-hybrid-sharp.sc | 336 + .../xbr/xbr-hybrid/fs_2xbr-hybrid-v2-gamma.sc | 265 + .../xbr/xbr-hybrid/fs_2xbr-hybrid-v2.sc | 255 + .../xbr/xbr-hybrid/fs_2xbr-hybrid-v4-gamma.sc | 281 + .../xbr/xbr-hybrid/fs_2xbr-hybrid-v4.sc | 271 + .../xbr/xbr-hybrid/fs_2xbr-hybrid-v4b.sc | 256 + .../xbr/xbr-hybrid/fs_2xbr-hybrid-v5-gamma.sc | 288 + .../chains/xbr/xbr-hybrid/fs_2xbr-hybrid.sc | 341 + .../chains/xbr/xbr-hybrid/varying.def.sc | 13 + .../xbr/xbr-hybrid/vs_2xbr-hybrid-sharp.sc | 72 + .../xbr/xbr-hybrid/vs_2xbr-hybrid-v2-gamma.sc | 72 + .../xbr/xbr-hybrid/vs_2xbr-hybrid-v2.sc | 72 + .../xbr/xbr-hybrid/vs_2xbr-hybrid-v4-gamma.sc | 72 + .../xbr/xbr-hybrid/vs_2xbr-hybrid-v4.sc | 72 + .../xbr/xbr-hybrid/vs_2xbr-hybrid-v4b.sc | 72 + .../xbr/xbr-hybrid/vs_2xbr-hybrid-v5-gamma.sc | 72 + .../chains/xbr/xbr-hybrid/vs_2xbr-hybrid.sc | 72 + .../xbr-lv2-multipass/fs_xbr-lv2-a-pass0.sc | 159 + .../fs_xbr-lv2-accuracy-pass0.sc | 174 + .../fs_xbr-lv2-accuracy-pass1.sc | 160 + .../xbr-lv2-multipass/fs_xbr-lv2-b-pass0.sc | 160 + .../xbr-lv2-multipass/fs_xbr-lv2-c-pass0.sc | 133 + .../xbr-lv2-multipass/fs_xbr-lv2-d-pass0.sc | 163 + .../fs_xbr-lv2-noblend-pass1.sc | 162 + .../xbr/xbr-lv2-multipass/fs_xbr-lv2-pass1.sc | 153 + .../xbr/xbr-lv2-multipass/varying.def.sc | 13 + .../xbr-lv2-multipass/vs_xbr-lv2-a-pass0.sc | 60 + .../vs_xbr-lv2-accuracy-pass0.sc | 59 + .../vs_xbr-lv2-accuracy-pass1.sc | 55 + .../xbr-lv2-multipass/vs_xbr-lv2-b-pass0.sc | 60 + .../xbr-lv2-multipass/vs_xbr-lv2-c-pass0.sc | 60 + .../xbr-lv2-multipass/vs_xbr-lv2-d-pass0.sc | 60 + .../vs_xbr-lv2-noblend-pass1.sc | 54 + .../xbr/xbr-lv2-multipass/vs_xbr-lv2-pass1.sc | 56 + .../xbr/xbr-lv3-multipass/fs_xbr-lv3-pass0.sc | 216 + .../xbr/xbr-lv3-multipass/fs_xbr-lv3-pass1.sc | 180 + .../xbr/xbr-lv3-multipass/varying.def.sc | 13 + .../xbr/xbr-lv3-multipass/vs_xbr-lv3-pass0.sc | 60 + .../xbr/xbr-lv3-multipass/vs_xbr-lv3-pass1.sc | 55 + .../xbr-mlv4-multipass/fs_xbr-mlv4-pass1.sc | 208 + .../xbr-mlv4-multipass/fs_xbr-mlv4-pass2.sc | 235 + .../xbr-mlv4-multipass/fs_xbr-mlv4-pass3.sc | 172 + .../xbr-mlv4-multipass/fs_xbr-mlv4-pass4.sc | 164 + .../xbr/xbr-mlv4-multipass/varying.def.sc | 13 + .../xbr-mlv4-multipass/vs_xbr-mlv4-pass1.sc | 52 + .../xbr-mlv4-multipass/vs_xbr-mlv4-pass2.sc | 59 + .../xbr-mlv4-multipass/vs_xbr-mlv4-pass3.sc | 55 + .../xbr-mlv4-multipass/vs_xbr-mlv4-pass4.sc | 53 + .../osd/modules/render/bgfx/shaders/fs_gui.sc | 14 + .../modules/render/bgfx/shaders/fs_screen.sc | 14 + .../osd/modules/render/bgfx/shaders/makefile | 39 + .../osd/modules/render/bgfx/shaders/shader.mk | 183 + .../render/bgfx/shaders/varying.def.sc | 6 + .../osd/modules/render/bgfx/shaders/vs_gui.sc | 14 + .../modules/render/bgfx/shaders/vs_screen.sc | 14 + .../osd/modules/render/bgfx/slider.cpp | 119 + src/icludes/osd/modules/render/bgfx/slider.h | 81 + .../osd/modules/render/bgfx/sliderreader.cpp | 164 + .../osd/modules/render/bgfx/sliderreader.h | 36 + .../osd/modules/render/bgfx/slideruniform.cpp | 34 + .../osd/modules/render/bgfx/slideruniform.h | 34 + .../render/bgfx/slideruniformreader.cpp | 47 + .../modules/render/bgfx/slideruniformreader.h | 32 + .../osd/modules/render/bgfx/statereader.cpp | 144 + .../osd/modules/render/bgfx/statereader.h | 66 + .../osd/modules/render/bgfx/suppressor.cpp | 58 + .../osd/modules/render/bgfx/suppressor.h | 51 + .../modules/render/bgfx/suppressorreader.cpp | 98 + .../modules/render/bgfx/suppressorreader.h | 37 + .../osd/modules/render/bgfx/target.cpp | 133 + src/icludes/osd/modules/render/bgfx/target.h | 80 + .../osd/modules/render/bgfx/targetmanager.cpp | 192 + .../osd/modules/render/bgfx/targetmanager.h | 59 + .../osd/modules/render/bgfx/targetreader.cpp | 76 + .../osd/modules/render/bgfx/targetreader.h | 33 + .../osd/modules/render/bgfx/texture.cpp | 62 + src/icludes/osd/modules/render/bgfx/texture.h | 53 + .../render/bgfx/texturehandleprovider.h | 32 + .../modules/render/bgfx/texturemanager.cpp | 213 + .../osd/modules/render/bgfx/texturemanager.h | 58 + .../osd/modules/render/bgfx/timeparameter.cpp | 33 + .../osd/modules/render/bgfx/timeparameter.h | 34 + .../osd/modules/render/bgfx/uniform.cpp | 84 + src/icludes/osd/modules/render/bgfx/uniform.h | 48 + .../osd/modules/render/bgfx/uniformreader.cpp | 63 + .../osd/modules/render/bgfx/uniformreader.h | 32 + .../osd/modules/render/bgfx/valueuniform.cpp | 25 + .../osd/modules/render/bgfx/valueuniform.h | 31 + .../render/bgfx/valueuniformreader.cpp | 44 + .../modules/render/bgfx/valueuniformreader.h | 31 + src/icludes/osd/modules/render/bgfx/vertex.h | 37 + src/icludes/osd/modules/render/bgfx/view.cpp | 64 + src/icludes/osd/modules/render/bgfx/view.h | 69 + .../osd/modules/render/bgfx/windowparameter.h | 33 + .../osd/modules/render/bgfx/writereader.cpp | 18 + .../osd/modules/render/bgfx/writereader.h | 21 + src/icludes/osd/modules/render/bgfxutil.cpp | 106 + src/icludes/osd/modules/render/bgfxutil.h | 19 + src/icludes/osd/modules/render/binpacker.cpp | 196 + src/icludes/osd/modules/render/binpacker.h | 184 + src/icludes/osd/modules/render/blit13.h | 256 + src/icludes/osd/modules/render/copyutil.h | 264 + src/icludes/osd/modules/render/d3d/d3dcomm.h | 276 + .../osd/modules/render/d3d/d3dhlsl.cpp | 2806 + src/icludes/osd/modules/render/d3d/d3dhlsl.h | 438 + src/icludes/osd/modules/render/draw13.cpp | 977 + src/icludes/osd/modules/render/draw13.h | 213 + src/icludes/osd/modules/render/drawbgfx.cpp | 1288 + src/icludes/osd/modules/render/drawbgfx.h | 167 + src/icludes/osd/modules/render/drawd3d.cpp | 2660 + src/icludes/osd/modules/render/drawd3d.h | 179 + src/icludes/osd/modules/render/drawgdi.cpp | 102 + src/icludes/osd/modules/render/drawgdi.h | 55 + src/icludes/osd/modules/render/drawnone.cpp | 33 + src/icludes/osd/modules/render/drawnone.h | 33 + src/icludes/osd/modules/render/drawogl.cpp | 2795 + src/icludes/osd/modules/render/drawogl.h | 241 + src/icludes/osd/modules/render/drawsdl.cpp | 681 + src/icludes/osd/modules/render/drawsdl.h | 88 + src/icludes/osd/modules/render/sdlglcontext.h | 68 + .../osd/modules/render/sliderdirtynotifier.h | 22 + src/icludes/osd/modules/render/winglcontext.h | 184 + .../osd/modules/sound/coreaudio_sound.cpp | 1020 + .../osd/modules/sound/direct_sound.cpp | 562 + src/icludes/osd/modules/sound/js_sound.cpp | 54 + src/icludes/osd/modules/sound/js_sound.js | 219 + src/icludes/osd/modules/sound/none.cpp | 33 + src/icludes/osd/modules/sound/pa_sound.cpp | 463 + src/icludes/osd/modules/sound/pulse_sound.cpp | 405 + src/icludes/osd/modules/sound/sdl_sound.cpp | 465 + src/icludes/osd/modules/sound/sound_module.h | 36 + .../osd/modules/sound/xaudio2_sound.cpp | 702 + src/icludes/osd/osdcomm.h | 119 + src/icludes/osd/osdcore.cpp | 219 + src/icludes/osd/osdcore.h | 676 + src/icludes/osd/osdepend.h | 99 + src/icludes/osd/osdfile.h | 287 + src/icludes/osd/osdnet.cpp | 139 + src/icludes/osd/osdnet.h | 59 + src/icludes/osd/osdsync.cpp | 819 + src/icludes/osd/osdsync.h | 167 + src/icludes/osd/sdl/osdsdl.h | 169 + src/icludes/osd/sdl/sdlmain.cpp | 521 + src/icludes/osd/sdl/sdlprefix.h | 86 + src/icludes/osd/sdl/taputil.sh | 43 + src/icludes/osd/sdl/video.cpp | 349 + src/icludes/osd/sdl/window.cpp | 1150 + src/icludes/osd/sdl/window.h | 135 + src/icludes/osd/strconv.cpp | 297 + src/icludes/osd/strconv.h | 61 + src/icludes/osd/watchdog.cpp | 67 + src/icludes/osd/watchdog.h | 46 + src/icludes/osd/windows/ledutil.cpp | 708 + src/icludes/osd/windows/video.cpp | 284 + src/icludes/osd/windows/video.h | 29 + src/icludes/osd/windows/window.cpp | 1894 + src/icludes/osd/windows/window.h | 184 + src/icludes/osd/windows/winmain.cpp | 566 + src/icludes/osd/windows/winmain.h | 332 + src/icludes/osd/windows/winmenu.cpp | 33 + src/icludes/osd/windows/winutf8.cpp | 116 + src/icludes/osd/windows/winutf8.h | 36 + src/icludes/osd/windows/winutil.cpp | 130 + src/icludes/osd/windows/winutil.h | 23 + src/version.cpp | 8 + 3503 files changed, 1046566 insertions(+) create mode 100644 .gitignore create mode 100644 3rdparty/expat/AUTHORS create mode 100644 3rdparty/expat/CMake.README create mode 100644 3rdparty/expat/CMakeLists.txt create mode 100644 3rdparty/expat/COPYING create mode 100644 3rdparty/expat/Changes create mode 100644 3rdparty/expat/ConfigureChecks.cmake create mode 100644 3rdparty/expat/Makefile.am create mode 100644 3rdparty/expat/Makefile.in create mode 100644 3rdparty/expat/README.md create mode 100644 3rdparty/expat/acinclude.m4 create mode 100644 3rdparty/expat/aclocal.m4 create mode 100644 3rdparty/expat/cmake/expat-config.cmake.in create mode 100644 3rdparty/expat/cmake/mingw-toolchain.cmake create mode 100755 3rdparty/expat/configure create mode 100644 3rdparty/expat/configure.ac create mode 100755 3rdparty/expat/conftools/PrintPath create mode 100755 3rdparty/expat/conftools/ar-lib create mode 100644 3rdparty/expat/conftools/ax-append-compile-flags.m4 create mode 100644 3rdparty/expat/conftools/ax-append-flag.m4 create mode 100644 3rdparty/expat/conftools/ax-append-link-flags.m4 create mode 100644 3rdparty/expat/conftools/ax-check-compile-flag.m4 create mode 100644 3rdparty/expat/conftools/ax-check-link-flag.m4 create mode 100644 3rdparty/expat/conftools/ax-require-defined.m4 create mode 100755 3rdparty/expat/conftools/compile create mode 100755 3rdparty/expat/conftools/config.guess create mode 100755 3rdparty/expat/conftools/config.sub create mode 100755 3rdparty/expat/conftools/depcomp create mode 100644 3rdparty/expat/conftools/expat.m4 create mode 100644 3rdparty/expat/conftools/expatcfg-compiler-supports-visibility.m4 create mode 100755 3rdparty/expat/conftools/get-version.sh create mode 100755 3rdparty/expat/conftools/install-sh create mode 100644 3rdparty/expat/conftools/ltmain.sh create mode 100755 3rdparty/expat/conftools/missing create mode 100755 3rdparty/expat/conftools/test-driver create mode 100644 3rdparty/expat/doc/Makefile.am create mode 100644 3rdparty/expat/doc/Makefile.in create mode 100644 3rdparty/expat/doc/expat.png create mode 100644 3rdparty/expat/doc/reference.html create mode 100644 3rdparty/expat/doc/style.css create mode 100644 3rdparty/expat/doc/valid-xhtml10.png create mode 100644 3rdparty/expat/doc/xmlwf.1 create mode 100644 3rdparty/expat/doc/xmlwf.xml create mode 100644 3rdparty/expat/examples/Makefile.am create mode 100644 3rdparty/expat/examples/Makefile.in create mode 100644 3rdparty/expat/examples/elements.c create mode 100644 3rdparty/expat/examples/outline.c create mode 100644 3rdparty/expat/expat.pc.in create mode 100644 3rdparty/expat/expat_config.h.cmake create mode 100644 3rdparty/expat/expat_config.h.in create mode 100755 3rdparty/expat/fix-xmltest-log.sh create mode 100644 3rdparty/expat/lib/Makefile.am create mode 100644 3rdparty/expat/lib/Makefile.in create mode 100644 3rdparty/expat/lib/ascii.h create mode 100644 3rdparty/expat/lib/asciitab.h create mode 100644 3rdparty/expat/lib/expat.h create mode 100644 3rdparty/expat/lib/expat_external.h create mode 100644 3rdparty/expat/lib/iasciitab.h create mode 100644 3rdparty/expat/lib/internal.h create mode 100644 3rdparty/expat/lib/latin1tab.h create mode 100644 3rdparty/expat/lib/libexpat.def create mode 100644 3rdparty/expat/lib/libexpatw.def create mode 100644 3rdparty/expat/lib/nametab.h create mode 100644 3rdparty/expat/lib/siphash.h create mode 100644 3rdparty/expat/lib/utf8tab.h create mode 100644 3rdparty/expat/lib/winconfig.h create mode 100644 3rdparty/expat/lib/xmlparse.c create mode 100644 3rdparty/expat/lib/xmlrole.c create mode 100644 3rdparty/expat/lib/xmlrole.h create mode 100644 3rdparty/expat/lib/xmltok.c create mode 100644 3rdparty/expat/lib/xmltok.h create mode 100644 3rdparty/expat/lib/xmltok_impl.c create mode 100644 3rdparty/expat/lib/xmltok_impl.h create mode 100644 3rdparty/expat/lib/xmltok_ns.c create mode 100644 3rdparty/expat/m4/libtool.m4 create mode 100644 3rdparty/expat/m4/ltoptions.m4 create mode 100644 3rdparty/expat/m4/ltsugar.m4 create mode 100644 3rdparty/expat/m4/ltversion.m4 create mode 100644 3rdparty/expat/m4/lt~obsolete.m4 create mode 100644 3rdparty/expat/run.sh.in create mode 100755 3rdparty/expat/test-driver-wrapper.sh create mode 100644 3rdparty/expat/tests/Makefile.am create mode 100644 3rdparty/expat/tests/Makefile.in create mode 100644 3rdparty/expat/tests/README.txt create mode 100644 3rdparty/expat/tests/benchmark/Makefile.am create mode 100644 3rdparty/expat/tests/benchmark/Makefile.in create mode 100644 3rdparty/expat/tests/benchmark/README.txt create mode 100644 3rdparty/expat/tests/benchmark/benchmark.c create mode 100644 3rdparty/expat/tests/chardata.c create mode 100644 3rdparty/expat/tests/chardata.h create mode 100644 3rdparty/expat/tests/memcheck.c create mode 100644 3rdparty/expat/tests/memcheck.h create mode 100644 3rdparty/expat/tests/minicheck.c create mode 100644 3rdparty/expat/tests/minicheck.h create mode 100644 3rdparty/expat/tests/runtests.c create mode 100644 3rdparty/expat/tests/runtestspp.cpp create mode 100644 3rdparty/expat/tests/structdata.c create mode 100644 3rdparty/expat/tests/structdata.h create mode 100755 3rdparty/expat/tests/udiffer.py create mode 100644 3rdparty/expat/tests/xmltest.log.expected create mode 100755 3rdparty/expat/tests/xmltest.sh create mode 100644 3rdparty/expat/win32/MANIFEST.txt create mode 100644 3rdparty/expat/win32/README.txt create mode 100644 3rdparty/expat/win32/build_expat_iss.bat create mode 100644 3rdparty/expat/win32/expat.iss create mode 100644 3rdparty/expat/xmlwf/Makefile.am create mode 100644 3rdparty/expat/xmlwf/Makefile.in create mode 100644 3rdparty/expat/xmlwf/codepage.c create mode 100644 3rdparty/expat/xmlwf/codepage.h create mode 100644 3rdparty/expat/xmlwf/ct.c create mode 100644 3rdparty/expat/xmlwf/filemap.h create mode 100644 3rdparty/expat/xmlwf/readfilemap.c create mode 100644 3rdparty/expat/xmlwf/unixfilemap.c create mode 100644 3rdparty/expat/xmlwf/win32filemap.c create mode 100644 3rdparty/expat/xmlwf/xmlfile.c create mode 100644 3rdparty/expat/xmlwf/xmlfile.h create mode 100644 3rdparty/expat/xmlwf/xmlmime.c create mode 100644 3rdparty/expat/xmlwf/xmlmime.h create mode 100644 3rdparty/expat/xmlwf/xmltchar.h create mode 100644 3rdparty/expat/xmlwf/xmlwf.c create mode 100755 3rdparty/expat/xmlwf/xmlwf_helpgen.py create mode 100755 3rdparty/expat/xmlwf/xmlwf_helpgen.sh create mode 100644 3rdparty/libflac/AUTHORS create mode 100644 3rdparty/libflac/COPYING.FDL create mode 100644 3rdparty/libflac/COPYING.GPL create mode 100644 3rdparty/libflac/COPYING.LGPL create mode 100644 3rdparty/libflac/COPYING.Xiph create mode 100644 3rdparty/libflac/FLAC.dsw create mode 100644 3rdparty/libflac/FLAC.sln create mode 100644 3rdparty/libflac/Makefile.am create mode 100644 3rdparty/libflac/Makefile.in create mode 100644 3rdparty/libflac/Makefile.lite create mode 100644 3rdparty/libflac/README create mode 100644 3rdparty/libflac/aclocal.m4 create mode 100644 3rdparty/libflac/all.dsp create mode 100644 3rdparty/libflac/all_dynamic.dsp create mode 100644 3rdparty/libflac/all_static.dsp create mode 100644 3rdparty/libflac/autogen.sh create mode 100644 3rdparty/libflac/build/Makefile.am create mode 100644 3rdparty/libflac/build/Makefile.in create mode 100644 3rdparty/libflac/build/config.mk create mode 100644 3rdparty/libflac/build/exe.mk create mode 100644 3rdparty/libflac/build/lib.mk create mode 100644 3rdparty/libflac/config.guess create mode 100644 3rdparty/libflac/config.h.in create mode 100644 3rdparty/libflac/config.rpath create mode 100644 3rdparty/libflac/config.sub create mode 100644 3rdparty/libflac/configure create mode 100644 3rdparty/libflac/configure.in create mode 100644 3rdparty/libflac/depcomp create mode 100644 3rdparty/libflac/doc/Doxyfile create mode 100644 3rdparty/libflac/doc/FLAC.tag create mode 100644 3rdparty/libflac/doc/Makefile.am create mode 100644 3rdparty/libflac/doc/Makefile.in create mode 100644 3rdparty/libflac/doc/Makefile.lite create mode 100644 3rdparty/libflac/doc/doxygen.footer.html create mode 100644 3rdparty/libflac/doc/doxygen.header.html create mode 100644 3rdparty/libflac/doc/html/Makefile.am create mode 100644 3rdparty/libflac/doc/html/Makefile.in create mode 100644 3rdparty/libflac/doc/html/api/+_2all_8h-source.html create mode 100644 3rdparty/libflac/doc/html/api/+_2export_8h-source.html create mode 100644 3rdparty/libflac/doc/html/api/+_2export_8h.html create mode 100644 3rdparty/libflac/doc/html/api/+_2metadata_8h-source.html create mode 100644 3rdparty/libflac/doc/html/api/+_2metadata_8h.html create mode 100644 3rdparty/libflac/doc/html/api/all_8h-source.html create mode 100644 3rdparty/libflac/doc/html/api/annotated.html create mode 100644 3rdparty/libflac/doc/html/api/assert_8h-source.html create mode 100644 3rdparty/libflac/doc/html/api/callback_8h-source.html create mode 100644 3rdparty/libflac/doc/html/api/callback_8h.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1File-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1File.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1File.png create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1Stream-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1Stream.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1Stream.png create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1Stream_1_1State-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1Stream_1_1State.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1File-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1File.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1File.png create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream.png create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Application-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Application.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Application.png create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Chain-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Chain.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet.png create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Iterator-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Iterator.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Padding-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Padding.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Padding.png create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Picture-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Picture.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Picture.png create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Prototype-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Prototype.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Prototype.png create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SeekTable-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SeekTable.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SeekTable.png create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SimpleIterator-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SimpleIterator.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1StreamInfo-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1StreamInfo.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1StreamInfo.png create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Unknown-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Unknown.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Unknown.png create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1VorbisComment-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1VorbisComment.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1VorbisComment.png create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry-members.html create mode 100644 3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html create mode 100644 3rdparty/libflac/doc/html/api/classes.html create mode 100644 3rdparty/libflac/doc/html/api/decoder_8h-source.html create mode 100644 3rdparty/libflac/doc/html/api/decoder_8h.html create mode 100644 3rdparty/libflac/doc/html/api/dir_000000.html create mode 100644 3rdparty/libflac/doc/html/api/dir_000001.html create mode 100644 3rdparty/libflac/doc/html/api/dir_000002.html create mode 100644 3rdparty/libflac/doc/html/api/dirs.html create mode 100644 3rdparty/libflac/doc/html/api/doxygen.css create mode 100644 3rdparty/libflac/doc/html/api/doxygen.png create mode 100644 3rdparty/libflac/doc/html/api/encoder_8h-source.html create mode 100644 3rdparty/libflac/doc/html/api/encoder_8h.html create mode 100644 3rdparty/libflac/doc/html/api/export_8h-source.html create mode 100644 3rdparty/libflac/doc/html/api/export_8h.html create mode 100644 3rdparty/libflac/doc/html/api/files.html create mode 100644 3rdparty/libflac/doc/html/api/format_8h-source.html create mode 100644 3rdparty/libflac/doc/html/api/format_8h.html create mode 100644 3rdparty/libflac/doc/html/api/functions.html create mode 100644 3rdparty/libflac/doc/html/api/functions_func.html create mode 100644 3rdparty/libflac/doc/html/api/functions_vars.html create mode 100644 3rdparty/libflac/doc/html/api/globals.html create mode 100644 3rdparty/libflac/doc/html/api/globals_0x66.html create mode 100644 3rdparty/libflac/doc/html/api/globals_0x67.html create mode 100644 3rdparty/libflac/doc/html/api/globals_defs.html create mode 100644 3rdparty/libflac/doc/html/api/globals_enum.html create mode 100644 3rdparty/libflac/doc/html/api/globals_eval.html create mode 100644 3rdparty/libflac/doc/html/api/globals_func.html create mode 100644 3rdparty/libflac/doc/html/api/globals_type.html create mode 100644 3rdparty/libflac/doc/html/api/globals_vars.html create mode 100644 3rdparty/libflac/doc/html/api/group__flac.html create mode 100644 3rdparty/libflac/doc/html/api/group__flac__callbacks.html create mode 100644 3rdparty/libflac/doc/html/api/group__flac__decoder.html create mode 100644 3rdparty/libflac/doc/html/api/group__flac__encoder.html create mode 100644 3rdparty/libflac/doc/html/api/group__flac__export.html create mode 100644 3rdparty/libflac/doc/html/api/group__flac__format.html create mode 100644 3rdparty/libflac/doc/html/api/group__flac__metadata.html create mode 100644 3rdparty/libflac/doc/html/api/group__flac__metadata__level0.html create mode 100644 3rdparty/libflac/doc/html/api/group__flac__metadata__level1.html create mode 100644 3rdparty/libflac/doc/html/api/group__flac__metadata__level2.html create mode 100644 3rdparty/libflac/doc/html/api/group__flac__metadata__object.html create mode 100644 3rdparty/libflac/doc/html/api/group__flac__stream__decoder.html create mode 100644 3rdparty/libflac/doc/html/api/group__flac__stream__encoder.html create mode 100644 3rdparty/libflac/doc/html/api/group__flacpp.html create mode 100644 3rdparty/libflac/doc/html/api/group__flacpp__decoder.html create mode 100644 3rdparty/libflac/doc/html/api/group__flacpp__encoder.html create mode 100644 3rdparty/libflac/doc/html/api/group__flacpp__export.html create mode 100644 3rdparty/libflac/doc/html/api/group__flacpp__metadata.html create mode 100644 3rdparty/libflac/doc/html/api/group__flacpp__metadata__level0.html create mode 100644 3rdparty/libflac/doc/html/api/group__flacpp__metadata__level1.html create mode 100644 3rdparty/libflac/doc/html/api/group__flacpp__metadata__level2.html create mode 100644 3rdparty/libflac/doc/html/api/group__flacpp__metadata__object.html create mode 100644 3rdparty/libflac/doc/html/api/group__porting.html create mode 100644 3rdparty/libflac/doc/html/api/group__porting__1__1__2__to__1__1__3.html create mode 100644 3rdparty/libflac/doc/html/api/group__porting__1__1__3__to__1__1__4.html create mode 100644 3rdparty/libflac/doc/html/api/group__porting__1__1__4__to__1__2__0.html create mode 100644 3rdparty/libflac/doc/html/api/hierarchy.html create mode 100644 3rdparty/libflac/doc/html/api/index.html create mode 100644 3rdparty/libflac/doc/html/api/metadata_8h-source.html create mode 100644 3rdparty/libflac/doc/html/api/metadata_8h.html create mode 100644 3rdparty/libflac/doc/html/api/modules.html create mode 100644 3rdparty/libflac/doc/html/api/ordinals_8h-source.html create mode 100644 3rdparty/libflac/doc/html/api/stream__decoder_8h-source.html create mode 100644 3rdparty/libflac/doc/html/api/stream__decoder_8h.html create mode 100644 3rdparty/libflac/doc/html/api/stream__encoder_8h-source.html create mode 100644 3rdparty/libflac/doc/html/api/stream__encoder_8h.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod__PartitionedRice-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod__PartitionedRice.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____Frame-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____Frame.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____FrameFooter-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____FrameFooter.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____FrameHeader-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____FrameHeader.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____IOCallbacks-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____IOCallbacks.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamDecoder-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamDecoder.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamEncoder-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamEncoder.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Application-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Application.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet__Index-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet__Index.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet__Track-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet__Track.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Padding-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Padding.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Picture-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Picture.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__SeekPoint-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__SeekPoint.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__SeekTable-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__SeekTable.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__StreamInfo-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__StreamInfo.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Unknown-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Unknown.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__VorbisComment-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__VorbisComment.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__VorbisComment__Entry-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__VorbisComment__Entry.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____Subframe-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____Subframe.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____Subframe__Constant-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____Subframe__Constant.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____Subframe__Fixed-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____Subframe__Fixed.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____Subframe__LPC-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____Subframe__LPC.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____Subframe__Verbatim-members.html create mode 100644 3rdparty/libflac/doc/html/api/structFLAC____Subframe__Verbatim.html create mode 100644 3rdparty/libflac/doc/html/changelog.html create mode 100644 3rdparty/libflac/doc/html/comparison.html create mode 100644 3rdparty/libflac/doc/html/comparison__chopin_prelude_24.html create mode 100644 3rdparty/libflac/doc/html/comparison__dream_theater_600.html create mode 100644 3rdparty/libflac/doc/html/comparison__eddie_warner_titus.html create mode 100644 3rdparty/libflac/doc/html/comparison__fanfare_de_l_eventail_de_jeanne.html create mode 100644 3rdparty/libflac/doc/html/comparison__gloria_estefan_conga.html create mode 100644 3rdparty/libflac/doc/html/comparison__hand_in_my_pocket.html create mode 100644 3rdparty/libflac/doc/html/comparison__l_sub_raga_sivapriya.html create mode 100644 3rdparty/libflac/doc/html/comparison__laetatus_sum.html create mode 100644 3rdparty/libflac/doc/html/comparison__mummified_in_barbed_wire.html create mode 100644 3rdparty/libflac/doc/html/comparison__prokofiev_pcon3_3.html create mode 100644 3rdparty/libflac/doc/html/comparison__ravel_sq4_4.html create mode 100644 3rdparty/libflac/doc/html/comparison__scarlatti_k42.html create mode 100644 3rdparty/libflac/doc/html/comparison__tool_forty_six_and_2.html create mode 100644 3rdparty/libflac/doc/html/comparison__white_room.html create mode 100644 3rdparty/libflac/doc/html/comparison_all_cpudectime.html create mode 100644 3rdparty/libflac/doc/html/comparison_all_cpuenctime.html create mode 100644 3rdparty/libflac/doc/html/comparison_all_procdectime.html create mode 100644 3rdparty/libflac/doc/html/comparison_all_procenctime.html create mode 100644 3rdparty/libflac/doc/html/comparison_all_ratio.html create mode 100644 3rdparty/libflac/doc/html/developers.html create mode 100644 3rdparty/libflac/doc/html/documentation.html create mode 100644 3rdparty/libflac/doc/html/documentation_bugs.html create mode 100644 3rdparty/libflac/doc/html/documentation_example_code.html create mode 100644 3rdparty/libflac/doc/html/documentation_format_overview.html create mode 100644 3rdparty/libflac/doc/html/documentation_tasks.html create mode 100644 3rdparty/libflac/doc/html/documentation_tools.html create mode 100644 3rdparty/libflac/doc/html/documentation_tools_flac.html create mode 100644 3rdparty/libflac/doc/html/documentation_tools_metaflac.html create mode 100644 3rdparty/libflac/doc/html/documentation_tools_plugins.html create mode 100644 3rdparty/libflac/doc/html/download.html create mode 100644 3rdparty/libflac/doc/html/faq.html create mode 100644 3rdparty/libflac/doc/html/favicon.ico create mode 100644 3rdparty/libflac/doc/html/features.html create mode 100644 3rdparty/libflac/doc/html/flac.css create mode 100644 3rdparty/libflac/doc/html/format.html create mode 100644 3rdparty/libflac/doc/html/id.html create mode 100644 3rdparty/libflac/doc/html/images/1x1.gif create mode 100644 3rdparty/libflac/doc/html/images/Makefile.am create mode 100644 3rdparty/libflac/doc/html/images/Makefile.in create mode 100644 3rdparty/libflac/doc/html/images/cafebug.gif create mode 100644 3rdparty/libflac/doc/html/images/hw/Blackbird_Front_low3_325x87.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/MS300frontsmall_270x108.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/Makefile.am create mode 100644 3rdparty/libflac/doc/html/images/hw/Makefile.in create mode 100644 3rdparty/libflac/doc/html/images/hw/MediaBox_Frt_170x325.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/SB_Hero_Black_325x182.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/Sooloos-ControlOne_325x328.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/Z500_front_325x94.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/a2_01_325x252.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/arcus_325x135.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/bmp-1430_325x241.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/cs505_front_lrg_325x113.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/enus_3-4lft-hires_product_eva8000_325x127.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/escient_ProductLine_325x163.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/hifidelio_bl_front_Z_RGB_325x163.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/i-station-mini-dx_325x237.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/iwod-g10_325x257.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/knc_hr-2800_325x209.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/mediaready_prodmain_MRMCa_325x232.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/meizu_m6_325x206.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/musica_artwork_325x90.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/neodigits_x5000_325x124.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/onda-vx737_325x240.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/request_n_front_325x103.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/rio_karma_279x254.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/sonos_family_RGB_325x200.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/teclast-tl29_325x244.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/transporter_hero_grey_325x208.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/tvix-4000_325x204.jpg create mode 100644 3rdparty/libflac/doc/html/images/hw/vibez_nofm_combi_black_b_325x220.jpg create mode 100644 3rdparty/libflac/doc/html/images/logo100.gif create mode 100644 3rdparty/libflac/doc/html/images/logo130.gif create mode 100644 3rdparty/libflac/doc/html/index.html create mode 100644 3rdparty/libflac/doc/html/itunes.html create mode 100644 3rdparty/libflac/doc/html/license.html create mode 100644 3rdparty/libflac/doc/html/links.html create mode 100644 3rdparty/libflac/doc/html/news.html create mode 100644 3rdparty/libflac/doc/html/ogg_mapping.html create mode 100644 3rdparty/libflac/doc/html/ru/Makefile.am create mode 100644 3rdparty/libflac/doc/html/ru/Makefile.in create mode 100644 3rdparty/libflac/doc/html/ru/authors.html create mode 100644 3rdparty/libflac/doc/html/ru/comparison.html create mode 100644 3rdparty/libflac/doc/html/ru/developers.html create mode 100644 3rdparty/libflac/doc/html/ru/documentation.html create mode 100644 3rdparty/libflac/doc/html/ru/download.html create mode 100644 3rdparty/libflac/doc/html/ru/features.html create mode 100644 3rdparty/libflac/doc/html/ru/format.html create mode 100644 3rdparty/libflac/doc/html/ru/goals.html create mode 100644 3rdparty/libflac/doc/html/ru/id.html create mode 100644 3rdparty/libflac/doc/html/ru/index.html create mode 100644 3rdparty/libflac/doc/html/ru/links.html create mode 100644 3rdparty/libflac/doc/html/ru/news.html create mode 100644 3rdparty/libflac/examples/Makefile.am create mode 100644 3rdparty/libflac/examples/Makefile.in create mode 100644 3rdparty/libflac/examples/Makefile.lite create mode 100644 3rdparty/libflac/examples/README create mode 100644 3rdparty/libflac/examples/c/Makefile.am create mode 100644 3rdparty/libflac/examples/c/Makefile.in create mode 100644 3rdparty/libflac/examples/c/decode/Makefile.am create mode 100644 3rdparty/libflac/examples/c/decode/Makefile.in create mode 100644 3rdparty/libflac/examples/c/decode/file/Makefile.am create mode 100644 3rdparty/libflac/examples/c/decode/file/Makefile.in create mode 100644 3rdparty/libflac/examples/c/decode/file/Makefile.lite create mode 100644 3rdparty/libflac/examples/c/decode/file/example_c_decode_file.dsp create mode 100644 3rdparty/libflac/examples/c/decode/file/example_c_decode_file.vcproj create mode 100644 3rdparty/libflac/examples/c/decode/file/main.c create mode 100644 3rdparty/libflac/examples/c/encode/Makefile.am create mode 100644 3rdparty/libflac/examples/c/encode/Makefile.in create mode 100644 3rdparty/libflac/examples/c/encode/file/Makefile.am create mode 100644 3rdparty/libflac/examples/c/encode/file/Makefile.in create mode 100644 3rdparty/libflac/examples/c/encode/file/Makefile.lite create mode 100644 3rdparty/libflac/examples/c/encode/file/example_c_encode_file.dsp create mode 100644 3rdparty/libflac/examples/c/encode/file/example_c_encode_file.vcproj create mode 100644 3rdparty/libflac/examples/c/encode/file/main.c create mode 100644 3rdparty/libflac/examples/cpp/Makefile.am create mode 100644 3rdparty/libflac/examples/cpp/Makefile.in create mode 100644 3rdparty/libflac/examples/cpp/decode/Makefile.am create mode 100644 3rdparty/libflac/examples/cpp/decode/Makefile.in create mode 100644 3rdparty/libflac/examples/cpp/decode/file/Makefile.am create mode 100644 3rdparty/libflac/examples/cpp/decode/file/Makefile.in create mode 100644 3rdparty/libflac/examples/cpp/decode/file/Makefile.lite create mode 100644 3rdparty/libflac/examples/cpp/decode/file/example_cpp_decode_file.dsp create mode 100644 3rdparty/libflac/examples/cpp/decode/file/example_cpp_decode_file.vcproj create mode 100644 3rdparty/libflac/examples/cpp/decode/file/main.cpp create mode 100644 3rdparty/libflac/examples/cpp/encode/Makefile.am create mode 100644 3rdparty/libflac/examples/cpp/encode/Makefile.in create mode 100644 3rdparty/libflac/examples/cpp/encode/file/Makefile.am create mode 100644 3rdparty/libflac/examples/cpp/encode/file/Makefile.in create mode 100644 3rdparty/libflac/examples/cpp/encode/file/Makefile.lite create mode 100644 3rdparty/libflac/examples/cpp/encode/file/example_cpp_encode_file.dsp create mode 100644 3rdparty/libflac/examples/cpp/encode/file/example_cpp_encode_file.vcproj create mode 100644 3rdparty/libflac/examples/cpp/encode/file/main.cpp create mode 100644 3rdparty/libflac/examples/examples.dsp create mode 100644 3rdparty/libflac/include/FLAC++/Makefile.am create mode 100644 3rdparty/libflac/include/FLAC++/Makefile.in create mode 100644 3rdparty/libflac/include/FLAC++/all.h create mode 100644 3rdparty/libflac/include/FLAC++/decoder.h create mode 100644 3rdparty/libflac/include/FLAC++/encoder.h create mode 100644 3rdparty/libflac/include/FLAC++/export.h create mode 100644 3rdparty/libflac/include/FLAC++/metadata.h create mode 100644 3rdparty/libflac/include/FLAC/Makefile.am create mode 100644 3rdparty/libflac/include/FLAC/Makefile.in create mode 100644 3rdparty/libflac/include/FLAC/all.h create mode 100644 3rdparty/libflac/include/FLAC/assert.h create mode 100644 3rdparty/libflac/include/FLAC/callback.h create mode 100644 3rdparty/libflac/include/FLAC/export.h create mode 100644 3rdparty/libflac/include/FLAC/format.h create mode 100644 3rdparty/libflac/include/FLAC/metadata.h create mode 100644 3rdparty/libflac/include/FLAC/ordinals.h create mode 100644 3rdparty/libflac/include/FLAC/stream_decoder.h create mode 100644 3rdparty/libflac/include/FLAC/stream_encoder.h create mode 100644 3rdparty/libflac/include/Makefile.am create mode 100644 3rdparty/libflac/include/Makefile.in create mode 100644 3rdparty/libflac/include/share/Makefile.am create mode 100644 3rdparty/libflac/include/share/Makefile.in create mode 100644 3rdparty/libflac/include/share/alloc.h create mode 100644 3rdparty/libflac/include/share/endswap.h create mode 100644 3rdparty/libflac/include/share/getopt.h create mode 100644 3rdparty/libflac/include/share/grabbag.h create mode 100644 3rdparty/libflac/include/share/grabbag/Makefile.am create mode 100644 3rdparty/libflac/include/share/grabbag/Makefile.in create mode 100644 3rdparty/libflac/include/share/grabbag/cuesheet.h create mode 100644 3rdparty/libflac/include/share/grabbag/file.h create mode 100644 3rdparty/libflac/include/share/grabbag/picture.h create mode 100644 3rdparty/libflac/include/share/grabbag/replaygain.h create mode 100644 3rdparty/libflac/include/share/grabbag/seektable.h create mode 100644 3rdparty/libflac/include/share/replaygain_analysis.h create mode 100644 3rdparty/libflac/include/share/replaygain_synthesis.h create mode 100644 3rdparty/libflac/include/share/utf8.h create mode 100644 3rdparty/libflac/include/test_libs_common/Makefile.am create mode 100644 3rdparty/libflac/include/test_libs_common/Makefile.in create mode 100644 3rdparty/libflac/include/test_libs_common/file_utils_flac.h create mode 100644 3rdparty/libflac/include/test_libs_common/metadata_utils.h create mode 100644 3rdparty/libflac/install-sh create mode 100644 3rdparty/libflac/ltmain.sh create mode 100644 3rdparty/libflac/m4/Makefile.am create mode 100644 3rdparty/libflac/m4/Makefile.in create mode 100644 3rdparty/libflac/m4/ogg.m4 create mode 100644 3rdparty/libflac/m4/xmms.m4 create mode 100644 3rdparty/libflac/man/Makefile.am create mode 100644 3rdparty/libflac/man/Makefile.in create mode 100644 3rdparty/libflac/man/flac.1 create mode 100644 3rdparty/libflac/man/flac.sgml create mode 100644 3rdparty/libflac/man/metaflac.1 create mode 100644 3rdparty/libflac/man/metaflac.sgml create mode 100644 3rdparty/libflac/missing create mode 100644 3rdparty/libflac/mkinstalldirs create mode 100644 3rdparty/libflac/obj/Makefile.am create mode 100644 3rdparty/libflac/obj/Makefile.in create mode 100644 3rdparty/libflac/obj/debug/Makefile.am create mode 100644 3rdparty/libflac/obj/debug/Makefile.in create mode 100644 3rdparty/libflac/obj/debug/bin/Makefile.am create mode 100644 3rdparty/libflac/obj/debug/bin/Makefile.in create mode 100644 3rdparty/libflac/obj/debug/lib/Makefile.am create mode 100644 3rdparty/libflac/obj/debug/lib/Makefile.in create mode 100644 3rdparty/libflac/obj/release/Makefile.am create mode 100644 3rdparty/libflac/obj/release/Makefile.in create mode 100644 3rdparty/libflac/obj/release/bin/Makefile.am create mode 100644 3rdparty/libflac/obj/release/bin/Makefile.in create mode 100644 3rdparty/libflac/obj/release/lib/Makefile.am create mode 100644 3rdparty/libflac/obj/release/lib/Makefile.in create mode 100644 3rdparty/libflac/src/Makefile.am create mode 100644 3rdparty/libflac/src/Makefile.in create mode 100644 3rdparty/libflac/src/Makefile.lite create mode 100644 3rdparty/libflac/src/flac/Makefile.am create mode 100644 3rdparty/libflac/src/flac/Makefile.in create mode 100644 3rdparty/libflac/src/flac/Makefile.lite create mode 100644 3rdparty/libflac/src/flac/Makefile.lite.iffscan create mode 100644 3rdparty/libflac/src/flac/analyze.c create mode 100644 3rdparty/libflac/src/flac/analyze.h create mode 100644 3rdparty/libflac/src/flac/decode.c create mode 100644 3rdparty/libflac/src/flac/decode.h create mode 100644 3rdparty/libflac/src/flac/encode.c create mode 100644 3rdparty/libflac/src/flac/encode.h create mode 100644 3rdparty/libflac/src/flac/flac.dsp create mode 100644 3rdparty/libflac/src/flac/flac.vcproj create mode 100644 3rdparty/libflac/src/flac/foreign_metadata.c create mode 100644 3rdparty/libflac/src/flac/foreign_metadata.h create mode 100644 3rdparty/libflac/src/flac/iffscan.c create mode 100644 3rdparty/libflac/src/flac/iffscan.dsp create mode 100644 3rdparty/libflac/src/flac/iffscan.vcproj create mode 100644 3rdparty/libflac/src/flac/local_string_utils.c create mode 100644 3rdparty/libflac/src/flac/local_string_utils.h create mode 100644 3rdparty/libflac/src/flac/main.c create mode 100644 3rdparty/libflac/src/flac/utils.c create mode 100644 3rdparty/libflac/src/flac/utils.h create mode 100644 3rdparty/libflac/src/flac/vorbiscomment.c create mode 100644 3rdparty/libflac/src/flac/vorbiscomment.h create mode 100644 3rdparty/libflac/src/libFLAC++/Makefile.am create mode 100644 3rdparty/libflac/src/libFLAC++/Makefile.in create mode 100644 3rdparty/libflac/src/libFLAC++/Makefile.lite create mode 100644 3rdparty/libflac/src/libFLAC++/flac++.pc.in create mode 100644 3rdparty/libflac/src/libFLAC++/libFLAC++.m4 create mode 100644 3rdparty/libflac/src/libFLAC++/libFLAC++_dynamic.dsp create mode 100644 3rdparty/libflac/src/libFLAC++/libFLAC++_dynamic.vcproj create mode 100644 3rdparty/libflac/src/libFLAC++/libFLAC++_static.dsp create mode 100644 3rdparty/libflac/src/libFLAC++/libFLAC++_static.vcproj create mode 100644 3rdparty/libflac/src/libFLAC++/metadata.cpp create mode 100644 3rdparty/libflac/src/libFLAC++/stream_decoder.cpp create mode 100644 3rdparty/libflac/src/libFLAC++/stream_encoder.cpp create mode 100644 3rdparty/libflac/src/libFLAC/Makefile.am create mode 100644 3rdparty/libflac/src/libFLAC/Makefile.in create mode 100644 3rdparty/libflac/src/libFLAC/Makefile.lite create mode 100644 3rdparty/libflac/src/libFLAC/bitmath.c create mode 100644 3rdparty/libflac/src/libFLAC/bitreader.c create mode 100644 3rdparty/libflac/src/libFLAC/bitwriter.c create mode 100644 3rdparty/libflac/src/libFLAC/cpu.c create mode 100644 3rdparty/libflac/src/libFLAC/crc.c create mode 100644 3rdparty/libflac/src/libFLAC/fixed.c create mode 100644 3rdparty/libflac/src/libFLAC/flac.pc.in create mode 100644 3rdparty/libflac/src/libFLAC/float.c create mode 100644 3rdparty/libflac/src/libFLAC/format.c create mode 100644 3rdparty/libflac/src/libFLAC/ia32/Makefile.am create mode 100644 3rdparty/libflac/src/libFLAC/ia32/Makefile.in create mode 100644 3rdparty/libflac/src/libFLAC/ia32/bitreader_asm.nasm create mode 100644 3rdparty/libflac/src/libFLAC/ia32/cpu_asm.nasm create mode 100644 3rdparty/libflac/src/libFLAC/ia32/fixed_asm.nasm create mode 100644 3rdparty/libflac/src/libFLAC/ia32/lpc_asm.nasm create mode 100644 3rdparty/libflac/src/libFLAC/ia32/nasm.h create mode 100644 3rdparty/libflac/src/libFLAC/ia32/stream_encoder_asm.nasm create mode 100644 3rdparty/libflac/src/libFLAC/include/Makefile.am create mode 100644 3rdparty/libflac/src/libFLAC/include/Makefile.in create mode 100644 3rdparty/libflac/src/libFLAC/include/config.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/Makefile.am create mode 100644 3rdparty/libflac/src/libFLAC/include/private/Makefile.in create mode 100644 3rdparty/libflac/src/libFLAC/include/private/all.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/bitmath.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/bitreader.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/bitwriter.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/cpu.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/crc.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/fixed.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/float.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/format.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/lpc.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/md5.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/memory.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/metadata.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/ogg_decoder_aspect.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/ogg_encoder_aspect.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/ogg_helper.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/ogg_mapping.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/stream_encoder_framing.h create mode 100644 3rdparty/libflac/src/libFLAC/include/private/window.h create mode 100644 3rdparty/libflac/src/libFLAC/include/protected/Makefile.am create mode 100644 3rdparty/libflac/src/libFLAC/include/protected/Makefile.in create mode 100644 3rdparty/libflac/src/libFLAC/include/protected/all.h create mode 100644 3rdparty/libflac/src/libFLAC/include/protected/stream_decoder.h create mode 100644 3rdparty/libflac/src/libFLAC/include/protected/stream_encoder.h create mode 100644 3rdparty/libflac/src/libFLAC/libFLAC.m4 create mode 100644 3rdparty/libflac/src/libFLAC/libFLAC_dynamic.dsp create mode 100644 3rdparty/libflac/src/libFLAC/libFLAC_dynamic.vcproj create mode 100644 3rdparty/libflac/src/libFLAC/libFLAC_static.dsp create mode 100644 3rdparty/libflac/src/libFLAC/libFLAC_static.vcproj create mode 100644 3rdparty/libflac/src/libFLAC/lpc.c create mode 100644 3rdparty/libflac/src/libFLAC/md5.c create mode 100644 3rdparty/libflac/src/libFLAC/memory.c create mode 100644 3rdparty/libflac/src/libFLAC/metadata_iterators.c create mode 100644 3rdparty/libflac/src/libFLAC/metadata_object.c create mode 100644 3rdparty/libflac/src/libFLAC/ogg_decoder_aspect.c create mode 100644 3rdparty/libflac/src/libFLAC/ogg_encoder_aspect.c create mode 100644 3rdparty/libflac/src/libFLAC/ogg_helper.c create mode 100644 3rdparty/libflac/src/libFLAC/ogg_mapping.c create mode 100644 3rdparty/libflac/src/libFLAC/ppc/Makefile.am create mode 100644 3rdparty/libflac/src/libFLAC/ppc/Makefile.in create mode 100644 3rdparty/libflac/src/libFLAC/ppc/as/Makefile.am create mode 100644 3rdparty/libflac/src/libFLAC/ppc/as/Makefile.in create mode 100644 3rdparty/libflac/src/libFLAC/ppc/as/lpc_asm.s create mode 100644 3rdparty/libflac/src/libFLAC/ppc/gas/Makefile.am create mode 100644 3rdparty/libflac/src/libFLAC/ppc/gas/Makefile.in create mode 100644 3rdparty/libflac/src/libFLAC/ppc/gas/lpc_asm.s create mode 100644 3rdparty/libflac/src/libFLAC/stream_decoder.c create mode 100644 3rdparty/libflac/src/libFLAC/stream_encoder.c create mode 100644 3rdparty/libflac/src/libFLAC/stream_encoder_framing.c create mode 100644 3rdparty/libflac/src/libFLAC/window.c create mode 100644 3rdparty/libflac/src/metaflac/Makefile.am create mode 100644 3rdparty/libflac/src/metaflac/Makefile.in create mode 100644 3rdparty/libflac/src/metaflac/Makefile.lite create mode 100644 3rdparty/libflac/src/metaflac/main.c create mode 100644 3rdparty/libflac/src/metaflac/metaflac.dsp create mode 100644 3rdparty/libflac/src/metaflac/metaflac.vcproj create mode 100644 3rdparty/libflac/src/metaflac/operations.c create mode 100644 3rdparty/libflac/src/metaflac/operations.h create mode 100644 3rdparty/libflac/src/metaflac/operations_shorthand.h create mode 100644 3rdparty/libflac/src/metaflac/operations_shorthand_cuesheet.c create mode 100644 3rdparty/libflac/src/metaflac/operations_shorthand_picture.c create mode 100644 3rdparty/libflac/src/metaflac/operations_shorthand_seektable.c create mode 100644 3rdparty/libflac/src/metaflac/operations_shorthand_streaminfo.c create mode 100644 3rdparty/libflac/src/metaflac/operations_shorthand_vorbiscomment.c create mode 100644 3rdparty/libflac/src/metaflac/options.c create mode 100644 3rdparty/libflac/src/metaflac/options.h create mode 100644 3rdparty/libflac/src/metaflac/usage.c create mode 100644 3rdparty/libflac/src/metaflac/usage.h create mode 100644 3rdparty/libflac/src/metaflac/utils.c create mode 100644 3rdparty/libflac/src/metaflac/utils.h create mode 100644 3rdparty/libflac/src/monkeys_audio_utilities/Makefile.am create mode 100644 3rdparty/libflac/src/monkeys_audio_utilities/Makefile.in create mode 100644 3rdparty/libflac/src/monkeys_audio_utilities/flac_mac/Makefile.am create mode 100644 3rdparty/libflac/src/monkeys_audio_utilities/flac_mac/Makefile.in create mode 100644 3rdparty/libflac/src/monkeys_audio_utilities/flac_mac/flac_mac.dsp create mode 100644 3rdparty/libflac/src/monkeys_audio_utilities/flac_mac/flac_mac.vcproj create mode 100644 3rdparty/libflac/src/monkeys_audio_utilities/flac_mac/main.c create mode 100644 3rdparty/libflac/src/monkeys_audio_utilities/flac_ren/Makefile.am create mode 100644 3rdparty/libflac/src/monkeys_audio_utilities/flac_ren/Makefile.in create mode 100644 3rdparty/libflac/src/monkeys_audio_utilities/flac_ren/flac_ren.dsp create mode 100644 3rdparty/libflac/src/monkeys_audio_utilities/flac_ren/flac_ren.vcproj create mode 100644 3rdparty/libflac/src/monkeys_audio_utilities/flac_ren/main.c create mode 100644 3rdparty/libflac/src/plugin_common/Makefile.am create mode 100644 3rdparty/libflac/src/plugin_common/Makefile.in create mode 100644 3rdparty/libflac/src/plugin_common/Makefile.lite create mode 100644 3rdparty/libflac/src/plugin_common/README create mode 100644 3rdparty/libflac/src/plugin_common/all.h create mode 100644 3rdparty/libflac/src/plugin_common/charset.c create mode 100644 3rdparty/libflac/src/plugin_common/charset.h create mode 100644 3rdparty/libflac/src/plugin_common/defs.h create mode 100644 3rdparty/libflac/src/plugin_common/dither.c create mode 100644 3rdparty/libflac/src/plugin_common/dither.h create mode 100644 3rdparty/libflac/src/plugin_common/plugin_common_static.dsp create mode 100644 3rdparty/libflac/src/plugin_common/plugin_common_static.vcproj create mode 100644 3rdparty/libflac/src/plugin_common/replaygain.c create mode 100644 3rdparty/libflac/src/plugin_common/replaygain.h create mode 100644 3rdparty/libflac/src/plugin_common/tags.c create mode 100644 3rdparty/libflac/src/plugin_common/tags.h create mode 100644 3rdparty/libflac/src/plugin_winamp2/Makefile.am create mode 100644 3rdparty/libflac/src/plugin_winamp2/Makefile.in create mode 100644 3rdparty/libflac/src/plugin_winamp2/configure.c create mode 100644 3rdparty/libflac/src/plugin_winamp2/configure.h create mode 100644 3rdparty/libflac/src/plugin_winamp2/in_flac.c create mode 100644 3rdparty/libflac/src/plugin_winamp2/in_flac.dsp create mode 100644 3rdparty/libflac/src/plugin_winamp2/in_flac.vcproj create mode 100644 3rdparty/libflac/src/plugin_winamp2/include/Makefile.am create mode 100644 3rdparty/libflac/src/plugin_winamp2/include/Makefile.in create mode 100644 3rdparty/libflac/src/plugin_winamp2/include/winamp2/Makefile.am create mode 100644 3rdparty/libflac/src/plugin_winamp2/include/winamp2/Makefile.in create mode 100644 3rdparty/libflac/src/plugin_winamp2/include/winamp2/in2.h create mode 100644 3rdparty/libflac/src/plugin_winamp2/include/winamp2/out.h create mode 100644 3rdparty/libflac/src/plugin_winamp2/infobox.c create mode 100644 3rdparty/libflac/src/plugin_winamp2/infobox.h create mode 100644 3rdparty/libflac/src/plugin_winamp2/playback.c create mode 100644 3rdparty/libflac/src/plugin_winamp2/playback.h create mode 100644 3rdparty/libflac/src/plugin_winamp2/resource.h create mode 100644 3rdparty/libflac/src/plugin_winamp2/resource.rc create mode 100644 3rdparty/libflac/src/plugin_winamp2/tagz.cpp create mode 100644 3rdparty/libflac/src/plugin_winamp2/tagz.h create mode 100644 3rdparty/libflac/src/plugin_xmms/Makefile.am create mode 100644 3rdparty/libflac/src/plugin_xmms/Makefile.in create mode 100644 3rdparty/libflac/src/plugin_xmms/Makefile.lite create mode 100644 3rdparty/libflac/src/plugin_xmms/charset.c create mode 100644 3rdparty/libflac/src/plugin_xmms/charset.h create mode 100644 3rdparty/libflac/src/plugin_xmms/configure.c create mode 100644 3rdparty/libflac/src/plugin_xmms/configure.h create mode 100644 3rdparty/libflac/src/plugin_xmms/fileinfo.c create mode 100644 3rdparty/libflac/src/plugin_xmms/http.c create mode 100644 3rdparty/libflac/src/plugin_xmms/http.h create mode 100644 3rdparty/libflac/src/plugin_xmms/locale_hack.h create mode 100644 3rdparty/libflac/src/plugin_xmms/plugin.c create mode 100644 3rdparty/libflac/src/plugin_xmms/plugin.h create mode 100644 3rdparty/libflac/src/plugin_xmms/tag.c create mode 100644 3rdparty/libflac/src/plugin_xmms/tag.h create mode 100644 3rdparty/libflac/src/share/Makefile.am create mode 100644 3rdparty/libflac/src/share/Makefile.in create mode 100644 3rdparty/libflac/src/share/Makefile.lite create mode 100644 3rdparty/libflac/src/share/README create mode 100644 3rdparty/libflac/src/share/getopt/Makefile.am create mode 100644 3rdparty/libflac/src/share/getopt/Makefile.in create mode 100644 3rdparty/libflac/src/share/getopt/Makefile.lite create mode 100644 3rdparty/libflac/src/share/getopt/getopt.c create mode 100644 3rdparty/libflac/src/share/getopt/getopt1.c create mode 100644 3rdparty/libflac/src/share/getopt/getopt_static.dsp create mode 100644 3rdparty/libflac/src/share/getopt/getopt_static.vcproj create mode 100644 3rdparty/libflac/src/share/grabbag/Makefile.am create mode 100644 3rdparty/libflac/src/share/grabbag/Makefile.in create mode 100644 3rdparty/libflac/src/share/grabbag/Makefile.lite create mode 100644 3rdparty/libflac/src/share/grabbag/cuesheet.c create mode 100644 3rdparty/libflac/src/share/grabbag/file.c create mode 100644 3rdparty/libflac/src/share/grabbag/grabbag_static.dsp create mode 100644 3rdparty/libflac/src/share/grabbag/grabbag_static.vcproj create mode 100644 3rdparty/libflac/src/share/grabbag/picture.c create mode 100644 3rdparty/libflac/src/share/grabbag/replaygain.c create mode 100644 3rdparty/libflac/src/share/grabbag/seektable.c create mode 100644 3rdparty/libflac/src/share/replaygain_analysis/Makefile.am create mode 100644 3rdparty/libflac/src/share/replaygain_analysis/Makefile.in create mode 100644 3rdparty/libflac/src/share/replaygain_analysis/Makefile.lite create mode 100644 3rdparty/libflac/src/share/replaygain_analysis/replaygain_analysis.c create mode 100644 3rdparty/libflac/src/share/replaygain_analysis/replaygain_analysis_static.dsp create mode 100644 3rdparty/libflac/src/share/replaygain_analysis/replaygain_analysis_static.vcproj create mode 100644 3rdparty/libflac/src/share/replaygain_synthesis/Makefile.am create mode 100644 3rdparty/libflac/src/share/replaygain_synthesis/Makefile.in create mode 100644 3rdparty/libflac/src/share/replaygain_synthesis/Makefile.lite create mode 100644 3rdparty/libflac/src/share/replaygain_synthesis/include/Makefile.am create mode 100644 3rdparty/libflac/src/share/replaygain_synthesis/include/Makefile.in create mode 100644 3rdparty/libflac/src/share/replaygain_synthesis/include/private/Makefile.am create mode 100644 3rdparty/libflac/src/share/replaygain_synthesis/include/private/Makefile.in create mode 100644 3rdparty/libflac/src/share/replaygain_synthesis/include/private/fast_float_math_hack.h create mode 100644 3rdparty/libflac/src/share/replaygain_synthesis/replaygain_synthesis.c create mode 100644 3rdparty/libflac/src/share/replaygain_synthesis/replaygain_synthesis_static.dsp create mode 100644 3rdparty/libflac/src/share/replaygain_synthesis/replaygain_synthesis_static.vcproj create mode 100644 3rdparty/libflac/src/share/utf8/Makefile.am create mode 100644 3rdparty/libflac/src/share/utf8/Makefile.in create mode 100644 3rdparty/libflac/src/share/utf8/Makefile.lite create mode 100644 3rdparty/libflac/src/share/utf8/charmaps.h create mode 100644 3rdparty/libflac/src/share/utf8/charset.c create mode 100644 3rdparty/libflac/src/share/utf8/charset.h create mode 100644 3rdparty/libflac/src/share/utf8/charset_test.c create mode 100644 3rdparty/libflac/src/share/utf8/charsetmap.h create mode 100644 3rdparty/libflac/src/share/utf8/iconvert.c create mode 100644 3rdparty/libflac/src/share/utf8/iconvert.h create mode 100644 3rdparty/libflac/src/share/utf8/makemap.c create mode 100644 3rdparty/libflac/src/share/utf8/utf8.c create mode 100644 3rdparty/libflac/src/share/utf8/utf8_static.dsp create mode 100644 3rdparty/libflac/src/share/utf8/utf8_static.vcproj create mode 100644 3rdparty/libflac/src/test_grabbag/Makefile.am create mode 100644 3rdparty/libflac/src/test_grabbag/Makefile.in create mode 100644 3rdparty/libflac/src/test_grabbag/Makefile.lite create mode 100644 3rdparty/libflac/src/test_grabbag/cuesheet/Makefile.am create mode 100644 3rdparty/libflac/src/test_grabbag/cuesheet/Makefile.in create mode 100644 3rdparty/libflac/src/test_grabbag/cuesheet/Makefile.lite create mode 100644 3rdparty/libflac/src/test_grabbag/cuesheet/main.c create mode 100644 3rdparty/libflac/src/test_grabbag/cuesheet/test_cuesheet.dsp create mode 100644 3rdparty/libflac/src/test_grabbag/cuesheet/test_cuesheet.vcproj create mode 100644 3rdparty/libflac/src/test_grabbag/picture/Makefile.am create mode 100644 3rdparty/libflac/src/test_grabbag/picture/Makefile.in create mode 100644 3rdparty/libflac/src/test_grabbag/picture/Makefile.lite create mode 100644 3rdparty/libflac/src/test_grabbag/picture/main.c create mode 100644 3rdparty/libflac/src/test_grabbag/picture/test_picture.dsp create mode 100644 3rdparty/libflac/src/test_grabbag/picture/test_picture.vcproj create mode 100644 3rdparty/libflac/src/test_libFLAC++/Makefile.am create mode 100644 3rdparty/libflac/src/test_libFLAC++/Makefile.in create mode 100644 3rdparty/libflac/src/test_libFLAC++/Makefile.lite create mode 100644 3rdparty/libflac/src/test_libFLAC++/decoders.cpp create mode 100644 3rdparty/libflac/src/test_libFLAC++/decoders.h create mode 100644 3rdparty/libflac/src/test_libFLAC++/encoders.cpp create mode 100644 3rdparty/libflac/src/test_libFLAC++/encoders.h create mode 100644 3rdparty/libflac/src/test_libFLAC++/main.cpp create mode 100644 3rdparty/libflac/src/test_libFLAC++/metadata.cpp create mode 100644 3rdparty/libflac/src/test_libFLAC++/metadata.h create mode 100644 3rdparty/libflac/src/test_libFLAC++/metadata_manip.cpp create mode 100644 3rdparty/libflac/src/test_libFLAC++/metadata_object.cpp create mode 100644 3rdparty/libflac/src/test_libFLAC++/test_libFLAC++.dsp create mode 100644 3rdparty/libflac/src/test_libFLAC++/test_libFLAC++.vcproj create mode 100644 3rdparty/libflac/src/test_libFLAC/Makefile.am create mode 100644 3rdparty/libflac/src/test_libFLAC/Makefile.in create mode 100644 3rdparty/libflac/src/test_libFLAC/Makefile.lite create mode 100644 3rdparty/libflac/src/test_libFLAC/bitwriter.c create mode 100644 3rdparty/libflac/src/test_libFLAC/bitwriter.h create mode 100644 3rdparty/libflac/src/test_libFLAC/decoders.c create mode 100644 3rdparty/libflac/src/test_libFLAC/decoders.h create mode 100644 3rdparty/libflac/src/test_libFLAC/encoders.c create mode 100644 3rdparty/libflac/src/test_libFLAC/encoders.h create mode 100644 3rdparty/libflac/src/test_libFLAC/format.c create mode 100644 3rdparty/libflac/src/test_libFLAC/format.h create mode 100644 3rdparty/libflac/src/test_libFLAC/main.c create mode 100644 3rdparty/libflac/src/test_libFLAC/metadata.c create mode 100644 3rdparty/libflac/src/test_libFLAC/metadata.h create mode 100644 3rdparty/libflac/src/test_libFLAC/metadata_manip.c create mode 100644 3rdparty/libflac/src/test_libFLAC/metadata_object.c create mode 100644 3rdparty/libflac/src/test_libFLAC/test_libFLAC.dsp create mode 100644 3rdparty/libflac/src/test_libFLAC/test_libFLAC.vcproj create mode 100644 3rdparty/libflac/src/test_libs_common/Makefile.am create mode 100644 3rdparty/libflac/src/test_libs_common/Makefile.in create mode 100644 3rdparty/libflac/src/test_libs_common/Makefile.lite create mode 100644 3rdparty/libflac/src/test_libs_common/README create mode 100644 3rdparty/libflac/src/test_libs_common/file_utils_flac.c create mode 100644 3rdparty/libflac/src/test_libs_common/metadata_utils.c create mode 100644 3rdparty/libflac/src/test_libs_common/test_libs_common_static.dsp create mode 100644 3rdparty/libflac/src/test_libs_common/test_libs_common_static.vcproj create mode 100644 3rdparty/libflac/src/test_seeking/Makefile.am create mode 100644 3rdparty/libflac/src/test_seeking/Makefile.in create mode 100644 3rdparty/libflac/src/test_seeking/Makefile.lite create mode 100644 3rdparty/libflac/src/test_seeking/main.c create mode 100644 3rdparty/libflac/src/test_seeking/test_seeking.dsp create mode 100644 3rdparty/libflac/src/test_seeking/test_seeking.vcproj create mode 100644 3rdparty/libflac/src/test_streams/Makefile.am create mode 100644 3rdparty/libflac/src/test_streams/Makefile.in create mode 100644 3rdparty/libflac/src/test_streams/Makefile.lite create mode 100644 3rdparty/libflac/src/test_streams/main.c create mode 100644 3rdparty/libflac/src/test_streams/test_streams.dsp create mode 100644 3rdparty/libflac/src/test_streams/test_streams.vcproj create mode 100644 3rdparty/libflac/strip_non_asm_libtool_args.sh create mode 100644 3rdparty/libflac/test/Makefile.am create mode 100644 3rdparty/libflac/test/Makefile.in create mode 100644 3rdparty/libflac/test/Makefile.lite create mode 100644 3rdparty/libflac/test/cuesheet.ok create mode 100644 3rdparty/libflac/test/cuesheets/Makefile.am create mode 100644 3rdparty/libflac/test/cuesheets/Makefile.in create mode 100644 3rdparty/libflac/test/cuesheets/bad.000.CATALOG_multiple.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.001.CATALOG_missing_number.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.002.CATALOG_number_too_long.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.003.CATALOG_not_13_digits.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.030.FLAGS_multiple.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.031.FLAGS_wrong_place_1.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.032.FLAGS_wrong_place_2.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.060.INDEX_wrong_place.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.061.INDEX_missing_number.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.062.INDEX_invalid_number_1.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.063.first_INDEX_not_0_or_1.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.064.INDEX_num_non_sequential.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.065.INDEX_num_out_of_range.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.066.INDEX_missing_offset.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.067.INDEX_illegal_offset.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.068.INDEX_cdda_illegal_offset.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.069.nonzero_first_INDEX.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.070.INDEX_offset_not_ascending_1.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.071.INDEX_offset_not_ascending_2.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.110.ISRC_multiple.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.111.ISRC_wrong_place_1.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.112.ISRC_wrong_place_2.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.113.ISRC_missing_number.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.114.ISRC_invalid_number.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.130.TRACK_missing_INDEX_01_1.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.131.TRACK_missing_INDEX_01_2.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.132.TRACK_missing_INDEX_01_3.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.133.TRACK_missing_INDEX_01_4.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.134.TRACK_missing_number.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.135.TRACK_invalid_number_1.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.136.TRACK_invalid_number_2.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.137.TRACK_cdda_out_of_range.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.138.TRACK_num_non_sequential.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.139.TRACK_missing_type.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.140.no_TRACKs.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.200.FLAC_leadin_missing_offset.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.201.FLAC_leadin_illegal_offset.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.202.FLAC_leadin_cdda_illegal_offset.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.230.FLAC_leadout_multiple.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.231.FLAC_leadout_missing_track.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.232.FLAC_leadout_illegal_track.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.233.FLAC_leadout_missing_offset.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.234.FLAC_leadout_illegal_offset.cue create mode 100644 3rdparty/libflac/test/cuesheets/bad.235.FLAC_leadout_offset_not_211680000.cue create mode 100644 3rdparty/libflac/test/cuesheets/good.000.cue create mode 100644 3rdparty/libflac/test/cuesheets/good.001.cue create mode 100644 3rdparty/libflac/test/cuesheets/good.002.dos_format.cue create mode 100644 3rdparty/libflac/test/cuesheets/good.003.missing_final_newline.cue create mode 100644 3rdparty/libflac/test/cuesheets/good.004.dos_format.missing_final_newline.cue create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/Makefile.am create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/Makefile.in create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case00a-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case01a-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case01b-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case01c-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case01d-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case01e-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case02a-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case02b-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case02c-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case03a-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case03b-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case03c-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case04a-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case04b-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case04c-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case04d-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/case04e-expect.meta create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/input-SCPAP.flac create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/input-SCVA.flac create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/input-SCVAUP.flac create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/input-SCVPAP.flac create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/input-SVAUP.flac create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/input-VA.flac create mode 100644 3rdparty/libflac/test/flac-to-flac-metadata-test-files/input0.cue create mode 100644 3rdparty/libflac/test/metaflac-test-files/Makefile.am create mode 100644 3rdparty/libflac/test/metaflac-test-files/Makefile.in create mode 100644 3rdparty/libflac/test/metaflac-test-files/case00-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case01-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case02-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case03-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case04-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case05-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case06-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case07-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case08-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case09-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case10-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case11-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case12-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case13-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case14-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case15-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case16-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case17-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case18-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case19-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case20-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case21-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case22-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case23-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case24-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case25-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case26-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case27-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case28-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case29-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case30-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case31-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case32-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case33-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case34-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case35-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case36-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case37-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case38-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case39-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case40-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case41-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case42-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case43-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case44-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case45-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case46-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case47-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case48-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case49-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case50-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case51-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case52-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case53-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case54-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case55-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case56-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case57-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case58-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case59-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case60-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case61-expect.meta create mode 100644 3rdparty/libflac/test/metaflac-test-files/case62-expect.meta create mode 100644 3rdparty/libflac/test/metaflac.flac.in create mode 100644 3rdparty/libflac/test/metaflac.flac.ok create mode 100644 3rdparty/libflac/test/picture.ok create mode 100644 3rdparty/libflac/test/pictures/0.gif create mode 100644 3rdparty/libflac/test/pictures/0.jpg create mode 100644 3rdparty/libflac/test/pictures/0.png create mode 100644 3rdparty/libflac/test/pictures/1.gif create mode 100644 3rdparty/libflac/test/pictures/1.png create mode 100644 3rdparty/libflac/test/pictures/2.gif create mode 100644 3rdparty/libflac/test/pictures/2.png create mode 100644 3rdparty/libflac/test/pictures/3.png create mode 100644 3rdparty/libflac/test/pictures/4.jpg create mode 100644 3rdparty/libflac/test/pictures/4.png create mode 100644 3rdparty/libflac/test/pictures/5.png create mode 100644 3rdparty/libflac/test/pictures/6.png create mode 100644 3rdparty/libflac/test/pictures/7.png create mode 100644 3rdparty/libflac/test/pictures/8.png create mode 100644 3rdparty/libflac/test/pictures/Makefile.am create mode 100644 3rdparty/libflac/test/pictures/Makefile.in create mode 100644 3rdparty/libflac/test/test_bins.sh create mode 100644 3rdparty/libflac/test/test_flac.sh create mode 100644 3rdparty/libflac/test/test_grabbag.sh create mode 100644 3rdparty/libflac/test/test_libFLAC++.sh create mode 100644 3rdparty/libflac/test/test_libFLAC.sh create mode 100644 3rdparty/libflac/test/test_metaflac.sh create mode 100644 3rdparty/libflac/test/test_seeking.sh create mode 100644 3rdparty/libflac/test/test_streams.sh create mode 100644 3rdparty/lzma/Asm/arm/7zCrcOpt.asm create mode 100644 3rdparty/lzma/Asm/x86/7zAsm.asm create mode 100644 3rdparty/lzma/Asm/x86/7zCrcOpt.asm create mode 100644 3rdparty/lzma/Asm/x86/AesOpt.asm create mode 100644 3rdparty/lzma/Asm/x86/XzCrc64Opt.asm create mode 100644 3rdparty/lzma/C/7z.h create mode 100644 3rdparty/lzma/C/7zAlloc.c create mode 100644 3rdparty/lzma/C/7zAlloc.h create mode 100644 3rdparty/lzma/C/7zArcIn.c create mode 100644 3rdparty/lzma/C/7zBuf.c create mode 100644 3rdparty/lzma/C/7zBuf.h create mode 100644 3rdparty/lzma/C/7zBuf2.c create mode 100644 3rdparty/lzma/C/7zCrc.c create mode 100644 3rdparty/lzma/C/7zCrc.h create mode 100644 3rdparty/lzma/C/7zCrcOpt.c create mode 100644 3rdparty/lzma/C/7zDec.c create mode 100644 3rdparty/lzma/C/7zFile.c create mode 100644 3rdparty/lzma/C/7zFile.h create mode 100644 3rdparty/lzma/C/7zStream.c create mode 100644 3rdparty/lzma/C/7zTypes.h create mode 100644 3rdparty/lzma/C/7zVersion.h create mode 100644 3rdparty/lzma/C/7zVersion.rc create mode 100644 3rdparty/lzma/C/Aes.c create mode 100644 3rdparty/lzma/C/Aes.h create mode 100644 3rdparty/lzma/C/AesOpt.c create mode 100644 3rdparty/lzma/C/Alloc.c create mode 100644 3rdparty/lzma/C/Alloc.h create mode 100644 3rdparty/lzma/C/Bcj2.c create mode 100644 3rdparty/lzma/C/Bcj2.h create mode 100644 3rdparty/lzma/C/Bcj2Enc.c create mode 100644 3rdparty/lzma/C/Bra.c create mode 100644 3rdparty/lzma/C/Bra.h create mode 100644 3rdparty/lzma/C/Bra86.c create mode 100644 3rdparty/lzma/C/BraIA64.c create mode 100644 3rdparty/lzma/C/Compiler.h create mode 100644 3rdparty/lzma/C/CpuArch.c create mode 100644 3rdparty/lzma/C/CpuArch.h create mode 100644 3rdparty/lzma/C/Delta.c create mode 100644 3rdparty/lzma/C/Delta.h create mode 100644 3rdparty/lzma/C/DllSecur.c create mode 100644 3rdparty/lzma/C/DllSecur.h create mode 100644 3rdparty/lzma/C/LzFind.c create mode 100644 3rdparty/lzma/C/LzFind.h create mode 100644 3rdparty/lzma/C/LzFindMt.c create mode 100644 3rdparty/lzma/C/LzFindMt.h create mode 100644 3rdparty/lzma/C/LzHash.h create mode 100644 3rdparty/lzma/C/Lzma2Dec.c create mode 100644 3rdparty/lzma/C/Lzma2Dec.h create mode 100644 3rdparty/lzma/C/Lzma2Enc.c create mode 100644 3rdparty/lzma/C/Lzma2Enc.h create mode 100644 3rdparty/lzma/C/Lzma86.h create mode 100644 3rdparty/lzma/C/Lzma86Dec.c create mode 100644 3rdparty/lzma/C/Lzma86Enc.c create mode 100644 3rdparty/lzma/C/LzmaDec.c create mode 100644 3rdparty/lzma/C/LzmaDec.h create mode 100644 3rdparty/lzma/C/LzmaEnc.c create mode 100644 3rdparty/lzma/C/LzmaEnc.h create mode 100644 3rdparty/lzma/C/LzmaLib.c create mode 100644 3rdparty/lzma/C/LzmaLib.h create mode 100644 3rdparty/lzma/C/MtCoder.c create mode 100644 3rdparty/lzma/C/MtCoder.h create mode 100644 3rdparty/lzma/C/Ppmd.h create mode 100644 3rdparty/lzma/C/Ppmd7.c create mode 100644 3rdparty/lzma/C/Ppmd7.h create mode 100644 3rdparty/lzma/C/Ppmd7Dec.c create mode 100644 3rdparty/lzma/C/Ppmd7Enc.c create mode 100644 3rdparty/lzma/C/Precomp.h create mode 100644 3rdparty/lzma/C/RotateDefs.h create mode 100644 3rdparty/lzma/C/Sha256.c create mode 100644 3rdparty/lzma/C/Sha256.h create mode 100644 3rdparty/lzma/C/Sort.c create mode 100644 3rdparty/lzma/C/Sort.h create mode 100644 3rdparty/lzma/C/Threads.c create mode 100644 3rdparty/lzma/C/Threads.h create mode 100644 3rdparty/lzma/C/Util/7z/7z.dsp create mode 100644 3rdparty/lzma/C/Util/7z/7z.dsw create mode 100644 3rdparty/lzma/C/Util/7z/7zMain.c create mode 100644 3rdparty/lzma/C/Util/7z/Precomp.c create mode 100644 3rdparty/lzma/C/Util/7z/Precomp.h create mode 100644 3rdparty/lzma/C/Util/7z/makefile create mode 100644 3rdparty/lzma/C/Util/7z/makefile.gcc create mode 100644 3rdparty/lzma/C/Util/Lzma/LzmaUtil.c create mode 100644 3rdparty/lzma/C/Util/Lzma/LzmaUtil.dsp create mode 100644 3rdparty/lzma/C/Util/Lzma/LzmaUtil.dsw create mode 100644 3rdparty/lzma/C/Util/Lzma/makefile create mode 100644 3rdparty/lzma/C/Util/Lzma/makefile.gcc create mode 100644 3rdparty/lzma/C/Util/LzmaLib/LzmaLib.def create mode 100644 3rdparty/lzma/C/Util/LzmaLib/LzmaLib.dsp create mode 100644 3rdparty/lzma/C/Util/LzmaLib/LzmaLib.dsw create mode 100644 3rdparty/lzma/C/Util/LzmaLib/LzmaLibExports.c create mode 100644 3rdparty/lzma/C/Util/LzmaLib/makefile create mode 100644 3rdparty/lzma/C/Util/LzmaLib/resource.rc create mode 100644 3rdparty/lzma/C/Util/SfxSetup/Precomp.c create mode 100644 3rdparty/lzma/C/Util/SfxSetup/Precomp.h create mode 100644 3rdparty/lzma/C/Util/SfxSetup/SfxSetup.c create mode 100644 3rdparty/lzma/C/Util/SfxSetup/SfxSetup.dsp create mode 100644 3rdparty/lzma/C/Util/SfxSetup/SfxSetup.dsw create mode 100644 3rdparty/lzma/C/Util/SfxSetup/makefile create mode 100644 3rdparty/lzma/C/Util/SfxSetup/makefile_con create mode 100644 3rdparty/lzma/C/Util/SfxSetup/resource.rc create mode 100644 3rdparty/lzma/C/Util/SfxSetup/setup.ico create mode 100644 3rdparty/lzma/C/Xz.c create mode 100644 3rdparty/lzma/C/Xz.h create mode 100644 3rdparty/lzma/C/XzCrc64.c create mode 100644 3rdparty/lzma/C/XzCrc64.h create mode 100644 3rdparty/lzma/C/XzCrc64Opt.c create mode 100644 3rdparty/lzma/C/XzDec.c create mode 100644 3rdparty/lzma/C/XzEnc.c create mode 100644 3rdparty/lzma/C/XzEnc.h create mode 100644 3rdparty/lzma/C/XzIn.c create mode 100644 3rdparty/lzma/CPP/7zip/7zip.mak create mode 100644 3rdparty/lzma/CPP/7zip/Aes.mak create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zCompressionMode.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zCompressionMode.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zDecode.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zDecode.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zEncode.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zEncode.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zExtract.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zFolderInStream.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zHandler.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zHandler.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zHandlerOut.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zHeader.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zHeader.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zIn.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zIn.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zItem.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zOut.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zOut.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zProperties.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zProperties.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zRegister.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zSpecStream.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zSpecStream.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zUpdate.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/7zUpdate.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/StdAfx.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/7z/StdAfx.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Archive.def create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Archive2.def create mode 100644 3rdparty/lzma/CPP/7zip/Archive/ArchiveExports.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/CoderMixer2.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/CoderMixer2.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/DummyOutStream.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/DummyOutStream.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/HandlerOut.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/HandlerOut.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/ItemNameUtils.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/ItemNameUtils.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/MultiStream.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/MultiStream.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/ParseProperties.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/ParseProperties.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Common/StdAfx.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/DllExports2.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/IArchive.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/Icons/7z.ico create mode 100644 3rdparty/lzma/CPP/7zip/Archive/LzmaHandler.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/SplitHandler.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/StdAfx.h create mode 100644 3rdparty/lzma/CPP/7zip/Archive/XzHandler.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Archive/XzHandler.h create mode 100644 3rdparty/lzma/CPP/7zip/Asm.mak create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsw create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.h create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/Alone7z/makefile create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/Alone7z/resource.rc create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.h create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/Format7zExtractR/makefile create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/Format7zExtractR/resource.rc create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.h create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/Format7zR/makefile create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/Format7zR/resource.rc create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsw create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.h create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/LzmaCon/makefile create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/LzmaCon/makefile.gcc create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/LzmaCon/resource.rc create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/LzmaSpec/LzmaSpec.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXCon/7z.ico create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsw create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXCon/SfxCon.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.h create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXCon/makefile create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXCon/resource.rc create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.h create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.h create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsw create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.h create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXSetup/makefile create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXSetup/resource.h create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXSetup/resource.rc create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXSetup/setup.ico create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXWin/7z.ico create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsw create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXWin/SfxWin.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.h create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXWin/makefile create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXWin/resource.h create mode 100644 3rdparty/lzma/CPP/7zip/Bundles/SFXWin/resource.rc create mode 100644 3rdparty/lzma/CPP/7zip/Common/CWrappers.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/CWrappers.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/CreateCoder.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/CreateCoder.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/FilePathAutoRename.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/FilePathAutoRename.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/FileStreams.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/FileStreams.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/FilterCoder.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/FilterCoder.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/InBuffer.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/InBuffer.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/InOutTempBuffer.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/InOutTempBuffer.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/LimitedStreams.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/LimitedStreams.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/LockedStream.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/LockedStream.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/MethodId.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/MethodId.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/MethodProps.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/MethodProps.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/OffsetStream.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/OffsetStream.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/OutBuffer.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/OutBuffer.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/ProgressUtils.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/ProgressUtils.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/PropId.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/RegisterArc.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/RegisterCodec.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/StdAfx.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/StreamBinder.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/StreamBinder.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/StreamObjects.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/StreamObjects.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/StreamUtils.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/StreamUtils.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/UniqBlocks.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/UniqBlocks.h create mode 100644 3rdparty/lzma/CPP/7zip/Common/VirtThread.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Common/VirtThread.h create mode 100644 3rdparty/lzma/CPP/7zip/Compress/Bcj2Coder.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/Bcj2Coder.h create mode 100644 3rdparty/lzma/CPP/7zip/Compress/Bcj2Register.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/BcjCoder.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/BcjCoder.h create mode 100644 3rdparty/lzma/CPP/7zip/Compress/BcjRegister.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/BranchMisc.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/BranchMisc.h create mode 100644 3rdparty/lzma/CPP/7zip/Compress/BranchRegister.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/ByteSwap.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/CodecExports.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/CopyCoder.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/CopyCoder.h create mode 100644 3rdparty/lzma/CPP/7zip/Compress/CopyRegister.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/DeltaFilter.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/Lzma2Decoder.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/Lzma2Decoder.h create mode 100644 3rdparty/lzma/CPP/7zip/Compress/Lzma2Encoder.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/Lzma2Encoder.h create mode 100644 3rdparty/lzma/CPP/7zip/Compress/Lzma2Register.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/LzmaDecoder.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/LzmaDecoder.h create mode 100644 3rdparty/lzma/CPP/7zip/Compress/LzmaEncoder.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/LzmaEncoder.h create mode 100644 3rdparty/lzma/CPP/7zip/Compress/LzmaRegister.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/PpmdDecoder.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/PpmdDecoder.h create mode 100644 3rdparty/lzma/CPP/7zip/Compress/PpmdEncoder.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/PpmdEncoder.h create mode 100644 3rdparty/lzma/CPP/7zip/Compress/PpmdRegister.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Compress/StdAfx.h create mode 100644 3rdparty/lzma/CPP/7zip/Crc.mak create mode 100644 3rdparty/lzma/CPP/7zip/Crc64.mak create mode 100644 3rdparty/lzma/CPP/7zip/Crypto/7zAes.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Crypto/7zAes.h create mode 100644 3rdparty/lzma/CPP/7zip/Crypto/7zAesRegister.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Crypto/MyAes.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Crypto/MyAes.h create mode 100644 3rdparty/lzma/CPP/7zip/Crypto/MyAesReg.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Crypto/RandGen.cpp create mode 100644 3rdparty/lzma/CPP/7zip/Crypto/RandGen.h create mode 100644 3rdparty/lzma/CPP/7zip/Crypto/StdAfx.h create mode 100644 3rdparty/lzma/CPP/7zip/GuiCommon.rc create mode 100644 3rdparty/lzma/CPP/7zip/Guid.txt create mode 100644 3rdparty/lzma/CPP/7zip/ICoder.h create mode 100644 3rdparty/lzma/CPP/7zip/IDecl.h create mode 100644 3rdparty/lzma/CPP/7zip/IPassword.h create mode 100644 3rdparty/lzma/CPP/7zip/IProgress.h create mode 100644 3rdparty/lzma/CPP/7zip/IStream.h create mode 100644 3rdparty/lzma/CPP/7zip/MyVersion.h create mode 100644 3rdparty/lzma/CPP/7zip/MyVersionInfo.rc create mode 100644 3rdparty/lzma/CPP/7zip/PropID.h create mode 100644 3rdparty/lzma/CPP/7zip/SubBuild.mak create mode 100644 3rdparty/lzma/CPP/7zip/UI/Client7z/Client7z.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Client7z/Client7z.dsp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Client7z/Client7z.dsw create mode 100644 3rdparty/lzma/CPP/7zip/UI/Client7z/StdAfx.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Client7z/StdAfx.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Client7z/makefile create mode 100644 3rdparty/lzma/CPP/7zip/UI/Client7z/resource.rc create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/ArchiveName.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/ArchiveName.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/Bench.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/Bench.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/DefaultName.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/DefaultName.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/DirItem.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/EnumDirItems.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/EnumDirItems.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/ExitCode.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/Extract.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/Extract.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/ExtractMode.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/ExtractingFilePath.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/ExtractingFilePath.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/HashCalc.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/HashCalc.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/IFileExtractCallback.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/LoadCodecs.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/LoadCodecs.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/OpenArchive.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/OpenArchive.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/PropIDUtils.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/PropIDUtils.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/Property.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/SetProperties.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/SetProperties.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/SortUtils.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/SortUtils.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/StdAfx.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/TempFiles.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/TempFiles.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/Update.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/Update.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/UpdateAction.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/UpdateAction.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/UpdateCallback.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/UpdateCallback.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/UpdatePair.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/UpdatePair.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/UpdateProduce.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/UpdateProduce.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/WorkDir.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/WorkDir.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Common/ZipRegistry.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/BenchCon.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/BenchCon.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/Console.mak create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/ConsoleClose.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/ConsoleClose.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/HashCon.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/HashCon.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/List.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/List.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/Main.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/MainAr.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/PercentPrinter.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/PercentPrinter.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/StdAfx.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/StdAfx.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/UserInputUtils.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/UserInputUtils.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/makefile create mode 100644 3rdparty/lzma/CPP/7zip/UI/Console/resource.rc create mode 100644 3rdparty/lzma/CPP/7zip/UI/Explorer/MyMessages.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/Explorer/MyMessages.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/BrowseDialog.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/BrowseDialog.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/BrowseDialogRes.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/ComboDialog.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/ComboDialog.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/ComboDialogRes.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/DialogSize.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/ExtractCallback.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/ExtractCallback.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/FormatUtils.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/FormatUtils.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/LangUtils.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/MyWindowsNew.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.rc create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/OverwriteDialogRes.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/PasswordDialog.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/PasswordDialog.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/PasswordDialog.rc create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/PasswordDialogRes.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/ProgressDialog.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/ProgressDialog.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/ProgressDialog.rc create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.rc create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/ProgressDialog2Res.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/ProgressDialog2a.rc create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/ProgressDialogRes.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/PropertyName.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/PropertyName.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/PropertyNameRes.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/SysIconUtils.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/SysIconUtils.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/resource.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/FileManager/resourceGui.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/GUI/Extract.rc create mode 100644 3rdparty/lzma/CPP/7zip/UI/GUI/ExtractDialog.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/GUI/ExtractDialog.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/GUI/ExtractDialog.rc create mode 100644 3rdparty/lzma/CPP/7zip/UI/GUI/ExtractDialogRes.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/GUI/ExtractGUI.cpp create mode 100644 3rdparty/lzma/CPP/7zip/UI/GUI/ExtractGUI.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/GUI/ExtractRes.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/GUI/HashGUI.h create mode 100644 3rdparty/lzma/CPP/7zip/UI/GUI/resource2.h create mode 100644 3rdparty/lzma/CPP/Build.mak create mode 100644 3rdparty/lzma/CPP/Common/AutoPtr.h create mode 100644 3rdparty/lzma/CPP/Common/CRC.cpp create mode 100644 3rdparty/lzma/CPP/Common/C_FileIO.cpp create mode 100644 3rdparty/lzma/CPP/Common/C_FileIO.h create mode 100644 3rdparty/lzma/CPP/Common/ComTry.h create mode 100644 3rdparty/lzma/CPP/Common/CommandLineParser.cpp create mode 100644 3rdparty/lzma/CPP/Common/CommandLineParser.h create mode 100644 3rdparty/lzma/CPP/Common/Common.h create mode 100644 3rdparty/lzma/CPP/Common/CrcReg.cpp create mode 100644 3rdparty/lzma/CPP/Common/Defs.h create mode 100644 3rdparty/lzma/CPP/Common/DynamicBuffer.h create mode 100644 3rdparty/lzma/CPP/Common/IntToString.cpp create mode 100644 3rdparty/lzma/CPP/Common/IntToString.h create mode 100644 3rdparty/lzma/CPP/Common/Lang.h create mode 100644 3rdparty/lzma/CPP/Common/ListFileUtils.cpp create mode 100644 3rdparty/lzma/CPP/Common/ListFileUtils.h create mode 100644 3rdparty/lzma/CPP/Common/MyBuffer.h create mode 100644 3rdparty/lzma/CPP/Common/MyCom.h create mode 100644 3rdparty/lzma/CPP/Common/MyException.h create mode 100644 3rdparty/lzma/CPP/Common/MyGuidDef.h create mode 100644 3rdparty/lzma/CPP/Common/MyInitGuid.h create mode 100644 3rdparty/lzma/CPP/Common/MyLinux.h create mode 100644 3rdparty/lzma/CPP/Common/MyString.cpp create mode 100644 3rdparty/lzma/CPP/Common/MyString.h create mode 100644 3rdparty/lzma/CPP/Common/MyTypes.h create mode 100644 3rdparty/lzma/CPP/Common/MyUnknown.h create mode 100644 3rdparty/lzma/CPP/Common/MyVector.cpp create mode 100644 3rdparty/lzma/CPP/Common/MyVector.h create mode 100644 3rdparty/lzma/CPP/Common/MyWindows.cpp create mode 100644 3rdparty/lzma/CPP/Common/MyWindows.h create mode 100644 3rdparty/lzma/CPP/Common/NewHandler.cpp create mode 100644 3rdparty/lzma/CPP/Common/NewHandler.h create mode 100644 3rdparty/lzma/CPP/Common/Sha256Reg.cpp create mode 100644 3rdparty/lzma/CPP/Common/StdAfx.h create mode 100644 3rdparty/lzma/CPP/Common/StdInStream.cpp create mode 100644 3rdparty/lzma/CPP/Common/StdInStream.h create mode 100644 3rdparty/lzma/CPP/Common/StdOutStream.cpp create mode 100644 3rdparty/lzma/CPP/Common/StdOutStream.h create mode 100644 3rdparty/lzma/CPP/Common/StringConvert.cpp create mode 100644 3rdparty/lzma/CPP/Common/StringConvert.h create mode 100644 3rdparty/lzma/CPP/Common/StringToInt.cpp create mode 100644 3rdparty/lzma/CPP/Common/StringToInt.h create mode 100644 3rdparty/lzma/CPP/Common/TextConfig.cpp create mode 100644 3rdparty/lzma/CPP/Common/TextConfig.h create mode 100644 3rdparty/lzma/CPP/Common/UTFConvert.cpp create mode 100644 3rdparty/lzma/CPP/Common/UTFConvert.h create mode 100644 3rdparty/lzma/CPP/Common/Wildcard.cpp create mode 100644 3rdparty/lzma/CPP/Common/Wildcard.h create mode 100644 3rdparty/lzma/CPP/Common/XzCrc64Reg.cpp create mode 100644 3rdparty/lzma/CPP/Windows/COM.h create mode 100644 3rdparty/lzma/CPP/Windows/CommonDialog.cpp create mode 100644 3rdparty/lzma/CPP/Windows/CommonDialog.h create mode 100644 3rdparty/lzma/CPP/Windows/Control/ComboBox.cpp create mode 100644 3rdparty/lzma/CPP/Windows/Control/ComboBox.h create mode 100644 3rdparty/lzma/CPP/Windows/Control/CommandBar.h create mode 100644 3rdparty/lzma/CPP/Windows/Control/Dialog.cpp create mode 100644 3rdparty/lzma/CPP/Windows/Control/Dialog.h create mode 100644 3rdparty/lzma/CPP/Windows/Control/Edit.h create mode 100644 3rdparty/lzma/CPP/Windows/Control/ImageList.cpp create mode 100644 3rdparty/lzma/CPP/Windows/Control/ImageList.h create mode 100644 3rdparty/lzma/CPP/Windows/Control/ListView.cpp create mode 100644 3rdparty/lzma/CPP/Windows/Control/ListView.h create mode 100644 3rdparty/lzma/CPP/Windows/Control/ProgressBar.h create mode 100644 3rdparty/lzma/CPP/Windows/Control/PropertyPage.cpp create mode 100644 3rdparty/lzma/CPP/Windows/Control/PropertyPage.h create mode 100644 3rdparty/lzma/CPP/Windows/Control/ReBar.h create mode 100644 3rdparty/lzma/CPP/Windows/Control/Static.h create mode 100644 3rdparty/lzma/CPP/Windows/Control/StatusBar.h create mode 100644 3rdparty/lzma/CPP/Windows/Control/StdAfx.h create mode 100644 3rdparty/lzma/CPP/Windows/Control/ToolBar.h create mode 100644 3rdparty/lzma/CPP/Windows/Control/Trackbar.h create mode 100644 3rdparty/lzma/CPP/Windows/Control/Window2.cpp create mode 100644 3rdparty/lzma/CPP/Windows/Control/Window2.h create mode 100644 3rdparty/lzma/CPP/Windows/DLL.cpp create mode 100644 3rdparty/lzma/CPP/Windows/DLL.h create mode 100644 3rdparty/lzma/CPP/Windows/Defs.h create mode 100644 3rdparty/lzma/CPP/Windows/ErrorMsg.cpp create mode 100644 3rdparty/lzma/CPP/Windows/ErrorMsg.h create mode 100644 3rdparty/lzma/CPP/Windows/FileDir.cpp create mode 100644 3rdparty/lzma/CPP/Windows/FileDir.h create mode 100644 3rdparty/lzma/CPP/Windows/FileFind.cpp create mode 100644 3rdparty/lzma/CPP/Windows/FileFind.h create mode 100644 3rdparty/lzma/CPP/Windows/FileIO.cpp create mode 100644 3rdparty/lzma/CPP/Windows/FileIO.h create mode 100644 3rdparty/lzma/CPP/Windows/FileLink.cpp create mode 100644 3rdparty/lzma/CPP/Windows/FileMapping.cpp create mode 100644 3rdparty/lzma/CPP/Windows/FileMapping.h create mode 100644 3rdparty/lzma/CPP/Windows/FileName.cpp create mode 100644 3rdparty/lzma/CPP/Windows/FileName.h create mode 100644 3rdparty/lzma/CPP/Windows/FileSystem.cpp create mode 100644 3rdparty/lzma/CPP/Windows/FileSystem.h create mode 100644 3rdparty/lzma/CPP/Windows/Handle.h create mode 100644 3rdparty/lzma/CPP/Windows/MemoryLock.cpp create mode 100644 3rdparty/lzma/CPP/Windows/MemoryLock.h create mode 100644 3rdparty/lzma/CPP/Windows/NtCheck.h create mode 100644 3rdparty/lzma/CPP/Windows/PropVariant.cpp create mode 100644 3rdparty/lzma/CPP/Windows/PropVariant.h create mode 100644 3rdparty/lzma/CPP/Windows/PropVariantConv.cpp create mode 100644 3rdparty/lzma/CPP/Windows/PropVariantConv.h create mode 100644 3rdparty/lzma/CPP/Windows/Registry.cpp create mode 100644 3rdparty/lzma/CPP/Windows/Registry.h create mode 100644 3rdparty/lzma/CPP/Windows/ResourceString.cpp create mode 100644 3rdparty/lzma/CPP/Windows/ResourceString.h create mode 100644 3rdparty/lzma/CPP/Windows/SecurityUtils.cpp create mode 100644 3rdparty/lzma/CPP/Windows/SecurityUtils.h create mode 100644 3rdparty/lzma/CPP/Windows/Shell.cpp create mode 100644 3rdparty/lzma/CPP/Windows/Shell.h create mode 100644 3rdparty/lzma/CPP/Windows/StdAfx.h create mode 100644 3rdparty/lzma/CPP/Windows/Synchronization.cpp create mode 100644 3rdparty/lzma/CPP/Windows/Synchronization.h create mode 100644 3rdparty/lzma/CPP/Windows/System.cpp create mode 100644 3rdparty/lzma/CPP/Windows/System.h create mode 100644 3rdparty/lzma/CPP/Windows/Thread.h create mode 100644 3rdparty/lzma/CPP/Windows/TimeUtils.cpp create mode 100644 3rdparty/lzma/CPP/Windows/TimeUtils.h create mode 100644 3rdparty/lzma/CPP/Windows/Window.cpp create mode 100644 3rdparty/lzma/CPP/Windows/Window.h create mode 100644 3rdparty/lzma/CS/7zip/Common/CRC.cs create mode 100644 3rdparty/lzma/CS/7zip/Common/CommandLineParser.cs create mode 100644 3rdparty/lzma/CS/7zip/Common/InBuffer.cs create mode 100644 3rdparty/lzma/CS/7zip/Common/OutBuffer.cs create mode 100644 3rdparty/lzma/CS/7zip/Compress/LZ/IMatchFinder.cs create mode 100644 3rdparty/lzma/CS/7zip/Compress/LZ/LzBinTree.cs create mode 100644 3rdparty/lzma/CS/7zip/Compress/LZ/LzInWindow.cs create mode 100644 3rdparty/lzma/CS/7zip/Compress/LZ/LzOutWindow.cs create mode 100644 3rdparty/lzma/CS/7zip/Compress/LZMA/LzmaBase.cs create mode 100644 3rdparty/lzma/CS/7zip/Compress/LZMA/LzmaDecoder.cs create mode 100644 3rdparty/lzma/CS/7zip/Compress/LZMA/LzmaEncoder.cs create mode 100644 3rdparty/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.cs create mode 100644 3rdparty/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.csproj create mode 100644 3rdparty/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.sln create mode 100644 3rdparty/lzma/CS/7zip/Compress/LzmaAlone/LzmaBench.cs create mode 100644 3rdparty/lzma/CS/7zip/Compress/LzmaAlone/Properties/AssemblyInfo.cs create mode 100644 3rdparty/lzma/CS/7zip/Compress/LzmaAlone/Properties/Resources.cs create mode 100644 3rdparty/lzma/CS/7zip/Compress/LzmaAlone/Properties/Settings.cs create mode 100644 3rdparty/lzma/CS/7zip/Compress/RangeCoder/RangeCoder.cs create mode 100644 3rdparty/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBit.cs create mode 100644 3rdparty/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBitTree.cs create mode 100644 3rdparty/lzma/CS/7zip/ICoder.cs create mode 100644 3rdparty/lzma/DOC/7zC.txt create mode 100644 3rdparty/lzma/DOC/7zFormat.txt create mode 100644 3rdparty/lzma/DOC/Methods.txt create mode 100644 3rdparty/lzma/DOC/installer.txt create mode 100644 3rdparty/lzma/DOC/lzma-history.txt create mode 100644 3rdparty/lzma/DOC/lzma-sdk.txt create mode 100644 3rdparty/lzma/DOC/lzma-specification.txt create mode 100644 3rdparty/lzma/DOC/lzma.txt create mode 100644 3rdparty/lzma/Java/SevenZip/CRC.java create mode 100644 3rdparty/lzma/Java/SevenZip/Compression/LZ/BinTree.java create mode 100644 3rdparty/lzma/Java/SevenZip/Compression/LZ/InWindow.java create mode 100644 3rdparty/lzma/Java/SevenZip/Compression/LZ/OutWindow.java create mode 100644 3rdparty/lzma/Java/SevenZip/Compression/LZMA/Base.java create mode 100644 3rdparty/lzma/Java/SevenZip/Compression/LZMA/Decoder.java create mode 100644 3rdparty/lzma/Java/SevenZip/Compression/LZMA/Encoder.java create mode 100644 3rdparty/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeDecoder.java create mode 100644 3rdparty/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeEncoder.java create mode 100644 3rdparty/lzma/Java/SevenZip/Compression/RangeCoder/Decoder.java create mode 100644 3rdparty/lzma/Java/SevenZip/Compression/RangeCoder/Encoder.java create mode 100644 3rdparty/lzma/Java/SevenZip/ICodeProgress.java create mode 100644 3rdparty/lzma/Java/SevenZip/LzmaAlone.java create mode 100644 3rdparty/lzma/Java/SevenZip/LzmaBench.java create mode 100644 3rdparty/utf8proc/.travis.yml create mode 100644 3rdparty/utf8proc/CMakeLists.txt create mode 100644 3rdparty/utf8proc/Doxyfile create mode 100644 3rdparty/utf8proc/LICENSE.md create mode 100644 3rdparty/utf8proc/MANIFEST create mode 100644 3rdparty/utf8proc/Makefile create mode 100644 3rdparty/utf8proc/NEWS.md create mode 100644 3rdparty/utf8proc/README.md create mode 100644 3rdparty/utf8proc/appveyor.yml create mode 100644 3rdparty/utf8proc/bench/Makefile create mode 100644 3rdparty/utf8proc/bench/bench.c create mode 100644 3rdparty/utf8proc/bench/icu.c create mode 100644 3rdparty/utf8proc/bench/unistring.c create mode 100644 3rdparty/utf8proc/bench/util.c create mode 100644 3rdparty/utf8proc/bench/util.h create mode 100644 3rdparty/utf8proc/data/Makefile create mode 100644 3rdparty/utf8proc/data/charwidths.jl create mode 100644 3rdparty/utf8proc/data/data_generator.rb create mode 100644 3rdparty/utf8proc/libutf8proc.pc.in create mode 100644 3rdparty/utf8proc/lump.md create mode 100644 3rdparty/utf8proc/test/case.c create mode 100644 3rdparty/utf8proc/test/charwidth.c create mode 100644 3rdparty/utf8proc/test/custom.c create mode 100644 3rdparty/utf8proc/test/graphemetest.c create mode 100644 3rdparty/utf8proc/test/iscase.c create mode 100644 3rdparty/utf8proc/test/iterate.c create mode 100644 3rdparty/utf8proc/test/misc.c create mode 100644 3rdparty/utf8proc/test/normtest.c create mode 100644 3rdparty/utf8proc/test/printproperty.c create mode 100644 3rdparty/utf8proc/test/tests.c create mode 100644 3rdparty/utf8proc/test/tests.h create mode 100644 3rdparty/utf8proc/test/valid.c create mode 100644 3rdparty/utf8proc/utf8proc.c create mode 100644 3rdparty/utf8proc/utf8proc.h create mode 100644 3rdparty/utf8proc/utf8proc_data.c create mode 100644 3rdparty/utf8proc/utils.cmake create mode 100644 3rdparty/zlib/CMakeLists.txt create mode 100644 3rdparty/zlib/ChangeLog create mode 100644 3rdparty/zlib/FAQ create mode 100644 3rdparty/zlib/INDEX create mode 100644 3rdparty/zlib/Makefile create mode 100644 3rdparty/zlib/Makefile.in create mode 100644 3rdparty/zlib/README create mode 100644 3rdparty/zlib/adler32.c create mode 100644 3rdparty/zlib/amiga/Makefile.pup create mode 100644 3rdparty/zlib/amiga/Makefile.sas create mode 100644 3rdparty/zlib/compress.c create mode 100644 3rdparty/zlib/configure create mode 100644 3rdparty/zlib/contrib/README.contrib create mode 100644 3rdparty/zlib/contrib/ada/buffer_demo.adb create mode 100644 3rdparty/zlib/contrib/ada/mtest.adb create mode 100644 3rdparty/zlib/contrib/ada/read.adb create mode 100644 3rdparty/zlib/contrib/ada/readme.txt create mode 100644 3rdparty/zlib/contrib/ada/test.adb create mode 100644 3rdparty/zlib/contrib/ada/zlib-streams.adb create mode 100644 3rdparty/zlib/contrib/ada/zlib-streams.ads create mode 100644 3rdparty/zlib/contrib/ada/zlib-thin.adb create mode 100644 3rdparty/zlib/contrib/ada/zlib-thin.ads create mode 100644 3rdparty/zlib/contrib/ada/zlib.adb create mode 100644 3rdparty/zlib/contrib/ada/zlib.ads create mode 100644 3rdparty/zlib/contrib/ada/zlib.gpr create mode 100644 3rdparty/zlib/contrib/amd64/amd64-match.S create mode 100644 3rdparty/zlib/contrib/asm686/README.686 create mode 100644 3rdparty/zlib/contrib/asm686/match.S create mode 100644 3rdparty/zlib/contrib/blast/Makefile create mode 100644 3rdparty/zlib/contrib/blast/README create mode 100644 3rdparty/zlib/contrib/blast/blast.c create mode 100644 3rdparty/zlib/contrib/blast/blast.h create mode 100644 3rdparty/zlib/contrib/blast/test.pk create mode 100644 3rdparty/zlib/contrib/blast/test.txt create mode 100644 3rdparty/zlib/contrib/delphi/ZLib.pas create mode 100644 3rdparty/zlib/contrib/delphi/ZLibConst.pas create mode 100644 3rdparty/zlib/contrib/delphi/readme.txt create mode 100644 3rdparty/zlib/contrib/delphi/zlibd32.mak create mode 100644 3rdparty/zlib/contrib/dotzlib/DotZLib.build create mode 100644 3rdparty/zlib/contrib/dotzlib/DotZLib.chm create mode 100644 3rdparty/zlib/contrib/dotzlib/DotZLib.sln create mode 100644 3rdparty/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs create mode 100644 3rdparty/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs create mode 100644 3rdparty/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs create mode 100644 3rdparty/zlib/contrib/dotzlib/DotZLib/CodecBase.cs create mode 100644 3rdparty/zlib/contrib/dotzlib/DotZLib/Deflater.cs create mode 100644 3rdparty/zlib/contrib/dotzlib/DotZLib/DotZLib.cs create mode 100644 3rdparty/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj create mode 100644 3rdparty/zlib/contrib/dotzlib/DotZLib/GZipStream.cs create mode 100644 3rdparty/zlib/contrib/dotzlib/DotZLib/Inflater.cs create mode 100644 3rdparty/zlib/contrib/dotzlib/DotZLib/UnitTests.cs create mode 100644 3rdparty/zlib/contrib/dotzlib/LICENSE_1_0.txt create mode 100644 3rdparty/zlib/contrib/dotzlib/readme.txt create mode 100644 3rdparty/zlib/contrib/gcc_gvmat64/gvmat64.S create mode 100644 3rdparty/zlib/contrib/infback9/README create mode 100644 3rdparty/zlib/contrib/infback9/infback9.c create mode 100644 3rdparty/zlib/contrib/infback9/infback9.h create mode 100644 3rdparty/zlib/contrib/infback9/inffix9.h create mode 100644 3rdparty/zlib/contrib/infback9/inflate9.h create mode 100644 3rdparty/zlib/contrib/infback9/inftree9.c create mode 100644 3rdparty/zlib/contrib/infback9/inftree9.h create mode 100644 3rdparty/zlib/contrib/inflate86/inffas86.c create mode 100644 3rdparty/zlib/contrib/inflate86/inffast.S create mode 100644 3rdparty/zlib/contrib/iostream/test.cpp create mode 100644 3rdparty/zlib/contrib/iostream/zfstream.cpp create mode 100644 3rdparty/zlib/contrib/iostream/zfstream.h create mode 100644 3rdparty/zlib/contrib/iostream2/zstream.h create mode 100644 3rdparty/zlib/contrib/iostream2/zstream_test.cpp create mode 100644 3rdparty/zlib/contrib/iostream3/README create mode 100644 3rdparty/zlib/contrib/iostream3/TODO create mode 100644 3rdparty/zlib/contrib/iostream3/test.cc create mode 100644 3rdparty/zlib/contrib/iostream3/zfstream.cc create mode 100644 3rdparty/zlib/contrib/iostream3/zfstream.h create mode 100644 3rdparty/zlib/contrib/masmx64/bld_ml64.bat create mode 100644 3rdparty/zlib/contrib/masmx64/gvmat64.asm create mode 100644 3rdparty/zlib/contrib/masmx64/inffas8664.c create mode 100644 3rdparty/zlib/contrib/masmx64/inffasx64.asm create mode 100644 3rdparty/zlib/contrib/masmx64/readme.txt create mode 100644 3rdparty/zlib/contrib/masmx86/bld_ml32.bat create mode 100644 3rdparty/zlib/contrib/masmx86/inffas32.asm create mode 100644 3rdparty/zlib/contrib/masmx86/match686.asm create mode 100644 3rdparty/zlib/contrib/masmx86/readme.txt create mode 100644 3rdparty/zlib/contrib/minizip/Makefile create mode 100644 3rdparty/zlib/contrib/minizip/Makefile.am create mode 100644 3rdparty/zlib/contrib/minizip/MiniZip64_Changes.txt create mode 100644 3rdparty/zlib/contrib/minizip/MiniZip64_info.txt create mode 100644 3rdparty/zlib/contrib/minizip/configure.ac create mode 100644 3rdparty/zlib/contrib/minizip/crypt.h create mode 100644 3rdparty/zlib/contrib/minizip/ioapi.c create mode 100644 3rdparty/zlib/contrib/minizip/ioapi.h create mode 100644 3rdparty/zlib/contrib/minizip/iowin32.c create mode 100644 3rdparty/zlib/contrib/minizip/iowin32.h create mode 100644 3rdparty/zlib/contrib/minizip/make_vms.com create mode 100644 3rdparty/zlib/contrib/minizip/miniunz.c create mode 100644 3rdparty/zlib/contrib/minizip/miniunzip.1 create mode 100644 3rdparty/zlib/contrib/minizip/minizip.1 create mode 100644 3rdparty/zlib/contrib/minizip/minizip.c create mode 100644 3rdparty/zlib/contrib/minizip/minizip.pc.in create mode 100644 3rdparty/zlib/contrib/minizip/mztools.c create mode 100644 3rdparty/zlib/contrib/minizip/mztools.h create mode 100644 3rdparty/zlib/contrib/minizip/unzip.c create mode 100644 3rdparty/zlib/contrib/minizip/unzip.h create mode 100644 3rdparty/zlib/contrib/minizip/zip.c create mode 100644 3rdparty/zlib/contrib/minizip/zip.h create mode 100644 3rdparty/zlib/contrib/pascal/example.pas create mode 100644 3rdparty/zlib/contrib/pascal/readme.txt create mode 100644 3rdparty/zlib/contrib/pascal/zlibd32.mak create mode 100644 3rdparty/zlib/contrib/pascal/zlibpas.pas create mode 100644 3rdparty/zlib/contrib/puff/Makefile create mode 100644 3rdparty/zlib/contrib/puff/README create mode 100644 3rdparty/zlib/contrib/puff/puff.c create mode 100644 3rdparty/zlib/contrib/puff/puff.h create mode 100644 3rdparty/zlib/contrib/puff/pufftest.c create mode 100644 3rdparty/zlib/contrib/puff/zeros.raw create mode 100644 3rdparty/zlib/contrib/testzlib/testzlib.c create mode 100644 3rdparty/zlib/contrib/testzlib/testzlib.txt create mode 100644 3rdparty/zlib/contrib/untgz/Makefile create mode 100644 3rdparty/zlib/contrib/untgz/Makefile.msc create mode 100644 3rdparty/zlib/contrib/untgz/untgz.c create mode 100644 3rdparty/zlib/contrib/vstudio/readme.txt create mode 100644 3rdparty/zlib/contrib/vstudio/vc10/miniunz.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters create mode 100644 3rdparty/zlib/contrib/vstudio/vc10/minizip.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters create mode 100644 3rdparty/zlib/contrib/vstudio/vc10/testzlib.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters create mode 100644 3rdparty/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters create mode 100644 3rdparty/zlib/contrib/vstudio/vc10/zlib.rc create mode 100644 3rdparty/zlib/contrib/vstudio/vc10/zlibstat.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters create mode 100644 3rdparty/zlib/contrib/vstudio/vc10/zlibvc.def create mode 100644 3rdparty/zlib/contrib/vstudio/vc10/zlibvc.sln create mode 100644 3rdparty/zlib/contrib/vstudio/vc10/zlibvc.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters create mode 100644 3rdparty/zlib/contrib/vstudio/vc11/miniunz.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc11/minizip.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc11/testzlib.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc11/zlib.rc create mode 100644 3rdparty/zlib/contrib/vstudio/vc11/zlibstat.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc11/zlibvc.def create mode 100644 3rdparty/zlib/contrib/vstudio/vc11/zlibvc.sln create mode 100644 3rdparty/zlib/contrib/vstudio/vc11/zlibvc.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc12/miniunz.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc12/minizip.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc12/testzlib.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc12/testzlibdll.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc12/zlib.rc create mode 100644 3rdparty/zlib/contrib/vstudio/vc12/zlibstat.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc12/zlibvc.def create mode 100644 3rdparty/zlib/contrib/vstudio/vc12/zlibvc.sln create mode 100644 3rdparty/zlib/contrib/vstudio/vc12/zlibvc.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc14/miniunz.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc14/minizip.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc14/testzlib.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc14/testzlibdll.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc14/zlib.rc create mode 100644 3rdparty/zlib/contrib/vstudio/vc14/zlibstat.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc14/zlibvc.def create mode 100644 3rdparty/zlib/contrib/vstudio/vc14/zlibvc.sln create mode 100644 3rdparty/zlib/contrib/vstudio/vc14/zlibvc.vcxproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc9/miniunz.vcproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc9/minizip.vcproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc9/testzlib.vcproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc9/testzlibdll.vcproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc9/zlib.rc create mode 100644 3rdparty/zlib/contrib/vstudio/vc9/zlibstat.vcproj create mode 100644 3rdparty/zlib/contrib/vstudio/vc9/zlibvc.def create mode 100644 3rdparty/zlib/contrib/vstudio/vc9/zlibvc.sln create mode 100644 3rdparty/zlib/contrib/vstudio/vc9/zlibvc.vcproj create mode 100644 3rdparty/zlib/crc32.c create mode 100644 3rdparty/zlib/crc32.h create mode 100644 3rdparty/zlib/deflate.c create mode 100644 3rdparty/zlib/deflate.h create mode 100644 3rdparty/zlib/doc/algorithm.txt create mode 100644 3rdparty/zlib/doc/rfc1950.txt create mode 100644 3rdparty/zlib/doc/rfc1951.txt create mode 100644 3rdparty/zlib/doc/rfc1952.txt create mode 100644 3rdparty/zlib/doc/txtvsbin.txt create mode 100644 3rdparty/zlib/examples/README.examples create mode 100644 3rdparty/zlib/examples/enough.c create mode 100644 3rdparty/zlib/examples/fitblk.c create mode 100644 3rdparty/zlib/examples/gun.c create mode 100644 3rdparty/zlib/examples/gzappend.c create mode 100644 3rdparty/zlib/examples/gzjoin.c create mode 100644 3rdparty/zlib/examples/gzlog.c create mode 100644 3rdparty/zlib/examples/gzlog.h create mode 100644 3rdparty/zlib/examples/zlib_how.html create mode 100644 3rdparty/zlib/examples/zpipe.c create mode 100644 3rdparty/zlib/examples/zran.c create mode 100644 3rdparty/zlib/gzclose.c create mode 100644 3rdparty/zlib/gzguts.h create mode 100644 3rdparty/zlib/gzlib.c create mode 100644 3rdparty/zlib/gzread.c create mode 100644 3rdparty/zlib/gzwrite.c create mode 100644 3rdparty/zlib/infback.c create mode 100644 3rdparty/zlib/inffast.c create mode 100644 3rdparty/zlib/inffast.h create mode 100644 3rdparty/zlib/inffixed.h create mode 100644 3rdparty/zlib/inflate.c create mode 100644 3rdparty/zlib/inflate.h create mode 100644 3rdparty/zlib/inftrees.c create mode 100644 3rdparty/zlib/inftrees.h create mode 100644 3rdparty/zlib/make_vms.com create mode 100644 3rdparty/zlib/msdos/Makefile.bor create mode 100644 3rdparty/zlib/msdos/Makefile.dj2 create mode 100644 3rdparty/zlib/msdos/Makefile.emx create mode 100644 3rdparty/zlib/msdos/Makefile.msc create mode 100644 3rdparty/zlib/msdos/Makefile.tc create mode 100644 3rdparty/zlib/nintendods/Makefile create mode 100644 3rdparty/zlib/nintendods/README create mode 100644 3rdparty/zlib/old/Makefile.emx create mode 100644 3rdparty/zlib/old/Makefile.riscos create mode 100644 3rdparty/zlib/old/README create mode 100644 3rdparty/zlib/old/descrip.mms create mode 100644 3rdparty/zlib/old/os2/Makefile.os2 create mode 100644 3rdparty/zlib/old/os2/zlib.def create mode 100644 3rdparty/zlib/old/visual-basic.txt create mode 100644 3rdparty/zlib/os400/README400 create mode 100644 3rdparty/zlib/os400/bndsrc create mode 100644 3rdparty/zlib/os400/make.sh create mode 100644 3rdparty/zlib/os400/zlib.inc create mode 100644 3rdparty/zlib/qnx/package.qpg create mode 100644 3rdparty/zlib/test/example.c create mode 100644 3rdparty/zlib/test/infcover.c create mode 100644 3rdparty/zlib/test/minigzip.c create mode 100644 3rdparty/zlib/treebuild.xml create mode 100644 3rdparty/zlib/trees.c create mode 100644 3rdparty/zlib/trees.h create mode 100644 3rdparty/zlib/uncompr.c create mode 100644 3rdparty/zlib/watcom/watcom_f.mak create mode 100644 3rdparty/zlib/watcom/watcom_l.mak create mode 100644 3rdparty/zlib/win32/DLL_FAQ.txt create mode 100644 3rdparty/zlib/win32/Makefile.bor create mode 100644 3rdparty/zlib/win32/Makefile.gcc create mode 100644 3rdparty/zlib/win32/Makefile.msc create mode 100644 3rdparty/zlib/win32/README-WIN32.txt create mode 100644 3rdparty/zlib/win32/VisualC.txt create mode 100644 3rdparty/zlib/win32/zlib.def create mode 100644 3rdparty/zlib/win32/zlib1.rc create mode 100644 3rdparty/zlib/zconf.h create mode 100644 3rdparty/zlib/zconf.h.cmakein create mode 100644 3rdparty/zlib/zconf.h.in create mode 100644 3rdparty/zlib/zlib.3 create mode 100644 3rdparty/zlib/zlib.3.pdf create mode 100644 3rdparty/zlib/zlib.h create mode 100644 3rdparty/zlib/zlib.map create mode 100644 3rdparty/zlib/zlib.pc.cmakein create mode 100644 3rdparty/zlib/zlib.pc.in create mode 100644 3rdparty/zlib/zlib2ansi create mode 100644 3rdparty/zlib/zutil.c create mode 100644 3rdparty/zlib/zutil.h create mode 100644 chdman_generated_files.txt create mode 100644 command create mode 100644 make_files/3rdparty/7z.make create mode 100644 make_files/3rdparty/expat.make create mode 100644 make_files/3rdparty/flac.make create mode 100644 make_files/chdman.make create mode 100644 make_files/ocore_sdl.make create mode 100644 make_files/utf8proc.make create mode 100644 make_files/utils.make create mode 100644 make_files/zlib.make create mode 100644 src/chdman.cpp create mode 100644 src/icludes/emu/addrmap.cpp create mode 100644 src/icludes/emu/addrmap.h create mode 100644 src/icludes/emu/attotime.cpp create mode 100644 src/icludes/emu/attotime.h create mode 100644 src/icludes/emu/bookkeeping.cpp create mode 100644 src/icludes/emu/bookkeeping.h create mode 100644 src/icludes/emu/config.cpp create mode 100644 src/icludes/emu/config.h create mode 100644 src/icludes/emu/crsshair.cpp create mode 100644 src/icludes/emu/crsshair.h create mode 100644 src/icludes/emu/debug/debugbuf.cpp create mode 100644 src/icludes/emu/debug/debugbuf.h create mode 100644 src/icludes/emu/debug/debugcmd.cpp create mode 100644 src/icludes/emu/debug/debugcmd.h create mode 100644 src/icludes/emu/debug/debugcon.cpp create mode 100644 src/icludes/emu/debug/debugcon.h create mode 100644 src/icludes/emu/debug/debugcpu.cpp create mode 100644 src/icludes/emu/debug/debugcpu.h create mode 100644 src/icludes/emu/debug/debughlp.cpp create mode 100644 src/icludes/emu/debug/debughlp.h create mode 100644 src/icludes/emu/debug/debugvw.cpp create mode 100644 src/icludes/emu/debug/debugvw.h create mode 100644 src/icludes/emu/debug/dvbpoints.cpp create mode 100644 src/icludes/emu/debug/dvbpoints.h create mode 100644 src/icludes/emu/debug/dvdisasm.cpp create mode 100644 src/icludes/emu/debug/dvdisasm.h create mode 100644 src/icludes/emu/debug/dvmemory.cpp create mode 100644 src/icludes/emu/debug/dvmemory.h create mode 100644 src/icludes/emu/debug/dvrpoints.cpp create mode 100644 src/icludes/emu/debug/dvrpoints.h create mode 100644 src/icludes/emu/debug/dvstate.cpp create mode 100644 src/icludes/emu/debug/dvstate.h create mode 100644 src/icludes/emu/debug/dvtext.cpp create mode 100644 src/icludes/emu/debug/dvtext.h create mode 100644 src/icludes/emu/debug/dvwpoints.cpp create mode 100644 src/icludes/emu/debug/dvwpoints.h create mode 100644 src/icludes/emu/debug/express.cpp create mode 100644 src/icludes/emu/debug/express.h create mode 100644 src/icludes/emu/debug/points.cpp create mode 100644 src/icludes/emu/debug/points.h create mode 100644 src/icludes/emu/debug/textbuf.cpp create mode 100644 src/icludes/emu/debug/textbuf.h create mode 100644 src/icludes/emu/debugger.cpp create mode 100644 src/icludes/emu/debugger.h create mode 100644 src/icludes/emu/devcb.cpp create mode 100644 src/icludes/emu/devcb.h create mode 100644 src/icludes/emu/devcpu.cpp create mode 100644 src/icludes/emu/devcpu.h create mode 100644 src/icludes/emu/devdelegate.cpp create mode 100644 src/icludes/emu/devdelegate.h create mode 100644 src/icludes/emu/devfind.cpp create mode 100644 src/icludes/emu/devfind.h create mode 100644 src/icludes/emu/device.cpp create mode 100644 src/icludes/emu/device.h create mode 100644 src/icludes/emu/device.ipp create mode 100644 src/icludes/emu/didisasm.cpp create mode 100644 src/icludes/emu/didisasm.h create mode 100644 src/icludes/emu/diexec.cpp create mode 100644 src/icludes/emu/diexec.h create mode 100644 src/icludes/emu/digfx.cpp create mode 100644 src/icludes/emu/digfx.h create mode 100644 src/icludes/emu/diimage.cpp create mode 100644 src/icludes/emu/diimage.h create mode 100644 src/icludes/emu/dimemory.cpp create mode 100644 src/icludes/emu/dimemory.h create mode 100644 src/icludes/emu/dinetwork.cpp create mode 100644 src/icludes/emu/dinetwork.h create mode 100644 src/icludes/emu/dinvram.cpp create mode 100644 src/icludes/emu/dinvram.h create mode 100644 src/icludes/emu/dipalette.cpp create mode 100644 src/icludes/emu/dipalette.h create mode 100644 src/icludes/emu/dipty.cpp create mode 100644 src/icludes/emu/dipty.h create mode 100644 src/icludes/emu/dirom.h create mode 100644 src/icludes/emu/dirom.ipp create mode 100644 src/icludes/emu/dirtc.cpp create mode 100644 src/icludes/emu/dirtc.h create mode 100644 src/icludes/emu/diserial.cpp create mode 100644 src/icludes/emu/diserial.h create mode 100644 src/icludes/emu/dislot.cpp create mode 100644 src/icludes/emu/dislot.h create mode 100644 src/icludes/emu/disound.cpp create mode 100644 src/icludes/emu/disound.h create mode 100644 src/icludes/emu/distate.cpp create mode 100644 src/icludes/emu/distate.h create mode 100644 src/icludes/emu/divideo.cpp create mode 100644 src/icludes/emu/divideo.h create mode 100644 src/icludes/emu/divtlb.cpp create mode 100644 src/icludes/emu/divtlb.h create mode 100644 src/icludes/emu/drawgfx.cpp create mode 100644 src/icludes/emu/drawgfx.h create mode 100644 src/icludes/emu/drawgfxt.ipp create mode 100644 src/icludes/emu/drivenum.cpp create mode 100644 src/icludes/emu/drivenum.h create mode 100644 src/icludes/emu/driver.cpp create mode 100644 src/icludes/emu/driver.h create mode 100644 src/icludes/emu/drivers/empty.cpp create mode 100644 src/icludes/emu/drivers/testcpu.cpp create mode 100644 src/icludes/emu/emu.h create mode 100644 src/icludes/emu/emucore.cpp create mode 100644 src/icludes/emu/emucore.h create mode 100644 src/icludes/emu/emufwd.h create mode 100644 src/icludes/emu/emumem.cpp create mode 100644 src/icludes/emu/emumem.h create mode 100644 src/icludes/emu/emumem_aspace.cpp create mode 100644 src/icludes/emu/emumem_hea.h create mode 100644 src/icludes/emu/emumem_hedp.cpp create mode 100644 src/icludes/emu/emumem_hedp.h create mode 100644 src/icludes/emu/emumem_hedr.h create mode 100644 src/icludes/emu/emumem_hedr.ipp create mode 100644 src/icludes/emu/emumem_hedr0.cpp create mode 100644 src/icludes/emu/emumem_hedr1.cpp create mode 100644 src/icludes/emu/emumem_hedr2.cpp create mode 100644 src/icludes/emu/emumem_hedr3.cpp create mode 100644 src/icludes/emu/emumem_hedw.h create mode 100644 src/icludes/emu/emumem_hedw.ipp create mode 100644 src/icludes/emu/emumem_hedw0.cpp create mode 100644 src/icludes/emu/emumem_hedw1.cpp create mode 100644 src/icludes/emu/emumem_hedw2.cpp create mode 100644 src/icludes/emu/emumem_hedw3.cpp create mode 100644 src/icludes/emu/emumem_hem.cpp create mode 100644 src/icludes/emu/emumem_hem.h create mode 100644 src/icludes/emu/emumem_hep.cpp create mode 100644 src/icludes/emu/emumem_hep.h create mode 100644 src/icludes/emu/emumem_het.cpp create mode 100644 src/icludes/emu/emumem_het.h create mode 100644 src/icludes/emu/emumem_heu.cpp create mode 100644 src/icludes/emu/emumem_heu.h create mode 100644 src/icludes/emu/emumem_heun.cpp create mode 100644 src/icludes/emu/emumem_heun.h create mode 100644 src/icludes/emu/emumem_mud.cpp create mode 100644 src/icludes/emu/emumem_mud.h create mode 100644 src/icludes/emu/emumem_mview.cpp create mode 100644 src/icludes/emu/emuopts.cpp create mode 100644 src/icludes/emu/emuopts.h create mode 100644 src/icludes/emu/emupal.cpp create mode 100644 src/icludes/emu/emupal.h create mode 100644 src/icludes/emu/fileio.cpp create mode 100644 src/icludes/emu/fileio.h create mode 100644 src/icludes/emu/gamedrv.h create mode 100644 src/icludes/emu/hashfile.cpp create mode 100644 src/icludes/emu/hashfile.h create mode 100644 src/icludes/emu/http.cpp create mode 100644 src/icludes/emu/http.h create mode 100644 src/icludes/emu/image.cpp create mode 100644 src/icludes/emu/image.h create mode 100644 src/icludes/emu/inpttype.ipp create mode 100644 src/icludes/emu/input.cpp create mode 100644 src/icludes/emu/input.h create mode 100644 src/icludes/emu/inputdev.cpp create mode 100644 src/icludes/emu/inputdev.h create mode 100644 src/icludes/emu/ioport.cpp create mode 100644 src/icludes/emu/ioport.h create mode 100644 src/icludes/emu/layout/README.md create mode 100644 src/icludes/emu/layout/dualhovu.lay create mode 100644 src/icludes/emu/layout/dualhsxs.lay create mode 100644 src/icludes/emu/layout/dualhuov.lay create mode 100644 src/icludes/emu/layout/ex800.lay create mode 100644 src/icludes/emu/layout/exorterm155.lay create mode 100644 src/icludes/emu/layout/generic.h create mode 100644 src/icludes/emu/layout/hp9122c.lay create mode 100644 src/icludes/emu/layout/ie15.lay create mode 100644 src/icludes/emu/layout/lx800.lay create mode 100644 src/icludes/emu/layout/noscreens.lay create mode 100644 src/icludes/emu/layout/quadhsxs.lay create mode 100644 src/icludes/emu/layout/smartboard.lay create mode 100644 src/icludes/emu/layout/triphsxs.lay create mode 100644 src/icludes/emu/logmacro.h create mode 100644 src/icludes/emu/machine.cpp create mode 100644 src/icludes/emu/machine.h create mode 100644 src/icludes/emu/main.cpp create mode 100644 src/icludes/emu/main.h create mode 100644 src/icludes/emu/mconfig.cpp create mode 100644 src/icludes/emu/mconfig.h create mode 100644 src/icludes/emu/memarray.cpp create mode 100644 src/icludes/emu/memarray.h create mode 100644 src/icludes/emu/natkeyboard.cpp create mode 100644 src/icludes/emu/natkeyboard.h create mode 100644 src/icludes/emu/network.cpp create mode 100644 src/icludes/emu/network.h create mode 100644 src/icludes/emu/output.cpp create mode 100644 src/icludes/emu/output.h create mode 100644 src/icludes/emu/parameters.cpp create mode 100644 src/icludes/emu/parameters.h create mode 100644 src/icludes/emu/profiler.cpp create mode 100644 src/icludes/emu/profiler.h create mode 100644 src/icludes/emu/recording.cpp create mode 100644 src/icludes/emu/recording.h create mode 100644 src/icludes/emu/render.cpp create mode 100644 src/icludes/emu/render.h create mode 100644 src/icludes/emu/rendersw.hxx create mode 100644 src/icludes/emu/rendertypes.h create mode 100644 src/icludes/emu/rendfont.cpp create mode 100644 src/icludes/emu/rendfont.h create mode 100644 src/icludes/emu/rendlay.cpp create mode 100644 src/icludes/emu/rendlay.h create mode 100644 src/icludes/emu/rendutil.cpp create mode 100644 src/icludes/emu/rendutil.h create mode 100644 src/icludes/emu/romentry.cpp create mode 100644 src/icludes/emu/romentry.h create mode 100644 src/icludes/emu/romload.cpp create mode 100644 src/icludes/emu/romload.h create mode 100644 src/icludes/emu/save.cpp create mode 100644 src/icludes/emu/save.h create mode 100644 src/icludes/emu/schedule.cpp create mode 100644 src/icludes/emu/schedule.h create mode 100644 src/icludes/emu/screen.cpp create mode 100644 src/icludes/emu/screen.h create mode 100644 src/icludes/emu/softlist.cpp create mode 100644 src/icludes/emu/softlist.h create mode 100644 src/icludes/emu/softlist_dev.cpp create mode 100644 src/icludes/emu/softlist_dev.h create mode 100644 src/icludes/emu/sound.cpp create mode 100644 src/icludes/emu/sound.h create mode 100644 src/icludes/emu/speaker.cpp create mode 100644 src/icludes/emu/speaker.h create mode 100644 src/icludes/emu/tilemap.cpp create mode 100644 src/icludes/emu/tilemap.h create mode 100644 src/icludes/emu/ui/cmddata.h create mode 100644 src/icludes/emu/ui/uimain.h create mode 100644 src/icludes/emu/uiinput.cpp create mode 100644 src/icludes/emu/uiinput.h create mode 100644 src/icludes/emu/validity.cpp create mode 100644 src/icludes/emu/validity.h create mode 100644 src/icludes/emu/video.cpp create mode 100644 src/icludes/emu/video.h create mode 100644 src/icludes/emu/video/generic.cpp create mode 100644 src/icludes/emu/video/generic.h create mode 100644 src/icludes/emu/video/resnet.cpp create mode 100644 src/icludes/emu/video/resnet.h create mode 100644 src/icludes/emu/video/rgbgen.cpp create mode 100644 src/icludes/emu/video/rgbgen.h create mode 100644 src/icludes/emu/video/rgbsse.cpp create mode 100644 src/icludes/emu/video/rgbsse.h create mode 100644 src/icludes/emu/video/rgbutil.h create mode 100644 src/icludes/emu/video/rgbvmx.cpp create mode 100644 src/icludes/emu/video/rgbvmx.h create mode 100644 src/icludes/emu/xtal.cpp create mode 100644 src/icludes/emu/xtal.h create mode 100644 src/icludes/lib/formats/2d_dsk.cpp create mode 100644 src/icludes/lib/formats/2d_dsk.h create mode 100644 src/icludes/lib/formats/a26_cas.cpp create mode 100644 src/icludes/lib/formats/a26_cas.h create mode 100644 src/icludes/lib/formats/a5105_dsk.cpp create mode 100644 src/icludes/lib/formats/a5105_dsk.h create mode 100644 src/icludes/lib/formats/abc800_dsk.cpp create mode 100644 src/icludes/lib/formats/abc800_dsk.h create mode 100644 src/icludes/lib/formats/abcfd2_dsk.cpp create mode 100644 src/icludes/lib/formats/abcfd2_dsk.h create mode 100644 src/icludes/lib/formats/ace_tap.cpp create mode 100644 src/icludes/lib/formats/ace_tap.h create mode 100644 src/icludes/lib/formats/acorn_dsk.cpp create mode 100644 src/icludes/lib/formats/acorn_dsk.h create mode 100644 src/icludes/lib/formats/adam_cas.cpp create mode 100644 src/icludes/lib/formats/adam_cas.h create mode 100644 src/icludes/lib/formats/adam_dsk.cpp create mode 100644 src/icludes/lib/formats/adam_dsk.h create mode 100644 src/icludes/lib/formats/afs_dsk.cpp create mode 100644 src/icludes/lib/formats/afs_dsk.h create mode 100644 src/icludes/lib/formats/agat840k_hle_dsk.cpp create mode 100644 src/icludes/lib/formats/agat840k_hle_dsk.h create mode 100644 src/icludes/lib/formats/aim_dsk.cpp create mode 100644 src/icludes/lib/formats/aim_dsk.h create mode 100644 src/icludes/lib/formats/all.cpp create mode 100644 src/icludes/lib/formats/all.h create mode 100644 src/icludes/lib/formats/ami_dsk.cpp create mode 100644 src/icludes/lib/formats/ami_dsk.h create mode 100644 src/icludes/lib/formats/ap2_dsk.cpp create mode 100644 src/icludes/lib/formats/ap2_dsk.h create mode 100644 src/icludes/lib/formats/ap_dsk35.cpp create mode 100644 src/icludes/lib/formats/ap_dsk35.h create mode 100644 src/icludes/lib/formats/apd_dsk.cpp create mode 100644 src/icludes/lib/formats/apd_dsk.h create mode 100644 src/icludes/lib/formats/apf_apt.cpp create mode 100644 src/icludes/lib/formats/apf_apt.h create mode 100644 src/icludes/lib/formats/apollo_dsk.cpp create mode 100644 src/icludes/lib/formats/apollo_dsk.h create mode 100644 src/icludes/lib/formats/applix_dsk.cpp create mode 100644 src/icludes/lib/formats/applix_dsk.h create mode 100644 src/icludes/lib/formats/apridisk.cpp create mode 100644 src/icludes/lib/formats/apridisk.h create mode 100644 src/icludes/lib/formats/aquarius_caq.cpp create mode 100644 src/icludes/lib/formats/aquarius_caq.h create mode 100644 src/icludes/lib/formats/asst128_dsk.cpp create mode 100644 src/icludes/lib/formats/asst128_dsk.h create mode 100644 src/icludes/lib/formats/atari_dsk.cpp create mode 100644 src/icludes/lib/formats/atari_dsk.h create mode 100644 src/icludes/lib/formats/atom_dsk.cpp create mode 100644 src/icludes/lib/formats/atom_dsk.h create mode 100644 src/icludes/lib/formats/atom_tap.cpp create mode 100644 src/icludes/lib/formats/atom_tap.h create mode 100644 src/icludes/lib/formats/basicdsk.cpp create mode 100644 src/icludes/lib/formats/basicdsk.h create mode 100644 src/icludes/lib/formats/bw12_dsk.cpp create mode 100644 src/icludes/lib/formats/bw12_dsk.h create mode 100644 src/icludes/lib/formats/bw2_dsk.cpp create mode 100644 src/icludes/lib/formats/bw2_dsk.h create mode 100644 src/icludes/lib/formats/c3040_dsk.cpp create mode 100644 src/icludes/lib/formats/c3040_dsk.h create mode 100644 src/icludes/lib/formats/c4040_dsk.cpp create mode 100644 src/icludes/lib/formats/c4040_dsk.h create mode 100644 src/icludes/lib/formats/c8280_dsk.cpp create mode 100644 src/icludes/lib/formats/c8280_dsk.h create mode 100644 src/icludes/lib/formats/camplynx_cas.cpp create mode 100644 src/icludes/lib/formats/camplynx_cas.h create mode 100644 src/icludes/lib/formats/camplynx_dsk.cpp create mode 100644 src/icludes/lib/formats/camplynx_dsk.h create mode 100644 src/icludes/lib/formats/cassimg.cpp create mode 100644 src/icludes/lib/formats/cassimg.h create mode 100644 src/icludes/lib/formats/cbm_crt.cpp create mode 100644 src/icludes/lib/formats/cbm_crt.h create mode 100644 src/icludes/lib/formats/cbm_tap.cpp create mode 100644 src/icludes/lib/formats/cbm_tap.h create mode 100644 src/icludes/lib/formats/ccvf_dsk.cpp create mode 100644 src/icludes/lib/formats/ccvf_dsk.h create mode 100644 src/icludes/lib/formats/cd90_640_dsk.cpp create mode 100644 src/icludes/lib/formats/cd90_640_dsk.h create mode 100644 src/icludes/lib/formats/cgen_cas.cpp create mode 100644 src/icludes/lib/formats/cgen_cas.h create mode 100644 src/icludes/lib/formats/cgenie_dsk.cpp create mode 100644 src/icludes/lib/formats/cgenie_dsk.h create mode 100644 src/icludes/lib/formats/coco_cas.cpp create mode 100644 src/icludes/lib/formats/coco_cas.h create mode 100644 src/icludes/lib/formats/comx35_dsk.cpp create mode 100644 src/icludes/lib/formats/comx35_dsk.h create mode 100644 src/icludes/lib/formats/concept_dsk.cpp create mode 100644 src/icludes/lib/formats/concept_dsk.h create mode 100644 src/icludes/lib/formats/coupedsk.cpp create mode 100644 src/icludes/lib/formats/coupedsk.h create mode 100644 src/icludes/lib/formats/cpis_dsk.cpp create mode 100644 src/icludes/lib/formats/cpis_dsk.h create mode 100644 src/icludes/lib/formats/cqm_dsk.cpp create mode 100644 src/icludes/lib/formats/cqm_dsk.h create mode 100644 src/icludes/lib/formats/csw_cas.cpp create mode 100644 src/icludes/lib/formats/csw_cas.h create mode 100644 src/icludes/lib/formats/d64_dsk.cpp create mode 100644 src/icludes/lib/formats/d64_dsk.h create mode 100644 src/icludes/lib/formats/d71_dsk.cpp create mode 100644 src/icludes/lib/formats/d71_dsk.h create mode 100644 src/icludes/lib/formats/d80_dsk.cpp create mode 100644 src/icludes/lib/formats/d80_dsk.h create mode 100644 src/icludes/lib/formats/d81_dsk.cpp create mode 100644 src/icludes/lib/formats/d81_dsk.h create mode 100644 src/icludes/lib/formats/d82_dsk.cpp create mode 100644 src/icludes/lib/formats/d82_dsk.h create mode 100644 src/icludes/lib/formats/d88_dsk.cpp create mode 100644 src/icludes/lib/formats/d88_dsk.h create mode 100644 src/icludes/lib/formats/dcp_dsk.cpp create mode 100644 src/icludes/lib/formats/dcp_dsk.h create mode 100644 src/icludes/lib/formats/dfi_dsk.cpp create mode 100644 src/icludes/lib/formats/dfi_dsk.h create mode 100644 src/icludes/lib/formats/dim_dsk.cpp create mode 100644 src/icludes/lib/formats/dim_dsk.h create mode 100644 src/icludes/lib/formats/dip_dsk.cpp create mode 100644 src/icludes/lib/formats/dip_dsk.h create mode 100644 src/icludes/lib/formats/dmk_dsk.cpp create mode 100644 src/icludes/lib/formats/dmk_dsk.h create mode 100644 src/icludes/lib/formats/dmv_dsk.cpp create mode 100644 src/icludes/lib/formats/dmv_dsk.h create mode 100644 src/icludes/lib/formats/ds9_dsk.cpp create mode 100644 src/icludes/lib/formats/ds9_dsk.h create mode 100644 src/icludes/lib/formats/dsk_dsk.cpp create mode 100644 src/icludes/lib/formats/dsk_dsk.h create mode 100644 src/icludes/lib/formats/dvk_mx_dsk.cpp create mode 100644 src/icludes/lib/formats/dvk_mx_dsk.h create mode 100644 src/icludes/lib/formats/ep64_dsk.cpp create mode 100644 src/icludes/lib/formats/ep64_dsk.h create mode 100644 src/icludes/lib/formats/esq16_dsk.cpp create mode 100644 src/icludes/lib/formats/esq16_dsk.h create mode 100644 src/icludes/lib/formats/esq8_dsk.cpp create mode 100644 src/icludes/lib/formats/esq8_dsk.h create mode 100644 src/icludes/lib/formats/excali64_dsk.cpp create mode 100644 src/icludes/lib/formats/excali64_dsk.h create mode 100644 src/icludes/lib/formats/fc100_cas.cpp create mode 100644 src/icludes/lib/formats/fc100_cas.h create mode 100644 src/icludes/lib/formats/fdd_dsk.cpp create mode 100644 src/icludes/lib/formats/fdd_dsk.h create mode 100644 src/icludes/lib/formats/fdi_dsk.cpp create mode 100644 src/icludes/lib/formats/fl1_dsk.cpp create mode 100644 src/icludes/lib/formats/fl1_dsk.h create mode 100644 src/icludes/lib/formats/flex_dsk.cpp create mode 100644 src/icludes/lib/formats/flex_dsk.h create mode 100644 src/icludes/lib/formats/flopimg.cpp create mode 100644 src/icludes/lib/formats/flopimg.h create mode 100644 src/icludes/lib/formats/flopimg_legacy.cpp create mode 100644 src/icludes/lib/formats/flopimg_legacy.h create mode 100644 src/icludes/lib/formats/fm7_cas.cpp create mode 100644 src/icludes/lib/formats/fm7_cas.h create mode 100644 src/icludes/lib/formats/fmsx_cas.cpp create mode 100644 src/icludes/lib/formats/fmsx_cas.h create mode 100644 src/icludes/lib/formats/fmtowns_dsk.cpp create mode 100644 src/icludes/lib/formats/fmtowns_dsk.h create mode 100644 src/icludes/lib/formats/fs_oric_jasmin.cpp create mode 100644 src/icludes/lib/formats/fs_oric_jasmin.h create mode 100644 src/icludes/lib/formats/fs_prodos.cpp create mode 100644 src/icludes/lib/formats/fs_prodos.h create mode 100644 src/icludes/lib/formats/fs_unformatted.cpp create mode 100644 src/icludes/lib/formats/fs_unformatted.h create mode 100644 src/icludes/lib/formats/fs_vtech.cpp create mode 100644 src/icludes/lib/formats/fs_vtech.h create mode 100644 src/icludes/lib/formats/fsblk_vec.cpp create mode 100644 src/icludes/lib/formats/fsblk_vec.h create mode 100644 src/icludes/lib/formats/fsd_dsk.cpp create mode 100644 src/icludes/lib/formats/fsd_dsk.h create mode 100644 src/icludes/lib/formats/fsmgr.cpp create mode 100644 src/icludes/lib/formats/fsmgr.h create mode 100644 src/icludes/lib/formats/g64_dsk.cpp create mode 100644 src/icludes/lib/formats/g64_dsk.h create mode 100644 src/icludes/lib/formats/gtp_cas.cpp create mode 100644 src/icludes/lib/formats/gtp_cas.h create mode 100644 src/icludes/lib/formats/guab_dsk.cpp create mode 100644 src/icludes/lib/formats/guab_dsk.h create mode 100644 src/icludes/lib/formats/h8_cas.cpp create mode 100644 src/icludes/lib/formats/h8_cas.h create mode 100644 src/icludes/lib/formats/hect_dsk.cpp create mode 100644 src/icludes/lib/formats/hect_dsk.h create mode 100644 src/icludes/lib/formats/hect_tap.cpp create mode 100644 src/icludes/lib/formats/hect_tap.h create mode 100644 src/icludes/lib/formats/hector_minidisc.cpp create mode 100644 src/icludes/lib/formats/hector_minidisc.h create mode 100644 src/icludes/lib/formats/hp_ipc_dsk.cpp create mode 100644 src/icludes/lib/formats/hp_ipc_dsk.h create mode 100644 src/icludes/lib/formats/hpi_dsk.cpp create mode 100644 src/icludes/lib/formats/hpi_dsk.h create mode 100644 src/icludes/lib/formats/hti_tape.cpp create mode 100644 src/icludes/lib/formats/hti_tape.h create mode 100644 src/icludes/lib/formats/hxchfe_dsk.cpp create mode 100644 src/icludes/lib/formats/hxchfe_dsk.h create mode 100644 src/icludes/lib/formats/hxcmfm_dsk.cpp create mode 100644 src/icludes/lib/formats/hxcmfm_dsk.h create mode 100644 src/icludes/lib/formats/ibmxdf_dsk.cpp create mode 100644 src/icludes/lib/formats/ibmxdf_dsk.h create mode 100644 src/icludes/lib/formats/imageutl.cpp create mode 100644 src/icludes/lib/formats/imageutl.h create mode 100644 src/icludes/lib/formats/imd_dsk.cpp create mode 100644 src/icludes/lib/formats/imd_dsk.h create mode 100644 src/icludes/lib/formats/img_dsk.cpp create mode 100644 src/icludes/lib/formats/img_dsk.h create mode 100644 src/icludes/lib/formats/ipf_dsk.cpp create mode 100644 src/icludes/lib/formats/ipf_dsk.h create mode 100644 src/icludes/lib/formats/iq151_dsk.cpp create mode 100644 src/icludes/lib/formats/iq151_dsk.h create mode 100644 src/icludes/lib/formats/itt3030_dsk.cpp create mode 100644 src/icludes/lib/formats/itt3030_dsk.h create mode 100644 src/icludes/lib/formats/jfd_dsk.cpp create mode 100644 src/icludes/lib/formats/jfd_dsk.h create mode 100644 src/icludes/lib/formats/juku_dsk.cpp create mode 100644 src/icludes/lib/formats/juku_dsk.h create mode 100644 src/icludes/lib/formats/jvc_dsk.cpp create mode 100644 src/icludes/lib/formats/jvc_dsk.h create mode 100644 src/icludes/lib/formats/kaypro_dsk.cpp create mode 100644 src/icludes/lib/formats/kaypro_dsk.h create mode 100644 src/icludes/lib/formats/kc85_dsk.cpp create mode 100644 src/icludes/lib/formats/kc85_dsk.h create mode 100644 src/icludes/lib/formats/kc_cas.cpp create mode 100644 src/icludes/lib/formats/kc_cas.h create mode 100644 src/icludes/lib/formats/kim1_cas.cpp create mode 100644 src/icludes/lib/formats/kim1_cas.h create mode 100644 src/icludes/lib/formats/lviv_lvt.cpp create mode 100644 src/icludes/lib/formats/lviv_lvt.h create mode 100644 src/icludes/lib/formats/m20_dsk.cpp create mode 100644 src/icludes/lib/formats/m20_dsk.h create mode 100644 src/icludes/lib/formats/m5_dsk.cpp create mode 100644 src/icludes/lib/formats/m5_dsk.h create mode 100644 src/icludes/lib/formats/mbee_cas.cpp create mode 100644 src/icludes/lib/formats/mbee_cas.h create mode 100644 src/icludes/lib/formats/mdos_dsk.cpp create mode 100644 src/icludes/lib/formats/mdos_dsk.h create mode 100644 src/icludes/lib/formats/mfi_dsk.cpp create mode 100644 src/icludes/lib/formats/mfi_dsk.h create mode 100644 src/icludes/lib/formats/mfm_hd.cpp create mode 100644 src/icludes/lib/formats/mfm_hd.h create mode 100644 src/icludes/lib/formats/mm_dsk.cpp create mode 100644 src/icludes/lib/formats/mm_dsk.h create mode 100644 src/icludes/lib/formats/ms0515_dsk.cpp create mode 100644 src/icludes/lib/formats/ms0515_dsk.h create mode 100644 src/icludes/lib/formats/msx_dsk.cpp create mode 100644 src/icludes/lib/formats/msx_dsk.h create mode 100644 src/icludes/lib/formats/mtx_dsk.cpp create mode 100644 src/icludes/lib/formats/mtx_dsk.h create mode 100644 src/icludes/lib/formats/mz_cas.cpp create mode 100644 src/icludes/lib/formats/mz_cas.h create mode 100644 src/icludes/lib/formats/nanos_dsk.cpp create mode 100644 src/icludes/lib/formats/nanos_dsk.h create mode 100644 src/icludes/lib/formats/nascom_dsk.cpp create mode 100644 src/icludes/lib/formats/nascom_dsk.h create mode 100644 src/icludes/lib/formats/naslite_dsk.cpp create mode 100644 src/icludes/lib/formats/naslite_dsk.h create mode 100644 src/icludes/lib/formats/nes_dsk.cpp create mode 100644 src/icludes/lib/formats/nes_dsk.h create mode 100644 src/icludes/lib/formats/nfd_dsk.cpp create mode 100644 src/icludes/lib/formats/nfd_dsk.h create mode 100644 src/icludes/lib/formats/opd_dsk.cpp create mode 100644 src/icludes/lib/formats/opd_dsk.h create mode 100644 src/icludes/lib/formats/orao_cas.cpp create mode 100644 src/icludes/lib/formats/orao_cas.h create mode 100644 src/icludes/lib/formats/oric_dsk.cpp create mode 100644 src/icludes/lib/formats/oric_dsk.h create mode 100644 src/icludes/lib/formats/oric_tap.cpp create mode 100644 src/icludes/lib/formats/oric_tap.h create mode 100644 src/icludes/lib/formats/os9_dsk.cpp create mode 100644 src/icludes/lib/formats/os9_dsk.h create mode 100644 src/icludes/lib/formats/p2000t_cas.cpp create mode 100644 src/icludes/lib/formats/p2000t_cas.h create mode 100644 src/icludes/lib/formats/p6001_cas.cpp create mode 100644 src/icludes/lib/formats/p6001_cas.h create mode 100644 src/icludes/lib/formats/pasti_dsk.cpp create mode 100644 src/icludes/lib/formats/pasti_dsk.h create mode 100644 src/icludes/lib/formats/pc98_dsk.cpp create mode 100644 src/icludes/lib/formats/pc98_dsk.h create mode 100644 src/icludes/lib/formats/pc98fdi_dsk.cpp create mode 100644 src/icludes/lib/formats/pc98fdi_dsk.h create mode 100644 src/icludes/lib/formats/pc_dsk.cpp create mode 100644 src/icludes/lib/formats/pc_dsk.h create mode 100644 src/icludes/lib/formats/phc25_cas.cpp create mode 100644 src/icludes/lib/formats/phc25_cas.h create mode 100644 src/icludes/lib/formats/pk8020_dsk.cpp create mode 100644 src/icludes/lib/formats/pk8020_dsk.h create mode 100644 src/icludes/lib/formats/pmd_cas.cpp create mode 100644 src/icludes/lib/formats/pmd_cas.h create mode 100644 src/icludes/lib/formats/poly_dsk.cpp create mode 100644 src/icludes/lib/formats/poly_dsk.h create mode 100644 src/icludes/lib/formats/ppg_dsk.cpp create mode 100644 src/icludes/lib/formats/ppg_dsk.h create mode 100644 src/icludes/lib/formats/primoptp.cpp create mode 100644 src/icludes/lib/formats/primoptp.h create mode 100644 src/icludes/lib/formats/pyldin_dsk.cpp create mode 100644 src/icludes/lib/formats/pyldin_dsk.h create mode 100644 src/icludes/lib/formats/ql_dsk.cpp create mode 100644 src/icludes/lib/formats/ql_dsk.h create mode 100644 src/icludes/lib/formats/rc759_dsk.cpp create mode 100644 src/icludes/lib/formats/rc759_dsk.h create mode 100644 src/icludes/lib/formats/rk_cas.cpp create mode 100644 src/icludes/lib/formats/rk_cas.h create mode 100644 src/icludes/lib/formats/rpk.cpp create mode 100644 src/icludes/lib/formats/rpk.h create mode 100644 src/icludes/lib/formats/rx50_dsk.cpp create mode 100644 src/icludes/lib/formats/rx50_dsk.h create mode 100644 src/icludes/lib/formats/sc3000_bit.cpp create mode 100644 src/icludes/lib/formats/sc3000_bit.h create mode 100644 src/icludes/lib/formats/sdd_dsk.cpp create mode 100644 src/icludes/lib/formats/sdd_dsk.h create mode 100644 src/icludes/lib/formats/sdf_dsk.cpp create mode 100644 src/icludes/lib/formats/sdf_dsk.h create mode 100644 src/icludes/lib/formats/sf7000_dsk.cpp create mode 100644 src/icludes/lib/formats/sf7000_dsk.h create mode 100644 src/icludes/lib/formats/smx_dsk.cpp create mode 100644 src/icludes/lib/formats/smx_dsk.h create mode 100644 src/icludes/lib/formats/sol_cas.cpp create mode 100644 src/icludes/lib/formats/sol_cas.h create mode 100644 src/icludes/lib/formats/sorc_cas.cpp create mode 100644 src/icludes/lib/formats/sorc_cas.h create mode 100644 src/icludes/lib/formats/sorc_dsk.cpp create mode 100644 src/icludes/lib/formats/sorc_dsk.h create mode 100644 src/icludes/lib/formats/sord_cas.cpp create mode 100644 src/icludes/lib/formats/sord_cas.h create mode 100644 src/icludes/lib/formats/spc1000_cas.cpp create mode 100644 src/icludes/lib/formats/spc1000_cas.h create mode 100644 src/icludes/lib/formats/st_dsk.cpp create mode 100644 src/icludes/lib/formats/st_dsk.h create mode 100644 src/icludes/lib/formats/svi_cas.cpp create mode 100644 src/icludes/lib/formats/svi_cas.h create mode 100644 src/icludes/lib/formats/svi_dsk.cpp create mode 100644 src/icludes/lib/formats/svi_dsk.h create mode 100644 src/icludes/lib/formats/swd_dsk.cpp create mode 100644 src/icludes/lib/formats/swd_dsk.h create mode 100644 src/icludes/lib/formats/tandy2k_dsk.cpp create mode 100644 src/icludes/lib/formats/tandy2k_dsk.h create mode 100644 src/icludes/lib/formats/td0_dsk.cpp create mode 100644 src/icludes/lib/formats/td0_dsk.h create mode 100644 src/icludes/lib/formats/thom_cas.cpp create mode 100644 src/icludes/lib/formats/thom_cas.h create mode 100644 src/icludes/lib/formats/thom_dsk.cpp create mode 100644 src/icludes/lib/formats/thom_dsk.h create mode 100644 src/icludes/lib/formats/ti99_dsk.cpp create mode 100644 src/icludes/lib/formats/ti99_dsk.h create mode 100644 src/icludes/lib/formats/tiki100_dsk.cpp create mode 100644 src/icludes/lib/formats/tiki100_dsk.h create mode 100644 src/icludes/lib/formats/trd_dsk.cpp create mode 100644 src/icludes/lib/formats/trd_dsk.h create mode 100644 src/icludes/lib/formats/trs80_dsk.cpp create mode 100644 src/icludes/lib/formats/trs80_dsk.h create mode 100644 src/icludes/lib/formats/trs_cas.cpp create mode 100644 src/icludes/lib/formats/trs_cas.h create mode 100644 src/icludes/lib/formats/tvc_cas.cpp create mode 100644 src/icludes/lib/formats/tvc_cas.h create mode 100644 src/icludes/lib/formats/tvc_dsk.cpp create mode 100644 src/icludes/lib/formats/tvc_dsk.h create mode 100644 src/icludes/lib/formats/tzx_cas.cpp create mode 100644 src/icludes/lib/formats/tzx_cas.h create mode 100644 src/icludes/lib/formats/uef_cas.cpp create mode 100644 src/icludes/lib/formats/uef_cas.h create mode 100644 src/icludes/lib/formats/uniflex_dsk.cpp create mode 100644 src/icludes/lib/formats/uniflex_dsk.h create mode 100644 src/icludes/lib/formats/upd765_dsk.cpp create mode 100644 src/icludes/lib/formats/upd765_dsk.h create mode 100644 src/icludes/lib/formats/vdk_dsk.cpp create mode 100644 src/icludes/lib/formats/vdk_dsk.h create mode 100644 src/icludes/lib/formats/vector06_dsk.cpp create mode 100644 src/icludes/lib/formats/vector06_dsk.h create mode 100644 src/icludes/lib/formats/vg5k_cas.cpp create mode 100644 src/icludes/lib/formats/vg5k_cas.h create mode 100644 src/icludes/lib/formats/victor9k_dsk.cpp create mode 100644 src/icludes/lib/formats/victor9k_dsk.h create mode 100644 src/icludes/lib/formats/vt_cas.cpp create mode 100644 src/icludes/lib/formats/vt_cas.h create mode 100644 src/icludes/lib/formats/vt_dsk.cpp create mode 100644 src/icludes/lib/formats/vt_dsk.h create mode 100644 src/icludes/lib/formats/wavfile.cpp create mode 100644 src/icludes/lib/formats/wavfile.h create mode 100644 src/icludes/lib/formats/wd177x_dsk.cpp create mode 100644 src/icludes/lib/formats/wd177x_dsk.h create mode 100644 src/icludes/lib/formats/x07_cas.cpp create mode 100644 src/icludes/lib/formats/x07_cas.h create mode 100644 src/icludes/lib/formats/x1_tap.cpp create mode 100644 src/icludes/lib/formats/x1_tap.h create mode 100644 src/icludes/lib/formats/xdf_dsk.cpp create mode 100644 src/icludes/lib/formats/xdf_dsk.h create mode 100644 src/icludes/lib/formats/zx81_p.cpp create mode 100644 src/icludes/lib/formats/zx81_p.h create mode 100644 src/icludes/lib/netlist/.clang-tidy create mode 100644 src/icludes/lib/netlist/.gitignore create mode 100644 src/icludes/lib/netlist/adding_devices.md create mode 100644 src/icludes/lib/netlist/analog/nld_bjt.cpp create mode 100644 src/icludes/lib/netlist/analog/nld_generic_models.h create mode 100644 src/icludes/lib/netlist/analog/nld_mosfet.cpp create mode 100644 src/icludes/lib/netlist/analog/nld_opamps.cpp create mode 100644 src/icludes/lib/netlist/analog/nld_switches.cpp create mode 100644 src/icludes/lib/netlist/analog/nlid_fourterm.cpp create mode 100644 src/icludes/lib/netlist/analog/nlid_fourterm.h create mode 100644 src/icludes/lib/netlist/analog/nlid_twoterm.cpp create mode 100644 src/icludes/lib/netlist/analog/nlid_twoterm.h create mode 100644 src/icludes/lib/netlist/build/create_devinc.py create mode 100644 src/icludes/lib/netlist/build/create_lib_entries.py create mode 100644 src/icludes/lib/netlist/build/create_modules.py create mode 100644 src/icludes/lib/netlist/build/doxygen.conf create mode 100644 src/icludes/lib/netlist/build/makefile create mode 100644 src/icludes/lib/netlist/build/nltool.help2man create mode 100644 src/icludes/lib/netlist/build/nlwav.help2man create mode 100755 src/icludes/lib/netlist/buildVS/netlist.sln create mode 100755 src/icludes/lib/netlist/buildVS/netlistlib.vcxproj create mode 100755 src/icludes/lib/netlist/buildVS/netlistlib.vcxproj.filters create mode 100755 src/icludes/lib/netlist/buildVS/nltool.vcxproj create mode 100755 src/icludes/lib/netlist/buildVS/nltool.vcxproj.filters create mode 100755 src/icludes/lib/netlist/buildVS/nlwav.vcxproj create mode 100755 src/icludes/lib/netlist/buildVS/nlwav.vcxproj.filters create mode 100644 src/icludes/lib/netlist/core/analog.h create mode 100644 src/icludes/lib/netlist/core/base_objects.h create mode 100644 src/icludes/lib/netlist/core/core_device.h create mode 100644 src/icludes/lib/netlist/core/device.h create mode 100644 src/icludes/lib/netlist/core/device_macros.h create mode 100644 src/icludes/lib/netlist/core/devices.h create mode 100644 src/icludes/lib/netlist/core/exec.h create mode 100644 src/icludes/lib/netlist/core/logic.h create mode 100644 src/icludes/lib/netlist/core/logic_family.h create mode 100644 src/icludes/lib/netlist/core/netlist_state.h create mode 100644 src/icludes/lib/netlist/core/nets.h create mode 100644 src/icludes/lib/netlist/core/object_array.h create mode 100644 src/icludes/lib/netlist/core/param.h create mode 100644 src/icludes/lib/netlist/core/queue.h create mode 100644 src/icludes/lib/netlist/core/setup.h create mode 100644 src/icludes/lib/netlist/core/state_var.h create mode 100644 src/icludes/lib/netlist/devices/net_lib.cpp create mode 100644 src/icludes/lib/netlist/devices/net_lib.h create mode 100755 src/icludes/lib/netlist/devices/nld_2102a.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_4006.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_4013.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_4017.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_4020.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_4029.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_4042.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_4053.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_4066.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_4076.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_4316.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74107.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74113.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74123.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74125.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74153.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74161.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74163.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74164.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74165.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74166.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74174.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74175.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74192.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74193.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74194.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74365.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74377.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74393.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_7448.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_7450.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_7473.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_7474.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_7475.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_7483.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_7485.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_7490.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_7492.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_7493.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_7497.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_74ls629.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_8277.cpp create mode 100755 src/icludes/lib/netlist/devices/nld_82s115.cpp create mode 100755 src/icludes/lib/netlist/devices/nld_82s16.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_9310.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_9316.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_9316_base.hxx create mode 100644 src/icludes/lib/netlist/devices/nld_9321.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_9322.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_am2847.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_dm9314.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_dm9334.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_legacy.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_log.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_mm5837.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_ne555.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_r2r_dac.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_roms.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_schmitt.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_system.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_tms4800.cpp create mode 100644 src/icludes/lib/netlist/devices/nld_tristate.cpp create mode 100644 src/icludes/lib/netlist/devices/nlid_proxy.cpp create mode 100644 src/icludes/lib/netlist/devices/nlid_proxy.h create mode 100644 src/icludes/lib/netlist/devices/nlid_system.h create mode 100644 src/icludes/lib/netlist/devices/nlid_truthtable.cpp create mode 100644 src/icludes/lib/netlist/devices/nlid_truthtable.h create mode 100644 src/icludes/lib/netlist/documentation/doc.css create mode 100644 src/icludes/lib/netlist/documentation/mainpage.dox.h create mode 100644 src/icludes/lib/netlist/documentation/primer_1.dox.h create mode 100644 src/icludes/lib/netlist/documentation/structure.dox.h create mode 100644 src/icludes/lib/netlist/documentation/test1-50r.svg create mode 100644 src/icludes/lib/netlist/examples/2n6027.cpp create mode 100644 src/icludes/lib/netlist/examples/7400_astable.c create mode 100644 src/icludes/lib/netlist/examples/74123_mstable.c create mode 100644 src/icludes/lib/netlist/examples/74125.cpp create mode 100644 src/icludes/lib/netlist/examples/7414.cpp create mode 100644 src/icludes/lib/netlist/examples/9602_mstable.c create mode 100644 src/icludes/lib/netlist/examples/bjt.c create mode 100644 src/icludes/lib/netlist/examples/bjt_eb.c create mode 100644 src/icludes/lib/netlist/examples/bjt_eb_pnp.c create mode 100644 src/icludes/lib/netlist/examples/cccs.cpp create mode 100644 src/icludes/lib/netlist/examples/cd4066.c create mode 100644 src/icludes/lib/netlist/examples/cdelay.c create mode 100644 src/icludes/lib/netlist/examples/cmos_inverter.cpp create mode 100644 src/icludes/lib/netlist/examples/cmos_inverter_clk.cpp create mode 100644 src/icludes/lib/netlist/examples/congo_bongo.cpp create mode 100644 src/icludes/lib/netlist/examples/congo_bongo.csv create mode 100644 src/icludes/lib/netlist/examples/cs.cpp create mode 100644 src/icludes/lib/netlist/examples/diode.c create mode 100644 src/icludes/lib/netlist/examples/lm3900_test.cpp create mode 100644 src/icludes/lib/netlist/examples/lostfound.cpp create mode 100644 src/icludes/lib/netlist/examples/mm5837_noise.c create mode 100644 src/icludes/lib/netlist/examples/msx_mixer_stage.c create mode 100644 src/icludes/lib/netlist/examples/ne555_astable.c create mode 100644 src/icludes/lib/netlist/examples/ne566.cpp create mode 100644 src/icludes/lib/netlist/examples/nld_74393_test.c create mode 100644 src/icludes/lib/netlist/examples/nmos_fet.cpp create mode 100644 src/icludes/lib/netlist/examples/noise.cpp create mode 100644 src/icludes/lib/netlist/examples/norton_opamp.c create mode 100644 src/icludes/lib/netlist/examples/opamp.c create mode 100644 src/icludes/lib/netlist/examples/opamp_amplification_curve.cpp create mode 100644 src/icludes/lib/netlist/examples/rc.c create mode 100644 src/icludes/lib/netlist/examples/rl.c create mode 100644 src/icludes/lib/netlist/examples/sn74ls629_osc.c create mode 100644 src/icludes/lib/netlist/examples/test.c create mode 100644 src/icludes/lib/netlist/examples/todo.c create mode 100644 src/icludes/lib/netlist/examples/turkey_shoot.cpp create mode 100644 src/icludes/lib/netlist/examples/turkey_shoot.csv create mode 100644 src/icludes/lib/netlist/examples/vccs.c create mode 100644 src/icludes/lib/netlist/examples/vccs1.c create mode 100644 src/icludes/lib/netlist/examples/vs_cs.c create mode 100644 src/icludes/lib/netlist/examples/zdiode.cpp create mode 100755 src/icludes/lib/netlist/generated/lib_entries.hxx create mode 100755 src/icludes/lib/netlist/generated/nld_devinc.h create mode 100755 src/icludes/lib/netlist/generated/nlm_modules_lib.cpp create mode 100644 src/icludes/lib/netlist/generated/static_solvers.cpp create mode 100755 src/icludes/lib/netlist/macro/modules/nlmod_icl8038_dip.cpp create mode 100755 src/icludes/lib/netlist/macro/modules/nlmod_ne556_dip.cpp create mode 100755 src/icludes/lib/netlist/macro/modules/nlmod_rtest.cpp create mode 100644 src/icludes/lib/netlist/macro/nlm_base_lib.cpp create mode 100644 src/icludes/lib/netlist/macro/nlm_cd4xxx_lib.cpp create mode 100644 src/icludes/lib/netlist/macro/nlm_opamp_lib.cpp create mode 100644 src/icludes/lib/netlist/macro/nlm_otheric_lib.cpp create mode 100644 src/icludes/lib/netlist/macro/nlm_roms_lib.cpp create mode 100644 src/icludes/lib/netlist/macro/nlm_ttl74xx_lib.cpp create mode 100644 src/icludes/lib/netlist/netlist.cppcheck create mode 100644 src/icludes/lib/netlist/nl_base.cpp create mode 100644 src/icludes/lib/netlist/nl_base.h create mode 100644 src/icludes/lib/netlist/nl_config.h create mode 100644 src/icludes/lib/netlist/nl_create_mame_solvers.sh create mode 100644 src/icludes/lib/netlist/nl_dice_compat.h create mode 100644 src/icludes/lib/netlist/nl_errstr.h create mode 100644 src/icludes/lib/netlist/nl_factory.cpp create mode 100644 src/icludes/lib/netlist/nl_factory.h create mode 100644 src/icludes/lib/netlist/nl_interface.h create mode 100644 src/icludes/lib/netlist/nl_parser.cpp create mode 100644 src/icludes/lib/netlist/nl_parser.h create mode 100644 src/icludes/lib/netlist/nl_setup.cpp create mode 100644 src/icludes/lib/netlist/nl_setup.h create mode 100644 src/icludes/lib/netlist/nltypes.h create mode 100644 src/icludes/lib/netlist/plib/gmres.h create mode 100644 src/icludes/lib/netlist/plib/palloc.h create mode 100644 src/icludes/lib/netlist/plib/parray.h create mode 100755 src/icludes/lib/netlist/plib/pchrono.h create mode 100644 src/icludes/lib/netlist/plib/pconfig.h create mode 100644 src/icludes/lib/netlist/plib/pdynlib.cpp create mode 100644 src/icludes/lib/netlist/plib/pdynlib.h create mode 100644 src/icludes/lib/netlist/plib/penum.h create mode 100644 src/icludes/lib/netlist/plib/pexception.cpp create mode 100644 src/icludes/lib/netlist/plib/pexception.h create mode 100644 src/icludes/lib/netlist/plib/pfmtlog.cpp create mode 100644 src/icludes/lib/netlist/plib/pfmtlog.h create mode 100644 src/icludes/lib/netlist/plib/pfunction.cpp create mode 100644 src/icludes/lib/netlist/plib/pfunction.h create mode 100644 src/icludes/lib/netlist/plib/pgsl.h create mode 100755 src/icludes/lib/netlist/plib/plists.h create mode 100644 src/icludes/lib/netlist/plib/pmain.cpp create mode 100755 src/icludes/lib/netlist/plib/pmain.h create mode 100644 src/icludes/lib/netlist/plib/pmath.h create mode 100755 src/icludes/lib/netlist/plib/pmatrix2d.h create mode 100644 src/icludes/lib/netlist/plib/pmatrix_cr.h create mode 100644 src/icludes/lib/netlist/plib/pmempool.h create mode 100644 src/icludes/lib/netlist/plib/pmulti_threading.h create mode 100644 src/icludes/lib/netlist/plib/pomp.h create mode 100644 src/icludes/lib/netlist/plib/poptions.cpp create mode 100644 src/icludes/lib/netlist/plib/poptions.h create mode 100644 src/icludes/lib/netlist/plib/ppmf.h create mode 100644 src/icludes/lib/netlist/plib/ppreprocessor.cpp create mode 100644 src/icludes/lib/netlist/plib/ppreprocessor.h create mode 100644 src/icludes/lib/netlist/plib/prandom.h create mode 100644 src/icludes/lib/netlist/plib/psource.h create mode 100644 src/icludes/lib/netlist/plib/pstate.h create mode 100644 src/icludes/lib/netlist/plib/pstonum.h create mode 100644 src/icludes/lib/netlist/plib/pstream.h create mode 100644 src/icludes/lib/netlist/plib/pstring.cpp create mode 100644 src/icludes/lib/netlist/plib/pstring.h create mode 100644 src/icludes/lib/netlist/plib/pstrutil.h create mode 100644 src/icludes/lib/netlist/plib/ptests.h create mode 100644 src/icludes/lib/netlist/plib/ptime.h create mode 100644 src/icludes/lib/netlist/plib/ptimed_queue.h create mode 100644 src/icludes/lib/netlist/plib/ptokenizer.cpp create mode 100644 src/icludes/lib/netlist/plib/ptokenizer.h create mode 100644 src/icludes/lib/netlist/plib/ptypes.h create mode 100644 src/icludes/lib/netlist/plib/putil.cpp create mode 100644 src/icludes/lib/netlist/plib/putil.h create mode 100644 src/icludes/lib/netlist/plib/vector_ops.h create mode 100644 src/icludes/lib/netlist/prg/nltool.cpp create mode 100755 src/icludes/lib/netlist/prg/nlwav.cpp create mode 100644 src/icludes/lib/netlist/solver/nld_matrix_solver.cpp create mode 100644 src/icludes/lib/netlist/solver/nld_matrix_solver.h create mode 100644 src/icludes/lib/netlist/solver/nld_matrix_solver_ext.h create mode 100644 src/icludes/lib/netlist/solver/nld_ms_direct.h create mode 100644 src/icludes/lib/netlist/solver/nld_ms_direct1.h create mode 100644 src/icludes/lib/netlist/solver/nld_ms_direct2.h create mode 100644 src/icludes/lib/netlist/solver/nld_ms_direct_lu.h create mode 100644 src/icludes/lib/netlist/solver/nld_ms_gcr.h create mode 100644 src/icludes/lib/netlist/solver/nld_ms_gmres.h create mode 100644 src/icludes/lib/netlist/solver/nld_ms_sm.h create mode 100644 src/icludes/lib/netlist/solver/nld_ms_sor.h create mode 100644 src/icludes/lib/netlist/solver/nld_ms_sor_mat.h create mode 100644 src/icludes/lib/netlist/solver/nld_ms_w.h create mode 100644 src/icludes/lib/netlist/solver/nld_solver.cpp create mode 100644 src/icludes/lib/netlist/solver/nld_solver.h create mode 100644 src/icludes/lib/netlist/tests/test_pfunction.cpp create mode 100644 src/icludes/lib/netlist/tests/test_pstring.cpp create mode 100644 src/icludes/lib/netlist/tools/nl_convert.cpp create mode 100755 src/icludes/lib/netlist/tools/nl_convert.h create mode 100644 src/icludes/lib/util/abi.h create mode 100644 src/icludes/lib/util/avhuff.cpp create mode 100644 src/icludes/lib/util/avhuff.h create mode 100644 src/icludes/lib/util/aviio.cpp create mode 100644 src/icludes/lib/util/aviio.h create mode 100644 src/icludes/lib/util/base64.hpp create mode 100644 src/icludes/lib/util/bitmap.cpp create mode 100644 src/icludes/lib/util/bitmap.h create mode 100644 src/icludes/lib/util/bitstream.h create mode 100644 src/icludes/lib/util/cdrom.cpp create mode 100644 src/icludes/lib/util/cdrom.h create mode 100644 src/icludes/lib/util/chd.cpp create mode 100644 src/icludes/lib/util/chd.h create mode 100644 src/icludes/lib/util/chdcd.cpp create mode 100644 src/icludes/lib/util/chdcd.h create mode 100644 src/icludes/lib/util/chdcodec.cpp create mode 100644 src/icludes/lib/util/chdcodec.h create mode 100644 src/icludes/lib/util/client_http.hpp create mode 100644 src/icludes/lib/util/client_https.hpp create mode 100644 src/icludes/lib/util/client_ws.hpp create mode 100644 src/icludes/lib/util/client_wss.hpp create mode 100644 src/icludes/lib/util/corealloc.cpp create mode 100644 src/icludes/lib/util/corealloc.h create mode 100644 src/icludes/lib/util/corefile.cpp create mode 100644 src/icludes/lib/util/corefile.h create mode 100644 src/icludes/lib/util/corestr.cpp create mode 100644 src/icludes/lib/util/corestr.h create mode 100644 src/icludes/lib/util/coretmpl.h create mode 100644 src/icludes/lib/util/coreutil.cpp create mode 100644 src/icludes/lib/util/coreutil.h create mode 100644 src/icludes/lib/util/crypto.hpp create mode 100644 src/icludes/lib/util/delegate.cpp create mode 100644 src/icludes/lib/util/delegate.h create mode 100644 src/icludes/lib/util/disasmintf.cpp create mode 100644 src/icludes/lib/util/disasmintf.h create mode 100644 src/icludes/lib/util/dynamicclass.cpp create mode 100644 src/icludes/lib/util/dynamicclass.h create mode 100644 src/icludes/lib/util/dynamicclass.ipp create mode 100644 src/icludes/lib/util/endianness.h create mode 100644 src/icludes/lib/util/flac.cpp create mode 100644 src/icludes/lib/util/flac.h create mode 100644 src/icludes/lib/util/harddisk.cpp create mode 100644 src/icludes/lib/util/harddisk.h create mode 100644 src/icludes/lib/util/hash.cpp create mode 100644 src/icludes/lib/util/hash.h create mode 100644 src/icludes/lib/util/hashing.cpp create mode 100644 src/icludes/lib/util/hashing.h create mode 100644 src/icludes/lib/util/huffman.cpp create mode 100644 src/icludes/lib/util/huffman.h create mode 100644 src/icludes/lib/util/ioprocs.cpp create mode 100644 src/icludes/lib/util/ioprocs.h create mode 100644 src/icludes/lib/util/ioprocsfill.h create mode 100644 src/icludes/lib/util/ioprocsfilter.cpp create mode 100644 src/icludes/lib/util/ioprocsfilter.h create mode 100644 src/icludes/lib/util/ioprocsvec.h create mode 100644 src/icludes/lib/util/jedparse.cpp create mode 100644 src/icludes/lib/util/jedparse.h create mode 100644 src/icludes/lib/util/language.cpp create mode 100644 src/icludes/lib/util/language.h create mode 100644 src/icludes/lib/util/lrucache.h create mode 100644 src/icludes/lib/util/md5.cpp create mode 100644 src/icludes/lib/util/md5.h create mode 100644 src/icludes/lib/util/msdib.cpp create mode 100644 src/icludes/lib/util/msdib.h create mode 100644 src/icludes/lib/util/nanosvg.cpp create mode 100644 src/icludes/lib/util/nanosvg.h create mode 100644 src/icludes/lib/util/opresolv.cpp create mode 100644 src/icludes/lib/util/opresolv.h create mode 100644 src/icludes/lib/util/options.cpp create mode 100644 src/icludes/lib/util/options.h create mode 100644 src/icludes/lib/util/palette.cpp create mode 100644 src/icludes/lib/util/palette.h create mode 100644 src/icludes/lib/util/path.cpp create mode 100644 src/icludes/lib/util/path.h create mode 100644 src/icludes/lib/util/path_to_regex.cpp create mode 100644 src/icludes/lib/util/path_to_regex.hpp create mode 100644 src/icludes/lib/util/plaparse.cpp create mode 100644 src/icludes/lib/util/plaparse.h create mode 100644 src/icludes/lib/util/png.cpp create mode 100644 src/icludes/lib/util/png.h create mode 100644 src/icludes/lib/util/server_http.hpp create mode 100644 src/icludes/lib/util/server_http_impl.hpp create mode 100644 src/icludes/lib/util/server_https.hpp create mode 100644 src/icludes/lib/util/server_ws.hpp create mode 100644 src/icludes/lib/util/server_ws_impl.hpp create mode 100644 src/icludes/lib/util/server_wss.hpp create mode 100644 src/icludes/lib/util/strformat.cpp create mode 100644 src/icludes/lib/util/strformat.h create mode 100644 src/icludes/lib/util/timeconv.cpp create mode 100644 src/icludes/lib/util/timeconv.h create mode 100644 src/icludes/lib/util/un7z.cpp create mode 100644 src/icludes/lib/util/unicode.cpp create mode 100644 src/icludes/lib/util/unicode.h create mode 100644 src/icludes/lib/util/unzip.cpp create mode 100644 src/icludes/lib/util/unzip.h create mode 100644 src/icludes/lib/util/utilfwd.h create mode 100644 src/icludes/lib/util/vbiparse.cpp create mode 100644 src/icludes/lib/util/vbiparse.h create mode 100644 src/icludes/lib/util/vecstream.cpp create mode 100644 src/icludes/lib/util/vecstream.h create mode 100644 src/icludes/lib/util/wavwrite.cpp create mode 100644 src/icludes/lib/util/wavwrite.h create mode 100644 src/icludes/lib/util/xmlfile.cpp create mode 100644 src/icludes/lib/util/xmlfile.h create mode 100644 src/icludes/lib/util/zippath.cpp create mode 100644 src/icludes/lib/util/zippath.h create mode 100644 src/icludes/osd/asio.h create mode 100644 src/icludes/osd/eigcc.h create mode 100644 src/icludes/osd/eigccarm.h create mode 100644 src/icludes/osd/eigccppc.h create mode 100644 src/icludes/osd/eigccx86.h create mode 100644 src/icludes/osd/eivc.h create mode 100644 src/icludes/osd/eivcarm.h create mode 100644 src/icludes/osd/eivcx86.h create mode 100644 src/icludes/osd/eminline.h create mode 100644 src/icludes/osd/mac/appdelegate.h create mode 100644 src/icludes/osd/mac/appdelegate.mm create mode 100644 src/icludes/osd/mac/macmain.cpp create mode 100644 src/icludes/osd/mac/main.mm create mode 100644 src/icludes/osd/mac/mamefswindow.h create mode 100644 src/icludes/osd/mac/mamefswindow.mm create mode 100644 src/icludes/osd/mac/oglview.h create mode 100644 src/icludes/osd/mac/oglview.mm create mode 100644 src/icludes/osd/mac/osdmac.h create mode 100644 src/icludes/osd/mac/video.cpp create mode 100644 src/icludes/osd/mac/window.cpp create mode 100644 src/icludes/osd/mac/window.h create mode 100644 src/icludes/osd/mac/windowcontroller.h create mode 100644 src/icludes/osd/mac/windowcontroller.mm create mode 100644 src/icludes/osd/modules/debugger/debug_module.h create mode 100644 src/icludes/osd/modules/debugger/debuggdbstub.cpp create mode 100644 src/icludes/osd/modules/debugger/debugimgui.cpp create mode 100644 src/icludes/osd/modules/debugger/debugosx.mm create mode 100644 src/icludes/osd/modules/debugger/debugqt.cpp create mode 100644 src/icludes/osd/modules/debugger/debugwin.cpp create mode 100644 src/icludes/osd/modules/debugger/none.cpp create mode 100644 src/icludes/osd/modules/debugger/osx/breakpointsview.h create mode 100644 src/icludes/osd/modules/debugger/osx/breakpointsview.mm create mode 100644 src/icludes/osd/modules/debugger/osx/consoleview.h create mode 100644 src/icludes/osd/modules/debugger/osx/consoleview.mm create mode 100644 src/icludes/osd/modules/debugger/osx/debugcommandhistory.h create mode 100644 src/icludes/osd/modules/debugger/osx/debugcommandhistory.mm create mode 100644 src/icludes/osd/modules/debugger/osx/debugconsole.h create mode 100644 src/icludes/osd/modules/debugger/osx/debugconsole.mm create mode 100644 src/icludes/osd/modules/debugger/osx/debugosx.h create mode 100644 src/icludes/osd/modules/debugger/osx/debugview.h create mode 100644 src/icludes/osd/modules/debugger/osx/debugview.mm create mode 100644 src/icludes/osd/modules/debugger/osx/debugwindowhandler.h create mode 100644 src/icludes/osd/modules/debugger/osx/debugwindowhandler.mm create mode 100644 src/icludes/osd/modules/debugger/osx/deviceinfoviewer.h create mode 100644 src/icludes/osd/modules/debugger/osx/deviceinfoviewer.mm create mode 100644 src/icludes/osd/modules/debugger/osx/devicesviewer.h create mode 100644 src/icludes/osd/modules/debugger/osx/devicesviewer.mm create mode 100644 src/icludes/osd/modules/debugger/osx/disassemblyview.h create mode 100644 src/icludes/osd/modules/debugger/osx/disassemblyview.mm create mode 100644 src/icludes/osd/modules/debugger/osx/disassemblyviewer.h create mode 100644 src/icludes/osd/modules/debugger/osx/disassemblyviewer.mm create mode 100644 src/icludes/osd/modules/debugger/osx/errorlogview.h create mode 100644 src/icludes/osd/modules/debugger/osx/errorlogview.mm create mode 100644 src/icludes/osd/modules/debugger/osx/errorlogviewer.h create mode 100644 src/icludes/osd/modules/debugger/osx/errorlogviewer.mm create mode 100644 src/icludes/osd/modules/debugger/osx/memoryview.h create mode 100644 src/icludes/osd/modules/debugger/osx/memoryview.mm create mode 100644 src/icludes/osd/modules/debugger/osx/memoryviewer.h create mode 100644 src/icludes/osd/modules/debugger/osx/memoryviewer.mm create mode 100644 src/icludes/osd/modules/debugger/osx/pointsviewer.h create mode 100644 src/icludes/osd/modules/debugger/osx/pointsviewer.mm create mode 100644 src/icludes/osd/modules/debugger/osx/registerpointsview.h create mode 100644 src/icludes/osd/modules/debugger/osx/registerpointsview.mm create mode 100644 src/icludes/osd/modules/debugger/osx/registersview.h create mode 100644 src/icludes/osd/modules/debugger/osx/registersview.mm create mode 100644 src/icludes/osd/modules/debugger/osx/watchpointsview.h create mode 100644 src/icludes/osd/modules/debugger/osx/watchpointsview.mm create mode 100644 src/icludes/osd/modules/debugger/qt/breakpointswindow.cpp create mode 100644 src/icludes/osd/modules/debugger/qt/breakpointswindow.h create mode 100644 src/icludes/osd/modules/debugger/qt/dasmwindow.cpp create mode 100644 src/icludes/osd/modules/debugger/qt/dasmwindow.h create mode 100644 src/icludes/osd/modules/debugger/qt/debuggerview.cpp create mode 100644 src/icludes/osd/modules/debugger/qt/debuggerview.h create mode 100644 src/icludes/osd/modules/debugger/qt/deviceinformationwindow.cpp create mode 100644 src/icludes/osd/modules/debugger/qt/deviceinformationwindow.h create mode 100644 src/icludes/osd/modules/debugger/qt/deviceswindow.cpp create mode 100644 src/icludes/osd/modules/debugger/qt/deviceswindow.h create mode 100644 src/icludes/osd/modules/debugger/qt/logwindow.cpp create mode 100644 src/icludes/osd/modules/debugger/qt/logwindow.h create mode 100644 src/icludes/osd/modules/debugger/qt/mainwindow.cpp create mode 100644 src/icludes/osd/modules/debugger/qt/mainwindow.h create mode 100644 src/icludes/osd/modules/debugger/qt/memorywindow.cpp create mode 100644 src/icludes/osd/modules/debugger/qt/memorywindow.h create mode 100644 src/icludes/osd/modules/debugger/qt/windowqt.cpp create mode 100644 src/icludes/osd/modules/debugger/qt/windowqt.h create mode 100644 src/icludes/osd/modules/debugger/win/consolewininfo.cpp create mode 100644 src/icludes/osd/modules/debugger/win/consolewininfo.h create mode 100644 src/icludes/osd/modules/debugger/win/debugbaseinfo.cpp create mode 100644 src/icludes/osd/modules/debugger/win/debugbaseinfo.h create mode 100644 src/icludes/osd/modules/debugger/win/debugviewinfo.cpp create mode 100644 src/icludes/osd/modules/debugger/win/debugviewinfo.h create mode 100644 src/icludes/osd/modules/debugger/win/debugwin.h create mode 100644 src/icludes/osd/modules/debugger/win/debugwininfo.cpp create mode 100644 src/icludes/osd/modules/debugger/win/debugwininfo.h create mode 100644 src/icludes/osd/modules/debugger/win/disasmbasewininfo.cpp create mode 100644 src/icludes/osd/modules/debugger/win/disasmbasewininfo.h create mode 100644 src/icludes/osd/modules/debugger/win/disasmviewinfo.cpp create mode 100644 src/icludes/osd/modules/debugger/win/disasmviewinfo.h create mode 100644 src/icludes/osd/modules/debugger/win/disasmwininfo.cpp create mode 100644 src/icludes/osd/modules/debugger/win/disasmwininfo.h create mode 100644 src/icludes/osd/modules/debugger/win/editwininfo.cpp create mode 100644 src/icludes/osd/modules/debugger/win/editwininfo.h create mode 100644 src/icludes/osd/modules/debugger/win/logviewinfo.cpp create mode 100644 src/icludes/osd/modules/debugger/win/logviewinfo.h create mode 100644 src/icludes/osd/modules/debugger/win/logwininfo.cpp create mode 100644 src/icludes/osd/modules/debugger/win/logwininfo.h create mode 100644 src/icludes/osd/modules/debugger/win/memoryviewinfo.cpp create mode 100644 src/icludes/osd/modules/debugger/win/memoryviewinfo.h create mode 100644 src/icludes/osd/modules/debugger/win/memorywininfo.cpp create mode 100644 src/icludes/osd/modules/debugger/win/memorywininfo.h create mode 100644 src/icludes/osd/modules/debugger/win/pointswininfo.cpp create mode 100644 src/icludes/osd/modules/debugger/win/pointswininfo.h create mode 100644 src/icludes/osd/modules/debugger/win/uimetrics.cpp create mode 100644 src/icludes/osd/modules/debugger/win/uimetrics.h create mode 100644 src/icludes/osd/modules/diagnostics/diagnostics_module.h create mode 100644 src/icludes/osd/modules/diagnostics/diagnostics_win32.cpp create mode 100644 src/icludes/osd/modules/diagnostics/none.cpp create mode 100644 src/icludes/osd/modules/file/posixdir.cpp create mode 100644 src/icludes/osd/modules/file/posixfile.cpp create mode 100644 src/icludes/osd/modules/file/posixfile.h create mode 100644 src/icludes/osd/modules/file/posixptty.cpp create mode 100644 src/icludes/osd/modules/file/posixsocket.cpp create mode 100644 src/icludes/osd/modules/file/stdfile.cpp create mode 100644 src/icludes/osd/modules/file/windir.cpp create mode 100644 src/icludes/osd/modules/file/winfile.cpp create mode 100644 src/icludes/osd/modules/file/winfile.h create mode 100644 src/icludes/osd/modules/file/winptty.cpp create mode 100644 src/icludes/osd/modules/file/winrtdir.cpp create mode 100644 src/icludes/osd/modules/file/winrtfile.cpp create mode 100644 src/icludes/osd/modules/file/winrtfile.h create mode 100644 src/icludes/osd/modules/file/winrtptty.cpp create mode 100644 src/icludes/osd/modules/file/winrtsocket.cpp create mode 100644 src/icludes/osd/modules/file/winsocket.cpp create mode 100644 src/icludes/osd/modules/font/font_dwrite.cpp create mode 100644 src/icludes/osd/modules/font/font_module.h create mode 100644 src/icludes/osd/modules/font/font_none.cpp create mode 100644 src/icludes/osd/modules/font/font_osx.cpp create mode 100644 src/icludes/osd/modules/font/font_sdl.cpp create mode 100644 src/icludes/osd/modules/font/font_windows.cpp create mode 100644 src/icludes/osd/modules/input/input_common.cpp create mode 100644 src/icludes/osd/modules/input/input_common.h create mode 100644 src/icludes/osd/modules/input/input_dinput.cpp create mode 100644 src/icludes/osd/modules/input/input_dinput.h create mode 100644 src/icludes/osd/modules/input/input_mac.cpp create mode 100644 src/icludes/osd/modules/input/input_module.h create mode 100644 src/icludes/osd/modules/input/input_none.cpp create mode 100644 src/icludes/osd/modules/input/input_rawinput.cpp create mode 100644 src/icludes/osd/modules/input/input_sdl.cpp create mode 100644 src/icludes/osd/modules/input/input_sdlcommon.cpp create mode 100644 src/icludes/osd/modules/input/input_sdlcommon.h create mode 100644 src/icludes/osd/modules/input/input_win32.cpp create mode 100644 src/icludes/osd/modules/input/input_windows.cpp create mode 100644 src/icludes/osd/modules/input/input_windows.h create mode 100644 src/icludes/osd/modules/input/input_winhybrid.cpp create mode 100644 src/icludes/osd/modules/input/input_x11.cpp create mode 100644 src/icludes/osd/modules/input/input_xinput.cpp create mode 100644 src/icludes/osd/modules/input/input_xinput.h create mode 100644 src/icludes/osd/modules/lib/osdlib.h create mode 100644 src/icludes/osd/modules/lib/osdlib_macosx.cpp create mode 100644 src/icludes/osd/modules/lib/osdlib_unix.cpp create mode 100644 src/icludes/osd/modules/lib/osdlib_win32.cpp create mode 100644 src/icludes/osd/modules/lib/osdobj_common.cpp create mode 100644 src/icludes/osd/modules/lib/osdobj_common.h create mode 100644 src/icludes/osd/modules/midi/midi_module.h create mode 100644 src/icludes/osd/modules/midi/none.cpp create mode 100644 src/icludes/osd/modules/midi/portmidi.cpp create mode 100644 src/icludes/osd/modules/monitor/monitor_common.cpp create mode 100644 src/icludes/osd/modules/monitor/monitor_common.h create mode 100644 src/icludes/osd/modules/monitor/monitor_dxgi.cpp create mode 100644 src/icludes/osd/modules/monitor/monitor_mac.cpp create mode 100644 src/icludes/osd/modules/monitor/monitor_module.h create mode 100644 src/icludes/osd/modules/monitor/monitor_sdl.cpp create mode 100644 src/icludes/osd/modules/monitor/monitor_win32.cpp create mode 100644 src/icludes/osd/modules/netdev/netdev_module.h create mode 100644 src/icludes/osd/modules/netdev/none.cpp create mode 100644 src/icludes/osd/modules/netdev/pcap.cpp create mode 100644 src/icludes/osd/modules/netdev/taptun.cpp create mode 100644 src/icludes/osd/modules/opengl/gl_shader_mgr.cpp create mode 100644 src/icludes/osd/modules/opengl/gl_shader_mgr.h create mode 100644 src/icludes/osd/modules/opengl/gl_shader_tool.cpp create mode 100644 src/icludes/osd/modules/opengl/gl_shader_tool.h create mode 100644 src/icludes/osd/modules/opengl/osd_opengl.h create mode 100755 src/icludes/osd/modules/opengl/shader/genc.sh create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_bicubic_rgb32_dir.fsh create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_bicubic_rgb32_dir.fsh.c create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_bilinear.vsh create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_bilinear_idx16_lut.fsh create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_bilinear_idx16_lut.fsh.c create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_bilinear_rgb32_dir.fsh create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_bilinear_rgb32_dir.fsh.c create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_bilinear_rgb32_lut.fsh create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_bilinear_rgb32_lut.fsh.c create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_general.vsh create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_general.vsh.c create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_plain.vsh create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_plain_idx16_lut.fsh create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_plain_idx16_lut.fsh.c create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_plain_rgb32_dir.fsh create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_plain_rgb32_dir.fsh.c create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_plain_rgb32_lut.fsh create mode 100644 src/icludes/osd/modules/opengl/shader/glsl_plain_rgb32_lut.fsh.c create mode 100644 src/icludes/osd/modules/osdhelper.h create mode 100644 src/icludes/osd/modules/osdmodule.cpp create mode 100644 src/icludes/osd/modules/osdmodule.h create mode 100644 src/icludes/osd/modules/osdwindow.cpp create mode 100644 src/icludes/osd/modules/osdwindow.h create mode 100644 src/icludes/osd/modules/output/console.cpp create mode 100644 src/icludes/osd/modules/output/network.cpp create mode 100644 src/icludes/osd/modules/output/none.cpp create mode 100644 src/icludes/osd/modules/output/output_module.h create mode 100644 src/icludes/osd/modules/output/win32_output.cpp create mode 100644 src/icludes/osd/modules/output/win32_output.h create mode 100644 src/icludes/osd/modules/render/aviwrite.cpp create mode 100644 src/icludes/osd/modules/render/aviwrite.h create mode 100644 src/icludes/osd/modules/render/bgfx/blendreader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/blendreader.h create mode 100644 src/icludes/osd/modules/render/bgfx/chain.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/chain.h create mode 100644 src/icludes/osd/modules/render/bgfx/chainentry.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/chainentry.h create mode 100644 src/icludes/osd/modules/render/bgfx/chainentryreader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/chainentryreader.h create mode 100644 src/icludes/osd/modules/render/bgfx/chainmanager.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/chainmanager.h create mode 100644 src/icludes/osd/modules/render/bgfx/chainreader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/chainreader.h create mode 100644 src/icludes/osd/modules/render/bgfx/clear.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/clear.h create mode 100644 src/icludes/osd/modules/render/bgfx/clearreader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/clearreader.h create mode 100644 src/icludes/osd/modules/render/bgfx/cullreader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/cullreader.h create mode 100644 src/icludes/osd/modules/render/bgfx/depthreader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/depthreader.h create mode 100644 src/icludes/osd/modules/render/bgfx/effect.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/effect.h create mode 100644 src/icludes/osd/modules/render/bgfx/effectmanager.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/effectmanager.h create mode 100644 src/icludes/osd/modules/render/bgfx/effectreader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/effectreader.h create mode 100644 src/icludes/osd/modules/render/bgfx/entryuniform.h create mode 100644 src/icludes/osd/modules/render/bgfx/entryuniformreader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/entryuniformreader.h create mode 100644 src/icludes/osd/modules/render/bgfx/frameparameter.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/frameparameter.h create mode 100644 src/icludes/osd/modules/render/bgfx/inputpair.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/inputpair.h create mode 100644 src/icludes/osd/modules/render/bgfx/parameter.h create mode 100644 src/icludes/osd/modules/render/bgfx/paramreader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/paramreader.h create mode 100644 src/icludes/osd/modules/render/bgfx/paramuniform.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/paramuniform.h create mode 100644 src/icludes/osd/modules/render/bgfx/paramuniformreader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/paramuniformreader.h create mode 100644 src/icludes/osd/modules/render/bgfx/shadermanager.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/shadermanager.h create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/blurs/fs_smart-blur.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/blurs/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/blurs/vs_smart-blur.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt-geom/fs_crt-geom-deluxe.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt-geom/fs_crt-geom.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt-geom/fs_gaussx.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt-geom/fs_gaussy.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt-geom/fs_lowpass.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt-geom/fs_mipmap8.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt-geom/fs_phosphor_apply.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt-geom/fs_phosphor_update.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt-geom/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt-geom/vs_crt-geom.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt-geom/vs_gaussx.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt-geom/vs_gaussy.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt-geom/vs_lowpass.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt-geom/vs_mipmap8.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt-geom/vs_phosphor_apply.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt-geom/vs_phosphor_update.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt/fs_crt-caligari.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/crt/vs_crt-caligari.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/default/fs_blit.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/default/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/default/vs_blit.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/eagle/fs_eagle.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/eagle/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/eagle/vs_eagle.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/fs_chroma.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/fs_color.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/fs_deconverge.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/fs_defocus.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/fs_distortion.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/fs_ntsc_decode.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/fs_ntsc_encode.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/fs_phosphor.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/fs_post.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/fs_prescale.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/fs_scanline.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/vs_chroma.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/vs_color.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/vs_deconverge.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/vs_defocus.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/vs_distortion.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/vs_ntsc_decode.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/vs_ntsc_encode.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/vs_phosphor.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/vs_post.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/vs_prescale.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hlsl/vs_scanline.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hqx/fs_hq2x.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hqx/fs_hq3x.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hqx/fs_hq4x.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hqx/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hqx/vs_hq2x.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hqx/vs_hq3x.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/hqx/vs_hq4x.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/lcd-grid/fs_lcd-grid.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/lcd-grid/fs_persistence.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/lcd-grid/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/lcd-grid/vs_lcd-grid.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/lcd-grid/vs_persistence.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/fs_blit.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/fs_blit_bcg.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/fs_blit_palette16.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/fs_blit_rgb32.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/fs_blit_yuy16.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/fs_bob-and-ghost-deinterlace.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/fs_deposterize-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/fs_deposterize-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/fs_lut.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/fs_saturation.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/vs_blit.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/vs_bob-and-ghost-deinterlace.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/vs_deposterize-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/vs_deposterize-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/vs_lut.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/misc/vs_saturation.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_gaussian.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/fs_offset_sat.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/vs_gaussian.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_left_horizontal/vs_offset_sat.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_gaussian.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/fs_offset_sat.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/vs_gaussian.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_left_vertical/vs_offset_sat.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_gaussian.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/fs_offset_sat.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/vs_gaussian.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_right_horizontal/vs_offset_sat.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_gaussian.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/fs_offset_sat.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/vs_gaussian.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/pillarbox_right_vertical/vs_offset_sat.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/unfiltered/fs_blit.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/unfiltered/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/unfiltered/vs_blit.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/warp/fs_dilation-horizontal-fast.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/warp/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/warp/vs_dilation-horizontal-fast.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv1-noblend.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2-3d.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2-fast.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2-noblend.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv3-noblend.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv3.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_custom-jinc2-sharper.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-2xbr-3d-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-2xbr-3d-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-2xbr-3d-pass2.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass1f.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass2.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-4xbr-3d-pass3f.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-fast-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-fast-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-fast-pass2.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/fs_super-xbr-pass2.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_custom-jinc2-sharper.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-2xbr-3d-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-2xbr-3d-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-2xbr-3d-pass2.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass1f.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass2.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-4xbr-3d-pass3f.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-fast-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-fast-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-fast-pass2.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-pass2.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/super-xbr/vs_super-xbr-pass3.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv1-noblend.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2-3d.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2-fast.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2-noblend.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv3-noblend.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv3.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/fs_2xbr-hybrid-sharp.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/fs_2xbr-hybrid-v2-gamma.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/fs_2xbr-hybrid-v2.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/fs_2xbr-hybrid-v4-gamma.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/fs_2xbr-hybrid-v4.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/fs_2xbr-hybrid-v4b.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/fs_2xbr-hybrid-v5-gamma.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/fs_2xbr-hybrid.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/vs_2xbr-hybrid-sharp.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/vs_2xbr-hybrid-v2-gamma.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/vs_2xbr-hybrid-v2.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/vs_2xbr-hybrid-v4-gamma.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/vs_2xbr-hybrid-v4.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/vs_2xbr-hybrid-v4b.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/vs_2xbr-hybrid-v5-gamma.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-hybrid/vs_2xbr-hybrid.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/fs_xbr-lv2-a-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/fs_xbr-lv2-accuracy-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/fs_xbr-lv2-accuracy-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/fs_xbr-lv2-b-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/fs_xbr-lv2-c-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/fs_xbr-lv2-d-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/fs_xbr-lv2-noblend-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/fs_xbr-lv2-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/vs_xbr-lv2-a-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/vs_xbr-lv2-accuracy-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/vs_xbr-lv2-accuracy-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/vs_xbr-lv2-b-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/vs_xbr-lv2-c-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/vs_xbr-lv2-d-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/vs_xbr-lv2-noblend-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv2-multipass/vs_xbr-lv2-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv3-multipass/fs_xbr-lv3-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv3-multipass/fs_xbr-lv3-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv3-multipass/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv3-multipass/vs_xbr-lv3-pass0.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-lv3-multipass/vs_xbr-lv3-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-mlv4-multipass/fs_xbr-mlv4-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-mlv4-multipass/fs_xbr-mlv4-pass2.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-mlv4-multipass/fs_xbr-mlv4-pass3.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-mlv4-multipass/fs_xbr-mlv4-pass4.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-mlv4-multipass/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-mlv4-multipass/vs_xbr-mlv4-pass1.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-mlv4-multipass/vs_xbr-mlv4-pass2.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-mlv4-multipass/vs_xbr-mlv4-pass3.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/chains/xbr/xbr-mlv4-multipass/vs_xbr-mlv4-pass4.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/fs_gui.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/fs_screen.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/makefile create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/shader.mk create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/varying.def.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/vs_gui.sc create mode 100644 src/icludes/osd/modules/render/bgfx/shaders/vs_screen.sc create mode 100644 src/icludes/osd/modules/render/bgfx/slider.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/slider.h create mode 100644 src/icludes/osd/modules/render/bgfx/sliderreader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/sliderreader.h create mode 100644 src/icludes/osd/modules/render/bgfx/slideruniform.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/slideruniform.h create mode 100644 src/icludes/osd/modules/render/bgfx/slideruniformreader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/slideruniformreader.h create mode 100644 src/icludes/osd/modules/render/bgfx/statereader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/statereader.h create mode 100644 src/icludes/osd/modules/render/bgfx/suppressor.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/suppressor.h create mode 100644 src/icludes/osd/modules/render/bgfx/suppressorreader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/suppressorreader.h create mode 100644 src/icludes/osd/modules/render/bgfx/target.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/target.h create mode 100644 src/icludes/osd/modules/render/bgfx/targetmanager.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/targetmanager.h create mode 100644 src/icludes/osd/modules/render/bgfx/targetreader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/targetreader.h create mode 100644 src/icludes/osd/modules/render/bgfx/texture.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/texture.h create mode 100644 src/icludes/osd/modules/render/bgfx/texturehandleprovider.h create mode 100644 src/icludes/osd/modules/render/bgfx/texturemanager.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/texturemanager.h create mode 100644 src/icludes/osd/modules/render/bgfx/timeparameter.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/timeparameter.h create mode 100644 src/icludes/osd/modules/render/bgfx/uniform.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/uniform.h create mode 100644 src/icludes/osd/modules/render/bgfx/uniformreader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/uniformreader.h create mode 100644 src/icludes/osd/modules/render/bgfx/valueuniform.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/valueuniform.h create mode 100644 src/icludes/osd/modules/render/bgfx/valueuniformreader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/valueuniformreader.h create mode 100644 src/icludes/osd/modules/render/bgfx/vertex.h create mode 100644 src/icludes/osd/modules/render/bgfx/view.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/view.h create mode 100644 src/icludes/osd/modules/render/bgfx/windowparameter.h create mode 100644 src/icludes/osd/modules/render/bgfx/writereader.cpp create mode 100644 src/icludes/osd/modules/render/bgfx/writereader.h create mode 100644 src/icludes/osd/modules/render/bgfxutil.cpp create mode 100644 src/icludes/osd/modules/render/bgfxutil.h create mode 100644 src/icludes/osd/modules/render/binpacker.cpp create mode 100644 src/icludes/osd/modules/render/binpacker.h create mode 100644 src/icludes/osd/modules/render/blit13.h create mode 100644 src/icludes/osd/modules/render/copyutil.h create mode 100644 src/icludes/osd/modules/render/d3d/d3dcomm.h create mode 100644 src/icludes/osd/modules/render/d3d/d3dhlsl.cpp create mode 100644 src/icludes/osd/modules/render/d3d/d3dhlsl.h create mode 100644 src/icludes/osd/modules/render/draw13.cpp create mode 100644 src/icludes/osd/modules/render/draw13.h create mode 100644 src/icludes/osd/modules/render/drawbgfx.cpp create mode 100644 src/icludes/osd/modules/render/drawbgfx.h create mode 100644 src/icludes/osd/modules/render/drawd3d.cpp create mode 100644 src/icludes/osd/modules/render/drawd3d.h create mode 100644 src/icludes/osd/modules/render/drawgdi.cpp create mode 100644 src/icludes/osd/modules/render/drawgdi.h create mode 100644 src/icludes/osd/modules/render/drawnone.cpp create mode 100644 src/icludes/osd/modules/render/drawnone.h create mode 100644 src/icludes/osd/modules/render/drawogl.cpp create mode 100644 src/icludes/osd/modules/render/drawogl.h create mode 100644 src/icludes/osd/modules/render/drawsdl.cpp create mode 100644 src/icludes/osd/modules/render/drawsdl.h create mode 100644 src/icludes/osd/modules/render/sdlglcontext.h create mode 100644 src/icludes/osd/modules/render/sliderdirtynotifier.h create mode 100644 src/icludes/osd/modules/render/winglcontext.h create mode 100644 src/icludes/osd/modules/sound/coreaudio_sound.cpp create mode 100644 src/icludes/osd/modules/sound/direct_sound.cpp create mode 100644 src/icludes/osd/modules/sound/js_sound.cpp create mode 100644 src/icludes/osd/modules/sound/js_sound.js create mode 100644 src/icludes/osd/modules/sound/none.cpp create mode 100644 src/icludes/osd/modules/sound/pa_sound.cpp create mode 100644 src/icludes/osd/modules/sound/pulse_sound.cpp create mode 100644 src/icludes/osd/modules/sound/sdl_sound.cpp create mode 100644 src/icludes/osd/modules/sound/sound_module.h create mode 100644 src/icludes/osd/modules/sound/xaudio2_sound.cpp create mode 100644 src/icludes/osd/osdcomm.h create mode 100644 src/icludes/osd/osdcore.cpp create mode 100644 src/icludes/osd/osdcore.h create mode 100644 src/icludes/osd/osdepend.h create mode 100644 src/icludes/osd/osdfile.h create mode 100644 src/icludes/osd/osdnet.cpp create mode 100644 src/icludes/osd/osdnet.h create mode 100644 src/icludes/osd/osdsync.cpp create mode 100644 src/icludes/osd/osdsync.h create mode 100644 src/icludes/osd/sdl/osdsdl.h create mode 100644 src/icludes/osd/sdl/sdlmain.cpp create mode 100644 src/icludes/osd/sdl/sdlprefix.h create mode 100755 src/icludes/osd/sdl/taputil.sh create mode 100644 src/icludes/osd/sdl/video.cpp create mode 100644 src/icludes/osd/sdl/window.cpp create mode 100644 src/icludes/osd/sdl/window.h create mode 100644 src/icludes/osd/strconv.cpp create mode 100644 src/icludes/osd/strconv.h create mode 100644 src/icludes/osd/watchdog.cpp create mode 100644 src/icludes/osd/watchdog.h create mode 100644 src/icludes/osd/windows/ledutil.cpp create mode 100644 src/icludes/osd/windows/video.cpp create mode 100644 src/icludes/osd/windows/video.h create mode 100644 src/icludes/osd/windows/window.cpp create mode 100644 src/icludes/osd/windows/window.h create mode 100644 src/icludes/osd/windows/winmain.cpp create mode 100644 src/icludes/osd/windows/winmain.h create mode 100644 src/icludes/osd/windows/winmenu.cpp create mode 100644 src/icludes/osd/windows/winutf8.cpp create mode 100644 src/icludes/osd/windows/winutf8.h create mode 100644 src/icludes/osd/windows/winutil.cpp create mode 100644 src/icludes/osd/windows/winutil.h create mode 100644 src/version.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c70e7e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,49 @@ +#quack +# osx annoyances +.DS_Store + +# binaries folder +/bin/ +/Build/ +/build/ +/build-*/ + +# vs stuff +.vs +ipch +ipch/* +*.opensdf +*.sdf +*.suo +*.vcxproj.user +*.VC.opendb +*.VC.db +/.vscode/ + +# cmake stuff +CMakeCache.txt +CMakeFiles +Makefile +cmake_install.cmake +install_manifest.txt + +# unix intermediate files +config.h +*.o +*.a +*.so +*.dylib + +# qt creator +CMakeLists.txt.user + +# python bytecode +__pycache__ + +# other repos +/dep/mac +/android + +# UWP crap +Generated Files +/packages diff --git a/3rdparty/expat/AUTHORS b/3rdparty/expat/AUTHORS new file mode 100644 index 0000000..99475bb --- /dev/null +++ b/3rdparty/expat/AUTHORS @@ -0,0 +1,10 @@ +Expat is brought to you by: + +Clark Cooper +Fred L. Drake, Jr. +Greg Stein +James Clark +Karl Waclawek +Rhodri James +Sebastian Pipping +Steven Solie diff --git a/3rdparty/expat/CMake.README b/3rdparty/expat/CMake.README new file mode 100644 index 0000000..aa098b4 --- /dev/null +++ b/3rdparty/expat/CMake.README @@ -0,0 +1,42 @@ +== How to build expat with cmake (experimental) == + +The cmake based buildsystem for expat works on Windows (cygwin, mingw, Visual +Studio) and should work on all other platform cmake supports. + +Assuming ~/expat-2.2.10 is the source directory of expat, add a subdirectory +build and change into that directory: +~/expat-2.2.10$ mkdir build && cd build +~/expat-2.2.10/build$ + +From that directory, call cmake first, then call make, make test and +make install in the usual way: +~/expat-2.2.10/build$ cmake .. +-- The C compiler identification is GNU +-- The CXX compiler identification is GNU +.... +-- Configuring done +-- Generating done +-- Build files have been written to: /home/patrick/expat-2.2.10/build + +If you want to specify the install location for your files, append +-DCMAKE_INSTALL_PREFIX=/your/install/path to the cmake call. + +~/expat-2.2.10/build$ make && make test && make install +Scanning dependencies of target expat +[ 5%] Building C object CMakeFiles/expat.dir/lib/xmlparse.c.o +[ 11%] Building C object CMakeFiles/expat.dir/lib/xmlrole.c.o +.... +-- Installing: /usr/local/lib/pkgconfig/expat.pc +-- Installing: /usr/local/bin/xmlwf +-- Installing: /usr/local/share/man/man1/xmlwf.1 + +For Windows builds, you must make sure to call cmake from an environment where +your compiler is reachable, that means either you call it from the +Visual Studio Command Prompt or when using mingw, you must open a cmd.exe and +make sure that gcc can be called. On Windows, you also might want to specify a +special Generator for CMake: +for Visual Studio builds do: +cmake .. -G "Visual Studio 15 2017" && msbuild /m expat.sln +for mingw builds do: +cmake .. -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=D:\expat-install + && gmake && gmake install diff --git a/3rdparty/expat/CMakeLists.txt b/3rdparty/expat/CMakeLists.txt new file mode 100644 index 0000000..dfbd0c5 --- /dev/null +++ b/3rdparty/expat/CMakeLists.txt @@ -0,0 +1,713 @@ +# This file is copyrighted under the BSD-license for buildsystem files of KDE +# copyright 2010, Patrick Spendrin + +cmake_minimum_required(VERSION 3.1.3) + +# This allows controlling documented build time switches +# when Expat is pulled in using the add_subdirectory function, e.g. +# +# set(EXPAT_BUILD_DOCS OFF) +# set(EXPAT_BUILD_TOOLS OFF) +# add_subdirectory(${expat_SOURCE_DIR}/expat ${expat_BINARY_DIR}) +# +# would disable compilation of the xmlwf CLI and its man page. +# Without activating behaviour NEW for policy CMP0077 here, +# a user with -Wdev enabled would see warning +# +# Policy CMP0077 is not set: option() honors normal variables. Run "cmake +# --help-policy CMP0077" for policy details. Use the cmake_policy command to +# set the policy and suppress this warning. +# +# For compatibility with older versions of CMake, option is clearing the +# normal variable 'EXPAT_BUILD_DOCS'. +# +# and effectively not be able to adjust option EXPAT_BUILD_DOCS. +# +# For more details please see: +# - https://cmake.org/cmake/help/latest/policy/CMP0077.html +# - https://github.com/libexpat/libexpat/pull/419 +# +if(POLICY CMP0077) + cmake_policy(SET CMP0077 NEW) +endif() + +project(expat + VERSION + 2.2.10 + LANGUAGES + C +) + +set(PACKAGE_BUGREPORT "expat-bugs@libexpat.org") +set(PACKAGE_NAME "expat") +set(PACKAGE_VERSION "${PROJECT_VERSION}") +set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") +set(PACKAGE_TARNAME "${PACKAGE_NAME}") + +include(CMakePackageConfigHelpers) +include(GNUInstallDirs) + +# +# Detect use by means of add_subdirectory +# +get_directory_property(_EXPAT_PARENT_DIRECTORY PARENT_DIRECTORY) + +# +# Configuration defaults +# +if(WINCE) + set(_EXPAT_BUILD_TOOLS_DEFAULT OFF) +else() + set(_EXPAT_BUILD_TOOLS_DEFAULT ON) +endif() +if(MSVC OR NOT _EXPAT_BUILD_TOOLS_DEFAULT) + set(_EXPAT_BUILD_DOCS_DEFAULT OFF) +else() + find_program(DOCBOOK_TO_MAN NAMES docbook2x-man db2x_docbook2man docbook2man docbook-to-man) + if(DOCBOOK_TO_MAN) + set(_EXPAT_BUILD_DOCS_DEFAULT ON) + else() + set(_EXPAT_BUILD_DOCS_DEFAULT OFF) + endif() +endif() +if(MSVC) + set(_EXPAT_BUILD_PKGCONFIG_DEFAULT OFF) +else() + set(_EXPAT_BUILD_PKGCONFIG_DEFAULT ON) +endif() + +# +# Configuration +# +option(EXPAT_BUILD_TOOLS "build the xmlwf tool for expat library" ${_EXPAT_BUILD_TOOLS_DEFAULT}) +option(EXPAT_BUILD_EXAMPLES "build the examples for expat library" ON) +option(EXPAT_BUILD_TESTS "build the tests for expat library" ON) +option(EXPAT_SHARED_LIBS "build a shared expat library" ON) +option(EXPAT_BUILD_DOCS "build man page for xmlwf" ${_EXPAT_BUILD_DOCS_DEFAULT}) +option(EXPAT_BUILD_FUZZERS "build fuzzers for the expat library" OFF) +option(EXPAT_BUILD_PKGCONFIG "build pkg-config file" ${_EXPAT_BUILD_PKGCONFIG_DEFAULT}) +option(EXPAT_OSSFUZZ_BUILD "build fuzzers via ossfuzz for the expat library" OFF) +if(UNIX OR _EXPAT_HELP) + option(EXPAT_WITH_LIBBSD "utilize libbsd (for arc4random_buf)" OFF) +endif() +option(EXPAT_ENABLE_INSTALL "install expat files in cmake install target" ON) +set(EXPAT_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point") +mark_as_advanced(EXPAT_CONTEXT_BYTES) +option(EXPAT_DTD "Define to make parameter entity parsing functionality available" ON) +mark_as_advanced(EXPAT_DTD) +option(EXPAT_NS "Define to make XML Namespaces functionality available" ON) +mark_as_advanced(EXPAT_NS) +option(EXPAT_WARNINGS_AS_ERRORS "Treat all compiler warnings as errors" OFF) +if(UNIX OR _EXPAT_HELP) + option(EXPAT_DEV_URANDOM "Define to include code reading entropy from `/dev/urandom'." ON) + set(EXPAT_WITH_GETRANDOM "AUTO" CACHE STRING + "Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]") + set(EXPAT_WITH_SYS_GETRANDOM "AUTO" CACHE STRING + "Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]") + mark_as_advanced(EXPAT_DEV_URANDOM) +endif() +set(EXPAT_CHAR_TYPE "char" CACHE STRING "Character type to use (char|ushort|wchar_t) [default=char]") +option(EXPAT_ATTR_INFO "Define to allow retrieving the byte offsets for attribute names and values" OFF) +mark_as_advanced(EXPAT_ATTR_INFO) +option(EXPAT_LARGE_SIZE "Make XML_GetCurrent* functions return <(unsigned) long long> rather than <(unsigned) long>" OFF) +mark_as_advanced(EXPAT_LARGE_SIZE) +option(EXPAT_MIN_SIZE "Get a smaller (but slower) parser (in particular avoid multiple copies of the tokenizer)" OFF) +mark_as_advanced(EXPAT_MIN_SIZE) +if(MSVC OR _EXPAT_HELP) + set(EXPAT_MSVC_STATIC_CRT OFF CACHE BOOL "Use /MT flag (static CRT) when compiling in MSVC") +endif() + +# +# Environment checks +# +if(EXPAT_WITH_LIBBSD) + find_library(LIB_BSD NAMES bsd) + if(NOT LIB_BSD) + message(SEND_ERROR "EXPAT_WITH_LIBBSD option is enabled, but libbsd was not found") + else() + set(HAVE_LIBBSD TRUE) + endif() +endif() + +macro(_expat_copy_bool_int source_ref dest_ref) + if(${source_ref}) + set(${dest_ref} 1) + else() + set(${dest_ref} 0) + endif() +endmacro() + +if(EXPAT_LARGE_SIZE) + add_definitions(-DXML_LARGE_SIZE) +endif() + +if(EXPAT_MIN_SIZE) + add_definitions(-DXML_MIN_SIZE) +endif() + +if(EXPAT_CHAR_TYPE STREQUAL "char") + set(_EXPAT_UNICODE OFF) + set(_EXPAT_UNICODE_WCHAR_T OFF) +elseif(EXPAT_CHAR_TYPE STREQUAL "ushort") + set(_EXPAT_UNICODE ON) + set(_EXPAT_UNICODE_WCHAR_T OFF) + if(EXPAT_BUILD_EXAMPLES) + message(SEND_ERROR "Examples can not be built with option -DEXPAT_CHAR_TYPE=ushort. Please pass -DEXPAT_CHAR_TYPE=(char|wchar_t) or -DEXPAT_BUILD_EXAMPLES=OFF.") + endif() + if(EXPAT_BUILD_TESTS) + message(SEND_ERROR "The testsuite can not be built with option -DEXPAT_CHAR_TYPE=ushort. Please pass -DEXPAT_CHAR_TYPE=(char|wchar_t) or -DEXPAT_BUILD_TESTS=OFF.") + endif() + if(EXPAT_BUILD_TOOLS) + message(SEND_ERROR "The xmlwf tool can not be built with option -DEXPAT_CHAR_TYPE=ushort. Please pass -DEXPAT_CHAR_TYPE=(char|wchar_t) or -DEXPAT_BUILD_TOOLS=OFF.") + endif() +elseif(EXPAT_CHAR_TYPE STREQUAL "wchar_t") + set(_EXPAT_UNICODE ON) + set(_EXPAT_UNICODE_WCHAR_T ON) + if(NOT WIN32) + string(FIND "${CMAKE_C_FLAGS}" "-fshort-wchar" _expat_short_wchar_found) + if(${_expat_short_wchar_found} EQUAL "-1") + message(SEND_ERROR "Configuration -DEXPAT_CHAR_TYPE=wchar_t requires -DCMAKE_{C,CXX}_FLAGS=-fshort-wchar (which was not found) and libc compiled with -fshort-wchar, too.") + endif() + if (EXPAT_BUILD_TOOLS) + message(SEND_ERROR "The xmlwf tool can not be built with option -DEXPAT_CHAR_TYPE=wchar_t outside of Windows. Please pass -DEXPAT_CHAR_TYPE=char or -DEXPAT_BUILD_TOOLS=OFF.") + endif() + endif() +else() + message(SEND_ERROR "Option -DEXPAT_CHAR_TYPE=(char|ushort|wchar_t) cannot be \"${EXPAT_CHAR_TYPE}\".") +endif() + +if(_EXPAT_UNICODE) + add_definitions(-DXML_UNICODE) # for unsigned short + if(_EXPAT_UNICODE_WCHAR_T) + add_definitions(-DXML_UNICODE_WCHAR_T) # for wchar_t + endif() +endif() + +include(${CMAKE_CURRENT_LIST_DIR}/ConfigureChecks.cmake) + +macro(evaluate_detection_results use_ref have_ref thing_lower thing_title) + if(${use_ref} AND NOT (${use_ref} STREQUAL "AUTO") AND NOT ${have_ref}) + message(SEND_ERROR + "Use of ${thing_lower} was enforced by ${use_ref}=ON but it could not be found.") + elseif(NOT ${use_ref} AND ${have_ref}) + message("${thing_title} was found but it will not be used due to ${use_ref}=OFF.") + set(${have_ref} 0) + endif() +endmacro() + +if(NOT WIN32) + evaluate_detection_results(EXPAT_WITH_GETRANDOM HAVE_GETRANDOM "function getrandom" "Function getrandom") + evaluate_detection_results(EXPAT_WITH_SYS_GETRANDOM HAVE_SYSCALL_GETRANDOM "syscall SYS_getrandom" "Syscall SYS_getrandom") +endif() + +_expat_copy_bool_int(EXPAT_ATTR_INFO XML_ATTR_INFO) +_expat_copy_bool_int(EXPAT_DTD XML_DTD) +_expat_copy_bool_int(EXPAT_LARGE_SIZE XML_LARGE_SIZE) +_expat_copy_bool_int(EXPAT_MIN_SIZE XML_MIN_SIZE) +_expat_copy_bool_int(EXPAT_NS XML_NS) +if(NOT WIN32) + _expat_copy_bool_int(EXPAT_DEV_URANDOM XML_DEV_URANDOM) +endif() +set(XML_CONTEXT_BYTES ${EXPAT_CONTEXT_BYTES}) + +macro(expat_install) + if(EXPAT_ENABLE_INSTALL) + install(${ARGN}) + endif() +endmacro() + +configure_file(expat_config.h.cmake "${CMAKE_CURRENT_BINARY_DIR}/expat_config.h") +add_definitions(-DHAVE_EXPAT_CONFIG_H) +expat_install(FILES "${CMAKE_CURRENT_BINARY_DIR}/expat_config.h" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + + +set(EXTRA_COMPILE_FLAGS) +if(FLAG_NO_STRICT_ALIASING) + set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fno-strict-aliasing") +endif() +if(FLAG_VISIBILITY) + add_definitions(-DXML_ENABLE_VISIBILITY=1) + set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fvisibility=hidden") +endif() +if (EXPAT_WARNINGS_AS_ERRORS) + if(MSVC) + add_definitions(/WX) + else() + set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -Werror") + endif() +endif() +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_COMPILE_FLAGS}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_COMPILE_FLAGS}") + +if (MSVC) + if (EXPAT_MSVC_STATIC_CRT) + message("-- Using static CRT ${EXPAT_MSVC_STATIC_CRT}") + foreach(flag_var + CMAKE_CXX_FLAGS_DEBUG + CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL + CMAKE_CXX_FLAGS_RELWITHDEBINFO + CMAKE_C_FLAGS_DEBUG + CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL + CMAKE_C_FLAGS_RELWITHDEBINFO + ) + string(REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") + endforeach() + endif() +endif() + +include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/lib) +if(MSVC) + add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996) +endif() +if(WIN32) + if(_EXPAT_UNICODE_WCHAR_T) + set(_POSTFIX_WIDE "w") + endif() + + if(MSVC AND NOT EXPAT_SHARED_LIBS) + if(EXPAT_MSVC_STATIC_CRT) + set(_POSTFIX_CRT "MT") + else() + set(_POSTFIX_CRT "MD") + endif() + endif() + + foreach(postfix_var + CMAKE_DEBUG_POSTFIX + CMAKE_RELEASE_POSTFIX + CMAKE_MINSIZEREL_POSTFIX + CMAKE_RELWITHDEBINFO_POSTFIX + ) + if(postfix_var STREQUAL "CMAKE_DEBUG_POSTFIX") + set(_POSTFIX_DEBUG "d") + else() + set(_POSTFIX_DEBUG "") + endif() + + set(${postfix_var} "${_POSTFIX_WIDE}${_POSTFIX_DEBUG}${_POSTFIX_CRT}" CACHE STRING "Windows binary postfix, e.g. libexpat.lib") + endforeach() +endif() + +# +# C library +# +set(expat_SRCS + lib/xmlparse.c + lib/xmlrole.c + lib/xmltok.c +# NOTE: ISO C forbids an empty translation unit +# lib/xmltok_impl.c +# lib/xmltok_ns.c +) + +if(EXPAT_SHARED_LIBS) + set(_SHARED SHARED) + if(MSVC) + set(expat_SRCS ${expat_SRCS} lib/libexpat.def) + endif() +else() + set(_SHARED STATIC) +endif() + +# Avoid colliding with Expat.dll of Perl's XML::Parser::Expat +if(WIN32 AND NOT MINGW) + set(_EXPAT_OUTPUT_NAME libexpat) # CMAKE_*_POSTFIX applies, see above +else() + if(_EXPAT_UNICODE) + set(_EXPAT_OUTPUT_NAME expatw) + else() + set(_EXPAT_OUTPUT_NAME expat) + endif() +endif() + +add_library(expat ${_SHARED} ${expat_SRCS}) +if(EXPAT_WITH_LIBBSD) + target_link_libraries(expat ${LIB_BSD}) +endif() + +set(LIBCURRENT 7) # sync +set(LIBREVISION 12) # with +set(LIBAGE 6) # configure.ac! +math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}") + +set_property(TARGET expat PROPERTY OUTPUT_NAME "${_EXPAT_OUTPUT_NAME}") +if(NOT WIN32) + set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION}) + set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE}) + set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME}) +endif() + +target_include_directories(expat + INTERFACE + $ + $ + $ +) + +if(NOT EXPAT_SHARED_LIBS AND WIN32) + target_compile_definitions(expat PUBLIC -DXML_STATIC) +endif() + +expat_install(TARGETS expat EXPORT expat + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + +# +# pkg-config file +# +if(EXPAT_BUILD_PKGCONFIG) + set(prefix ${CMAKE_INSTALL_PREFIX}) + set(exec_prefix "\${prefix}") + set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}") + set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") + configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc @ONLY) + expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +endif() + +# +# C command line tool xmlwf +# +if(EXPAT_BUILD_TOOLS) + set(xmlwf_SRCS + xmlwf/xmlwf.c + xmlwf/xmlfile.c + xmlwf/codepage.c + xmlwf/readfilemap.c + ) + + add_executable(xmlwf ${xmlwf_SRCS}) + set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf) + target_link_libraries(xmlwf expat) + expat_install(TARGETS xmlwf DESTINATION ${CMAKE_INSTALL_BINDIR}) + + if(MINGW AND _EXPAT_UNICODE_WCHAR_T) + # https://gcc.gnu.org/onlinedocs/gcc/x86-Windows-Options.html + set_target_properties(xmlwf PROPERTIES LINK_FLAGS -municode) + endif() + + if(EXPAT_BUILD_DOCS) + file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/doc) + add_custom_target( + xmlwf-manpage + COMMAND + "${DOCBOOK_TO_MAN}" "${PROJECT_SOURCE_DIR}/doc/xmlwf.xml" && mv "XMLWF.1" "${PROJECT_BINARY_DIR}/doc/xmlwf.1" + BYPRODUCTS + doc/xmlwf.1) + add_dependencies(expat xmlwf-manpage) + expat_install(FILES "${PROJECT_BINARY_DIR}/doc/xmlwf.1" DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) + elseif(EXISTS ${PROJECT_SOURCE_DIR}/doc/xmlwf.1) + expat_install(FILES "${PROJECT_SOURCE_DIR}/doc/xmlwf.1" DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) + endif() +endif() + +# +# C code examples +# +if(EXPAT_BUILD_EXAMPLES) + add_executable(elements examples/elements.c) + set_property(TARGET elements PROPERTY RUNTIME_OUTPUT_DIRECTORY examples) + target_link_libraries(elements expat) + + add_executable(outline examples/outline.c) + set_property(TARGET outline PROPERTY RUNTIME_OUTPUT_DIRECTORY examples) + target_link_libraries(outline expat) +endif() + +# +# C/C++ test runners +# +if(EXPAT_BUILD_TESTS) + ## these are unittests that can be run on any platform + enable_language(CXX) + enable_testing() + + set(test_SRCS + tests/chardata.c + tests/memcheck.c + tests/minicheck.c + tests/structdata.c + ) + + if(NOT MSVC) + if(MINGW) + set(host whatever-mingw32) # for nothing but run.sh + endif() + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/run.sh.in run.sh @ONLY) + endif() + + function(expat_add_test _name _file) + if(MSVC) + add_test(NAME ${_name} COMMAND ${_file}) + else() + add_test(NAME ${_name} COMMAND bash run.sh ${_file}) + endif() + endfunction() + + add_executable(runtests tests/runtests.c ${test_SRCS}) + set_property(TARGET runtests PROPERTY RUNTIME_OUTPUT_DIRECTORY tests) + target_link_libraries(runtests expat) + expat_add_test(runtests $) + + add_executable(runtestspp tests/runtestspp.cpp ${test_SRCS}) + set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests) + target_link_libraries(runtestspp expat) + expat_add_test(runtestspp $) +endif() + +if(EXPAT_BUILD_FUZZERS) + if(NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") + message(SEND_ERROR + "Building fuzz targets without Clang (but ${CMAKE_C_COMPILER_ID}) " + "is not supported. Please set " + "-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++.") + endif() + + string(FIND "${CMAKE_C_FLAGS}" "-fsanitize" sanitizer_present) + if(${sanitizer_present} EQUAL "-1") + message(WARNING + "There was no sanitizer present when building the fuzz targets. " + "This is likely in error - consider adding " + "-DCMAKE_C_FLAGS='-fsanitize=' and " + "-DCMAKE_CXX_FLAGS='-fsanitize=' and " + "-DCMAKE_EXE_LINKER_FLAGS='-fsanitize=' and " + "-DCMAKE_MODULE_LINKER_FLAGS='-fsanitize=' and " + "-DCMAKE_SHARED_LINKER_FLAGS='-fsanitize=' to your cmake " + "execution.") + endif() + + if(EXPAT_OSSFUZZ_BUILD AND NOT DEFINED ENV{LIB_FUZZING_ENGINE}) + message(SEND_ERROR + "OSS-Fuzz builds require the environment variable " + "LIB_FUZZING_ENGINE to be set. If you are seeing this " + "warning, it points to a deeper problem in the ossfuzz " + "build setup.") + endif() + + set(encoding_types UTF-16 UTF-8 ISO-8859-1 US-ASCII UTF-16BE UTF-16LE) + set(fuzz_targets xml_parse_fuzzer xml_parsebuffer_fuzzer) + + add_library(fuzzpat STATIC ${expat_SRCS}) + if(NOT EXPAT_OSSFUZZ_BUILD) + target_compile_options(fuzzpat PRIVATE -fsanitize=fuzzer-no-link) + endif() + + foreach(fuzz_target ${fuzz_targets}) + foreach(encoding_type ${encoding_types}) + set(target_name ${fuzz_target}_${encoding_type}) + add_executable(${target_name} fuzz/${fuzz_target}.c) + target_link_libraries(${target_name} fuzzpat) + target_compile_definitions(${target_name} + PRIVATE ENCODING_FOR_FUZZING=${encoding_type}) + if(NOT EXPAT_OSSFUZZ_BUILD) + target_compile_options(${target_name} PRIVATE -fsanitize=fuzzer-no-link) + endif() + # NOTE: Avoiding target_link_options here only because it needs CMake >=3.13 + if(EXPAT_OSSFUZZ_BUILD) + set_target_properties(${target_name} PROPERTIES LINK_FLAGS $ENV{LIB_FUZZING_ENGINE}) + set_target_properties(${target_name} PROPERTIES LINKER_LANGUAGE "CXX") + else() + set_target_properties(${target_name} PROPERTIES LINK_FLAGS -fsanitize=fuzzer) + endif() + set_property( + TARGET ${target_name} PROPERTY RUNTIME_OUTPUT_DIRECTORY fuzz) + endforeach() + endforeach() +else() + if(EXPAT_OSSFUZZ_BUILD) + message(SEND_ERROR + "Attempting to perform an ossfuzz build without turning on the fuzzer build. " + "This is likely in error - consider adding " + "-DEXPAT_BUILD_FUZZERS=ON to your cmake execution.") + endif() +endif() + +# +# Custom target "run-xmltest" +# +if(EXPAT_BUILD_TOOLS AND NOT MSVC) + add_custom_target( + xmlts-zip-downloaded + COMMAND + sh -c 'test -f xmlts.zip || wget --output-document=xmlts.zip https://www.w3.org/XML/Test/xmlts20080827.zip' + BYPRODUCTS + tests/xmlts.zip + WORKING_DIRECTORY + tests/) + + add_custom_target( + xmlts-zip-extracted + COMMAND + sh -c 'test -d xmlconf || unzip -q xmlts.zip' + BYPRODUCTS + tests/xmlconf + WORKING_DIRECTORY + tests/) + add_dependencies(xmlts-zip-extracted xmlts-zip-downloaded) + + add_custom_target( + xmltest-sh-been-run + COMMAND + sh -c '${CMAKE_CURRENT_SOURCE_DIR}/tests/xmltest.sh "bash ${CMAKE_CURRENT_BINARY_DIR}/run.sh $" 2>&1 | tee tests/xmltest.log' + BYPRODUCTS + tests/xmltest.log) + add_dependencies(xmltest-sh-been-run xmlts-zip-extracted xmlwf) + + add_custom_target( + xmltest-log-fixed + COMMAND + ${CMAKE_CURRENT_SOURCE_DIR}/fix-xmltest-log.sh tests/xmltest.log + DEPENDS + tests/xmltest.log) + add_dependencies(xmltest-log-fixed xmltest-sh-been-run) + + add_custom_target( + xmltest-log-verified + COMMAND + diff -u ${CMAKE_CURRENT_SOURCE_DIR}/tests/xmltest.log.expected tests/xmltest.log) + add_dependencies(xmltest-log-verified xmltest-log-fixed) + + add_custom_target(run-xmltest) + add_dependencies(run-xmltest xmltest-log-verified) +endif() + +# +# Documentation +# +configure_file(Changes changelog COPYONLY) +expat_install( + FILES + AUTHORS + ${CMAKE_CURRENT_BINARY_DIR}/changelog + DESTINATION + ${CMAKE_INSTALL_DOCDIR}) + +# +# CMake files for find_package(expat [..] CONFIG [..]) +# +configure_package_config_file( + cmake/expat-config.cmake.in + cmake/expat-config.cmake + INSTALL_DESTINATION + ${CMAKE_INSTALL_LIBDIR}/cmake/expat-${PROJECT_VERSION}/ +) +write_basic_package_version_file( + cmake/expat-config-version.cmake + COMPATIBILITY SameMajorVersion # i.e. semver +) +export( + TARGETS + expat + FILE + cmake/expat-targets.cmake # not going to be installed +) +expat_install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/cmake/expat-config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/cmake/expat-config-version.cmake + DESTINATION + ${CMAKE_INSTALL_LIBDIR}/cmake/expat-${PROJECT_VERSION}/ +) +expat_install( + EXPORT + expat + DESTINATION + ${CMAKE_INSTALL_LIBDIR}/cmake/expat-${PROJECT_VERSION}/ + NAMESPACE + expat:: +) + +# +# CPack +# + +# This effectively disables target "package_source". +# That is done due to CPack's unfortunate choice of an exclusion list +# rather than inclusion list. An exclusion list does not protect against +# unwanted files ending up in the resulting archive in a way that's +# safe to run from an Expat developer's machine. +set(CPACK_SOURCE_GENERATOR '') + +if(WIN32) + set(CPACK_GENERATOR ZIP) +else() + set(CPACK_GENERATOR TGZ) +endif() + +include(CPack) + +# +# Summary +# +if(EXPAT_CHAR_TYPE STREQUAL "char") + set(_EXPAT_CHAR_TYPE_SUMMARY "char (UTF-8)") +elseif(EXPAT_CHAR_TYPE STREQUAL "ushort") + set(_EXPAT_CHAR_TYPE_SUMMARY "ushort (unsigned short, UTF-16)") +elseif(EXPAT_CHAR_TYPE STREQUAL "wchar_t") + if(WIN32) + set(_EXPAT_CHAR_TYPE_SUMMARY "wchar_t (UTF-16)") + else() + set(_EXPAT_CHAR_TYPE_SUMMARY "wchar_t (UTF-32) // not implemented") + endif() +else() + set(_EXPAT_CHAR_TYPE_SUMMARY "ERROR") +endif() +string(TOUPPER "${CMAKE_BUILD_TYPE}" _EXPAT_BUILD_TYPE_UPPER) + +message(STATUS "===========================================================================") +message(STATUS "") +message(STATUS "Configuration") +message(STATUS " Prefix ..................... ${CMAKE_INSTALL_PREFIX}") +message(STATUS " Build type ................. ${CMAKE_BUILD_TYPE}") +message(STATUS " Shared libraries ........... ${EXPAT_SHARED_LIBS}") +if(MSVC) + message(STATUS " Static CRT ................. ${EXPAT_MSVC_STATIC_CRT}") +endif() +message(STATUS " Character type ............. ${_EXPAT_CHAR_TYPE_SUMMARY}") +if(WIN32) + message(STATUS " Binary postfix ............. ${CMAKE_${_EXPAT_BUILD_TYPE_UPPER}_POSTFIX}") +endif() +message(STATUS "") +message(STATUS " Build documentation ........ ${EXPAT_BUILD_DOCS}") +message(STATUS " Build examples ............. ${EXPAT_BUILD_EXAMPLES}") +message(STATUS " Build fuzzers .............. ${EXPAT_BUILD_FUZZERS}") +message(STATUS " Build tests ................ ${EXPAT_BUILD_TESTS}") +message(STATUS " Build tools (xmlwf) ........ ${EXPAT_BUILD_TOOLS}") +message(STATUS " Build pkg-config file ...... ${EXPAT_BUILD_PKGCONFIG}") +message(STATUS " Install files .............. ${EXPAT_ENABLE_INSTALL}") +message(STATUS "") +message(STATUS " Features") +message(STATUS " // Advanced options, changes not advised") +message(STATUS " Attributes info .......... ${EXPAT_ATTR_INFO}") +message(STATUS " Context bytes ............ ${EXPAT_CONTEXT_BYTES}") +message(STATUS " DTD support .............. ${EXPAT_DTD}") +message(STATUS " Large size ............... ${EXPAT_LARGE_SIZE}") +message(STATUS " Minimum size ............. ${EXPAT_MIN_SIZE}") +message(STATUS " Namespace support ........ ${EXPAT_NS}") +message(STATUS "") +message(STATUS " Entropy sources") +if(WIN32) + message(STATUS " rand_s ................... ON") +else() + message(STATUS " getrandom ................ ${HAVE_GETRANDOM}") + message(STATUS " syscall SYS_getrandom .... ${HAVE_SYSCALL_GETRANDOM}") + message(STATUS " libbsd ................... ${EXPAT_WITH_LIBBSD}") + message(STATUS " /dev/random .............. ${EXPAT_DEV_URANDOM}") +endif() +message(STATUS "") +if(CMAKE_GENERATOR STREQUAL "Unix Makefiles") + message(STATUS "Continue with") + message(STATUS " make") + if(EXPAT_BUILD_TESTS) + message(STATUS " make test") + endif() + if(EXPAT_ENABLE_INSTALL) + message(STATUS " sudo make install") + endif() + message(STATUS "") +endif() +message(STATUS "===========================================================================") diff --git a/3rdparty/expat/COPYING b/3rdparty/expat/COPYING new file mode 100644 index 0000000..3c0142e --- /dev/null +++ b/3rdparty/expat/COPYING @@ -0,0 +1,21 @@ +Copyright (c) 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper +Copyright (c) 2001-2019 Expat maintainers + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/3rdparty/expat/Changes b/3rdparty/expat/Changes new file mode 100644 index 0000000..b74a7c5 --- /dev/null +++ b/3rdparty/expat/Changes @@ -0,0 +1,817 @@ +NOTE: We are looking for help with a few things: + https://github.com/libexpat/libexpat/labels/help%20wanted + If you can help, please get in touch. Thanks! + +Release 2.2.10 Sat October 3 2020 + Bug fixes: + #390 #395 #398 Fix undefined behavior during parsing caused by + pointer arithmetic with NULL pointers + #404 #405 Fix reading uninitialized variable during parsing + #406 xmlwf: Add missing check for malloc NULL return + + Other changes: + #396 Windows: Drop support for Visual Studio <=8.0/2005 + #409 Windows: Add missing file "Changes" to the installer + to fix compilation with CMake from installed sources + #403 xmlwf: Document exit codes in xmlwf manpage and + exit with code 3 (rather than code 1) for output errors + when used with "-d DIRECTORY" + #356 #359 MinGW: Provide declaration of rand_s for mingwrt <5.3.0 + #383 #392 Autotools: Use -Werror while configure tests the compiler + for supported compile flags to avoid false positives + #383 #393 #394 Autotools: Improve handling of user (C|CPP|CXX|LD)FLAGS, + e.g. ensure that they have the last word over flags added + while running ./configure + #360 CMake: Create libexpatw.{dll,so} and expatw.pc (with emphasis + on suffix "w") with -DEXPAT_CHAR_TYPE=(ushort|wchar_t) + #360 CMake: Detect and deny unsupported build combinations + involving -DEXPAT_CHAR_TYPE=(ushort|wchar_t) + #360 CMake: Install pre-compiled shipped xmlwf.1 manpage in case + of -DEXPAT_BUILD_DOCS=OFF + #375 #380 #419 CMake: Fix use of Expat by means of add_subdirectory + #407 #408 CMake: Keep expat target name constant at "expat" + (i.e. refrain from using the target name to control + build artifact filenames) + #385 CMake: Fix compilation with -DEXPAT_SHARED_LIBS=OFF for + Windows + CMake: Expose man page compilation as target "xmlwf-manpage" + #413 #414 CMake: Introduce option EXPAT_BUILD_PKGCONFIG + to control generation of pkg-config file "expat.pc" + #424 CMake: Add minimalistic support for building binary packages + with CMake target "package"; based on CPack + #366 CMake: Add option -DEXPAT_OSSFUZZ_BUILD=(ON|OFF) with + default OFF to build fuzzer code against OSS-Fuzz and + related environment variable LIB_FUZZING_ENGINE + #354 Fix testsuite for -DEXPAT_DTD=OFF and -DEXPAT_NS=OFF, each + #354 #355 .. + #356 #412 Address compiler warnings + #368 #369 Address pngcheck warnings with doc/*.png images + Version info bumped from 7:11:6 to 7:12:6 + + Special thanks to: + asavah + Ben Wagner + Bhargava Shastry + Frank Landgraf + Jeffrey Walton + Joe Orton + Kleber Tarcísio + Ma Lin + Maciej SroczyÅ„ski + Mohammed Khajapasha + Vadim Zeitlin + and + Cppcheck 2.0 and the Cppcheck team + +Release 2.2.9 Wed September 25 2019 + Other changes: + examples: Drop executable bits from elements.c + #349 Windows: Change the name of the Windows DLLs from expat*.dll + to libexpat*.dll once more (regression from 2.2.8, first + fixed in 1.95.3, issue #61 on SourceForge today, + was issue #432456 back then); needs a fix due + case-insensitive file systems on Windows and the fact that + Perl's XML::Parser::Expat compiles into Expat.dll. + #347 Windows: Only define _CRT_RAND_S if not defined + Version info bumped from 7:10:6 to 7:11:6 + + Special thanks to: + Ben Wagner + +Release 2.2.8 Fri September 13 2019 + Security fixes: + #317 #318 CVE-2019-15903 -- Fix heap overflow triggered by + XML_GetCurrentLineNumber (or XML_GetCurrentColumnNumber), + and deny internal entities closing the doctype; + fixed in commit c20b758c332d9a13afbbb276d30db1d183a85d43 + + Bug fixes: + #240 Fix cases where XML_StopParser did not have any effect + when called from inside of an end element handler + #341 xmlwf: Fix exit code for operation without "-d DIRECTORY"; + previously, only "-d DIRECTORY" would give you a proper + exit code: + # xmlwf -d . <<<'' 2>/dev/null ; echo $? + 2 + # xmlwf <<<'' 2>/dev/null ; echo $? + 0 + Now both cases return exit code 2. + + Other changes: + #299 #302 Windows: Replace LoadLibrary hack to access + unofficial API function SystemFunction036 (RtlGenRandom) + by using official API function rand_s (needs WinXP+) + #325 Windows: Drop support for Visual Studio <=7.1/2003 + and document supported compilers in README.md + #286 Windows: Remove COM code from xmlwf; in case it turns + out needed later, there will be a dedicated repository + below https://github.com/libexpat/ for that code + #322 Windows: Remove explicit MSVC solution and project files. + You can generate Visual Studio solution files through + CMake, e.g.: cmake -G"Visual Studio 15 2017" . + #338 xmlwf: Make "xmlwf -h" help output more friendly + #339 examples: Improve elements.c + #244 #264 Autotools: Add argument --enable-xml-attr-info + #239 #301 Autotools: Add arguments + --with-getrandom + --without-getrandom + --with-sys-getrandom + --without-sys-getrandom + #312 #343 Autotools: Fix linking issues with "./configure LD=clang" + Autotools: Fix "make run-xmltest" for out-of-source builds + #329 #336 CMake: Pull all options from Expat <=2.2.7 into namespace + prefix EXPAT_ with the exception of DOCBOOK_TO_MAN: + - BUILD_doc -> EXPAT_BUILD_DOCS (plural) + - BUILD_examples -> EXPAT_BUILD_EXAMPLES + - BUILD_shared -> EXPAT_SHARED_LIBS + - BUILD_tests -> EXPAT_BUILD_TESTS + - BUILD_tools -> EXPAT_BUILD_TOOLS + - DOCBOOK_TO_MAN -> DOCBOOK_TO_MAN (unchanged) + - INSTALL -> EXPAT_ENABLE_INSTALL + - MSVC_USE_STATIC_CRT -> EXPAT_MSVC_STATIC_CRT + - USE_libbsd -> EXPAT_WITH_LIBBSD + - WARNINGS_AS_ERRORS -> EXPAT_WARNINGS_AS_ERRORS + - XML_CONTEXT_BYTES -> EXPAT_CONTEXT_BYTES + - XML_DEV_URANDOM -> EXPAT_DEV_URANDOM + - XML_DTD -> EXPAT_DTD + - XML_NS -> EXPAT_NS + - XML_UNICODE -> EXPAT_CHAR_TYPE=ushort (!) + - XML_UNICODE_WCHAR_T -> EXPAT_CHAR_TYPE=wchar_t (!) + #244 #264 CMake: Add argument -DEXPAT_ATTR_INFO=(ON|OFF), + default OFF + #326 CMake: Add argument -DEXPAT_LARGE_SIZE=(ON|OFF), + default OFF + #328 CMake: Add argument -DEXPAT_MIN_SIZE=(ON|OFF), + default OFF + #239 #277 CMake: Add arguments + -DEXPAT_WITH_GETRANDOM=(ON|OFF|AUTO), default AUTO + -DEXPAT_WITH_SYS_GETRANDOM=(ON|OFF|AUTO), default AUTO + #326 CMake: Install expat_config.h to include directory + #326 CMake: Generate and install configuration files for + future find_package(expat [..] CONFIG [..]) + CMake: Now produces a summary of applied configuration + CMake: Require C++ compiler only when tests are enabled + #330 CMake: Fix compilation for 16bit character types, + i.e. ex -DXML_UNICODE=ON (and ex -DXML_UNICODE_WCHAR_T=ON) + #265 CMake: Fix linking with MinGW + #330 CMake: Add full support for MinGW; to enable, use + -DCMAKE_TOOLCHAIN_FILE=[expat]/cmake/mingw-toolchain.cmake + #330 CMake: Port "make run-xmltest" from GNU Autotools to CMake + #316 CMake: Windows: Make binary postfix match MSVC + Old: expat[d].lib + New: expat[w][d][MD|MT].lib + CMake: Migrate files from Windows to Unix line endings + #308 CMake: Integrate OSS-Fuzz fuzzers, option + -DEXPAT_BUILD_FUZZERS=(ON|OFF), default OFF + #14 Drop an OpenVMS support leftover + #235 #268 .. + #270 #310 .. + #313 #331 #333 Address compiler warnings + #282 #283 .. + #284 #285 Address cppcheck warnings + #294 #295 Address Clang Static Analyzer warnings + #24 #293 Mass-apply clang-format 9 (and ensure conformance during CI) + Version info bumped from 7:9:6 to 7:10:6 + + Special thanks to: + David Loffredo + Joonun Jang + Kishore Kunche + Marco Maggi + Mitch Phillips + Mohammed Khajapasha + Rolf Ade + xantares + Zhongyuan Zhou + +Release 2.2.7 Wed June 19 2019 + Security fixes: + #186 #262 CVE-2018-20843 -- Fix extraction of namespace prefixes from + XML names; XML names with multiple colons could end up in + the wrong namespace, and take a high amount of RAM and CPU + resources while processing, opening the door to + use for denial-of-service attacks + + Other changes: + #195 #197 Autotools/CMake: Utilize -fvisibility=hidden to stop + exporting non-API symbols + #227 Autotools: Add --without-examples and --without-tests + #228 Autotools: Modernize configure.ac + #245 #246 Autotools: Fix check for -fvisibility=hidden for Clang + #247 #248 Autotools: Fix compilation for lack of docbook2x-man + #236 #258 Autotools: Produce .tar.{gz,lz,xz} release archives + #212 CMake: Make libdir of pkgconfig expat.pc support multilib + #158 #263 CMake: Build man page in PROJECT_BINARY_DIR not _SOURCE_DIR + #219 Remove fallback to bcopy, assume that memmove(3) exists + #257 Use portable "/usr/bin/env bash" shebang (e.g. for OpenBSD) + #243 Windows: Fix syntax of .def module definition files + Version info bumped from 7:8:6 to 7:9:6 + + Special thanks to: + Benjamin Peterson + Caolán McNamara + Hanno Böck + KangLin + Kishore Kunche + Marco Maggi + Rhodri James + Sebastian Dröge + userwithuid + Yury Gribov + +Release 2.2.6 Sun August 12 2018 + Bug fixes: + #170 #206 Avoid doing arithmetic with NULL pointers in XML_GetBuffer + #204 #205 Fix 2.2.5 regression with suspend-resume while parsing + a document like '' + + Other changes: + #165 #168 Autotools: Fix docbook-related configure syntax error + #166 Autotools: Avoid grep option `-q` for Solaris + #167 Autotools: Support + ./configure DOCBOOK_TO_MAN="xmlto man --skip-validation" + #159 #167 Autotools: Support DOCBOOK_TO_MAN command which produces + xmlwf.1 rather than XMLWF.1; also covers case insensitive + file systems + #181 Autotools: Drop -rpath option passed to libtool + #188 Autotools: Detect and deny SGML docbook2man as ours is XML + #188 Autotools/CMake: Support command db2x_docbook2man as well + #174 CMake: Introduce option WARNINGS_AS_ERRORS, defaults to OFF + #184 #185 CMake: Introduce option MSVC_USE_STATIC_CRT, defaults to OFF + #207 #208 CMake: Introduce option XML_UNICODE and XML_UNICODE_WCHAR_T, + both defaulting to OFF + #175 CMake: Prefer check_symbol_exists over check_function_exists + #176 CMake: Create the same pkg-config file as with GNU Autotools + #178 #179 CMake: Use GNUInstallDirs module to set proper defaults for + install directories + #208 CMake: Utilize expat_config.h.cmake for XML_DEV_URANDOM + #180 Windows: Fix compilation of test suite for Visual Studio 2008 + #131 #173 #202 Address compiler warnings + #187 #190 #200 Fix miscellaneous typos + Version info bumped from 7:7:6 to 7:8:6 + + Special thanks to: + Anton Maklakov + Benjamin Peterson + Brad King + Franek Korta + Frank Rast + Joe Orton + luzpaz + Pedro Vicente + Rainer Jung + Rhodri James + Rolf Ade + Rolf Eike Beer + Thomas Beutlich + Tomasz KÅ‚oczko + +Release 2.2.5 Tue October 31 2017 + Bug fixes: + #8 If the parser runs out of memory, make sure its internal + state reflects the memory it actually has, not the memory + it wanted to have. + #11 The default handler wasn't being called when it should for + a SYSTEM or PUBLIC doctype if an entity declaration handler + was registered. + #137 #138 Fix a case of mistakenly reported parsing success where + XML_StopParser was called from an element handler + #162 Function XML_ErrorString was returning NULL rather than + a message for code XML_ERROR_INVALID_ARGUMENT + introduced with release 2.2.1 + + Other changes: + #106 xmlwf: Add argument -N adding notation declarations + #75 #106 Test suite: Resolve expected failure cases where xmlwf + output was incomplete + #127 Windows: Fix test suite compilation + #126 #127 Windows: Fix compilation for Visual Studio 2012 + Windows: Upgrade shipped project files to Visual Studio 2017 + #33 #132 tests: Mass-fix compilation for XML_UNICODE_WCHAR_T + #129 examples: Fix compilation for XML_UNICODE_WCHAR_T + #130 benchmark: Fix compilation for XML_UNICODE_WCHAR_T + #144 xmlwf: Fix compilation for XML_UNICODE_WCHAR_T; still needs + Windows or MinGW for 2-byte wchar_t + #9 Address two Clang Static Analyzer false positives + #59 Resolve troublesome macros hiding parser struct membership + and dereferencing that pointer + #6 Resolve superfluous internal malloc/realloc switch + #153 #155 Improve docbook2x-man detection + #160 Undefine NDEBUG in the test suite (rather than rejecting it) + #161 Address compiler warnings + Version info bumped from 7:6:6 to 7:7:6 + + Special thanks to: + Benbuck Nason + Hans Wennborg + José Gutiérrez de la Concha + Pedro Monreal Gonzalez + Rhodri James + Rolf Ade + Stephen Groat + and + Core Infrastructure Initiative + +Release 2.2.4 Sat August 19 2017 + Bug fixes: + #115 Fix copying of partial characters for UTF-8 input + + Other changes: + #109 Fix "make check" for non-x86 architectures that default + to unsigned type char (-128..127 rather than 0..255) + #109 coverage.sh: Cover -funsigned-char + Autotools: Introduce --without-xmlwf argument + #65 Autotools: Replace handwritten Makefile with GNU Automake + #43 CMake: Auto-detect high quality entropy extractors, add new + option USE_libbsd=ON to use arc4random_buf of libbsd + #74 CMake: Add -fno-strict-aliasing only where supported + #114 CMake: Always honor manually set BUILD_* options + #114 CMake: Compile man page if docbook2x-man is available, only + #117 Include file tests/xmltest.log.expected in source tarball + (required for "make run-xmltest") + #117 Include (existing) Visual Studio 2013 files in source tarball + Improve test suite error output + #111 Fix some typos in documentation + Version info bumped from 7:5:6 to 7:6:6 + + Special thanks to: + Jakub Wilk + Joe Orton + Lin Tian + Rolf Eike Beer + +Release 2.2.3 Wed August 2 2017 + Security fixes: + #82 CVE-2017-11742 -- Windows: Fix DLL hijacking vulnerability + using Steve Holme's LoadLibrary wrapper for/of cURL + + Bug fixes: + #85 Fix a dangling pointer issue related to realloc + + Other changes: + Increase code coverage + #91 Linux: Allow getrandom to fail if nonblocking pool has not + yet been initialized and read /dev/urandom then, instead. + This is in line with what recent Python does. + #81 Pre-10.7/Lion macOS: Support entropy from arc4random + #86 Check that a UTF-16 encoding in an XML declaration has the + right endianness + #4 #5 #7 Recover correctly when some reallocations fail + Repair "./configure && make" for systems without any + provider of high quality entropy + and try reading /dev/urandom on those + Ensure that user-defined character encodings have converter + functions when they are needed + Fix mis-leading description of argument -c in xmlwf.1 + Rely on macro HAVE_ARC4RANDOM_BUF (rather than __CloudABI__) + for CloudABI + #100 Fix use of SIPHASH_MAIN in siphash.h + #23 Test suite: Fix memory leaks + Version info bumped from 7:4:6 to 7:5:6 + + Special thanks to: + Chanho Park + Joe Orton + Pascal Cuoq + Rhodri James + Simon McVittie + Vadim Zeitlin + Viktor Szakats + and + Core Infrastructure Initiative + +Release 2.2.2 Wed July 12 2017 + Security fixes: + #43 Protect against compilation without any source of high + quality entropy enabled, e.g. with CMake build system; + commit ff0207e6076e9828e536b8d9cd45c9c92069b895 + #60 Windows with _UNICODE: + Unintended use of LoadLibraryW with a non-wide string + resulted in failure to load advapi32.dll and degradation + in quality of used entropy when compiled with _UNICODE for + Windows; you can launch existing binaries with + EXPAT_ENTROPY_DEBUG=1 in the environment to inspect the + quality of entropy used during runtime; commits + * 95b95032f907ef1cd17ee7a9a1768010a825d61d + * 73a5a2e9c081f49f2d775cf7ced864158b68dc80 + [MOX-006] Fix non-NULL parser parameter validation in XML_Parse; + resulted in NULL dereference, previously; + commit ac256dafdffc9622ab0dc2c62fcecb0dfcfa71fe + + Bug fixes: + #69 Fix improper use of unsigned long long integer literals + + Other changes: + #73 Start requiring a C99 compiler + #49 Fix "==" Bashism in configure script + #50 Fix too eager getrandom detection for Debian GNU/kFreeBSD + #52 and macOS + #51 Address lack of stdint.h in Visual Studio 2003 to 2008 + #58 Address compile warnings + #68 Fix "./buildconf.sh && ./configure" for some versions + of Dash for /bin/sh + #72 CMake: Ease use of Expat in context of a parent project + with multiple CMakeLists.txt files + #72 CMake: Resolve mistaken executable permissions + #76 Address compile warning with -DNDEBUG (not recommended!) + #77 Address compile warning about macro redefinition + + Special thanks to: + Alexander Bluhm + Ben Boeckel + Cătălin Răceanu + Kerin Millar + László Böszörményi + S. P. Zeidler + Segev Finer + Václav Slavík + Victor Stinner + Viktor Szakats + and + Radically Open Security + +Release 2.2.1 Sat June 17 2017 + Security fixes: + CVE-2017-9233 -- External entity infinite loop DoS + Details: https://libexpat.github.io/doc/cve-2017-9233/ + Commit c4bf96bb51dd2a1b0e185374362ee136fe2c9d7f + [MOX-002] CVE-2016-9063 -- Detect integer overflow; commit + d4f735b88d9932bd5039df2335eefdd0723dbe20 + (Fixed version of existing downstream patches!) + (SF.net) #539 Fix regression from fix to CVE-2016-0718 cutting off + longer tag names; commits + * 896b6c1fd3b842f377d1b62135dccf0a579cf65d + * af507cef2c93cb8d40062a0abe43a4f4e9158fb2 + #16 * 0dbbf43fdb20f593ddf4fa1ff67288000dd4a7fd + #25 More integer overflow detection (function poolGrow); commits + * 810b74e4703dcfdd8f404e3cb177d44684775143 + * 44178553f3539ce69d34abee77a05e879a7982ac + [MOX-002] Detect overflow from len=INT_MAX call to XML_Parse; commits + * 4be2cb5afcc018d996f34bbbce6374b7befad47f + * 7e5b71b748491b6e459e5c9a1d090820f94544d8 + [MOX-005] #30 Use high quality entropy for hash initialization: + * arc4random_buf on BSD, systems with libbsd + (when configured with --with-libbsd), CloudABI + * RtlGenRandom on Windows XP / Server 2003 and later + * getrandom on Linux 3.17+ + In a way, that's still part of CVE-2016-5300. + https://github.com/libexpat/libexpat/pull/30/commits + [MOX-005] For the low quality entropy extraction fallback code, + the parser instance address can no longer leak, commit + 04ad658bd3079dd15cb60fc67087900f0ff4b083 + [MOX-003] Prevent use of uninitialised variable; commit + [MOX-004] a4dc944f37b664a3ca7199c624a98ee37babdb4b + Add missing parameter validation to public API functions + and dedicated error code XML_ERROR_INVALID_ARGUMENT: + [MOX-006] * NULL checks; commits + * d37f74b2b7149a3a95a680c4c4cd2a451a51d60a (merge/many) + * 9ed727064b675b7180c98cb3d4f75efba6966681 + * 6a747c837c50114dfa413994e07c0ba477be4534 + * Negative length (XML_Parse); commit + [MOX-002] 70db8d2538a10f4c022655d6895e4c3e78692e7f + [MOX-001] #35 Change hash algorithm to William Ahern's version of SipHash + to go further with fixing CVE-2012-0876. + https://github.com/libexpat/libexpat/pull/39/commits + + Bug fixes: + #32 Fix sharing of hash salt across parsers; + relevant where XML_ExternalEntityParserCreate is called + prior to XML_Parse, in particular (e.g. FBReader) + #28 xmlwf: Auto-disable use of memory-mapping (and parsing + as a single chunk) for files larger than ~1 GB (2^30 bytes) + rather than failing with error "out of memory" + #3 Fix double free after malloc failure in DTD code; commit + 7ae9c3d3af433cd4defe95234eae7dc8ed15637f + #17 Fix memory leak on parser error for unbound XML attribute + prefix with new namespaces defined in the same tag; + found by Google's OSS-Fuzz; commits + * 16f87daae5a16132e479e4f71862128c7a915c73 + * b47dbc9745932c160893d433220e462bd605f8cd + xmlwf on Windows: Add missing calls to CloseHandle + + New features: + #30 Introduced environment switch EXPAT_ENTROPY_DEBUG=1 + for runtime debugging of entropy extraction + + Other changes: + Increase code coverage + #33 Reject use of XML_UNICODE_WCHAR_T with sizeof(wchar_t) != 2; + XML_UNICODE_WCHAR_T was never meant to be used outside + of Windows; 4-byte wchar_t is common on Linux + (SF.net) #538 Start using -fno-strict-aliasing + (SF.net) #540 Support compilation against cloudlibc of CloudABI + Allow MinGW cross-compilation + (SF.net) #534 CMake: Introduce option "BUILD_doc" (enabled by default) + to bypass compilation of the xmlwf.1 man page + (SF.net) pr2 CMake: Introduce option "INSTALL" (enabled by default) + to bypass installation of expat files + CMake: Fix ninja support + Autotools: Add parameters --enable-xml-context [COUNT] + and --disable-xml-context; default of context of 1024 + bytes enabled unchanged + #14 Drop AmigaOS 4.x code and includes + #14 Drop ancient build systems: + * Borland C++ Builder + * OpenVMS + * Open Watcom + * Visual Studio 6.0 + * Pre-X Mac OS (MPW Makefile) + If you happen to rely on some of these, please get in + touch for joining with maintenance. + #10 Move from WIN32 to _WIN32 + #13 Fix "make run-xmltest" order instability + Address compile warnings + Bump version info from 7:2:6 to 7:3:6 + Add AUTHORS file + + Infrastructure: + #1 Migrate from SourceForge to GitHub (except downloads): + https://github.com/libexpat/ + #1 Re-create http://libexpat.org/ project website + Start utilizing Travis CI + + Special thanks to: + Andy Wang + Don Lewis + Ed Schouten + Karl Waclawek + Pascal Cuoq + Rhodri James + Sergei Nikulov + Tobias Taschner + Viktor Szakats + and + Core Infrastructure Initiative + Mozilla Foundation (MOSS Track 3: Secure Open Source) + Radically Open Security + +Release 2.2.0 Tue June 21 2016 + Security fixes: + #537 CVE-2016-0718 -- Fix crash on malformed input + CVE-2016-4472 -- Improve insufficient fix to CVE-2015-1283 / + CVE-2015-2716 introduced with Expat 2.1.1 + #499 CVE-2016-5300 -- Use more entropy for hash initialization + than the original fix to CVE-2012-0876 + #519 CVE-2012-6702 -- Resolve troublesome internal call to srand + that was introduced with Expat 2.1.0 + when addressing CVE-2012-0876 (issue #496) + + Bug fixes: + Fix uninitialized reads of size 1 + (e.g. in little2_updatePosition) + Fix detection of UTF-8 character boundaries + + Other changes: + #532 Fix compilation for Visual Studio 2010 (keyword "C99") + Autotools: Resolve use of "$<" to better support bmake + Autotools: Add QA script "qa.sh" (and make target "qa") + Autotools: Respect CXXFLAGS if given + Autotools: Fix "make run-xmltest" + Autotools: Have "make run-xmltest" check for expected output + p90 CMake: Fix static build (BUILD_shared=OFF) on Windows + #536 CMake: Add soversion, support -DNO_SONAME=yes to bypass + #323 CMake: Add suffix "d" to differentiate debug from release + CMake: Define WIN32 with CMake on Windows + Annotate memory allocators for GCC + Address all currently known compile warnings + Make sure that API symbols remain visible despite + -fvisibility=hidden + Remove executable flag from source files + Resolve COMPILED_FROM_DSP in favor of WIN32 + + Special thanks to: + Björn Lindahl + Christian Heimes + Cristian Rodríguez + Daniel Krügler + Gustavo Grieco + Karl Waclawek + László Böszörményi + Marco Grassi + Pascal Cuoq + Sergei Nikulov + Thomas Beutlich + Warren Young + Yann Droneaud + +Release 2.1.1 Sat March 12 2016 + Security fixes: + #582: CVE-2015-1283 - Multiple integer overflows in XML_GetBuffer + + Bug fixes: + #502: Fix potential null pointer dereference + #520: Symbol XML_SetHashSalt was not exported + Output of "xmlwf -h" was incomplete + + Other changes: + #503: Document behavior of calling XML_SetHashSalt with salt 0 + Minor improvements to man page xmlwf(1) + Improvements to the experimental CMake build system + libtool now invoked with --verbose + +Release 2.1.0 Sat March 24 2012 + - Security fixes: + #2958794: CVE-2012-1148 - Memory leak in poolGrow. + #2895533: CVE-2012-1147 - Resource leak in readfilemap.c. + #3496608: CVE-2012-0876 - Hash DOS attack. + #2894085: CVE-2009-3560 - Buffer over-read and crash in big2_toUtf8(). + #1990430: CVE-2009-3720 - Parser crash with special UTF-8 sequences. + - Bug Fixes: + #1742315: Harmful XML_ParserCreateNS suggestion. + #1785430: Expat build fails on linux-amd64 with gcc version>=4.1 -O3. + #1983953, 2517952, 2517962, 2649838: + Build modifications using autoreconf instead of buildconf.sh. + #2815947, #2884086: OBJEXT and EXEEXT support while building. + #2517938: xmlwf should return non-zero exit status if not well-formed. + #2517946: Wrong statement about XMLDecl in xmlwf.1 and xmlwf.sgml. + #2855609: Dangling positionPtr after error. + #2990652: CMake support. + #3010819: UNEXPECTED_STATE with a trailing "%" in entity value. + #3206497: Uninitialized memory returned from XML_Parse. + #3287849: make check fails on mingw-w64. + - Patches: + #1749198: pkg-config support. + #3010222: Fix for bug #3010819. + #3312568: CMake support. + #3446384: Report byte offsets for attr names and values. + - New Features / API changes: + Added new API member XML_SetHashSalt() that allows setting an initial + value (salt) for hash calculations. This is part of the fix for + bug #3496608 to randomize hash parameters. + When compiled with XML_ATTR_INFO defined, adds new API member + XML_GetAttributeInfo() that allows retrieving the byte + offsets for attribute names and values (patch #3446384). + Added CMake build system. + See bug #2990652 and patch #3312568. + Added run-benchmark target to Makefile.in - relies on testdata module + present in the same relative location as in the repository. + +Release 2.0.1 Tue June 5 2007 + - Fixed bugs #1515266, #1515600: The character data handler's calling + of XML_StopParser() was not handled properly; if the parser was + stopped and the handler set to NULL, the parser would segfault. + - Fixed bug #1690883: Expat failed on EBCDIC systems as it assumed + some character constants to be ASCII encoded. + - Minor cleanups of the test harness. + - Fixed xmlwf bug #1513566: "out of memory" error on file size zero. + - Fixed outline.c bug #1543233: missing a final XML_ParserFree() call. + - Fixes and improvements for Windows platform: + bugs #1409451, #1476160, #1548182, #1602769, #1717322. + - Build fixes for various platforms: + HP-UX, Tru64, Solaris 9: patch #1437840, bug #1196180. + All Unix: #1554618 (refreshed config.sub/config.guess). + #1490371, #1613457: support both, DESTDIR and INSTALL_ROOT, + without relying on GNU-Make specific features. + #1647805: Patched configure.in to work better with Intel compiler. + - Fixes to Makefile.in to have make check work correctly: + bugs #1408143, #1535603, #1536684. + - Added Open Watcom support: patch #1523242. + +Release 2.0.0 Wed Jan 11 2006 + - We no longer use the "check" library for C unit testing; we + always use the (partial) internal implementation of the API. + - Report XML_NS setting via XML_GetFeatureList(). + - Fixed headers for use from C++. + - XML_GetCurrentLineNumber() and XML_GetCurrentColumnNumber() + now return unsigned integers. + - Added XML_LARGE_SIZE switch to enable 64-bit integers for + byte indexes and line/column numbers. + - Updated to use libtool 1.5.22 (the most recent). + - Added support for AmigaOS. + - Some mostly minor bug fixes. SF issues include: #1006708, + #1021776, #1023646, #1114960, #1156398, #1221160, #1271642. + +Release 1.95.8 Fri Jul 23 2004 + - Major new feature: suspend/resume. Handlers can now request + that a parse be suspended for later resumption or aborted + altogether. See "Temporarily Stopping Parsing" in the + documentation for more details. + - Some mostly minor bug fixes, but compilation should no + longer generate warnings on most platforms. SF issues + include: #827319, #840173, #846309, #888329, #896188, #923913, + #928113, #961698, #985192. + +Release 1.95.7 Mon Oct 20 2003 + - Fixed enum XML_Status issue (reported on SourceForge many + times), so compilers that are properly picky will be happy. + - Introduced an XMLCALL macro to control the calling + convention used by the Expat API; this macro should be used + to annotate prototypes and definitions of callback + implementations in code compiled with a calling convention + other than the default convention for the host platform. + - Improved ability to build without the configure-generated + expat_config.h header. This is useful for applications + which embed Expat rather than linking in the library. + - Fixed a variety of bugs: see SF issues #458907, #609603, + #676844, #679754, #692878, #692964, #695401, #699323, #699487, + #820946. + - Improved hash table lookups. + - Added more regression tests and improved documentation. + +Release 1.95.6 Tue Jan 28 2003 + - Added XML_FreeContentModel(). + - Added XML_MemMalloc(), XML_MemRealloc(), XML_MemFree(). + - Fixed a variety of bugs: see SF issues #615606, #616863, + #618199, #653180, #673791. + - Enhanced the regression test suite. + - Man page improvements: includes SF issue #632146. + +Release 1.95.5 Fri Sep 6 2002 + - Added XML_UseForeignDTD() for improved SAX2 support. + - Added XML_GetFeatureList(). + - Defined XML_Bool type and the values XML_TRUE and XML_FALSE. + - Use an incomplete struct instead of a void* for the parser + (may not retain). + - Fixed UTF-8 decoding bug that caused legal UTF-8 to be rejected. + - Finally fixed bug where default handler would report DTD + events that were already handled by another handler. + Initial patch contributed by Darryl Miles. + - Removed unnecessary DllMain() function that caused static + linking into a DLL to be difficult. + - Added VC++ projects for building static libraries. + - Reduced line-length for all source code and headers to be + no longer than 80 characters, to help with AS/400 support. + - Reduced memory copying during parsing (SF patch #600964). + - Fixed a variety of bugs: see SF issues #580793, #434664, + #483514, #580503, #581069, #584041, #584183, #584832, #585537, + #596555, #596678, #598352, #598944, #599715, #600479, #600971. + +Release 1.95.4 Fri Jul 12 2002 + - Added support for VMS, contributed by Craig Berry. See + vms/README.vms for more information. + - Added Mac OS (classic) support, with a makefile for MPW, + contributed by Thomas Wegner and Daryle Walker. + - Added Borland C++ Builder 5 / BCC 5.5 support, contributed + by Patrick McConnell (SF patch #538032). + - Fixed a variety of bugs: see SF issues #441449, #563184, + #564342, #566334, #566901, #569461, #570263, #575168, #579196. + - Made skippedEntityHandler conform to SAX2 (see source comment) + - Re-implemented WFC: Entity Declared from XML 1.0 spec and + added a new error "entity declared in parameter entity": + see SF bug report #569461 and SF patch #578161 + - Re-implemented section 5.1 from XML 1.0 spec: + see SF bug report #570263 and SF patch #578161 + +Release 1.95.3 Mon Jun 3 2002 + - Added a project to the MSVC workspace to create a wchar_t + version of the library; the DLLs are named libexpatw.dll. + - Changed the name of the Windows DLLs from expat.dll to + libexpat.dll; this fixes SF bug #432456. + - Added the XML_ParserReset() API function. + - Fixed XML_SetReturnNSTriplet() to work for element names. + - Made the XML_UNICODE builds usable (thanks, Karl!). + - Allow xmlwf to read from standard input. + - Install a man page for xmlwf on Unix systems. + - Fixed many bugs; see SF bug reports #231864, #461380, #464837, + #466885, #469226, #477667, #484419, #487840, #494749, #496505, + #547350. Other bugs which we can't test as easily may also + have been fixed, especially in the area of build support. + +Release 1.95.2 Fri Jul 27 2001 + - More changes to make MSVC happy with the build; add a single + workspace to support both the library and xmlwf application. + - Added a Windows installer for Windows users; includes + xmlwf.exe. + - Added compile-time constants that can be used to determine the + Expat version + - Removed a lot of GNU-specific dependencies to aide portability + among the various Unix flavors. + - Fix the UTF-8 BOM bug. + - Cleaned up warning messages for several compilers. + - Added the -Wall, -Wstrict-prototypes options for GCC. + +Release 1.95.1 Sun Oct 22 15:11:36 EDT 2000 + - Changes to get expat to build under Microsoft compiler + - Removed all aborts and instead return an UNEXPECTED_STATE error. + - Fixed a bug where a stray '%' in an entity value would cause an + abort. + - Defined XML_SetEndNamespaceDeclHandler. Thanks to Darryl Miles for + finding this oversight. + - Changed default patterns in lib/Makefile.in to fit non-GNU makes + Thanks to robin@unrated.net for reporting and providing an + account to test on. + - The reference had the wrong label for XML_SetStartNamespaceDecl. + Reported by an anonymous user. + +Release 1.95.0 Fri Sep 29 2000 + - XML_ParserCreate_MM + Allows you to set a memory management suite to replace the + standard malloc,realloc, and free. + - XML_SetReturnNSTriplet + If you turn this feature on when namespace processing is in + effect, then qualified, prefixed element and attribute names + are returned as "uri|name|prefix" where '|' is whatever + separator character is used in namespace processing. + - Merged in features from perl-expat + o XML_SetElementDeclHandler + o XML_SetAttlistDeclHandler + o XML_SetXmlDeclHandler + o XML_SetEntityDeclHandler + o StartDoctypeDeclHandler takes 3 additional parameters: + sysid, pubid, has_internal_subset + o Many paired handler setters (like XML_SetElementHandler) + now have corresponding individual handler setters + o XML_GetInputContext for getting the input context of + the current parse position. + - Added reference material + - Packaged into a distribution that builds a sharable library diff --git a/3rdparty/expat/ConfigureChecks.cmake b/3rdparty/expat/ConfigureChecks.cmake new file mode 100644 index 0000000..d85e48c --- /dev/null +++ b/3rdparty/expat/ConfigureChecks.cmake @@ -0,0 +1,66 @@ +include(CheckCCompilerFlag) +include(CheckCSourceCompiles) +include(CheckIncludeFile) +include(CheckIncludeFiles) +include(CheckSymbolExists) +include(TestBigEndian) + +check_include_file("dlfcn.h" HAVE_DLFCN_H) +check_include_file("fcntl.h" HAVE_FCNTL_H) +check_include_file("inttypes.h" HAVE_INTTYPES_H) +check_include_file("memory.h" HAVE_MEMORY_H) +check_include_file("stdint.h" HAVE_STDINT_H) +check_include_file("stdlib.h" HAVE_STDLIB_H) +check_include_file("strings.h" HAVE_STRINGS_H) +check_include_file("string.h" HAVE_STRING_H) +check_include_file("sys/stat.h" HAVE_SYS_STAT_H) +check_include_file("sys/types.h" HAVE_SYS_TYPES_H) +check_include_file("unistd.h" HAVE_UNISTD_H) + +check_symbol_exists("getpagesize" "unistd.h" HAVE_GETPAGESIZE) +check_symbol_exists("mmap" "sys/mman.h" HAVE_MMAP) +check_symbol_exists("getrandom" "sys/random.h" HAVE_GETRANDOM) + +if(EXPAT_WITH_LIBBSD) + set(CMAKE_REQUIRED_LIBRARIES "${LIB_BSD}") + set(_bsd "bsd/") +else() + set(_bsd "") +endif() +check_symbol_exists("arc4random_buf" "${_bsd}stdlib.h" HAVE_ARC4RANDOM_BUF) +if(NOT HAVE_ARC4RANDOM_BUF) + check_symbol_exists("arc4random" "${_bsd}stdlib.h" HAVE_ARC4RANDOM) +endif() +set(CMAKE_REQUIRED_LIBRARIES) + +#/* Define to 1 if you have the ANSI C header files. */ +check_include_files("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS) + +test_big_endian(WORDS_BIGENDIAN) +#/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +if(WORDS_BIGENDIAN) + set(BYTEORDER 4321) +else(WORDS_BIGENDIAN) + set(BYTEORDER 1234) +endif(WORDS_BIGENDIAN) + +if(HAVE_SYS_TYPES_H) + check_symbol_exists("off_t" "sys/types.h" OFF_T) + check_symbol_exists("size_t" "sys/types.h" SIZE_T) +else(HAVE_SYS_TYPES_H) + set(OFF_T "long") + set(SIZE_T "unsigned") +endif(HAVE_SYS_TYPES_H) + +check_c_source_compiles(" + #include /* for NULL */ + #include /* for syscall */ + #include /* for SYS_getrandom */ + int main() { + syscall(SYS_getrandom, NULL, 0, 0); + return 0; + }" + HAVE_SYSCALL_GETRANDOM) + +check_c_compiler_flag("-fno-strict-aliasing" FLAG_NO_STRICT_ALIASING) +check_c_compiler_flag("-fvisibility=hidden" FLAG_VISIBILITY) diff --git a/3rdparty/expat/Makefile.am b/3rdparty/expat/Makefile.am new file mode 100644 index 0000000..5e1d37d --- /dev/null +++ b/3rdparty/expat/Makefile.am @@ -0,0 +1,154 @@ +# +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +AUTOMAKE_OPTIONS = \ + dist-bzip2 \ + dist-lzip \ + dist-xz \ + foreign \ + subdir-objects + +ACLOCAL_AMFLAGS = -I m4 +LIBTOOLFLAGS = --verbose + +SUBDIRS = lib # lib goes first to build first +if WITH_EXAMPLES +SUBDIRS += examples +endif +if WITH_TESTS +SUBDIRS += tests +endif +if WITH_XMLWF +SUBDIRS += xmlwf doc +endif + +pkgconfig_DATA = expat.pc +pkgconfigdir = $(libdir)/pkgconfig + + +_EXTRA_DIST_CMAKE = \ + cmake/expat-config.cmake.in \ + cmake/mingw-toolchain.cmake \ + \ + CMakeLists.txt \ + CMake.README \ + ConfigureChecks.cmake \ + expat_config.h.cmake + +_EXTRA_DIST_WINDOWS = \ + win32/build_expat_iss.bat \ + win32/expat.iss \ + win32/MANIFEST.txt \ + win32/README.txt + +EXTRA_DIST = \ + $(_EXTRA_DIST_CMAKE) \ + $(_EXTRA_DIST_WINDOWS) \ + \ + conftools/expat.m4 \ + conftools/get-version.sh \ + conftools/PrintPath \ + \ + xmlwf/xmlwf_helpgen.py \ + xmlwf/xmlwf_helpgen.sh \ + \ + Changes \ + README.md \ + \ + fix-xmltest-log.sh \ + test-driver-wrapper.sh + + +.PHONY: buildlib +buildlib: + @echo 'ERROR: Running "make buildlib LIBRARY=libexpatw.la"' >&2 + @echo 'ERROR: is no longer supported. INSTEAD please:' >&2 + @echo 'ERROR:' >&2 + @echo 'ERROR: * Mass-patch Makefile.am, e.g.' >&2 + @echo 'ERROR: # find -name Makefile.am -exec sed \' >&2 + @echo 'ERROR: -e "s,libexpat\.la,libexpatw.la," \' >&2 + @echo 'ERROR: -e "s,libexpat_la,libexpatw_la," \' >&2 + @echo 'ERROR: -i {} +' >&2 + @echo 'ERROR:' >&2 + @echo 'ERROR: * Run automake to re-generate Makefile.in files' >&2 + @echo 'ERROR:' >&2 + @echo 'ERROR: * Use "./configure --without-xmlwf" and/or' >&2 + @echo 'ERROR: "make -C lib all install" to bypass compilation' >&2 + @echo 'ERROR: of xmlwf (e.g. with -DXML_UNICODE)' >&2 + @echo 'ERROR:' >&2 + @false + + +.PHONY: run-benchmark +run-benchmark: + $(MAKE) -C tests/benchmark + ./run.sh tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/recset.xml 65535 3 + +.PHONY: download-xmlts-zip +download-xmlts-zip: + if test "$(XMLTS_ZIP)" = ""; then \ + wget --output-document=tests/xmlts.zip \ + https://www.w3.org/XML/Test/xmlts20080827.zip; \ + else \ + cp $(XMLTS_ZIP) tests/xmlts.zip; \ + fi + +tests/xmlts.zip: + $(MAKE) download-xmlts-zip + +.PHONY: extract-xmlts-zip +extract-xmlts-zip: tests/xmlts.zip + [ -f $(builddir)/tests/xmlts.zip ] || $(MAKE) download-xmlts-zip # vpath workaround + cd tests && unzip -q xmlts.zip + +tests/xmlconf: tests/xmlts.zip + $(MAKE) extract-xmlts-zip + +.PHONY: run-xmltest +run-xmltest: tests/xmlconf +if WITH_XMLWF + [ -d $(builddir)/tests/xmlconf ] || $(MAKE) extract-xmlts-zip # vpath workaround + $(MAKE) -C lib + $(MAKE) -C xmlwf + $(srcdir)/tests/xmltest.sh "$(abs_builddir)/run.sh $(abs_builddir)/xmlwf/xmlwf@EXEEXT@" 2>&1 | tee $(builddir)/tests/xmltest.log + $(srcdir)/fix-xmltest-log.sh $(builddir)/tests/xmltest.log + diff -u $(srcdir)/tests/xmltest.log.expected $(builddir)/tests/xmltest.log +else + @echo 'ERROR: xmlwf is needed for "make run-xmltest".' >&2 + @echo 'ERROR: Please re-configure without --without-xmlwf.' >&2 + @false +endif + +.PHONY: qa +qa: + QA_COMPILER=clang QA_SANITIZER=address ./qa.sh + QA_COMPILER=clang QA_SANITIZER=memory ./qa.sh + QA_COMPILER=clang QA_SANITIZER=undefined ./qa.sh + QA_COMPILER=gcc QA_PROCESSOR=gcov ./qa.sh diff --git a/3rdparty/expat/Makefile.in b/3rdparty/expat/Makefile.in new file mode 100644 index 0000000..ab84639 --- /dev/null +++ b/3rdparty/expat/Makefile.in @@ -0,0 +1,1047 @@ +# Makefile.in generated by automake 1.16.2 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2020 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@WITH_EXAMPLES_TRUE@am__append_1 = examples +@WITH_TESTS_TRUE@am__append_2 = tests +@WITH_XMLWF_TRUE@am__append_3 = xmlwf doc +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/conftools/ax-require-defined.m4 \ + $(top_srcdir)/conftools/ax-check-compile-flag.m4 \ + $(top_srcdir)/conftools/ax-check-link-flag.m4 \ + $(top_srcdir)/conftools/ax-append-flag.m4 \ + $(top_srcdir)/conftools/ax-append-compile-flags.m4 \ + $(top_srcdir)/conftools/ax-append-link-flags.m4 \ + $(top_srcdir)/conftools/expatcfg-compiler-supports-visibility.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = expat_config.h +CONFIG_CLEAN_FILES = expat.pc run.sh +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgconfigdir)" +DATA = $(pkgconfig_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir distdir-am dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ + expat_config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +DIST_SUBDIRS = lib examples tests xmlwf doc +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/expat.pc.in \ + $(srcdir)/expat_config.h.in $(srcdir)/run.sh.in \ + $(top_srcdir)/conftools/ar-lib $(top_srcdir)/conftools/compile \ + $(top_srcdir)/conftools/config.guess \ + $(top_srcdir)/conftools/config.sub \ + $(top_srcdir)/conftools/install-sh \ + $(top_srcdir)/conftools/ltmain.sh \ + $(top_srcdir)/conftools/missing AUTHORS COPYING \ + conftools/ar-lib conftools/compile conftools/config.guess \ + conftools/config.sub conftools/depcomp conftools/install-sh \ + conftools/ltmain.sh conftools/missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).tar.lz \ + $(distdir).tar.xz +GZIP_ENV = --best +DIST_TARGETS = dist-lzip dist-xz dist-bzip2 dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILEMAP = @FILEMAP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBAGE = @LIBAGE@ +LIBCURRENT = @LIBCURRENT@ +LIBOBJS = @LIBOBJS@ +LIBREVISION = @LIBREVISION@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +_EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = \ + dist-bzip2 \ + dist-lzip \ + dist-xz \ + foreign \ + subdir-objects + +ACLOCAL_AMFLAGS = -I m4 +LIBTOOLFLAGS = --verbose +SUBDIRS = lib $(am__append_1) $(am__append_2) $(am__append_3) +pkgconfig_DATA = expat.pc +pkgconfigdir = $(libdir)/pkgconfig +_EXTRA_DIST_CMAKE = \ + cmake/expat-config.cmake.in \ + cmake/mingw-toolchain.cmake \ + \ + CMakeLists.txt \ + CMake.README \ + ConfigureChecks.cmake \ + expat_config.h.cmake + +_EXTRA_DIST_WINDOWS = \ + win32/build_expat_iss.bat \ + win32/expat.iss \ + win32/MANIFEST.txt \ + win32/README.txt + +EXTRA_DIST = \ + $(_EXTRA_DIST_CMAKE) \ + $(_EXTRA_DIST_WINDOWS) \ + \ + conftools/expat.m4 \ + conftools/get-version.sh \ + conftools/PrintPath \ + \ + xmlwf/xmlwf_helpgen.py \ + xmlwf/xmlwf_helpgen.sh \ + \ + Changes \ + README.md \ + \ + fix-xmltest-log.sh \ + test-driver-wrapper.sh + +all: expat_config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +expat_config.h: stamp-h1 + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + +stamp-h1: $(srcdir)/expat_config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status expat_config.h +$(srcdir)/expat_config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f expat_config.h stamp-h1 +expat.pc: $(top_builddir)/config.status $(srcdir)/expat.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +run.sh: $(top_builddir)/config.status $(srcdir)/run.sh.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-zstd: distdir + tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + *.tar.zst*) \ + zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) expat_config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-pkgconfigDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-pkgconfigDATA + +.MAKE: $(am__recursive_targets) all install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + clean-libtool cscope cscopelist-am ctags ctags-am dist \ + dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ + dist-xz dist-zip dist-zstd distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pkgconfigDATA + +.PRECIOUS: Makefile + + +.PHONY: buildlib +buildlib: + @echo 'ERROR: Running "make buildlib LIBRARY=libexpatw.la"' >&2 + @echo 'ERROR: is no longer supported. INSTEAD please:' >&2 + @echo 'ERROR:' >&2 + @echo 'ERROR: * Mass-patch Makefile.am, e.g.' >&2 + @echo 'ERROR: # find -name Makefile.am -exec sed \' >&2 + @echo 'ERROR: -e "s,libexpat\.la,libexpatw.la," \' >&2 + @echo 'ERROR: -e "s,libexpat_la,libexpatw_la," \' >&2 + @echo 'ERROR: -i {} +' >&2 + @echo 'ERROR:' >&2 + @echo 'ERROR: * Run automake to re-generate Makefile.in files' >&2 + @echo 'ERROR:' >&2 + @echo 'ERROR: * Use "./configure --without-xmlwf" and/or' >&2 + @echo 'ERROR: "make -C lib all install" to bypass compilation' >&2 + @echo 'ERROR: of xmlwf (e.g. with -DXML_UNICODE)' >&2 + @echo 'ERROR:' >&2 + @false + +.PHONY: run-benchmark +run-benchmark: + $(MAKE) -C tests/benchmark + ./run.sh tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/recset.xml 65535 3 + +.PHONY: download-xmlts-zip +download-xmlts-zip: + if test "$(XMLTS_ZIP)" = ""; then \ + wget --output-document=tests/xmlts.zip \ + https://www.w3.org/XML/Test/xmlts20080827.zip; \ + else \ + cp $(XMLTS_ZIP) tests/xmlts.zip; \ + fi + +tests/xmlts.zip: + $(MAKE) download-xmlts-zip + +.PHONY: extract-xmlts-zip +extract-xmlts-zip: tests/xmlts.zip + [ -f $(builddir)/tests/xmlts.zip ] || $(MAKE) download-xmlts-zip # vpath workaround + cd tests && unzip -q xmlts.zip + +tests/xmlconf: tests/xmlts.zip + $(MAKE) extract-xmlts-zip + +.PHONY: run-xmltest +run-xmltest: tests/xmlconf +@WITH_XMLWF_TRUE@ [ -d $(builddir)/tests/xmlconf ] || $(MAKE) extract-xmlts-zip # vpath workaround +@WITH_XMLWF_TRUE@ $(MAKE) -C lib +@WITH_XMLWF_TRUE@ $(MAKE) -C xmlwf +@WITH_XMLWF_TRUE@ $(srcdir)/tests/xmltest.sh "$(abs_builddir)/run.sh $(abs_builddir)/xmlwf/xmlwf@EXEEXT@" 2>&1 | tee $(builddir)/tests/xmltest.log +@WITH_XMLWF_TRUE@ $(srcdir)/fix-xmltest-log.sh $(builddir)/tests/xmltest.log +@WITH_XMLWF_TRUE@ diff -u $(srcdir)/tests/xmltest.log.expected $(builddir)/tests/xmltest.log +@WITH_XMLWF_FALSE@ @echo 'ERROR: xmlwf is needed for "make run-xmltest".' >&2 +@WITH_XMLWF_FALSE@ @echo 'ERROR: Please re-configure without --without-xmlwf.' >&2 +@WITH_XMLWF_FALSE@ @false + +.PHONY: qa +qa: + QA_COMPILER=clang QA_SANITIZER=address ./qa.sh + QA_COMPILER=clang QA_SANITIZER=memory ./qa.sh + QA_COMPILER=clang QA_SANITIZER=undefined ./qa.sh + QA_COMPILER=gcc QA_PROCESSOR=gcov ./qa.sh + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/3rdparty/expat/README.md b/3rdparty/expat/README.md new file mode 100644 index 0000000..428a11a --- /dev/null +++ b/3rdparty/expat/README.md @@ -0,0 +1,194 @@ +[![Travis CI Build Status](https://travis-ci.org/libexpat/libexpat.svg?branch=master)](https://travis-ci.org/libexpat/libexpat) +[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/libexpat/libexpat?svg=true)](https://ci.appveyor.com/project/libexpat/libexpat) +[![Packaging status](https://repology.org/badge/tiny-repos/expat.svg)](https://repology.org/metapackage/expat/versions) + + +# Expat, Release 2.2.10 + +This is Expat, a C library for parsing XML, started by +[James Clark](https://en.wikipedia.org/wiki/James_Clark_(programmer)) in 1997. +Expat is a stream-oriented XML parser. This means that you register +handlers with the parser before starting the parse. These handlers +are called when the parser discovers the associated structures in the +document being parsed. A start tag is an example of the kind of +structures for which you may register handlers. + +Expat supports the following compilers: +- GNU GCC >=4.5 +- LLVM Clang >=3.5 +- Microsoft Visual Studio >=9.0/2008 + +Windows users can use the +[`expat_win32` package](https://sourceforge.net/projects/expat/files/expat_win32/), +which includes both precompiled libraries and executables, and source code for +developers. + +Expat is [free software](https://www.gnu.org/philosophy/free-sw.en.html). +You may copy, distribute, and modify it under the terms of the License +contained in the file +[`COPYING`](https://github.com/libexpat/libexpat/blob/master/expat/COPYING) +distributed with this package. +This license is the same as the MIT/X Consortium license. + +If you are building Expat from a check-out from the +[Git repository](https://github.com/libexpat/libexpat/), +you need to run a script that generates the configure script using the +GNU autoconf and libtool tools. To do this, you need to have +autoconf 2.58 or newer. Run the script like this: + +```console +./buildconf.sh +``` + +Once this has been done, follow the same instructions as for building +from a source distribution. + +To build Expat from a source distribution, you first run the +configuration shell script in the top level distribution directory: + +```console +./configure +``` + +There are many options which you may provide to configure (which you +can discover by running configure with the `--help` option). But the +one of most interest is the one that sets the installation directory. +By default, the configure script will set things up to install +libexpat into `/usr/local/lib`, `expat.h` into `/usr/local/include`, and +`xmlwf` into `/usr/local/bin`. If, for example, you'd prefer to install +into `/home/me/mystuff/lib`, `/home/me/mystuff/include`, and +`/home/me/mystuff/bin`, you can tell `configure` about that with: + +```console +./configure --prefix=/home/me/mystuff +``` + +Another interesting option is to enable 64-bit integer support for +line and column numbers and the over-all byte index: + +```console +./configure CPPFLAGS=-DXML_LARGE_SIZE +``` + +However, such a modification would be a breaking change to the ABI +and is therefore not recommended for general use — e.g. as part of +a Linux distribution — but rather for builds with special requirements. + +After running the configure script, the `make` command will build +things and `make install` will install things into their proper +location. Have a look at the `Makefile` to learn about additional +`make` options. Note that you need to have write permission into +the directories into which things will be installed. + +If you are interested in building Expat to provide document +information in UTF-16 encoding rather than the default UTF-8, follow +these instructions (after having run `make distclean`). +Please note that we configure with `--without-xmlwf` as xmlwf does not +support this mode of compilation (yet): + +1. Mass-patch `Makefile.am` files to use `libexpatw.la` for a library name: +
+ `find -name Makefile.am -exec sed + -e 's,libexpat\.la,libexpatw.la,' + -e 's,libexpat_la,libexpatw_la,' + -i {} +` + +1. Run `automake` to re-write `Makefile.in` files:
+ `automake` + +1. For UTF-16 output as unsigned short (and version/error strings as char), + run:
+ `./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf`
+ For UTF-16 output as `wchar_t` (incl. version/error strings), run:
+ `./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T + --without-xmlwf` +
Note: The latter requires libc compiled with `-fshort-wchar`, as well. + +1. Run `make` (which excludes xmlwf). + +1. Run `make install` (again, excludes xmlwf). + +Using `DESTDIR` is supported. It works as follows: + +```console +make install DESTDIR=/path/to/image +``` + +overrides the in-makefile set `DESTDIR`, because variable-setting priority is + +1. commandline +1. in-makefile +1. environment + +Note: This only applies to the Expat library itself, building UTF-16 versions +of xmlwf and the tests is currently not supported. + +When using Expat with a project using autoconf for configuration, you +can use the probing macro in `conftools/expat.m4` to determine how to +include Expat. See the comments at the top of that file for more +information. + +A reference manual is available in the file `doc/reference.html` in this +distribution. + + +The CMake build system is still *experimental* and will replace the primary +build system based on GNU Autotools at some point when it is ready. +For an idea of the available (non-advanced) options for building with CMake: + +```console +# rm -f CMakeCache.txt ; cmake -D_EXPAT_HELP=ON -LH . | grep -B1 ':.*=' | sed 's,^--$,,' +// Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +// Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +// Path to a program. +DOCBOOK_TO_MAN:FILEPATH=/usr/bin/docbook2x-man + +// build man page for xmlwf +EXPAT_BUILD_DOCS:BOOL=ON + +// build the examples for expat library +EXPAT_BUILD_EXAMPLES:BOOL=ON + +// build fuzzers for the expat library +EXPAT_BUILD_FUZZERS:BOOL=OFF + +// build pkg-config file +EXPAT_BUILD_PKGCONFIG:BOOL=ON + +// build the tests for expat library +EXPAT_BUILD_TESTS:BOOL=ON + +// build the xmlwf tool for expat library +EXPAT_BUILD_TOOLS:BOOL=ON + +// Character type to use (char|ushort|wchar_t) [default=char] +EXPAT_CHAR_TYPE:STRING=char + +// install expat files in cmake install target +EXPAT_ENABLE_INSTALL:BOOL=ON + +// Use /MT flag (static CRT) when compiling in MSVC +EXPAT_MSVC_STATIC_CRT:BOOL=OFF + +// build fuzzers via ossfuzz for the expat library +EXPAT_OSSFUZZ_BUILD:BOOL=OFF + +// build a shared expat library +EXPAT_SHARED_LIBS:BOOL=ON + +// Treat all compiler warnings as errors +EXPAT_WARNINGS_AS_ERRORS:BOOL=OFF + +// Make use of getrandom function (ON|OFF|AUTO) [default=AUTO] +EXPAT_WITH_GETRANDOM:STRING=AUTO + +// utilize libbsd (for arc4random_buf) +EXPAT_WITH_LIBBSD:BOOL=OFF + +// Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO] +EXPAT_WITH_SYS_GETRANDOM:STRING=AUTO +``` diff --git a/3rdparty/expat/acinclude.m4 b/3rdparty/expat/acinclude.m4 new file mode 100644 index 0000000..7277ab2 --- /dev/null +++ b/3rdparty/expat/acinclude.m4 @@ -0,0 +1,12 @@ +# acinclude.m4 -- +# + +m4_include(conftools/ax-require-defined.m4) +m4_include(conftools/ax-check-compile-flag.m4) +m4_include(conftools/ax-check-link-flag.m4) +m4_include(conftools/ax-append-flag.m4) +m4_include(conftools/ax-append-compile-flags.m4) +m4_include(conftools/ax-append-link-flags.m4) +m4_include(conftools/expatcfg-compiler-supports-visibility.m4) + +### end of file diff --git a/3rdparty/expat/aclocal.m4 b/3rdparty/expat/aclocal.m4 new file mode 100644 index 0000000..b8cb1fc --- /dev/null +++ b/3rdparty/expat/aclocal.m4 @@ -0,0 +1,1203 @@ +# generated automatically by aclocal 1.16.2 -*- Autoconf -*- + +# Copyright (C) 1996-2020 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# Copyright (C) 2002-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.16' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.16.2], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.16.2])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# Copyright (C) 2011-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_AR([ACT-IF-FAIL]) +# ------------------------- +# Try to determine the archiver interface, and trigger the ar-lib wrapper +# if it is needed. If the detection of archiver interface fails, run +# ACT-IF-FAIL (default is to abort configure with a proper error message). +AC_DEFUN([AM_PROG_AR], +[AC_BEFORE([$0], [LT_INIT])dnl +AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([ar-lib])dnl +AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) +: ${AR=ar} + +AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], + [AC_LANG_PUSH([C]) + am_cv_ar_interface=ar + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], + [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + ]) + AC_LANG_POP([C])]) + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + m4_default([$1], + [AC_MSG_ERROR([could not determine $AR interface])]) + ;; +esac +AC_SUBST([AR])dnl +]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE="gmake" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking is enabled. +# This creates each '.Po' and '.Plo' makefile fragment that we'll need in +# order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check whether make has an 'include' directive that can support all +# the idioms we need for our automatic dependency tracking code. +AC_DEFUN([AM_MAKE_INCLUDE], +[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +AC_SUBST([am__quote])]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) +m4_include([acinclude.m4]) diff --git a/3rdparty/expat/cmake/expat-config.cmake.in b/3rdparty/expat/cmake/expat-config.cmake.in new file mode 100644 index 0000000..a4da61e --- /dev/null +++ b/3rdparty/expat/cmake/expat-config.cmake.in @@ -0,0 +1,75 @@ +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2019 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. +# +if(NOT _expat_config_included) + # Protect against multiple inclusion + set(_expat_config_included TRUE) + + +include("${CMAKE_CURRENT_LIST_DIR}/expat.cmake") + +@PACKAGE_INIT@ + +# +# Supported components +# +macro(expat_register_component _NAME _AVAILABE) + set(expat_${_NAME}_FOUND ${_AVAILABE}) +endmacro() + +expat_register_component(attr_info @EXPAT_ATTR_INFO@) +expat_register_component(dtd @EXPAT_DTD@) +expat_register_component(large_size @EXPAT_LARGE_SIZE@) +expat_register_component(min_size @EXPAT_MIN_SIZE@) +expat_register_component(ns @EXPAT_NS@) + +if(@EXPAT_CONTEXT_BYTES@) + expat_register_component(context_bytes ON) +else() + expat_register_component(context_bytes OFF) +endif() + +if("@EXPAT_CHAR_TYPE@" STREQUAL "char") + expat_register_component(char ON) + expat_register_component(ushort OFF) + expat_register_component(wchar_t OFF) +elseif("@EXPAT_CHAR_TYPE@" STREQUAL "ushort") + expat_register_component(char OFF) + expat_register_component(ushort ON) + expat_register_component(wchar_t OFF) +elseif("@EXPAT_CHAR_TYPE@" STREQUAL "wchar_t") + expat_register_component(char OFF) + expat_register_component(ushort OFF) + expat_register_component(wchar_t ON) +endif() + +check_required_components(expat) + + +endif(NOT _expat_config_included) diff --git a/3rdparty/expat/cmake/mingw-toolchain.cmake b/3rdparty/expat/cmake/mingw-toolchain.cmake new file mode 100644 index 0000000..31a238b --- /dev/null +++ b/3rdparty/expat/cmake/mingw-toolchain.cmake @@ -0,0 +1,36 @@ +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2019 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +set(CMAKE_SYSTEM_NAME Windows) + +set(CMAKE_C_COMPILER i686-w64-mingw32-gcc) +set(CMAKE_CXX_COMPILER i686-w64-mingw32-g++) + +set(WIN32 ON) +set(MINGW ON) diff --git a/3rdparty/expat/configure b/3rdparty/expat/configure new file mode 100755 index 0000000..947bc0e --- /dev/null +++ b/3rdparty/expat/configure @@ -0,0 +1,21160 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for expat 2.2.10. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: expat-bugs@libexpat.org about your system, including +$0: any error possibly output before this message. Then +$0: install a modern shell, or manually run the script +$0: under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='expat' +PACKAGE_TARNAME='expat' +PACKAGE_VERSION='2.2.10' +PACKAGE_STRING='expat 2.2.10' +PACKAGE_BUGREPORT='expat-bugs@libexpat.org' +PACKAGE_URL='' + +ac_unique_file="Makefile.in" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_list= +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +_EXPAT_OUTPUT_NAME +AM_LDFLAGS +AM_CXXFLAGS +AM_CFLAGS +AM_CPPFLAGS +WITH_DOCBOOK_FALSE +WITH_DOCBOOK_TRUE +DOCBOOK_TO_MAN +FILEMAP +UNICODE_FALSE +UNICODE_TRUE +MINGW_FALSE +MINGW_TRUE +WITH_TESTS_FALSE +WITH_TESTS_TRUE +WITH_EXAMPLES_FALSE +WITH_EXAMPLES_TRUE +WITH_XMLWF_FALSE +WITH_XMLWF_TRUE +CXXCPP +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +LIBAGE +LIBREVISION +LIBCURRENT +CPP +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +LIBTOOL +OBJDUMP +DLLTOOL +AS +LN_S +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +ac_ct_AR +AR +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock +with_xmlwf +with_examples +with_tests +with_libbsd +with_getrandom +with_sys_getrandom +enable_xml_attr_info +enable_xml_context +with_docbook +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +LT_SYS_LIBRARY_PATH +CPP +CXX +CXXFLAGS +CCC +CXXCPP +DOCBOOK_TO_MAN' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures expat 2.2.10 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/expat] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of expat 2.2.10:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --enable-xml-attr-info Enable retrieving the byte offsets for attribute + names and values [default=no] + --enable-xml-context [COUNT] + Retain context around the current parse point; + default is enabled and a size of 1024 bytes + --disable-xml-context Do not retain context around the current parse point + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). + --without-xmlwf do not build xmlwf + --without-examples do not build examples [default=included] + --without-tests do not build tests [default=included] + --with-libbsd utilize libbsd (for arc4random_buf) + --with-getrandom enforce the use of getrandom function in the system + [default=check] + --without-getrandom skip auto detect of getrandom [default=check] + --with-sys-getrandom enforce the use of syscall SYS_getrandom function in + the system [default=check] + --without-sys-getrandom skip auto detect of syscall SYS_getrandom + [default=check] + --with-docbook enforce XML to man page compilation [default=check] + --without-docbook skip XML to man page compilation [default=check] + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + DOCBOOK_TO_MAN + docbook2x-man command + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +expat configure 2.2.10 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## -------------------------------------- ## +## Report this to expat-bugs@libexpat.org ## +## -------------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel +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 expat $as_me 2.2.10, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_list " stdlib.h" +as_fn_append ac_header_list " unistd.h" +as_fn_append ac_header_list " sys/param.h" +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +ac_aux_dir= +for ac_dir in conftools "$srcdir"/conftools; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in conftools \"$srcdir\"/conftools" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +am__api_version='1.16' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='expat' + VERSION='2.2.10' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + + + +LIBCURRENT=7 # sync +LIBREVISION=12 # with +LIBAGE=6 # CMakeLists.txt! + + +if ${AM_CPPFLAGS+:} false; then : + + case " $AM_CPPFLAGS " in #( + *" -DHAVE_EXPAT_CONFIG_H "*) : + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CPPFLAGS already contains -DHAVE_EXPAT_CONFIG_H"; } >&5 + (: AM_CPPFLAGS already contains -DHAVE_EXPAT_CONFIG_H) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append AM_CPPFLAGS " -DHAVE_EXPAT_CONFIG_H" + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CPPFLAGS=\"\$AM_CPPFLAGS\""; } >&5 + (: AM_CPPFLAGS="$AM_CPPFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else + + AM_CPPFLAGS=-DHAVE_EXPAT_CONFIG_H + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CPPFLAGS=\"\$AM_CPPFLAGS\""; } >&5 + (: AM_CPPFLAGS="$AM_CPPFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + +ac_config_headers="$ac_config_headers expat_config.h" + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in #( + '0:this is the am__doit target') : + case $s in #( + BSD) : + am__include='.include' am__quote='"' ;; #( + *) : + am__include='include' am__quote='' ;; +esac ;; #( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +$as_echo "${_am_result}" >&6; } + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar lib "link -lib" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar lib "link -lib" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 +$as_echo_n "checking the archiver ($AR) interface... " >&6; } +if ${am_cv_ar_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + am_cv_ar_interface=ar + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int some_variable = 0; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 +$as_echo "$am_cv_ar_interface" >&6; } + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + as_fn_error $? "could not determine $AR interface" "$LINENO" 5 + ;; +esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + + + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.6' +macro_revision='2.4.6' + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, 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*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# '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 +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + 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" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +$as_echo "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*|powerpc64le-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + + +# Set options +enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +set dummy ${ac_tool_prefix}as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AS+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AS="${ac_tool_prefix}as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 +$as_echo "$AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AS"; then + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. +set dummy as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AS+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AS"; then + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AS="as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AS=$ac_cv_prog_ac_ct_AS +if test -n "$ac_ct_AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 +$as_echo "$ac_ct_AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AS" = x; then + AS="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AS=$ac_ct_AS + fi +else + AS="$ac_cv_prog_AS" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + + ;; +esac + +test -z "$AS" && AS=as + + + + + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + enable_dlopen=no + + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + pic_mode=default +fi + + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$versuffix$shared_ext $libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .bundle || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + # Handle Gentoo/FreeBSD as it was Linux + case $host_vendor in + gentoo) + version_type=linux ;; + *) + version_type=freebsd-$objformat ;; + esac + + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + linux) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + need_lib_prefix=no + need_version=no + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen=shl_load +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen=dlopen +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report what library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 +$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } +if ${ac_cv_prog_cc_c99+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +#include + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +#define debug(...) fprintf (stderr, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + your preprocessor is broken; +#endif +#if BIG_OK +#else + your preprocessor is broken; +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\0'; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static void +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str; + int number; + float fnumber; + + while (*format) + { + switch (*format++) + { + case 's': // string + str = va_arg (args_copy, const char *); + break; + case 'd': // int + number = va_arg (args_copy, int); + break; + case 'f': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); +} + +int +main () +{ + + // Check bool. + _Bool success = false; + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + test_varargs ("s, d' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' + || dynamic_array[ni.number - 1] != 543); + + ; + return 0; +} +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c99" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c99" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c99" != xno; then : + +fi + + + +if test "$GCC" = yes; then : + + + + +for flag in -Wall -Wextra; do + as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +$as_echo_n "checking whether C compiler accepts $flag... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + +if ${AM_CFLAGS+:} false; then : + + case " $AM_CFLAGS " in #( + *" $flag "*) : + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS already contains \$flag"; } >&5 + (: AM_CFLAGS already contains $flag) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append AM_CFLAGS " $flag" + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS=\"\$AM_CFLAGS\""; } >&5 + (: AM_CFLAGS="$AM_CFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else + + AM_CFLAGS=$flag + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS=\"\$AM_CFLAGS\""; } >&5 + (: AM_CFLAGS="$AM_CFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + +else + : +fi + +done + + + + + +for flag in -fexceptions; do + as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +$as_echo_n "checking whether C compiler accepts $flag... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + +if ${AM_CFLAGS+:} false; then : + + case " $AM_CFLAGS " in #( + *" $flag "*) : + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS already contains \$flag"; } >&5 + (: AM_CFLAGS already contains $flag) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append AM_CFLAGS " $flag" + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS=\"\$AM_CFLAGS\""; } >&5 + (: AM_CFLAGS="$AM_CFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else + + AM_CFLAGS=$flag + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS=\"\$AM_CFLAGS\""; } >&5 + (: AM_CFLAGS="$AM_CFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + +else + : +fi + +done + + + + + +for flag in -fno-strict-aliasing -Wmissing-prototypes -Wstrict-prototypes; do + as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +$as_echo_n "checking whether C compiler accepts $flag... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + +if ${AM_CFLAGS+:} false; then : + + case " $AM_CFLAGS " in #( + *" $flag "*) : + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS already contains \$flag"; } >&5 + (: AM_CFLAGS already contains $flag) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append AM_CFLAGS " $flag" + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS=\"\$AM_CFLAGS\""; } >&5 + (: AM_CFLAGS="$AM_CFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else + + AM_CFLAGS=$flag + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS=\"\$AM_CFLAGS\""; } >&5 + (: AM_CFLAGS="$AM_CFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + +else + : +fi + +done + + + + + +for flag in -pedantic -Wduplicated-cond -Wduplicated-branches -Wlogical-op; do + as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +$as_echo_n "checking whether C compiler accepts $flag... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + +if ${AM_CFLAGS+:} false; then : + + case " $AM_CFLAGS " in #( + *" $flag "*) : + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS already contains \$flag"; } >&5 + (: AM_CFLAGS already contains $flag) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append AM_CFLAGS " $flag" + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS=\"\$AM_CFLAGS\""; } >&5 + (: AM_CFLAGS="$AM_CFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else + + AM_CFLAGS=$flag + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS=\"\$AM_CFLAGS\""; } >&5 + (: AM_CFLAGS="$AM_CFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + +else + : +fi + +done + + + + + +for flag in -Wrestrict -Wnull-dereference -Wjump-misses-init -Wdouble-promotion; do + as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +$as_echo_n "checking whether C compiler accepts $flag... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + +if ${AM_CFLAGS+:} false; then : + + case " $AM_CFLAGS " in #( + *" $flag "*) : + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS already contains \$flag"; } >&5 + (: AM_CFLAGS already contains $flag) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append AM_CFLAGS " $flag" + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS=\"\$AM_CFLAGS\""; } >&5 + (: AM_CFLAGS="$AM_CFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else + + AM_CFLAGS=$flag + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS=\"\$AM_CFLAGS\""; } >&5 + (: AM_CFLAGS="$AM_CFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + +else + : +fi + +done + + + + + +for flag in -Wshadow -Wformat=2 -Wmisleading-indentation; do + as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +$as_echo_n "checking whether C compiler accepts $flag... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + +if ${AM_CFLAGS+:} false; then : + + case " $AM_CFLAGS " in #( + *" $flag "*) : + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS already contains \$flag"; } >&5 + (: AM_CFLAGS already contains $flag) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append AM_CFLAGS " $flag" + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS=\"\$AM_CFLAGS\""; } >&5 + (: AM_CFLAGS="$AM_CFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else + + AM_CFLAGS=$flag + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS=\"\$AM_CFLAGS\""; } >&5 + (: AM_CFLAGS="$AM_CFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + +else + : +fi + +done + +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CXX_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + +func_stripname_cnf () +{ + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; + esac +} # func_stripname_cnf + + if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +reload_flag_CXX=$reload_flag +reload_cmds_CXX=$reload_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + compiler_CXX=$CC + func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct_CXX=no + hardcode_direct_absolute_CXX=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec_CXX='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + no_undefined_flag_CXX='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' $wl-bernotok' + allow_undefined_flag_CXX=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + fi + archive_cmds_need_lc_CXX=yes + archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_CXX=' ' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=yes + file_list_spec_CXX='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' + enable_shared_with_static_runtimes_CXX=yes + # Don't use ranlib + old_postinstall_cmds_CXX='chmod 644 $oldlib' + postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + export_dynamic_flag_spec_CXX='$wl--export-all-symbols' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + + + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec_CXX='' + fi + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds_CXX="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" + if test yes != "$lt_cv_apple_cc_single_mod"; then + archive_cmds_CXX="\$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" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi + + else + ld_shlibs_CXX=no + fi + + ;; + + os2*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_minus_L_CXX=yes + allow_undefined_flag_CXX=unsupported + shrext_cmds=.dll + archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes_CXX=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; + + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + + haiku*) + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs_CXX=yes + ;; + + hpux9*) + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='$wl-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + export_dynamic_flag_spec_CXX='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5].* | *pgcpp\ [1-5].*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='$wl-E' + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + no_undefined_flag_CXX=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='$wl-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='$wl-z,text' + allow_undefined_flag_CXX='$wl-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ + '"$old_archive_cmds_CXX" + reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ + '"$reload_cmds_CXX" + ;; + *) + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } + test no = "$ld_shlibs_CXX" && can_build_shared=no + + GCC_CXX=$GXX + LD_CXX=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF + + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX=$prev$p + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX=$prev$p + else + postdeps_CXX="${postdeps_CXX} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX=$p + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX=$p + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + + + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + lt_prog_compiler_pic_CXX='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static_CXX='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | 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). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } +lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then + : +else + lt_prog_compiler_static_CXX= +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + ;; + esac + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test no = "$ld_shlibs_CXX" && can_build_shared=no + +with_gnu_ld_CXX=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc_CXX=no + else + lt_cv_archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$versuffix$shared_ext $libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .bundle || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + # Handle Gentoo/FreeBSD as it was Linux + case $host_vendor in + gentoo) + version_type=linux ;; + *) + version_type=freebsd-$objformat ;; + esac + + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + linux) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + need_lib_prefix=no + need_version=no + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test yes = "$hardcode_automatic_CXX"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct_CXX" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && + test no != "$hardcode_minus_L_CXX"; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test relink = "$hardcode_action_CXX" || + test yes = "$inherit_rpath_CXX"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + +if test "$GCC" = yes; then : + + + + +for flag in -Wall -Wextra; do + as_CACHEVAR=`$as_echo "ax_cv_check_cxxflags__$flag" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts $flag" >&5 +$as_echo_n "checking whether C++ compiler accepts $flag... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CXXFLAGS + CXXFLAGS="$CXXFLAGS -Werror $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CXXFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + +if ${AM_CXXFLAGS+:} false; then : + + case " $AM_CXXFLAGS " in #( + *" $flag "*) : + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CXXFLAGS already contains \$flag"; } >&5 + (: AM_CXXFLAGS already contains $flag) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append AM_CXXFLAGS " $flag" + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CXXFLAGS=\"\$AM_CXXFLAGS\""; } >&5 + (: AM_CXXFLAGS="$AM_CXXFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else + + AM_CXXFLAGS=$flag + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CXXFLAGS=\"\$AM_CXXFLAGS\""; } >&5 + (: AM_CXXFLAGS="$AM_CXXFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + +else + : +fi + +done + + + + + +for flag in -fexceptions; do + as_CACHEVAR=`$as_echo "ax_cv_check_cxxflags__$flag" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts $flag" >&5 +$as_echo_n "checking whether C++ compiler accepts $flag... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CXXFLAGS + CXXFLAGS="$CXXFLAGS -Werror $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CXXFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + +if ${AM_CXXFLAGS+:} false; then : + + case " $AM_CXXFLAGS " in #( + *" $flag "*) : + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CXXFLAGS already contains \$flag"; } >&5 + (: AM_CXXFLAGS already contains $flag) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append AM_CXXFLAGS " $flag" + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CXXFLAGS=\"\$AM_CXXFLAGS\""; } >&5 + (: AM_CXXFLAGS="$AM_CXXFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else + + AM_CXXFLAGS=$flag + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CXXFLAGS=\"\$AM_CXXFLAGS\""; } >&5 + (: AM_CXXFLAGS="$AM_CXXFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + +else + : +fi + +done + + + + + +for flag in -fno-strict-aliasing; do + as_CACHEVAR=`$as_echo "ax_cv_check_cxxflags__$flag" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts $flag" >&5 +$as_echo_n "checking whether C++ compiler accepts $flag... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CXXFLAGS + CXXFLAGS="$CXXFLAGS -Werror $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void) { return 0; } +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CXXFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + +if ${AM_CXXFLAGS+:} false; then : + + case " $AM_CXXFLAGS " in #( + *" $flag "*) : + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CXXFLAGS already contains \$flag"; } >&5 + (: AM_CXXFLAGS already contains $flag) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append AM_CXXFLAGS " $flag" + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CXXFLAGS=\"\$AM_CXXFLAGS\""; } >&5 + (: AM_CXXFLAGS="$AM_CXXFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else + + AM_CXXFLAGS=$flag + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CXXFLAGS=\"\$AM_CXXFLAGS\""; } >&5 + (: AM_CXXFLAGS="$AM_CXXFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + +else + : +fi + +done + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +if test "$GCC" = yes; then : + + + + +for flag in -fno-strict-aliasing; do + as_CACHEVAR=`$as_echo "ax_cv_check_ldflags__$flag" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5 +$as_echo_n "checking whether the linker accepts $flag... " >&6; } +if eval \${$as_CACHEVAR+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$as_CACHEVAR=yes" +else + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : + +if ${AM_LDFLAGS+:} false; then : + + case " $AM_LDFLAGS " in #( + *" $flag "*) : + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS already contains \$flag"; } >&5 + (: AM_LDFLAGS already contains $flag) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append AM_LDFLAGS " $flag" + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 + (: AM_LDFLAGS="$AM_LDFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else + + AM_LDFLAGS=$flag + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_LDFLAGS=\"\$AM_LDFLAGS\""; } >&5 + (: AM_LDFLAGS="$AM_LDFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + +else + : +fi + +done + +fi + +case "$LD" in #( + *clang*) : + case "${host_os}" in #( + *linux*) : + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' ;; #( + *) : + ;; +esac ;; #( + *) : + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports visibility" >&5 +$as_echo_n "checking whether compiler supports visibility... " >&6; } +if ${expatcfg_cv_compiler_supports_visibility+:} false; then : + $as_echo_n "(cached) " >&6 +else + expatcfg_cv_compiler_supports_visibility=no + OLDFLAGS=$CFLAGS + as_fn_append CFLAGS " -fvisibility=hidden -Wall -Werror -Wno-unknown-warning-option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + void __attribute__((visibility("default"))) foo(void); + void foo(void) {} + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + expatcfg_cv_compiler_supports_visibility=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$OLDFLAGS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $expatcfg_cv_compiler_supports_visibility" >&5 +$as_echo "$expatcfg_cv_compiler_supports_visibility" >&6; } + if test "$expatcfg_cv_compiler_supports_visibility" = yes; then : + + +if ${AM_CFLAGS+:} false; then : + + case " $AM_CFLAGS " in #( + *" -fvisibility=hidden "*) : + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS already contains -fvisibility=hidden"; } >&5 + (: AM_CFLAGS already contains -fvisibility=hidden) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append AM_CFLAGS " -fvisibility=hidden" + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS=\"\$AM_CFLAGS\""; } >&5 + (: AM_CFLAGS="$AM_CFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else + + AM_CFLAGS=-fvisibility=hidden + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CFLAGS=\"\$AM_CFLAGS\""; } >&5 + (: AM_CFLAGS="$AM_CFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + + +if ${AM_CPPFLAGS+:} false; then : + + case " $AM_CPPFLAGS " in #( + *" -DXML_ENABLE_VISIBILITY=1 "*) : + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CPPFLAGS already contains -DXML_ENABLE_VISIBILITY=1"; } >&5 + (: AM_CPPFLAGS already contains -DXML_ENABLE_VISIBILITY=1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append AM_CPPFLAGS " -DXML_ENABLE_VISIBILITY=1" + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CPPFLAGS=\"\$AM_CPPFLAGS\""; } >&5 + (: AM_CPPFLAGS="$AM_CPPFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else + + AM_CPPFLAGS=-DXML_ENABLE_VISIBILITY=1 + { { $as_echo "$as_me:${as_lineno-$LINENO}: : AM_CPPFLAGS=\"\$AM_CPPFLAGS\""; } >&5 + (: AM_CPPFLAGS="$AM_CPPFLAGS") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +$as_echo_n "checking whether byte ordering is bigendian... " >&6; } +if ${ac_cv_c_bigendian+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; + +int +main () +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_bigendian=no +else + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +$as_echo "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h + + BYTEORDER=4321;; #( + no) + BYTEORDER=1234 ;; #( + universal) + +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +cat >>confdefs.h <<_ACEOF +#define BYTEORDER $BYTEORDER +_ACEOF + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if ${ac_cv_c_const+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes +else + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + + + +# Check whether --with-xmlwf was given. +if test "${with_xmlwf+set}" = set; then : + withval=$with_xmlwf; +else + with_xmlwf=yes +fi + + if test x${with_xmlwf} = xyes; then + WITH_XMLWF_TRUE= + WITH_XMLWF_FALSE='#' +else + WITH_XMLWF_TRUE='#' + WITH_XMLWF_FALSE= +fi + + + +# Check whether --with-examples was given. +if test "${with_examples+set}" = set; then : + withval=$with_examples; +else + with_examples=yes +fi + + if test x${with_examples} = xyes; then + WITH_EXAMPLES_TRUE= + WITH_EXAMPLES_FALSE='#' +else + WITH_EXAMPLES_TRUE='#' + WITH_EXAMPLES_FALSE= +fi + + + +# Check whether --with-tests was given. +if test "${with_tests+set}" = set; then : + withval=$with_tests; +else + with_tests=yes +fi + + if test x${with_tests} = xyes; then + WITH_TESTS_TRUE= + WITH_TESTS_FALSE='#' +else + WITH_TESTS_TRUE='#' + WITH_TESTS_FALSE= +fi + + + +EXPATCFG_ON_MINGW=no +case "${host_os}" in #( + mingw*) : + EXPATCFG_ON_MINGW=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: detected OS: MinGW" >&5 +$as_echo "$as_me: detected OS: MinGW" >&6;} ;; #( + *) : + ;; +esac + if test x${EXPATCFG_ON_MINGW} = xyes; then + MINGW_TRUE= + MINGW_FALSE='#' +else + MINGW_TRUE='#' + MINGW_FALSE= +fi + + + if echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_UNICODE >/dev/null; then + UNICODE_TRUE= + UNICODE_FALSE='#' +else + UNICODE_TRUE='#' + UNICODE_FALSE= +fi + + + + +# Check whether --with-libbsd was given. +if test "${with_libbsd+set}" = set; then : + withval=$with_libbsd; +else + with_libbsd=no +fi + +if test "x${with_libbsd}" != xno; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for arc4random_buf in -lbsd" >&5 +$as_echo_n "checking for arc4random_buf in -lbsd... " >&6; } +if ${ac_cv_lib_bsd_arc4random_buf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char arc4random_buf (); +int +main () +{ +return arc4random_buf (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_bsd_arc4random_buf=yes +else + ac_cv_lib_bsd_arc4random_buf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_arc4random_buf" >&5 +$as_echo "$ac_cv_lib_bsd_arc4random_buf" >&6; } +if test "x$ac_cv_lib_bsd_arc4random_buf" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBBSD 1 +_ACEOF + + LIBS="-lbsd $LIBS" + +else + if test "x${with_libbsd}" = xyes; then : + as_fn_error $? "Enforced use of libbsd cannot be satisfied." "$LINENO" 5 +fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for arc4random_buf (BSD or libbsd)" >&5 +$as_echo_n "checking for arc4random_buf (BSD or libbsd)... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include /* for arc4random_buf on BSD, for NULL */ + #if defined(HAVE_LIBBSD) + # include + #endif + int main() { + arc4random_buf(NULL, 0U); + return 0; + } + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +$as_echo "#define HAVE_ARC4RANDOM_BUF 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for arc4random (BSD, macOS or libbsd)" >&5 +$as_echo_n "checking for arc4random (BSD, macOS or libbsd)... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined(HAVE_LIBBSD) + # include + #else + # include + #endif + int main() { + arc4random(); + return 0; + } + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +$as_echo "#define HAVE_ARC4RANDOM 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + +# Check whether --with-getrandom was given. +if test "${with_getrandom+set}" = set; then : + withval=$with_getrandom; +else + with_getrandom=check +fi + + +if test "x$with_getrandom" != xno; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getrandom (Linux 3.17+, glibc 2.25+)" >&5 +$as_echo_n "checking for getrandom (Linux 3.17+, glibc 2.25+)... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include /* for NULL */ + #include + int main() { + return getrandom(NULL, 0U, 0U); + } + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +$as_echo "#define HAVE_GETRANDOM 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "x$with_getrandom" = xyes; then : + as_fn_error $? "enforced the use of getrandom --with-getrandom, but not detected" "$LINENO" 5 +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + +# Check whether --with-sys_getrandom was given. +if test "${with_sys_getrandom+set}" = set; then : + withval=$with_sys_getrandom; +else + with_sys_getrandom=check +fi + + +if test "x$with_sys_getrandom" != xno; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for syscall SYS_getrandom (Linux 3.17+)" >&5 +$as_echo_n "checking for syscall SYS_getrandom (Linux 3.17+)... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include /* for NULL */ + #include /* for syscall */ + #include /* for SYS_getrandom */ + int main() { + syscall(SYS_getrandom, NULL, 0, 0); + return 0; + } + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +$as_echo "#define HAVE_SYSCALL_GETRANDOM 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "x$with_sys_getrandom" = xyes; then : + as_fn_error $? "enforced the use of syscall SYS_getrandom --with-sys-getrandom, but not detected" "$LINENO" 5 +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + +for ac_header in fcntl.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define off_t long int +_ACEOF + +fi + + + + + for ac_header in $ac_header_list +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + +for ac_func in getpagesize +do : + ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" +if test "x$ac_cv_func_getpagesize" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETPAGESIZE 1 +_ACEOF + +fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 +$as_echo_n "checking for working mmap... " >&6; } +if ${ac_cv_func_mmap_fixed_mapped+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_mmap_fixed_mapped=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +/* malloc might have been renamed as rpl_malloc. */ +#undef malloc + +/* Thanks to Mike Haertel and Jim Avera for this test. + Here is a matrix of mmap possibilities: + mmap private not fixed + mmap private fixed at somewhere currently unmapped + mmap private fixed at somewhere already mapped + mmap shared not fixed + mmap shared fixed at somewhere currently unmapped + mmap shared fixed at somewhere already mapped + For private mappings, we should verify that changes cannot be read() + back from the file, nor mmap's back from the file at a different + address. (There have been systems where private was not correctly + implemented like the infamous i386 svr4.0, and systems where the + VM page cache was not coherent with the file system buffer cache + like early versions of FreeBSD and possibly contemporary NetBSD.) + For shared mappings, we should conversely verify that changes get + propagated back to all the places they're supposed to be. + + Grep wants private fixed already mapped. + The main things grep needs to know about mmap are: + * does it exist and is it safe to write into the mmap'd area + * how to use it (BSD variants) */ + +#include +#include + +#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#ifndef HAVE_GETPAGESIZE +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# ifdef HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +int +main () +{ + char *data, *data2, *data3; + const char *cdata2; + int i, pagesize; + int fd, fd2; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + return 2; + if (write (fd, data, pagesize) != pagesize) + return 3; + close (fd); + + /* Next, check that the tail of a page is zero-filled. File must have + non-zero length, otherwise we risk SIGBUS for entire page. */ + fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); + if (fd2 < 0) + return 4; + cdata2 = ""; + if (write (fd2, cdata2, 1) != 1) + return 5; + data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); + if (data2 == MAP_FAILED) + return 6; + for (i = 0; i < pagesize; ++i) + if (*(data2 + i)) + return 7; + close (fd2); + if (munmap (data2, pagesize)) + return 8; + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + return 9; + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + return 10; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + return 11; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + return 12; + if (read (fd, data3, pagesize) != pagesize) + return 13; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + return 14; + close (fd); + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_mmap_fixed_mapped=yes +else + ac_cv_func_mmap_fixed_mapped=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 +$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } +if test $ac_cv_func_mmap_fixed_mapped = yes; then + +$as_echo "#define HAVE_MMAP 1" >>confdefs.h + +fi +rm -f conftest.mmap conftest.txt + + +if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then : + FILEMAP=unixfilemap +else + FILEMAP=readfilemap +fi + + + + +$as_echo "#define XML_NS 1" >>confdefs.h + + +$as_echo "#define XML_DTD 1" >>confdefs.h + + +$as_echo "#define XML_DEV_URANDOM 1" >>confdefs.h + + +# Check whether --enable-xml-attr-info was given. +if test "${enable_xml_attr_info+set}" = set; then : + enableval=$enable_xml_attr_info; +else + enable_xml_attr_info=no +fi + +if test "x${enable_xml_attr_info}" = "xyes"; then : + +$as_echo "#define XML_ATTR_INFO 1" >>confdefs.h + +fi + +# Check whether --enable-xml-context was given. +if test "${enable_xml_context+set}" = set; then : + enableval=$enable_xml_context; enable_xml_context=${enableval} +fi + +if test "x${enable_xml_context}" != "xno"; then : + if test "x${enable_xml_context}" = "xyes" \ + -o "x${enable_xml_context}" = "x"; then : + enable_xml_context=1024 +fi + +cat >>confdefs.h <<_ACEOF +#define XML_CONTEXT_BYTES ${enable_xml_context} +_ACEOF + +fi + + +# Check whether --with-docbook was given. +if test "${with_docbook+set}" = set; then : + withval=$with_docbook; +else + with_docbook=check +fi + + + +if test "x$with_docbook" != xno; then : + for ac_prog in docbook2x-man db2x_docbook2man docbook2man docbook-to-man +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DOCBOOK_TO_MAN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DOCBOOK_TO_MAN"; then + ac_cv_prog_DOCBOOK_TO_MAN="$DOCBOOK_TO_MAN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DOCBOOK_TO_MAN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DOCBOOK_TO_MAN=$ac_cv_prog_DOCBOOK_TO_MAN +if test -n "$DOCBOOK_TO_MAN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOCBOOK_TO_MAN" >&5 +$as_echo "$DOCBOOK_TO_MAN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DOCBOOK_TO_MAN" && break +done + +fi +if test "x${DOCBOOK_TO_MAN}" = x -a "x$with_docbook" = xyes; then : + as_fn_error $? "Required program 'docbook2x-man' not found." "$LINENO" 5 +fi +if test "x${DOCBOOK_TO_MAN}" != x -a "x$with_docbook" != xno; then : + if ${DOCBOOK_TO_MAN} --help | grep -i -q -F sgmlbase; then : + as_fn_error $? "Your local ${DOCBOOK_TO_MAN} was found to work with SGML rather + than XML. Please install docbook2X and use variable DOCBOOK_TO_MAN to point + configure to command docbook2x-man of docbook2X. + Or use DOCBOOK_TO_MAN=\"xmlto man --skip-validation\" if you have xmlto around. + You can also configure using --without-docbook if you can do without a man + page for xmlwf." "$LINENO" 5 +fi +fi + + if test "x${DOCBOOK_TO_MAN}" != x; then + WITH_DOCBOOK_TRUE= + WITH_DOCBOOK_FALSE='#' +else + WITH_DOCBOOK_TRUE='#' + WITH_DOCBOOK_FALSE= +fi + + + + + + + +_EXPAT_OUTPUT_NAME="$PACKAGE_NAME" + + +ac_config_files="$ac_config_files Makefile expat.pc doc/Makefile examples/Makefile lib/Makefile tests/Makefile tests/benchmark/Makefile xmlwf/Makefile" + +ac_config_files="$ac_config_files run.sh" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +if test -z "${WITH_XMLWF_TRUE}" && test -z "${WITH_XMLWF_FALSE}"; then + as_fn_error $? "conditional \"WITH_XMLWF\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WITH_EXAMPLES_TRUE}" && test -z "${WITH_EXAMPLES_FALSE}"; then + as_fn_error $? "conditional \"WITH_EXAMPLES\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WITH_TESTS_TRUE}" && test -z "${WITH_TESTS_FALSE}"; then + as_fn_error $? "conditional \"WITH_TESTS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MINGW_TRUE}" && test -z "${MINGW_FALSE}"; then + as_fn_error $? "conditional \"MINGW\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${UNICODE_TRUE}" && test -z "${UNICODE_FALSE}"; then + as_fn_error $? "conditional \"UNICODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WITH_DOCBOOK_TRUE}" && test -z "${WITH_DOCBOOK_FALSE}"; then + as_fn_error $? "conditional \"WITH_DOCBOOK\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by expat $as_me 2.2.10, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +expat config.status 2.2.10 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in AS \ +DLLTOOL \ +OBJDUMP \ +SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +reload_flag_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_separator_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path \ +reload_cmds_CXX \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX \ +postlink_cmds_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "expat_config.h") CONFIG_HEADERS="$CONFIG_HEADERS expat_config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "expat.pc") CONFIG_FILES="$CONFIG_FILES expat.pc" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; + "tests/benchmark/Makefile") CONFIG_FILES="$CONFIG_FILES tests/benchmark/Makefile" ;; + "xmlwf/Makefile") CONFIG_FILES="$CONFIG_FILES xmlwf/Makefile" ;; + "run.sh") CONFIG_FILES="$CONFIG_FILES run.sh" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# 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. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 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 +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# The names of the tagged configurations supported by this script. +available_tags='CXX ' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Assembler program. +AS=$lt_AS + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Object dumper program. +OBJDUMP=$lt_OBJDUMP + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + "run.sh":F) chmod +x run.sh ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: + +Automake flags (can be overridden by user flags): + AM_CPPFLAGS: ${AM_CPPFLAGS} + AM_CFLAGS: ${AM_CFLAGS} + AM_CXXFLAGS: ${AM_CXXFLAGS} + AM_LDFLAGS: ${AM_LDFLAGS} + +User flags (override Automake flags on conflict): + CPPFLAGS: ${CPPFLAGS} + CFLAGS: ${CFLAGS} + CXXFLAGS: ${CXXFLAGS} + LDFLAGS: ${LDFLAGS}" >&5 +$as_echo "$as_me: + +Automake flags (can be overridden by user flags): + AM_CPPFLAGS: ${AM_CPPFLAGS} + AM_CFLAGS: ${AM_CFLAGS} + AM_CXXFLAGS: ${AM_CXXFLAGS} + AM_LDFLAGS: ${AM_LDFLAGS} + +User flags (override Automake flags on conflict): + CPPFLAGS: ${CPPFLAGS} + CFLAGS: ${CFLAGS} + CXXFLAGS: ${CXXFLAGS} + LDFLAGS: ${LDFLAGS}" >&6;} diff --git a/3rdparty/expat/configure.ac b/3rdparty/expat/configure.ac new file mode 100644 index 0000000..82ec1fd --- /dev/null +++ b/3rdparty/expat/configure.ac @@ -0,0 +1,345 @@ +dnl configuration script for expat +dnl Process this file with autoconf to produce a configure script. +dnl +dnl Copyright 2000 Clark Cooper +dnl +dnl This file is part of EXPAT. +dnl +dnl EXPAT is free software; you can redistribute it and/or modify it +dnl under the terms of the License (based on the MIT/X license) contained +dnl in the file COPYING that comes with this distribution. +dnl + +dnl Ensure that Expat is configured with autoconf 2.69 or newer. +AC_PREREQ(2.69) + +dnl Get the version number of Expat, using m4's esyscmd() command to run +dnl the command at m4-generation time. This allows us to create an m4 +dnl symbol holding the correct version number. AC_INIT() requires the +dnl version number at m4-time, rather than when ./configure is run, so +dnl all this must happen as part of m4, not as part of the shell code +dnl contained in ./configure. +dnl +dnl NOTE: esyscmd() is a GNU M4 extension. Thus, we wrap it in an appropriate +dnl test. I believe this test will work, but I don't have a place with non- +dnl GNU M4 to test it right now. +m4_define([expat_version], + m4_ifdef([__gnu__], + [esyscmd(conftools/get-version.sh lib/expat.h)], + [2.2.x])) +AC_INIT(expat, expat_version, expat-bugs@libexpat.org) +m4_undefine([expat_version]) + +AC_CONFIG_SRCDIR([Makefile.in]) +AC_CONFIG_AUX_DIR([conftools]) +AC_CONFIG_MACRO_DIR([m4]) +AC_CANONICAL_HOST +AM_INIT_AUTOMAKE + + +dnl +dnl Increment LIBREVISION if source code has changed at all +dnl +dnl If the API has changed, increment LIBCURRENT and set LIBREVISION to 0 +dnl +dnl If the API changes compatibly (i.e. simply adding a new function +dnl without changing or removing earlier interfaces), then increment LIBAGE. +dnl +dnl If the API changes incompatibly set LIBAGE back to 0 +dnl + +LIBCURRENT=7 # sync +LIBREVISION=12 # with +LIBAGE=6 # CMakeLists.txt! + +AX_APPEND_FLAG([-DHAVE_EXPAT_CONFIG_H], [AM_CPPFLAGS]) +AC_CONFIG_HEADER([expat_config.h]) + +AM_PROG_AR +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_MAKE_SET + +LT_PREREQ([2.4]) +LT_INIT([win32-dll]) + +AC_SUBST(LIBCURRENT) +AC_SUBST(LIBREVISION) +AC_SUBST(LIBAGE) + +AC_LANG([C]) +AC_PROG_CC_C99 + +AS_IF([test "$GCC" = yes], + [AX_APPEND_COMPILE_FLAGS([-Wall -Wextra], [AM_CFLAGS]) + dnl Be careful about adding the -fexceptions option; some versions of + dnl GCC don't support it and it causes extra warnings that are only + dnl distracting; avoid. + AX_APPEND_COMPILE_FLAGS([-fexceptions], [AM_CFLAGS]) + AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing -Wmissing-prototypes -Wstrict-prototypes], [AM_CFLAGS]) + AX_APPEND_COMPILE_FLAGS([-pedantic -Wduplicated-cond -Wduplicated-branches -Wlogical-op], [AM_CFLAGS]) + AX_APPEND_COMPILE_FLAGS([-Wrestrict -Wnull-dereference -Wjump-misses-init -Wdouble-promotion], [AM_CFLAGS]) + AX_APPEND_COMPILE_FLAGS([-Wshadow -Wformat=2 -Wmisleading-indentation], [AM_CFLAGS])]) + +AC_LANG_PUSH([C++]) +AC_PROG_CXX + +AS_IF([test "$GCC" = yes], + [AX_APPEND_COMPILE_FLAGS([-Wall -Wextra], [AM_CXXFLAGS]) + dnl Be careful about adding the -fexceptions option; some versions of + dnl GCC don't support it and it causes extra warnings that are only + dnl distracting; avoid. + AX_APPEND_COMPILE_FLAGS([-fexceptions], [AM_CXXFLAGS]) + AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing], [AM_CXXFLAGS])]) +AC_LANG_POP([C++]) + +AS_IF([test "$GCC" = yes], + [AX_APPEND_LINK_FLAGS([-fno-strict-aliasing],[AM_LDFLAGS])]) + +dnl patching ${archive_cmds} to affect generation of file "libtool" to fix linking with clang (issue #312) +AS_CASE(["$LD"],[*clang*], + [AS_CASE(["${host_os}"], + [*linux*],[archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'])]) + +EXPATCFG_COMPILER_SUPPORTS_VISIBILITY([ + AX_APPEND_FLAG([-fvisibility=hidden], [AM_CFLAGS]) + AX_APPEND_FLAG([-DXML_ENABLE_VISIBILITY=1], [AM_CPPFLAGS])]) + +dnl Checks for header files. +AC_HEADER_STDC + +dnl Checks for typedefs, structures, and compiler characteristics. + +dnl We define BYTEORDER to 1234 when the platform is little endian; it +dnl defines it to 4321 when the platform is big endian. We also define +dnl WORDS_BIGENDIAN to 1 when the platform is big endian. +dnl +dnl A long time ago (early 2000 years) AC_C_BIGENDIAN was considered +dnl wrong when cross compiling, now (2018, GNU Autoconf 2.69) we assume +dnl it is fine. +AC_C_BIGENDIAN([AC_DEFINE([WORDS_BIGENDIAN], 1) + AS_VAR_SET([BYTEORDER], 4321)], + [AS_VAR_SET([BYTEORDER], 1234)]) +AC_DEFINE_UNQUOTED([BYTEORDER], $BYTEORDER, [1234 = LILENDIAN, 4321 = BIGENDIAN]) + +AC_C_CONST +AC_TYPE_SIZE_T + +AC_ARG_WITH([xmlwf], + [AS_HELP_STRING([--without-xmlwf], [do not build xmlwf])], + [], + [with_xmlwf=yes]) +AM_CONDITIONAL([WITH_XMLWF], [test x${with_xmlwf} = xyes]) + +AC_ARG_WITH([examples], + [AS_HELP_STRING([--without-examples], [do not build examples @<:@default=included@:>@])], + [], + [with_examples=yes]) +AM_CONDITIONAL([WITH_EXAMPLES], [test x${with_examples} = xyes]) + +AC_ARG_WITH([tests], + [AS_HELP_STRING([--without-tests], [do not build tests @<:@default=included@:>@])], + [], + [with_tests=yes]) +AM_CONDITIONAL([WITH_TESTS], [test x${with_tests} = xyes]) + + +AS_VAR_SET([EXPATCFG_ON_MINGW],[no]) +AS_CASE("${host_os}", + [mingw*], + [AS_VAR_SET([EXPATCFG_ON_MINGW],[yes]) + AC_MSG_NOTICE([detected OS: MinGW])]) +AM_CONDITIONAL([MINGW], [test x${EXPATCFG_ON_MINGW} = xyes]) + +AM_CONDITIONAL([UNICODE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_UNICODE >/dev/null]) + + +AC_ARG_WITH([libbsd], + [AS_HELP_STRING([--with-libbsd], [utilize libbsd (for arc4random_buf)])], + [], + [with_libbsd=no]) +AS_IF([test "x${with_libbsd}" != xno], + [AC_CHECK_LIB([bsd], + [arc4random_buf], + [], + [AS_IF([test "x${with_libbsd}" = xyes], + [AC_MSG_ERROR([Enforced use of libbsd cannot be satisfied.])])])]) +AC_MSG_CHECKING([for arc4random_buf (BSD or libbsd)]) +AC_LINK_IFELSE([AC_LANG_SOURCE([ + #include /* for arc4random_buf on BSD, for NULL */ + #if defined(HAVE_LIBBSD) + # include + #endif + int main() { + arc4random_buf(NULL, 0U); + return 0; + } + ])], + [AC_DEFINE([HAVE_ARC4RANDOM_BUF], [1], [Define to 1 if you have the `arc4random_buf' function.]) + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + + AC_MSG_CHECKING([for arc4random (BSD, macOS or libbsd)]) + AC_LINK_IFELSE([AC_LANG_SOURCE([ + #if defined(HAVE_LIBBSD) + # include + #else + # include + #endif + int main() { + arc4random(); + return 0; + } + ])], + [AC_DEFINE([HAVE_ARC4RANDOM], [1], [Define to 1 if you have the `arc4random' function.]) + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])])]) + +AC_ARG_WITH([getrandom], + [AS_HELP_STRING([--with-getrandom], + [enforce the use of getrandom function in the system @<:@default=check@:>@]) +AS_HELP_STRING([--without-getrandom], + [skip auto detect of getrandom @<:@default=check@:>@])], + [], + [with_getrandom=check]) + +AS_IF([test "x$with_getrandom" != xno], + [AC_MSG_CHECKING([for getrandom (Linux 3.17+, glibc 2.25+)]) + AC_LINK_IFELSE([AC_LANG_SOURCE([ + #include /* for NULL */ + #include + int main() { + return getrandom(NULL, 0U, 0U); + } + ])], + [AC_DEFINE([HAVE_GETRANDOM], [1], [Define to 1 if you have the `getrandom' function.]) + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AS_IF([test "x$with_getrandom" = xyes], + [AC_MSG_ERROR([enforced the use of getrandom --with-getrandom, but not detected])])])]) + +AC_ARG_WITH([sys_getrandom], + [AS_HELP_STRING([--with-sys-getrandom], + [enforce the use of syscall SYS_getrandom function in the system @<:@default=check@:>@]) +AS_HELP_STRING([--without-sys-getrandom], + [skip auto detect of syscall SYS_getrandom @<:@default=check@:>@])], + [], + [with_sys_getrandom=check]) + +AS_IF([test "x$with_sys_getrandom" != xno], + [AC_MSG_CHECKING([for syscall SYS_getrandom (Linux 3.17+)]) + AC_LINK_IFELSE([AC_LANG_SOURCE([ + #include /* for NULL */ + #include /* for syscall */ + #include /* for SYS_getrandom */ + int main() { + syscall(SYS_getrandom, NULL, 0, 0); + return 0; + } + ])], + [AC_DEFINE([HAVE_SYSCALL_GETRANDOM], [1], [Define to 1 if you have `syscall' and `SYS_getrandom'.]) + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AS_IF([test "x$with_sys_getrandom" = xyes], + [AC_MSG_ERROR([enforced the use of syscall SYS_getrandom --with-sys-getrandom, but not detected])])])]) + +dnl Only needed for xmlwf: +AC_CHECK_HEADERS(fcntl.h unistd.h) +AC_TYPE_OFF_T +AC_FUNC_MMAP + +AS_IF([test "$ac_cv_func_mmap_fixed_mapped" = "yes"], + [AS_VAR_SET(FILEMAP,unixfilemap)], + [AS_VAR_SET(FILEMAP,readfilemap)]) +AC_SUBST(FILEMAP) + + +dnl Some basic configuration: +AC_DEFINE([XML_NS], 1, + [Define to make XML Namespaces functionality available.]) +AC_DEFINE([XML_DTD], 1, + [Define to make parameter entity parsing functionality available.]) +AC_DEFINE([XML_DEV_URANDOM], 1, + [Define to include code reading entropy from `/dev/urandom'.]) + +AC_ARG_ENABLE([xml-attr-info], + [AS_HELP_STRING([--enable-xml-attr-info], + [Enable retrieving the byte offsets for attribute names and values @<:@default=no@:>@])], + [], + [enable_xml_attr_info=no]) +AS_IF([test "x${enable_xml_attr_info}" = "xyes"], + [AC_DEFINE([XML_ATTR_INFO], 1, + [Define to allow retrieving the byte offsets for attribute names and values.])]) + +AC_ARG_ENABLE([xml-context], + AS_HELP_STRING([--enable-xml-context @<:@COUNT@:>@], + [Retain context around the current parse point; + default is enabled and a size of 1024 bytes]) +AS_HELP_STRING([--disable-xml-context], + [Do not retain context around the current parse point]), + [enable_xml_context=${enableval}]) +AS_IF([test "x${enable_xml_context}" != "xno"], + [AS_IF([test "x${enable_xml_context}" = "xyes" \ + -o "x${enable_xml_context}" = "x"], + [AS_VAR_SET(enable_xml_context,1024)]) + AC_DEFINE_UNQUOTED([XML_CONTEXT_BYTES], [${enable_xml_context}], + [Define to specify how much context to retain around the current parse point.])]) + +AC_ARG_WITH([docbook], + [AS_HELP_STRING([--with-docbook], + [enforce XML to man page compilation @<:@default=check@:>@]) +AS_HELP_STRING([--without-docbook], + [skip XML to man page compilation @<:@default=check@:>@])], + [], + [with_docbook=check]) + +AC_ARG_VAR([DOCBOOK_TO_MAN], [docbook2x-man command]) +AS_IF([test "x$with_docbook" != xno], + [AC_CHECK_PROGS([DOCBOOK_TO_MAN], [docbook2x-man db2x_docbook2man docbook2man docbook-to-man])]) +AS_IF([test "x${DOCBOOK_TO_MAN}" = x -a "x$with_docbook" = xyes], + [AC_MSG_ERROR([Required program 'docbook2x-man' not found.])]) +AS_IF([test "x${DOCBOOK_TO_MAN}" != x -a "x$with_docbook" != xno], + [AS_IF([${DOCBOOK_TO_MAN} --help | grep -i -q -F sgmlbase], + [AC_MSG_ERROR([Your local ${DOCBOOK_TO_MAN} was found to work with SGML rather + than XML. Please install docbook2X and use variable DOCBOOK_TO_MAN to point + configure to command docbook2x-man of docbook2X. + Or use DOCBOOK_TO_MAN="xmlto man --skip-validation" if you have xmlto around. + You can also configure using --without-docbook if you can do without a man + page for xmlwf.])])]) + +AM_CONDITIONAL(WITH_DOCBOOK, [test "x${DOCBOOK_TO_MAN}" != x]) + +dnl write the Automake flags we set +AC_SUBST([AM_CPPFLAGS]) +AC_SUBST([AM_CFLAGS]) +AC_SUBST([AM_CXXFLAGS]) +AC_SUBST([AM_LDFLAGS]) + +dnl updating _EXPAT_OUTPUT_NAME variable to effect the package name in expat.pc file (issue #361) +AC_SUBST(_EXPAT_OUTPUT_NAME, ["$PACKAGE_NAME"]) + +AC_CONFIG_FILES([Makefile] + [expat.pc] + [doc/Makefile] + [examples/Makefile] + [lib/Makefile] + [tests/Makefile] + [tests/benchmark/Makefile] + [xmlwf/Makefile]) +AC_CONFIG_FILES([run.sh], [chmod +x run.sh]) +AC_OUTPUT + + +AC_MSG_NOTICE([ + +Automake flags (can be overridden by user flags): + [AM_CPPFLAGS]: ${AM_CPPFLAGS} + [AM_CFLAGS]: ${AM_CFLAGS} + [AM_CXXFLAGS]: ${AM_CXXFLAGS} + [AM_LDFLAGS]: ${AM_LDFLAGS} + +User flags (override Automake flags on conflict): + CPPFLAGS: ${CPPFLAGS} + CFLAGS: ${CFLAGS} + CXXFLAGS: ${CXXFLAGS} + LDFLAGS: ${LDFLAGS}]) diff --git a/3rdparty/expat/conftools/PrintPath b/3rdparty/expat/conftools/PrintPath new file mode 100755 index 0000000..e8559a3 --- /dev/null +++ b/3rdparty/expat/conftools/PrintPath @@ -0,0 +1,116 @@ +#!/bin/sh +# Look for program[s] somewhere in $PATH. +# +# Options: +# -s +# Do not print out full pathname. (silent) +# -pPATHNAME +# Look in PATHNAME instead of $PATH +# +# Usage: +# PrintPath [-s] [-pPATHNAME] program [program ...] +# +# Initially written by Jim Jagielski for the Apache configuration mechanism +# (with kudos to Kernighan/Pike) +# +# This script falls under the Apache License. +# See http://www.apache.org/licenses/LICENSE + +## +# Some "constants" +## +pathname=$PATH +echo="yes" + +## +# Find out what OS we are running for later on +## +os=`(uname) 2>/dev/null` + +## +# Parse command line +## +for args in $* +do + case $args in + -s ) echo="no" ;; + -p* ) pathname="`echo $args | sed 's/^..//'`" ;; + * ) programs="$programs $args" ;; + esac +done + +## +# Now we make the adjustments required for OS/2 and everyone +# else :) +# +# First of all, all OS/2 programs have the '.exe' extension. +# Next, we adjust PATH (or what was given to us as PATH) to +# be whitespace separated directories. +# Finally, we try to determine the best flag to use for +# test/[] to look for an executable file. OS/2 just has '-r' +# but with other OSs, we do some funny stuff to check to see +# if test/[] knows about -x, which is the preferred flag. +## + +if [ "x$os" = "xOS/2" ] +then + ext=".exe" + pathname=`echo -E $pathname | + sed 's/^;/.;/ + s/;;/;.;/g + s/;$/;./ + s/;/ /g + s/\\\\/\\//g' ` + test_exec_flag="-r" +else + ext="" # No default extensions + pathname=`echo $pathname | + sed 's/^:/.:/ + s/::/:.:/g + s/:$/:./ + s/:/ /g' ` + # Here is how we test to see if test/[] can handle -x + testfile="pp.t.$$" + + cat > $testfile </dev/null`; then + test_exec_flag="-x" + else + test_exec_flag="-r" + fi + rm -f $testfile +fi + +for program in $programs +do + for path in $pathname + do + if [ $test_exec_flag $path/${program}${ext} ] && \ + [ ! -d $path/${program}${ext} ]; then + if [ "x$echo" = "xyes" ]; then + echo $path/${program}${ext} + fi + exit 0 + fi + +# Next try without extension (if one was used above) + if [ "x$ext" != "x" ]; then + if [ $test_exec_flag $path/${program} ] && \ + [ ! -d $path/${program} ]; then + if [ "x$echo" = "xyes" ]; then + echo $path/${program} + fi + exit 0 + fi + fi + done +done +exit 1 + diff --git a/3rdparty/expat/conftools/ar-lib b/3rdparty/expat/conftools/ar-lib new file mode 100755 index 0000000..1e9388e --- /dev/null +++ b/3rdparty/expat/conftools/ar-lib @@ -0,0 +1,271 @@ +#! /bin/sh +# Wrapper for Microsoft lib.exe + +me=ar-lib +scriptversion=2019-07-04.01; # UTC + +# Copyright (C) 2010-2020 Free Software Foundation, Inc. +# Written by Peter Rosin . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + + +# func_error message +func_error () +{ + echo "$me: $1" 1>&2 + exit 1 +} + +file_conv= + +# func_file_conv build_file +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN* | MSYS*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv in + mingw) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin | msys) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_at_file at_file operation archive +# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE +# for each of them. +# When interpreting the content of the @FILE, do NOT use func_file_conv, +# since the user would need to supply preconverted file names to +# binutils ar, at least for MinGW. +func_at_file () +{ + operation=$2 + archive=$3 + at_file_contents=`cat "$1"` + eval set x "$at_file_contents" + shift + + for member + do + $AR -NOLOGO $operation:"$member" "$archive" || exit $? + done +} + +case $1 in + '') + func_error "no command. Try '$0 --help' for more information." + ;; + -h | --h*) + cat < +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 7 + +AC_DEFUN([AX_APPEND_COMPILE_FLAGS], +[AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG]) +AX_REQUIRE_DEFINED([AX_APPEND_FLAG]) +for flag in $1; do + AX_CHECK_COMPILE_FLAG([$flag], [AX_APPEND_FLAG([$flag], [$2])], [], [$3], [$4]) +done +])dnl AX_APPEND_COMPILE_FLAGS diff --git a/3rdparty/expat/conftools/ax-append-flag.m4 b/3rdparty/expat/conftools/ax-append-flag.m4 new file mode 100644 index 0000000..dd6d8b6 --- /dev/null +++ b/3rdparty/expat/conftools/ax-append-flag.m4 @@ -0,0 +1,50 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_append_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE]) +# +# DESCRIPTION +# +# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space +# added in between. +# +# If FLAGS-VARIABLE is not specified, the current language's flags (e.g. +# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains +# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly +# FLAG. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 8 + +AC_DEFUN([AX_APPEND_FLAG], +[dnl +AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF +AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])]) +AS_VAR_SET_IF(FLAGS,[ + AS_CASE([" AS_VAR_GET(FLAGS) "], + [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])], + [ + AS_VAR_APPEND(FLAGS,[" $1"]) + AC_RUN_LOG([: FLAGS="$FLAGS"]) + ]) + ], + [ + AS_VAR_SET(FLAGS,[$1]) + AC_RUN_LOG([: FLAGS="$FLAGS"]) + ]) +AS_VAR_POPDEF([FLAGS])dnl +])dnl AX_APPEND_FLAG diff --git a/3rdparty/expat/conftools/ax-append-link-flags.m4 b/3rdparty/expat/conftools/ax-append-link-flags.m4 new file mode 100644 index 0000000..99b9fa5 --- /dev/null +++ b/3rdparty/expat/conftools/ax-append-link-flags.m4 @@ -0,0 +1,44 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_append_link_flags.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_APPEND_LINK_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS], [INPUT]) +# +# DESCRIPTION +# +# For every FLAG1, FLAG2 it is checked whether the linker works with the +# flag. If it does, the flag is added FLAGS-VARIABLE +# +# If FLAGS-VARIABLE is not specified, the linker's flags (LDFLAGS) is +# used. During the check the flag is always added to the linker's flags. +# +# If EXTRA-FLAGS is defined, it is added to the linker's default flags +# when the check is done. The check is thus made with the flags: "LDFLAGS +# EXTRA-FLAGS FLAG". This can for example be used to force the linker to +# issue an error when a bad flag is given. +# +# INPUT gives an alternative input source to AC_COMPILE_IFELSE. +# +# NOTE: This macro depends on the AX_APPEND_FLAG and AX_CHECK_LINK_FLAG. +# Please keep this macro in sync with AX_APPEND_COMPILE_FLAGS. +# +# LICENSE +# +# Copyright (c) 2011 Maarten Bosmans +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 7 + +AC_DEFUN([AX_APPEND_LINK_FLAGS], +[AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) +AX_REQUIRE_DEFINED([AX_APPEND_FLAG]) +for flag in $1; do + AX_CHECK_LINK_FLAG([$flag], [AX_APPEND_FLAG([$flag], [m4_default([$2], [LDFLAGS])])], [], [$3], [$4]) +done +])dnl AX_APPEND_LINK_FLAGS diff --git a/3rdparty/expat/conftools/ax-check-compile-flag.m4 b/3rdparty/expat/conftools/ax-check-compile-flag.m4 new file mode 100644 index 0000000..172e296 --- /dev/null +++ b/3rdparty/expat/conftools/ax-check-compile-flag.m4 @@ -0,0 +1,77 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) +# +# DESCRIPTION +# +# Check whether the given FLAG plus -Werror works with the current +# language's compiler — C or C++ — or gives an error. +# +# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on +# success/failure. +# +# If EXTRA-FLAGS is defined, it is added to the current language's default +# flags (e.g. CFLAGS) when the check is done. The check is thus made with +# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to +# force the compiler to issue an error when a bad flag is given. +# +# INPUT gives an alternative input source to AC_COMPILE_IFELSE. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this +# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# Copyright (c) 2020 Sebastian Pipping +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 6 + +AC_DEFUN([AX_CHECK_COMPILE_FLAG], +[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF +AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl +AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ + ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 -Werror $1" + AC_COMPILE_IFELSE([m4_default([$5], + [AC_LANG_SOURCE( + [[int main(void) { return 0; }]])])], + [AS_VAR_SET(CACHEVAR,[yes])], + [AS_VAR_SET(CACHEVAR,[no])]) + _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) +AS_VAR_IF(CACHEVAR,yes, + [m4_default([$2], :)], + [m4_default([$3], :)]) +AS_VAR_POPDEF([CACHEVAR])dnl +])dnl AX_CHECK_COMPILE_FLAGS diff --git a/3rdparty/expat/conftools/ax-check-link-flag.m4 b/3rdparty/expat/conftools/ax-check-link-flag.m4 new file mode 100644 index 0000000..03a30ce --- /dev/null +++ b/3rdparty/expat/conftools/ax-check-link-flag.m4 @@ -0,0 +1,53 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) +# +# DESCRIPTION +# +# Check whether the given FLAG works with the linker or gives an error. +# (Warnings, however, are ignored) +# +# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on +# success/failure. +# +# If EXTRA-FLAGS is defined, it is added to the linker's default flags +# when the check is done. The check is thus made with the flags: "LDFLAGS +# EXTRA-FLAGS FLAG". This can for example be used to force the linker to +# issue an error when a bad flag is given. +# +# INPUT gives an alternative input source to AC_LINK_IFELSE. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this +# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 6 + +AC_DEFUN([AX_CHECK_LINK_FLAG], +[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF +AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl +AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [ + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS $4 $1" + AC_LINK_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], + [AS_VAR_SET(CACHEVAR,[yes])], + [AS_VAR_SET(CACHEVAR,[no])]) + LDFLAGS=$ax_check_save_flags]) +AS_VAR_IF(CACHEVAR,yes, + [m4_default([$2], :)], + [m4_default([$3], :)]) +AS_VAR_POPDEF([CACHEVAR])dnl +])dnl AX_CHECK_LINK_FLAGS diff --git a/3rdparty/expat/conftools/ax-require-defined.m4 b/3rdparty/expat/conftools/ax-require-defined.m4 new file mode 100644 index 0000000..17c3eab --- /dev/null +++ b/3rdparty/expat/conftools/ax-require-defined.m4 @@ -0,0 +1,37 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_require_defined.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_REQUIRE_DEFINED(MACRO) +# +# DESCRIPTION +# +# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have +# been defined and thus are available for use. This avoids random issues +# where a macro isn't expanded. Instead the configure script emits a +# non-fatal: +# +# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found +# +# It's like AC_REQUIRE except it doesn't expand the required macro. +# +# Here's an example: +# +# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) +# +# LICENSE +# +# Copyright (c) 2014 Mike Frysinger +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 2 + +AC_DEFUN([AX_REQUIRE_DEFINED], [dnl + m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])]) +])dnl AX_REQUIRE_DEFINED diff --git a/3rdparty/expat/conftools/compile b/3rdparty/expat/conftools/compile new file mode 100755 index 0000000..23fcba0 --- /dev/null +++ b/3rdparty/expat/conftools/compile @@ -0,0 +1,348 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN* | MSYS*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/* | msys/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/3rdparty/expat/conftools/config.guess b/3rdparty/expat/conftools/config.guess new file mode 100755 index 0000000..df89549 --- /dev/null +++ b/3rdparty/expat/conftools/config.guess @@ -0,0 +1,1676 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2019 Free Software Foundation, Inc. + +timestamp='2019-09-10' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# +# Please send patches to . + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2019 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD="$driver" + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if test -f /.attbin/uname ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "$UNAME_SYSTEM" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + set_cc_for_build + cat <<-EOF > "$dummy.c" + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + + # If ldd exists, use it to detect musl libc. + if command -v ldd >/dev/null && \ + ldd --version 2>&1 | grep -q ^musl + then + LIBC=musl + fi + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + "/sbin/$sysctl" 2>/dev/null || \ + "/usr/sbin/$sysctl" 2>/dev/null || \ + echo unknown)` + case "$UNAME_MACHINE_ARCH" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine="${arch}${endian}"-unknown + ;; + *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case "$UNAME_MACHINE_ARCH" in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "$UNAME_MACHINE_ARCH" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "$UNAME_VERSION" in + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "$machine-${os}${release}${abi-}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" + exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" + exit ;; + *:MidnightBSD:*:*) + echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" + exit ;; + *:ekkoBSD:*:*) + echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" + exit ;; + *:SolidBSD:*:*) + echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" + exit ;; + *:OS108:*:*) + echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd"$UNAME_RELEASE" + exit ;; + *:MirBSD:*:*) + echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" + exit ;; + *:Sortix:*:*) + echo "$UNAME_MACHINE"-unknown-sortix + exit ;; + *:Twizzler:*:*) + echo "$UNAME_MACHINE"-unknown-twizzler + exit ;; + *:Redox:*:*) + echo "$UNAME_MACHINE"-unknown-redox + exit ;; + mips:OSF1:*.*) + echo mips-dec-osf1 + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo "$UNAME_MACHINE"-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo "$UNAME_MACHINE"-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix"$UNAME_RELEASE" + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux"$UNAME_RELEASE" + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos"$UNAME_RELEASE" + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos"$UNAME_RELEASE" + ;; + sun4) + echo sparc-sun-sunos"$UNAME_RELEASE" + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos"$UNAME_RELEASE" + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint"$UNAME_RELEASE" + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint"$UNAME_RELEASE" + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint"$UNAME_RELEASE" + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten"$UNAME_RELEASE" + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten"$UNAME_RELEASE" + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix"$UNAME_RELEASE" + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix"$UNAME_RELEASE" + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix"$UNAME_RELEASE" + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos"$UNAME_RELEASE" + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] + then + if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ + [ "$TARGET_BINARY_INTERFACE"x = x ] + then + echo m88k-dg-dgux"$UNAME_RELEASE" + else + echo m88k-dg-dguxbcs"$UNAME_RELEASE" + fi + else + echo i586-dg-dgux"$UNAME_RELEASE" + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + fi + echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + fi + echo "$IBM_ARCH"-ibm-aix"$IBM_REV" + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + case "$UNAME_MACHINE" in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "$sc_cpu_version" in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "$sc_kernel_bits" in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "$HP_ARCH" = "" ]; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ "$HP_ARCH" = hppa2.0w ] + then + set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + echo "$HP_ARCH"-hp-hpux"$HPUX_REV" + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux"$HPUX_REV" + exit ;; + 3050*:HI-UX:*:*) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo "$UNAME_MACHINE"-unknown-osf1mk + else + echo "$UNAME_MACHINE"-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi"$UNAME_RELEASE" + exit ;; + *:BSD/OS:*:*) + echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" + exit ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi + else + echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf + fi + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case "$UNAME_PROCESSOR" in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + exit ;; + i*:CYGWIN*:*) + echo "$UNAME_MACHINE"-pc-cygwin + exit ;; + *:MINGW64*:*) + echo "$UNAME_MACHINE"-pc-mingw64 + exit ;; + *:MINGW*:*) + echo "$UNAME_MACHINE"-pc-mingw32 + exit ;; + *:MSYS*:*) + echo "$UNAME_MACHINE"-pc-msys + exit ;; + i*:PW*:*) + echo "$UNAME_MACHINE"-pc-pw32 + exit ;; + *:Interix*:*) + case "$UNAME_MACHINE" in + x86) + echo i586-pc-interix"$UNAME_RELEASE" + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix"$UNAME_RELEASE" + exit ;; + IA64) + echo ia64-unknown-interix"$UNAME_RELEASE" + exit ;; + esac ;; + i*:UWIN*:*) + echo "$UNAME_MACHINE"-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-pc-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + *:GNU:*:*) + # the GNU system + echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" + exit ;; + *:Minix:*:*) + echo "$UNAME_MACHINE"-unknown-minix + exit ;; + aarch64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arm*:Linux:*:*) + set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + else + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + cris:Linux:*:*) + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + crisv32:Linux:*:*) + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + e2k:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + frv:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + hexagon:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + i*86:Linux:*:*) + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + exit ;; + ia64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + k1om:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + m32r*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + m68*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + MIPS_ENDIAN=el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + MIPS_ENDIAN= + #else + MIPS_ENDIAN= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } + ;; + mips64el:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-"$LIBC" + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-"$LIBC" + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-"$LIBC" + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; + PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; + *) echo hppa-unknown-linux-"$LIBC" ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-"$LIBC" + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-"$LIBC" + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-"$LIBC" + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-"$LIBC" + exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" + exit ;; + sh64*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + sh*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + tile*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + vax:Linux:*:*) + echo "$UNAME_MACHINE"-dec-linux-"$LIBC" + exit ;; + x86_64:Linux:*:*) + set_cc_for_build + X86_64_ABI= + # If there is a compiler, see if it is configured for 32-bit objects. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_X32 >/dev/null + then + X86_64_ABI=x32 + fi + fi + echo "$UNAME_MACHINE"-pc-linux-"$LIBC$X86_64_ABI" + exit ;; + xtensa*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo "$UNAME_MACHINE"-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo "$UNAME_MACHINE"-unknown-stop + exit ;; + i*86:atheos:*:*) + echo "$UNAME_MACHINE"-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo "$UNAME_MACHINE"-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos"$UNAME_RELEASE" + exit ;; + i*86:*DOS:*:*) + echo "$UNAME_MACHINE"-pc-msdosdjgpp + exit ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + else + echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + else + echo "$UNAME_MACHINE"-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos"$UNAME_RELEASE" + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos"$UNAME_RELEASE" + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos"$UNAME_RELEASE" + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos"$UNAME_RELEASE" + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv"$UNAME_RELEASE" + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo "$UNAME_MACHINE"-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo "$UNAME_MACHINE"-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux"$UNAME_RELEASE" + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv"$UNAME_RELEASE" + else + echo mips-unknown-sysv"$UNAME_RELEASE" + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux"$UNAME_RELEASE" + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux"$UNAME_RELEASE" + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux"$UNAME_RELEASE" + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux"$UNAME_RELEASE" + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux"$UNAME_RELEASE" + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux"$UNAME_RELEASE" + exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux"$UNAME_RELEASE" + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody"$UNAME_RELEASE" + exit ;; + *:Rhapsody:*:*) + echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build + fi + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE + fi + echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-*:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSR-*:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSV-*:NONSTOP_KERNEL:*:*) + echo nsv-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSX-*:NONSTOP_KERNEL:*:*) + echo nsx-tandem-nsk"$UNAME_RELEASE" + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + # shellcheck disable=SC2154 + if test "$cputype" = 386; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo "$UNAME_MACHINE"-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux"$UNAME_RELEASE" + exit ;; + *:DragonFly:*:*) + echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "$UNAME_MACHINE" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" + exit ;; + i*86:rdos:*:*) + echo "$UNAME_MACHINE"-pc-rdos + exit ;; + i*86:AROS:*:*) + echo "$UNAME_MACHINE"-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo "$UNAME_MACHINE"-unknown-esx + exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; + *:Unleashed:*:*) + echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" + exit ;; +esac + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case "$UNAME_MACHINE:$UNAME_SYSTEM" in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/3rdparty/expat/conftools/config.sub b/3rdparty/expat/conftools/config.sub new file mode 100755 index 0000000..96fca06 --- /dev/null +++ b/3rdparty/expat/conftools/config.sub @@ -0,0 +1,1814 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2019 Free Software Foundation, Inc. + +timestamp='2019-06-30' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2019 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +# shellcheck disable=SC2162 +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + os=$field3-$field4 + ;; + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \ + | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \ + | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ + | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ + | storm-chaos* | os2-emx* | rtmk-nova*) + basic_machine=$field1 + os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + os=linux-android + ;; + *) + basic_machine=$field1-$field2 + os=$field3 + ;; + esac + ;; + *-*) + # A lone config we happen to match not fitting any pattern + case $field1-$field2 in + decstation-3100) + basic_machine=mips-dec + os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + sun*os*) + basic_machine=$field1 + os=$field2 + ;; + # Manufacturers + dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ + | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ + | unicom* | ibm* | next | hp | isi* | apollo | altos* \ + | convergent* | ncr* | news | 32* | 3600* | 3100* \ + | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ + | ultra | tti* | harris | dolphin | highlevel | gould \ + | cbm | ns | masscomp | apple | axis | knuth | cray \ + | microblaze* | sim | cisco \ + | oki | wec | wrs | winbond) + basic_machine=$field1-$field2 + os= + ;; + *) + basic_machine=$field1 + os=$field2 + ;; + esac + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + os=bsd + ;; + a29khif) + basic_machine=a29k-amd + os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=scout + ;; + alliant) + basic_machine=fx80-alliant + os= + ;; + altos | altos3068) + basic_machine=m68k-altos + os= + ;; + am29k) + basic_machine=a29k-none + os=bsd + ;; + amdahl) + basic_machine=580-amdahl + os=sysv + ;; + amiga) + basic_machine=m68k-unknown + os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=bsd + ;; + aros) + basic_machine=i386-pc + os=aros + ;; + aux) + basic_machine=m68k-apple + os=aux + ;; + balance) + basic_machine=ns32k-sequent + os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=linux + ;; + cegcc) + basic_machine=arm-unknown + os=cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=bsd + ;; + convex-c2) + basic_machine=c2-convex + os=bsd + ;; + convex-c32) + basic_machine=c32-convex + os=bsd + ;; + convex-c34) + basic_machine=c34-convex + os=bsd + ;; + convex-c38) + basic_machine=c38-convex + os=bsd + ;; + cray) + basic_machine=j90-cray + os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + os= + ;; + da30) + basic_machine=m68k-da30 + os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + os= + ;; + delta88) + basic_machine=m88k-motorola + os=sysv3 + ;; + dicos) + basic_machine=i686-pc + os=dicos + ;; + djgpp) + basic_machine=i586-pc + os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=ose + ;; + gmicro) + basic_machine=tron-gmicro + os=sysv + ;; + go32) + basic_machine=i386-pc + os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=hms + ;; + harris) + basic_machine=m88k-harris + os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=proelf + ;; + i386mach) + basic_machine=i386-mach + os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + os=sysv + ;; + merlin) + basic_machine=ns32k-utek + os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + os=coff + ;; + morphos) + basic_machine=powerpc-unknown + os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=moxiebox + ;; + msdos) + basic_machine=i386-pc + os=msdos + ;; + msys) + basic_machine=i686-pc + os=msys + ;; + mvs) + basic_machine=i370-ibm + os=mvs + ;; + nacl) + basic_machine=le32-unknown + os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=newsos + ;; + news1000) + basic_machine=m68030-sony + os=newsos + ;; + necv70) + basic_machine=v70-nec + os=sysv + ;; + nh3000) + basic_machine=m68k-harris + os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=cxux + ;; + nindy960) + basic_machine=i960-intel + os=nindy + ;; + mon960) + basic_machine=i960-intel + os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=ose + ;; + os68k) + basic_machine=m68k-none + os=os68k + ;; + paragon) + basic_machine=i860-intel + os=osf + ;; + parisc) + basic_machine=hppa-unknown + os=linux + ;; + pw32) + basic_machine=i586-unknown + os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=rdos + ;; + rdos32) + basic_machine=i386-pc + os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=coff + ;; + sa29200) + basic_machine=a29k-amd + os=udi + ;; + sei) + basic_machine=mips-sei + os=seiux + ;; + sequent) + basic_machine=i386-sequent + os= + ;; + sps7) + basic_machine=m68k-bull + os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + os= + ;; + stratus) + basic_machine=i860-stratus + os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + os= + ;; + sun2os3) + basic_machine=m68000-sun + os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + os= + ;; + sun3os3) + basic_machine=m68k-sun + os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + os= + ;; + sun4os3) + basic_machine=sparc-sun + os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + os= + ;; + sv1) + basic_machine=sv1-cray + os=unicos + ;; + symmetry) + basic_machine=i386-sequent + os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=unicos + ;; + t90) + basic_machine=t90-cray + os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + os=tpf + ;; + udi29k) + basic_machine=a29k-amd + os=udi + ;; + ultra3) + basic_machine=a29k-nyu + os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=none + ;; + vaxv) + basic_machine=vax-dec + os=sysv + ;; + vms) + basic_machine=vax-dec + os=vms + ;; + vsta) + basic_machine=i386-pc + os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=vxworks + ;; + xbox) + basic_machine=i686-pc + os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + os=unicos + ;; + *) + basic_machine=$1 + os= + ;; + esac + ;; +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond + ;; + op50n) + cpu=hppa1.1 + vendor=oki + ;; + op60c) + cpu=hppa1.1 + vendor=oki + ;; + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + os=tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + cpu=m68k + vendor=motorola + ;; + dpx2*) + cpu=m68k + vendor=bull + os=sysv3 + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + os=${os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + os=${os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $os in + irix*) + ;; + *) + os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + os=mint + ;; + mipsEE* | ee) + cpu=mips64r5900el + vendor=scei + case $os in + linux*) + ;; + *) + os=elf + ;; + esac + ;; + iop) + cpu=mipsel + vendor=scei + os=irx + ;; + dvp) + cpu=dvp + vendor=scei + os=elf + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + case $os in + openstep*) + ;; + nextstep*) + ;; + ns2*) + os=nextstep2 + ;; + *) + os=nextstep3 + ;; + esac + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + os=${os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` + ;; + + *-*) + # shellcheck disable=SC2162 + IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $vendor in + digital*) + vendor=dec + ;; + commodore*) + vendor=cbm + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x$os != x ] +then +case $os in + # First match some system type aliases that might get confused + # with valid system types. + # solaris* is a basic system type, with this one exception. + auroraux) + os=auroraux + ;; + bluegene*) + os=cnk + ;; + solaris1 | solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + solaris) + os=solaris2 + ;; + unixware*) + os=sysv4.2uw + ;; + gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # es1800 is here to avoid being matched by es* (a different OS) + es1800*) + os=ose + ;; + # Some version numbers need modification + chorusos*) + os=chorusos + ;; + isc) + os=isc2.2 + ;; + sco6) + os=sco5v6 + ;; + sco5) + os=sco3.2v5 + ;; + sco4) + os=sco3.2v4 + ;; + sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + ;; + sco3.2v[4-9]* | sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + ;; + scout) + # Don't match below + ;; + sco*) + os=sco3.2v2 + ;; + psos*) + os=psos + ;; + # Now accept the basic system types. + # The portable systems comes first. + # Each alternative MUST end in a * to match a version number. + # sysv* is not here because it comes later, after sysvr4. + gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ + | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\ + | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ + | sym* | kopensolaris* | plan9* \ + | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ + | aos* | aros* | cloudabi* | sortix* | twizzler* \ + | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ + | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ + | knetbsd* | mirbsd* | netbsd* \ + | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \ + | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \ + | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ + | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ + | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \ + | chorusrdb* | cegcc* | glidix* \ + | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ + | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \ + | linux-newlib* | linux-musl* | linux-uclibc* \ + | uxpv* | beos* | mpeix* | udk* | moxiebox* \ + | interix* | uwin* | mks* | rhapsody* | darwin* \ + | openstep* | oskit* | conix* | pw32* | nonstopux* \ + | storm-chaos* | tops10* | tenex* | tops20* | its* | irx* \ + | os2* | vos* | palmos* | uclinux* | nucleus* \ + | morphos* | superux* | rtmk* | windiss* \ + | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ + | skyos* | haiku* | rdos* | toppers* | drops* | es* \ + | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ + | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ + | nsk* | powerunix) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + qnx*) + case $cpu in + x86 | i*86) + ;; + *) + os=nto-$os + ;; + esac + ;; + hiux*) + os=hiuxwe2 + ;; + nto-qnx*) + ;; + nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + sim | xray | os68k* | v88r* \ + | windows* | osx | abug | netware* | os9* \ + | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) + ;; + linux-dietlibc) + os=linux-dietlibc + ;; + linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + lynx*178) + os=lynxos178 + ;; + lynx*5) + os=lynxos5 + ;; + lynx*) + os=lynxos + ;; + mac*) + os=`echo "$os" | sed -e 's|mac|macos|'` + ;; + opened*) + os=openedition + ;; + os400*) + os=os400 + ;; + sunos5*) + os=`echo "$os" | sed -e 's|sunos5|solaris2|'` + ;; + sunos6*) + os=`echo "$os" | sed -e 's|sunos6|solaris3|'` + ;; + wince*) + os=wince + ;; + utek*) + os=bsd + ;; + dynix*) + os=bsd + ;; + acis*) + os=aos + ;; + atheos*) + os=atheos + ;; + syllable*) + os=syllable + ;; + 386bsd) + os=bsd + ;; + ctix* | uts*) + os=sysv + ;; + nova*) + os=rtmk-nova + ;; + ns2) + os=nextstep2 + ;; + # Preserve the version number of sinix5. + sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + sinix*) + os=sysv4 + ;; + tpf*) + os=tpf + ;; + triton*) + os=sysv3 + ;; + oss*) + os=sysv3 + ;; + svr4*) + os=sysv4 + ;; + svr3) + os=sysv3 + ;; + sysvr4) + os=sysv4 + ;; + # This must come after sysvr4. + sysv*) + ;; + ose*) + os=ose + ;; + *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + os=mint + ;; + zvmoe) + os=zvmoe + ;; + dicos*) + os=dicos + ;; + pikeos*) + # Until real need of OS specific support for + # particular features comes up, bare metal + # configurations are quite functional. + case $cpu in + arm*) + os=eabi + ;; + *) + os=elf + ;; + esac + ;; + nacl*) + ;; + ios) + ;; + none) + ;; + *-eabi) + ;; + *) + echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $cpu-$vendor in + score-*) + os=elf + ;; + spu-*) + os=elf + ;; + *-acorn) + os=riscix1.2 + ;; + arm*-rebel) + os=linux + ;; + arm*-semi) + os=aout + ;; + c4x-* | tic4x-*) + os=coff + ;; + c8051-*) + os=elf + ;; + clipper-intergraph) + os=clix + ;; + hexagon-*) + os=elf + ;; + tic54x-*) + os=coff + ;; + tic55x-*) + os=coff + ;; + tic6x-*) + os=coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=tops20 + ;; + pdp11-*) + os=none + ;; + *-dec | vax-*) + os=ultrix4.2 + ;; + m68*-apollo) + os=domain + ;; + i386-sun) + os=sunos4.0.2 + ;; + m68000-sun) + os=sunos3 + ;; + m68*-cisco) + os=aout + ;; + mep-*) + os=elf + ;; + mips*-cisco) + os=elf + ;; + mips*-*) + os=elf + ;; + or32-*) + os=coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=sysv3 + ;; + sparc-* | *-sun) + os=sunos4.1.1 + ;; + pru-*) + os=elf + ;; + *-be) + os=beos + ;; + *-ibm) + os=aix + ;; + *-knuth) + os=mmixware + ;; + *-wec) + os=proelf + ;; + *-winbond) + os=proelf + ;; + *-oki) + os=proelf + ;; + *-hp) + os=hpux + ;; + *-hitachi) + os=hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=sysv + ;; + *-cbm) + os=amigaos + ;; + *-dg) + os=dgux + ;; + *-dolphin) + os=sysv3 + ;; + m68k-ccur) + os=rtu + ;; + m88k-omron*) + os=luna + ;; + *-next) + os=nextstep + ;; + *-sequent) + os=ptx + ;; + *-crds) + os=unos + ;; + *-ns) + os=genix + ;; + i370-*) + os=mvs + ;; + *-gould) + os=sysv + ;; + *-highlevel) + os=bsd + ;; + *-encore) + os=bsd + ;; + *-sgi) + os=irix + ;; + *-siemens) + os=sysv4 + ;; + *-masscomp) + os=rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=uxpv + ;; + *-rom68k) + os=coff + ;; + *-*bug) + os=coff + ;; + *-apple) + os=macos + ;; + *-atari*) + os=mint + ;; + *-wrs) + os=vxworks + ;; + *) + os=none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +case $vendor in + unknown) + case $os in + riscix*) + vendor=acorn + ;; + sunos*) + vendor=sun + ;; + cnk*|-aix*) + vendor=ibm + ;; + beos*) + vendor=be + ;; + hpux*) + vendor=hp + ;; + mpeix*) + vendor=hp + ;; + hiux*) + vendor=hitachi + ;; + unos*) + vendor=crds + ;; + dgux*) + vendor=dg + ;; + luna*) + vendor=omron + ;; + genix*) + vendor=ns + ;; + clix*) + vendor=intergraph + ;; + mvs* | opened*) + vendor=ibm + ;; + os400*) + vendor=ibm + ;; + ptx*) + vendor=sequent + ;; + tpf*) + vendor=ibm + ;; + vxsim* | vxworks* | windiss*) + vendor=wrs + ;; + aux*) + vendor=apple + ;; + hms*) + vendor=hitachi + ;; + mpw* | macos*) + vendor=apple + ;; + *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + vendor=atari + ;; + vos*) + vendor=stratus + ;; + esac + ;; +esac + +echo "$cpu-$vendor-$os" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/3rdparty/expat/conftools/depcomp b/3rdparty/expat/conftools/depcomp new file mode 100755 index 0000000..6b39162 --- /dev/null +++ b/3rdparty/expat/conftools/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1999-2020 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/3rdparty/expat/conftools/expat.m4 b/3rdparty/expat/conftools/expat.m4 new file mode 100644 index 0000000..57e579b --- /dev/null +++ b/3rdparty/expat/conftools/expat.m4 @@ -0,0 +1,43 @@ +dnl Check if --with-expat[=PREFIX] is specified and +dnl Expat >= 1.95.0 is installed in the system. +dnl If yes, substitute EXPAT_CFLAGS, EXPAT_LIBS with regard to +dnl the specified PREFIX and set with_expat to PREFIX, or 'yes' if PREFIX +dnl has not been specified. Also HAVE_LIBEXPAT, HAVE_EXPAT_H are defined. +dnl If --with-expat has not been specified, set with_expat to 'no'. +dnl In addition, an Automake conditional EXPAT_INSTALLED is set accordingly. +dnl This is necessary to adapt a whole lot of packages that have expat +dnl bundled as a static library. +AC_DEFUN([AM_WITH_EXPAT], +[ AC_ARG_WITH(expat, + [ --with-expat=PREFIX Use system Expat library], + , with_expat=no) + + AM_CONDITIONAL(EXPAT_INSTALLED, test $with_expat != no) + + EXPAT_CFLAGS= + EXPAT_LIBS= + if test $with_expat != no; then + if test $with_expat != yes; then + EXPAT_CFLAGS="-I$with_expat/include" + EXPAT_LIBS="-L$with_expat/lib" + fi + AC_CHECK_LIB(expat, XML_ParserCreate, + [ EXPAT_LIBS="$EXPAT_LIBS -lexpat" + expat_found=yes ], + [ expat_found=no ], + "$EXPAT_LIBS") + if test $expat_found = no; then + AC_MSG_ERROR([Could not find the Expat library]) + fi + expat_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $EXPAT_CFLAGS" + AC_CHECK_HEADERS(expat.h, , expat_found=no) + if test $expat_found = no; then + AC_MSG_ERROR([Could not find expat.h]) + fi + CFLAGS="$expat_save_CFLAGS" + fi + + AC_SUBST(EXPAT_CFLAGS) + AC_SUBST(EXPAT_LIBS) +]) diff --git a/3rdparty/expat/conftools/expatcfg-compiler-supports-visibility.m4 b/3rdparty/expat/conftools/expatcfg-compiler-supports-visibility.m4 new file mode 100644 index 0000000..45d07ed --- /dev/null +++ b/3rdparty/expat/conftools/expatcfg-compiler-supports-visibility.m4 @@ -0,0 +1,39 @@ +# expatcfg-compiler-supports-visibility.m4 -- +# +# SYNOPSIS +# +# EXPATCFG_COMPILER_SUPPORTS_VISIBILITY([ACTION-IF-YES], +# [ACTION-IF-NO]) +# +# DESCRIPTION +# +# Check if the selected compiler supports the "visibility" attribute +# and set the variable "expatcfg_cv_compiler_supports_visibility" +# accordingly to "yes" or "no". +# +# In addition, execute ACTION-IF-YES or ACTION-IF-NO. +# +# LICENSE +# +# Copyright (c) 2018 The Expat Authors. +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without any warranty. + +AC_DEFUN([EXPATCFG_COMPILER_SUPPORTS_VISIBILITY], + [AC_CACHE_CHECK([whether compiler supports visibility], + [expatcfg_cv_compiler_supports_visibility], + [AS_VAR_SET([expatcfg_cv_compiler_supports_visibility],[no]) + AS_VAR_COPY([OLDFLAGS],[CFLAGS]) + AS_VAR_APPEND([CFLAGS],[" -fvisibility=hidden -Wall -Werror -Wno-unknown-warning-option"]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ + void __attribute__((visibility("default"))) foo(void); + void foo(void) {} + ]])], + [AS_VAR_SET([expatcfg_cv_compiler_supports_visibility],[yes])]) + AS_VAR_COPY([CFLAGS],[OLDFLAGS])]) + AS_IF([test "$expatcfg_cv_compiler_supports_visibility" = yes],[$1],[$2])]) + +# end of file diff --git a/3rdparty/expat/conftools/get-version.sh b/3rdparty/expat/conftools/get-version.sh new file mode 100755 index 0000000..2592f10 --- /dev/null +++ b/3rdparty/expat/conftools/get-version.sh @@ -0,0 +1,35 @@ +#!/bin/sh +# +# USAGE: get-version.sh path/to/expat.h +# +# This script will print Expat's version number on stdout. For example: +# +# $ ./conftools/get-version.sh ./lib/expat.h +# 1.95.3 +# $ +# + +if test $# = 0; then + echo "ERROR: pathname for expat.h was not provided." + echo "" + echo "USAGE: $0 path/to/expat.h" + exit 1 +fi +if test $# != 1; then + echo "ERROR: too many arguments were provided." + echo "" + echo "USAGE: $0 path/to/expat.h" + exit 1 +fi + +hdr="$1" +if test ! -r "$hdr"; then + echo "ERROR: '$hdr' does not exist, or is not readable." + exit 1 +fi + +MAJOR_VERSION=$(sed -n -e '/MAJOR_VERSION/s/[^0-9]*//gp' "$hdr") +MINOR_VERSION=$(sed -n -e '/MINOR_VERSION/s/[^0-9]*//gp' "$hdr") +MICRO_VERSION=$(sed -n -e '/MICRO_VERSION/s/[^0-9]*//gp' "$hdr") + +printf '%s.%s.%s' "$MAJOR_VERSION" "$MINOR_VERSION" "$MICRO_VERSION" diff --git a/3rdparty/expat/conftools/install-sh b/3rdparty/expat/conftools/install-sh new file mode 100755 index 0000000..20d8b2e --- /dev/null +++ b/3rdparty/expat/conftools/install-sh @@ -0,0 +1,529 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2018-03-11.20; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + # Note that $RANDOM variable is not portable (e.g. dash); Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p' feature. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/3rdparty/expat/conftools/ltmain.sh b/3rdparty/expat/conftools/ltmain.sh new file mode 100644 index 0000000..e774ddf --- /dev/null +++ b/3rdparty/expat/conftools/ltmain.sh @@ -0,0 +1,11210 @@ +#! /bin/sh +## DO NOT EDIT - This file generated from ./build-aux/ltmain.in +## by inline-source v2014-01-03.01 + +# libtool (GNU libtool) 2.4.6 +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +PROGRAM=libtool +PACKAGE=libtool +VERSION=2.4.6 +package_revision=2.4.6 + + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2015-10-04.22; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# Copyright (C) 2004-2015 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. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# As a special exception to the GNU General Public License, if you distribute +# this file as part of a program or library that is built using GNU Libtool, +# you may include this file under the same distribution terms that you use +# for the rest of that program. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac +fi + +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" + fi" +done + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" + +# There are apparently some retarded systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + + +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin + GREP=$func_path_progs_result +} + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. + +: ${CP="cp -f"} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} + + +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## + +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' + +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" + + +## ----------------- ## +## Global variables. ## +## ----------------- ## + +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. + +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +# Allow overriding, eg assuming that you follow the convention of +# putting '$debug_cmd' at the start of all your functions, you can get +# bash to show function call trace with: +# +# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +debug_cmd=${debug_cmd-":"} +exit_cmd=: + +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 + +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` + +# Make sure we have an absolute progpath for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` + progdir=`cd "$progdir" && pwd` + progpath=$progdir/$progname + ;; + *) + _G_IFS=$IFS + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS=$_G_IFS + test -x "$progdir/$progname" && break + done + IFS=$_G_IFS + test -n "$progdir" || progdir=`pwd` + progpath=$progdir/$progname + ;; +esac + + +## ----------------- ## +## Standard options. ## +## ----------------- ## + +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. + +opt_dry_run=false +opt_quiet=false +opt_verbose=false + +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= + +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue + +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. + + +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () +{ + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } + + require_term_colors=: +} + + +## ----------------- ## +## Function library. ## +## ----------------- ## + +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. + + +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. + + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi + + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # useable or anything else if it does not work. + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd + + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac +} + + +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd + + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $debug_cmd + + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + $debug_cmd + + _G_directory_path=$1 + _G_dir_list= + + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then + + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$_G_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + _G_dir_list=$_G_directory_path:$_G_dir_list + + # If the last portion added has no slash in it, the list is done + case $_G_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` + done + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` + + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$_G_dir" 2>/dev/null || : + done + IFS=$func_mkdir_p_IFS + + # Bail out if we (or some other process) failed to create a directory. + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" + fi +} + + +# func_mktempdir [BASENAME] +# ------------------------- +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, BASENAME is the basename for that directory. +func_mktempdir () +{ + $debug_cmd + + _G_template=${TMPDIR-/tmp}/${1-$progname} + + if test : = "$opt_dry_run"; then + # Return a directory name, but don't create it in dry-run mode + _G_tmpdir=$_G_template-$$ + else + + # If mktemp works, use that first and foremost + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` + + if test ! -d "$_G_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + _G_tmpdir=$_G_template-${RANDOM-0}$$ + + func_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + fi + + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote ARG +# -------------- +# Aesthetically quote one ARG, store the result into $func_quote_result. Note +# that we keep attention to performance here (so far O(N) complexity as long as +# func_append is O(1)). +func_quote () +{ + $debug_cmd + + func_quote_result=$1 + + case $func_quote_result in + *[\\\`\"\$]*) + case $func_quote_result in + *[\[\*\?]*) + func_quote_result=`$ECHO "$func_quote_result" | $SED "$sed_quote_subst"` + return 0 + ;; + esac + + func_quote_old_IFS=$IFS + for _G_char in '\' '`' '"' '$' + do + # STATE($1) PREV($2) SEPARATOR($3) + set start "" "" + func_quote_result=dummy"$_G_char$func_quote_result$_G_char"dummy + IFS=$_G_char + for _G_part in $func_quote_result + do + case $1 in + quote) + func_append func_quote_result "$3$2" + set quote "$_G_part" "\\$_G_char" + ;; + start) + set first "" "" + func_quote_result= + ;; + first) + set quote "$_G_part" "" + ;; + esac + done + IFS=$func_quote_old_IFS + done + ;; + *) ;; + esac +} + + +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () +{ + $debug_cmd + + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + func_quote "$1" + _G_unquoted_arg=$func_quote_result + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" + fi + + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" + ;; + *) + _G_quoted_arg=$_G_unquoted_arg + ;; + esac + + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" + else + func_append func_quote_for_eval_result "$_G_quoted_arg" + fi + shift + done +} + + +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd + + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; + esac + + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" + ;; + esac + + func_quote_for_expand_result=$_G_arg +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# Set a version string for this script. +scriptversion=2014-01-07.03; # UTC + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# Copyright (C) 2010-2015 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. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# warranty; '. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# to the main code. A hook is just a named list of of function, that can +# be run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It is assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook funcions.n" ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + eval $_G_hook '"$@"' + + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + done + + func_quote_for_eval ${1+"$@"} + func_run_hooks_result=$func_quote_for_eval_result +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list in your hook function, remove any +# options that you action, and then pass back the remaining unprocessed +# options in '_result', escaped suitably for +# 'eval'. Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# +# func_quote_for_eval ${1+"$@"} +# my_options_prep_result=$func_quote_for_eval_result +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# # Note that for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# ;; +# *) set dummy "$_G_opt" "$*"; shift; break ;; +# esac +# done +# +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# +# func_quote_for_eval ${1+"$@"} +# my_option_validation_result=$func_quote_for_eval_result +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll alse need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd + + func_options_prep ${1+"$@"} + eval func_parse_options \ + ${func_options_prep_result+"$func_options_prep_result"} + eval func_validate_options \ + ${func_parse_options_result+"$func_parse_options_result"} + + eval func_run_hooks func_options \ + ${func_validate_options_result+"$func_validate_options_result"} + + # save modified positional parameters for caller + func_options_result=$func_run_hooks_result +} + + +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propogate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before +# returning. +func_hookable func_options_prep +func_options_prep () +{ + $debug_cmd + + # Option defaults: + opt_verbose=false + opt_warning_types= + + func_run_hooks func_options_prep ${1+"$@"} + + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result +} + + +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () +{ + $debug_cmd + + func_parse_options_result= + + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + func_run_hooks func_parse_options ${1+"$@"} + + # Adjust func_parse_options positional parameters to match + eval set dummy "$func_run_hooks_result"; shift + + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break + + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; + + --warnings|--warning|-W) + test $# = 0 && func_missing_arg $_G_opt && break + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result +} + + +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () +{ + $debug_cmd + + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" + + func_run_hooks func_validate_options ${1+"$@"} + + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE + + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result +} + + + +## ----------------- ## +## Helper functions. ## +## ----------------- ## + +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + + +# func_help +# --------- +# Echo long help message to standard output and exit. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message" + exit 0 +} + + +# func_missing_arg ARGNAME +# ------------------------ +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $debug_cmd + + func_error "Missing argument for '$1'." + exit_cmd=exit +} + + +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables after +# splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + test "x$func_split_equals_lhs" = "x$1" \ + && func_split_equals_rhs= + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () +{ + $debug_cmd + + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} + + +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} + + +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /(C)/!b go + :more + /\./!{ + N + s|\n# | | + b more + } + :go + /^# Written by /,/# warranty; / { + s|^# || + s|^# *$|| + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + p + } + /^# Written by / { + s|^# || + p + } + /^warranty; /q' < "$progpath" + + exit $? +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: + +# Set a version string. +scriptversion='(GNU libtool) 2.4.6' + + +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () +{ + $debug_cmd + + $warning_func ${1+"$@"} +} + + +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --mode=MODE use operation mode MODE + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" + +# Additional text appended to 'usage_message' in response to '--help'. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname (GNU libtool) 2.4.6 + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} + + +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi + + +# func_fatal_configuration ARG... +# ------------------------------- +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func__fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." +} + + +# func_config +# ----------- +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + + +# func_features +# ------------- +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test yes = "$build_libtool_libs"; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test yes = "$build_old_libs"; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + + +# func_enable_tag TAGNAME +# ----------------------- +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname=$1 + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + + +# func_check_version_match +# ------------------------ +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_preserve_dup_deps=false + opt_quiet=false + + nonopt= + preserve_args= + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Pass back the list of options. + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result +} +func_add_hook func_options_prep libtool_options_prep + + +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () +{ + $debug_cmd + + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $_G_opt" + exit_cmd=exit + break + ;; + esac + shift + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; + + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result +} +func_add_hook func_parse_options libtool_parse_options + + + +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift + fi + + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + + case $host in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } + + # Pass back the unparsed argument list + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result +} +func_add_hook func_validate_options libtool_validate_options + + +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift + + + +## ----------- ## +## Main. ## +## ----------- ## + +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if 'file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case $lalib_p_line in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test yes = "$lalib_p" +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $debug_cmd + + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# 'FILE.' does not work on cygwin managed mounts. +func_source () +{ + $debug_cmd + + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case $lt_sysroot:$1 in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result='='$func_stripname_result + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $debug_cmd + + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with '--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' + else + write_lobj=none + fi + + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $debug_cmd + + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result= + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result"; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $debug_cmd + + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $debug_cmd + + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $debug_cmd + + if test -z "$2" && test -n "$1"; then + func_error "Could not determine host file name corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result=$1 + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $debug_cmd + + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " '$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result=$3 + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $debug_cmd + + case $4 in + $1 ) func_to_host_path_result=$3$func_to_host_path_result + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via '$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $debug_cmd + + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $debug_cmd + + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result=$1 +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result=$func_convert_core_msys_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via '$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $debug_cmd + + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd=func_convert_path_$func_stripname_result + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $debug_cmd + + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result=$1 +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_msys_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + +# func_mode_compile arg... +func_mode_compile () +{ + $debug_cmd + + # Get the compilation command and the source file. + base_compile= + srcfile=$nonopt # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg=$arg + arg_mode=normal + ;; + + target ) + libobj=$arg + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify '-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs=$IFS; IFS=, + for arg in $args; do + IFS=$save_ifs + func_append_quoted lastarg "$arg" + done + IFS=$save_ifs + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg=$srcfile + srcfile=$arg + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with '-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj=$func_basename_result + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from '$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name '$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test yes = "$build_old_libs"; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test yes = "$need_locks"; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test warn = "$need_locks"; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test yes = "$build_libtool_libs"; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test no != "$pic_mode"; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test yes = "$suppress_opt"; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test yes = "$compiler_c_o"; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test no != "$need_locks"; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a 'standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to '-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the '--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the 'install' or 'cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with '-') are ignored. + +Every other argument is treated as a filename. Files ending in '.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. + +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode '$opt_mode'" + ;; + esac + + echo + $ECHO "Try '$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test : = "$opt_help"; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + $SED '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $debug_cmd + + # The first argument is the command name. + cmd=$nonopt + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "'$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "'$file' was not linked with '-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir=$func_dirname_result + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir=$func_dirname_result + ;; + + *) + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir=$absdir + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic=$magic + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file=$progdir/$program + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file=$progdir/$program + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd=\$cmd$args + fi +} + +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $debug_cmd + + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "'$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument '$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and '=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_quiet && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the '$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the '$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the '$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $debug_cmd + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac + then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=false + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=: ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the '$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir=$func_dirname_result + destname=$func_basename_result + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "'$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "'$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir=$func_dirname_result + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking '$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname=$1 + shift + + srcname=$realname + test -n "$relink_command" && srcname=${realname}T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme=$stripme + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try 'ln -sf' first, because the 'ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib=$destdir/$realname + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name=$func_basename_result + instname=$dir/${name}i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest=$destfile + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to '$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test yes = "$build_old_libs"; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext= + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=.exe + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script '$wrapper'" + + finalize=: + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test no = "$fast_install" && test -n "$relink_command"; then + $opt_dry_run || { + if $finalize; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file=$func_basename_result + outputname=$tmpdir/$file + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_quiet || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink '$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file=$outputname + else + func_warning "cannot relink '$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name=$func_basename_result + + # Set up the ranlib parameters. + oldlib=$destdir/$name + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run '$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test install = "$opt_mode" && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms=${my_outputname}S.c + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist=$output_objdir/$my_outputname.nm + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* External symbol declarations for the compiler. */\ +" + + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols=$output_objdir/$outputname.exp + $opt_dry_run || { + $RM $export_symbols + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from '$dlprefile'" + func_basename "$dlprefile" + name=$func_basename_result + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename= + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname"; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename=$func_basename_result + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename"; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + $my_pic_p && pic_flag_for_symtable=" $pic_flag" + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' + + # Transform the symbol file into the correct name. + symfileobj=$output_objdir/${my_outputname}S.$objext + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for '$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $debug_cmd + + win32_libid_type=unknown + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s|.*|import| + p + q + } + }'` + ;; + esac + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $debug_cmd + + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $debug_cmd + + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1"; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result= + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test yes = "$lock_old_archive_extraction"; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $debug_cmd + + my_gentop=$1; shift + my_oldlibs=${1+"$@"} + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib=$func_basename_result + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" + cd "$darwin_curdir" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result=$my_oldobjs +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory where it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + func_quote "$ECHO" + qECHO=$func_quote_result + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test yes = "$fast_install"; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + \$ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* declarations of non-ANSI functions */ +#if defined __MINGW32__ +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined __CYGWIN__ +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined other_platform || defined ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined _MSC_VER +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +#elif defined __MINGW32__ +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined __CYGWIN__ +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined other platforms ... */ +#endif + +#if defined PATH_MAX +# define LT_PATHMAX PATH_MAX +#elif defined MAXPATHLEN +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free (stale); stale = 0; } \ +} while (0) + +#if defined LT_DEBUGWRAPPER +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + size_t tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined HAVE_DOS_BASED_FILE_SYSTEM + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined HAVE_DOS_BASED_FILE_SYSTEM + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = (size_t) (q - p); + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (STREQ (str, pat)) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + size_t len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + size_t orig_value_len = strlen (orig_value); + size_t add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[--len] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $debug_cmd + + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $debug_cmd + + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # what system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll that has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + os2dllname= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=false + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module=$wl-single_module + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg=$1 + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir=$arg + prev= + continue + ;; + dlfiles|dlprefiles) + $preload || { + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=: + } + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test no = "$dlself"; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test dlprefiles = "$prev"; then + dlself=yes + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test dlfiles = "$prev"; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols=$arg + test -f "$arg" \ + || func_fatal_error "symbol file '$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex=$arg + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + if test none != "$pic_object"; then + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + fi + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file '$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; + precious_regex) + precious_files_regex=$arg + prev= + continue + ;; + release) + release=-$arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test rpath = "$prev"; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds=$arg + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg=$arg + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "'-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test X-export-symbols = "X$arg"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between '-L' and '$1'" + else + func_fatal_error "need path for '-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test X-lc = "X$arg" || test X-lm = "X$arg"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test X-lc = "X$arg" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc due to us having libc/libc_r. + test X-lc = "X$arg" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test X-lc = "X$arg" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test X-lc = "X$arg" && continue + ;; + esac + elif test X-lc_r = "X$arg"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -mllvm) + prev=mllvm + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + + # As we are forced to pass -nostdlib to g++ during linking, the option + # -pthread{,s} is not in effect; add the -lpthread to $deplist + # explicitly to link correctly. + if test "$tagname" = CXX -a x"$with_gcc" = xyes; then + case "$arg" in + -pthread*) func_append deplibs " -lpthread" ;; + esac + fi + + continue + ;; + + -multi_module) + single_module=$wl-multi_module + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "'-no-install' is ignored for $host" + func_warning "assuming '-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -os2dllname) + prev=os2dllname + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # -fstack-protector* stack protector flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -specs=* GCC specs files + # -stdlib=* select c++ std lib with clang + # -fsanitize=* Clang/GCC memory and address sanitizer + # -fuse-ld=* Linker select flags for GCC + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ + -specs=*|-fsanitize=*|-fuse-ld=*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + -Z*) + if test os2 = "`expr $host : '.*\(os2\)'`"; then + # OS/2 uses -Zxxx to specify OS/2-specific options + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case $arg in + -Zlinker | -Zstack) + prev=xcompiler + ;; + esac + continue + else + # Otherwise treat like 'Some other compiler flag' below + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + fi + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + test none = "$pic_object" || { + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + } + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test dlfiles = "$prev"; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test dlprefiles = "$prev"; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the '$prevarg' option requires an argument" + + if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname=$func_basename_result + libobjs_save=$libobjs + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + # Definition is injected by LT_CONFIG during libtool generation. + func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" + + func_dirname "$output" "/" "" + output_objdir=$func_dirname_result$objdir + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test lib = "$linkmode"; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=false + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test lib,link = "$linkmode,$pass"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs=$tmp_deplibs + fi + + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass"; then + libs=$deplibs + deplibs= + fi + if test prog = "$linkmode"; then + case $pass in + dlopen) libs=$dlfiles ;; + dlpreopen) libs=$dlprefiles ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test lib,dlpreopen = "$linkmode,$pass"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs=$dlprefiles + fi + if test dlopen = "$pass"; then + # Collect dlpreopened libraries + save_deplibs=$deplibs + deplibs= + fi + + for deplib in $libs; do + lib= + found=false + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test lib != "$linkmode" && test prog != "$linkmode"; then + func_warning "'-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test lib = "$linkmode"; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib=$searchdir/lib$name$search_ext + if test -f "$lib"; then + if test .la = "$search_ext"; then + found=: + else + found=false + fi + break 2 + fi + done + done + if $found; then + # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll=$l + done + if test "X$ll" = "X$old_library"; then # only static version available + found=false + func_dirname "$lib" "" "." + ladir=$func_dirname_result + lib=$ladir/$old_library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + else + # deplib doesn't seem to be a libtool library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + ;; # -l + *.ltframework) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test conv = "$pass" && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + if test scan = "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "'-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test link = "$pass"; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=false + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=: + fi + ;; + pass_all) + valid_a_lib=: + ;; + esac + if $valid_a_lib; then + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + else + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + fi + ;; + esac + continue + ;; + prog) + if test link != "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + elif test prog = "$linkmode"; then + if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=: + continue + ;; + esac # case $deplib + + $found || test -f "$lib" \ + || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "'$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir=$func_dirname_result + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass" || + { test prog != "$linkmode" && test lib != "$linkmode"; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test conv = "$pass"; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + elif test prog != "$linkmode" && test lib != "$linkmode"; then + func_fatal_error "'$lib' is not a convenience library" + fi + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test yes = "$prefer_static_libs" || + test built,no = "$prefer_static_libs,$installed"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib=$l + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + + # This library was specified with -dlopen. + if test dlopen = "$pass"; then + test -z "$libdir" \ + && func_fatal_error "cannot -dlopen a convenience library: '$lib'" + if test -z "$dlname" || + test yes != "$dlopen_support" || + test no = "$build_libtool_libs" + then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of '$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir=$ladir + fi + ;; + esac + func_basename "$lib" + laname=$func_basename_result + + # Find the relevant object directory and library name. + if test yes = "$installed"; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library '$lib' was moved." + dir=$ladir + absdir=$abs_ladir + libdir=$abs_ladir + else + dir=$lt_sysroot$libdir + absdir=$lt_sysroot$libdir + fi + test yes = "$hardcode_automatic" && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir=$ladir + absdir=$abs_ladir + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir=$ladir/$objdir + absdir=$abs_ladir/$objdir + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test dlpreopen = "$pass"; then + if test -z "$libdir" && test prog = "$linkmode"; then + func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" + fi + case $host in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test lib = "$linkmode"; then + deplibs="$dir/$old_library $deplibs" + elif test prog,link = "$linkmode,$pass"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test prog = "$linkmode" && test link != "$pass"; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=false + if test no != "$link_all_deplibs" || test -z "$library_names" || + test no = "$build_libtool_libs"; then + linkalldeplibs=: + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if $linkalldeplibs; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test prog,link = "$linkmode,$pass"; then + if test -n "$library_names" && + { { test no = "$prefer_static_libs" || + test built,yes = "$prefer_static_libs,$installed"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then + # Make sure the rpath contains only unique directories. + case $temp_rpath: in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if $alldeplibs && + { test pass_all = "$deplibs_check_method" || + { test yes = "$build_libtool_libs" && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test built = "$use_static_libs" && test yes = "$installed"; then + use_static_libs=no + fi + if test -n "$library_names" && + { test no = "$use_static_libs" || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc* | *os2*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test no = "$installed"; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule= + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule=$dlpremoduletest + break + fi + done + if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then + echo + if test prog = "$linkmode"; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test lib = "$linkmode" && + test yes = "$hardcode_into_libs"; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname=$1 + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname=$dlname + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc* | *os2*) + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + esac + eval soname=\"$soname_spec\" + else + soname=$realname + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot=$soname + func_basename "$soroot" + soname=$func_basename_result + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from '$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for '$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test prog = "$linkmode" || test relink != "$opt_mode"; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test no = "$hardcode_direct"; then + add=$dir/$linklib + case $host in + *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; + *-*-sysv4*uw2*) add_dir=-L$dir ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir=-L$dir ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we cannot + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library"; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add=$dir/$old_library + fi + elif test -n "$old_library"; then + add=$dir/$old_library + fi + fi + esac + elif test no = "$hardcode_minus_L"; then + case $host in + *-*-sunos*) add_shlibpath=$dir ;; + esac + add_dir=-L$dir + add=-l$name + elif test no = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + relink) + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$dir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$absdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test yes != "$lib_linked"; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test prog = "$linkmode"; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test yes != "$hardcode_direct" && + test yes != "$hardcode_minus_L" && + test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test prog = "$linkmode" || test relink = "$opt_mode"; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$libdir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$libdir + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add=-l$name + elif test yes = "$hardcode_automatic"; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib"; then + add=$inst_prefix_dir$libdir/$linklib + else + add=$libdir/$linklib + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir=-L$libdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + fi + + if test prog = "$linkmode"; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test prog = "$linkmode"; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test unsupported != "$hardcode_direct"; then + test -n "$old_library" && linklib=$old_library + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test yes = "$build_libtool_libs"; then + # Not a shared library + if test pass_all != "$deplibs_check_method"; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system cannot link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test yes = "$module"; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test lib = "$linkmode"; then + if test -n "$dependency_libs" && + { test yes != "$hardcode_into_libs" || + test yes = "$build_old_libs" || + test yes = "$link_static"; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs=$temp_deplibs + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test no != "$link_all_deplibs"; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path=$deplib ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of '$dir'" + absdir=$dir + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names"; then + for tmp in $deplibrary_names; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl"; then + depdepl=$absdir/$objdir/$depdepl + darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" + func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" + path= + fi + fi + ;; + *) + path=-L$absdir/$objdir + ;; + esac + else + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "'$deplib' seems to be moved" + + path=-L$absdir + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test link = "$pass"; then + if test prog = "$linkmode"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs=$newdependency_libs + if test dlpreopen = "$pass"; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test dlopen != "$pass"; then + test conv = "$pass" || { + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + } + + if test prog,link = "$linkmode,$pass"; then + vars="compile_deplibs finalize_deplibs" + else + vars=deplibs + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + + # Add Sun CC postdeps if required: + test CXX = "$tagname" && { + case $host_os in + linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C++ 5.9 + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + + solaris*) + func_cc_basename "$CC" + case $func_cc_basename_result in + CC* | sunCC*) + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + esac + } + + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i= + ;; + esac + if test -n "$i"; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test prog = "$linkmode"; then + dlfiles=$newdlfiles + fi + if test prog = "$linkmode" || test lib = "$linkmode"; then + dlprefiles=$newdlprefiles + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "'-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "'-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs=$output + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form 'libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test no = "$module" \ + && func_fatal_help "libtool library '$output' must begin with 'lib'" + + if test no != "$need_lib_prefix"; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test pass_all != "$deplibs_check_method"; then + func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test no = "$dlself" \ + || func_warning "'-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test 1 -lt "$#" \ + && func_warning "ignoring multiple '-rpath's for a libtool library" + + install_libdir=$1 + + oldlibs= + if test -z "$rpath"; then + if test yes = "$build_libtool_libs"; then + # Building a libtool convenience library. + # Some compilers have problems with a '.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "'-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs=$IFS; IFS=: + set dummy $vinfo 0 0 0 + shift + IFS=$save_ifs + + test -n "$7" && \ + func_fatal_help "too many parameters to '-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major=$1 + number_minor=$2 + number_revision=$3 + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # that has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|freebsd-elf|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_revision + ;; + freebsd-aout|qnx|sunos) + current=$number_major + revision=$number_minor + age=0 + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_minor + lt_irix_increment=no + ;; + esac + ;; + no) + current=$1 + revision=$2 + age=$3 + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT '$current' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION '$revision' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE '$age' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE '$age' is greater than the current interface number '$current'" + func_fatal_error "'$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + # On Darwin other compilers + case $CC in + nagfor*) + verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + ;; + *) + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + esac + ;; + + freebsd-aout) + major=.$current + versuffix=.$current.$revision + ;; + + freebsd-elf) + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + irix | nonstopux) + if test no = "$lt_irix_increment"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring=$verstring_prefix$major.$revision + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test 0 -ne "$loop"; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring_prefix$major.$iface:$verstring + done + + # Before this point, $major must not contain '.'. + major=.$major + versuffix=$major.$revision + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=.$current.$age.$revision + verstring=$current.$age.$revision + + # Add in all the interfaces that we are compatible with. + loop=$age + while test 0 -ne "$loop"; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring:$iface.0 + done + + # Make executables depend on our current version. + func_append verstring ":$current.0" + ;; + + qnx) + major=.$current + versuffix=.$current + ;; + + sco) + major=.$current + versuffix=.$current + ;; + + sunos) + major=.$current + versuffix=.$current.$revision + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 file systems. + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + + *) + func_fatal_configuration "unknown library version type '$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring=0.0 + ;; + esac + if test no = "$need_version"; then + versuffix= + else + versuffix=.0.0 + fi + fi + + # Remove version info from name if versioning should be avoided + if test yes,no = "$avoid_version,$need_version"; then + major= + versuffix= + verstring= + fi + + # Check to see if the archive will have undefined symbols. + if test yes = "$allow_undefined"; then + if test unsupported = "$allow_undefined_flag"; then + if test yes = "$build_old_libs"; then + func_warning "undefined symbols not allowed in $host shared libraries; building static only" + build_libtool_libs=no + else + func_fatal_error "can't build $host shared library unless -no-undefined is specified" + fi + fi + else + # Don't allow undefined symbols. + allow_undefined_flag=$no_undefined_flag + fi + + fi + + func_generate_dlsyms "$libname" "$libname" : + func_append libobjs " $symfileobj" + test " " = "$libobjs" && libobjs= + + if test relink != "$opt_mode"; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) + if test -n "$precious_files_regex"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles=$dlfiles + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles=$dlprefiles + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test yes = "$build_libtool_libs"; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test yes = "$build_libtool_need_lc"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release= + versuffix= + major= + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib=$potent_lib + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | $SED 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; + *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib= + ;; + esac + fi + if test -n "$a_deplib"; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib=$potent_lib # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs= + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + for i in $predeps $postdeps; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test none = "$deplibs_check_method"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test yes = "$droppeddeps"; then + if test yes = "$module"; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test no = "$allow_undefined"; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs=$new_libs + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test yes = "$build_libtool_libs"; then + # Remove $wl instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test yes = "$hardcode_into_libs"; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath=$finalize_rpath + test relink = "$opt_mode" || rpath=$compile_rpath$rpath + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath=$finalize_shlibpath + test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname=$1 + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname=$realname + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib=$output_objdir/$realname + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols=$output_objdir/$libname.uexp + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + func_dll_def_p "$export_symbols" || { + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols=$export_symbols + export_symbols= + always_export_symbols=yes + } + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs=$IFS; IFS='~' + for cmd1 in $cmds; do + IFS=$save_ifs + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test yes = "$try_normal_branch" \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=$output_objdir/$output_la.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS=$save_ifs + if test -n "$export_symbols_regex" && test : != "$skipped_export"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test : != "$skipped_export" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs=$tmp_deplibs + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test yes = "$compiler_needs_object" && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test : != "$skipped_export" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then + output=$output_objdir/$output_la.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then + output=$output_objdir/$output_la.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test yes = "$compiler_needs_object"; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-$k.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test -z "$objlist" || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test 1 -eq "$k"; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-$k.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-$k.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + ${skipped_export-false} && { + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + } + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs=$IFS; IFS='~' + for cmd in $concat_cmds; do + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + ${skipped_export-false} && { + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + } + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs=$IFS; IFS='~' + for cmd in $cmds; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test yes = "$module" || test yes = "$export_dynamic"; then + # On all known operating systems, these are identical. + dlname=$soname + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "'-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object '$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj=$output + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # if reload_cmds runs $LD directly, get rid of -Wl from + # whole_archive_flag_spec and hope we can get by with turning comma + # into space. + case $reload_cmds in + *\$LD[\ \$]*) wl= ;; + esac + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags + else + gentop=$output_objdir/${obj}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test yes = "$build_libtool_libs" || libobjs=$non_pic_objects + + # Create the old-style object. + reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs + + output=$obj + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + test yes = "$build_libtool_libs" || { + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + } + + if test -n "$pic_flag" || test default != "$pic_mode"; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output=$libobj + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "'-release' is ignored for programs" + + $preload \ + && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ + && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test CXX = "$tagname"; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " $wl-bind_at_load" + func_append finalize_command " $wl-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs=$new_libs + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath=$rpath + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath=$rpath + + if test -n "$libobjs" && test yes = "$build_old_libs"; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" false + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=: + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=false + ;; + *cygwin* | *mingw* ) + test yes = "$build_libtool_libs" || wrappers_required=false + ;; + *) + if test no = "$need_relink" || test yes != "$build_libtool_libs"; then + wrappers_required=false + fi + ;; + esac + $wrappers_required || { + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command=$compile_command$compile_rpath + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.$objext"; then + func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' + fi + + exit $exit_status + } + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test yes = "$no_install"; then + # We don't need to create a wrapper script. + link_command=$compile_var$compile_command$compile_rpath + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + case $hardcode_action,$fast_install in + relink,*) + # Fast installation is not supported + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "'$output' will be relinked during installation" + ;; + *,yes) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + ;; + *,no) + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + ;; + *,needless) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command= + ;; + esac + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + func_quote "(cd `pwd`; $relink_command)" + relink_command=$func_quote_result + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource=$output_path/$objdir/lt-$output_name.c + cwrapper=$output_path/$output_name.exe + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host"; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + case $build_libtool_libs in + convenience) + oldobjs="$libobjs_save $symfileobj" + addlibs=$convenience + build_libtool_libs=no + ;; + module) + oldobjs=$libobjs_save + addlibs=$old_convenience + build_libtool_libs=no + ;; + *) + oldobjs="$old_deplibs $non_pic_objects" + $preload && test -f "$symfileobj" \ + && func_append oldobjs " $symfileobj" + addlibs=$old_convenience + ;; + esac + + if test -n "$addlibs"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase=$func_basename_result + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj"; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test -z "$oldobjs"; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test yes = "$build_old_libs" && old_library=$libname.$libext + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + func_quote "$relink_command" + relink_command=$func_quote_result + if test yes = "$hardcode_automatic"; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test yes = "$installed"; then + if test -z "$install_libdir"; then + break + fi + output=$output_objdir/${outputname}i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name=$func_basename_result + func_resolve_sysroot "$deplib" + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs=$newdependency_libs + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles=$newdlprefiles + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles=$newdlprefiles + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test -n "$bindir"; then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result/$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test no,yes = "$installed,$need_relink"; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +if test link = "$opt_mode" || test relink = "$opt_mode"; then + func_mode_link ${1+"$@"} +fi + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $debug_cmd + + RM=$nonopt + files= + rmforce=false + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=: ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir=$func_dirname_result + if test . = "$dir"; then + odir=$objdir + else + odir=$dir/$objdir + fi + func_basename "$file" + name=$func_basename_result + test uninstall = "$opt_mode" && odir=$dir + + # Remember odir for removal later, being careful to avoid duplicates + if test clean = "$opt_mode"; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif $rmforce; then + continue + fi + + rmfiles=$file + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case $opt_mode in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && test none != "$pic_object"; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && test none != "$non_pic_object"; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test clean = "$opt_mode"; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.$objext" + if test yes = "$fast_install" && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name"; then + func_append rmfiles " $odir/lt-$noexename.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the $objdir's in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then + func_mode_uninstall ${1+"$@"} +fi + +test -z "$opt_mode" && { + help=$generic_help + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode '$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# where we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/3rdparty/expat/conftools/missing b/3rdparty/expat/conftools/missing new file mode 100755 index 0000000..8d0eaad --- /dev/null +++ b/3rdparty/expat/conftools/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=https://www.perl.org/ +flex_URL=https://github.com/westes/flex +gnu_software_URL=https://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/3rdparty/expat/conftools/test-driver b/3rdparty/expat/conftools/test-driver new file mode 100755 index 0000000..89dba1e --- /dev/null +++ b/3rdparty/expat/conftools/test-driver @@ -0,0 +1,148 @@ +#! /bin/sh +# test-driver - basic testsuite driver script. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 2011-2020 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +# Make unconditional expansion of undefined variables an error. This +# helps a lot in preventing typo-related bugs. +set -u + +usage_error () +{ + echo "$0: $*" >&2 + print_usage >&2 + exit 2 +} + +print_usage () +{ + cat <$log_file 2>&1 +estatus=$? + +if test $enable_hard_errors = no && test $estatus -eq 99; then + tweaked_estatus=1 +else + tweaked_estatus=$estatus +fi + +case $tweaked_estatus:$expect_failure in + 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; + 0:*) col=$grn res=PASS recheck=no gcopy=no;; + 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; + 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; + *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; + *:*) col=$red res=FAIL recheck=yes gcopy=yes;; +esac + +# Report the test outcome and exit status in the logs, so that one can +# know whether the test passed or failed simply by looking at the '.log' +# file, without the need of also peaking into the corresponding '.trs' +# file (automake bug#11814). +echo "$res $test_name (exit status: $estatus)" >>$log_file + +# Report outcome to console. +echo "${col}${res}${std}: $test_name" + +# Register the test result, and other relevant metadata. +echo ":test-result: $res" > $trs_file +echo ":global-test-result: $res" >> $trs_file +echo ":recheck: $recheck" >> $trs_file +echo ":copy-in-global-log: $gcopy" >> $trs_file + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/3rdparty/expat/doc/Makefile.am b/3rdparty/expat/doc/Makefile.am new file mode 100644 index 0000000..e2f0298 --- /dev/null +++ b/3rdparty/expat/doc/Makefile.am @@ -0,0 +1,59 @@ +# +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +.PHONY: dist-hook # not inside conditional to avoid automake warning + +if WITH_DOCBOOK +dist_man_MANS = xmlwf.1 + +xmlwf.1: xmlwf.xml + -rm -f $@ + $(DOCBOOK_TO_MAN) $< + test -f $@ || mv XMLWF.1 $@ +else +dist-hook: + @echo 'ERROR: Configure with --with-docbook for "make dist".' 1>&2 + @false +endif + +# https://www.gnu.org/software/automake/manual/automake.html#What-Gets-Cleaned +.PHONY: clean-local +clean-local: clean-local-check + +.PHONY: clean-local-check +clean-local-check: + $(RM) xmlwf.1 + +EXTRA_DIST = \ + expat.png \ + reference.html \ + style.css \ + valid-xhtml10.png \ + xmlwf.xml diff --git a/3rdparty/expat/doc/Makefile.in b/3rdparty/expat/doc/Makefile.in new file mode 100644 index 0000000..94550be --- /dev/null +++ b/3rdparty/expat/doc/Makefile.in @@ -0,0 +1,602 @@ +# Makefile.in generated by automake 1.16.2 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2020 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/conftools/ax-require-defined.m4 \ + $(top_srcdir)/conftools/ax-check-compile-flag.m4 \ + $(top_srcdir)/conftools/ax-check-link-flag.m4 \ + $(top_srcdir)/conftools/ax-append-flag.m4 \ + $(top_srcdir)/conftools/ax-append-compile-flags.m4 \ + $(top_srcdir)/conftools/ax-append-link-flags.m4 \ + $(top_srcdir)/conftools/expatcfg-compiler-supports-visibility.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/expat_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" +NROFF = nroff +MANS = $(dist_man_MANS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILEMAP = @FILEMAP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBAGE = @LIBAGE@ +LIBCURRENT = @LIBCURRENT@ +LIBOBJS = @LIBOBJS@ +LIBREVISION = @LIBREVISION@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +_EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +@WITH_DOCBOOK_TRUE@dist_man_MANS = xmlwf.1 +EXTRA_DIST = \ + expat.png \ + reference.html \ + style.css \ + valid-xhtml10.png \ + xmlwf.xml + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man1: $(dist_man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(dist_man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + +@WITH_DOCBOOK_TRUE@dist-hook: + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am +check: check-am +all-am: Makefile $(MANS) +installdirs: + for dir in "$(DESTDIR)$(man1dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-man + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + clean-local cscopelist-am ctags-am dist-hook distclean \ + distclean-generic distclean-libtool distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-man1 install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-man uninstall-man1 + +.PRECIOUS: Makefile + + +.PHONY: dist-hook # not inside conditional to avoid automake warning + +@WITH_DOCBOOK_TRUE@xmlwf.1: xmlwf.xml +@WITH_DOCBOOK_TRUE@ -rm -f $@ +@WITH_DOCBOOK_TRUE@ $(DOCBOOK_TO_MAN) $< +@WITH_DOCBOOK_TRUE@ test -f $@ || mv XMLWF.1 $@ +@WITH_DOCBOOK_FALSE@dist-hook: +@WITH_DOCBOOK_FALSE@ @echo 'ERROR: Configure with --with-docbook for "make dist".' 1>&2 +@WITH_DOCBOOK_FALSE@ @false + +# https://www.gnu.org/software/automake/manual/automake.html#What-Gets-Cleaned +.PHONY: clean-local +clean-local: clean-local-check + +.PHONY: clean-local-check +clean-local-check: + $(RM) xmlwf.1 + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/3rdparty/expat/doc/expat.png b/3rdparty/expat/doc/expat.png new file mode 100644 index 0000000000000000000000000000000000000000..7d7c3dbaebcbacccbf8f2cc7fa900ebd6fc0eab2 GIT binary patch literal 920 zcmV;J184k+P)--e8A4h+iU`?VXFn!uvUSU1_h)k)dJbHP#~S9vOpSIo&UCT+}-DnF_UCAzt#)@VIE(`HqD0q*l%{e^{$xJVV4|~gkUl|kjxkhvq{|LMiaa~a7 z&eK>EAV_*@A}uU@#^yf%FK?Zy{og|8n3JsST1-!3gA<8SeC`u45D&M2vEs)gx5pUG z^7y+5cqO+XKpck7p-=ly4hKz+@ADrQV2}&&4zBb}(cu`4fn30t+f98@d`3G}CS;|u z0-SaIl%FI&gwOmLPW-9(Oi1yMvC>V1QI3D(>I{+ao6g{xe;3<+hQH)fr(T{9+jo3D z+8af*WS0M#4$JT-&}WPz=tp=A;OkKjHxpVi!}r;IS$?R1ZzS1#fxo-8sE_uh$xhYv zok^1cL*Xm?P`bR@pw2-dpteUG>I?^06ZN ziUG&$uXFePov>o%$D6E<4A#)DL(80poCW4fzP)EC2E^KOB^(=>g$V=s2A3VrQXTT! z(q3G4*Bud^lo!ckAB-4*eu%j&A4B2uNx7yh)JMoRMsjq{SycMxPCjewuYi}- + + + + + Expat XML Parser + + + + + + + + + + + + + + +
(Expat logo)
Release 2.0.1
+
+ +

Expat is a library, written in C, for parsing XML documents. It's +the underlying XML parser for the open source Mozilla project, Perl's +XML::Parser, Python's xml.parsers.expat, and +other open-source XML parsers.

+ +

This library is the creation of James Clark, who's also given us +groff (an nroff look-alike), Jade (an implementation of ISO's DSSSL +stylesheet language for SGML), XP (a Java XML parser package), XT (a +Java XSL engine). James was also the technical lead on the XML +Working Group at W3C that produced the XML specification.

+ +

This is free software, licensed under the MIT/X Consortium license. You may download it +from the Expat home page. +

+ +

The bulk of this document was originally commissioned as an article +by XML.com. They graciously allowed +Clark Cooper to retain copyright and to distribute it with Expat. +This version has been substantially extended to include documentation +on features which have been added since the original article was +published, and additional information on using the original +interface.

+ +
+

Table of Contents

+ + +
+

Overview

+ +

Expat is a stream-oriented parser. You register callback (or +handler) functions with the parser and then start feeding it the +document. As the parser recognizes parts of the document, it will +call the appropriate handler for that part (if you've registered one.) +The document is fed to the parser in pieces, so you can start parsing +before you have all the document. This also allows you to parse really +huge documents that won't fit into memory.

+ +

Expat can be intimidating due to the many kinds of handlers and +options you can set. But you only need to learn four functions in +order to do 90% of what you'll want to do with it:

+ +
+ +
XML_ParserCreate
+
Create a new parser object.
+ +
XML_SetElementHandler
+
Set handlers for start and end tags.
+ +
XML_SetCharacterDataHandler
+
Set handler for text.
+ +
XML_Parse
+
Pass a buffer full of document to the parser
+
+ +

These functions and others are described in the reference part of this document. The reference +section also describes in detail the parameters passed to the +different types of handlers.

+ +

Let's look at a very simple example program that only uses 3 of the +above functions (it doesn't need to set a character handler.) The +program outline.c prints an +element outline, indenting child elements to distinguish them from the +parent element that contains them. The start handler does all the +work. It prints two indenting spaces for every level of ancestor +elements, then it prints the element and attribute +information. Finally it increments the global Depth +variable.

+ +
+int Depth;
+
+void XMLCALL
+start(void *data, const char *el, const char **attr) {
+  int i;
+
+  for (i = 0; i < Depth; i++)
+    printf("  ");
+
+  printf("%s", el);
+
+  for (i = 0; attr[i]; i += 2) {
+    printf(" %s='%s'", attr[i], attr[i + 1]);
+  }
+
+  printf("\n");
+  Depth++;
+}  /* End of start handler */
+
+ +

The end tag simply does the bookkeeping work of decrementing +Depth.

+
+void XMLCALL
+end(void *data, const char *el) {
+  Depth--;
+}  /* End of end handler */
+
+ +

Note the XMLCALL annotation used for the callbacks. +This is used to ensure that the Expat and the callbacks are using the +same calling convention in case the compiler options used for Expat +itself and the client code are different. Expat tries not to care +what the default calling convention is, though it may require that it +be compiled with a default convention of "cdecl" on some platforms. +For code which uses Expat, however, the calling convention is +specified by the XMLCALL annotation on most platforms; +callbacks should be defined using this annotation.

+ +

The XMLCALL annotation was added in Expat 1.95.7, but +existing working Expat applications don't need to add it (since they +are already using the "cdecl" calling convention, or they wouldn't be +working). The annotation is only needed if the default calling +convention may be something other than "cdecl". To use the annotation +safely with older versions of Expat, you can conditionally define it +after including Expat's header file:

+ +
+#include <expat.h>
+
+#ifndef XMLCALL
+#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__)
+#define XMLCALL __cdecl
+#elif defined(__GNUC__)
+#define XMLCALL __attribute__((cdecl))
+#else
+#define XMLCALL
+#endif
+#endif
+
+ +

After creating the parser, the main program just has the job of +shoveling the document to the parser so that it can do its work.

+ +
+

Building and Installing Expat

+ +

The Expat distribution comes as a compressed (with GNU gzip) tar +file. You may download the latest version from Source Forge. After +unpacking this, cd into the directory. Then follow either the Win32 +directions or Unix directions below.

+ +

Building under Win32

+ +

If you're using the GNU compiler under cygwin, follow the Unix +directions in the next section. Otherwise if you have Microsoft's +Developer Studio installed, +you can use CMake to generate a .sln file, e.g. + +cmake -G"Visual Studio 15 2017" -DCMAKE_BUILD_TYPE=RelWithDebInfo . +, and build Expat using msbuild /m expat.sln after.

+ +

Alternatively, you may download the Win32 binary package that +contains the "expat.h" include file and a pre-built DLL.

+ +

Building under Unix (or GNU)

+ +

First you'll need to run the configure shell script in order to +configure the Makefiles and headers for your system.

+ +

If you're happy with all the defaults that configure picks for you, +and you have permission on your system to install into /usr/local, you +can install Expat with this sequence of commands:

+ +
+./configure
+make
+make install
+
+ +

There are some options that you can provide to this script, but the +only one we'll mention here is the --prefix option. You +can find out all the options available by running configure with just +the --help option.

+ +

By default, the configure script sets things up so that the library +gets installed in /usr/local/lib and the associated +header file in /usr/local/include. But if you were to +give the option, --prefix=/home/me/mystuff, then the +library and header would get installed in +/home/me/mystuff/lib and +/home/me/mystuff/include respectively.

+ +

Configuring Expat Using the Pre-Processor

+ +

Expat's feature set can be configured using a small number of +pre-processor definitions. The definition of this symbols does not +affect the set of entry points for Expat, only the behavior of the API +and the definition of character types in the case of +XML_UNICODE_WCHAR_T. The symbols are:

+ +
+
XML_DTD
+
Include support for using and reporting DTD-based content. If +this is defined, default attribute values from an external DTD subset +are reported and attribute value normalization occurs based on the +type of attributes defined in the external subset. Without +this, Expat has a smaller memory footprint and can be faster, but will +not load external entities or process conditional sections. This does +not affect the set of functions available in the API.
+ +
XML_NS
+
When defined, support for the Namespaces in XML +specification is included.
+ +
XML_UNICODE
+
When defined, character data reported to the application is +encoded in UTF-16 using wide characters of the type +XML_Char. This is implied if +XML_UNICODE_WCHAR_T is defined.
+ +
XML_UNICODE_WCHAR_T
+
If defined, causes the XML_Char character type to be +defined using the wchar_t type; otherwise, unsigned +short is used. Defining this implies +XML_UNICODE.
+ +
XML_LARGE_SIZE
+
If defined, causes the XML_Size and XML_Index +integer types to be at least 64 bits in size. This is intended to support +processing of very large input streams, where the return values of +XML_GetCurrentByteIndex, +XML_GetCurrentLineNumber and +XML_GetCurrentColumnNumber +could overflow. It may not be supported by all compilers, and is turned +off by default.
+ +
XML_CONTEXT_BYTES
+
The number of input bytes of markup context which the parser will +ensure are available for reporting via XML_GetInputContext. This is +normally set to 1024, and must be set to a positive integer. If this +is not defined, the input context will not be available and XML_GetInputContext will +always report NULL. Without this, Expat has a smaller memory +footprint and can be faster.
+ +
XML_STATIC
+
On Windows, this should be set if Expat is going to be linked +statically with the code that calls it; this is required to get all +the right MSVC magic annotations correct. This is ignored on other +platforms.
+ +
XML_ATTR_INFO
+
If defined, makes the additional function XML_GetAttributeInfo available +for reporting attribute byte offsets.
+
+ +
+

Using Expat

+ +

Compiling and Linking Against Expat

+ +

Unless you installed Expat in a location not expected by your +compiler and linker, all you have to do to use Expat in your programs +is to include the Expat header (#include <expat.h>) +in your files that make calls to it and to tell the linker that it +needs to link against the Expat library. On Unix systems, this would +usually be done with the -lexpat argument. Otherwise, +you'll need to tell the compiler where to look for the Expat header +and the linker where to find the Expat library. You may also need to +take steps to tell the operating system where to find this library at +run time.

+ +

On a Unix-based system, here's what a Makefile might look like when +Expat is installed in a standard location:

+ +
+CC=cc
+LDFLAGS=
+LIBS= -lexpat
+xmlapp: xmlapp.o
+        $(CC) $(LDFLAGS) -o xmlapp xmlapp.o $(LIBS)
+
+ +

If you installed Expat in, say, /home/me/mystuff, then +the Makefile would look like this:

+ +
+CC=cc
+CFLAGS= -I/home/me/mystuff/include
+LDFLAGS=
+LIBS= -L/home/me/mystuff/lib -lexpat
+xmlapp: xmlapp.o
+        $(CC) $(LDFLAGS) -o xmlapp xmlapp.o $(LIBS)
+
+ +

You'd also have to set the environment variable +LD_LIBRARY_PATH to /home/me/mystuff/lib (or +to ${LD_LIBRARY_PATH}:/home/me/mystuff/lib if +LD_LIBRARY_PATH already has some directories in it) in order to run +your application.

+ +

Expat Basics

+ +

As we saw in the example in the overview, the first step in parsing +an XML document with Expat is to create a parser object. There are three functions in the Expat API for creating a +parser object. However, only two of these (XML_ParserCreate and XML_ParserCreateNS) can be used for +constructing a parser for a top-level document. The object returned +by these functions is an opaque pointer (i.e. "expat.h" declares it as +void *) to data with further internal structure. In order to free the +memory associated with this object you must call XML_ParserFree. Note that if you have +provided any user data that gets stored in the +parser, then your application is responsible for freeing it prior to +calling XML_ParserFree.

+ +

The objects returned by the parser creation functions are good for +parsing only one XML document or external parsed entity. If your +application needs to parse many XML documents, then it needs to create +a parser object for each one. The best way to deal with this is to +create a higher level object that contains all the default +initialization you want for your parser objects.

+ +

Walking through a document hierarchy with a stream oriented parser +will require a good stack mechanism in order to keep track of current +context. For instance, to answer the simple question, "What element +does this text belong to?" requires a stack, since the parser may have +descended into other elements that are children of the current one and +has encountered this text on the way out.

+ +

The things you're likely to want to keep on a stack are the +currently opened element and it's attributes. You push this +information onto the stack in the start handler and you pop it off in +the end handler.

+ +

For some tasks, it is sufficient to just keep information on what +the depth of the stack is (or would be if you had one.) The outline +program shown above presents one example. Another such task would be +skipping over a complete element. When you see the start tag for the +element you want to skip, you set a skip flag and record the depth at +which the element started. When the end tag handler encounters the +same depth, the skipped element has ended and the flag may be +cleared. If you follow the convention that the root element starts at +1, then you can use the same variable for skip flag and skip +depth.

+ +
+void
+init_info(Parseinfo *info) {
+  info->skip = 0;
+  info->depth = 1;
+  /* Other initializations here */
+}  /* End of init_info */
+
+void XMLCALL
+rawstart(void *data, const char *el, const char **attr) {
+  Parseinfo *inf = (Parseinfo *) data;
+
+  if (! inf->skip) {
+    if (should_skip(inf, el, attr)) {
+      inf->skip = inf->depth;
+    }
+    else
+      start(inf, el, attr);     /* This does rest of start handling */
+  }
+
+  inf->depth++;
+}  /* End of rawstart */
+
+void XMLCALL
+rawend(void *data, const char *el) {
+  Parseinfo *inf = (Parseinfo *) data;
+
+  inf->depth--;
+
+  if (! inf->skip)
+    end(inf, el);              /* This does rest of end handling */
+
+  if (inf->skip == inf->depth)
+    inf->skip = 0;
+}  /* End rawend */
+
+ +

Notice in the above example the difference in how depth is +manipulated in the start and end handlers. The end tag handler should +be the mirror image of the start tag handler. This is necessary to +properly model containment. Since, in the start tag handler, we +incremented depth after the main body of start tag code, then +in the end handler, we need to manipulate it before the main +body. If we'd decided to increment it first thing in the start +handler, then we'd have had to decrement it last thing in the end +handler.

+ +

Communicating between handlers

+ +

In order to be able to pass information between different handlers +without using globals, you'll need to define a data structure to hold +the shared variables. You can then tell Expat (with the XML_SetUserData function) to pass a +pointer to this structure to the handlers. This is the first +argument received by most handlers. In the reference section, an argument to a callback function is named +userData and have type void * if the user +data is passed; it will have the type XML_Parser if the +parser itself is passed. When the parser is passed, the user data may +be retrieved using XML_GetUserData.

+ +

One common case where multiple calls to a single handler may need +to communicate using an application data structure is the case when +content passed to the character data handler (set by XML_SetCharacterDataHandler) needs to be accumulated. A +common first-time mistake with any of the event-oriented interfaces to +an XML parser is to expect all the text contained in an element to be +reported by a single call to the character data handler. Expat, like +many other XML parsers, reports such data as a sequence of calls; +there's no way to know when the end of the sequence is reached until a +different callback is made. A buffer referenced by the user data +structure proves both an effective and convenient place to accumulate +character data.

+ + + + +

XML Version

+ +

Expat is an XML 1.0 parser, and as such never complains based on +the value of the version pseudo-attribute in the XML +declaration, if present.

+ +

If an application needs to check the version number (to support +alternate processing), it should use the XML_SetXmlDeclHandler function to +set a handler that uses the information in the XML declaration to +determine what to do. This example shows how to check that only a +version number of "1.0" is accepted:

+ +
+static int wrong_version;
+static XML_Parser parser;
+
+static void XMLCALL
+xmldecl_handler(void            *userData,
+                const XML_Char  *version,
+                const XML_Char  *encoding,
+                int              standalone)
+{
+  static const XML_Char Version_1_0[] = {'1', '.', '0', 0};
+
+  int i;
+
+  for (i = 0; i < (sizeof(Version_1_0) / sizeof(Version_1_0[0])); ++i) {
+    if (version[i] != Version_1_0[i]) {
+      wrong_version = 1;
+      /* also clear all other handlers: */
+      XML_SetCharacterDataHandler(parser, NULL);
+      ...
+      return;
+    }
+  }
+  ...
+}
+
+ +

Namespace Processing

+ +

When the parser is created using the XML_ParserCreateNS, function, Expat +performs namespace processing. Under namespace processing, Expat +consumes xmlns and xmlns:... attributes, +which declare namespaces for the scope of the element in which they +occur. This means that your start handler will not see these +attributes. Your application can still be informed of these +declarations by setting namespace declaration handlers with XML_SetNamespaceDeclHandler.

+ +

Element type and attribute names that belong to a given namespace +are passed to the appropriate handler in expanded form. By default +this expanded form is a concatenation of the namespace URI, the +separator character (which is the 2nd argument to XML_ParserCreateNS), and the local +name (i.e. the part after the colon). Names with undeclared prefixes +are not well-formed when namespace processing is enabled, and will +trigger an error. Unprefixed attribute names are never expanded, +and unprefixed element names are only expanded when they are in the +scope of a default namespace.

+ +

However if XML_SetReturnNSTriplet has been called with a non-zero +do_nst parameter, then the expanded form for names with +an explicit prefix is a concatenation of: URI, separator, local name, +separator, prefix.

+ +

You can set handlers for the start of a namespace declaration and +for the end of a scope of a declaration with the XML_SetNamespaceDeclHandler +function. The StartNamespaceDeclHandler is called prior to the start +tag handler and the EndNamespaceDeclHandler is called after the +corresponding end tag that ends the namespace's scope. The namespace +start handler gets passed the prefix and URI for the namespace. For a +default namespace declaration (xmlns='...'), the prefix will be null. +The URI will be null for the case where the default namespace is being +unset. The namespace end handler just gets the prefix for the closing +scope.

+ +

These handlers are called for each declaration. So if, for +instance, a start tag had three namespace declarations, then the +StartNamespaceDeclHandler would be called three times before the start +tag handler is called, once for each declaration.

+ +

Character Encodings

+ +

While XML is based on Unicode, and every XML processor is required +to recognized UTF-8 and UTF-16 (1 and 2 byte encodings of Unicode), +other encodings may be declared in XML documents or entities. For the +main document, an XML declaration may contain an encoding +declaration:

+
+<?xml version="1.0" encoding="ISO-8859-2"?>
+
+ +

External parsed entities may begin with a text declaration, which +looks like an XML declaration with just an encoding declaration:

+
+<?xml encoding="Big5"?>
+
+ +

With Expat, you may also specify an encoding at the time of +creating a parser. This is useful when the encoding information may +come from a source outside the document itself (like a higher level +protocol.)

+ +

There are four built-in encodings +in Expat:

+
    +
  • UTF-8
  • +
  • UTF-16
  • +
  • ISO-8859-1
  • +
  • US-ASCII
  • +
+ +

Anything else discovered in an encoding declaration or in the +protocol encoding specified in the parser constructor, triggers a call +to the UnknownEncodingHandler. This handler gets passed +the encoding name and a pointer to an XML_Encoding data +structure. Your handler must fill in this structure and return +XML_STATUS_OK if it knows how to deal with the +encoding. Otherwise the handler should return +XML_STATUS_ERROR. The handler also gets passed a pointer +to an optional application data structure that you may indicate when +you set the handler.

+ +

Expat places restrictions on character encodings that it can +support by filling in the XML_Encoding structure. +include file:

+
    +
  1. Every ASCII character that can appear in a well-formed XML document +must be represented by a single byte, and that byte must correspond to +it's ASCII encoding (except for the characters $@\^'{}~)
  2. +
  3. Characters must be encoded in 4 bytes or less.
  4. +
  5. All characters encoded must have Unicode scalar values less than or +equal to 65535 (0xFFFF)This does not apply to the built-in support +for UTF-16 and UTF-8
  6. +
  7. No character may be encoded by more that one distinct sequence of +bytes
  8. +
+ +

XML_Encoding contains an array of integers that +correspond to the 1st byte of an encoding sequence. If the value in +the array for a byte is zero or positive, then the byte is a single +byte encoding that encodes the Unicode scalar value contained in the +array. A -1 in this array indicates a malformed byte. If the value is +-2, -3, or -4, then the byte is the beginning of a 2, 3, or 4 byte +sequence respectively. Multi-byte sequences are sent to the convert +function pointed at in the XML_Encoding structure. This +function should return the Unicode scalar value for the sequence or -1 +if the sequence is malformed.

+ +

One pitfall that novice Expat users are likely to fall into is that +although Expat may accept input in various encodings, the strings that +it passes to the handlers are always encoded in UTF-8 or UTF-16 +(depending on how Expat was compiled). Your application is responsible +for any translation of these strings into other encodings.

+ +

Handling External Entity References

+ +

Expat does not read or parse external entities directly. Note that +any external DTD is a special case of an external entity. If you've +set no ExternalEntityRefHandler, then external entity +references are silently ignored. Otherwise, it calls your handler with +the information needed to read and parse the external entity.

+ +

Your handler isn't actually responsible for parsing the entity, but +it is responsible for creating a subsidiary parser with XML_ExternalEntityParserCreate that will do the job. This +returns an instance of XML_Parser that has handlers and +other data structures initialized from the parent parser. You may then +use XML_Parse or XML_ParseBuffer calls against this +parser. Since external entities my refer to other external entities, +your handler should be prepared to be called recursively.

+ +

Parsing DTDs

+ +

In order to parse parameter entities, before starting the parse, +you must call XML_SetParamEntityParsing with one of the following +arguments:

+
+
XML_PARAM_ENTITY_PARSING_NEVER
+
Don't parse parameter entities or the external subset
+
XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE
+
Parse parameter entities and the external subset unless +standalone was set to "yes" in the XML declaration.
+
XML_PARAM_ENTITY_PARSING_ALWAYS
+
Always parse parameter entities and the external subset
+
+ +

In order to read an external DTD, you also have to set an external +entity reference handler as described above.

+ +

Temporarily Stopping Parsing

+ +

Expat 1.95.8 introduces a new feature: its now possible to stop +parsing temporarily from within a handler function, even if more data +has already been passed into the parser. Applications for this +include

+ +
    +
  • Supporting the XInclude specification.
  • + +
  • Delaying further processing until additional information is + available from some other source.
  • + +
  • Adjusting processor load as task priorities shift within an + application.
  • + +
  • Stopping parsing completely (simply free or reset the parser + instead of resuming in the outer parsing loop). This can be useful + if an application-domain error is found in the XML being parsed or if + the result of the parse is determined not to be useful after + all.
  • +
+ +

To take advantage of this feature, the main parsing loop of an +application needs to support this specifically. It cannot be +supported with a parsing loop compatible with Expat 1.95.7 or +earlier (though existing loops will continue to work without +supporting the stop/resume feature).

+ +

An application that uses this feature for a single parser will have +the rough structure (in pseudo-code):

+ +
+fd = open_input()
+p = create_parser()
+
+if parse_xml(p, fd) {
+  /* suspended */
+
+  int suspended = 1;
+
+  while (suspended) {
+    do_something_else()
+    if ready_to_resume() {
+      suspended = continue_parsing(p, fd);
+    }
+  }
+}
+
+ +

An application that may resume any of several parsers based on +input (either from the XML being parsed or some other source) will +certainly have more interesting control structures.

+ +

This C function could be used for the parse_xml +function mentioned in the pseudo-code above:

+ +
+#define BUFF_SIZE 10240
+
+/* Parse a document from the open file descriptor 'fd' until the parse
+   is complete (the document has been completely parsed, or there's
+   been an error), or the parse is stopped.  Return non-zero when
+   the parse is merely suspended.
+*/
+int
+parse_xml(XML_Parser p, int fd)
+{
+  for (;;) {
+    int last_chunk;
+    int bytes_read;
+    enum XML_Status status;
+
+    void *buff = XML_GetBuffer(p, BUFF_SIZE);
+    if (buff == NULL) {
+      /* handle error... */
+      return 0;
+    }
+    bytes_read = read(fd, buff, BUFF_SIZE);
+    if (bytes_read < 0) {
+      /* handle error... */
+      return 0;
+    }
+    status = XML_ParseBuffer(p, bytes_read, bytes_read == 0);
+    switch (status) {
+      case XML_STATUS_ERROR:
+        /* handle error... */
+        return 0;
+      case XML_STATUS_SUSPENDED:
+        return 1;
+    }
+    if (bytes_read == 0)
+      return 0;
+  }
+}
+
+ +

The corresponding continue_parsing function is +somewhat simpler, since it only need deal with the return code from +XML_ResumeParser; it can +delegate the input handling to the parse_xml +function:

+ +
+/* Continue parsing a document which had been suspended.  The 'p' and
+   'fd' arguments are the same as passed to parse_xml().  Return
+   non-zero when the parse is suspended.
+*/
+int
+continue_parsing(XML_Parser p, int fd)
+{
+  enum XML_Status status = XML_ResumeParser(p);
+  switch (status) {
+    case XML_STATUS_ERROR:
+      /* handle error... */
+      return 0;
+    case XML_ERROR_NOT_SUSPENDED:
+      /* handle error... */
+      return 0;.
+    case XML_STATUS_SUSPENDED:
+      return 1;
+  }
+  return parse_xml(p, fd);
+}
+
+ +

Now that we've seen what a mess the top-level parsing loop can +become, what have we gained? Very simply, we can now use the XML_StopParser function to stop +parsing, without having to go to great lengths to avoid additional +processing that we're expecting to ignore. As a bonus, we get to stop +parsing temporarily, and come back to it when we're +ready.

+ +

To stop parsing from a handler function, use the XML_StopParser function. This function +takes two arguments; the parser being stopped and a flag indicating +whether the parse can be resumed in the future.

+ + + + +
+ + +

Expat Reference

+ +

Parser Creation

+ +
+XML_Parser XMLCALL
+XML_ParserCreate(const XML_Char *encoding);
+
+
+Construct a new parser. If encoding is non-null, it specifies a +character encoding to use for the document. This overrides the document +encoding declaration. There are four built-in encodings: +
    +
  • US-ASCII
  • +
  • UTF-8
  • +
  • UTF-16
  • +
  • ISO-8859-1
  • +
+Any other value will invoke a call to the UnknownEncodingHandler. +
+ +
+XML_Parser XMLCALL
+XML_ParserCreateNS(const XML_Char *encoding,
+                   XML_Char sep);
+
+
+Constructs a new parser that has namespace processing in effect. Namespace +expanded element names and attribute names are returned as a concatenation +of the namespace URI, sep, and the local part of the name. This +means that you should pick a character for sep that can't be part +of an URI. Since Expat does not check namespace URIs for conformance, the +only safe choice for a namespace separator is a character that is illegal +in XML. For instance, '\xFF' is not legal in UTF-8, and +'\xFFFF' is not legal in UTF-16. There is a special case when +sep is the null character '\0': the namespace URI and +the local part will be concatenated without any separator - this is intended +to support RDF processors. It is a programming error to use the null separator +with namespace triplets.
+ +
+XML_Parser XMLCALL
+XML_ParserCreate_MM(const XML_Char *encoding,
+                    const XML_Memory_Handling_Suite *ms,
+		    const XML_Char *sep);
+
+
+typedef struct {
+  void *(XMLCALL *malloc_fcn)(size_t size);
+  void *(XMLCALL *realloc_fcn)(void *ptr, size_t size);
+  void (XMLCALL *free_fcn)(void *ptr);
+} XML_Memory_Handling_Suite;
+
+
+

Construct a new parser using the suite of memory handling functions +specified in ms. If ms is NULL, then use the +standard set of memory management functions. If sep is +non NULL, then namespace processing is enabled in the created parser +and the character pointed at by sep is used as the separator between +the namespace URI and the local part of the name.

+
+ +
+XML_Parser XMLCALL
+XML_ExternalEntityParserCreate(XML_Parser p,
+                               const XML_Char *context,
+                               const XML_Char *encoding);
+
+
+Construct a new XML_Parser object for parsing an external +general entity. Context is the context argument passed in a call to a +ExternalEntityRefHandler. Other state information such as handlers, +user data, namespace processing is inherited from the parser passed as +the 1st argument. So you shouldn't need to call any of the behavior +changing functions on this parser (unless you want it to act +differently than the parent parser). +
+ +
+void XMLCALL
+XML_ParserFree(XML_Parser p);
+
+
+Free memory used by the parser. Your application is responsible for +freeing any memory associated with user data. +
+ +
+XML_Bool XMLCALL
+XML_ParserReset(XML_Parser p,
+                const XML_Char *encoding);
+
+
+Clean up the memory structures maintained by the parser so that it may +be used again. After this has been called, parser is +ready to start parsing a new document. All handlers are cleared from +the parser, except for the unknownEncodingHandler. The parser's external +state is re-initialized except for the values of ns and ns_triplets. +This function may not be used on a parser created using XML_ExternalEntityParserCreate; it will return XML_FALSE in that case. Returns +XML_TRUE on success. Your application is responsible for +dealing with any memory associated with user data. +
+ +

Parsing

+ +

To state the obvious: the three parsing functions XML_Parse, +XML_ParseBuffer and +XML_GetBuffer must not be called from within a handler +unless they operate on a separate parser instance, that is, one that +did not call the handler. For example, it is OK to call the parsing +functions from within an XML_ExternalEntityRefHandler, +if they apply to the parser created by +XML_ExternalEntityParserCreate.

+ +

Note: the len argument passed to these functions +should be considerably less than the maximum value for an integer, +as it could create an integer overflow situation if the added +lengths of a buffer and the unprocessed portion of the previous buffer +exceed the maximum integer value. Input data at the end of a buffer +will remain unprocessed if it is part of an XML token for which the +end is not part of that buffer.

+ +
+enum XML_Status XMLCALL
+XML_Parse(XML_Parser p,
+          const char *s,
+          int len,
+          int isFinal);
+
+
+enum XML_Status {
+  XML_STATUS_ERROR = 0,
+  XML_STATUS_OK = 1
+};
+
+
+Parse some more of the document. The string s is a buffer +containing part (or perhaps all) of the document. The number of bytes of s +that are part of the document is indicated by len. This means +that s doesn't have to be null terminated. It also means that +if len is larger than the number of bytes in the block of +memory that s points at, then a memory fault is likely. The +isFinal parameter informs the parser that this is the last +piece of the document. Frequently, the last piece is empty (i.e. +len is zero.) +If a parse error occurred, it returns XML_STATUS_ERROR. +Otherwise it returns XML_STATUS_OK value. +
+ +
+enum XML_Status XMLCALL
+XML_ParseBuffer(XML_Parser p,
+                int len,
+                int isFinal);
+
+
+This is just like XML_Parse, +except in this case Expat provides the buffer. By obtaining the +buffer from Expat with the XML_GetBuffer function, the application can avoid double +copying of the input. +
+ +
+void * XMLCALL
+XML_GetBuffer(XML_Parser p,
+              int len);
+
+
+Obtain a buffer of size len to read a piece of the document +into. A NULL value is returned if Expat can't allocate enough memory for +this buffer. This has to be called prior to every call to +XML_ParseBuffer. A +typical use would look like this: + +
+for (;;) {
+  int bytes_read;
+  void *buff = XML_GetBuffer(p, BUFF_SIZE);
+  if (buff == NULL) {
+    /* handle error */
+  }
+
+  bytes_read = read(docfd, buff, BUFF_SIZE);
+  if (bytes_read < 0) {
+    /* handle error */
+  }
+
+  if (! XML_ParseBuffer(p, bytes_read, bytes_read == 0)) {
+    /* handle parse error */
+  }
+
+  if (bytes_read == 0)
+    break;
+}
+
+
+ +
+enum XML_Status XMLCALL
+XML_StopParser(XML_Parser p,
+               XML_Bool resumable);
+
+
+ +

Stops parsing, causing XML_Parse or XML_ParseBuffer to return. Must be called from within a +call-back handler, except when aborting (when resumable +is XML_FALSE) an already suspended parser. Some +call-backs may still follow because they would otherwise get +lost, including +

    +
  • the end element handler for empty elements when stopped in the + start element handler,
  • +
  • the end namespace declaration handler when stopped in the end + element handler,
  • +
  • the character data handler when stopped in the character data handler + while making multiple call-backs on a contiguous chunk of characters,
  • +
+and possibly others.

+ +

This can be called from most handlers, including DTD related +call-backs, except when parsing an external parameter entity and +resumable is XML_TRUE. Returns +XML_STATUS_OK when successful, +XML_STATUS_ERROR otherwise. The possible error codes +are:

+
+
XML_ERROR_SUSPENDED
+
when suspending an already suspended parser.
+
XML_ERROR_FINISHED
+
when the parser has already finished.
+
XML_ERROR_SUSPEND_PE
+
when suspending while parsing an external PE.
+
+ +

Since the stop/resume feature requires application support in the +outer parsing loop, it is an error to call this function for a parser +not being handled appropriately; see Temporarily Stopping Parsing for more information.

+ +

When resumable is XML_TRUE then parsing +is suspended, that is, XML_Parse and XML_ParseBuffer return XML_STATUS_SUSPENDED. +Otherwise, parsing is aborted, that is, XML_Parse and XML_ParseBuffer return +XML_STATUS_ERROR with error code +XML_ERROR_ABORTED.

+ +

Note: +This will be applied to the current parser instance only, that is, if +there is a parent parser then it will continue parsing when the +external entity reference handler returns. It is up to the +implementation of that handler to call XML_StopParser on the parent parser +(recursively), if one wants to stop parsing altogether.

+ +

When suspended, parsing can be resumed by calling XML_ResumeParser.

+ +

New in Expat 1.95.8.

+
+ +
+enum XML_Status XMLCALL
+XML_ResumeParser(XML_Parser p);
+
+
+

Resumes parsing after it has been suspended with XML_StopParser. Must not be called from +within a handler call-back. Returns same status codes as XML_Parse or XML_ParseBuffer. An additional error +code, XML_ERROR_NOT_SUSPENDED, will be returned if the +parser was not currently suspended.

+ +

Note: +This must be called on the most deeply nested child parser instance +first, and on its parent parser only after the child parser has +finished, to be applied recursively until the document entity's parser +is restarted. That is, the parent parser will not resume by itself +and it is up to the application to call XML_ResumeParser on it at the +appropriate moment.

+ +

New in Expat 1.95.8.

+
+ +
+void XMLCALL
+XML_GetParsingStatus(XML_Parser p,
+                     XML_ParsingStatus *status);
+
+
+enum XML_Parsing {
+  XML_INITIALIZED,
+  XML_PARSING,
+  XML_FINISHED,
+  XML_SUSPENDED
+};
+
+typedef struct {
+  enum XML_Parsing parsing;
+  XML_Bool finalBuffer;
+} XML_ParsingStatus;
+
+
+

Returns status of parser with respect to being initialized, +parsing, finished, or suspended, and whether the final buffer is being +processed. The status parameter must not be +NULL.

+ +

New in Expat 1.95.8.

+
+ + +

Handler Setting

+ +

Although handlers are typically set prior to parsing and left alone, an +application may choose to set or change the handler for a parsing event +while the parse is in progress. For instance, your application may choose +to ignore all text not descended from a para element. One +way it could do this is to set the character handler when a para start tag +is seen, and unset it for the corresponding end tag.

+ +

A handler may be unset by providing a NULL pointer to the +appropriate handler setter. None of the handler setting functions have +a return value.

+ +

Your handlers will be receiving strings in arrays of type +XML_Char. This type is conditionally defined in expat.h as +either char, wchar_t or unsigned short. +The former implies UTF-8 encoding, the latter two imply UTF-16 encoding. +Note that you'll receive them in this form independent of the original +encoding of the document.

+ +
+
+void XMLCALL
+XML_SetStartElementHandler(XML_Parser p,
+                           XML_StartElementHandler start);
+
+
+typedef void
+(XMLCALL *XML_StartElementHandler)(void *userData,
+                                   const XML_Char *name,
+                                   const XML_Char **atts);
+
+

Set handler for start (and empty) tags. Attributes are passed to the start +handler as a pointer to a vector of char pointers. Each attribute seen in +a start (or empty) tag occupies 2 consecutive places in this vector: the +attribute name followed by the attribute value. These pairs are terminated +by a null pointer.

+

Note that an empty tag generates a call to both start and end handlers +(in that order).

+
+ +
+
+void XMLCALL
+XML_SetEndElementHandler(XML_Parser p,
+                         XML_EndElementHandler);
+
+
+typedef void
+(XMLCALL *XML_EndElementHandler)(void *userData,
+                                 const XML_Char *name);
+
+

Set handler for end (and empty) tags. As noted above, an empty tag +generates a call to both start and end handlers.

+
+ +
+
+void XMLCALL
+XML_SetElementHandler(XML_Parser p,
+                      XML_StartElementHandler start,
+                      XML_EndElementHandler end);
+
+

Set handlers for start and end tags with one call.

+
+ +
+
+void XMLCALL
+XML_SetCharacterDataHandler(XML_Parser p,
+                            XML_CharacterDataHandler charhndl)
+
+
+typedef void
+(XMLCALL *XML_CharacterDataHandler)(void *userData,
+                                    const XML_Char *s,
+                                    int len);
+
+

Set a text handler. The string your handler receives +is NOT null-terminated. You have to use the length argument +to deal with the end of the string. A single block of contiguous text +free of markup may still result in a sequence of calls to this handler. +In other words, if you're searching for a pattern in the text, it may +be split across calls to this handler. Note: Setting this handler to NULL +may NOT immediately terminate call-backs if the parser is currently +processing such a single block of contiguous markup-free text, as the parser +will continue calling back until the end of the block is reached.

+
+ +
+
+void XMLCALL
+XML_SetProcessingInstructionHandler(XML_Parser p,
+                                    XML_ProcessingInstructionHandler proc)
+
+
+typedef void
+(XMLCALL *XML_ProcessingInstructionHandler)(void *userData,
+                                            const XML_Char *target,
+                                            const XML_Char *data);
+
+
+

Set a handler for processing instructions. The target is the first word +in the processing instruction. The data is the rest of the characters in +it after skipping all whitespace after the initial word.

+
+ +
+
+void XMLCALL
+XML_SetCommentHandler(XML_Parser p,
+                      XML_CommentHandler cmnt)
+
+
+typedef void
+(XMLCALL *XML_CommentHandler)(void *userData,
+                              const XML_Char *data);
+
+

Set a handler for comments. The data is all text inside the comment +delimiters.

+
+ +
+
+void XMLCALL
+XML_SetStartCdataSectionHandler(XML_Parser p,
+                                XML_StartCdataSectionHandler start);
+
+
+typedef void
+(XMLCALL *XML_StartCdataSectionHandler)(void *userData);
+
+

Set a handler that gets called at the beginning of a CDATA section.

+
+ +
+
+void XMLCALL
+XML_SetEndCdataSectionHandler(XML_Parser p,
+                              XML_EndCdataSectionHandler end);
+
+
+typedef void
+(XMLCALL *XML_EndCdataSectionHandler)(void *userData);
+
+

Set a handler that gets called at the end of a CDATA section.

+
+ +
+
+void XMLCALL
+XML_SetCdataSectionHandler(XML_Parser p,
+                           XML_StartCdataSectionHandler start,
+                           XML_EndCdataSectionHandler end)
+
+

Sets both CDATA section handlers with one call.

+
+ +
+
+void XMLCALL
+XML_SetDefaultHandler(XML_Parser p,
+                      XML_DefaultHandler hndl)
+
+
+typedef void
+(XMLCALL *XML_DefaultHandler)(void *userData,
+                              const XML_Char *s,
+                              int len);
+
+ +

Sets a handler for any characters in the document which wouldn't +otherwise be handled. This includes both data for which no handlers +can be set (like some kinds of DTD declarations) and data which could +be reported but which currently has no handler set. The characters +are passed exactly as they were present in the XML document except +that they will be encoded in UTF-8 or UTF-16. Line boundaries are not +normalized. Note that a byte order mark character is not passed to the +default handler. There are no guarantees about how characters are +divided between calls to the default handler: for example, a comment +might be split between multiple calls. Setting the handler with +this call has the side effect of turning off expansion of references +to internally defined general entities. Instead these references are +passed to the default handler.

+ +

See also XML_DefaultCurrent.

+
+ +
+
+void XMLCALL
+XML_SetDefaultHandlerExpand(XML_Parser p,
+                            XML_DefaultHandler hndl)
+
+
+typedef void
+(XMLCALL *XML_DefaultHandler)(void *userData,
+                              const XML_Char *s,
+                              int len);
+
+

This sets a default handler, but doesn't inhibit the expansion of +internal entity references. The entity reference will not be passed +to the default handler.

+ +

See also XML_DefaultCurrent.

+
+ +
+
+void XMLCALL
+XML_SetExternalEntityRefHandler(XML_Parser p,
+                                XML_ExternalEntityRefHandler hndl)
+
+
+typedef int
+(XMLCALL *XML_ExternalEntityRefHandler)(XML_Parser p,
+                                        const XML_Char *context,
+                                        const XML_Char *base,
+                                        const XML_Char *systemId,
+                                        const XML_Char *publicId);
+
+

Set an external entity reference handler. This handler is also +called for processing an external DTD subset if parameter entity parsing +is in effect. (See +XML_SetParamEntityParsing.)

+ +

The context parameter specifies the parsing context in +the format expected by the context argument to XML_ExternalEntityParserCreate. code is +valid only until the handler returns, so if the referenced entity is +to be parsed later, it must be copied. context is NULL +only when the entity is a parameter entity, which is how one can +differentiate between general and parameter entities.

+ +

The base parameter is the base to use for relative +system identifiers. It is set by XML_SetBase and may be NULL. The +publicId parameter is the public id given in the entity +declaration and may be NULL. systemId is the system +identifier specified in the entity declaration and is never NULL.

+ +

There are a couple of ways in which this handler differs from +others. First, this handler returns a status indicator (an +integer). XML_STATUS_OK should be returned for successful +handling of the external entity reference. Returning +XML_STATUS_ERROR indicates failure, and causes the +calling parser to return an +XML_ERROR_EXTERNAL_ENTITY_HANDLING error.

+ +

Second, instead of having the user data as its first argument, it +receives the parser that encountered the entity reference. This, along +with the context parameter, may be used as arguments to a call to +XML_ExternalEntityParserCreate. Using the returned +parser, the body of the external entity can be recursively parsed.

+ +

Since this handler may be called recursively, it should not be saving +information into global or static variables.

+
+ +
+void XMLCALL
+XML_SetExternalEntityRefHandlerArg(XML_Parser p,
+                                   void *arg)
+
+
+

Set the argument passed to the ExternalEntityRefHandler. If +arg is not NULL, it is the new value passed to the +handler set using XML_SetExternalEntityRefHandler; if arg is +NULL, the argument passed to the handler function will be the parser +object itself.

+ +

Note: +The type of arg and the type of the first argument to the +ExternalEntityRefHandler do not match. This function takes a +void * to be passed to the handler, while the handler +accepts an XML_Parser. This is a historical accident, +but will not be corrected before Expat 2.0 (at the earliest) to avoid +causing compiler warnings for code that's known to work with this +API. It is the responsibility of the application code to know the +actual type of the argument passed to the handler and to manage it +properly.

+
+ +
+
+void XMLCALL
+XML_SetSkippedEntityHandler(XML_Parser p,
+                            XML_SkippedEntityHandler handler)
+
+
+typedef void
+(XMLCALL *XML_SkippedEntityHandler)(void *userData,
+                                    const XML_Char *entityName,
+                                    int is_parameter_entity);
+
+

Set a skipped entity handler. This is called in two situations:

+
    +
  1. An entity reference is encountered for which no declaration + has been read and this is not an error.
  2. +
  3. An internal entity reference is read, but not expanded, because + XML_SetDefaultHandler + has been called.
  4. +
+

The is_parameter_entity argument will be non-zero for +a parameter entity and zero for a general entity.

Note: skipped +parameter entities in declarations and skipped general entities in +attribute values cannot be reported, because the event would be out of +sync with the reporting of the declarations or attribute values

+
+ +
+
+void XMLCALL
+XML_SetUnknownEncodingHandler(XML_Parser p,
+                              XML_UnknownEncodingHandler enchandler,
+			      void *encodingHandlerData)
+
+
+typedef int
+(XMLCALL *XML_UnknownEncodingHandler)(void *encodingHandlerData,
+                                      const XML_Char *name,
+                                      XML_Encoding *info);
+
+typedef struct {
+  int map[256];
+  void *data;
+  int (XMLCALL *convert)(void *data, const char *s);
+  void (XMLCALL *release)(void *data);
+} XML_Encoding;
+
+

Set a handler to deal with encodings other than the built in set. This should be done before +XML_Parse or XML_ParseBuffer have been called on the +given parser.

If the handler knows how to deal with an encoding +with the given name, it should fill in the info data +structure and return XML_STATUS_OK. Otherwise it +should return XML_STATUS_ERROR. The handler will be called +at most once per parsed (external) entity. The optional application +data pointer encodingHandlerData will be passed back to +the handler.

+ +

The map array contains information for every possible leading +byte in a byte sequence. If the corresponding value is >= 0, then it's +a single byte sequence and the byte encodes that Unicode value. If the +value is -1, then that byte is invalid as the initial byte in a sequence. +If the value is -n, where n is an integer > 1, then n is the number of +bytes in the sequence and the actual conversion is accomplished by a +call to the function pointed at by convert. This function may return -1 +if the sequence itself is invalid. The convert pointer may be null if +there are only single byte codes. The data parameter passed to the convert +function is the data pointer from XML_Encoding. The +string s is NOT null-terminated and points at the sequence of +bytes to be converted.

+ +

The function pointed at by release is called by the +parser when it is finished with the encoding. It may be NULL.

+
+ +
+
+void XMLCALL
+XML_SetStartNamespaceDeclHandler(XML_Parser p,
+			         XML_StartNamespaceDeclHandler start);
+
+
+typedef void
+(XMLCALL *XML_StartNamespaceDeclHandler)(void *userData,
+                                         const XML_Char *prefix,
+                                         const XML_Char *uri);
+
+

Set a handler to be called when a namespace is declared. Namespace +declarations occur inside start tags. But the namespace declaration start +handler is called before the start tag handler for each namespace declared +in that start tag.

+
+ +
+
+void XMLCALL
+XML_SetEndNamespaceDeclHandler(XML_Parser p,
+			       XML_EndNamespaceDeclHandler end);
+
+
+typedef void
+(XMLCALL *XML_EndNamespaceDeclHandler)(void *userData,
+                                       const XML_Char *prefix);
+
+

Set a handler to be called when leaving the scope of a namespace +declaration. This will be called, for each namespace declaration, +after the handler for the end tag of the element in which the +namespace was declared.

+
+ +
+
+void XMLCALL
+XML_SetNamespaceDeclHandler(XML_Parser p,
+                            XML_StartNamespaceDeclHandler start,
+                            XML_EndNamespaceDeclHandler end)
+
+

Sets both namespace declaration handlers with a single call.

+
+ +
+
+void XMLCALL
+XML_SetXmlDeclHandler(XML_Parser p,
+		      XML_XmlDeclHandler xmldecl);
+
+
+typedef void
+(XMLCALL *XML_XmlDeclHandler)(void            *userData,
+                              const XML_Char  *version,
+                              const XML_Char  *encoding,
+                              int             standalone);
+
+

Sets a handler that is called for XML declarations and also for +text declarations discovered in external entities. The way to +distinguish is that the version parameter will be NULL +for text declarations. The encoding parameter may be NULL +for an XML declaration. The standalone argument will +contain -1, 0, or 1 indicating respectively that there was no +standalone parameter in the declaration, that it was given as no, or +that it was given as yes.

+
+ +
+
+void XMLCALL
+XML_SetStartDoctypeDeclHandler(XML_Parser p,
+			       XML_StartDoctypeDeclHandler start);
+
+
+typedef void
+(XMLCALL *XML_StartDoctypeDeclHandler)(void           *userData,
+                                       const XML_Char *doctypeName,
+                                       const XML_Char *sysid,
+                                       const XML_Char *pubid,
+                                       int            has_internal_subset);
+
+

Set a handler that is called at the start of a DOCTYPE declaration, +before any external or internal subset is parsed. Both sysid +and pubid may be NULL. The has_internal_subset +will be non-zero if the DOCTYPE declaration has an internal subset.

+
+ +
+
+void XMLCALL
+XML_SetEndDoctypeDeclHandler(XML_Parser p,
+			     XML_EndDoctypeDeclHandler end);
+
+
+typedef void
+(XMLCALL *XML_EndDoctypeDeclHandler)(void *userData);
+
+

Set a handler that is called at the end of a DOCTYPE declaration, +after parsing any external subset.

+
+ +
+
+void XMLCALL
+XML_SetDoctypeDeclHandler(XML_Parser p,
+			  XML_StartDoctypeDeclHandler start,
+			  XML_EndDoctypeDeclHandler end);
+
+

Set both doctype handlers with one call.

+
+ +
+
+void XMLCALL
+XML_SetElementDeclHandler(XML_Parser p,
+			  XML_ElementDeclHandler eldecl);
+
+
+typedef void
+(XMLCALL *XML_ElementDeclHandler)(void *userData,
+                                  const XML_Char *name,
+                                  XML_Content *model);
+
+
+enum XML_Content_Type {
+  XML_CTYPE_EMPTY = 1,
+  XML_CTYPE_ANY,
+  XML_CTYPE_MIXED,
+  XML_CTYPE_NAME,
+  XML_CTYPE_CHOICE,
+  XML_CTYPE_SEQ
+};
+
+enum XML_Content_Quant {
+  XML_CQUANT_NONE,
+  XML_CQUANT_OPT,
+  XML_CQUANT_REP,
+  XML_CQUANT_PLUS
+};
+
+typedef struct XML_cp XML_Content;
+
+struct XML_cp {
+  enum XML_Content_Type		type;
+  enum XML_Content_Quant	quant;
+  const XML_Char *		name;
+  unsigned int			numchildren;
+  XML_Content *			children;
+};
+
+

Sets a handler for element declarations in a DTD. The handler gets +called with the name of the element in the declaration and a pointer +to a structure that contains the element model. It is the +application's responsibility to free this data structure using +XML_FreeContentModel.

+ +

The model argument is the root of a tree of +XML_Content nodes. If type equals +XML_CTYPE_EMPTY or XML_CTYPE_ANY, then +quant will be XML_CQUANT_NONE, and the other +fields will be zero or NULL. If type is +XML_CTYPE_MIXED, then quant will be +XML_CQUANT_NONE or XML_CQUANT_REP and +numchildren will contain the number of elements that are +allowed to be mixed in and children points to an array of +XML_Content structures that will all have type +XML_CTYPE_NAME with no quantification. Only the root node can be type +XML_CTYPE_EMPTY, XML_CTYPE_ANY, or +XML_CTYPE_MIXED.

+ +

For type XML_CTYPE_NAME, the name field +points to the name and the numchildren and +children fields will be zero and NULL. The +quant field will indicate any quantifiers placed on the +name.

+ +

Types XML_CTYPE_CHOICE and XML_CTYPE_SEQ +indicate a choice or sequence respectively. The +numchildren field indicates how many nodes in the choice +or sequence and children points to the nodes.

+
+ +
+
+void XMLCALL
+XML_SetAttlistDeclHandler(XML_Parser p,
+                          XML_AttlistDeclHandler attdecl);
+
+
+typedef void
+(XMLCALL *XML_AttlistDeclHandler)(void           *userData,
+                                  const XML_Char *elname,
+                                  const XML_Char *attname,
+                                  const XML_Char *att_type,
+                                  const XML_Char *dflt,
+                                  int            isrequired);
+
+

Set a handler for attlist declarations in the DTD. This handler is +called for each attribute. So a single attlist declaration +with multiple attributes declared will generate multiple calls to this +handler. The elname parameter returns the name of the +element for which the attribute is being declared. The attribute name +is in the attname parameter. The attribute type is in the +att_type parameter. It is the string representing the +type in the declaration with whitespace removed.

+ +

The dflt parameter holds the default value. It will be +NULL in the case of "#IMPLIED" or "#REQUIRED" attributes. You can +distinguish these two cases by checking the isrequired +parameter, which will be true in the case of "#REQUIRED" attributes. +Attributes which are "#FIXED" will have also have a true +isrequired, but they will have the non-NULL fixed value +in the dflt parameter.

+
+ +
+
+void XMLCALL
+XML_SetEntityDeclHandler(XML_Parser p,
+			 XML_EntityDeclHandler handler);
+
+
+typedef void
+(XMLCALL *XML_EntityDeclHandler)(void           *userData,
+                                 const XML_Char *entityName,
+                                 int            is_parameter_entity,
+                                 const XML_Char *value,
+                                 int            value_length, 
+                                 const XML_Char *base,
+                                 const XML_Char *systemId,
+                                 const XML_Char *publicId,
+                                 const XML_Char *notationName);
+
+

Sets a handler that will be called for all entity declarations. +The is_parameter_entity argument will be non-zero in the +case of parameter entities and zero otherwise.

+ +

For internal entities (<!ENTITY foo "bar">), +value will be non-NULL and systemId, +publicId, and notationName will all be NULL. +The value string is not NULL terminated; the length is +provided in the value_length parameter. Do not use +value_length to test for internal entities, since it is +legal to have zero-length values. Instead check for whether or not +value is NULL.

The notationName +argument will have a non-NULL value only for unparsed entity +declarations.

+
+ +
+
+void XMLCALL
+XML_SetUnparsedEntityDeclHandler(XML_Parser p,
+                                 XML_UnparsedEntityDeclHandler h)
+
+
+typedef void
+(XMLCALL *XML_UnparsedEntityDeclHandler)(void *userData,
+                                         const XML_Char *entityName, 
+                                         const XML_Char *base,
+                                         const XML_Char *systemId,
+                                         const XML_Char *publicId,
+                                         const XML_Char *notationName);
+
+

Set a handler that receives declarations of unparsed entities. These +are entity declarations that have a notation (NDATA) field:

+ +
+<!ENTITY logo SYSTEM "images/logo.gif" NDATA gif>
+
+

This handler is obsolete and is provided for backwards +compatibility. Use instead XML_SetEntityDeclHandler.

+
+ +
+
+void XMLCALL
+XML_SetNotationDeclHandler(XML_Parser p,
+                           XML_NotationDeclHandler h)
+
+
+typedef void
+(XMLCALL *XML_NotationDeclHandler)(void *userData, 
+                                   const XML_Char *notationName,
+                                   const XML_Char *base,
+                                   const XML_Char *systemId,
+                                   const XML_Char *publicId);
+
+

Set a handler that receives notation declarations.

+
+ +
+
+void XMLCALL
+XML_SetNotStandaloneHandler(XML_Parser p,
+                            XML_NotStandaloneHandler h)
+
+
+typedef int 
+(XMLCALL *XML_NotStandaloneHandler)(void *userData);
+
+

Set a handler that is called if the document is not "standalone". +This happens when there is an external subset or a reference to a +parameter entity, but does not have standalone set to "yes" in an XML +declaration. If this handler returns XML_STATUS_ERROR, +then the parser will throw an XML_ERROR_NOT_STANDALONE +error.

+
+ +

Parse position and error reporting functions

+ +

These are the functions you'll want to call when the parse +functions return XML_STATUS_ERROR (a parse error has +occurred), although the position reporting functions are useful outside +of errors. The position reported is the byte position (in the original +document or entity encoding) of the first of the sequence of +characters that generated the current event (or the error that caused +the parse functions to return XML_STATUS_ERROR.) The +exceptions are callbacks triggered by declarations in the document +prologue, in which case they exact position reported is somewhere in the +relevant markup, but not necessarily as meaningful as for other +events.

+ +

The position reporting functions are accurate only outside of the +DTD. In other words, they usually return bogus information when +called from within a DTD declaration handler.

+ +
+enum XML_Error XMLCALL
+XML_GetErrorCode(XML_Parser p);
+
+
+Return what type of error has occurred. +
+ +
+const XML_LChar * XMLCALL
+XML_ErrorString(enum XML_Error code);
+
+
+Return a string describing the error corresponding to code. +The code should be one of the enums that can be returned from +XML_GetErrorCode. +
+ +
+XML_Index XMLCALL
+XML_GetCurrentByteIndex(XML_Parser p);
+
+
+Return the byte offset of the position. This always corresponds to +the values returned by XML_GetCurrentLineNumber and XML_GetCurrentColumnNumber. +
+ +
+XML_Size XMLCALL
+XML_GetCurrentLineNumber(XML_Parser p);
+
+
+Return the line number of the position. The first line is reported as +1. +
+ +
+XML_Size XMLCALL
+XML_GetCurrentColumnNumber(XML_Parser p);
+
+
+Return the offset, from the beginning of the current line, of +the position. +
+ +
+int XMLCALL
+XML_GetCurrentByteCount(XML_Parser p);
+
+
+Return the number of bytes in the current event. Returns +0 if the event is inside a reference to an internal +entity and for the end-tag event for empty element tags (the later can +be used to distinguish empty-element tags from empty elements using +separate start and end tags). +
+ +
+const char * XMLCALL
+XML_GetInputContext(XML_Parser p,
+                    int *offset,
+                    int *size);
+
+
+ +

Returns the parser's input buffer, sets the integer pointed at by +offset to the offset within this buffer of the current +parse position, and set the integer pointed at by size to +the size of the returned buffer.

+ +

This should only be called from within a handler during an active +parse and the returned buffer should only be referred to from within +the handler that made the call. This input buffer contains the +untranslated bytes of the input.

+ +

Only a limited amount of context is kept, so if the event +triggering a call spans over a very large amount of input, the actual +parse position may be before the beginning of the buffer.

+ +

If XML_CONTEXT_BYTES is not defined, this will always +return NULL.

+
+ +

Miscellaneous functions

+ +

The functions in this section either obtain state information from +the parser or can be used to dynamically set parser options.

+ +
+void XMLCALL
+XML_SetUserData(XML_Parser p,
+                void *userData);
+
+
+This sets the user data pointer that gets passed to handlers. It +overwrites any previous value for this pointer. Note that the +application is responsible for freeing the memory associated with +userData when it is finished with the parser. So if you +call this when there's already a pointer there, and you haven't freed +the memory associated with it, then you've probably just leaked +memory. +
+ +
+void * XMLCALL
+XML_GetUserData(XML_Parser p);
+
+
+This returns the user data pointer that gets passed to handlers. +It is actually implemented as a macro. +
+ +
+void XMLCALL
+XML_UseParserAsHandlerArg(XML_Parser p);
+
+
+After this is called, handlers receive the parser in their +userData arguments. The user data can still be obtained +using the XML_GetUserData function. +
+ +
+enum XML_Status XMLCALL
+XML_SetBase(XML_Parser p,
+            const XML_Char *base);
+
+
+Set the base to be used for resolving relative URIs in system +identifiers. The return value is XML_STATUS_ERROR if +there's no memory to store base, otherwise it's +XML_STATUS_OK. +
+ +
+const XML_Char * XMLCALL
+XML_GetBase(XML_Parser p);
+
+
+Return the base for resolving relative URIs. +
+ +
+int XMLCALL
+XML_GetSpecifiedAttributeCount(XML_Parser p);
+
+
+When attributes are reported to the start handler in the atts vector, +attributes that were explicitly set in the element occur before any +attributes that receive their value from default information in an +ATTLIST declaration. This function returns the number of attributes +that were explicitly set times two, thus giving the offset in the +atts array passed to the start tag handler of the first +attribute set due to defaults. It supplies information for the last +call to a start handler. If called inside a start handler, then that +means the current call. +
+ +
+int XMLCALL
+XML_GetIdAttributeIndex(XML_Parser p);
+
+
+Returns the index of the ID attribute passed in the atts array in the +last call to XML_StartElementHandler, or -1 if there is no ID +attribute. If called inside a start handler, then that means the +current call. +
+ +
+const XML_AttrInfo * XMLCALL
+XML_GetAttributeInfo(XML_Parser parser);
+
+
+typedef struct {
+  XML_Index  nameStart;  /* Offset to beginning of the attribute name. */
+  XML_Index  nameEnd;    /* Offset after the attribute name's last byte. */
+  XML_Index  valueStart; /* Offset to beginning of the attribute value. */
+  XML_Index  valueEnd;   /* Offset after the attribute value's last byte. */
+} XML_AttrInfo;
+
+
+Returns an array of XML_AttrInfo structures for the +attribute/value pairs passed in the last call to the +XML_StartElementHandler that were specified +in the start-tag rather than defaulted. Each attribute/value pair counts +as 1; thus the number of entries in the array is +XML_GetSpecifiedAttributeCount(parser) / 2. +
+ +
+enum XML_Status XMLCALL
+XML_SetEncoding(XML_Parser p,
+                const XML_Char *encoding);
+
+
+Set the encoding to be used by the parser. It is equivalent to +passing a non-null encoding argument to the parser creation functions. +It must not be called after XML_Parse or XML_ParseBuffer have been called on the given parser. +Returns XML_STATUS_OK on success or +XML_STATUS_ERROR on error. +
+ +
+int XMLCALL
+XML_SetParamEntityParsing(XML_Parser p,
+                          enum XML_ParamEntityParsing code);
+
+
+This enables parsing of parameter entities, including the external +parameter entity that is the external DTD subset, according to +code. +The choices for code are: +
    +
  • XML_PARAM_ENTITY_PARSING_NEVER
  • +
  • XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE
  • +
  • XML_PARAM_ENTITY_PARSING_ALWAYS
  • +
+Note: If XML_SetParamEntityParsing is called after +XML_Parse or XML_ParseBuffer, then it has +no effect and will always return 0. +
+ +
+int XMLCALL
+XML_SetHashSalt(XML_Parser p,
+                unsigned long hash_salt);
+
+
+Sets the hash salt to use for internal hash calculations. +Helps in preventing DoS attacks based on predicting hash +function behavior. In order to have an effect this must be called +before parsing has started. Returns 1 if successful, 0 when called +after XML_Parse or XML_ParseBuffer. +

Note:This call is optional, as the parser will auto-generate +a new random salt value if no value has been set at the start of parsing.

+

Note:One should not call XML_SetHashSalt with a +hash salt value of 0, as this value is used as sentinel value to indicate +that XML_SetHashSalt has not been called. Consequently +such a call will have no effect, even if it returns 1.

+
+ +
+enum XML_Error XMLCALL
+XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
+
+
+

This function allows an application to provide an external subset +for the document type declaration for documents which do not specify +an external subset of their own. For documents which specify an +external subset in their DOCTYPE declaration, the application-provided +subset will be ignored. If the document does not contain a DOCTYPE +declaration at all and useDTD is true, the +application-provided subset will be parsed, but the +startDoctypeDeclHandler and +endDoctypeDeclHandler functions, if set, will not be +called. The setting of parameter entity parsing, controlled using +XML_SetParamEntityParsing, will be honored.

+ +

The application-provided external subset is read by calling the +external entity reference handler set via XML_SetExternalEntityRefHandler with both +publicId and systemId set to NULL.

+ +

If this function is called after parsing has begun, it returns +XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING and ignores +useDTD. If called when Expat has been compiled without +DTD support, it returns +XML_ERROR_FEATURE_REQUIRES_XML_DTD. Otherwise, it +returns XML_ERROR_NONE.

+ +

Note: For the purpose of checking WFC: Entity Declared, passing +useDTD == XML_TRUE will make the parser behave as if +the document had a DTD with an external subset. This holds true even if +the external entity reference handler returns without action.

+
+ +
+void XMLCALL
+XML_SetReturnNSTriplet(XML_Parser parser,
+                       int        do_nst);
+
+
+

+This function only has an effect when using a parser created with +XML_ParserCreateNS, +i.e. when namespace processing is in effect. The do_nst +sets whether or not prefixes are returned with names qualified with a +namespace prefix. If this function is called with do_nst +non-zero, then afterwards namespace qualified names (that is qualified +with a prefix as opposed to belonging to a default namespace) are +returned as a triplet with the three parts separated by the namespace +separator specified when the parser was created. The order of +returned parts is URI, local name, and prefix.

If +do_nst is zero, then namespaces are reported in the +default manner, URI then local_name separated by the namespace +separator.

+
+ +
+void XMLCALL
+XML_DefaultCurrent(XML_Parser parser);
+
+
+This can be called within a handler for a start element, end element, +processing instruction or character data. It causes the corresponding +markup to be passed to the default handler set by XML_SetDefaultHandler or +XML_SetDefaultHandlerExpand. It does nothing if there is +not a default handler. +
+ +
+XML_LChar * XMLCALL
+XML_ExpatVersion();
+
+
+Return the library version as a string (e.g. "expat_1.95.1"). +
+ +
+struct XML_Expat_Version XMLCALL
+XML_ExpatVersionInfo();
+
+
+typedef struct {
+  int major;
+  int minor;
+  int micro;
+} XML_Expat_Version;
+
+
+Return the library version information as a structure. +Some macros are also defined that support compile-time tests of the +library version: +
    +
  • XML_MAJOR_VERSION
  • +
  • XML_MINOR_VERSION
  • +
  • XML_MICRO_VERSION
  • +
+Testing these constants is currently the best way to determine if +particular parts of the Expat API are available. +
+ +
+const XML_Feature * XMLCALL
+XML_GetFeatureList();
+
+
+enum XML_FeatureEnum {
+  XML_FEATURE_END = 0,
+  XML_FEATURE_UNICODE,
+  XML_FEATURE_UNICODE_WCHAR_T,
+  XML_FEATURE_DTD,
+  XML_FEATURE_CONTEXT_BYTES,
+  XML_FEATURE_MIN_SIZE,
+  XML_FEATURE_SIZEOF_XML_CHAR,
+  XML_FEATURE_SIZEOF_XML_LCHAR,
+  XML_FEATURE_NS,
+  XML_FEATURE_LARGE_SIZE
+};
+
+typedef struct {
+  enum XML_FeatureEnum  feature;
+  XML_LChar            *name;
+  long int              value;
+} XML_Feature;
+
+
+

Returns a list of "feature" records, providing details on how +Expat was configured at compile time. Most applications should not +need to worry about this, but this information is otherwise not +available from Expat. This function allows code that does need to +check these features to do so at runtime.

+ +

The return value is an array of XML_Feature, +terminated by a record with a feature of +XML_FEATURE_END and name of NULL, +identifying the feature-test macros Expat was compiled with. Since an +application that requires this kind of information needs to determine +the type of character the name points to, records for the +XML_FEATURE_SIZEOF_XML_CHAR and +XML_FEATURE_SIZEOF_XML_LCHAR will be located at the +beginning of the list, followed by XML_FEATURE_UNICODE +and XML_FEATURE_UNICODE_WCHAR_T, if they are present at +all.

+ +

Some features have an associated value. If there isn't an +associated value, the value field is set to 0. At this +time, the following features have been defined to have values:

+ +
+
XML_FEATURE_SIZEOF_XML_CHAR
+
The number of bytes occupied by one XML_Char + character.
+
XML_FEATURE_SIZEOF_XML_LCHAR
+
The number of bytes occupied by one XML_LChar + character.
+
XML_FEATURE_CONTEXT_BYTES
+
The maximum number of characters of context which can be + reported by XML_GetInputContext.
+
+
+ +
+void XMLCALL
+XML_FreeContentModel(XML_Parser parser, XML_Content *model);
+
+
+Function to deallocate the model argument passed to the +XML_ElementDeclHandler callback set using XML_ElementDeclHandler. +This function should not be used for any other purpose. +
+ +

The following functions allow external code to share the memory +allocator an XML_Parser has been configured to use. This +is especially useful for third-party libraries that interact with a +parser object created by application code, or heavily layered +applications. This can be essential when using dynamically loaded +libraries which use different C standard libraries (this can happen on +Windows, at least).

+ +
+void * XMLCALL
+XML_MemMalloc(XML_Parser parser, size_t size);
+
+
+Allocate size bytes of memory using the allocator the +parser object has been configured to use. Returns a +pointer to the memory or NULL on failure. Memory allocated in this +way must be freed using XML_MemFree. +
+ +
+void * XMLCALL
+XML_MemRealloc(XML_Parser parser, void *ptr, size_t size);
+
+
+Allocate size bytes of memory using the allocator the +parser object has been configured to use. +ptr must point to a block of memory allocated by XML_MemMalloc or +XML_MemRealloc, or be NULL. This function tries to +expand the block pointed to by ptr if possible. Returns +a pointer to the memory or NULL on failure. On success, the original +block has either been expanded or freed. On failure, the original +block has not been freed; the caller is responsible for freeing the +original block. Memory allocated in this way must be freed using +XML_MemFree. +
+ +
+void XMLCALL
+XML_MemFree(XML_Parser parser, void *ptr);
+
+
+Free a block of memory pointed to by ptr. The block must +have been allocated by XML_MemMalloc or XML_MemRealloc, or be NULL. +
+ +
+

Valid XHTML 1.0!

+
+ + diff --git a/3rdparty/expat/doc/style.css b/3rdparty/expat/doc/style.css new file mode 100644 index 0000000..69df30b --- /dev/null +++ b/3rdparty/expat/doc/style.css @@ -0,0 +1,101 @@ +body { + background-color: white; + border: 0px; + margin: 0px; + padding: 0px; +} + +.corner { + width: 200px; + height: 80px; + text-align: center; +} + +.banner { + background-color: rgb(110,139,61); + color: rgb(255,236,176); + padding-left: 2em; +} + +.banner h1 { + font-size: 200%; +} + +.content { + padding: 0em 2em 1em 2em; +} + +.releaseno { + background-color: rgb(110,139,61); + color: rgb(255,236,176); + padding-bottom: 0.3em; + padding-top: 0.5em; + text-align: center; + font-weight: bold; +} + +.noborder { + border-width: 0px; +} + +.eg { + padding-left: 1em; + padding-top: .5em; + padding-bottom: .5em; + border: solid thin; + margin: 1em 0; + background-color: tan; + margin-left: 2em; + margin-right: 10%; +} + +.pseudocode { + padding-left: 1em; + padding-top: .5em; + padding-bottom: .5em; + border: solid thin; + margin: 1em 0; + background-color: rgb(250,220,180); + margin-left: 2em; + margin-right: 10%; +} + +.handler { + width: 100%; + border-top-width: thin; + margin-bottom: 1em; +} + +.handler p { + margin-left: 2em; +} + +.setter { + font-weight: bold; +} + +.signature { + color: navy; +} + +.fcndec { + width: 100%; + border-top-width: thin; + font-weight: bold; +} + +.fcndef { + margin-left: 2em; + margin-bottom: 2em; +} + +dd { + margin-bottom: 2em; +} + +.cpp-symbols dt { + font-family: monospace; +} +.cpp-symbols dd { + margin-bottom: 1em; +} diff --git a/3rdparty/expat/doc/valid-xhtml10.png b/3rdparty/expat/doc/valid-xhtml10.png new file mode 100644 index 0000000000000000000000000000000000000000..8b5f1baeaa02fc8d5902242f4a6da2e7b1d8564c GIT binary patch literal 1981 zcmV;u2SWIXP)Zn>0l!&kVtGK5{X@jL}DY6$Wy-A`_2RccVBL2 z+Lt?X1~|J*E+0Sto`pl#b@Jzh`KU0)$S@2dB8PPVSpKNLu@~vmkBOm)rObS(%KVc6 zCm#_CIK4_)WFH0iW5O!fn*o1{f~RM|DWUt@Id{9pZkvvOx32>JJO!IX#x|D8EH8*- z^0c#W+ch+&`x_y|#&`|ww|%UTf1==NOH_nQc>D1q1&=0?D7eV^e3bhw5P4)$7lE8l zN6BJOrnyhxoyEJH^d_+N=Nx%1{Bl0hpV0l&9Ht7T%6;M7*Li$jN2*Y69_OHqKKw4f zugARw`y&N+!$U4nDOuGnuDR(3Az#$5YJZHAcAuCMnBO@;sMczuWh{ z43Ec)g1M0X9tl8>$AiKJ$oK^mXs6?WeLyfqVLsYK07H1!(|n}|$rDdFrtOw^7$gP&~za z>@CNnX{!G`LH!8qrfJp+)(dFLa0Yy&Kd?~@dDIGQ-~$MF^Y+RydHXmI7JM9B7|&R8 z1pUeBP5U}0$AklL@^cT4Z;b%U^p8b8$ZNpOY8w}M)PC@CiRN+r+(z8nUg&!a3+cYj zGmfJG>UzBjP=kQS?mR;~q2iq?A{8!(N1hABGE_kpF!^6U=;SAu)J{T4omt7@bD zZ2cM7`sf0D&Z~mSM+*2w!JG?!SM{_1Xp#ls(gNltFpdEBvWh5k8SeML^+oY_XPE|E zAn~|=O@8XD$FNkJnEe;%*n941ZwwF_7u@oTPCLtYu+{(`4Ak(O9Nt}w9`j(GxT8>dPAH;N)a|NcV5C?Fd~ z_t&+kV_`z1uD%NXrOj;iT}*QK=n7Z`Otf+QZyCqG0C=}D2r_F2lv`95fFvL0n#Ud# zB%XT;Z507%#?uB^wFkF?cL8d+;px^f*7>es=UBbG%YB8rhCI~uUpD~*1#tK))daxs z;BkD(E9@sb;6`92K-QL)c ztZi$!3U(K+12B~XN(CmCFiu*AVH3d9Qfwb^L0^`_yF8cbR=^s7?dwGHEE3-j0k@;% zRQqS?+&2g%3PTBqdB4mfr+PVWM+ru`b~!ym*7ipkDp1`L$D?$4{*SlbrcpIeh9yP2 zF5?#E8R}+&d*+07(1&xhZHotQ{s!+R>bl;v2$Yy6kwPNc3c&jcMzNkB$}O|CGK!BP zfZMVA3RbupKm(|)o!81;ZtFC0FEloNRLig>Jn~i3D{#uX)Iz3C#(U|*3J`_z9^$1A zZkmSWGdEzjis12X=KvUho60J9&x4cL!Zi1mZsW-E<~s(I95BsI@mwOr7n$u%d!~Iyo-qAnAH*LdY$A<@-k!BC6K;X z@MKVHC}9{%-y{kTTLF5WM!ViSwXrn*c^fjZqueIEu+aF~7Y)Fo;w{f4KP_u#RI8I8 z`)&VtQS9lYFKB?w4RDuf{Q~e>y&4v91Ymqy6>P_=)foc@&_Bhl$41;T-u>gE8ETm?o;IUnPl|ZHRqd&^0FB2rbT-_M^eVt6ZiLXm9 z-hkbu9(_Olo7@7hrxx+7SX(VTTHB9yyqbJn*iwz-IHHe2b=A3)YHP*nK5h2qeeyRs z4Fv}zCNG5o;4F!#G=Qgl>6643EOtTJHZ<;)-rDz<6B}EF>-Z-3F@W8xwTZ2H^=#k+ z9Sd=vYrBuuy+?&h?!&(-PrVz+JNx}^JK?^WgN6JGSHH=9u7XvWW&?(C!*xQ`^E-YI zu*Al>oC;<}XJ!X91^@pojIq&F(w0nSp>B1b&^AX@?)L31@qJ&yR5o~VpGKE`1+#?B zvW)Lz)TJ66{|~oM`=KPE{ZjF~)zF-K-#t#Zu5r8L`QmcD93{`vO~C&Ffw!h0@qq%{ P00000NkvXXu0mjfIQGtS literal 0 HcmV?d00001 diff --git a/3rdparty/expat/doc/xmlwf.1 b/3rdparty/expat/doc/xmlwf.1 new file mode 100644 index 0000000..ca56bf9 --- /dev/null +++ b/3rdparty/expat/doc/xmlwf.1 @@ -0,0 +1,263 @@ +'\" -*- coding: us-ascii -*- +.if \n(.g .ds T< \\FC +.if \n(.g .ds T> \\F[\n[.fam]] +.de URL +\\$2 \(la\\$1\(ra\\$3 +.. +.if \n(.g .mso www.tmac +.TH XMLWF 1 "March 11, 2016" "" "" +.SH NAME +xmlwf \- Determines if an XML document is well-formed +.SH SYNOPSIS +'nh +.fi +.ad l +\fBxmlwf\fR \kx +.if (\nx>(\n(.l/2)) .nr x (\n(.l/5) +'in \n(.iu+\nxu +[\fB-s\fR] [\fB-n\fR] [\fB-p\fR] [\fB-x\fR] [\fB-e \fIencoding\fB\fR] [\fB-w\fR] [\fB-d \fIoutput-dir\fB\fR] [\fB-c\fR] [\fB-m\fR] [\fB-r\fR] [\fB-t\fR] [\fB-N\fR] [\fB-v\fR] [file ...] +'in \n(.iu-\nxu +.ad b +'hy +.SH DESCRIPTION +\fBxmlwf\fR uses the Expat library to +determine if an XML document is well-formed. It is +non-validating. +.PP +If you do not specify any files on the command-line, and you +have a recent version of \fBxmlwf\fR, the +input file will be read from standard input. +.SH "WELL-FORMED DOCUMENTS" +A well-formed document must adhere to the +following rules: +.TP 0.2i +\(bu +The file begins with an XML declaration. For instance, +\*(T<\*(T>. +\fINOTE:\fR +\fBxmlwf\fR does not currently +check for a valid XML declaration. +.TP 0.2i +\(bu +Every start tag is either empty () +or has a corresponding end tag. +.TP 0.2i +\(bu +There is exactly one root element. This element must contain +all other elements in the document. Only comments, white +space, and processing instructions may come after the close +of the root element. +.TP 0.2i +\(bu +All elements nest properly. +.TP 0.2i +\(bu +All attribute values are enclosed in quotes (either single +or double). +.PP +If the document has a DTD, and it strictly complies with that +DTD, then the document is also considered \fIvalid\fR. +\fBxmlwf\fR is a non-validating parser -- +it does not check the DTD. However, it does support +external entities (see the \*(T<\fB\-x\fR\*(T> option). +.SH OPTIONS +When an option includes an argument, you may specify the argument either +separately ("\*(T<\fB\-d\fR\*(T> output") or concatenated with the +option ("\*(T<\fB\-d\fR\*(T>output"). \fBxmlwf\fR +supports both. +.TP +\*(T<\fB\-c\fR\*(T> +If the input file is well-formed and \fBxmlwf\fR +doesn't encounter any errors, the input file is simply copied to +the output directory unchanged. +This implies no namespaces (turns off \*(T<\fB\-n\fR\*(T>) and +requires \*(T<\fB\-d\fR\*(T> to specify an output directory. +.TP +\*(T<\fB\-d output\-dir\fR\*(T> +Specifies a directory to contain transformed +representations of the input files. +By default, \*(T<\fB\-d\fR\*(T> outputs a canonical representation +(described below). +You can select different output formats using \*(T<\fB\-c\fR\*(T>, +\*(T<\fB\-m\fR\*(T> and \*(T<\fB\-N\fR\*(T>. + +The output filenames will +be exactly the same as the input filenames or "STDIN" if the input is +coming from standard input. Therefore, you must be careful that the +output file does not go into the same directory as the input +file. Otherwise, \fBxmlwf\fR will delete the +input file before it generates the output file (just like running +\*(T file\*(T> in most shells). + +Two structurally equivalent XML documents have a byte-for-byte +identical canonical XML representation. +Note that ignorable white space is considered significant and +is treated equivalently to data. +More on canonical XML can be found at +http://www.jclark.com/xml/canonxml.html . +.TP +\*(T<\fB\-e encoding\fR\*(T> +Specifies the character encoding for the document, overriding +any document encoding declaration. \fBxmlwf\fR +supports four built-in encodings: +\*(T, +\*(T, +\*(T, and +\*(T. +Also see the \*(T<\fB\-w\fR\*(T> option. +.TP +\*(T<\fB\-m\fR\*(T> +Outputs some strange sort of XML file that completely +describes the input file, including character positions. +Requires \*(T<\fB\-d\fR\*(T> to specify an output file. +.TP +\*(T<\fB\-n\fR\*(T> +Turns on namespace processing. (describe namespaces) +\*(T<\fB\-c\fR\*(T> disables namespaces. +.TP +\*(T<\fB\-N\fR\*(T> +Adds a doctype and notation declarations to canonical XML output. +This matches the example output used by the formal XML test cases. +Requires \*(T<\fB\-d\fR\*(T> to specify an output file. +.TP +\*(T<\fB\-p\fR\*(T> +Tells xmlwf to process external DTDs and parameter +entities. + +Normally \fBxmlwf\fR never parses parameter +entities. \*(T<\fB\-p\fR\*(T> tells it to always parse them. +\*(T<\fB\-p\fR\*(T> implies \*(T<\fB\-x\fR\*(T>. +.TP +\*(T<\fB\-r\fR\*(T> +Normally \fBxmlwf\fR memory-maps the XML file +before parsing; this can result in faster parsing on many +platforms. +\*(T<\fB\-r\fR\*(T> turns off memory-mapping and uses normal file +IO calls instead. +Of course, memory-mapping is automatically turned off +when reading from standard input. + +Use of memory-mapping can cause some platforms to report +substantially higher memory usage for +\fBxmlwf\fR, but this appears to be a matter of +the operating system reporting memory in a strange way; there is +not a leak in \fBxmlwf\fR. +.TP +\*(T<\fB\-s\fR\*(T> +Prints an error if the document is not standalone. +A document is standalone if it has no external subset and no +references to parameter entities. +.TP +\*(T<\fB\-t\fR\*(T> +Turns on timings. This tells Expat to parse the entire file, +but not perform any processing. +This gives a fairly accurate idea of the raw speed of Expat itself +without client overhead. +\*(T<\fB\-t\fR\*(T> turns off most of the output options +(\*(T<\fB\-d\fR\*(T>, \*(T<\fB\-m\fR\*(T>, \*(T<\fB\-c\fR\*(T>, ...). +.TP +\*(T<\fB\-v\fR\*(T> +Prints the version of the Expat library being used, including some +information on the compile-time configuration of the library, and +then exits. +.TP +\*(T<\fB\-w\fR\*(T> +Enables support for Windows code pages. +Normally, \fBxmlwf\fR will throw an error if it +runs across an encoding that it is not equipped to handle itself. With +\*(T<\fB\-w\fR\*(T>, xmlwf will try to use a Windows code +page. See also \*(T<\fB\-e\fR\*(T>. +.TP +\*(T<\fB\-x\fR\*(T> +Turns on parsing external entities. + +Non-validating parsers are not required to resolve external +entities, or even expand entities at all. +Expat always expands internal entities (?), +but external entity parsing must be enabled explicitly. + +External entities are simply entities that obtain their +data from outside the XML file currently being parsed. + +This is an example of an internal entity: + +.nf + + +.fi + +And here are some examples of external entities: + +.nf + + (parsed) + (unparsed) +.fi +.TP +\*(T<\fB\-\-\fR\*(T> +(Two hyphens.) +Terminates the list of options. This is only needed if a filename +starts with a hyphen. For example: + +.nf + +xmlwf \-\- \-myfile.xml +.fi + +will run \fBxmlwf\fR on the file +\*(T<\fI\-myfile.xml\fR\*(T>. +.PP +Older versions of \fBxmlwf\fR do not support +reading from standard input. +.SH OUTPUT +If an input file is not well-formed, +\fBxmlwf\fR prints a single line describing +the problem to standard output. If a file is well formed, +\fBxmlwf\fR outputs nothing. +.SH "EXIT STATUS" +For option \*(T<\fB\-v\fR\*(T> or \*(T<\fB\-h\fR\*(T>, \fBxmlwf\fR always exits with status code 0. For other cases, the following exit status codes are returned: +.TP +\*(T<\fB0\fR\*(T> +The input files are well-formed. +.TP +\*(T<\fB1\fR\*(T> +An internal error occurred. +.TP +\*(T<\fB2\fR\*(T> +An input file was not well-formed or could not be parsed. +.TP +\*(T<\fB3\fR\*(T> +If using the \*(T<\fB\-d\fR\*(T> option, an error occurred opening an output file. +.SH BUGS +The errors should go to standard error, not standard output. +.PP +There should be a way to get \*(T<\fB\-d\fR\*(T> to send its +output to standard output rather than forcing the user to send +it to a file. +.PP +I have no idea why anyone would want to use the +\*(T<\fB\-d\fR\*(T>, \*(T<\fB\-c\fR\*(T>, and +\*(T<\fB\-m\fR\*(T> options. If someone could explain it to +me, I'd like to add this information to this manpage. +.SH ALTERNATIVES +Here are some XML validators on the web: + +.nf + +http://www.hcrc.ed.ac.uk/~richard/xml\-check.html +http://www.stg.brown.edu/service/xmlvalid/ +http://www.scripting.com/frontier5/xml/code/xmlValidator.html +http://www.xml.com/pub/a/tools/ruwf/check.html +.fi +.SH "SEE ALSO" +.nf + +The Expat home page: http://www.libexpat.org/ +The W3 XML specification: http://www.w3.org/TR/REC\-xml +.fi +.SH AUTHOR +This manual page was written by Scott Bronson <\*(T> for +the Debian GNU/Linux system (but may be used by others). Permission is +granted to copy, distribute and/or modify this document under +the terms of the GNU Free Documentation +License, Version 1.1. diff --git a/3rdparty/expat/doc/xmlwf.xml b/3rdparty/expat/doc/xmlwf.xml new file mode 100644 index 0000000..654466c --- /dev/null +++ b/3rdparty/expat/doc/xmlwf.xml @@ -0,0 +1,473 @@ + + Scott"> + Bronson"> + + March 11, 2016"> + + 1"> + bronson@rinspin.com"> + + XMLWF"> + + + Debian GNU/Linux"> + GNU"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2001 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + Determines if an XML document is well-formed + + + + &dhpackage; + + + + + + + + + + + + + + + + + + + file ... + + + + + DESCRIPTION + + + &dhpackage; uses the Expat library to + determine if an XML document is well-formed. It is + non-validating. + + + + If you do not specify any files on the command-line, and you + have a recent version of &dhpackage;, the + input file will be read from standard input. + + + + + + WELL-FORMED DOCUMENTS + + + A well-formed document must adhere to the + following rules: + + + + + The file begins with an XML declaration. For instance, + <?xml version="1.0" standalone="yes"?>. + NOTE: + &dhpackage; does not currently + check for a valid XML declaration. + + + Every start tag is either empty (<tag/>) + or has a corresponding end tag. + + + There is exactly one root element. This element must contain + all other elements in the document. Only comments, white + space, and processing instructions may come after the close + of the root element. + + + All elements nest properly. + + + All attribute values are enclosed in quotes (either single + or double). + + + + + If the document has a DTD, and it strictly complies with that + DTD, then the document is also considered valid. + &dhpackage; is a non-validating parser -- + it does not check the DTD. However, it does support + external entities (see the option). + + + + + OPTIONS + + +When an option includes an argument, you may specify the argument either +separately (" output") or concatenated with the +option ("output"). &dhpackage; +supports both. + + + + + + + + + If the input file is well-formed and &dhpackage; + doesn't encounter any errors, the input file is simply copied to + the output directory unchanged. + This implies no namespaces (turns off ) and + requires to specify an output directory. + + + + + + + + + Specifies a directory to contain transformed + representations of the input files. + By default, outputs a canonical representation + (described below). + You can select different output formats using , + and . + + + The output filenames will + be exactly the same as the input filenames or "STDIN" if the input is + coming from standard input. Therefore, you must be careful that the + output file does not go into the same directory as the input + file. Otherwise, &dhpackage; will delete the + input file before it generates the output file (just like running + cat < file > file in most shells). + + + Two structurally equivalent XML documents have a byte-for-byte + identical canonical XML representation. + Note that ignorable white space is considered significant and + is treated equivalently to data. + More on canonical XML can be found at + http://www.jclark.com/xml/canonxml.html . + + + + + + + + + Specifies the character encoding for the document, overriding + any document encoding declaration. &dhpackage; + supports four built-in encodings: + US-ASCII, + UTF-8, + UTF-16, and + ISO-8859-1. + Also see the option. + + + + + + + + + Outputs some strange sort of XML file that completely + describes the input file, including character positions. + Requires to specify an output file. + + + + + + + + + Turns on namespace processing. (describe namespaces) + disables namespaces. + + + + + + + + + Adds a doctype and notation declarations to canonical XML output. + This matches the example output used by the formal XML test cases. + Requires to specify an output file. + + + + + + + + + Tells xmlwf to process external DTDs and parameter + entities. + + + Normally &dhpackage; never parses parameter + entities. tells it to always parse them. + implies . + + + + + + + + + Normally &dhpackage; memory-maps the XML file + before parsing; this can result in faster parsing on many + platforms. + turns off memory-mapping and uses normal file + IO calls instead. + Of course, memory-mapping is automatically turned off + when reading from standard input. + + + Use of memory-mapping can cause some platforms to report + substantially higher memory usage for + &dhpackage;, but this appears to be a matter of + the operating system reporting memory in a strange way; there is + not a leak in &dhpackage;. + + + + + + + + + Prints an error if the document is not standalone. + A document is standalone if it has no external subset and no + references to parameter entities. + + + + + + + + + Turns on timings. This tells Expat to parse the entire file, + but not perform any processing. + This gives a fairly accurate idea of the raw speed of Expat itself + without client overhead. + turns off most of the output options + (, , , ...). + + + + + + + + + Prints the version of the Expat library being used, including some + information on the compile-time configuration of the library, and + then exits. + + + + + + + + + Enables support for Windows code pages. + Normally, &dhpackage; will throw an error if it + runs across an encoding that it is not equipped to handle itself. With + , &dhpackage; will try to use a Windows code + page. See also . + + + + + + + + + Turns on parsing external entities. + + + Non-validating parsers are not required to resolve external + entities, or even expand entities at all. + Expat always expands internal entities (?), + but external entity parsing must be enabled explicitly. + + + External entities are simply entities that obtain their + data from outside the XML file currently being parsed. + + + This is an example of an internal entity: + +<!ENTITY vers '1.0.2'> + + + + And here are some examples of external entities: + + +<!ENTITY header SYSTEM "header-&vers;.xml"> (parsed) +<!ENTITY logo SYSTEM "logo.png" PNG> (unparsed) + + + + + + + + + + + (Two hyphens.) + Terminates the list of options. This is only needed if a filename + starts with a hyphen. For example: + + +&dhpackage; -- -myfile.xml + + + will run &dhpackage; on the file + -myfile.xml. + + + + + + + Older versions of &dhpackage; do not support + reading from standard input. + + + + + OUTPUT + + If an input file is not well-formed, + &dhpackage; prints a single line describing + the problem to standard output. If a file is well formed, + &dhpackage; outputs nothing. + + + + + EXIT STATUS + For option or , &dhpackage; always exits with status code 0. For other cases, the following exit status codes are returned: + + + + The input files are well-formed. + + + + + An internal error occurred. + + + + + An input file was not well-formed or could not be parsed. + + + + + If using the option, an error occurred opening an output file. + + + + + + + + + BUGS + + The errors should go to standard error, not standard output. + + + There should be a way to get to send its + output to standard output rather than forcing the user to send + it to a file. + + + I have no idea why anyone would want to use the + , , and + options. If someone could explain it to + me, I'd like to add this information to this manpage. + + + + + ALTERNATIVES + + Here are some XML validators on the web: + + +http://www.hcrc.ed.ac.uk/~richard/xml-check.html +http://www.stg.brown.edu/service/xmlvalid/ +http://www.scripting.com/frontier5/xml/code/xmlValidator.html +http://www.xml.com/pub/a/tools/ruwf/check.html + + + + + + + SEE ALSO + + + +The Expat home page: http://www.libexpat.org/ +The W3 XML specification: http://www.w3.org/TR/REC-xml + + + + + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (but may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the GNU Free Documentation + License, Version 1.1. + + +
diff --git a/3rdparty/expat/examples/Makefile.am b/3rdparty/expat/examples/Makefile.am new file mode 100644 index 0000000..c3b1f7b --- /dev/null +++ b/3rdparty/expat/examples/Makefile.am @@ -0,0 +1,39 @@ +# +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(srcdir)/../lib + +noinst_PROGRAMS = elements outline + +elements_SOURCES = elements.c +elements_LDADD = ../lib/libexpat.la + +outline_SOURCES = outline.c +outline_LDADD = ../lib/libexpat.la diff --git a/3rdparty/expat/examples/Makefile.in b/3rdparty/expat/examples/Makefile.in new file mode 100644 index 0000000..7c4a296 --- /dev/null +++ b/3rdparty/expat/examples/Makefile.in @@ -0,0 +1,660 @@ +# Makefile.in generated by automake 1.16.2 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2020 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +noinst_PROGRAMS = elements$(EXEEXT) outline$(EXEEXT) +subdir = examples +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/conftools/ax-require-defined.m4 \ + $(top_srcdir)/conftools/ax-check-compile-flag.m4 \ + $(top_srcdir)/conftools/ax-check-link-flag.m4 \ + $(top_srcdir)/conftools/ax-append-flag.m4 \ + $(top_srcdir)/conftools/ax-append-compile-flags.m4 \ + $(top_srcdir)/conftools/ax-append-link-flags.m4 \ + $(top_srcdir)/conftools/expatcfg-compiler-supports-visibility.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/expat_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am_elements_OBJECTS = elements.$(OBJEXT) +elements_OBJECTS = $(am_elements_OBJECTS) +elements_DEPENDENCIES = ../lib/libexpat.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_outline_OBJECTS = outline.$(OBJEXT) +outline_OBJECTS = $(am_outline_OBJECTS) +outline_DEPENDENCIES = ../lib/libexpat.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/conftools/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/elements.Po ./$(DEPDIR)/outline.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(elements_SOURCES) $(outline_SOURCES) +DIST_SOURCES = $(elements_SOURCES) $(outline_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/conftools/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(srcdir)/../lib +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILEMAP = @FILEMAP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBAGE = @LIBAGE@ +LIBCURRENT = @LIBCURRENT@ +LIBOBJS = @LIBOBJS@ +LIBREVISION = @LIBREVISION@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +_EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +elements_SOURCES = elements.c +elements_LDADD = ../lib/libexpat.la +outline_SOURCES = outline.c +outline_LDADD = ../lib/libexpat.la +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu examples/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +elements$(EXEEXT): $(elements_OBJECTS) $(elements_DEPENDENCIES) $(EXTRA_elements_DEPENDENCIES) + @rm -f elements$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(elements_OBJECTS) $(elements_LDADD) $(LIBS) + +outline$(EXEEXT): $(outline_OBJECTS) $(outline_DEPENDENCIES) $(EXTRA_outline_DEPENDENCIES) + @rm -f outline$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(outline_OBJECTS) $(outline_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elements.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/outline.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/elements.Po + -rm -f ./$(DEPDIR)/outline.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/elements.Po + -rm -f ./$(DEPDIR)/outline.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/3rdparty/expat/examples/elements.c b/3rdparty/expat/examples/elements.c new file mode 100644 index 0000000..eb0c729 --- /dev/null +++ b/3rdparty/expat/examples/elements.c @@ -0,0 +1,97 @@ +/* This is simple demonstration of how to use expat. This program + reads an XML document from standard input and writes a line with + the name of each element to standard output indenting child + elements by one tab stop more than their parent element. + It must be used with Expat compiled for UTF-8 output. + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include +#include + +#ifdef XML_LARGE_SIZE +# define XML_FMT_INT_MOD "ll" +#else +# define XML_FMT_INT_MOD "l" +#endif + +#ifdef XML_UNICODE_WCHAR_T +# include +# define XML_FMT_STR "ls" +#else +# define XML_FMT_STR "s" +#endif + +static void XMLCALL +startElement(void *userData, const XML_Char *name, const XML_Char **atts) { + int i; + int *depthPtr = (int *)userData; + (void)atts; + + for (i = 0; i < *depthPtr; i++) + putchar('\t'); + printf("%" XML_FMT_STR "\n", name); + *depthPtr += 1; +} + +static void XMLCALL +endElement(void *userData, const XML_Char *name) { + int *depthPtr = (int *)userData; + (void)name; + + *depthPtr -= 1; +} + +int +main(int argc, char *argv[]) { + char buf[BUFSIZ]; + XML_Parser parser = XML_ParserCreate(NULL); + int done; + int depth = 0; + (void)argc; + (void)argv; + + XML_SetUserData(parser, &depth); + XML_SetElementHandler(parser, startElement, endElement); + do { + size_t len = fread(buf, 1, sizeof(buf), stdin); + done = len < sizeof(buf); + if (XML_Parse(parser, buf, (int)len, done) == XML_STATUS_ERROR) { + fprintf(stderr, "%" XML_FMT_STR " at line %" XML_FMT_INT_MOD "u\n", + XML_ErrorString(XML_GetErrorCode(parser)), + XML_GetCurrentLineNumber(parser)); + XML_ParserFree(parser); + return 1; + } + } while (! done); + XML_ParserFree(parser); + return 0; +} diff --git a/3rdparty/expat/examples/outline.c b/3rdparty/expat/examples/outline.c new file mode 100644 index 0000000..d996b8e --- /dev/null +++ b/3rdparty/expat/examples/outline.c @@ -0,0 +1,119 @@ +/* Read an XML document from standard input and print an element + outline on standard output. + Must be used with Expat compiled for UTF-8 output. + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include +#include + +#ifdef XML_LARGE_SIZE +# define XML_FMT_INT_MOD "ll" +#else +# define XML_FMT_INT_MOD "l" +#endif + +#ifdef XML_UNICODE_WCHAR_T +# define XML_FMT_STR "ls" +#else +# define XML_FMT_STR "s" +#endif + +#define BUFFSIZE 8192 + +char Buff[BUFFSIZE]; + +int Depth; + +static void XMLCALL +start(void *data, const XML_Char *el, const XML_Char **attr) { + int i; + (void)data; + + for (i = 0; i < Depth; i++) + printf(" "); + + printf("%" XML_FMT_STR, el); + + for (i = 0; attr[i]; i += 2) { + printf(" %" XML_FMT_STR "='%" XML_FMT_STR "'", attr[i], attr[i + 1]); + } + + printf("\n"); + Depth++; +} + +static void XMLCALL +end(void *data, const XML_Char *el) { + (void)data; + (void)el; + + Depth--; +} + +int +main(int argc, char *argv[]) { + XML_Parser p = XML_ParserCreate(NULL); + (void)argc; + (void)argv; + + if (! p) { + fprintf(stderr, "Couldn't allocate memory for parser\n"); + exit(-1); + } + + XML_SetElementHandler(p, start, end); + + for (;;) { + int done; + int len; + + len = (int)fread(Buff, 1, BUFFSIZE, stdin); + if (ferror(stdin)) { + fprintf(stderr, "Read error\n"); + exit(-1); + } + done = feof(stdin); + + if (XML_Parse(p, Buff, len, done) == XML_STATUS_ERROR) { + fprintf(stderr, + "Parse error at line %" XML_FMT_INT_MOD "u:\n%" XML_FMT_STR "\n", + XML_GetCurrentLineNumber(p), + XML_ErrorString(XML_GetErrorCode(p))); + exit(-1); + } + + if (done) + break; + } + XML_ParserFree(p); + return 0; +} diff --git a/3rdparty/expat/expat.pc.in b/3rdparty/expat/expat.pc.in new file mode 100644 index 0000000..bdfa47f --- /dev/null +++ b/3rdparty/expat/expat.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: @_EXPAT_OUTPUT_NAME@ +Version: @PACKAGE_VERSION@ +Description: expat XML parser +URL: http://www.libexpat.org +Libs: -L${libdir} -l@_EXPAT_OUTPUT_NAME@ +Cflags: -I${includedir} diff --git a/3rdparty/expat/expat_config.h.cmake b/3rdparty/expat/expat_config.h.cmake new file mode 100644 index 0000000..173fed1 --- /dev/null +++ b/3rdparty/expat/expat_config.h.cmake @@ -0,0 +1,115 @@ +/* expat_config.h.cmake. Based upon generated expat_config.h.in. */ + +/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +#cmakedefine BYTEORDER @BYTEORDER@ + +/* Define to 1 if you have the `arc4random' function. */ +#cmakedefine HAVE_ARC4RANDOM + +/* Define to 1 if you have the `arc4random_buf' function. */ +#cmakedefine HAVE_ARC4RANDOM_BUF + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_FCNTL_H + +/* Define to 1 if you have the `getpagesize' function. */ +#cmakedefine HAVE_GETPAGESIZE + +/* Define to 1 if you have the `getrandom' function. */ +#cmakedefine HAVE_GETRANDOM + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_INTTYPES_H + +/* Define to 1 if you have the `bsd' library (-lbsd). */ +#cmakedefine HAVE_LIBBSD + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MEMORY_H + +/* Define to 1 if you have a working `mmap' system call. */ +#cmakedefine HAVE_MMAP + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRING_H + +/* Define to 1 if you have `syscall' and `SYS_getrandom'. */ +#cmakedefine HAVE_SYSCALL_GETRANDOM + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UNISTD_H + +/* Name of package */ +#define PACKAGE "@PACKAGE_NAME@" + +/* Define to the address where bug reports for this package should be sent. */ +#cmakedefine PACKAGE_BUGREPORT "@PACKAGE_BUGREPORT@" + +/* Define to the full name of this package. */ +#cmakedefine PACKAGE_NAME "@PACKAGE_NAME@" + +/* Define to the full name and version of this package. */ +#cmakedefine PACKAGE_STRING "@PACKAGE_STRING@" + +/* Define to the one symbol short name of this package. */ +#cmakedefine PACKAGE_TARNAME "@PACKAGE_TARNAME@" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#cmakedefine PACKAGE_VERSION "@PACKAGE_VERSION@" + +/* Define to 1 if you have the ANSI C header files. */ +#cmakedefine STDC_HEADERS + +/* whether byteorder is bigendian */ +#cmakedefine WORDS_BIGENDIAN + +/* Define to allow retrieving the byte offsets for attribute names and values. + */ +#cmakedefine XML_ATTR_INFO + +/* Define to specify how much context to retain around the current parse + point. */ +#cmakedefine XML_CONTEXT_BYTES @XML_CONTEXT_BYTES@ + +#if ! defined(_WIN32) +/* Define to include code reading entropy from `/dev/urandom'. */ + #cmakedefine XML_DEV_URANDOM +#endif + +/* Define to make parameter entity parsing functionality available. */ +#cmakedefine XML_DTD + +/* Define to make XML Namespaces functionality available. */ +#cmakedefine XML_NS + +/* Define to __FUNCTION__ or "" if `__func__' does not conform to ANSI C. */ +#ifdef _MSC_VER +# define __func__ __FUNCTION__ +#endif + +/* Define to `long' if does not define. */ +#cmakedefine off_t @OFF_T@ + +/* Define to `unsigned' if does not define. */ +#cmakedefine size_t @SIZE_T@ diff --git a/3rdparty/expat/expat_config.h.in b/3rdparty/expat/expat_config.h.in new file mode 100644 index 0000000..59207b4 --- /dev/null +++ b/3rdparty/expat/expat_config.h.in @@ -0,0 +1,132 @@ +/* expat_config.h.in. Generated from configure.ac by autoheader. */ + +/* Define if building universal (internal helper macro) */ +#undef AC_APPLE_UNIVERSAL_BUILD + +/* 1234 = LILENDIAN, 4321 = BIGENDIAN */ +#undef BYTEORDER + +/* Define to 1 if you have the `arc4random' function. */ +#undef HAVE_ARC4RANDOM + +/* Define to 1 if you have the `arc4random_buf' function. */ +#undef HAVE_ARC4RANDOM_BUF + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `getpagesize' function. */ +#undef HAVE_GETPAGESIZE + +/* Define to 1 if you have the `getrandom' function. */ +#undef HAVE_GETRANDOM + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `bsd' library (-lbsd). */ +#undef HAVE_LIBBSD + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have `syscall' and `SYS_getrandom'. */ +#undef HAVE_SYSCALL_GETRANDOM + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#undef LT_OBJDIR + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif + +/* Define to allow retrieving the byte offsets for attribute names and values. + */ +#undef XML_ATTR_INFO + +/* Define to specify how much context to retain around the current parse + point. */ +#undef XML_CONTEXT_BYTES + +/* Define to include code reading entropy from `/dev/urandom'. */ +#undef XML_DEV_URANDOM + +/* Define to make parameter entity parsing functionality available. */ +#undef XML_DTD + +/* Define to make XML Namespaces functionality available. */ +#undef XML_NS + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `long int' if does not define. */ +#undef off_t + +/* Define to `unsigned int' if does not define. */ +#undef size_t diff --git a/3rdparty/expat/fix-xmltest-log.sh b/3rdparty/expat/fix-xmltest-log.sh new file mode 100755 index 0000000..c143e93 --- /dev/null +++ b/3rdparty/expat/fix-xmltest-log.sh @@ -0,0 +1,48 @@ +#! /usr/bin/env bash +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2019 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +set -e + +filename="${1:-tests/xmltest.log}" + +dos2unix "${filename}" + +tempfile="$(mktemp)" +sed \ + -e 's/^wine: Call .* msvcrt\.dll\._wperror, aborting$/ibm49i02.dtd: No such file or directory/' \ + \ + -e '/^wine: /d' \ + -e '/^Application tried to create a window, but no driver could be loaded.$/d' \ + -e '/^Make sure that your X server is running and that $DISPLAY is set correctly.$/d' \ + -e '/^err:systray:initialize_systray Could not create tray window$/d' \ + -e '/^In ibm\/invalid\/P49\/: Unhandled exception: unimplemented .\+/d' \ + \ + "${filename}" > "${tempfile}" +mv "${tempfile}" "${filename}" diff --git a/3rdparty/expat/lib/Makefile.am b/3rdparty/expat/lib/Makefile.am new file mode 100644 index 0000000..05343e2 --- /dev/null +++ b/3rdparty/expat/lib/Makefile.am @@ -0,0 +1,76 @@ +# +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +include_HEADERS = \ + ../expat_config.h \ + expat.h \ + expat_external.h + +lib_LTLIBRARIES = libexpat.la + +libexpat_la_LDFLAGS = \ + @AM_LDFLAGS@ \ + -no-undefined \ + -version-info @LIBCURRENT@:@LIBREVISION@:@LIBAGE@ + +libexpat_la_SOURCES = \ + xmlparse.c \ + xmltok.c \ + xmlrole.c + +doc_DATA = \ + ../AUTHORS \ + ../Changes + +install-data-hook: + cd "$(DESTDIR)$(docdir)" && $(am__mv) Changes changelog + +uninstall-local: + $(RM) "$(DESTDIR)$(docdir)/changelog" + +EXTRA_DIST = \ + ascii.h \ + asciitab.h \ + expat_external.h \ + expat.h \ + iasciitab.h \ + internal.h \ + latin1tab.h \ + libexpat.def \ + libexpatw.def \ + nametab.h \ + siphash.h \ + utf8tab.h \ + winconfig.h \ + xmlrole.h \ + xmltok.h \ + xmltok_impl.c \ + xmltok_impl.h \ + xmltok_ns.c diff --git a/3rdparty/expat/lib/Makefile.in b/3rdparty/expat/lib/Makefile.in new file mode 100644 index 0000000..10f20d5 --- /dev/null +++ b/3rdparty/expat/lib/Makefile.in @@ -0,0 +1,810 @@ +# Makefile.in generated by automake 1.16.2 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2020 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = lib +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/conftools/ax-require-defined.m4 \ + $(top_srcdir)/conftools/ax-check-compile-flag.m4 \ + $(top_srcdir)/conftools/ax-check-link-flag.m4 \ + $(top_srcdir)/conftools/ax-append-flag.m4 \ + $(top_srcdir)/conftools/ax-append-compile-flags.m4 \ + $(top_srcdir)/conftools/ax-append-link-flags.m4 \ + $(top_srcdir)/conftools/expatcfg-compiler-supports-visibility.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/expat_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(docdir)" \ + "$(DESTDIR)$(includedir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +libexpat_la_LIBADD = +am_libexpat_la_OBJECTS = xmlparse.lo xmltok.lo xmlrole.lo +libexpat_la_OBJECTS = $(am_libexpat_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libexpat_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libexpat_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/conftools/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/xmlparse.Plo ./$(DEPDIR)/xmlrole.Plo \ + ./$(DEPDIR)/xmltok.Plo +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libexpat_la_SOURCES) +DIST_SOURCES = $(libexpat_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(doc_DATA) +HEADERS = $(include_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/conftools/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILEMAP = @FILEMAP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBAGE = @LIBAGE@ +LIBCURRENT = @LIBCURRENT@ +LIBOBJS = @LIBOBJS@ +LIBREVISION = @LIBREVISION@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +_EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +include_HEADERS = \ + ../expat_config.h \ + expat.h \ + expat_external.h + +lib_LTLIBRARIES = libexpat.la +libexpat_la_LDFLAGS = \ + @AM_LDFLAGS@ \ + -no-undefined \ + -version-info @LIBCURRENT@:@LIBREVISION@:@LIBAGE@ + +libexpat_la_SOURCES = \ + xmlparse.c \ + xmltok.c \ + xmlrole.c + +doc_DATA = \ + ../AUTHORS \ + ../Changes + +EXTRA_DIST = \ + ascii.h \ + asciitab.h \ + expat_external.h \ + expat.h \ + iasciitab.h \ + internal.h \ + latin1tab.h \ + libexpat.def \ + libexpatw.def \ + nametab.h \ + siphash.h \ + utf8tab.h \ + winconfig.h \ + xmlrole.h \ + xmltok.h \ + xmltok_impl.c \ + xmltok_impl.h \ + xmltok_ns.c + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu lib/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libexpat.la: $(libexpat_la_OBJECTS) $(libexpat_la_DEPENDENCIES) $(EXTRA_libexpat_la_DEPENDENCIES) + $(AM_V_CCLD)$(libexpat_la_LINK) -rpath $(libdir) $(libexpat_la_OBJECTS) $(libexpat_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlparse.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlrole.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmltok.Plo@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-docDATA: $(doc_DATA) + @$(NORMAL_INSTALL) + @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ + done + +uninstall-docDATA: + @$(NORMAL_UNINSTALL) + @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) +install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ + done + +uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/xmlparse.Plo + -rm -f ./$(DEPDIR)/xmlrole.Plo + -rm -f ./$(DEPDIR)/xmltok.Plo + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-docDATA install-includeHEADERS + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/xmlparse.Plo + -rm -f ./$(DEPDIR)/xmlrole.Plo + -rm -f ./$(DEPDIR)/xmltok.Plo + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-docDATA uninstall-includeHEADERS \ + uninstall-libLTLIBRARIES uninstall-local + +.MAKE: install-am install-data-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-data-hook install-docDATA install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-includeHEADERS install-info \ + install-info-am install-libLTLIBRARIES install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-docDATA \ + uninstall-includeHEADERS uninstall-libLTLIBRARIES \ + uninstall-local + +.PRECIOUS: Makefile + + +install-data-hook: + cd "$(DESTDIR)$(docdir)" && $(am__mv) Changes changelog + +uninstall-local: + $(RM) "$(DESTDIR)$(docdir)/changelog" + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/3rdparty/expat/lib/ascii.h b/3rdparty/expat/lib/ascii.h new file mode 100644 index 0000000..c3587e5 --- /dev/null +++ b/3rdparty/expat/lib/ascii.h @@ -0,0 +1,120 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#define ASCII_A 0x41 +#define ASCII_B 0x42 +#define ASCII_C 0x43 +#define ASCII_D 0x44 +#define ASCII_E 0x45 +#define ASCII_F 0x46 +#define ASCII_G 0x47 +#define ASCII_H 0x48 +#define ASCII_I 0x49 +#define ASCII_J 0x4A +#define ASCII_K 0x4B +#define ASCII_L 0x4C +#define ASCII_M 0x4D +#define ASCII_N 0x4E +#define ASCII_O 0x4F +#define ASCII_P 0x50 +#define ASCII_Q 0x51 +#define ASCII_R 0x52 +#define ASCII_S 0x53 +#define ASCII_T 0x54 +#define ASCII_U 0x55 +#define ASCII_V 0x56 +#define ASCII_W 0x57 +#define ASCII_X 0x58 +#define ASCII_Y 0x59 +#define ASCII_Z 0x5A + +#define ASCII_a 0x61 +#define ASCII_b 0x62 +#define ASCII_c 0x63 +#define ASCII_d 0x64 +#define ASCII_e 0x65 +#define ASCII_f 0x66 +#define ASCII_g 0x67 +#define ASCII_h 0x68 +#define ASCII_i 0x69 +#define ASCII_j 0x6A +#define ASCII_k 0x6B +#define ASCII_l 0x6C +#define ASCII_m 0x6D +#define ASCII_n 0x6E +#define ASCII_o 0x6F +#define ASCII_p 0x70 +#define ASCII_q 0x71 +#define ASCII_r 0x72 +#define ASCII_s 0x73 +#define ASCII_t 0x74 +#define ASCII_u 0x75 +#define ASCII_v 0x76 +#define ASCII_w 0x77 +#define ASCII_x 0x78 +#define ASCII_y 0x79 +#define ASCII_z 0x7A + +#define ASCII_0 0x30 +#define ASCII_1 0x31 +#define ASCII_2 0x32 +#define ASCII_3 0x33 +#define ASCII_4 0x34 +#define ASCII_5 0x35 +#define ASCII_6 0x36 +#define ASCII_7 0x37 +#define ASCII_8 0x38 +#define ASCII_9 0x39 + +#define ASCII_TAB 0x09 +#define ASCII_SPACE 0x20 +#define ASCII_EXCL 0x21 +#define ASCII_QUOT 0x22 +#define ASCII_AMP 0x26 +#define ASCII_APOS 0x27 +#define ASCII_MINUS 0x2D +#define ASCII_PERIOD 0x2E +#define ASCII_COLON 0x3A +#define ASCII_SEMI 0x3B +#define ASCII_LT 0x3C +#define ASCII_EQUALS 0x3D +#define ASCII_GT 0x3E +#define ASCII_LSQB 0x5B +#define ASCII_RSQB 0x5D +#define ASCII_UNDERSCORE 0x5F +#define ASCII_LPAREN 0x28 +#define ASCII_RPAREN 0x29 +#define ASCII_FF 0x0C +#define ASCII_SLASH 0x2F +#define ASCII_HASH 0x23 +#define ASCII_PIPE 0x7C +#define ASCII_COMMA 0x2C diff --git a/3rdparty/expat/lib/asciitab.h b/3rdparty/expat/lib/asciitab.h new file mode 100644 index 0000000..63b1d1b --- /dev/null +++ b/3rdparty/expat/lib/asciitab.h @@ -0,0 +1,64 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, + /* 0x0C */ BT_NONXML, BT_CR, BT_NONXML, BT_NONXML, + /* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, + /* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, + /* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, + /* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, + /* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, + /* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, + /* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, + /* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, + /* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, + /* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, + /* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, + /* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, + /* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, + /* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, + /* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, + /* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, diff --git a/3rdparty/expat/lib/expat.h b/3rdparty/expat/lib/expat.h new file mode 100644 index 0000000..cb828db --- /dev/null +++ b/3rdparty/expat/lib/expat.h @@ -0,0 +1,1024 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef Expat_INCLUDED +#define Expat_INCLUDED 1 + +#include +#include "expat_external.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct XML_ParserStruct; +typedef struct XML_ParserStruct *XML_Parser; + +typedef unsigned char XML_Bool; +#define XML_TRUE ((XML_Bool)1) +#define XML_FALSE ((XML_Bool)0) + +/* The XML_Status enum gives the possible return values for several + API functions. The preprocessor #defines are included so this + stanza can be added to code that still needs to support older + versions of Expat 1.95.x: + + #ifndef XML_STATUS_OK + #define XML_STATUS_OK 1 + #define XML_STATUS_ERROR 0 + #endif + + Otherwise, the #define hackery is quite ugly and would have been + dropped. +*/ +enum XML_Status { + XML_STATUS_ERROR = 0, +#define XML_STATUS_ERROR XML_STATUS_ERROR + XML_STATUS_OK = 1, +#define XML_STATUS_OK XML_STATUS_OK + XML_STATUS_SUSPENDED = 2 +#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED +}; + +enum XML_Error { + XML_ERROR_NONE, + XML_ERROR_NO_MEMORY, + XML_ERROR_SYNTAX, + XML_ERROR_NO_ELEMENTS, + XML_ERROR_INVALID_TOKEN, + XML_ERROR_UNCLOSED_TOKEN, + XML_ERROR_PARTIAL_CHAR, + XML_ERROR_TAG_MISMATCH, + XML_ERROR_DUPLICATE_ATTRIBUTE, + XML_ERROR_JUNK_AFTER_DOC_ELEMENT, + XML_ERROR_PARAM_ENTITY_REF, + XML_ERROR_UNDEFINED_ENTITY, + XML_ERROR_RECURSIVE_ENTITY_REF, + XML_ERROR_ASYNC_ENTITY, + XML_ERROR_BAD_CHAR_REF, + XML_ERROR_BINARY_ENTITY_REF, + XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, + XML_ERROR_MISPLACED_XML_PI, + XML_ERROR_UNKNOWN_ENCODING, + XML_ERROR_INCORRECT_ENCODING, + XML_ERROR_UNCLOSED_CDATA_SECTION, + XML_ERROR_EXTERNAL_ENTITY_HANDLING, + XML_ERROR_NOT_STANDALONE, + XML_ERROR_UNEXPECTED_STATE, + XML_ERROR_ENTITY_DECLARED_IN_PE, + XML_ERROR_FEATURE_REQUIRES_XML_DTD, + XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING, + /* Added in 1.95.7. */ + XML_ERROR_UNBOUND_PREFIX, + /* Added in 1.95.8. */ + XML_ERROR_UNDECLARING_PREFIX, + XML_ERROR_INCOMPLETE_PE, + XML_ERROR_XML_DECL, + XML_ERROR_TEXT_DECL, + XML_ERROR_PUBLICID, + XML_ERROR_SUSPENDED, + XML_ERROR_NOT_SUSPENDED, + XML_ERROR_ABORTED, + XML_ERROR_FINISHED, + XML_ERROR_SUSPEND_PE, + /* Added in 2.0. */ + XML_ERROR_RESERVED_PREFIX_XML, + XML_ERROR_RESERVED_PREFIX_XMLNS, + XML_ERROR_RESERVED_NAMESPACE_URI, + /* Added in 2.2.1. */ + XML_ERROR_INVALID_ARGUMENT +}; + +enum XML_Content_Type { + XML_CTYPE_EMPTY = 1, + XML_CTYPE_ANY, + XML_CTYPE_MIXED, + XML_CTYPE_NAME, + XML_CTYPE_CHOICE, + XML_CTYPE_SEQ +}; + +enum XML_Content_Quant { + XML_CQUANT_NONE, + XML_CQUANT_OPT, + XML_CQUANT_REP, + XML_CQUANT_PLUS +}; + +/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be + XML_CQUANT_NONE, and the other fields will be zero or NULL. + If type == XML_CTYPE_MIXED, then quant will be NONE or REP and + numchildren will contain number of elements that may be mixed in + and children point to an array of XML_Content cells that will be + all of XML_CTYPE_NAME type with no quantification. + + If type == XML_CTYPE_NAME, then the name points to the name, and + the numchildren field will be zero and children will be NULL. The + quant fields indicates any quantifiers placed on the name. + + CHOICE and SEQ will have name NULL, the number of children in + numchildren and children will point, recursively, to an array + of XML_Content cells. + + The EMPTY, ANY, and MIXED types will only occur at top level. +*/ + +typedef struct XML_cp XML_Content; + +struct XML_cp { + enum XML_Content_Type type; + enum XML_Content_Quant quant; + XML_Char *name; + unsigned int numchildren; + XML_Content *children; +}; + +/* This is called for an element declaration. See above for + description of the model argument. It's the caller's responsibility + to free model when finished with it. +*/ +typedef void(XMLCALL *XML_ElementDeclHandler)(void *userData, + const XML_Char *name, + XML_Content *model); + +XMLPARSEAPI(void) +XML_SetElementDeclHandler(XML_Parser parser, XML_ElementDeclHandler eldecl); + +/* The Attlist declaration handler is called for *each* attribute. So + a single Attlist declaration with multiple attributes declared will + generate multiple calls to this handler. The "default" parameter + may be NULL in the case of the "#IMPLIED" or "#REQUIRED" + keyword. The "isrequired" parameter will be true and the default + value will be NULL in the case of "#REQUIRED". If "isrequired" is + true and default is non-NULL, then this is a "#FIXED" default. +*/ +typedef void(XMLCALL *XML_AttlistDeclHandler)( + void *userData, const XML_Char *elname, const XML_Char *attname, + const XML_Char *att_type, const XML_Char *dflt, int isrequired); + +XMLPARSEAPI(void) +XML_SetAttlistDeclHandler(XML_Parser parser, XML_AttlistDeclHandler attdecl); + +/* The XML declaration handler is called for *both* XML declarations + and text declarations. The way to distinguish is that the version + parameter will be NULL for text declarations. The encoding + parameter may be NULL for XML declarations. The standalone + parameter will be -1, 0, or 1 indicating respectively that there + was no standalone parameter in the declaration, that it was given + as no, or that it was given as yes. +*/ +typedef void(XMLCALL *XML_XmlDeclHandler)(void *userData, + const XML_Char *version, + const XML_Char *encoding, + int standalone); + +XMLPARSEAPI(void) +XML_SetXmlDeclHandler(XML_Parser parser, XML_XmlDeclHandler xmldecl); + +typedef struct { + void *(*malloc_fcn)(size_t size); + void *(*realloc_fcn)(void *ptr, size_t size); + void (*free_fcn)(void *ptr); +} XML_Memory_Handling_Suite; + +/* Constructs a new parser; encoding is the encoding specified by the + external protocol or NULL if there is none specified. +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreate(const XML_Char *encoding); + +/* Constructs a new parser and namespace processor. Element type + names and attribute names that belong to a namespace will be + expanded; unprefixed attribute names are never expanded; unprefixed + element type names are expanded only if there is a default + namespace. The expanded name is the concatenation of the namespace + URI, the namespace separator character, and the local part of the + name. If the namespace separator is '\0' then the namespace URI + and the local part will be concatenated without any separator. + It is a programming error to use the separator '\0' with namespace + triplets (see XML_SetReturnNSTriplet). +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); + +/* Constructs a new parser using the memory management suite referred to + by memsuite. If memsuite is NULL, then use the standard library memory + suite. If namespaceSeparator is non-NULL it creates a parser with + namespace processing as described above. The character pointed at + will serve as the namespace separator. + + All further memory operations used for the created parser will come from + the given suite. +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreate_MM(const XML_Char *encoding, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *namespaceSeparator); + +/* Prepare a parser object to be re-used. This is particularly + valuable when memory allocation overhead is disproportionately high, + such as when a large number of small documnents need to be parsed. + All handlers are cleared from the parser, except for the + unknownEncodingHandler. The parser's external state is re-initialized + except for the values of ns and ns_triplets. + + Added in Expat 1.95.3. +*/ +XMLPARSEAPI(XML_Bool) +XML_ParserReset(XML_Parser parser, const XML_Char *encoding); + +/* atts is array of name/value pairs, terminated by 0; + names and values are 0 terminated. +*/ +typedef void(XMLCALL *XML_StartElementHandler)(void *userData, + const XML_Char *name, + const XML_Char **atts); + +typedef void(XMLCALL *XML_EndElementHandler)(void *userData, + const XML_Char *name); + +/* s is not 0 terminated. */ +typedef void(XMLCALL *XML_CharacterDataHandler)(void *userData, + const XML_Char *s, int len); + +/* target and data are 0 terminated */ +typedef void(XMLCALL *XML_ProcessingInstructionHandler)(void *userData, + const XML_Char *target, + const XML_Char *data); + +/* data is 0 terminated */ +typedef void(XMLCALL *XML_CommentHandler)(void *userData, const XML_Char *data); + +typedef void(XMLCALL *XML_StartCdataSectionHandler)(void *userData); +typedef void(XMLCALL *XML_EndCdataSectionHandler)(void *userData); + +/* This is called for any characters in the XML document for which + there is no applicable handler. This includes both characters that + are part of markup which is of a kind that is not reported + (comments, markup declarations), or characters that are part of a + construct which could be reported but for which no handler has been + supplied. The characters are passed exactly as they were in the XML + document except that they will be encoded in UTF-8 or UTF-16. + Line boundaries are not normalized. Note that a byte order mark + character is not passed to the default handler. There are no + guarantees about how characters are divided between calls to the + default handler: for example, a comment might be split between + multiple calls. +*/ +typedef void(XMLCALL *XML_DefaultHandler)(void *userData, const XML_Char *s, + int len); + +/* This is called for the start of the DOCTYPE declaration, before + any DTD or internal subset is parsed. +*/ +typedef void(XMLCALL *XML_StartDoctypeDeclHandler)(void *userData, + const XML_Char *doctypeName, + const XML_Char *sysid, + const XML_Char *pubid, + int has_internal_subset); + +/* This is called for the start of the DOCTYPE declaration when the + closing > is encountered, but after processing any external + subset. +*/ +typedef void(XMLCALL *XML_EndDoctypeDeclHandler)(void *userData); + +/* This is called for entity declarations. The is_parameter_entity + argument will be non-zero if the entity is a parameter entity, zero + otherwise. + + For internal entities (), value will + be non-NULL and systemId, publicID, and notationName will be NULL. + The value string is NOT null-terminated; the length is provided in + the value_length argument. Since it is legal to have zero-length + values, do not use this argument to test for internal entities. + + For external entities, value will be NULL and systemId will be + non-NULL. The publicId argument will be NULL unless a public + identifier was provided. The notationName argument will have a + non-NULL value only for unparsed entity declarations. + + Note that is_parameter_entity can't be changed to XML_Bool, since + that would break binary compatibility. +*/ +typedef void(XMLCALL *XML_EntityDeclHandler)( + void *userData, const XML_Char *entityName, int is_parameter_entity, + const XML_Char *value, int value_length, const XML_Char *base, + const XML_Char *systemId, const XML_Char *publicId, + const XML_Char *notationName); + +XMLPARSEAPI(void) +XML_SetEntityDeclHandler(XML_Parser parser, XML_EntityDeclHandler handler); + +/* OBSOLETE -- OBSOLETE -- OBSOLETE + This handler has been superseded by the EntityDeclHandler above. + It is provided here for backward compatibility. + + This is called for a declaration of an unparsed (NDATA) entity. + The base argument is whatever was set by XML_SetBase. The + entityName, systemId and notationName arguments will never be + NULL. The other arguments may be. +*/ +typedef void(XMLCALL *XML_UnparsedEntityDeclHandler)( + void *userData, const XML_Char *entityName, const XML_Char *base, + const XML_Char *systemId, const XML_Char *publicId, + const XML_Char *notationName); + +/* This is called for a declaration of notation. The base argument is + whatever was set by XML_SetBase. The notationName will never be + NULL. The other arguments can be. +*/ +typedef void(XMLCALL *XML_NotationDeclHandler)(void *userData, + const XML_Char *notationName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + +/* When namespace processing is enabled, these are called once for + each namespace declaration. The call to the start and end element + handlers occur between the calls to the start and end namespace + declaration handlers. For an xmlns attribute, prefix will be + NULL. For an xmlns="" attribute, uri will be NULL. +*/ +typedef void(XMLCALL *XML_StartNamespaceDeclHandler)(void *userData, + const XML_Char *prefix, + const XML_Char *uri); + +typedef void(XMLCALL *XML_EndNamespaceDeclHandler)(void *userData, + const XML_Char *prefix); + +/* This is called if the document is not standalone, that is, it has an + external subset or a reference to a parameter entity, but does not + have standalone="yes". If this handler returns XML_STATUS_ERROR, + then processing will not continue, and the parser will return a + XML_ERROR_NOT_STANDALONE error. + If parameter entity parsing is enabled, then in addition to the + conditions above this handler will only be called if the referenced + entity was actually read. +*/ +typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData); + +/* This is called for a reference to an external parsed general + entity. The referenced entity is not automatically parsed. The + application can parse it immediately or later using + XML_ExternalEntityParserCreate. + + The parser argument is the parser parsing the entity containing the + reference; it can be passed as the parser argument to + XML_ExternalEntityParserCreate. The systemId argument is the + system identifier as specified in the entity declaration; it will + not be NULL. + + The base argument is the system identifier that should be used as + the base for resolving systemId if systemId was relative; this is + set by XML_SetBase; it may be NULL. + + The publicId argument is the public identifier as specified in the + entity declaration, or NULL if none was specified; the whitespace + in the public identifier will have been normalized as required by + the XML spec. + + The context argument specifies the parsing context in the format + expected by the context argument to XML_ExternalEntityParserCreate; + context is valid only until the handler returns, so if the + referenced entity is to be parsed later, it must be copied. + context is NULL only when the entity is a parameter entity. + + The handler should return XML_STATUS_ERROR if processing should not + continue because of a fatal error in the handling of the external + entity. In this case the calling parser will return an + XML_ERROR_EXTERNAL_ENTITY_HANDLING error. + + Note that unlike other handlers the first argument is the parser, + not userData. +*/ +typedef int(XMLCALL *XML_ExternalEntityRefHandler)(XML_Parser parser, + const XML_Char *context, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + +/* This is called in two situations: + 1) An entity reference is encountered for which no declaration + has been read *and* this is not an error. + 2) An internal entity reference is read, but not expanded, because + XML_SetDefaultHandler has been called. + Note: skipped parameter entities in declarations and skipped general + entities in attribute values cannot be reported, because + the event would be out of sync with the reporting of the + declarations or attribute values +*/ +typedef void(XMLCALL *XML_SkippedEntityHandler)(void *userData, + const XML_Char *entityName, + int is_parameter_entity); + +/* This structure is filled in by the XML_UnknownEncodingHandler to + provide information to the parser about encodings that are unknown + to the parser. + + The map[b] member gives information about byte sequences whose + first byte is b. + + If map[b] is c where c is >= 0, then b by itself encodes the + Unicode scalar value c. + + If map[b] is -1, then the byte sequence is malformed. + + If map[b] is -n, where n >= 2, then b is the first byte of an + n-byte sequence that encodes a single Unicode scalar value. + + The data member will be passed as the first argument to the convert + function. + + The convert function is used to convert multibyte sequences; s will + point to a n-byte sequence where map[(unsigned char)*s] == -n. The + convert function must return the Unicode scalar value represented + by this byte sequence or -1 if the byte sequence is malformed. + + The convert function may be NULL if the encoding is a single-byte + encoding, that is if map[b] >= -1 for all bytes b. + + When the parser is finished with the encoding, then if release is + not NULL, it will call release passing it the data member; once + release has been called, the convert function will not be called + again. + + Expat places certain restrictions on the encodings that are supported + using this mechanism. + + 1. Every ASCII character that can appear in a well-formed XML document, + other than the characters + + $@\^`{}~ + + must be represented by a single byte, and that byte must be the + same byte that represents that character in ASCII. + + 2. No character may require more than 4 bytes to encode. + + 3. All characters encoded must have Unicode scalar values <= + 0xFFFF, (i.e., characters that would be encoded by surrogates in + UTF-16 are not allowed). Note that this restriction doesn't + apply to the built-in support for UTF-8 and UTF-16. + + 4. No Unicode character may be encoded by more than one distinct + sequence of bytes. +*/ +typedef struct { + int map[256]; + void *data; + int(XMLCALL *convert)(void *data, const char *s); + void(XMLCALL *release)(void *data); +} XML_Encoding; + +/* This is called for an encoding that is unknown to the parser. + + The encodingHandlerData argument is that which was passed as the + second argument to XML_SetUnknownEncodingHandler. + + The name argument gives the name of the encoding as specified in + the encoding declaration. + + If the callback can provide information about the encoding, it must + fill in the XML_Encoding structure, and return XML_STATUS_OK. + Otherwise it must return XML_STATUS_ERROR. + + If info does not describe a suitable encoding, then the parser will + return an XML_UNKNOWN_ENCODING error. +*/ +typedef int(XMLCALL *XML_UnknownEncodingHandler)(void *encodingHandlerData, + const XML_Char *name, + XML_Encoding *info); + +XMLPARSEAPI(void) +XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start, + XML_EndElementHandler end); + +XMLPARSEAPI(void) +XML_SetStartElementHandler(XML_Parser parser, XML_StartElementHandler handler); + +XMLPARSEAPI(void) +XML_SetEndElementHandler(XML_Parser parser, XML_EndElementHandler handler); + +XMLPARSEAPI(void) +XML_SetCharacterDataHandler(XML_Parser parser, + XML_CharacterDataHandler handler); + +XMLPARSEAPI(void) +XML_SetProcessingInstructionHandler(XML_Parser parser, + XML_ProcessingInstructionHandler handler); +XMLPARSEAPI(void) +XML_SetCommentHandler(XML_Parser parser, XML_CommentHandler handler); + +XMLPARSEAPI(void) +XML_SetCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start, + XML_EndCdataSectionHandler end); + +XMLPARSEAPI(void) +XML_SetStartCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start); + +XMLPARSEAPI(void) +XML_SetEndCdataSectionHandler(XML_Parser parser, + XML_EndCdataSectionHandler end); + +/* This sets the default handler and also inhibits expansion of + internal entities. These entity references will be passed to the + default handler, or to the skipped entity handler, if one is set. +*/ +XMLPARSEAPI(void) +XML_SetDefaultHandler(XML_Parser parser, XML_DefaultHandler handler); + +/* This sets the default handler but does not inhibit expansion of + internal entities. The entity reference will not be passed to the + default handler. +*/ +XMLPARSEAPI(void) +XML_SetDefaultHandlerExpand(XML_Parser parser, XML_DefaultHandler handler); + +XMLPARSEAPI(void) +XML_SetDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start, + XML_EndDoctypeDeclHandler end); + +XMLPARSEAPI(void) +XML_SetStartDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start); + +XMLPARSEAPI(void) +XML_SetEndDoctypeDeclHandler(XML_Parser parser, XML_EndDoctypeDeclHandler end); + +XMLPARSEAPI(void) +XML_SetUnparsedEntityDeclHandler(XML_Parser parser, + XML_UnparsedEntityDeclHandler handler); + +XMLPARSEAPI(void) +XML_SetNotationDeclHandler(XML_Parser parser, XML_NotationDeclHandler handler); + +XMLPARSEAPI(void) +XML_SetNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start, + XML_EndNamespaceDeclHandler end); + +XMLPARSEAPI(void) +XML_SetStartNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start); + +XMLPARSEAPI(void) +XML_SetEndNamespaceDeclHandler(XML_Parser parser, + XML_EndNamespaceDeclHandler end); + +XMLPARSEAPI(void) +XML_SetNotStandaloneHandler(XML_Parser parser, + XML_NotStandaloneHandler handler); + +XMLPARSEAPI(void) +XML_SetExternalEntityRefHandler(XML_Parser parser, + XML_ExternalEntityRefHandler handler); + +/* If a non-NULL value for arg is specified here, then it will be + passed as the first argument to the external entity ref handler + instead of the parser object. +*/ +XMLPARSEAPI(void) +XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg); + +XMLPARSEAPI(void) +XML_SetSkippedEntityHandler(XML_Parser parser, + XML_SkippedEntityHandler handler); + +XMLPARSEAPI(void) +XML_SetUnknownEncodingHandler(XML_Parser parser, + XML_UnknownEncodingHandler handler, + void *encodingHandlerData); + +/* This can be called within a handler for a start element, end + element, processing instruction or character data. It causes the + corresponding markup to be passed to the default handler. +*/ +XMLPARSEAPI(void) +XML_DefaultCurrent(XML_Parser parser); + +/* If do_nst is non-zero, and namespace processing is in effect, and + a name has a prefix (i.e. an explicit namespace qualifier) then + that name is returned as a triplet in a single string separated by + the separator character specified when the parser was created: URI + + sep + local_name + sep + prefix. + + If do_nst is zero, then namespace information is returned in the + default manner (URI + sep + local_name) whether or not the name + has a prefix. + + Note: Calling XML_SetReturnNSTriplet after XML_Parse or + XML_ParseBuffer has no effect. +*/ + +XMLPARSEAPI(void) +XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); + +/* This value is passed as the userData argument to callbacks. */ +XMLPARSEAPI(void) +XML_SetUserData(XML_Parser parser, void *userData); + +/* Returns the last value set by XML_SetUserData or NULL. */ +#define XML_GetUserData(parser) (*(void **)(parser)) + +/* This is equivalent to supplying an encoding argument to + XML_ParserCreate. On success XML_SetEncoding returns non-zero, + zero otherwise. + Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer + has no effect and returns XML_STATUS_ERROR. +*/ +XMLPARSEAPI(enum XML_Status) +XML_SetEncoding(XML_Parser parser, const XML_Char *encoding); + +/* If this function is called, then the parser will be passed as the + first argument to callbacks instead of userData. The userData will + still be accessible using XML_GetUserData. +*/ +XMLPARSEAPI(void) +XML_UseParserAsHandlerArg(XML_Parser parser); + +/* If useDTD == XML_TRUE is passed to this function, then the parser + will assume that there is an external subset, even if none is + specified in the document. In such a case the parser will call the + externalEntityRefHandler with a value of NULL for the systemId + argument (the publicId and context arguments will be NULL as well). + Note: For the purpose of checking WFC: Entity Declared, passing + useDTD == XML_TRUE will make the parser behave as if the document + had a DTD with an external subset. + Note: If this function is called, then this must be done before + the first call to XML_Parse or XML_ParseBuffer, since it will + have no effect after that. Returns + XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING. + Note: If the document does not have a DOCTYPE declaration at all, + then startDoctypeDeclHandler and endDoctypeDeclHandler will not + be called, despite an external subset being parsed. + Note: If XML_DTD is not defined when Expat is compiled, returns + XML_ERROR_FEATURE_REQUIRES_XML_DTD. + Note: If parser == NULL, returns XML_ERROR_INVALID_ARGUMENT. +*/ +XMLPARSEAPI(enum XML_Error) +XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD); + +/* Sets the base to be used for resolving relative URIs in system + identifiers in declarations. Resolving relative identifiers is + left to the application: this value will be passed through as the + base argument to the XML_ExternalEntityRefHandler, + XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base + argument will be copied. Returns XML_STATUS_ERROR if out of memory, + XML_STATUS_OK otherwise. +*/ +XMLPARSEAPI(enum XML_Status) +XML_SetBase(XML_Parser parser, const XML_Char *base); + +XMLPARSEAPI(const XML_Char *) +XML_GetBase(XML_Parser parser); + +/* Returns the number of the attribute/value pairs passed in last call + to the XML_StartElementHandler that were specified in the start-tag + rather than defaulted. Each attribute/value pair counts as 2; thus + this corresponds to an index into the atts array passed to the + XML_StartElementHandler. Returns -1 if parser == NULL. +*/ +XMLPARSEAPI(int) +XML_GetSpecifiedAttributeCount(XML_Parser parser); + +/* Returns the index of the ID attribute passed in the last call to + XML_StartElementHandler, or -1 if there is no ID attribute or + parser == NULL. Each attribute/value pair counts as 2; thus this + corresponds to an index into the atts array passed to the + XML_StartElementHandler. +*/ +XMLPARSEAPI(int) +XML_GetIdAttributeIndex(XML_Parser parser); + +#ifdef XML_ATTR_INFO +/* Source file byte offsets for the start and end of attribute names and values. + The value indices are exclusive of surrounding quotes; thus in a UTF-8 source + file an attribute value of "blah" will yield: + info->valueEnd - info->valueStart = 4 bytes. +*/ +typedef struct { + XML_Index nameStart; /* Offset to beginning of the attribute name. */ + XML_Index nameEnd; /* Offset after the attribute name's last byte. */ + XML_Index valueStart; /* Offset to beginning of the attribute value. */ + XML_Index valueEnd; /* Offset after the attribute value's last byte. */ +} XML_AttrInfo; + +/* Returns an array of XML_AttrInfo structures for the attribute/value pairs + passed in last call to the XML_StartElementHandler that were specified + in the start-tag rather than defaulted. Each attribute/value pair counts + as 1; thus the number of entries in the array is + XML_GetSpecifiedAttributeCount(parser) / 2. +*/ +XMLPARSEAPI(const XML_AttrInfo *) +XML_GetAttributeInfo(XML_Parser parser); +#endif + +/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is + detected. The last call to XML_Parse must have isFinal true; len + may be zero for this call (or any other). + + Though the return values for these functions has always been + described as a Boolean value, the implementation, at least for the + 1.95.x series, has always returned exactly one of the XML_Status + values. +*/ +XMLPARSEAPI(enum XML_Status) +XML_Parse(XML_Parser parser, const char *s, int len, int isFinal); + +XMLPARSEAPI(void *) +XML_GetBuffer(XML_Parser parser, int len); + +XMLPARSEAPI(enum XML_Status) +XML_ParseBuffer(XML_Parser parser, int len, int isFinal); + +/* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return. + Must be called from within a call-back handler, except when aborting + (resumable = 0) an already suspended parser. Some call-backs may + still follow because they would otherwise get lost. Examples: + - endElementHandler() for empty elements when stopped in + startElementHandler(), + - endNameSpaceDeclHandler() when stopped in endElementHandler(), + and possibly others. + + Can be called from most handlers, including DTD related call-backs, + except when parsing an external parameter entity and resumable != 0. + Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise. + Possible error codes: + - XML_ERROR_SUSPENDED: when suspending an already suspended parser. + - XML_ERROR_FINISHED: when the parser has already finished. + - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE. + + When resumable != 0 (true) then parsing is suspended, that is, + XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED. + Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer() + return XML_STATUS_ERROR with error code XML_ERROR_ABORTED. + + *Note*: + This will be applied to the current parser instance only, that is, if + there is a parent parser then it will continue parsing when the + externalEntityRefHandler() returns. It is up to the implementation of + the externalEntityRefHandler() to call XML_StopParser() on the parent + parser (recursively), if one wants to stop parsing altogether. + + When suspended, parsing can be resumed by calling XML_ResumeParser(). +*/ +XMLPARSEAPI(enum XML_Status) +XML_StopParser(XML_Parser parser, XML_Bool resumable); + +/* Resumes parsing after it has been suspended with XML_StopParser(). + Must not be called from within a handler call-back. Returns same + status codes as XML_Parse() or XML_ParseBuffer(). + Additional error code XML_ERROR_NOT_SUSPENDED possible. + + *Note*: + This must be called on the most deeply nested child parser instance + first, and on its parent parser only after the child parser has finished, + to be applied recursively until the document entity's parser is restarted. + That is, the parent parser will not resume by itself and it is up to the + application to call XML_ResumeParser() on it at the appropriate moment. +*/ +XMLPARSEAPI(enum XML_Status) +XML_ResumeParser(XML_Parser parser); + +enum XML_Parsing { XML_INITIALIZED, XML_PARSING, XML_FINISHED, XML_SUSPENDED }; + +typedef struct { + enum XML_Parsing parsing; + XML_Bool finalBuffer; +} XML_ParsingStatus; + +/* Returns status of parser with respect to being initialized, parsing, + finished, or suspended and processing the final buffer. + XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus, + XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED +*/ +XMLPARSEAPI(void) +XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status); + +/* Creates an XML_Parser object that can parse an external general + entity; context is a '\0'-terminated string specifying the parse + context; encoding is a '\0'-terminated string giving the name of + the externally specified encoding, or NULL if there is no + externally specified encoding. The context string consists of a + sequence of tokens separated by formfeeds (\f); a token consisting + of a name specifies that the general entity of the name is open; a + token of the form prefix=uri specifies the namespace for a + particular prefix; a token of the form =uri specifies the default + namespace. This can be called at any point after the first call to + an ExternalEntityRefHandler so longer as the parser has not yet + been freed. The new parser is completely independent and may + safely be used in a separate thread. The handlers and userData are + initialized from the parser argument. Returns NULL if out of memory. + Otherwise returns a new XML_Parser object. +*/ +XMLPARSEAPI(XML_Parser) +XML_ExternalEntityParserCreate(XML_Parser parser, const XML_Char *context, + const XML_Char *encoding); + +enum XML_ParamEntityParsing { + XML_PARAM_ENTITY_PARSING_NEVER, + XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, + XML_PARAM_ENTITY_PARSING_ALWAYS +}; + +/* Controls parsing of parameter entities (including the external DTD + subset). If parsing of parameter entities is enabled, then + references to external parameter entities (including the external + DTD subset) will be passed to the handler set with + XML_SetExternalEntityRefHandler. The context passed will be 0. + + Unlike external general entities, external parameter entities can + only be parsed synchronously. If the external parameter entity is + to be parsed, it must be parsed during the call to the external + entity ref handler: the complete sequence of + XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and + XML_ParserFree calls must be made during this call. After + XML_ExternalEntityParserCreate has been called to create the parser + for the external parameter entity (context must be 0 for this + call), it is illegal to make any calls on the old parser until + XML_ParserFree has been called on the newly created parser. + If the library has been compiled without support for parameter + entity parsing (ie without XML_DTD being defined), then + XML_SetParamEntityParsing will return 0 if parsing of parameter + entities is requested; otherwise it will return non-zero. + Note: If XML_SetParamEntityParsing is called after XML_Parse or + XML_ParseBuffer, then it has no effect and will always return 0. + Note: If parser == NULL, the function will do nothing and return 0. +*/ +XMLPARSEAPI(int) +XML_SetParamEntityParsing(XML_Parser parser, + enum XML_ParamEntityParsing parsing); + +/* Sets the hash salt to use for internal hash calculations. + Helps in preventing DoS attacks based on predicting hash + function behavior. This must be called before parsing is started. + Returns 1 if successful, 0 when called after parsing has started. + Note: If parser == NULL, the function will do nothing and return 0. +*/ +XMLPARSEAPI(int) +XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt); + +/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then + XML_GetErrorCode returns information about the error. +*/ +XMLPARSEAPI(enum XML_Error) +XML_GetErrorCode(XML_Parser parser); + +/* These functions return information about the current parse + location. They may be called from any callback called to report + some parse event; in this case the location is the location of the + first of the sequence of characters that generated the event. When + called from callbacks generated by declarations in the document + prologue, the location identified isn't as neatly defined, but will + be within the relevant markup. When called outside of the callback + functions, the position indicated will be just past the last parse + event (regardless of whether there was an associated callback). + + They may also be called after returning from a call to XML_Parse + or XML_ParseBuffer. If the return value is XML_STATUS_ERROR then + the location is the location of the character at which the error + was detected; otherwise the location is the location of the last + parse event, as described above. + + Note: XML_GetCurrentLineNumber and XML_GetCurrentColumnNumber + return 0 to indicate an error. + Note: XML_GetCurrentByteIndex returns -1 to indicate an error. +*/ +XMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser); +XMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser); +XMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser); + +/* Return the number of bytes in the current event. + Returns 0 if the event is in an internal entity. +*/ +XMLPARSEAPI(int) +XML_GetCurrentByteCount(XML_Parser parser); + +/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets + the integer pointed to by offset to the offset within this buffer + of the current parse position, and sets the integer pointed to by size + to the size of this buffer (the number of input bytes). Otherwise + returns a NULL pointer. Also returns a NULL pointer if a parse isn't + active. + + NOTE: The character pointer returned should not be used outside + the handler that makes the call. +*/ +XMLPARSEAPI(const char *) +XML_GetInputContext(XML_Parser parser, int *offset, int *size); + +/* For backwards compatibility with previous versions. */ +#define XML_GetErrorLineNumber XML_GetCurrentLineNumber +#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber +#define XML_GetErrorByteIndex XML_GetCurrentByteIndex + +/* Frees the content model passed to the element declaration handler */ +XMLPARSEAPI(void) +XML_FreeContentModel(XML_Parser parser, XML_Content *model); + +/* Exposing the memory handling functions used in Expat */ +XMLPARSEAPI(void *) +XML_ATTR_MALLOC +XML_ATTR_ALLOC_SIZE(2) +XML_MemMalloc(XML_Parser parser, size_t size); + +XMLPARSEAPI(void *) +XML_ATTR_ALLOC_SIZE(3) +XML_MemRealloc(XML_Parser parser, void *ptr, size_t size); + +XMLPARSEAPI(void) +XML_MemFree(XML_Parser parser, void *ptr); + +/* Frees memory used by the parser. */ +XMLPARSEAPI(void) +XML_ParserFree(XML_Parser parser); + +/* Returns a string describing the error. */ +XMLPARSEAPI(const XML_LChar *) +XML_ErrorString(enum XML_Error code); + +/* Return a string containing the version number of this expat */ +XMLPARSEAPI(const XML_LChar *) +XML_ExpatVersion(void); + +typedef struct { + int major; + int minor; + int micro; +} XML_Expat_Version; + +/* Return an XML_Expat_Version structure containing numeric version + number information for this version of expat. +*/ +XMLPARSEAPI(XML_Expat_Version) +XML_ExpatVersionInfo(void); + +/* Added in Expat 1.95.5. */ +enum XML_FeatureEnum { + XML_FEATURE_END = 0, + XML_FEATURE_UNICODE, + XML_FEATURE_UNICODE_WCHAR_T, + XML_FEATURE_DTD, + XML_FEATURE_CONTEXT_BYTES, + XML_FEATURE_MIN_SIZE, + XML_FEATURE_SIZEOF_XML_CHAR, + XML_FEATURE_SIZEOF_XML_LCHAR, + XML_FEATURE_NS, + XML_FEATURE_LARGE_SIZE, + XML_FEATURE_ATTR_INFO + /* Additional features must be added to the end of this enum. */ +}; + +typedef struct { + enum XML_FeatureEnum feature; + const XML_LChar *name; + long int value; +} XML_Feature; + +XMLPARSEAPI(const XML_Feature *) +XML_GetFeatureList(void); + +/* Expat follows the semantic versioning convention. + See http://semver.org. +*/ +#define XML_MAJOR_VERSION 2 +#define XML_MINOR_VERSION 2 +#define XML_MICRO_VERSION 10 + +#ifdef __cplusplus +} +#endif + +#endif /* not Expat_INCLUDED */ diff --git a/3rdparty/expat/lib/expat_external.h b/3rdparty/expat/lib/expat_external.h new file mode 100644 index 0000000..b3b6e74 --- /dev/null +++ b/3rdparty/expat/lib/expat_external.h @@ -0,0 +1,158 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef Expat_External_INCLUDED +#define Expat_External_INCLUDED 1 + +/* External API definitions */ + +/* Expat tries very hard to make the API boundary very specifically + defined. There are two macros defined to control this boundary; + each of these can be defined before including this header to + achieve some different behavior, but doing so it not recommended or + tested frequently. + + XMLCALL - The calling convention to use for all calls across the + "library boundary." This will default to cdecl, and + try really hard to tell the compiler that's what we + want. + + XMLIMPORT - Whatever magic is needed to note that a function is + to be imported from a dynamically loaded library + (.dll, .so, or .sl, depending on your platform). + + The XMLCALL macro was added in Expat 1.95.7. The only one which is + expected to be directly useful in client code is XMLCALL. + + Note that on at least some Unix versions, the Expat library must be + compiled with the cdecl calling convention as the default since + system headers may assume the cdecl convention. +*/ +#ifndef XMLCALL +# if defined(_MSC_VER) +# define XMLCALL __cdecl +# elif defined(__GNUC__) && defined(__i386) && ! defined(__INTEL_COMPILER) +# define XMLCALL __attribute__((cdecl)) +# else +/* For any platform which uses this definition and supports more than + one calling convention, we need to extend this definition to + declare the convention used on that platform, if it's possible to + do so. + + If this is the case for your platform, please file a bug report + with information on how to identify your platform via the C + pre-processor and how to specify the same calling convention as the + platform's malloc() implementation. +*/ +# define XMLCALL +# endif +#endif /* not defined XMLCALL */ + +#if ! defined(XML_STATIC) && ! defined(XMLIMPORT) +# ifndef XML_BUILDING_EXPAT +/* using Expat from an application */ + +# if defined(_MSC_EXTENSIONS) && ! defined(__BEOS__) && ! defined(__CYGWIN__) +# define XMLIMPORT __declspec(dllimport) +# endif + +# endif +#endif /* not defined XML_STATIC */ + +#ifndef XML_ENABLE_VISIBILITY +# define XML_ENABLE_VISIBILITY 0 +#endif + +#if ! defined(XMLIMPORT) && XML_ENABLE_VISIBILITY +# define XMLIMPORT __attribute__((visibility("default"))) +#endif + +/* If we didn't define it above, define it away: */ +#ifndef XMLIMPORT +# define XMLIMPORT +#endif + +#if defined(__GNUC__) \ + && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) +# define XML_ATTR_MALLOC __attribute__((__malloc__)) +#else +# define XML_ATTR_MALLOC +#endif + +#if defined(__GNUC__) \ + && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) +# define XML_ATTR_ALLOC_SIZE(x) __attribute__((__alloc_size__(x))) +#else +# define XML_ATTR_ALLOC_SIZE(x) +#endif + +#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef XML_UNICODE_WCHAR_T +# ifndef XML_UNICODE +# define XML_UNICODE +# endif +# if defined(__SIZEOF_WCHAR_T__) && (__SIZEOF_WCHAR_T__ != 2) +# error "sizeof(wchar_t) != 2; Need -fshort-wchar for both Expat and libc" +# endif +#endif + +#ifdef XML_UNICODE /* Information is UTF-16 encoded. */ +# ifdef XML_UNICODE_WCHAR_T +typedef wchar_t XML_Char; +typedef wchar_t XML_LChar; +# else +typedef unsigned short XML_Char; +typedef char XML_LChar; +# endif /* XML_UNICODE_WCHAR_T */ +#else /* Information is UTF-8 encoded. */ +typedef char XML_Char; +typedef char XML_LChar; +#endif /* XML_UNICODE */ + +#ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */ +typedef long long XML_Index; +typedef unsigned long long XML_Size; +#else +typedef long XML_Index; +typedef unsigned long XML_Size; +#endif /* XML_LARGE_SIZE */ + +#ifdef __cplusplus +} +#endif + +#endif /* not Expat_External_INCLUDED */ diff --git a/3rdparty/expat/lib/iasciitab.h b/3rdparty/expat/lib/iasciitab.h new file mode 100644 index 0000000..ea97cfc --- /dev/null +++ b/3rdparty/expat/lib/iasciitab.h @@ -0,0 +1,65 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* Like asciitab.h, except that 0xD has code BT_S rather than BT_CR */ +/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, + /* 0x0C */ BT_NONXML, BT_S, BT_NONXML, BT_NONXML, + /* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, + /* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, + /* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, + /* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, + /* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, + /* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, + /* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, + /* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, + /* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, + /* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, + /* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, + /* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, + /* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, + /* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, + /* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, + /* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, diff --git a/3rdparty/expat/lib/internal.h b/3rdparty/expat/lib/internal.h new file mode 100644 index 0000000..60913da --- /dev/null +++ b/3rdparty/expat/lib/internal.h @@ -0,0 +1,123 @@ +/* internal.h + + Internal definitions used by Expat. This is not needed to compile + client code. + + The following calling convention macros are defined for frequently + called functions: + + FASTCALL - Used for those internal functions that have a simple + body and a low number of arguments and local variables. + + PTRCALL - Used for functions called though function pointers. + + PTRFASTCALL - Like PTRCALL, but for low number of arguments. + + inline - Used for selected internal functions for which inlining + may improve performance on some platforms. + + Note: Use of these macros is based on judgement, not hard rules, + and therefore subject to change. + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#if defined(__GNUC__) && defined(__i386__) && ! defined(__MINGW32__) +/* We'll use this version by default only where we know it helps. + + regparm() generates warnings on Solaris boxes. See SF bug #692878. + + Instability reported with egcs on a RedHat Linux 7.3. + Let's comment out: + #define FASTCALL __attribute__((stdcall, regparm(3))) + and let's try this: +*/ +# define FASTCALL __attribute__((regparm(3))) +# define PTRFASTCALL __attribute__((regparm(3))) +#endif + +/* Using __fastcall seems to have an unexpected negative effect under + MS VC++, especially for function pointers, so we won't use it for + now on that platform. It may be reconsidered for a future release + if it can be made more effective. + Likely reason: __fastcall on Windows is like stdcall, therefore + the compiler cannot perform stack optimizations for call clusters. +*/ + +/* Make sure all of these are defined if they aren't already. */ + +#ifndef FASTCALL +# define FASTCALL +#endif + +#ifndef PTRCALL +# define PTRCALL +#endif + +#ifndef PTRFASTCALL +# define PTRFASTCALL +#endif + +#ifndef XML_MIN_SIZE +# if ! defined(__cplusplus) && ! defined(inline) +# ifdef __GNUC__ +# define inline __inline +# endif /* __GNUC__ */ +# endif +#endif /* XML_MIN_SIZE */ + +#ifdef __cplusplus +# define inline inline +#else +# ifndef inline +# define inline +# endif +#endif + +#ifndef UNUSED_P +# define UNUSED_P(p) (void)p +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef XML_ENABLE_VISIBILITY +# if XML_ENABLE_VISIBILITY +__attribute__((visibility("default"))) +# endif +#endif +void +_INTERNAL_trim_to_complete_utf8_characters(const char *from, + const char **fromLimRef); + +#ifdef __cplusplus +} +#endif diff --git a/3rdparty/expat/lib/latin1tab.h b/3rdparty/expat/lib/latin1tab.h new file mode 100644 index 0000000..6f91604 --- /dev/null +++ b/3rdparty/expat/lib/latin1tab.h @@ -0,0 +1,64 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* 0x80 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0x84 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0x88 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0x8C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0x90 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0x94 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0x98 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0x9C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0xA0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0xA4 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0xA8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, + /* 0xAC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0xB0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0xB4 */ BT_OTHER, BT_NMSTRT, BT_OTHER, BT_NAME, + /* 0xB8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, + /* 0xBC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, + /* 0xC0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xC4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xC8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xCC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xD0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xD4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, + /* 0xD8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xDC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xE0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xE4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xE8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xEC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xF0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xF4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, + /* 0xF8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, + /* 0xFC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, diff --git a/3rdparty/expat/lib/libexpat.def b/3rdparty/expat/lib/libexpat.def new file mode 100644 index 0000000..16faf59 --- /dev/null +++ b/3rdparty/expat/lib/libexpat.def @@ -0,0 +1,78 @@ +; DEF file for MS VC++ + +LIBRARY +EXPORTS + XML_DefaultCurrent @1 + XML_ErrorString @2 + XML_ExpatVersion @3 + XML_ExpatVersionInfo @4 + XML_ExternalEntityParserCreate @5 + XML_GetBase @6 + XML_GetBuffer @7 + XML_GetCurrentByteCount @8 + XML_GetCurrentByteIndex @9 + XML_GetCurrentColumnNumber @10 + XML_GetCurrentLineNumber @11 + XML_GetErrorCode @12 + XML_GetIdAttributeIndex @13 + XML_GetInputContext @14 + XML_GetSpecifiedAttributeCount @15 + XML_Parse @16 + XML_ParseBuffer @17 + XML_ParserCreate @18 + XML_ParserCreateNS @19 + XML_ParserCreate_MM @20 + XML_ParserFree @21 + XML_SetAttlistDeclHandler @22 + XML_SetBase @23 + XML_SetCdataSectionHandler @24 + XML_SetCharacterDataHandler @25 + XML_SetCommentHandler @26 + XML_SetDefaultHandler @27 + XML_SetDefaultHandlerExpand @28 + XML_SetDoctypeDeclHandler @29 + XML_SetElementDeclHandler @30 + XML_SetElementHandler @31 + XML_SetEncoding @32 + XML_SetEndCdataSectionHandler @33 + XML_SetEndDoctypeDeclHandler @34 + XML_SetEndElementHandler @35 + XML_SetEndNamespaceDeclHandler @36 + XML_SetEntityDeclHandler @37 + XML_SetExternalEntityRefHandler @38 + XML_SetExternalEntityRefHandlerArg @39 + XML_SetNamespaceDeclHandler @40 + XML_SetNotStandaloneHandler @41 + XML_SetNotationDeclHandler @42 + XML_SetParamEntityParsing @43 + XML_SetProcessingInstructionHandler @44 + XML_SetReturnNSTriplet @45 + XML_SetStartCdataSectionHandler @46 + XML_SetStartDoctypeDeclHandler @47 + XML_SetStartElementHandler @48 + XML_SetStartNamespaceDeclHandler @49 + XML_SetUnknownEncodingHandler @50 + XML_SetUnparsedEntityDeclHandler @51 + XML_SetUserData @52 + XML_SetXmlDeclHandler @53 + XML_UseParserAsHandlerArg @54 +; added with version 1.95.3 + XML_ParserReset @55 + XML_SetSkippedEntityHandler @56 +; added with version 1.95.5 + XML_GetFeatureList @57 + XML_UseForeignDTD @58 +; added with version 1.95.6 + XML_FreeContentModel @59 + XML_MemMalloc @60 + XML_MemRealloc @61 + XML_MemFree @62 +; added with version 1.95.8 + XML_StopParser @63 + XML_ResumeParser @64 + XML_GetParsingStatus @65 +; added with version 2.1.1 +; XML_GetAttributeInfo @66 + XML_SetHashSalt @67 +; added with version 2.2.5 + _INTERNAL_trim_to_complete_utf8_characters @68 diff --git a/3rdparty/expat/lib/libexpatw.def b/3rdparty/expat/lib/libexpatw.def new file mode 100644 index 0000000..16faf59 --- /dev/null +++ b/3rdparty/expat/lib/libexpatw.def @@ -0,0 +1,78 @@ +; DEF file for MS VC++ + +LIBRARY +EXPORTS + XML_DefaultCurrent @1 + XML_ErrorString @2 + XML_ExpatVersion @3 + XML_ExpatVersionInfo @4 + XML_ExternalEntityParserCreate @5 + XML_GetBase @6 + XML_GetBuffer @7 + XML_GetCurrentByteCount @8 + XML_GetCurrentByteIndex @9 + XML_GetCurrentColumnNumber @10 + XML_GetCurrentLineNumber @11 + XML_GetErrorCode @12 + XML_GetIdAttributeIndex @13 + XML_GetInputContext @14 + XML_GetSpecifiedAttributeCount @15 + XML_Parse @16 + XML_ParseBuffer @17 + XML_ParserCreate @18 + XML_ParserCreateNS @19 + XML_ParserCreate_MM @20 + XML_ParserFree @21 + XML_SetAttlistDeclHandler @22 + XML_SetBase @23 + XML_SetCdataSectionHandler @24 + XML_SetCharacterDataHandler @25 + XML_SetCommentHandler @26 + XML_SetDefaultHandler @27 + XML_SetDefaultHandlerExpand @28 + XML_SetDoctypeDeclHandler @29 + XML_SetElementDeclHandler @30 + XML_SetElementHandler @31 + XML_SetEncoding @32 + XML_SetEndCdataSectionHandler @33 + XML_SetEndDoctypeDeclHandler @34 + XML_SetEndElementHandler @35 + XML_SetEndNamespaceDeclHandler @36 + XML_SetEntityDeclHandler @37 + XML_SetExternalEntityRefHandler @38 + XML_SetExternalEntityRefHandlerArg @39 + XML_SetNamespaceDeclHandler @40 + XML_SetNotStandaloneHandler @41 + XML_SetNotationDeclHandler @42 + XML_SetParamEntityParsing @43 + XML_SetProcessingInstructionHandler @44 + XML_SetReturnNSTriplet @45 + XML_SetStartCdataSectionHandler @46 + XML_SetStartDoctypeDeclHandler @47 + XML_SetStartElementHandler @48 + XML_SetStartNamespaceDeclHandler @49 + XML_SetUnknownEncodingHandler @50 + XML_SetUnparsedEntityDeclHandler @51 + XML_SetUserData @52 + XML_SetXmlDeclHandler @53 + XML_UseParserAsHandlerArg @54 +; added with version 1.95.3 + XML_ParserReset @55 + XML_SetSkippedEntityHandler @56 +; added with version 1.95.5 + XML_GetFeatureList @57 + XML_UseForeignDTD @58 +; added with version 1.95.6 + XML_FreeContentModel @59 + XML_MemMalloc @60 + XML_MemRealloc @61 + XML_MemFree @62 +; added with version 1.95.8 + XML_StopParser @63 + XML_ResumeParser @64 + XML_GetParsingStatus @65 +; added with version 2.1.1 +; XML_GetAttributeInfo @66 + XML_SetHashSalt @67 +; added with version 2.2.5 + _INTERNAL_trim_to_complete_utf8_characters @68 diff --git a/3rdparty/expat/lib/nametab.h b/3rdparty/expat/lib/nametab.h new file mode 100644 index 0000000..3681df3 --- /dev/null +++ b/3rdparty/expat/lib/nametab.h @@ -0,0 +1,136 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +static const unsigned namingBitmap[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x04000000, + 0x87FFFFFE, 0x07FFFFFE, 0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF, + 0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFE00F, 0xFC31FFFF, 0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, + 0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD, + 0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, 0xFFFF0003, 0xFFFFFFFF, + 0xFFFF199F, 0x033FCFFF, 0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE, + 0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF, 0x00000000, 0x07FFFFFE, + 0x000007FE, 0xFFFE0000, 0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060, + 0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003, 0xFFF99FE0, 0x03C5FDFF, + 0xB0000000, 0x00030003, 0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000, + 0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001, 0xFFF99FE0, 0x23CDFDFF, + 0xB0000000, 0x00000003, 0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000, + 0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003, 0xFFFDDFE0, 0x03EFFDFF, + 0x40000000, 0x00000003, 0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFE, 0x000D7FFF, + 0x0000003F, 0x00000000, 0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000, + 0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF, 0x0007DAED, 0x50000000, + 0x82315001, 0x002C62AB, 0x40000000, 0xF580C900, 0x00000007, 0x02010800, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0FFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x03FFFFFF, 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF, + 0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF, 0x00000000, 0x00004C40, + 0x00000000, 0x00000000, 0x00000007, 0x00000000, 0x00000000, 0x00000000, + 0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF, 0x001FFFFF, 0xFFFFFFFE, + 0xFFFFFFFF, 0x07FFFFFF, 0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000000F, + 0x00000000, 0x00000000, 0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE, + 0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF, 0x00FFFFFF, 0x00000000, + 0xFFFF0000, 0xFFFFFFFF, 0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000, + 0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003, 0xFFFFD7C0, 0xFFFFFFFB, + 0x547F7FFF, 0x000FFFFD, 0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, + 0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, 0x00000000, 0xFFFE0000, + 0x027FFFFF, 0xFFFFFFFE, 0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF, + 0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF, 0xFFFFFFFF, 0x7CFFFFFF, + 0xFFEF7FFF, 0x03FF3DFF, 0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF, + 0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF, 0xFFF987E4, 0xD36DFDFF, + 0x5E003987, 0x001FFFC0, 0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1, + 0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3, 0xD63DC7EC, 0xC3BFC718, + 0x00803DC7, 0x0000FF80, 0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3, + 0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3, 0xFFFDDFEC, 0xC3FFFDFF, + 0x00803DCF, 0x0000FFC3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000, 0xFEF02596, 0x3BFF6CAE, + 0x03FF3F5F, 0x00000000, 0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF, + 0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1FFF0000, 0x00000002, + 0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF, 0x661FFFFF, 0xFFFFFFFE, + 0xFFFFFFFF, 0x77FFFFFF, +}; +static const unsigned char nmstrtPages[] = { + 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x09, 0x0A, 0x0B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, 0x00, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, +}; +static const unsigned char namePages[] = { + 0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00, 0x00, 0x1F, 0x20, 0x21, + 0x22, 0x23, 0x24, 0x25, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, 0x26, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, +}; diff --git a/3rdparty/expat/lib/siphash.h b/3rdparty/expat/lib/siphash.h new file mode 100644 index 0000000..bfee65a --- /dev/null +++ b/3rdparty/expat/lib/siphash.h @@ -0,0 +1,398 @@ +/* ========================================================================== + * siphash.h - SipHash-2-4 in a single header file + * -------------------------------------------------------------------------- + * Derived by William Ahern from the reference implementation[1] published[2] + * by Jean-Philippe Aumasson and Daniel J. Berstein. + * Minimal changes by Sebastian Pipping and Victor Stinner on top, see below. + * Licensed under the CC0 Public Domain Dedication license. + * + * 1. https://www.131002.net/siphash/siphash24.c + * 2. https://www.131002.net/siphash/ + * -------------------------------------------------------------------------- + * HISTORY: + * + * 2019-08-03 (Sebastian Pipping) + * - Mark part of sip24_valid as to be excluded from clang-format + * - Re-format code using clang-format 9 + * + * 2018-07-08 (Anton Maklakov) + * - Add "fall through" markers for GCC's -Wimplicit-fallthrough + * + * 2017-11-03 (Sebastian Pipping) + * - Hide sip_tobin and sip_binof unless SIPHASH_TOBIN macro is defined + * + * 2017-07-25 (Vadim Zeitlin) + * - Fix use of SIPHASH_MAIN macro + * + * 2017-07-05 (Sebastian Pipping) + * - Use _SIP_ULL macro to not require a C++11 compiler if compiled as C++ + * - Add const qualifiers at two places + * - Ensure <=80 characters line length (assuming tab width 4) + * + * 2017-06-23 (Victor Stinner) + * - Address Win64 compile warnings + * + * 2017-06-18 (Sebastian Pipping) + * - Clarify license note in the header + * - Address C89 issues: + * - Stop using inline keyword (and let compiler decide) + * - Replace _Bool by int + * - Turn macro siphash24 into a function + * - Address invalid conversion (void pointer) by explicit cast + * - Address lack of stdint.h for Visual Studio 2003 to 2008 + * - Always expose sip24_valid (for self-tests) + * + * 2012-11-04 - Born. (William Ahern) + * -------------------------------------------------------------------------- + * USAGE: + * + * SipHash-2-4 takes as input two 64-bit words as the key, some number of + * message bytes, and outputs a 64-bit word as the message digest. This + * implementation employs two data structures: a struct sipkey for + * representing the key, and a struct siphash for representing the hash + * state. + * + * For converting a 16-byte unsigned char array to a key, use either the + * macro sip_keyof or the routine sip_tokey. The former instantiates a + * compound literal key, while the latter requires a key object as a + * parameter. + * + * unsigned char secret[16]; + * arc4random_buf(secret, sizeof secret); + * struct sipkey *key = sip_keyof(secret); + * + * For hashing a message, use either the convenience macro siphash24 or the + * routines sip24_init, sip24_update, and sip24_final. + * + * struct siphash state; + * void *msg; + * size_t len; + * uint64_t hash; + * + * sip24_init(&state, key); + * sip24_update(&state, msg, len); + * hash = sip24_final(&state); + * + * or + * + * hash = siphash24(msg, len, key); + * + * To convert the 64-bit hash value to a canonical 8-byte little-endian + * binary representation, use either the macro sip_binof or the routine + * sip_tobin. The former instantiates and returns a compound literal array, + * while the latter requires an array object as a parameter. + * -------------------------------------------------------------------------- + * NOTES: + * + * o Neither sip_keyof, sip_binof, nor siphash24 will work with compilers + * lacking compound literal support. Instead, you must use the lower-level + * interfaces which take as parameters the temporary state objects. + * + * o Uppercase macros may evaluate parameters more than once. Lowercase + * macros should not exhibit any such side effects. + * ========================================================================== + */ +#ifndef SIPHASH_H +#define SIPHASH_H + +#include /* size_t */ + +#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER < 1600) +/* For vs2003/7.1 up to vs2008/9.0; _MSC_VER 1600 is vs2010/10.0 */ +typedef unsigned __int8 uint8_t; +typedef unsigned __int32 uint32_t; +typedef unsigned __int64 uint64_t; +#else +# include /* uint64_t uint32_t uint8_t */ +#endif + +/* + * Workaround to not require a C++11 compiler for using ULL suffix + * if this code is included and compiled as C++; related GCC warning is: + * warning: use of C++11 long long integer constant [-Wlong-long] + */ +#define _SIP_ULL(high, low) (((uint64_t)high << 32) | low) + +#define SIP_ROTL(x, b) (uint64_t)(((x) << (b)) | ((x) >> (64 - (b)))) + +#define SIP_U32TO8_LE(p, v) \ + (p)[0] = (uint8_t)((v) >> 0); \ + (p)[1] = (uint8_t)((v) >> 8); \ + (p)[2] = (uint8_t)((v) >> 16); \ + (p)[3] = (uint8_t)((v) >> 24); + +#define SIP_U64TO8_LE(p, v) \ + SIP_U32TO8_LE((p) + 0, (uint32_t)((v) >> 0)); \ + SIP_U32TO8_LE((p) + 4, (uint32_t)((v) >> 32)); + +#define SIP_U8TO64_LE(p) \ + (((uint64_t)((p)[0]) << 0) | ((uint64_t)((p)[1]) << 8) \ + | ((uint64_t)((p)[2]) << 16) | ((uint64_t)((p)[3]) << 24) \ + | ((uint64_t)((p)[4]) << 32) | ((uint64_t)((p)[5]) << 40) \ + | ((uint64_t)((p)[6]) << 48) | ((uint64_t)((p)[7]) << 56)) + +#define SIPHASH_INITIALIZER \ + { 0, 0, 0, 0, {0}, 0, 0 } + +struct siphash { + uint64_t v0, v1, v2, v3; + + unsigned char buf[8], *p; + uint64_t c; +}; /* struct siphash */ + +#define SIP_KEYLEN 16 + +struct sipkey { + uint64_t k[2]; +}; /* struct sipkey */ + +#define sip_keyof(k) sip_tokey(&(struct sipkey){{0}}, (k)) + +static struct sipkey * +sip_tokey(struct sipkey *key, const void *src) { + key->k[0] = SIP_U8TO64_LE((const unsigned char *)src); + key->k[1] = SIP_U8TO64_LE((const unsigned char *)src + 8); + return key; +} /* sip_tokey() */ + +#ifdef SIPHASH_TOBIN + +# define sip_binof(v) sip_tobin((unsigned char[8]){0}, (v)) + +static void * +sip_tobin(void *dst, uint64_t u64) { + SIP_U64TO8_LE((unsigned char *)dst, u64); + return dst; +} /* sip_tobin() */ + +#endif /* SIPHASH_TOBIN */ + +static void +sip_round(struct siphash *H, const int rounds) { + int i; + + for (i = 0; i < rounds; i++) { + H->v0 += H->v1; + H->v1 = SIP_ROTL(H->v1, 13); + H->v1 ^= H->v0; + H->v0 = SIP_ROTL(H->v0, 32); + + H->v2 += H->v3; + H->v3 = SIP_ROTL(H->v3, 16); + H->v3 ^= H->v2; + + H->v0 += H->v3; + H->v3 = SIP_ROTL(H->v3, 21); + H->v3 ^= H->v0; + + H->v2 += H->v1; + H->v1 = SIP_ROTL(H->v1, 17); + H->v1 ^= H->v2; + H->v2 = SIP_ROTL(H->v2, 32); + } +} /* sip_round() */ + +static struct siphash * +sip24_init(struct siphash *H, const struct sipkey *key) { + H->v0 = _SIP_ULL(0x736f6d65U, 0x70736575U) ^ key->k[0]; + H->v1 = _SIP_ULL(0x646f7261U, 0x6e646f6dU) ^ key->k[1]; + H->v2 = _SIP_ULL(0x6c796765U, 0x6e657261U) ^ key->k[0]; + H->v3 = _SIP_ULL(0x74656462U, 0x79746573U) ^ key->k[1]; + + H->p = H->buf; + H->c = 0; + + return H; +} /* sip24_init() */ + +#define sip_endof(a) (&(a)[sizeof(a) / sizeof *(a)]) + +static struct siphash * +sip24_update(struct siphash *H, const void *src, size_t len) { + const unsigned char *p = (const unsigned char *)src, *pe = p + len; + uint64_t m; + + do { + while (p < pe && H->p < sip_endof(H->buf)) + *H->p++ = *p++; + + if (H->p < sip_endof(H->buf)) + break; + + m = SIP_U8TO64_LE(H->buf); + H->v3 ^= m; + sip_round(H, 2); + H->v0 ^= m; + + H->p = H->buf; + H->c += 8; + } while (p < pe); + + return H; +} /* sip24_update() */ + +static uint64_t +sip24_final(struct siphash *H) { + const char left = (char)(H->p - H->buf); + uint64_t b = (H->c + left) << 56; + + switch (left) { + case 7: + b |= (uint64_t)H->buf[6] << 48; + /* fall through */ + case 6: + b |= (uint64_t)H->buf[5] << 40; + /* fall through */ + case 5: + b |= (uint64_t)H->buf[4] << 32; + /* fall through */ + case 4: + b |= (uint64_t)H->buf[3] << 24; + /* fall through */ + case 3: + b |= (uint64_t)H->buf[2] << 16; + /* fall through */ + case 2: + b |= (uint64_t)H->buf[1] << 8; + /* fall through */ + case 1: + b |= (uint64_t)H->buf[0] << 0; + /* fall through */ + case 0: + break; + } + + H->v3 ^= b; + sip_round(H, 2); + H->v0 ^= b; + H->v2 ^= 0xff; + sip_round(H, 4); + + return H->v0 ^ H->v1 ^ H->v2 ^ H->v3; +} /* sip24_final() */ + +static uint64_t +siphash24(const void *src, size_t len, const struct sipkey *key) { + struct siphash state = SIPHASH_INITIALIZER; + return sip24_final(sip24_update(sip24_init(&state, key), src, len)); +} /* siphash24() */ + +/* + * SipHash-2-4 output with + * k = 00 01 02 ... + * and + * in = (empty string) + * in = 00 (1 byte) + * in = 00 01 (2 bytes) + * in = 00 01 02 (3 bytes) + * ... + * in = 00 01 02 ... 3e (63 bytes) + */ +static int +sip24_valid(void) { + /* clang-format off */ + static const unsigned char vectors[64][8] = { + { 0x31, 0x0e, 0x0e, 0xdd, 0x47, 0xdb, 0x6f, 0x72, }, + { 0xfd, 0x67, 0xdc, 0x93, 0xc5, 0x39, 0xf8, 0x74, }, + { 0x5a, 0x4f, 0xa9, 0xd9, 0x09, 0x80, 0x6c, 0x0d, }, + { 0x2d, 0x7e, 0xfb, 0xd7, 0x96, 0x66, 0x67, 0x85, }, + { 0xb7, 0x87, 0x71, 0x27, 0xe0, 0x94, 0x27, 0xcf, }, + { 0x8d, 0xa6, 0x99, 0xcd, 0x64, 0x55, 0x76, 0x18, }, + { 0xce, 0xe3, 0xfe, 0x58, 0x6e, 0x46, 0xc9, 0xcb, }, + { 0x37, 0xd1, 0x01, 0x8b, 0xf5, 0x00, 0x02, 0xab, }, + { 0x62, 0x24, 0x93, 0x9a, 0x79, 0xf5, 0xf5, 0x93, }, + { 0xb0, 0xe4, 0xa9, 0x0b, 0xdf, 0x82, 0x00, 0x9e, }, + { 0xf3, 0xb9, 0xdd, 0x94, 0xc5, 0xbb, 0x5d, 0x7a, }, + { 0xa7, 0xad, 0x6b, 0x22, 0x46, 0x2f, 0xb3, 0xf4, }, + { 0xfb, 0xe5, 0x0e, 0x86, 0xbc, 0x8f, 0x1e, 0x75, }, + { 0x90, 0x3d, 0x84, 0xc0, 0x27, 0x56, 0xea, 0x14, }, + { 0xee, 0xf2, 0x7a, 0x8e, 0x90, 0xca, 0x23, 0xf7, }, + { 0xe5, 0x45, 0xbe, 0x49, 0x61, 0xca, 0x29, 0xa1, }, + { 0xdb, 0x9b, 0xc2, 0x57, 0x7f, 0xcc, 0x2a, 0x3f, }, + { 0x94, 0x47, 0xbe, 0x2c, 0xf5, 0xe9, 0x9a, 0x69, }, + { 0x9c, 0xd3, 0x8d, 0x96, 0xf0, 0xb3, 0xc1, 0x4b, }, + { 0xbd, 0x61, 0x79, 0xa7, 0x1d, 0xc9, 0x6d, 0xbb, }, + { 0x98, 0xee, 0xa2, 0x1a, 0xf2, 0x5c, 0xd6, 0xbe, }, + { 0xc7, 0x67, 0x3b, 0x2e, 0xb0, 0xcb, 0xf2, 0xd0, }, + { 0x88, 0x3e, 0xa3, 0xe3, 0x95, 0x67, 0x53, 0x93, }, + { 0xc8, 0xce, 0x5c, 0xcd, 0x8c, 0x03, 0x0c, 0xa8, }, + { 0x94, 0xaf, 0x49, 0xf6, 0xc6, 0x50, 0xad, 0xb8, }, + { 0xea, 0xb8, 0x85, 0x8a, 0xde, 0x92, 0xe1, 0xbc, }, + { 0xf3, 0x15, 0xbb, 0x5b, 0xb8, 0x35, 0xd8, 0x17, }, + { 0xad, 0xcf, 0x6b, 0x07, 0x63, 0x61, 0x2e, 0x2f, }, + { 0xa5, 0xc9, 0x1d, 0xa7, 0xac, 0xaa, 0x4d, 0xde, }, + { 0x71, 0x65, 0x95, 0x87, 0x66, 0x50, 0xa2, 0xa6, }, + { 0x28, 0xef, 0x49, 0x5c, 0x53, 0xa3, 0x87, 0xad, }, + { 0x42, 0xc3, 0x41, 0xd8, 0xfa, 0x92, 0xd8, 0x32, }, + { 0xce, 0x7c, 0xf2, 0x72, 0x2f, 0x51, 0x27, 0x71, }, + { 0xe3, 0x78, 0x59, 0xf9, 0x46, 0x23, 0xf3, 0xa7, }, + { 0x38, 0x12, 0x05, 0xbb, 0x1a, 0xb0, 0xe0, 0x12, }, + { 0xae, 0x97, 0xa1, 0x0f, 0xd4, 0x34, 0xe0, 0x15, }, + { 0xb4, 0xa3, 0x15, 0x08, 0xbe, 0xff, 0x4d, 0x31, }, + { 0x81, 0x39, 0x62, 0x29, 0xf0, 0x90, 0x79, 0x02, }, + { 0x4d, 0x0c, 0xf4, 0x9e, 0xe5, 0xd4, 0xdc, 0xca, }, + { 0x5c, 0x73, 0x33, 0x6a, 0x76, 0xd8, 0xbf, 0x9a, }, + { 0xd0, 0xa7, 0x04, 0x53, 0x6b, 0xa9, 0x3e, 0x0e, }, + { 0x92, 0x59, 0x58, 0xfc, 0xd6, 0x42, 0x0c, 0xad, }, + { 0xa9, 0x15, 0xc2, 0x9b, 0xc8, 0x06, 0x73, 0x18, }, + { 0x95, 0x2b, 0x79, 0xf3, 0xbc, 0x0a, 0xa6, 0xd4, }, + { 0xf2, 0x1d, 0xf2, 0xe4, 0x1d, 0x45, 0x35, 0xf9, }, + { 0x87, 0x57, 0x75, 0x19, 0x04, 0x8f, 0x53, 0xa9, }, + { 0x10, 0xa5, 0x6c, 0xf5, 0xdf, 0xcd, 0x9a, 0xdb, }, + { 0xeb, 0x75, 0x09, 0x5c, 0xcd, 0x98, 0x6c, 0xd0, }, + { 0x51, 0xa9, 0xcb, 0x9e, 0xcb, 0xa3, 0x12, 0xe6, }, + { 0x96, 0xaf, 0xad, 0xfc, 0x2c, 0xe6, 0x66, 0xc7, }, + { 0x72, 0xfe, 0x52, 0x97, 0x5a, 0x43, 0x64, 0xee, }, + { 0x5a, 0x16, 0x45, 0xb2, 0x76, 0xd5, 0x92, 0xa1, }, + { 0xb2, 0x74, 0xcb, 0x8e, 0xbf, 0x87, 0x87, 0x0a, }, + { 0x6f, 0x9b, 0xb4, 0x20, 0x3d, 0xe7, 0xb3, 0x81, }, + { 0xea, 0xec, 0xb2, 0xa3, 0x0b, 0x22, 0xa8, 0x7f, }, + { 0x99, 0x24, 0xa4, 0x3c, 0xc1, 0x31, 0x57, 0x24, }, + { 0xbd, 0x83, 0x8d, 0x3a, 0xaf, 0xbf, 0x8d, 0xb7, }, + { 0x0b, 0x1a, 0x2a, 0x32, 0x65, 0xd5, 0x1a, 0xea, }, + { 0x13, 0x50, 0x79, 0xa3, 0x23, 0x1c, 0xe6, 0x60, }, + { 0x93, 0x2b, 0x28, 0x46, 0xe4, 0xd7, 0x06, 0x66, }, + { 0xe1, 0x91, 0x5f, 0x5c, 0xb1, 0xec, 0xa4, 0x6c, }, + { 0xf3, 0x25, 0x96, 0x5c, 0xa1, 0x6d, 0x62, 0x9f, }, + { 0x57, 0x5f, 0xf2, 0x8e, 0x60, 0x38, 0x1b, 0xe5, }, + { 0x72, 0x45, 0x06, 0xeb, 0x4c, 0x32, 0x8a, 0x95, } + }; + /* clang-format on */ + + unsigned char in[64]; + struct sipkey k; + size_t i; + + sip_tokey(&k, "\000\001\002\003\004\005\006\007\010\011" + "\012\013\014\015\016\017"); + + for (i = 0; i < sizeof in; ++i) { + in[i] = (unsigned char)i; + + if (siphash24(in, i, &k) != SIP_U8TO64_LE(vectors[i])) + return 0; + } + + return 1; +} /* sip24_valid() */ + +#ifdef SIPHASH_MAIN + +# include + +int +main(void) { + const int ok = sip24_valid(); + + if (ok) + puts("OK"); + else + puts("FAIL"); + + return ! ok; +} /* main() */ + +#endif /* SIPHASH_MAIN */ + +#endif /* SIPHASH_H */ diff --git a/3rdparty/expat/lib/utf8tab.h b/3rdparty/expat/lib/utf8tab.h new file mode 100644 index 0000000..a22986a --- /dev/null +++ b/3rdparty/expat/lib/utf8tab.h @@ -0,0 +1,64 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* 0x80 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0x84 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0x88 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0x8C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0x90 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0x94 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0x98 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0x9C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xA0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xA4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xA8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xAC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xB0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xB4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xB8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xBC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, + /* 0xC0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, + /* 0xC4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, + /* 0xC8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, + /* 0xCC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, + /* 0xD0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, + /* 0xD4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, + /* 0xD8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, + /* 0xDC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, + /* 0xE0 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, + /* 0xE4 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, + /* 0xE8 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, + /* 0xEC */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, + /* 0xF0 */ BT_LEAD4, BT_LEAD4, BT_LEAD4, BT_LEAD4, + /* 0xF4 */ BT_LEAD4, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0xF8 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, + /* 0xFC */ BT_NONXML, BT_NONXML, BT_MALFORM, BT_MALFORM, diff --git a/3rdparty/expat/lib/winconfig.h b/3rdparty/expat/lib/winconfig.h new file mode 100644 index 0000000..562a4a8 --- /dev/null +++ b/3rdparty/expat/lib/winconfig.h @@ -0,0 +1,56 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef WINCONFIG_H +#define WINCONFIG_H + +#define WIN32_LEAN_AND_MEAN +#include +#undef WIN32_LEAN_AND_MEAN + +#include +#include + +#if defined(HAVE_EXPAT_CONFIG_H) /* e.g. MinGW */ +# include +#else /* !defined(HAVE_EXPAT_CONFIG_H) */ + +# define XML_NS 1 +# define XML_DTD 1 +# define XML_CONTEXT_BYTES 1024 + +/* we will assume all Windows platforms are little endian */ +# define BYTEORDER 1234 + +#endif /* !defined(HAVE_EXPAT_CONFIG_H) */ + +#endif /* ndef WINCONFIG_H */ diff --git a/3rdparty/expat/lib/xmlparse.c b/3rdparty/expat/lib/xmlparse.c new file mode 100644 index 0000000..dfc316c --- /dev/null +++ b/3rdparty/expat/lib/xmlparse.c @@ -0,0 +1,6914 @@ +/* 5cd169f2942b85c05e0b1b96f9990f91ac3d07e470ad7ce906ac8590c8ed4f35 (2.2.10+) + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#if ! defined(_GNU_SOURCE) +# define _GNU_SOURCE 1 /* syscall prototype */ +#endif + +#ifdef _WIN32 +/* force stdlib to define rand_s() */ +# if ! defined(_CRT_RAND_S) +# define _CRT_RAND_S +# endif +#endif + +#include +#include /* memset(), memcpy() */ +#include +#include /* UINT_MAX */ +#include /* fprintf */ +#include /* getenv, rand_s */ + +#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER < 1600) +/* vs2008/9.0 and earlier lack stdint.h; _MSC_VER 1600 is vs2010/10.0 */ +# if defined(_WIN64) +typedef unsigned __int64 uintptr_t; +# else +typedef unsigned __int32 uintptr_t; +# endif +#else +# include /* uintptr_t */ +#endif + +#ifdef _WIN32 +# define getpid GetCurrentProcessId +#else +# include /* gettimeofday() */ +# include /* getpid() */ +# include /* getpid() */ +# include /* O_RDONLY */ +# include +#endif + +#define XML_BUILDING_EXPAT 1 + +#ifdef _WIN32 +# include "winconfig.h" +#elif defined(HAVE_EXPAT_CONFIG_H) +# include +#endif /* ndef _WIN32 */ + +#include "ascii.h" +#include "expat.h" +#include "siphash.h" + +#if defined(HAVE_GETRANDOM) || defined(HAVE_SYSCALL_GETRANDOM) +# if defined(HAVE_GETRANDOM) +# include /* getrandom */ +# else +# include /* syscall */ +# include /* SYS_getrandom */ +# endif +# if ! defined(GRND_NONBLOCK) +# define GRND_NONBLOCK 0x0001 +# endif /* defined(GRND_NONBLOCK) */ +#endif /* defined(HAVE_GETRANDOM) || defined(HAVE_SYSCALL_GETRANDOM) */ + +#if defined(HAVE_LIBBSD) \ + && (defined(HAVE_ARC4RANDOM_BUF) || defined(HAVE_ARC4RANDOM)) +# include +#endif + +#if defined(_WIN32) && ! defined(LOAD_LIBRARY_SEARCH_SYSTEM32) +# define LOAD_LIBRARY_SEARCH_SYSTEM32 0x00000800 +#endif + +#if ! defined(HAVE_GETRANDOM) && ! defined(HAVE_SYSCALL_GETRANDOM) \ + && ! defined(HAVE_ARC4RANDOM_BUF) && ! defined(HAVE_ARC4RANDOM) \ + && ! defined(XML_DEV_URANDOM) && ! defined(_WIN32) \ + && ! defined(XML_POOR_ENTROPY) +# error You do not have support for any sources of high quality entropy \ + enabled. For end user security, that is probably not what you want. \ + \ + Your options include: \ + * Linux >=3.17 + glibc >=2.25 (getrandom): HAVE_GETRANDOM, \ + * Linux >=3.17 + glibc (including <2.25) (syscall SYS_getrandom): HAVE_SYSCALL_GETRANDOM, \ + * BSD / macOS >=10.7 (arc4random_buf): HAVE_ARC4RANDOM_BUF, \ + * BSD / macOS (including <10.7) (arc4random): HAVE_ARC4RANDOM, \ + * libbsd (arc4random_buf): HAVE_ARC4RANDOM_BUF + HAVE_LIBBSD, \ + * libbsd (arc4random): HAVE_ARC4RANDOM + HAVE_LIBBSD, \ + * Linux (including <3.17) / BSD / macOS (including <10.7) (/dev/urandom): XML_DEV_URANDOM, \ + * Windows >=Vista (rand_s): _WIN32. \ + \ + If insist on not using any of these, bypass this error by defining \ + XML_POOR_ENTROPY; you have been warned. \ + \ + If you have reasons to patch this detection code away or need changes \ + to the build system, please open a bug. Thank you! +#endif + +#ifdef XML_UNICODE +# define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX +# define XmlConvert XmlUtf16Convert +# define XmlGetInternalEncoding XmlGetUtf16InternalEncoding +# define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS +# define XmlEncode XmlUtf16Encode +# define MUST_CONVERT(enc, s) (! (enc)->isUtf16 || (((uintptr_t)(s)) & 1)) +typedef unsigned short ICHAR; +#else +# define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX +# define XmlConvert XmlUtf8Convert +# define XmlGetInternalEncoding XmlGetUtf8InternalEncoding +# define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS +# define XmlEncode XmlUtf8Encode +# define MUST_CONVERT(enc, s) (! (enc)->isUtf8) +typedef char ICHAR; +#endif + +#ifndef XML_NS + +# define XmlInitEncodingNS XmlInitEncoding +# define XmlInitUnknownEncodingNS XmlInitUnknownEncoding +# undef XmlGetInternalEncodingNS +# define XmlGetInternalEncodingNS XmlGetInternalEncoding +# define XmlParseXmlDeclNS XmlParseXmlDecl + +#endif + +#ifdef XML_UNICODE + +# ifdef XML_UNICODE_WCHAR_T +# define XML_T(x) (const wchar_t) x +# define XML_L(x) L##x +# else +# define XML_T(x) (const unsigned short)x +# define XML_L(x) x +# endif + +#else + +# define XML_T(x) x +# define XML_L(x) x + +#endif + +/* Round up n to be a multiple of sz, where sz is a power of 2. */ +#define ROUND_UP(n, sz) (((n) + ((sz)-1)) & ~((sz)-1)) + +/* Do safe (NULL-aware) pointer arithmetic */ +#define EXPAT_SAFE_PTR_DIFF(p, q) (((p) && (q)) ? ((p) - (q)) : 0) + +#include "internal.h" +#include "xmltok.h" +#include "xmlrole.h" + +typedef const XML_Char *KEY; + +typedef struct { + KEY name; +} NAMED; + +typedef struct { + NAMED **v; + unsigned char power; + size_t size; + size_t used; + const XML_Memory_Handling_Suite *mem; +} HASH_TABLE; + +static size_t keylen(KEY s); + +static void copy_salt_to_sipkey(XML_Parser parser, struct sipkey *key); + +/* For probing (after a collision) we need a step size relative prime + to the hash table size, which is a power of 2. We use double-hashing, + since we can calculate a second hash value cheaply by taking those bits + of the first hash value that were discarded (masked out) when the table + index was calculated: index = hash & mask, where mask = table->size - 1. + We limit the maximum step size to table->size / 4 (mask >> 2) and make + it odd, since odd numbers are always relative prime to a power of 2. +*/ +#define SECOND_HASH(hash, mask, power) \ + ((((hash) & ~(mask)) >> ((power)-1)) & ((mask) >> 2)) +#define PROBE_STEP(hash, mask, power) \ + ((unsigned char)((SECOND_HASH(hash, mask, power)) | 1)) + +typedef struct { + NAMED **p; + NAMED **end; +} HASH_TABLE_ITER; + +#define INIT_TAG_BUF_SIZE 32 /* must be a multiple of sizeof(XML_Char) */ +#define INIT_DATA_BUF_SIZE 1024 +#define INIT_ATTS_SIZE 16 +#define INIT_ATTS_VERSION 0xFFFFFFFF +#define INIT_BLOCK_SIZE 1024 +#define INIT_BUFFER_SIZE 1024 + +#define EXPAND_SPARE 24 + +typedef struct binding { + struct prefix *prefix; + struct binding *nextTagBinding; + struct binding *prevPrefixBinding; + const struct attribute_id *attId; + XML_Char *uri; + int uriLen; + int uriAlloc; +} BINDING; + +typedef struct prefix { + const XML_Char *name; + BINDING *binding; +} PREFIX; + +typedef struct { + const XML_Char *str; + const XML_Char *localPart; + const XML_Char *prefix; + int strLen; + int uriLen; + int prefixLen; +} TAG_NAME; + +/* TAG represents an open element. + The name of the element is stored in both the document and API + encodings. The memory buffer 'buf' is a separately-allocated + memory area which stores the name. During the XML_Parse()/ + XMLParseBuffer() when the element is open, the memory for the 'raw' + version of the name (in the document encoding) is shared with the + document buffer. If the element is open across calls to + XML_Parse()/XML_ParseBuffer(), the buffer is re-allocated to + contain the 'raw' name as well. + + A parser re-uses these structures, maintaining a list of allocated + TAG objects in a free list. +*/ +typedef struct tag { + struct tag *parent; /* parent of this element */ + const char *rawName; /* tagName in the original encoding */ + int rawNameLength; + TAG_NAME name; /* tagName in the API encoding */ + char *buf; /* buffer for name components */ + char *bufEnd; /* end of the buffer */ + BINDING *bindings; +} TAG; + +typedef struct { + const XML_Char *name; + const XML_Char *textPtr; + int textLen; /* length in XML_Chars */ + int processed; /* # of processed bytes - when suspended */ + const XML_Char *systemId; + const XML_Char *base; + const XML_Char *publicId; + const XML_Char *notation; + XML_Bool open; + XML_Bool is_param; + XML_Bool is_internal; /* true if declared in internal subset outside PE */ +} ENTITY; + +typedef struct { + enum XML_Content_Type type; + enum XML_Content_Quant quant; + const XML_Char *name; + int firstchild; + int lastchild; + int childcnt; + int nextsib; +} CONTENT_SCAFFOLD; + +#define INIT_SCAFFOLD_ELEMENTS 32 + +typedef struct block { + struct block *next; + int size; + XML_Char s[1]; +} BLOCK; + +typedef struct { + BLOCK *blocks; + BLOCK *freeBlocks; + const XML_Char *end; + XML_Char *ptr; + XML_Char *start; + const XML_Memory_Handling_Suite *mem; +} STRING_POOL; + +/* The XML_Char before the name is used to determine whether + an attribute has been specified. */ +typedef struct attribute_id { + XML_Char *name; + PREFIX *prefix; + XML_Bool maybeTokenized; + XML_Bool xmlns; +} ATTRIBUTE_ID; + +typedef struct { + const ATTRIBUTE_ID *id; + XML_Bool isCdata; + const XML_Char *value; +} DEFAULT_ATTRIBUTE; + +typedef struct { + unsigned long version; + unsigned long hash; + const XML_Char *uriName; +} NS_ATT; + +typedef struct { + const XML_Char *name; + PREFIX *prefix; + const ATTRIBUTE_ID *idAtt; + int nDefaultAtts; + int allocDefaultAtts; + DEFAULT_ATTRIBUTE *defaultAtts; +} ELEMENT_TYPE; + +typedef struct { + HASH_TABLE generalEntities; + HASH_TABLE elementTypes; + HASH_TABLE attributeIds; + HASH_TABLE prefixes; + STRING_POOL pool; + STRING_POOL entityValuePool; + /* false once a parameter entity reference has been skipped */ + XML_Bool keepProcessing; + /* true once an internal or external PE reference has been encountered; + this includes the reference to an external subset */ + XML_Bool hasParamEntityRefs; + XML_Bool standalone; +#ifdef XML_DTD + /* indicates if external PE has been read */ + XML_Bool paramEntityRead; + HASH_TABLE paramEntities; +#endif /* XML_DTD */ + PREFIX defaultPrefix; + /* === scaffolding for building content model === */ + XML_Bool in_eldecl; + CONTENT_SCAFFOLD *scaffold; + unsigned contentStringLen; + unsigned scaffSize; + unsigned scaffCount; + int scaffLevel; + int *scaffIndex; +} DTD; + +typedef struct open_internal_entity { + const char *internalEventPtr; + const char *internalEventEndPtr; + struct open_internal_entity *next; + ENTITY *entity; + int startTagLevel; + XML_Bool betweenDecl; /* WFC: PE Between Declarations */ +} OPEN_INTERNAL_ENTITY; + +typedef enum XML_Error PTRCALL Processor(XML_Parser parser, const char *start, + const char *end, const char **endPtr); + +static Processor prologProcessor; +static Processor prologInitProcessor; +static Processor contentProcessor; +static Processor cdataSectionProcessor; +#ifdef XML_DTD +static Processor ignoreSectionProcessor; +static Processor externalParEntProcessor; +static Processor externalParEntInitProcessor; +static Processor entityValueProcessor; +static Processor entityValueInitProcessor; +#endif /* XML_DTD */ +static Processor epilogProcessor; +static Processor errorProcessor; +static Processor externalEntityInitProcessor; +static Processor externalEntityInitProcessor2; +static Processor externalEntityInitProcessor3; +static Processor externalEntityContentProcessor; +static Processor internalEntityProcessor; + +static enum XML_Error handleUnknownEncoding(XML_Parser parser, + const XML_Char *encodingName); +static enum XML_Error processXmlDecl(XML_Parser parser, int isGeneralTextEntity, + const char *s, const char *next); +static enum XML_Error initializeEncoding(XML_Parser parser); +static enum XML_Error doProlog(XML_Parser parser, const ENCODING *enc, + const char *s, const char *end, int tok, + const char *next, const char **nextPtr, + XML_Bool haveMore, XML_Bool allowClosingDoctype); +static enum XML_Error processInternalEntity(XML_Parser parser, ENTITY *entity, + XML_Bool betweenDecl); +static enum XML_Error doContent(XML_Parser parser, int startTagLevel, + const ENCODING *enc, const char *start, + const char *end, const char **endPtr, + XML_Bool haveMore); +static enum XML_Error doCdataSection(XML_Parser parser, const ENCODING *, + const char **startPtr, const char *end, + const char **nextPtr, XML_Bool haveMore); +#ifdef XML_DTD +static enum XML_Error doIgnoreSection(XML_Parser parser, const ENCODING *, + const char **startPtr, const char *end, + const char **nextPtr, XML_Bool haveMore); +#endif /* XML_DTD */ + +static void freeBindings(XML_Parser parser, BINDING *bindings); +static enum XML_Error storeAtts(XML_Parser parser, const ENCODING *, + const char *s, TAG_NAME *tagNamePtr, + BINDING **bindingsPtr); +static enum XML_Error addBinding(XML_Parser parser, PREFIX *prefix, + const ATTRIBUTE_ID *attId, const XML_Char *uri, + BINDING **bindingsPtr); +static int defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata, + XML_Bool isId, const XML_Char *dfltValue, + XML_Parser parser); +static enum XML_Error storeAttributeValue(XML_Parser parser, const ENCODING *, + XML_Bool isCdata, const char *, + const char *, STRING_POOL *); +static enum XML_Error appendAttributeValue(XML_Parser parser, const ENCODING *, + XML_Bool isCdata, const char *, + const char *, STRING_POOL *); +static ATTRIBUTE_ID *getAttributeId(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end); +static int setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *); +static enum XML_Error storeEntityValue(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end); +static int reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end); +static int reportComment(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end); +static void reportDefault(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end); + +static const XML_Char *getContext(XML_Parser parser); +static XML_Bool setContext(XML_Parser parser, const XML_Char *context); + +static void FASTCALL normalizePublicId(XML_Char *s); + +static DTD *dtdCreate(const XML_Memory_Handling_Suite *ms); +/* do not call if m_parentParser != NULL */ +static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms); +static void dtdDestroy(DTD *p, XML_Bool isDocEntity, + const XML_Memory_Handling_Suite *ms); +static int dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, + const XML_Memory_Handling_Suite *ms); +static int copyEntityTable(XML_Parser oldParser, HASH_TABLE *, STRING_POOL *, + const HASH_TABLE *); +static NAMED *lookup(XML_Parser parser, HASH_TABLE *table, KEY name, + size_t createSize); +static void FASTCALL hashTableInit(HASH_TABLE *, + const XML_Memory_Handling_Suite *ms); +static void FASTCALL hashTableClear(HASH_TABLE *); +static void FASTCALL hashTableDestroy(HASH_TABLE *); +static void FASTCALL hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *); +static NAMED *FASTCALL hashTableIterNext(HASH_TABLE_ITER *); + +static void FASTCALL poolInit(STRING_POOL *, + const XML_Memory_Handling_Suite *ms); +static void FASTCALL poolClear(STRING_POOL *); +static void FASTCALL poolDestroy(STRING_POOL *); +static XML_Char *poolAppend(STRING_POOL *pool, const ENCODING *enc, + const char *ptr, const char *end); +static XML_Char *poolStoreString(STRING_POOL *pool, const ENCODING *enc, + const char *ptr, const char *end); +static XML_Bool FASTCALL poolGrow(STRING_POOL *pool); +static const XML_Char *FASTCALL poolCopyString(STRING_POOL *pool, + const XML_Char *s); +static const XML_Char *poolCopyStringN(STRING_POOL *pool, const XML_Char *s, + int n); +static const XML_Char *FASTCALL poolAppendString(STRING_POOL *pool, + const XML_Char *s); + +static int FASTCALL nextScaffoldPart(XML_Parser parser); +static XML_Content *build_model(XML_Parser parser); +static ELEMENT_TYPE *getElementType(XML_Parser parser, const ENCODING *enc, + const char *ptr, const char *end); + +static XML_Char *copyString(const XML_Char *s, + const XML_Memory_Handling_Suite *memsuite); + +static unsigned long generate_hash_secret_salt(XML_Parser parser); +static XML_Bool startParsing(XML_Parser parser); + +static XML_Parser parserCreate(const XML_Char *encodingName, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *nameSep, DTD *dtd); + +static void parserInit(XML_Parser parser, const XML_Char *encodingName); + +#define poolStart(pool) ((pool)->start) +#define poolEnd(pool) ((pool)->ptr) +#define poolLength(pool) ((pool)->ptr - (pool)->start) +#define poolChop(pool) ((void)--(pool->ptr)) +#define poolLastChar(pool) (((pool)->ptr)[-1]) +#define poolDiscard(pool) ((pool)->ptr = (pool)->start) +#define poolFinish(pool) ((pool)->start = (pool)->ptr) +#define poolAppendChar(pool, c) \ + (((pool)->ptr == (pool)->end && ! poolGrow(pool)) \ + ? 0 \ + : ((*((pool)->ptr)++ = c), 1)) + +struct XML_ParserStruct { + /* The first member must be m_userData so that the XML_GetUserData + macro works. */ + void *m_userData; + void *m_handlerArg; + char *m_buffer; + const XML_Memory_Handling_Suite m_mem; + /* first character to be parsed */ + const char *m_bufferPtr; + /* past last character to be parsed */ + char *m_bufferEnd; + /* allocated end of m_buffer */ + const char *m_bufferLim; + XML_Index m_parseEndByteIndex; + const char *m_parseEndPtr; + XML_Char *m_dataBuf; + XML_Char *m_dataBufEnd; + XML_StartElementHandler m_startElementHandler; + XML_EndElementHandler m_endElementHandler; + XML_CharacterDataHandler m_characterDataHandler; + XML_ProcessingInstructionHandler m_processingInstructionHandler; + XML_CommentHandler m_commentHandler; + XML_StartCdataSectionHandler m_startCdataSectionHandler; + XML_EndCdataSectionHandler m_endCdataSectionHandler; + XML_DefaultHandler m_defaultHandler; + XML_StartDoctypeDeclHandler m_startDoctypeDeclHandler; + XML_EndDoctypeDeclHandler m_endDoctypeDeclHandler; + XML_UnparsedEntityDeclHandler m_unparsedEntityDeclHandler; + XML_NotationDeclHandler m_notationDeclHandler; + XML_StartNamespaceDeclHandler m_startNamespaceDeclHandler; + XML_EndNamespaceDeclHandler m_endNamespaceDeclHandler; + XML_NotStandaloneHandler m_notStandaloneHandler; + XML_ExternalEntityRefHandler m_externalEntityRefHandler; + XML_Parser m_externalEntityRefHandlerArg; + XML_SkippedEntityHandler m_skippedEntityHandler; + XML_UnknownEncodingHandler m_unknownEncodingHandler; + XML_ElementDeclHandler m_elementDeclHandler; + XML_AttlistDeclHandler m_attlistDeclHandler; + XML_EntityDeclHandler m_entityDeclHandler; + XML_XmlDeclHandler m_xmlDeclHandler; + const ENCODING *m_encoding; + INIT_ENCODING m_initEncoding; + const ENCODING *m_internalEncoding; + const XML_Char *m_protocolEncodingName; + XML_Bool m_ns; + XML_Bool m_ns_triplets; + void *m_unknownEncodingMem; + void *m_unknownEncodingData; + void *m_unknownEncodingHandlerData; + void(XMLCALL *m_unknownEncodingRelease)(void *); + PROLOG_STATE m_prologState; + Processor *m_processor; + enum XML_Error m_errorCode; + const char *m_eventPtr; + const char *m_eventEndPtr; + const char *m_positionPtr; + OPEN_INTERNAL_ENTITY *m_openInternalEntities; + OPEN_INTERNAL_ENTITY *m_freeInternalEntities; + XML_Bool m_defaultExpandInternalEntities; + int m_tagLevel; + ENTITY *m_declEntity; + const XML_Char *m_doctypeName; + const XML_Char *m_doctypeSysid; + const XML_Char *m_doctypePubid; + const XML_Char *m_declAttributeType; + const XML_Char *m_declNotationName; + const XML_Char *m_declNotationPublicId; + ELEMENT_TYPE *m_declElementType; + ATTRIBUTE_ID *m_declAttributeId; + XML_Bool m_declAttributeIsCdata; + XML_Bool m_declAttributeIsId; + DTD *m_dtd; + const XML_Char *m_curBase; + TAG *m_tagStack; + TAG *m_freeTagList; + BINDING *m_inheritedBindings; + BINDING *m_freeBindingList; + int m_attsSize; + int m_nSpecifiedAtts; + int m_idAttIndex; + ATTRIBUTE *m_atts; + NS_ATT *m_nsAtts; + unsigned long m_nsAttsVersion; + unsigned char m_nsAttsPower; +#ifdef XML_ATTR_INFO + XML_AttrInfo *m_attInfo; +#endif + POSITION m_position; + STRING_POOL m_tempPool; + STRING_POOL m_temp2Pool; + char *m_groupConnector; + unsigned int m_groupSize; + XML_Char m_namespaceSeparator; + XML_Parser m_parentParser; + XML_ParsingStatus m_parsingStatus; +#ifdef XML_DTD + XML_Bool m_isParamEntity; + XML_Bool m_useForeignDTD; + enum XML_ParamEntityParsing m_paramEntityParsing; +#endif + unsigned long m_hash_secret_salt; +}; + +#define MALLOC(parser, s) (parser->m_mem.malloc_fcn((s))) +#define REALLOC(parser, p, s) (parser->m_mem.realloc_fcn((p), (s))) +#define FREE(parser, p) (parser->m_mem.free_fcn((p))) + +XML_Parser XMLCALL +XML_ParserCreate(const XML_Char *encodingName) { + return XML_ParserCreate_MM(encodingName, NULL, NULL); +} + +XML_Parser XMLCALL +XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep) { + XML_Char tmp[2]; + *tmp = nsSep; + return XML_ParserCreate_MM(encodingName, NULL, tmp); +} + +static const XML_Char implicitContext[] + = {ASCII_x, ASCII_m, ASCII_l, ASCII_EQUALS, ASCII_h, + ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, + ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, + ASCII_w, ASCII_3, ASCII_PERIOD, ASCII_o, ASCII_r, + ASCII_g, ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, + ASCII_SLASH, ASCII_1, ASCII_9, ASCII_9, ASCII_8, + ASCII_SLASH, ASCII_n, ASCII_a, ASCII_m, ASCII_e, + ASCII_s, ASCII_p, ASCII_a, ASCII_c, ASCII_e, + '\0'}; + +/* To avoid warnings about unused functions: */ +#if ! defined(HAVE_ARC4RANDOM_BUF) && ! defined(HAVE_ARC4RANDOM) + +# if defined(HAVE_GETRANDOM) || defined(HAVE_SYSCALL_GETRANDOM) + +/* Obtain entropy on Linux 3.17+ */ +static int +writeRandomBytes_getrandom_nonblock(void *target, size_t count) { + int success = 0; /* full count bytes written? */ + size_t bytesWrittenTotal = 0; + const unsigned int getrandomFlags = GRND_NONBLOCK; + + do { + void *const currentTarget = (void *)((char *)target + bytesWrittenTotal); + const size_t bytesToWrite = count - bytesWrittenTotal; + + const int bytesWrittenMore = +# if defined(HAVE_GETRANDOM) + getrandom(currentTarget, bytesToWrite, getrandomFlags); +# else + syscall(SYS_getrandom, currentTarget, bytesToWrite, getrandomFlags); +# endif + + if (bytesWrittenMore > 0) { + bytesWrittenTotal += bytesWrittenMore; + if (bytesWrittenTotal >= count) + success = 1; + } + } while (! success && (errno == EINTR)); + + return success; +} + +# endif /* defined(HAVE_GETRANDOM) || defined(HAVE_SYSCALL_GETRANDOM) */ + +# if ! defined(_WIN32) && defined(XML_DEV_URANDOM) + +/* Extract entropy from /dev/urandom */ +static int +writeRandomBytes_dev_urandom(void *target, size_t count) { + int success = 0; /* full count bytes written? */ + size_t bytesWrittenTotal = 0; + + const int fd = open("/dev/urandom", O_RDONLY); + if (fd < 0) { + return 0; + } + + do { + void *const currentTarget = (void *)((char *)target + bytesWrittenTotal); + const size_t bytesToWrite = count - bytesWrittenTotal; + + const ssize_t bytesWrittenMore = read(fd, currentTarget, bytesToWrite); + + if (bytesWrittenMore > 0) { + bytesWrittenTotal += bytesWrittenMore; + if (bytesWrittenTotal >= count) + success = 1; + } + } while (! success && (errno == EINTR)); + + close(fd); + return success; +} + +# endif /* ! defined(_WIN32) && defined(XML_DEV_URANDOM) */ + +#endif /* ! defined(HAVE_ARC4RANDOM_BUF) && ! defined(HAVE_ARC4RANDOM) */ + +#if defined(HAVE_ARC4RANDOM) && ! defined(HAVE_ARC4RANDOM_BUF) + +static void +writeRandomBytes_arc4random(void *target, size_t count) { + size_t bytesWrittenTotal = 0; + + while (bytesWrittenTotal < count) { + const uint32_t random32 = arc4random(); + size_t i = 0; + + for (; (i < sizeof(random32)) && (bytesWrittenTotal < count); + i++, bytesWrittenTotal++) { + const uint8_t random8 = (uint8_t)(random32 >> (i * 8)); + ((uint8_t *)target)[bytesWrittenTotal] = random8; + } + } +} + +#endif /* defined(HAVE_ARC4RANDOM) && ! defined(HAVE_ARC4RANDOM_BUF) */ + +#ifdef _WIN32 + +/* Provide declaration of rand_s() for MinGW-32 (not 64, which has it), + as it didn't declare it in its header prior to version 5.3.0 of its + runtime package (mingwrt, containing stdlib.h). The upstream fix + was introduced at https://osdn.net/projects/mingw/ticket/39658 . */ +# if defined(__MINGW32__) && defined(__MINGW32_VERSION) \ + && __MINGW32_VERSION < 5003000L && ! defined(__MINGW64_VERSION_MAJOR) +__declspec(dllimport) int rand_s(unsigned int *); +# endif + +/* Obtain entropy on Windows using the rand_s() function which + * generates cryptographically secure random numbers. Internally it + * uses RtlGenRandom API which is present in Windows XP and later. + */ +static int +writeRandomBytes_rand_s(void *target, size_t count) { + size_t bytesWrittenTotal = 0; + + while (bytesWrittenTotal < count) { + unsigned int random32 = 0; + size_t i = 0; + + if (rand_s(&random32)) + return 0; /* failure */ + + for (; (i < sizeof(random32)) && (bytesWrittenTotal < count); + i++, bytesWrittenTotal++) { + const uint8_t random8 = (uint8_t)(random32 >> (i * 8)); + ((uint8_t *)target)[bytesWrittenTotal] = random8; + } + } + return 1; /* success */ +} + +#endif /* _WIN32 */ + +#if ! defined(HAVE_ARC4RANDOM_BUF) && ! defined(HAVE_ARC4RANDOM) + +static unsigned long +gather_time_entropy(void) { +# ifdef _WIN32 + FILETIME ft; + GetSystemTimeAsFileTime(&ft); /* never fails */ + return ft.dwHighDateTime ^ ft.dwLowDateTime; +# else + struct timeval tv; + int gettimeofday_res; + + gettimeofday_res = gettimeofday(&tv, NULL); + +# if defined(NDEBUG) + (void)gettimeofday_res; +# else + assert(gettimeofday_res == 0); +# endif /* defined(NDEBUG) */ + + /* Microseconds time is <20 bits entropy */ + return tv.tv_usec; +# endif +} + +#endif /* ! defined(HAVE_ARC4RANDOM_BUF) && ! defined(HAVE_ARC4RANDOM) */ + +static unsigned long +ENTROPY_DEBUG(const char *label, unsigned long entropy) { + const char *const EXPAT_ENTROPY_DEBUG = getenv("EXPAT_ENTROPY_DEBUG"); + if (EXPAT_ENTROPY_DEBUG && ! strcmp(EXPAT_ENTROPY_DEBUG, "1")) { + fprintf(stderr, "Entropy: %s --> 0x%0*lx (%lu bytes)\n", label, + (int)sizeof(entropy) * 2, entropy, (unsigned long)sizeof(entropy)); + } + return entropy; +} + +static unsigned long +generate_hash_secret_salt(XML_Parser parser) { + unsigned long entropy; + (void)parser; + + /* "Failproof" high quality providers: */ +#if defined(HAVE_ARC4RANDOM_BUF) + arc4random_buf(&entropy, sizeof(entropy)); + return ENTROPY_DEBUG("arc4random_buf", entropy); +#elif defined(HAVE_ARC4RANDOM) + writeRandomBytes_arc4random((void *)&entropy, sizeof(entropy)); + return ENTROPY_DEBUG("arc4random", entropy); +#else + /* Try high quality providers first .. */ +# ifdef _WIN32 + if (writeRandomBytes_rand_s((void *)&entropy, sizeof(entropy))) { + return ENTROPY_DEBUG("rand_s", entropy); + } +# elif defined(HAVE_GETRANDOM) || defined(HAVE_SYSCALL_GETRANDOM) + if (writeRandomBytes_getrandom_nonblock((void *)&entropy, sizeof(entropy))) { + return ENTROPY_DEBUG("getrandom", entropy); + } +# endif +# if ! defined(_WIN32) && defined(XML_DEV_URANDOM) + if (writeRandomBytes_dev_urandom((void *)&entropy, sizeof(entropy))) { + return ENTROPY_DEBUG("/dev/urandom", entropy); + } +# endif /* ! defined(_WIN32) && defined(XML_DEV_URANDOM) */ + /* .. and self-made low quality for backup: */ + + /* Process ID is 0 bits entropy if attacker has local access */ + entropy = gather_time_entropy() ^ getpid(); + + /* Factors are 2^31-1 and 2^61-1 (Mersenne primes M31 and M61) */ + if (sizeof(unsigned long) == 4) { + return ENTROPY_DEBUG("fallback(4)", entropy * 2147483647); + } else { + return ENTROPY_DEBUG("fallback(8)", + entropy * (unsigned long)2305843009213693951ULL); + } +#endif +} + +static unsigned long +get_hash_secret_salt(XML_Parser parser) { + if (parser->m_parentParser != NULL) + return get_hash_secret_salt(parser->m_parentParser); + return parser->m_hash_secret_salt; +} + +static XML_Bool /* only valid for root parser */ +startParsing(XML_Parser parser) { + /* hash functions must be initialized before setContext() is called */ + if (parser->m_hash_secret_salt == 0) + parser->m_hash_secret_salt = generate_hash_secret_salt(parser); + if (parser->m_ns) { + /* implicit context only set for root parser, since child + parsers (i.e. external entity parsers) will inherit it + */ + return setContext(parser, implicitContext); + } + return XML_TRUE; +} + +XML_Parser XMLCALL +XML_ParserCreate_MM(const XML_Char *encodingName, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *nameSep) { + return parserCreate(encodingName, memsuite, nameSep, NULL); +} + +static XML_Parser +parserCreate(const XML_Char *encodingName, + const XML_Memory_Handling_Suite *memsuite, const XML_Char *nameSep, + DTD *dtd) { + XML_Parser parser; + + if (memsuite) { + XML_Memory_Handling_Suite *mtemp; + parser = (XML_Parser)memsuite->malloc_fcn(sizeof(struct XML_ParserStruct)); + if (parser != NULL) { + mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); + mtemp->malloc_fcn = memsuite->malloc_fcn; + mtemp->realloc_fcn = memsuite->realloc_fcn; + mtemp->free_fcn = memsuite->free_fcn; + } + } else { + XML_Memory_Handling_Suite *mtemp; + parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct)); + if (parser != NULL) { + mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); + mtemp->malloc_fcn = malloc; + mtemp->realloc_fcn = realloc; + mtemp->free_fcn = free; + } + } + + if (! parser) + return parser; + + parser->m_buffer = NULL; + parser->m_bufferLim = NULL; + + parser->m_attsSize = INIT_ATTS_SIZE; + parser->m_atts + = (ATTRIBUTE *)MALLOC(parser, parser->m_attsSize * sizeof(ATTRIBUTE)); + if (parser->m_atts == NULL) { + FREE(parser, parser); + return NULL; + } +#ifdef XML_ATTR_INFO + parser->m_attInfo = (XML_AttrInfo *)MALLOC( + parser, parser->m_attsSize * sizeof(XML_AttrInfo)); + if (parser->m_attInfo == NULL) { + FREE(parser, parser->m_atts); + FREE(parser, parser); + return NULL; + } +#endif + parser->m_dataBuf + = (XML_Char *)MALLOC(parser, INIT_DATA_BUF_SIZE * sizeof(XML_Char)); + if (parser->m_dataBuf == NULL) { + FREE(parser, parser->m_atts); +#ifdef XML_ATTR_INFO + FREE(parser, parser->m_attInfo); +#endif + FREE(parser, parser); + return NULL; + } + parser->m_dataBufEnd = parser->m_dataBuf + INIT_DATA_BUF_SIZE; + + if (dtd) + parser->m_dtd = dtd; + else { + parser->m_dtd = dtdCreate(&parser->m_mem); + if (parser->m_dtd == NULL) { + FREE(parser, parser->m_dataBuf); + FREE(parser, parser->m_atts); +#ifdef XML_ATTR_INFO + FREE(parser, parser->m_attInfo); +#endif + FREE(parser, parser); + return NULL; + } + } + + parser->m_freeBindingList = NULL; + parser->m_freeTagList = NULL; + parser->m_freeInternalEntities = NULL; + + parser->m_groupSize = 0; + parser->m_groupConnector = NULL; + + parser->m_unknownEncodingHandler = NULL; + parser->m_unknownEncodingHandlerData = NULL; + + parser->m_namespaceSeparator = ASCII_EXCL; + parser->m_ns = XML_FALSE; + parser->m_ns_triplets = XML_FALSE; + + parser->m_nsAtts = NULL; + parser->m_nsAttsVersion = 0; + parser->m_nsAttsPower = 0; + + parser->m_protocolEncodingName = NULL; + + poolInit(&parser->m_tempPool, &(parser->m_mem)); + poolInit(&parser->m_temp2Pool, &(parser->m_mem)); + parserInit(parser, encodingName); + + if (encodingName && ! parser->m_protocolEncodingName) { + XML_ParserFree(parser); + return NULL; + } + + if (nameSep) { + parser->m_ns = XML_TRUE; + parser->m_internalEncoding = XmlGetInternalEncodingNS(); + parser->m_namespaceSeparator = *nameSep; + } else { + parser->m_internalEncoding = XmlGetInternalEncoding(); + } + + return parser; +} + +static void +parserInit(XML_Parser parser, const XML_Char *encodingName) { + parser->m_processor = prologInitProcessor; + XmlPrologStateInit(&parser->m_prologState); + if (encodingName != NULL) { + parser->m_protocolEncodingName = copyString(encodingName, &(parser->m_mem)); + } + parser->m_curBase = NULL; + XmlInitEncoding(&parser->m_initEncoding, &parser->m_encoding, 0); + parser->m_userData = NULL; + parser->m_handlerArg = NULL; + parser->m_startElementHandler = NULL; + parser->m_endElementHandler = NULL; + parser->m_characterDataHandler = NULL; + parser->m_processingInstructionHandler = NULL; + parser->m_commentHandler = NULL; + parser->m_startCdataSectionHandler = NULL; + parser->m_endCdataSectionHandler = NULL; + parser->m_defaultHandler = NULL; + parser->m_startDoctypeDeclHandler = NULL; + parser->m_endDoctypeDeclHandler = NULL; + parser->m_unparsedEntityDeclHandler = NULL; + parser->m_notationDeclHandler = NULL; + parser->m_startNamespaceDeclHandler = NULL; + parser->m_endNamespaceDeclHandler = NULL; + parser->m_notStandaloneHandler = NULL; + parser->m_externalEntityRefHandler = NULL; + parser->m_externalEntityRefHandlerArg = parser; + parser->m_skippedEntityHandler = NULL; + parser->m_elementDeclHandler = NULL; + parser->m_attlistDeclHandler = NULL; + parser->m_entityDeclHandler = NULL; + parser->m_xmlDeclHandler = NULL; + parser->m_bufferPtr = parser->m_buffer; + parser->m_bufferEnd = parser->m_buffer; + parser->m_parseEndByteIndex = 0; + parser->m_parseEndPtr = NULL; + parser->m_declElementType = NULL; + parser->m_declAttributeId = NULL; + parser->m_declEntity = NULL; + parser->m_doctypeName = NULL; + parser->m_doctypeSysid = NULL; + parser->m_doctypePubid = NULL; + parser->m_declAttributeType = NULL; + parser->m_declNotationName = NULL; + parser->m_declNotationPublicId = NULL; + parser->m_declAttributeIsCdata = XML_FALSE; + parser->m_declAttributeIsId = XML_FALSE; + memset(&parser->m_position, 0, sizeof(POSITION)); + parser->m_errorCode = XML_ERROR_NONE; + parser->m_eventPtr = NULL; + parser->m_eventEndPtr = NULL; + parser->m_positionPtr = NULL; + parser->m_openInternalEntities = NULL; + parser->m_defaultExpandInternalEntities = XML_TRUE; + parser->m_tagLevel = 0; + parser->m_tagStack = NULL; + parser->m_inheritedBindings = NULL; + parser->m_nSpecifiedAtts = 0; + parser->m_unknownEncodingMem = NULL; + parser->m_unknownEncodingRelease = NULL; + parser->m_unknownEncodingData = NULL; + parser->m_parentParser = NULL; + parser->m_parsingStatus.parsing = XML_INITIALIZED; +#ifdef XML_DTD + parser->m_isParamEntity = XML_FALSE; + parser->m_useForeignDTD = XML_FALSE; + parser->m_paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; +#endif + parser->m_hash_secret_salt = 0; +} + +/* moves list of bindings to m_freeBindingList */ +static void FASTCALL +moveToFreeBindingList(XML_Parser parser, BINDING *bindings) { + while (bindings) { + BINDING *b = bindings; + bindings = bindings->nextTagBinding; + b->nextTagBinding = parser->m_freeBindingList; + parser->m_freeBindingList = b; + } +} + +XML_Bool XMLCALL +XML_ParserReset(XML_Parser parser, const XML_Char *encodingName) { + TAG *tStk; + OPEN_INTERNAL_ENTITY *openEntityList; + + if (parser == NULL) + return XML_FALSE; + + if (parser->m_parentParser) + return XML_FALSE; + /* move m_tagStack to m_freeTagList */ + tStk = parser->m_tagStack; + while (tStk) { + TAG *tag = tStk; + tStk = tStk->parent; + tag->parent = parser->m_freeTagList; + moveToFreeBindingList(parser, tag->bindings); + tag->bindings = NULL; + parser->m_freeTagList = tag; + } + /* move m_openInternalEntities to m_freeInternalEntities */ + openEntityList = parser->m_openInternalEntities; + while (openEntityList) { + OPEN_INTERNAL_ENTITY *openEntity = openEntityList; + openEntityList = openEntity->next; + openEntity->next = parser->m_freeInternalEntities; + parser->m_freeInternalEntities = openEntity; + } + moveToFreeBindingList(parser, parser->m_inheritedBindings); + FREE(parser, parser->m_unknownEncodingMem); + if (parser->m_unknownEncodingRelease) + parser->m_unknownEncodingRelease(parser->m_unknownEncodingData); + poolClear(&parser->m_tempPool); + poolClear(&parser->m_temp2Pool); + FREE(parser, (void *)parser->m_protocolEncodingName); + parser->m_protocolEncodingName = NULL; + parserInit(parser, encodingName); + dtdReset(parser->m_dtd, &parser->m_mem); + return XML_TRUE; +} + +enum XML_Status XMLCALL +XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) { + if (parser == NULL) + return XML_STATUS_ERROR; + /* Block after XML_Parse()/XML_ParseBuffer() has been called. + XXX There's no way for the caller to determine which of the + XXX possible error cases caused the XML_STATUS_ERROR return. + */ + if (parser->m_parsingStatus.parsing == XML_PARSING + || parser->m_parsingStatus.parsing == XML_SUSPENDED) + return XML_STATUS_ERROR; + + /* Get rid of any previous encoding name */ + FREE(parser, (void *)parser->m_protocolEncodingName); + + if (encodingName == NULL) + /* No new encoding name */ + parser->m_protocolEncodingName = NULL; + else { + /* Copy the new encoding name into allocated memory */ + parser->m_protocolEncodingName = copyString(encodingName, &(parser->m_mem)); + if (! parser->m_protocolEncodingName) + return XML_STATUS_ERROR; + } + return XML_STATUS_OK; +} + +XML_Parser XMLCALL +XML_ExternalEntityParserCreate(XML_Parser oldParser, const XML_Char *context, + const XML_Char *encodingName) { + XML_Parser parser = oldParser; + DTD *newDtd = NULL; + DTD *oldDtd; + XML_StartElementHandler oldStartElementHandler; + XML_EndElementHandler oldEndElementHandler; + XML_CharacterDataHandler oldCharacterDataHandler; + XML_ProcessingInstructionHandler oldProcessingInstructionHandler; + XML_CommentHandler oldCommentHandler; + XML_StartCdataSectionHandler oldStartCdataSectionHandler; + XML_EndCdataSectionHandler oldEndCdataSectionHandler; + XML_DefaultHandler oldDefaultHandler; + XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler; + XML_NotationDeclHandler oldNotationDeclHandler; + XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler; + XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler; + XML_NotStandaloneHandler oldNotStandaloneHandler; + XML_ExternalEntityRefHandler oldExternalEntityRefHandler; + XML_SkippedEntityHandler oldSkippedEntityHandler; + XML_UnknownEncodingHandler oldUnknownEncodingHandler; + XML_ElementDeclHandler oldElementDeclHandler; + XML_AttlistDeclHandler oldAttlistDeclHandler; + XML_EntityDeclHandler oldEntityDeclHandler; + XML_XmlDeclHandler oldXmlDeclHandler; + ELEMENT_TYPE *oldDeclElementType; + + void *oldUserData; + void *oldHandlerArg; + XML_Bool oldDefaultExpandInternalEntities; + XML_Parser oldExternalEntityRefHandlerArg; +#ifdef XML_DTD + enum XML_ParamEntityParsing oldParamEntityParsing; + int oldInEntityValue; +#endif + XML_Bool oldns_triplets; + /* Note that the new parser shares the same hash secret as the old + parser, so that dtdCopy and copyEntityTable can lookup values + from hash tables associated with either parser without us having + to worry which hash secrets each table has. + */ + unsigned long oldhash_secret_salt; + + /* Validate the oldParser parameter before we pull everything out of it */ + if (oldParser == NULL) + return NULL; + + /* Stash the original parser contents on the stack */ + oldDtd = parser->m_dtd; + oldStartElementHandler = parser->m_startElementHandler; + oldEndElementHandler = parser->m_endElementHandler; + oldCharacterDataHandler = parser->m_characterDataHandler; + oldProcessingInstructionHandler = parser->m_processingInstructionHandler; + oldCommentHandler = parser->m_commentHandler; + oldStartCdataSectionHandler = parser->m_startCdataSectionHandler; + oldEndCdataSectionHandler = parser->m_endCdataSectionHandler; + oldDefaultHandler = parser->m_defaultHandler; + oldUnparsedEntityDeclHandler = parser->m_unparsedEntityDeclHandler; + oldNotationDeclHandler = parser->m_notationDeclHandler; + oldStartNamespaceDeclHandler = parser->m_startNamespaceDeclHandler; + oldEndNamespaceDeclHandler = parser->m_endNamespaceDeclHandler; + oldNotStandaloneHandler = parser->m_notStandaloneHandler; + oldExternalEntityRefHandler = parser->m_externalEntityRefHandler; + oldSkippedEntityHandler = parser->m_skippedEntityHandler; + oldUnknownEncodingHandler = parser->m_unknownEncodingHandler; + oldElementDeclHandler = parser->m_elementDeclHandler; + oldAttlistDeclHandler = parser->m_attlistDeclHandler; + oldEntityDeclHandler = parser->m_entityDeclHandler; + oldXmlDeclHandler = parser->m_xmlDeclHandler; + oldDeclElementType = parser->m_declElementType; + + oldUserData = parser->m_userData; + oldHandlerArg = parser->m_handlerArg; + oldDefaultExpandInternalEntities = parser->m_defaultExpandInternalEntities; + oldExternalEntityRefHandlerArg = parser->m_externalEntityRefHandlerArg; +#ifdef XML_DTD + oldParamEntityParsing = parser->m_paramEntityParsing; + oldInEntityValue = parser->m_prologState.inEntityValue; +#endif + oldns_triplets = parser->m_ns_triplets; + /* Note that the new parser shares the same hash secret as the old + parser, so that dtdCopy and copyEntityTable can lookup values + from hash tables associated with either parser without us having + to worry which hash secrets each table has. + */ + oldhash_secret_salt = parser->m_hash_secret_salt; + +#ifdef XML_DTD + if (! context) + newDtd = oldDtd; +#endif /* XML_DTD */ + + /* Note that the magical uses of the pre-processor to make field + access look more like C++ require that `parser' be overwritten + here. This makes this function more painful to follow than it + would be otherwise. + */ + if (parser->m_ns) { + XML_Char tmp[2]; + *tmp = parser->m_namespaceSeparator; + parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd); + } else { + parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd); + } + + if (! parser) + return NULL; + + parser->m_startElementHandler = oldStartElementHandler; + parser->m_endElementHandler = oldEndElementHandler; + parser->m_characterDataHandler = oldCharacterDataHandler; + parser->m_processingInstructionHandler = oldProcessingInstructionHandler; + parser->m_commentHandler = oldCommentHandler; + parser->m_startCdataSectionHandler = oldStartCdataSectionHandler; + parser->m_endCdataSectionHandler = oldEndCdataSectionHandler; + parser->m_defaultHandler = oldDefaultHandler; + parser->m_unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler; + parser->m_notationDeclHandler = oldNotationDeclHandler; + parser->m_startNamespaceDeclHandler = oldStartNamespaceDeclHandler; + parser->m_endNamespaceDeclHandler = oldEndNamespaceDeclHandler; + parser->m_notStandaloneHandler = oldNotStandaloneHandler; + parser->m_externalEntityRefHandler = oldExternalEntityRefHandler; + parser->m_skippedEntityHandler = oldSkippedEntityHandler; + parser->m_unknownEncodingHandler = oldUnknownEncodingHandler; + parser->m_elementDeclHandler = oldElementDeclHandler; + parser->m_attlistDeclHandler = oldAttlistDeclHandler; + parser->m_entityDeclHandler = oldEntityDeclHandler; + parser->m_xmlDeclHandler = oldXmlDeclHandler; + parser->m_declElementType = oldDeclElementType; + parser->m_userData = oldUserData; + if (oldUserData == oldHandlerArg) + parser->m_handlerArg = parser->m_userData; + else + parser->m_handlerArg = parser; + if (oldExternalEntityRefHandlerArg != oldParser) + parser->m_externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg; + parser->m_defaultExpandInternalEntities = oldDefaultExpandInternalEntities; + parser->m_ns_triplets = oldns_triplets; + parser->m_hash_secret_salt = oldhash_secret_salt; + parser->m_parentParser = oldParser; +#ifdef XML_DTD + parser->m_paramEntityParsing = oldParamEntityParsing; + parser->m_prologState.inEntityValue = oldInEntityValue; + if (context) { +#endif /* XML_DTD */ + if (! dtdCopy(oldParser, parser->m_dtd, oldDtd, &parser->m_mem) + || ! setContext(parser, context)) { + XML_ParserFree(parser); + return NULL; + } + parser->m_processor = externalEntityInitProcessor; +#ifdef XML_DTD + } else { + /* The DTD instance referenced by parser->m_dtd is shared between the + document's root parser and external PE parsers, therefore one does not + need to call setContext. In addition, one also *must* not call + setContext, because this would overwrite existing prefix->binding + pointers in parser->m_dtd with ones that get destroyed with the external + PE parser. This would leave those prefixes with dangling pointers. + */ + parser->m_isParamEntity = XML_TRUE; + XmlPrologStateInitExternalEntity(&parser->m_prologState); + parser->m_processor = externalParEntInitProcessor; + } +#endif /* XML_DTD */ + return parser; +} + +static void FASTCALL +destroyBindings(BINDING *bindings, XML_Parser parser) { + for (;;) { + BINDING *b = bindings; + if (! b) + break; + bindings = b->nextTagBinding; + FREE(parser, b->uri); + FREE(parser, b); + } +} + +void XMLCALL +XML_ParserFree(XML_Parser parser) { + TAG *tagList; + OPEN_INTERNAL_ENTITY *entityList; + if (parser == NULL) + return; + /* free m_tagStack and m_freeTagList */ + tagList = parser->m_tagStack; + for (;;) { + TAG *p; + if (tagList == NULL) { + if (parser->m_freeTagList == NULL) + break; + tagList = parser->m_freeTagList; + parser->m_freeTagList = NULL; + } + p = tagList; + tagList = tagList->parent; + FREE(parser, p->buf); + destroyBindings(p->bindings, parser); + FREE(parser, p); + } + /* free m_openInternalEntities and m_freeInternalEntities */ + entityList = parser->m_openInternalEntities; + for (;;) { + OPEN_INTERNAL_ENTITY *openEntity; + if (entityList == NULL) { + if (parser->m_freeInternalEntities == NULL) + break; + entityList = parser->m_freeInternalEntities; + parser->m_freeInternalEntities = NULL; + } + openEntity = entityList; + entityList = entityList->next; + FREE(parser, openEntity); + } + + destroyBindings(parser->m_freeBindingList, parser); + destroyBindings(parser->m_inheritedBindings, parser); + poolDestroy(&parser->m_tempPool); + poolDestroy(&parser->m_temp2Pool); + FREE(parser, (void *)parser->m_protocolEncodingName); +#ifdef XML_DTD + /* external parameter entity parsers share the DTD structure + parser->m_dtd with the root parser, so we must not destroy it + */ + if (! parser->m_isParamEntity && parser->m_dtd) +#else + if (parser->m_dtd) +#endif /* XML_DTD */ + dtdDestroy(parser->m_dtd, (XML_Bool)! parser->m_parentParser, + &parser->m_mem); + FREE(parser, (void *)parser->m_atts); +#ifdef XML_ATTR_INFO + FREE(parser, (void *)parser->m_attInfo); +#endif + FREE(parser, parser->m_groupConnector); + FREE(parser, parser->m_buffer); + FREE(parser, parser->m_dataBuf); + FREE(parser, parser->m_nsAtts); + FREE(parser, parser->m_unknownEncodingMem); + if (parser->m_unknownEncodingRelease) + parser->m_unknownEncodingRelease(parser->m_unknownEncodingData); + FREE(parser, parser); +} + +void XMLCALL +XML_UseParserAsHandlerArg(XML_Parser parser) { + if (parser != NULL) + parser->m_handlerArg = parser; +} + +enum XML_Error XMLCALL +XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD) { + if (parser == NULL) + return XML_ERROR_INVALID_ARGUMENT; +#ifdef XML_DTD + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (parser->m_parsingStatus.parsing == XML_PARSING + || parser->m_parsingStatus.parsing == XML_SUSPENDED) + return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING; + parser->m_useForeignDTD = useDTD; + return XML_ERROR_NONE; +#else + UNUSED_P(useDTD); + return XML_ERROR_FEATURE_REQUIRES_XML_DTD; +#endif +} + +void XMLCALL +XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) { + if (parser == NULL) + return; + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (parser->m_parsingStatus.parsing == XML_PARSING + || parser->m_parsingStatus.parsing == XML_SUSPENDED) + return; + parser->m_ns_triplets = do_nst ? XML_TRUE : XML_FALSE; +} + +void XMLCALL +XML_SetUserData(XML_Parser parser, void *p) { + if (parser == NULL) + return; + if (parser->m_handlerArg == parser->m_userData) + parser->m_handlerArg = parser->m_userData = p; + else + parser->m_userData = p; +} + +enum XML_Status XMLCALL +XML_SetBase(XML_Parser parser, const XML_Char *p) { + if (parser == NULL) + return XML_STATUS_ERROR; + if (p) { + p = poolCopyString(&parser->m_dtd->pool, p); + if (! p) + return XML_STATUS_ERROR; + parser->m_curBase = p; + } else + parser->m_curBase = NULL; + return XML_STATUS_OK; +} + +const XML_Char *XMLCALL +XML_GetBase(XML_Parser parser) { + if (parser == NULL) + return NULL; + return parser->m_curBase; +} + +int XMLCALL +XML_GetSpecifiedAttributeCount(XML_Parser parser) { + if (parser == NULL) + return -1; + return parser->m_nSpecifiedAtts; +} + +int XMLCALL +XML_GetIdAttributeIndex(XML_Parser parser) { + if (parser == NULL) + return -1; + return parser->m_idAttIndex; +} + +#ifdef XML_ATTR_INFO +const XML_AttrInfo *XMLCALL +XML_GetAttributeInfo(XML_Parser parser) { + if (parser == NULL) + return NULL; + return parser->m_attInfo; +} +#endif + +void XMLCALL +XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start, + XML_EndElementHandler end) { + if (parser == NULL) + return; + parser->m_startElementHandler = start; + parser->m_endElementHandler = end; +} + +void XMLCALL +XML_SetStartElementHandler(XML_Parser parser, XML_StartElementHandler start) { + if (parser != NULL) + parser->m_startElementHandler = start; +} + +void XMLCALL +XML_SetEndElementHandler(XML_Parser parser, XML_EndElementHandler end) { + if (parser != NULL) + parser->m_endElementHandler = end; +} + +void XMLCALL +XML_SetCharacterDataHandler(XML_Parser parser, + XML_CharacterDataHandler handler) { + if (parser != NULL) + parser->m_characterDataHandler = handler; +} + +void XMLCALL +XML_SetProcessingInstructionHandler(XML_Parser parser, + XML_ProcessingInstructionHandler handler) { + if (parser != NULL) + parser->m_processingInstructionHandler = handler; +} + +void XMLCALL +XML_SetCommentHandler(XML_Parser parser, XML_CommentHandler handler) { + if (parser != NULL) + parser->m_commentHandler = handler; +} + +void XMLCALL +XML_SetCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start, + XML_EndCdataSectionHandler end) { + if (parser == NULL) + return; + parser->m_startCdataSectionHandler = start; + parser->m_endCdataSectionHandler = end; +} + +void XMLCALL +XML_SetStartCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start) { + if (parser != NULL) + parser->m_startCdataSectionHandler = start; +} + +void XMLCALL +XML_SetEndCdataSectionHandler(XML_Parser parser, + XML_EndCdataSectionHandler end) { + if (parser != NULL) + parser->m_endCdataSectionHandler = end; +} + +void XMLCALL +XML_SetDefaultHandler(XML_Parser parser, XML_DefaultHandler handler) { + if (parser == NULL) + return; + parser->m_defaultHandler = handler; + parser->m_defaultExpandInternalEntities = XML_FALSE; +} + +void XMLCALL +XML_SetDefaultHandlerExpand(XML_Parser parser, XML_DefaultHandler handler) { + if (parser == NULL) + return; + parser->m_defaultHandler = handler; + parser->m_defaultExpandInternalEntities = XML_TRUE; +} + +void XMLCALL +XML_SetDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start, + XML_EndDoctypeDeclHandler end) { + if (parser == NULL) + return; + parser->m_startDoctypeDeclHandler = start; + parser->m_endDoctypeDeclHandler = end; +} + +void XMLCALL +XML_SetStartDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start) { + if (parser != NULL) + parser->m_startDoctypeDeclHandler = start; +} + +void XMLCALL +XML_SetEndDoctypeDeclHandler(XML_Parser parser, XML_EndDoctypeDeclHandler end) { + if (parser != NULL) + parser->m_endDoctypeDeclHandler = end; +} + +void XMLCALL +XML_SetUnparsedEntityDeclHandler(XML_Parser parser, + XML_UnparsedEntityDeclHandler handler) { + if (parser != NULL) + parser->m_unparsedEntityDeclHandler = handler; +} + +void XMLCALL +XML_SetNotationDeclHandler(XML_Parser parser, XML_NotationDeclHandler handler) { + if (parser != NULL) + parser->m_notationDeclHandler = handler; +} + +void XMLCALL +XML_SetNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start, + XML_EndNamespaceDeclHandler end) { + if (parser == NULL) + return; + parser->m_startNamespaceDeclHandler = start; + parser->m_endNamespaceDeclHandler = end; +} + +void XMLCALL +XML_SetStartNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start) { + if (parser != NULL) + parser->m_startNamespaceDeclHandler = start; +} + +void XMLCALL +XML_SetEndNamespaceDeclHandler(XML_Parser parser, + XML_EndNamespaceDeclHandler end) { + if (parser != NULL) + parser->m_endNamespaceDeclHandler = end; +} + +void XMLCALL +XML_SetNotStandaloneHandler(XML_Parser parser, + XML_NotStandaloneHandler handler) { + if (parser != NULL) + parser->m_notStandaloneHandler = handler; +} + +void XMLCALL +XML_SetExternalEntityRefHandler(XML_Parser parser, + XML_ExternalEntityRefHandler handler) { + if (parser != NULL) + parser->m_externalEntityRefHandler = handler; +} + +void XMLCALL +XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg) { + if (parser == NULL) + return; + if (arg) + parser->m_externalEntityRefHandlerArg = (XML_Parser)arg; + else + parser->m_externalEntityRefHandlerArg = parser; +} + +void XMLCALL +XML_SetSkippedEntityHandler(XML_Parser parser, + XML_SkippedEntityHandler handler) { + if (parser != NULL) + parser->m_skippedEntityHandler = handler; +} + +void XMLCALL +XML_SetUnknownEncodingHandler(XML_Parser parser, + XML_UnknownEncodingHandler handler, void *data) { + if (parser == NULL) + return; + parser->m_unknownEncodingHandler = handler; + parser->m_unknownEncodingHandlerData = data; +} + +void XMLCALL +XML_SetElementDeclHandler(XML_Parser parser, XML_ElementDeclHandler eldecl) { + if (parser != NULL) + parser->m_elementDeclHandler = eldecl; +} + +void XMLCALL +XML_SetAttlistDeclHandler(XML_Parser parser, XML_AttlistDeclHandler attdecl) { + if (parser != NULL) + parser->m_attlistDeclHandler = attdecl; +} + +void XMLCALL +XML_SetEntityDeclHandler(XML_Parser parser, XML_EntityDeclHandler handler) { + if (parser != NULL) + parser->m_entityDeclHandler = handler; +} + +void XMLCALL +XML_SetXmlDeclHandler(XML_Parser parser, XML_XmlDeclHandler handler) { + if (parser != NULL) + parser->m_xmlDeclHandler = handler; +} + +int XMLCALL +XML_SetParamEntityParsing(XML_Parser parser, + enum XML_ParamEntityParsing peParsing) { + if (parser == NULL) + return 0; + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (parser->m_parsingStatus.parsing == XML_PARSING + || parser->m_parsingStatus.parsing == XML_SUSPENDED) + return 0; +#ifdef XML_DTD + parser->m_paramEntityParsing = peParsing; + return 1; +#else + return peParsing == XML_PARAM_ENTITY_PARSING_NEVER; +#endif +} + +int XMLCALL +XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt) { + if (parser == NULL) + return 0; + if (parser->m_parentParser) + return XML_SetHashSalt(parser->m_parentParser, hash_salt); + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (parser->m_parsingStatus.parsing == XML_PARSING + || parser->m_parsingStatus.parsing == XML_SUSPENDED) + return 0; + parser->m_hash_secret_salt = hash_salt; + return 1; +} + +enum XML_Status XMLCALL +XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) { + if ((parser == NULL) || (len < 0) || ((s == NULL) && (len != 0))) { + if (parser != NULL) + parser->m_errorCode = XML_ERROR_INVALID_ARGUMENT; + return XML_STATUS_ERROR; + } + switch (parser->m_parsingStatus.parsing) { + case XML_SUSPENDED: + parser->m_errorCode = XML_ERROR_SUSPENDED; + return XML_STATUS_ERROR; + case XML_FINISHED: + parser->m_errorCode = XML_ERROR_FINISHED; + return XML_STATUS_ERROR; + case XML_INITIALIZED: + if (parser->m_parentParser == NULL && ! startParsing(parser)) { + parser->m_errorCode = XML_ERROR_NO_MEMORY; + return XML_STATUS_ERROR; + } + /* fall through */ + default: + parser->m_parsingStatus.parsing = XML_PARSING; + } + + if (len == 0) { + parser->m_parsingStatus.finalBuffer = (XML_Bool)isFinal; + if (! isFinal) + return XML_STATUS_OK; + parser->m_positionPtr = parser->m_bufferPtr; + parser->m_parseEndPtr = parser->m_bufferEnd; + + /* If data are left over from last buffer, and we now know that these + data are the final chunk of input, then we have to check them again + to detect errors based on that fact. + */ + parser->m_errorCode + = parser->m_processor(parser, parser->m_bufferPtr, + parser->m_parseEndPtr, &parser->m_bufferPtr); + + if (parser->m_errorCode == XML_ERROR_NONE) { + switch (parser->m_parsingStatus.parsing) { + case XML_SUSPENDED: + /* It is hard to be certain, but it seems that this case + * cannot occur. This code is cleaning up a previous parse + * with no new data (since len == 0). Changing the parsing + * state requires getting to execute a handler function, and + * there doesn't seem to be an opportunity for that while in + * this circumstance. + * + * Given the uncertainty, we retain the code but exclude it + * from coverage tests. + * + * LCOV_EXCL_START + */ + XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, + parser->m_bufferPtr, &parser->m_position); + parser->m_positionPtr = parser->m_bufferPtr; + return XML_STATUS_SUSPENDED; + /* LCOV_EXCL_STOP */ + case XML_INITIALIZED: + case XML_PARSING: + parser->m_parsingStatus.parsing = XML_FINISHED; + /* fall through */ + default: + return XML_STATUS_OK; + } + } + parser->m_eventEndPtr = parser->m_eventPtr; + parser->m_processor = errorProcessor; + return XML_STATUS_ERROR; + } +#ifndef XML_CONTEXT_BYTES + else if (parser->m_bufferPtr == parser->m_bufferEnd) { + const char *end; + int nLeftOver; + enum XML_Status result; + /* Detect overflow (a+b > MAX <==> b > MAX-a) */ + if ((XML_Size)len > ((XML_Size)-1) / 2 - parser->m_parseEndByteIndex) { + parser->m_errorCode = XML_ERROR_NO_MEMORY; + parser->m_eventPtr = parser->m_eventEndPtr = NULL; + parser->m_processor = errorProcessor; + return XML_STATUS_ERROR; + } + parser->m_parseEndByteIndex += len; + parser->m_positionPtr = s; + parser->m_parsingStatus.finalBuffer = (XML_Bool)isFinal; + + parser->m_errorCode + = parser->m_processor(parser, s, parser->m_parseEndPtr = s + len, &end); + + if (parser->m_errorCode != XML_ERROR_NONE) { + parser->m_eventEndPtr = parser->m_eventPtr; + parser->m_processor = errorProcessor; + return XML_STATUS_ERROR; + } else { + switch (parser->m_parsingStatus.parsing) { + case XML_SUSPENDED: + result = XML_STATUS_SUSPENDED; + break; + case XML_INITIALIZED: + case XML_PARSING: + if (isFinal) { + parser->m_parsingStatus.parsing = XML_FINISHED; + return XML_STATUS_OK; + } + /* fall through */ + default: + result = XML_STATUS_OK; + } + } + + XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, end, + &parser->m_position); + nLeftOver = s + len - end; + if (nLeftOver) { + if (parser->m_buffer == NULL + || nLeftOver > parser->m_bufferLim - parser->m_buffer) { + /* avoid _signed_ integer overflow */ + char *temp = NULL; + const int bytesToAllocate = (int)((unsigned)len * 2U); + if (bytesToAllocate > 0) { + temp = (char *)REALLOC(parser, parser->m_buffer, bytesToAllocate); + } + if (temp == NULL) { + parser->m_errorCode = XML_ERROR_NO_MEMORY; + parser->m_eventPtr = parser->m_eventEndPtr = NULL; + parser->m_processor = errorProcessor; + return XML_STATUS_ERROR; + } + parser->m_buffer = temp; + parser->m_bufferLim = parser->m_buffer + bytesToAllocate; + } + memcpy(parser->m_buffer, end, nLeftOver); + } + parser->m_bufferPtr = parser->m_buffer; + parser->m_bufferEnd = parser->m_buffer + nLeftOver; + parser->m_positionPtr = parser->m_bufferPtr; + parser->m_parseEndPtr = parser->m_bufferEnd; + parser->m_eventPtr = parser->m_bufferPtr; + parser->m_eventEndPtr = parser->m_bufferPtr; + return result; + } +#endif /* not defined XML_CONTEXT_BYTES */ + else { + void *buff = XML_GetBuffer(parser, len); + if (buff == NULL) + return XML_STATUS_ERROR; + else { + memcpy(buff, s, len); + return XML_ParseBuffer(parser, len, isFinal); + } + } +} + +enum XML_Status XMLCALL +XML_ParseBuffer(XML_Parser parser, int len, int isFinal) { + const char *start; + enum XML_Status result = XML_STATUS_OK; + + if (parser == NULL) + return XML_STATUS_ERROR; + switch (parser->m_parsingStatus.parsing) { + case XML_SUSPENDED: + parser->m_errorCode = XML_ERROR_SUSPENDED; + return XML_STATUS_ERROR; + case XML_FINISHED: + parser->m_errorCode = XML_ERROR_FINISHED; + return XML_STATUS_ERROR; + case XML_INITIALIZED: + if (parser->m_parentParser == NULL && ! startParsing(parser)) { + parser->m_errorCode = XML_ERROR_NO_MEMORY; + return XML_STATUS_ERROR; + } + /* fall through */ + default: + parser->m_parsingStatus.parsing = XML_PARSING; + } + + start = parser->m_bufferPtr; + parser->m_positionPtr = start; + parser->m_bufferEnd += len; + parser->m_parseEndPtr = parser->m_bufferEnd; + parser->m_parseEndByteIndex += len; + parser->m_parsingStatus.finalBuffer = (XML_Bool)isFinal; + + parser->m_errorCode = parser->m_processor( + parser, start, parser->m_parseEndPtr, &parser->m_bufferPtr); + + if (parser->m_errorCode != XML_ERROR_NONE) { + parser->m_eventEndPtr = parser->m_eventPtr; + parser->m_processor = errorProcessor; + return XML_STATUS_ERROR; + } else { + switch (parser->m_parsingStatus.parsing) { + case XML_SUSPENDED: + result = XML_STATUS_SUSPENDED; + break; + case XML_INITIALIZED: + case XML_PARSING: + if (isFinal) { + parser->m_parsingStatus.parsing = XML_FINISHED; + return result; + } + default:; /* should not happen */ + } + } + + XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, + parser->m_bufferPtr, &parser->m_position); + parser->m_positionPtr = parser->m_bufferPtr; + return result; +} + +void *XMLCALL +XML_GetBuffer(XML_Parser parser, int len) { + if (parser == NULL) + return NULL; + if (len < 0) { + parser->m_errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } + switch (parser->m_parsingStatus.parsing) { + case XML_SUSPENDED: + parser->m_errorCode = XML_ERROR_SUSPENDED; + return NULL; + case XML_FINISHED: + parser->m_errorCode = XML_ERROR_FINISHED; + return NULL; + default:; + } + + if (len > EXPAT_SAFE_PTR_DIFF(parser->m_bufferLim, parser->m_bufferEnd)) { +#ifdef XML_CONTEXT_BYTES + int keep; +#endif /* defined XML_CONTEXT_BYTES */ + /* Do not invoke signed arithmetic overflow: */ + int neededSize = (int)((unsigned)len + + (unsigned)EXPAT_SAFE_PTR_DIFF( + parser->m_bufferEnd, parser->m_bufferPtr)); + if (neededSize < 0) { + parser->m_errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } +#ifdef XML_CONTEXT_BYTES + keep = (int)EXPAT_SAFE_PTR_DIFF(parser->m_bufferPtr, parser->m_buffer); + if (keep > XML_CONTEXT_BYTES) + keep = XML_CONTEXT_BYTES; + neededSize += keep; +#endif /* defined XML_CONTEXT_BYTES */ + if (neededSize + <= EXPAT_SAFE_PTR_DIFF(parser->m_bufferLim, parser->m_buffer)) { +#ifdef XML_CONTEXT_BYTES + if (keep < EXPAT_SAFE_PTR_DIFF(parser->m_bufferPtr, parser->m_buffer)) { + int offset + = (int)EXPAT_SAFE_PTR_DIFF(parser->m_bufferPtr, parser->m_buffer) + - keep; + /* The buffer pointers cannot be NULL here; we have at least some bytes + * in the buffer */ + memmove(parser->m_buffer, &parser->m_buffer[offset], + parser->m_bufferEnd - parser->m_bufferPtr + keep); + parser->m_bufferEnd -= offset; + parser->m_bufferPtr -= offset; + } +#else + if (parser->m_buffer && parser->m_bufferPtr) { + memmove(parser->m_buffer, parser->m_bufferPtr, + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr)); + parser->m_bufferEnd + = parser->m_buffer + + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr); + parser->m_bufferPtr = parser->m_buffer; + } +#endif /* not defined XML_CONTEXT_BYTES */ + } else { + char *newBuf; + int bufferSize + = (int)EXPAT_SAFE_PTR_DIFF(parser->m_bufferLim, parser->m_bufferPtr); + if (bufferSize == 0) + bufferSize = INIT_BUFFER_SIZE; + do { + /* Do not invoke signed arithmetic overflow: */ + bufferSize = (int)(2U * (unsigned)bufferSize); + } while (bufferSize < neededSize && bufferSize > 0); + if (bufferSize <= 0) { + parser->m_errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } + newBuf = (char *)MALLOC(parser, bufferSize); + if (newBuf == 0) { + parser->m_errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } + parser->m_bufferLim = newBuf + bufferSize; +#ifdef XML_CONTEXT_BYTES + if (parser->m_bufferPtr) { + memcpy(newBuf, &parser->m_bufferPtr[-keep], + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr) + + keep); + FREE(parser, parser->m_buffer); + parser->m_buffer = newBuf; + parser->m_bufferEnd + = parser->m_buffer + + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr) + + keep; + parser->m_bufferPtr = parser->m_buffer + keep; + } else { + /* This must be a brand new buffer with no data in it yet */ + parser->m_bufferEnd = newBuf; + parser->m_bufferPtr = parser->m_buffer = newBuf; + } +#else + if (parser->m_bufferPtr) { + memcpy(newBuf, parser->m_bufferPtr, + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr)); + FREE(parser, parser->m_buffer); + parser->m_bufferEnd + = newBuf + + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr); + } else { + /* This must be a brand new buffer with no data in it yet */ + parser->m_bufferEnd = newBuf; + } + parser->m_bufferPtr = parser->m_buffer = newBuf; +#endif /* not defined XML_CONTEXT_BYTES */ + } + parser->m_eventPtr = parser->m_eventEndPtr = NULL; + parser->m_positionPtr = NULL; + } + return parser->m_bufferEnd; +} + +enum XML_Status XMLCALL +XML_StopParser(XML_Parser parser, XML_Bool resumable) { + if (parser == NULL) + return XML_STATUS_ERROR; + switch (parser->m_parsingStatus.parsing) { + case XML_SUSPENDED: + if (resumable) { + parser->m_errorCode = XML_ERROR_SUSPENDED; + return XML_STATUS_ERROR; + } + parser->m_parsingStatus.parsing = XML_FINISHED; + break; + case XML_FINISHED: + parser->m_errorCode = XML_ERROR_FINISHED; + return XML_STATUS_ERROR; + default: + if (resumable) { +#ifdef XML_DTD + if (parser->m_isParamEntity) { + parser->m_errorCode = XML_ERROR_SUSPEND_PE; + return XML_STATUS_ERROR; + } +#endif + parser->m_parsingStatus.parsing = XML_SUSPENDED; + } else + parser->m_parsingStatus.parsing = XML_FINISHED; + } + return XML_STATUS_OK; +} + +enum XML_Status XMLCALL +XML_ResumeParser(XML_Parser parser) { + enum XML_Status result = XML_STATUS_OK; + + if (parser == NULL) + return XML_STATUS_ERROR; + if (parser->m_parsingStatus.parsing != XML_SUSPENDED) { + parser->m_errorCode = XML_ERROR_NOT_SUSPENDED; + return XML_STATUS_ERROR; + } + parser->m_parsingStatus.parsing = XML_PARSING; + + parser->m_errorCode = parser->m_processor( + parser, parser->m_bufferPtr, parser->m_parseEndPtr, &parser->m_bufferPtr); + + if (parser->m_errorCode != XML_ERROR_NONE) { + parser->m_eventEndPtr = parser->m_eventPtr; + parser->m_processor = errorProcessor; + return XML_STATUS_ERROR; + } else { + switch (parser->m_parsingStatus.parsing) { + case XML_SUSPENDED: + result = XML_STATUS_SUSPENDED; + break; + case XML_INITIALIZED: + case XML_PARSING: + if (parser->m_parsingStatus.finalBuffer) { + parser->m_parsingStatus.parsing = XML_FINISHED; + return result; + } + default:; + } + } + + XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, + parser->m_bufferPtr, &parser->m_position); + parser->m_positionPtr = parser->m_bufferPtr; + return result; +} + +void XMLCALL +XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status) { + if (parser == NULL) + return; + assert(status != NULL); + *status = parser->m_parsingStatus; +} + +enum XML_Error XMLCALL +XML_GetErrorCode(XML_Parser parser) { + if (parser == NULL) + return XML_ERROR_INVALID_ARGUMENT; + return parser->m_errorCode; +} + +XML_Index XMLCALL +XML_GetCurrentByteIndex(XML_Parser parser) { + if (parser == NULL) + return -1; + if (parser->m_eventPtr) + return (XML_Index)(parser->m_parseEndByteIndex + - (parser->m_parseEndPtr - parser->m_eventPtr)); + return -1; +} + +int XMLCALL +XML_GetCurrentByteCount(XML_Parser parser) { + if (parser == NULL) + return 0; + if (parser->m_eventEndPtr && parser->m_eventPtr) + return (int)(parser->m_eventEndPtr - parser->m_eventPtr); + return 0; +} + +const char *XMLCALL +XML_GetInputContext(XML_Parser parser, int *offset, int *size) { +#ifdef XML_CONTEXT_BYTES + if (parser == NULL) + return NULL; + if (parser->m_eventPtr && parser->m_buffer) { + if (offset != NULL) + *offset = (int)(parser->m_eventPtr - parser->m_buffer); + if (size != NULL) + *size = (int)(parser->m_bufferEnd - parser->m_buffer); + return parser->m_buffer; + } +#else + (void)parser; + (void)offset; + (void)size; +#endif /* defined XML_CONTEXT_BYTES */ + return (const char *)0; +} + +XML_Size XMLCALL +XML_GetCurrentLineNumber(XML_Parser parser) { + if (parser == NULL) + return 0; + if (parser->m_eventPtr && parser->m_eventPtr >= parser->m_positionPtr) { + XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, + parser->m_eventPtr, &parser->m_position); + parser->m_positionPtr = parser->m_eventPtr; + } + return parser->m_position.lineNumber + 1; +} + +XML_Size XMLCALL +XML_GetCurrentColumnNumber(XML_Parser parser) { + if (parser == NULL) + return 0; + if (parser->m_eventPtr && parser->m_eventPtr >= parser->m_positionPtr) { + XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, + parser->m_eventPtr, &parser->m_position); + parser->m_positionPtr = parser->m_eventPtr; + } + return parser->m_position.columnNumber; +} + +void XMLCALL +XML_FreeContentModel(XML_Parser parser, XML_Content *model) { + if (parser != NULL) + FREE(parser, model); +} + +void *XMLCALL +XML_MemMalloc(XML_Parser parser, size_t size) { + if (parser == NULL) + return NULL; + return MALLOC(parser, size); +} + +void *XMLCALL +XML_MemRealloc(XML_Parser parser, void *ptr, size_t size) { + if (parser == NULL) + return NULL; + return REALLOC(parser, ptr, size); +} + +void XMLCALL +XML_MemFree(XML_Parser parser, void *ptr) { + if (parser != NULL) + FREE(parser, ptr); +} + +void XMLCALL +XML_DefaultCurrent(XML_Parser parser) { + if (parser == NULL) + return; + if (parser->m_defaultHandler) { + if (parser->m_openInternalEntities) + reportDefault(parser, parser->m_internalEncoding, + parser->m_openInternalEntities->internalEventPtr, + parser->m_openInternalEntities->internalEventEndPtr); + else + reportDefault(parser, parser->m_encoding, parser->m_eventPtr, + parser->m_eventEndPtr); + } +} + +const XML_LChar *XMLCALL +XML_ErrorString(enum XML_Error code) { + switch (code) { + case XML_ERROR_NONE: + return NULL; + case XML_ERROR_NO_MEMORY: + return XML_L("out of memory"); + case XML_ERROR_SYNTAX: + return XML_L("syntax error"); + case XML_ERROR_NO_ELEMENTS: + return XML_L("no element found"); + case XML_ERROR_INVALID_TOKEN: + return XML_L("not well-formed (invalid token)"); + case XML_ERROR_UNCLOSED_TOKEN: + return XML_L("unclosed token"); + case XML_ERROR_PARTIAL_CHAR: + return XML_L("partial character"); + case XML_ERROR_TAG_MISMATCH: + return XML_L("mismatched tag"); + case XML_ERROR_DUPLICATE_ATTRIBUTE: + return XML_L("duplicate attribute"); + case XML_ERROR_JUNK_AFTER_DOC_ELEMENT: + return XML_L("junk after document element"); + case XML_ERROR_PARAM_ENTITY_REF: + return XML_L("illegal parameter entity reference"); + case XML_ERROR_UNDEFINED_ENTITY: + return XML_L("undefined entity"); + case XML_ERROR_RECURSIVE_ENTITY_REF: + return XML_L("recursive entity reference"); + case XML_ERROR_ASYNC_ENTITY: + return XML_L("asynchronous entity"); + case XML_ERROR_BAD_CHAR_REF: + return XML_L("reference to invalid character number"); + case XML_ERROR_BINARY_ENTITY_REF: + return XML_L("reference to binary entity"); + case XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF: + return XML_L("reference to external entity in attribute"); + case XML_ERROR_MISPLACED_XML_PI: + return XML_L("XML or text declaration not at start of entity"); + case XML_ERROR_UNKNOWN_ENCODING: + return XML_L("unknown encoding"); + case XML_ERROR_INCORRECT_ENCODING: + return XML_L("encoding specified in XML declaration is incorrect"); + case XML_ERROR_UNCLOSED_CDATA_SECTION: + return XML_L("unclosed CDATA section"); + case XML_ERROR_EXTERNAL_ENTITY_HANDLING: + return XML_L("error in processing external entity reference"); + case XML_ERROR_NOT_STANDALONE: + return XML_L("document is not standalone"); + case XML_ERROR_UNEXPECTED_STATE: + return XML_L("unexpected parser state - please send a bug report"); + case XML_ERROR_ENTITY_DECLARED_IN_PE: + return XML_L("entity declared in parameter entity"); + case XML_ERROR_FEATURE_REQUIRES_XML_DTD: + return XML_L("requested feature requires XML_DTD support in Expat"); + case XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING: + return XML_L("cannot change setting once parsing has begun"); + /* Added in 1.95.7. */ + case XML_ERROR_UNBOUND_PREFIX: + return XML_L("unbound prefix"); + /* Added in 1.95.8. */ + case XML_ERROR_UNDECLARING_PREFIX: + return XML_L("must not undeclare prefix"); + case XML_ERROR_INCOMPLETE_PE: + return XML_L("incomplete markup in parameter entity"); + case XML_ERROR_XML_DECL: + return XML_L("XML declaration not well-formed"); + case XML_ERROR_TEXT_DECL: + return XML_L("text declaration not well-formed"); + case XML_ERROR_PUBLICID: + return XML_L("illegal character(s) in public id"); + case XML_ERROR_SUSPENDED: + return XML_L("parser suspended"); + case XML_ERROR_NOT_SUSPENDED: + return XML_L("parser not suspended"); + case XML_ERROR_ABORTED: + return XML_L("parsing aborted"); + case XML_ERROR_FINISHED: + return XML_L("parsing finished"); + case XML_ERROR_SUSPEND_PE: + return XML_L("cannot suspend in external parameter entity"); + /* Added in 2.0.0. */ + case XML_ERROR_RESERVED_PREFIX_XML: + return XML_L( + "reserved prefix (xml) must not be undeclared or bound to another namespace name"); + case XML_ERROR_RESERVED_PREFIX_XMLNS: + return XML_L("reserved prefix (xmlns) must not be declared or undeclared"); + case XML_ERROR_RESERVED_NAMESPACE_URI: + return XML_L( + "prefix must not be bound to one of the reserved namespace names"); + /* Added in 2.2.5. */ + case XML_ERROR_INVALID_ARGUMENT: /* Constant added in 2.2.1, already */ + return XML_L("invalid argument"); + } + return NULL; +} + +const XML_LChar *XMLCALL +XML_ExpatVersion(void) { + /* V1 is used to string-ize the version number. However, it would + string-ize the actual version macro *names* unless we get them + substituted before being passed to V1. CPP is defined to expand + a macro, then rescan for more expansions. Thus, we use V2 to expand + the version macros, then CPP will expand the resulting V1() macro + with the correct numerals. */ + /* ### I'm assuming cpp is portable in this respect... */ + +#define V1(a, b, c) XML_L(#a) XML_L(".") XML_L(#b) XML_L(".") XML_L(#c) +#define V2(a, b, c) XML_L("expat_") V1(a, b, c) + + return V2(XML_MAJOR_VERSION, XML_MINOR_VERSION, XML_MICRO_VERSION); + +#undef V1 +#undef V2 +} + +XML_Expat_Version XMLCALL +XML_ExpatVersionInfo(void) { + XML_Expat_Version version; + + version.major = XML_MAJOR_VERSION; + version.minor = XML_MINOR_VERSION; + version.micro = XML_MICRO_VERSION; + + return version; +} + +const XML_Feature *XMLCALL +XML_GetFeatureList(void) { + static const XML_Feature features[] + = {{XML_FEATURE_SIZEOF_XML_CHAR, XML_L("sizeof(XML_Char)"), + sizeof(XML_Char)}, + {XML_FEATURE_SIZEOF_XML_LCHAR, XML_L("sizeof(XML_LChar)"), + sizeof(XML_LChar)}, +#ifdef XML_UNICODE + {XML_FEATURE_UNICODE, XML_L("XML_UNICODE"), 0}, +#endif +#ifdef XML_UNICODE_WCHAR_T + {XML_FEATURE_UNICODE_WCHAR_T, XML_L("XML_UNICODE_WCHAR_T"), 0}, +#endif +#ifdef XML_DTD + {XML_FEATURE_DTD, XML_L("XML_DTD"), 0}, +#endif +#ifdef XML_CONTEXT_BYTES + {XML_FEATURE_CONTEXT_BYTES, XML_L("XML_CONTEXT_BYTES"), + XML_CONTEXT_BYTES}, +#endif +#ifdef XML_MIN_SIZE + {XML_FEATURE_MIN_SIZE, XML_L("XML_MIN_SIZE"), 0}, +#endif +#ifdef XML_NS + {XML_FEATURE_NS, XML_L("XML_NS"), 0}, +#endif +#ifdef XML_LARGE_SIZE + {XML_FEATURE_LARGE_SIZE, XML_L("XML_LARGE_SIZE"), 0}, +#endif +#ifdef XML_ATTR_INFO + {XML_FEATURE_ATTR_INFO, XML_L("XML_ATTR_INFO"), 0}, +#endif + {XML_FEATURE_END, NULL, 0}}; + + return features; +} + +/* Initially tag->rawName always points into the parse buffer; + for those TAG instances opened while the current parse buffer was + processed, and not yet closed, we need to store tag->rawName in a more + permanent location, since the parse buffer is about to be discarded. +*/ +static XML_Bool +storeRawNames(XML_Parser parser) { + TAG *tag = parser->m_tagStack; + while (tag) { + int bufSize; + int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1); + char *rawNameBuf = tag->buf + nameLen; + /* Stop if already stored. Since m_tagStack is a stack, we can stop + at the first entry that has already been copied; everything + below it in the stack is already been accounted for in a + previous call to this function. + */ + if (tag->rawName == rawNameBuf) + break; + /* For re-use purposes we need to ensure that the + size of tag->buf is a multiple of sizeof(XML_Char). + */ + bufSize = nameLen + ROUND_UP(tag->rawNameLength, sizeof(XML_Char)); + if (bufSize > tag->bufEnd - tag->buf) { + char *temp = (char *)REALLOC(parser, tag->buf, bufSize); + if (temp == NULL) + return XML_FALSE; + /* if tag->name.str points to tag->buf (only when namespace + processing is off) then we have to update it + */ + if (tag->name.str == (XML_Char *)tag->buf) + tag->name.str = (XML_Char *)temp; + /* if tag->name.localPart is set (when namespace processing is on) + then update it as well, since it will always point into tag->buf + */ + if (tag->name.localPart) + tag->name.localPart + = (XML_Char *)temp + (tag->name.localPart - (XML_Char *)tag->buf); + tag->buf = temp; + tag->bufEnd = temp + bufSize; + rawNameBuf = temp + nameLen; + } + memcpy(rawNameBuf, tag->rawName, tag->rawNameLength); + tag->rawName = rawNameBuf; + tag = tag->parent; + } + return XML_TRUE; +} + +static enum XML_Error PTRCALL +contentProcessor(XML_Parser parser, const char *start, const char *end, + const char **endPtr) { + enum XML_Error result + = doContent(parser, 0, parser->m_encoding, start, end, endPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer); + if (result == XML_ERROR_NONE) { + if (! storeRawNames(parser)) + return XML_ERROR_NO_MEMORY; + } + return result; +} + +static enum XML_Error PTRCALL +externalEntityInitProcessor(XML_Parser parser, const char *start, + const char *end, const char **endPtr) { + enum XML_Error result = initializeEncoding(parser); + if (result != XML_ERROR_NONE) + return result; + parser->m_processor = externalEntityInitProcessor2; + return externalEntityInitProcessor2(parser, start, end, endPtr); +} + +static enum XML_Error PTRCALL +externalEntityInitProcessor2(XML_Parser parser, const char *start, + const char *end, const char **endPtr) { + const char *next = start; /* XmlContentTok doesn't always set the last arg */ + int tok = XmlContentTok(parser->m_encoding, start, end, &next); + switch (tok) { + case XML_TOK_BOM: + /* If we are at the end of the buffer, this would cause the next stage, + i.e. externalEntityInitProcessor3, to pass control directly to + doContent (by detecting XML_TOK_NONE) without processing any xml text + declaration - causing the error XML_ERROR_MISPLACED_XML_PI in doContent. + */ + if (next == end && ! parser->m_parsingStatus.finalBuffer) { + *endPtr = next; + return XML_ERROR_NONE; + } + start = next; + break; + case XML_TOK_PARTIAL: + if (! parser->m_parsingStatus.finalBuffer) { + *endPtr = start; + return XML_ERROR_NONE; + } + parser->m_eventPtr = start; + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (! parser->m_parsingStatus.finalBuffer) { + *endPtr = start; + return XML_ERROR_NONE; + } + parser->m_eventPtr = start; + return XML_ERROR_PARTIAL_CHAR; + } + parser->m_processor = externalEntityInitProcessor3; + return externalEntityInitProcessor3(parser, start, end, endPtr); +} + +static enum XML_Error PTRCALL +externalEntityInitProcessor3(XML_Parser parser, const char *start, + const char *end, const char **endPtr) { + int tok; + const char *next = start; /* XmlContentTok doesn't always set the last arg */ + parser->m_eventPtr = start; + tok = XmlContentTok(parser->m_encoding, start, end, &next); + parser->m_eventEndPtr = next; + + switch (tok) { + case XML_TOK_XML_DECL: { + enum XML_Error result; + result = processXmlDecl(parser, 1, start, next); + if (result != XML_ERROR_NONE) + return result; + switch (parser->m_parsingStatus.parsing) { + case XML_SUSPENDED: + *endPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: + start = next; + } + } break; + case XML_TOK_PARTIAL: + if (! parser->m_parsingStatus.finalBuffer) { + *endPtr = start; + return XML_ERROR_NONE; + } + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (! parser->m_parsingStatus.finalBuffer) { + *endPtr = start; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + } + parser->m_processor = externalEntityContentProcessor; + parser->m_tagLevel = 1; + return externalEntityContentProcessor(parser, start, end, endPtr); +} + +static enum XML_Error PTRCALL +externalEntityContentProcessor(XML_Parser parser, const char *start, + const char *end, const char **endPtr) { + enum XML_Error result + = doContent(parser, 1, parser->m_encoding, start, end, endPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer); + if (result == XML_ERROR_NONE) { + if (! storeRawNames(parser)) + return XML_ERROR_NO_MEMORY; + } + return result; +} + +static enum XML_Error +doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, + const char *s, const char *end, const char **nextPtr, + XML_Bool haveMore) { + /* save one level of indirection */ + DTD *const dtd = parser->m_dtd; + + const char **eventPP; + const char **eventEndPP; + if (enc == parser->m_encoding) { + eventPP = &parser->m_eventPtr; + eventEndPP = &parser->m_eventEndPtr; + } else { + eventPP = &(parser->m_openInternalEntities->internalEventPtr); + eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); + } + *eventPP = s; + + for (;;) { + const char *next = s; /* XmlContentTok doesn't always set the last arg */ + int tok = XmlContentTok(enc, s, end, &next); + *eventEndPP = next; + switch (tok) { + case XML_TOK_TRAILING_CR: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + *eventEndPP = end; + if (parser->m_characterDataHandler) { + XML_Char c = 0xA; + parser->m_characterDataHandler(parser->m_handlerArg, &c, 1); + } else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, end); + /* We are at the end of the final buffer, should we check for + XML_SUSPENDED, XML_FINISHED? + */ + if (startTagLevel == 0) + return XML_ERROR_NO_ELEMENTS; + if (parser->m_tagLevel != startTagLevel) + return XML_ERROR_ASYNC_ENTITY; + *nextPtr = end; + return XML_ERROR_NONE; + case XML_TOK_NONE: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + if (startTagLevel > 0) { + if (parser->m_tagLevel != startTagLevel) + return XML_ERROR_ASYNC_ENTITY; + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_NO_ELEMENTS; + case XML_TOK_INVALID: + *eventPP = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_ENTITY_REF: { + const XML_Char *name; + ENTITY *entity; + XML_Char ch = (XML_Char)XmlPredefinedEntityName( + enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar); + if (ch) { + if (parser->m_characterDataHandler) + parser->m_characterDataHandler(parser->m_handlerArg, &ch, 1); + else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + name = poolStoreString(&dtd->pool, enc, s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (! name) + return XML_ERROR_NO_MEMORY; + entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); + poolDiscard(&dtd->pool); + /* First, determine if a check for an existing declaration is needed; + if yes, check that the entity exists, and that it is internal, + otherwise call the skipped entity or default handler. + */ + if (! dtd->hasParamEntityRefs || dtd->standalone) { + if (! entity) + return XML_ERROR_UNDEFINED_ENTITY; + else if (! entity->is_internal) + return XML_ERROR_ENTITY_DECLARED_IN_PE; + } else if (! entity) { + if (parser->m_skippedEntityHandler) + parser->m_skippedEntityHandler(parser->m_handlerArg, name, 0); + else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + if (entity->open) + return XML_ERROR_RECURSIVE_ENTITY_REF; + if (entity->notation) + return XML_ERROR_BINARY_ENTITY_REF; + if (entity->textPtr) { + enum XML_Error result; + if (! parser->m_defaultExpandInternalEntities) { + if (parser->m_skippedEntityHandler) + parser->m_skippedEntityHandler(parser->m_handlerArg, entity->name, + 0); + else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + result = processInternalEntity(parser, entity, XML_FALSE); + if (result != XML_ERROR_NONE) + return result; + } else if (parser->m_externalEntityRefHandler) { + const XML_Char *context; + entity->open = XML_TRUE; + context = getContext(parser); + entity->open = XML_FALSE; + if (! context) + return XML_ERROR_NO_MEMORY; + if (! parser->m_externalEntityRefHandler( + parser->m_externalEntityRefHandlerArg, context, entity->base, + entity->systemId, entity->publicId)) + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + poolDiscard(&parser->m_tempPool); + } else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + case XML_TOK_START_TAG_NO_ATTS: + /* fall through */ + case XML_TOK_START_TAG_WITH_ATTS: { + TAG *tag; + enum XML_Error result; + XML_Char *toPtr; + if (parser->m_freeTagList) { + tag = parser->m_freeTagList; + parser->m_freeTagList = parser->m_freeTagList->parent; + } else { + tag = (TAG *)MALLOC(parser, sizeof(TAG)); + if (! tag) + return XML_ERROR_NO_MEMORY; + tag->buf = (char *)MALLOC(parser, INIT_TAG_BUF_SIZE); + if (! tag->buf) { + FREE(parser, tag); + return XML_ERROR_NO_MEMORY; + } + tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE; + } + tag->bindings = NULL; + tag->parent = parser->m_tagStack; + parser->m_tagStack = tag; + tag->name.localPart = NULL; + tag->name.prefix = NULL; + tag->rawName = s + enc->minBytesPerChar; + tag->rawNameLength = XmlNameLength(enc, tag->rawName); + ++parser->m_tagLevel; + { + const char *rawNameEnd = tag->rawName + tag->rawNameLength; + const char *fromPtr = tag->rawName; + toPtr = (XML_Char *)tag->buf; + for (;;) { + int bufSize; + int convLen; + const enum XML_Convert_Result convert_res + = XmlConvert(enc, &fromPtr, rawNameEnd, (ICHAR **)&toPtr, + (ICHAR *)tag->bufEnd - 1); + convLen = (int)(toPtr - (XML_Char *)tag->buf); + if ((fromPtr >= rawNameEnd) + || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) { + tag->name.strLen = convLen; + break; + } + bufSize = (int)(tag->bufEnd - tag->buf) << 1; + { + char *temp = (char *)REALLOC(parser, tag->buf, bufSize); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + tag->buf = temp; + tag->bufEnd = temp + bufSize; + toPtr = (XML_Char *)temp + convLen; + } + } + } + tag->name.str = (XML_Char *)tag->buf; + *toPtr = XML_T('\0'); + result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings)); + if (result) + return result; + if (parser->m_startElementHandler) + parser->m_startElementHandler(parser->m_handlerArg, tag->name.str, + (const XML_Char **)parser->m_atts); + else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + poolClear(&parser->m_tempPool); + break; + } + case XML_TOK_EMPTY_ELEMENT_NO_ATTS: + /* fall through */ + case XML_TOK_EMPTY_ELEMENT_WITH_ATTS: { + const char *rawName = s + enc->minBytesPerChar; + enum XML_Error result; + BINDING *bindings = NULL; + XML_Bool noElmHandlers = XML_TRUE; + TAG_NAME name; + name.str = poolStoreString(&parser->m_tempPool, enc, rawName, + rawName + XmlNameLength(enc, rawName)); + if (! name.str) + return XML_ERROR_NO_MEMORY; + poolFinish(&parser->m_tempPool); + result = storeAtts(parser, enc, s, &name, &bindings); + if (result != XML_ERROR_NONE) { + freeBindings(parser, bindings); + return result; + } + poolFinish(&parser->m_tempPool); + if (parser->m_startElementHandler) { + parser->m_startElementHandler(parser->m_handlerArg, name.str, + (const XML_Char **)parser->m_atts); + noElmHandlers = XML_FALSE; + } + if (parser->m_endElementHandler) { + if (parser->m_startElementHandler) + *eventPP = *eventEndPP; + parser->m_endElementHandler(parser->m_handlerArg, name.str); + noElmHandlers = XML_FALSE; + } + if (noElmHandlers && parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + poolClear(&parser->m_tempPool); + freeBindings(parser, bindings); + } + if ((parser->m_tagLevel == 0) + && (parser->m_parsingStatus.parsing != XML_FINISHED)) { + if (parser->m_parsingStatus.parsing == XML_SUSPENDED) + parser->m_processor = epilogProcessor; + else + return epilogProcessor(parser, next, end, nextPtr); + } + break; + case XML_TOK_END_TAG: + if (parser->m_tagLevel == startTagLevel) + return XML_ERROR_ASYNC_ENTITY; + else { + int len; + const char *rawName; + TAG *tag = parser->m_tagStack; + parser->m_tagStack = tag->parent; + tag->parent = parser->m_freeTagList; + parser->m_freeTagList = tag; + rawName = s + enc->minBytesPerChar * 2; + len = XmlNameLength(enc, rawName); + if (len != tag->rawNameLength + || memcmp(tag->rawName, rawName, len) != 0) { + *eventPP = rawName; + return XML_ERROR_TAG_MISMATCH; + } + --parser->m_tagLevel; + if (parser->m_endElementHandler) { + const XML_Char *localPart; + const XML_Char *prefix; + XML_Char *uri; + localPart = tag->name.localPart; + if (parser->m_ns && localPart) { + /* localPart and prefix may have been overwritten in + tag->name.str, since this points to the binding->uri + buffer which gets re-used; so we have to add them again + */ + uri = (XML_Char *)tag->name.str + tag->name.uriLen; + /* don't need to check for space - already done in storeAtts() */ + while (*localPart) + *uri++ = *localPart++; + prefix = (XML_Char *)tag->name.prefix; + if (parser->m_ns_triplets && prefix) { + *uri++ = parser->m_namespaceSeparator; + while (*prefix) + *uri++ = *prefix++; + } + *uri = XML_T('\0'); + } + parser->m_endElementHandler(parser->m_handlerArg, tag->name.str); + } else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + while (tag->bindings) { + BINDING *b = tag->bindings; + if (parser->m_endNamespaceDeclHandler) + parser->m_endNamespaceDeclHandler(parser->m_handlerArg, + b->prefix->name); + tag->bindings = tag->bindings->nextTagBinding; + b->nextTagBinding = parser->m_freeBindingList; + parser->m_freeBindingList = b; + b->prefix->binding = b->prevPrefixBinding; + } + if ((parser->m_tagLevel == 0) + && (parser->m_parsingStatus.parsing != XML_FINISHED)) { + if (parser->m_parsingStatus.parsing == XML_SUSPENDED) + parser->m_processor = epilogProcessor; + else + return epilogProcessor(parser, next, end, nextPtr); + } + } + break; + case XML_TOK_CHAR_REF: { + int n = XmlCharRefNumber(enc, s); + if (n < 0) + return XML_ERROR_BAD_CHAR_REF; + if (parser->m_characterDataHandler) { + XML_Char buf[XML_ENCODE_MAX]; + parser->m_characterDataHandler(parser->m_handlerArg, buf, + XmlEncode(n, (ICHAR *)buf)); + } else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + } break; + case XML_TOK_XML_DECL: + return XML_ERROR_MISPLACED_XML_PI; + case XML_TOK_DATA_NEWLINE: + if (parser->m_characterDataHandler) { + XML_Char c = 0xA; + parser->m_characterDataHandler(parser->m_handlerArg, &c, 1); + } else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + break; + case XML_TOK_CDATA_SECT_OPEN: { + enum XML_Error result; + if (parser->m_startCdataSectionHandler) + parser->m_startCdataSectionHandler(parser->m_handlerArg); + /* BEGIN disabled code */ + /* Suppose you doing a transformation on a document that involves + changing only the character data. You set up a defaultHandler + and a characterDataHandler. The defaultHandler simply copies + characters through. The characterDataHandler does the + transformation and writes the characters out escaping them as + necessary. This case will fail to work if we leave out the + following two lines (because & and < inside CDATA sections will + be incorrectly escaped). + + However, now we have a start/endCdataSectionHandler, so it seems + easier to let the user deal with this. + */ + else if (0 && parser->m_characterDataHandler) + parser->m_characterDataHandler(parser->m_handlerArg, parser->m_dataBuf, + 0); + /* END disabled code */ + else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + result = doCdataSection(parser, enc, &next, end, nextPtr, haveMore); + if (result != XML_ERROR_NONE) + return result; + else if (! next) { + parser->m_processor = cdataSectionProcessor; + return result; + } + } break; + case XML_TOK_TRAILING_RSQB: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + if (parser->m_characterDataHandler) { + if (MUST_CONVERT(enc, s)) { + ICHAR *dataPtr = (ICHAR *)parser->m_dataBuf; + XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)parser->m_dataBufEnd); + parser->m_characterDataHandler( + parser->m_handlerArg, parser->m_dataBuf, + (int)(dataPtr - (ICHAR *)parser->m_dataBuf)); + } else + parser->m_characterDataHandler( + parser->m_handlerArg, (XML_Char *)s, + (int)((XML_Char *)end - (XML_Char *)s)); + } else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, end); + /* We are at the end of the final buffer, should we check for + XML_SUSPENDED, XML_FINISHED? + */ + if (startTagLevel == 0) { + *eventPP = end; + return XML_ERROR_NO_ELEMENTS; + } + if (parser->m_tagLevel != startTagLevel) { + *eventPP = end; + return XML_ERROR_ASYNC_ENTITY; + } + *nextPtr = end; + return XML_ERROR_NONE; + case XML_TOK_DATA_CHARS: { + XML_CharacterDataHandler charDataHandler = parser->m_characterDataHandler; + if (charDataHandler) { + if (MUST_CONVERT(enc, s)) { + for (;;) { + ICHAR *dataPtr = (ICHAR *)parser->m_dataBuf; + const enum XML_Convert_Result convert_res = XmlConvert( + enc, &s, next, &dataPtr, (ICHAR *)parser->m_dataBufEnd); + *eventEndPP = s; + charDataHandler(parser->m_handlerArg, parser->m_dataBuf, + (int)(dataPtr - (ICHAR *)parser->m_dataBuf)); + if ((convert_res == XML_CONVERT_COMPLETED) + || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) + break; + *eventPP = s; + } + } else + charDataHandler(parser->m_handlerArg, (XML_Char *)s, + (int)((XML_Char *)next - (XML_Char *)s)); + } else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + } break; + case XML_TOK_PI: + if (! reportProcessingInstruction(parser, enc, s, next)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_COMMENT: + if (! reportComment(parser, enc, s, next)) + return XML_ERROR_NO_MEMORY; + break; + default: + /* All of the tokens produced by XmlContentTok() have their own + * explicit cases, so this default is not strictly necessary. + * However it is a useful safety net, so we retain the code and + * simply exclude it from the coverage tests. + * + * LCOV_EXCL_START + */ + if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + break; + /* LCOV_EXCL_STOP */ + } + *eventPP = s = next; + switch (parser->m_parsingStatus.parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default:; + } + } + /* not reached */ +} + +/* This function does not call free() on the allocated memory, merely + * moving it to the parser's m_freeBindingList where it can be freed or + * reused as appropriate. + */ +static void +freeBindings(XML_Parser parser, BINDING *bindings) { + while (bindings) { + BINDING *b = bindings; + + /* m_startNamespaceDeclHandler will have been called for this + * binding in addBindings(), so call the end handler now. + */ + if (parser->m_endNamespaceDeclHandler) + parser->m_endNamespaceDeclHandler(parser->m_handlerArg, b->prefix->name); + + bindings = bindings->nextTagBinding; + b->nextTagBinding = parser->m_freeBindingList; + parser->m_freeBindingList = b; + b->prefix->binding = b->prevPrefixBinding; + } +} + +/* Precondition: all arguments must be non-NULL; + Purpose: + - normalize attributes + - check attributes for well-formedness + - generate namespace aware attribute names (URI, prefix) + - build list of attributes for startElementHandler + - default attributes + - process namespace declarations (check and report them) + - generate namespace aware element name (URI, prefix) +*/ +static enum XML_Error +storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, + TAG_NAME *tagNamePtr, BINDING **bindingsPtr) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ + ELEMENT_TYPE *elementType; + int nDefaultAtts; + const XML_Char **appAtts; /* the attribute list for the application */ + int attIndex = 0; + int prefixLen; + int i; + int n; + XML_Char *uri; + int nPrefixes = 0; + BINDING *binding; + const XML_Char *localPart; + + /* lookup the element type name */ + elementType + = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str, 0); + if (! elementType) { + const XML_Char *name = poolCopyString(&dtd->pool, tagNamePtr->str); + if (! name) + return XML_ERROR_NO_MEMORY; + elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, + sizeof(ELEMENT_TYPE)); + if (! elementType) + return XML_ERROR_NO_MEMORY; + if (parser->m_ns && ! setElementTypePrefix(parser, elementType)) + return XML_ERROR_NO_MEMORY; + } + nDefaultAtts = elementType->nDefaultAtts; + + /* get the attributes from the tokenizer */ + n = XmlGetAttributes(enc, attStr, parser->m_attsSize, parser->m_atts); + if (n + nDefaultAtts > parser->m_attsSize) { + int oldAttsSize = parser->m_attsSize; + ATTRIBUTE *temp; +#ifdef XML_ATTR_INFO + XML_AttrInfo *temp2; +#endif + parser->m_attsSize = n + nDefaultAtts + INIT_ATTS_SIZE; + temp = (ATTRIBUTE *)REALLOC(parser, (void *)parser->m_atts, + parser->m_attsSize * sizeof(ATTRIBUTE)); + if (temp == NULL) { + parser->m_attsSize = oldAttsSize; + return XML_ERROR_NO_MEMORY; + } + parser->m_atts = temp; +#ifdef XML_ATTR_INFO + temp2 = (XML_AttrInfo *)REALLOC(parser, (void *)parser->m_attInfo, + parser->m_attsSize * sizeof(XML_AttrInfo)); + if (temp2 == NULL) { + parser->m_attsSize = oldAttsSize; + return XML_ERROR_NO_MEMORY; + } + parser->m_attInfo = temp2; +#endif + if (n > oldAttsSize) + XmlGetAttributes(enc, attStr, n, parser->m_atts); + } + + appAtts = (const XML_Char **)parser->m_atts; + for (i = 0; i < n; i++) { + ATTRIBUTE *currAtt = &parser->m_atts[i]; +#ifdef XML_ATTR_INFO + XML_AttrInfo *currAttInfo = &parser->m_attInfo[i]; +#endif + /* add the name and value to the attribute list */ + ATTRIBUTE_ID *attId + = getAttributeId(parser, enc, currAtt->name, + currAtt->name + XmlNameLength(enc, currAtt->name)); + if (! attId) + return XML_ERROR_NO_MEMORY; +#ifdef XML_ATTR_INFO + currAttInfo->nameStart + = parser->m_parseEndByteIndex - (parser->m_parseEndPtr - currAtt->name); + currAttInfo->nameEnd + = currAttInfo->nameStart + XmlNameLength(enc, currAtt->name); + currAttInfo->valueStart = parser->m_parseEndByteIndex + - (parser->m_parseEndPtr - currAtt->valuePtr); + currAttInfo->valueEnd = parser->m_parseEndByteIndex + - (parser->m_parseEndPtr - currAtt->valueEnd); +#endif + /* Detect duplicate attributes by their QNames. This does not work when + namespace processing is turned on and different prefixes for the same + namespace are used. For this case we have a check further down. + */ + if ((attId->name)[-1]) { + if (enc == parser->m_encoding) + parser->m_eventPtr = parser->m_atts[i].name; + return XML_ERROR_DUPLICATE_ATTRIBUTE; + } + (attId->name)[-1] = 1; + appAtts[attIndex++] = attId->name; + if (! parser->m_atts[i].normalized) { + enum XML_Error result; + XML_Bool isCdata = XML_TRUE; + + /* figure out whether declared as other than CDATA */ + if (attId->maybeTokenized) { + int j; + for (j = 0; j < nDefaultAtts; j++) { + if (attId == elementType->defaultAtts[j].id) { + isCdata = elementType->defaultAtts[j].isCdata; + break; + } + } + } + + /* normalize the attribute value */ + result = storeAttributeValue( + parser, enc, isCdata, parser->m_atts[i].valuePtr, + parser->m_atts[i].valueEnd, &parser->m_tempPool); + if (result) + return result; + appAtts[attIndex] = poolStart(&parser->m_tempPool); + poolFinish(&parser->m_tempPool); + } else { + /* the value did not need normalizing */ + appAtts[attIndex] = poolStoreString(&parser->m_tempPool, enc, + parser->m_atts[i].valuePtr, + parser->m_atts[i].valueEnd); + if (appAtts[attIndex] == 0) + return XML_ERROR_NO_MEMORY; + poolFinish(&parser->m_tempPool); + } + /* handle prefixed attribute names */ + if (attId->prefix) { + if (attId->xmlns) { + /* deal with namespace declarations here */ + enum XML_Error result = addBinding(parser, attId->prefix, attId, + appAtts[attIndex], bindingsPtr); + if (result) + return result; + --attIndex; + } else { + /* deal with other prefixed names later */ + attIndex++; + nPrefixes++; + (attId->name)[-1] = 2; + } + } else + attIndex++; + } + + /* set-up for XML_GetSpecifiedAttributeCount and XML_GetIdAttributeIndex */ + parser->m_nSpecifiedAtts = attIndex; + if (elementType->idAtt && (elementType->idAtt->name)[-1]) { + for (i = 0; i < attIndex; i += 2) + if (appAtts[i] == elementType->idAtt->name) { + parser->m_idAttIndex = i; + break; + } + } else + parser->m_idAttIndex = -1; + + /* do attribute defaulting */ + for (i = 0; i < nDefaultAtts; i++) { + const DEFAULT_ATTRIBUTE *da = elementType->defaultAtts + i; + if (! (da->id->name)[-1] && da->value) { + if (da->id->prefix) { + if (da->id->xmlns) { + enum XML_Error result = addBinding(parser, da->id->prefix, da->id, + da->value, bindingsPtr); + if (result) + return result; + } else { + (da->id->name)[-1] = 2; + nPrefixes++; + appAtts[attIndex++] = da->id->name; + appAtts[attIndex++] = da->value; + } + } else { + (da->id->name)[-1] = 1; + appAtts[attIndex++] = da->id->name; + appAtts[attIndex++] = da->value; + } + } + } + appAtts[attIndex] = 0; + + /* expand prefixed attribute names, check for duplicates, + and clear flags that say whether attributes were specified */ + i = 0; + if (nPrefixes) { + int j; /* hash table index */ + unsigned long version = parser->m_nsAttsVersion; + int nsAttsSize = (int)1 << parser->m_nsAttsPower; + unsigned char oldNsAttsPower = parser->m_nsAttsPower; + /* size of hash table must be at least 2 * (# of prefixed attributes) */ + if ((nPrefixes << 1) + >> parser->m_nsAttsPower) { /* true for m_nsAttsPower = 0 */ + NS_ATT *temp; + /* hash table size must also be a power of 2 and >= 8 */ + while (nPrefixes >> parser->m_nsAttsPower++) + ; + if (parser->m_nsAttsPower < 3) + parser->m_nsAttsPower = 3; + nsAttsSize = (int)1 << parser->m_nsAttsPower; + temp = (NS_ATT *)REALLOC(parser, parser->m_nsAtts, + nsAttsSize * sizeof(NS_ATT)); + if (! temp) { + /* Restore actual size of memory in m_nsAtts */ + parser->m_nsAttsPower = oldNsAttsPower; + return XML_ERROR_NO_MEMORY; + } + parser->m_nsAtts = temp; + version = 0; /* force re-initialization of m_nsAtts hash table */ + } + /* using a version flag saves us from initializing m_nsAtts every time */ + if (! version) { /* initialize version flags when version wraps around */ + version = INIT_ATTS_VERSION; + for (j = nsAttsSize; j != 0;) + parser->m_nsAtts[--j].version = version; + } + parser->m_nsAttsVersion = --version; + + /* expand prefixed names and check for duplicates */ + for (; i < attIndex; i += 2) { + const XML_Char *s = appAtts[i]; + if (s[-1] == 2) { /* prefixed */ + ATTRIBUTE_ID *id; + const BINDING *b; + unsigned long uriHash; + struct siphash sip_state; + struct sipkey sip_key; + + copy_salt_to_sipkey(parser, &sip_key); + sip24_init(&sip_state, &sip_key); + + ((XML_Char *)s)[-1] = 0; /* clear flag */ + id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, s, 0); + if (! id || ! id->prefix) { + /* This code is walking through the appAtts array, dealing + * with (in this case) a prefixed attribute name. To be in + * the array, the attribute must have already been bound, so + * has to have passed through the hash table lookup once + * already. That implies that an entry for it already + * exists, so the lookup above will return a pointer to + * already allocated memory. There is no opportunaity for + * the allocator to fail, so the condition above cannot be + * fulfilled. + * + * Since it is difficult to be certain that the above + * analysis is complete, we retain the test and merely + * remove the code from coverage tests. + */ + return XML_ERROR_NO_MEMORY; /* LCOV_EXCL_LINE */ + } + b = id->prefix->binding; + if (! b) + return XML_ERROR_UNBOUND_PREFIX; + + for (j = 0; j < b->uriLen; j++) { + const XML_Char c = b->uri[j]; + if (! poolAppendChar(&parser->m_tempPool, c)) + return XML_ERROR_NO_MEMORY; + } + + sip24_update(&sip_state, b->uri, b->uriLen * sizeof(XML_Char)); + + while (*s++ != XML_T(ASCII_COLON)) + ; + + sip24_update(&sip_state, s, keylen(s) * sizeof(XML_Char)); + + do { /* copies null terminator */ + if (! poolAppendChar(&parser->m_tempPool, *s)) + return XML_ERROR_NO_MEMORY; + } while (*s++); + + uriHash = (unsigned long)sip24_final(&sip_state); + + { /* Check hash table for duplicate of expanded name (uriName). + Derived from code in lookup(parser, HASH_TABLE *table, ...). + */ + unsigned char step = 0; + unsigned long mask = nsAttsSize - 1; + j = uriHash & mask; /* index into hash table */ + while (parser->m_nsAtts[j].version == version) { + /* for speed we compare stored hash values first */ + if (uriHash == parser->m_nsAtts[j].hash) { + const XML_Char *s1 = poolStart(&parser->m_tempPool); + const XML_Char *s2 = parser->m_nsAtts[j].uriName; + /* s1 is null terminated, but not s2 */ + for (; *s1 == *s2 && *s1 != 0; s1++, s2++) + ; + if (*s1 == 0) + return XML_ERROR_DUPLICATE_ATTRIBUTE; + } + if (! step) + step = PROBE_STEP(uriHash, mask, parser->m_nsAttsPower); + j < step ? (j += nsAttsSize - step) : (j -= step); + } + } + + if (parser->m_ns_triplets) { /* append namespace separator and prefix */ + parser->m_tempPool.ptr[-1] = parser->m_namespaceSeparator; + s = b->prefix->name; + do { + if (! poolAppendChar(&parser->m_tempPool, *s)) + return XML_ERROR_NO_MEMORY; + } while (*s++); + } + + /* store expanded name in attribute list */ + s = poolStart(&parser->m_tempPool); + poolFinish(&parser->m_tempPool); + appAtts[i] = s; + + /* fill empty slot with new version, uriName and hash value */ + parser->m_nsAtts[j].version = version; + parser->m_nsAtts[j].hash = uriHash; + parser->m_nsAtts[j].uriName = s; + + if (! --nPrefixes) { + i += 2; + break; + } + } else /* not prefixed */ + ((XML_Char *)s)[-1] = 0; /* clear flag */ + } + } + /* clear flags for the remaining attributes */ + for (; i < attIndex; i += 2) + ((XML_Char *)(appAtts[i]))[-1] = 0; + for (binding = *bindingsPtr; binding; binding = binding->nextTagBinding) + binding->attId->name[-1] = 0; + + if (! parser->m_ns) + return XML_ERROR_NONE; + + /* expand the element type name */ + if (elementType->prefix) { + binding = elementType->prefix->binding; + if (! binding) + return XML_ERROR_UNBOUND_PREFIX; + localPart = tagNamePtr->str; + while (*localPart++ != XML_T(ASCII_COLON)) + ; + } else if (dtd->defaultPrefix.binding) { + binding = dtd->defaultPrefix.binding; + localPart = tagNamePtr->str; + } else + return XML_ERROR_NONE; + prefixLen = 0; + if (parser->m_ns_triplets && binding->prefix->name) { + for (; binding->prefix->name[prefixLen++];) + ; /* prefixLen includes null terminator */ + } + tagNamePtr->localPart = localPart; + tagNamePtr->uriLen = binding->uriLen; + tagNamePtr->prefix = binding->prefix->name; + tagNamePtr->prefixLen = prefixLen; + for (i = 0; localPart[i++];) + ; /* i includes null terminator */ + n = i + binding->uriLen + prefixLen; + if (n > binding->uriAlloc) { + TAG *p; + uri = (XML_Char *)MALLOC(parser, (n + EXPAND_SPARE) * sizeof(XML_Char)); + if (! uri) + return XML_ERROR_NO_MEMORY; + binding->uriAlloc = n + EXPAND_SPARE; + memcpy(uri, binding->uri, binding->uriLen * sizeof(XML_Char)); + for (p = parser->m_tagStack; p; p = p->parent) + if (p->name.str == binding->uri) + p->name.str = uri; + FREE(parser, binding->uri); + binding->uri = uri; + } + /* if m_namespaceSeparator != '\0' then uri includes it already */ + uri = binding->uri + binding->uriLen; + memcpy(uri, localPart, i * sizeof(XML_Char)); + /* we always have a namespace separator between localPart and prefix */ + if (prefixLen) { + uri += i - 1; + *uri = parser->m_namespaceSeparator; /* replace null terminator */ + memcpy(uri + 1, binding->prefix->name, prefixLen * sizeof(XML_Char)); + } + tagNamePtr->str = binding->uri; + return XML_ERROR_NONE; +} + +/* addBinding() overwrites the value of prefix->binding without checking. + Therefore one must keep track of the old value outside of addBinding(). +*/ +static enum XML_Error +addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, + const XML_Char *uri, BINDING **bindingsPtr) { + static const XML_Char xmlNamespace[] + = {ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, + ASCII_SLASH, ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w, + ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, ASCII_o, + ASCII_r, ASCII_g, ASCII_SLASH, ASCII_X, ASCII_M, + ASCII_L, ASCII_SLASH, ASCII_1, ASCII_9, ASCII_9, + ASCII_8, ASCII_SLASH, ASCII_n, ASCII_a, ASCII_m, + ASCII_e, ASCII_s, ASCII_p, ASCII_a, ASCII_c, + ASCII_e, '\0'}; + static const int xmlLen = (int)sizeof(xmlNamespace) / sizeof(XML_Char) - 1; + static const XML_Char xmlnsNamespace[] + = {ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, + ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, + ASCII_3, ASCII_PERIOD, ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, + ASCII_2, ASCII_0, ASCII_0, ASCII_0, ASCII_SLASH, ASCII_x, + ASCII_m, ASCII_l, ASCII_n, ASCII_s, ASCII_SLASH, '\0'}; + static const int xmlnsLen + = (int)sizeof(xmlnsNamespace) / sizeof(XML_Char) - 1; + + XML_Bool mustBeXML = XML_FALSE; + XML_Bool isXML = XML_TRUE; + XML_Bool isXMLNS = XML_TRUE; + + BINDING *b; + int len; + + /* empty URI is only valid for default namespace per XML NS 1.0 (not 1.1) */ + if (*uri == XML_T('\0') && prefix->name) + return XML_ERROR_UNDECLARING_PREFIX; + + if (prefix->name && prefix->name[0] == XML_T(ASCII_x) + && prefix->name[1] == XML_T(ASCII_m) + && prefix->name[2] == XML_T(ASCII_l)) { + /* Not allowed to bind xmlns */ + if (prefix->name[3] == XML_T(ASCII_n) && prefix->name[4] == XML_T(ASCII_s) + && prefix->name[5] == XML_T('\0')) + return XML_ERROR_RESERVED_PREFIX_XMLNS; + + if (prefix->name[3] == XML_T('\0')) + mustBeXML = XML_TRUE; + } + + for (len = 0; uri[len]; len++) { + if (isXML && (len > xmlLen || uri[len] != xmlNamespace[len])) + isXML = XML_FALSE; + + if (! mustBeXML && isXMLNS + && (len > xmlnsLen || uri[len] != xmlnsNamespace[len])) + isXMLNS = XML_FALSE; + } + isXML = isXML && len == xmlLen; + isXMLNS = isXMLNS && len == xmlnsLen; + + if (mustBeXML != isXML) + return mustBeXML ? XML_ERROR_RESERVED_PREFIX_XML + : XML_ERROR_RESERVED_NAMESPACE_URI; + + if (isXMLNS) + return XML_ERROR_RESERVED_NAMESPACE_URI; + + if (parser->m_namespaceSeparator) + len++; + if (parser->m_freeBindingList) { + b = parser->m_freeBindingList; + if (len > b->uriAlloc) { + XML_Char *temp = (XML_Char *)REALLOC( + parser, b->uri, sizeof(XML_Char) * (len + EXPAND_SPARE)); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + b->uri = temp; + b->uriAlloc = len + EXPAND_SPARE; + } + parser->m_freeBindingList = b->nextTagBinding; + } else { + b = (BINDING *)MALLOC(parser, sizeof(BINDING)); + if (! b) + return XML_ERROR_NO_MEMORY; + b->uri + = (XML_Char *)MALLOC(parser, sizeof(XML_Char) * (len + EXPAND_SPARE)); + if (! b->uri) { + FREE(parser, b); + return XML_ERROR_NO_MEMORY; + } + b->uriAlloc = len + EXPAND_SPARE; + } + b->uriLen = len; + memcpy(b->uri, uri, len * sizeof(XML_Char)); + if (parser->m_namespaceSeparator) + b->uri[len - 1] = parser->m_namespaceSeparator; + b->prefix = prefix; + b->attId = attId; + b->prevPrefixBinding = prefix->binding; + /* NULL binding when default namespace undeclared */ + if (*uri == XML_T('\0') && prefix == &parser->m_dtd->defaultPrefix) + prefix->binding = NULL; + else + prefix->binding = b; + b->nextTagBinding = *bindingsPtr; + *bindingsPtr = b; + /* if attId == NULL then we are not starting a namespace scope */ + if (attId && parser->m_startNamespaceDeclHandler) + parser->m_startNamespaceDeclHandler(parser->m_handlerArg, prefix->name, + prefix->binding ? uri : 0); + return XML_ERROR_NONE; +} + +/* The idea here is to avoid using stack for each CDATA section when + the whole file is parsed with one call. +*/ +static enum XML_Error PTRCALL +cdataSectionProcessor(XML_Parser parser, const char *start, const char *end, + const char **endPtr) { + enum XML_Error result + = doCdataSection(parser, parser->m_encoding, &start, end, endPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer); + if (result != XML_ERROR_NONE) + return result; + if (start) { + if (parser->m_parentParser) { /* we are parsing an external entity */ + parser->m_processor = externalEntityContentProcessor; + return externalEntityContentProcessor(parser, start, end, endPtr); + } else { + parser->m_processor = contentProcessor; + return contentProcessor(parser, start, end, endPtr); + } + } + return result; +} + +/* startPtr gets set to non-null if the section is closed, and to null if + the section is not yet closed. +*/ +static enum XML_Error +doCdataSection(XML_Parser parser, const ENCODING *enc, const char **startPtr, + const char *end, const char **nextPtr, XML_Bool haveMore) { + const char *s = *startPtr; + const char **eventPP; + const char **eventEndPP; + if (enc == parser->m_encoding) { + eventPP = &parser->m_eventPtr; + *eventPP = s; + eventEndPP = &parser->m_eventEndPtr; + } else { + eventPP = &(parser->m_openInternalEntities->internalEventPtr); + eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); + } + *eventPP = s; + *startPtr = NULL; + + for (;;) { + const char *next = s; /* in case of XML_TOK_NONE or XML_TOK_PARTIAL */ + int tok = XmlCdataSectionTok(enc, s, end, &next); + *eventEndPP = next; + switch (tok) { + case XML_TOK_CDATA_SECT_CLOSE: + if (parser->m_endCdataSectionHandler) + parser->m_endCdataSectionHandler(parser->m_handlerArg); + /* BEGIN disabled code */ + /* see comment under XML_TOK_CDATA_SECT_OPEN */ + else if (0 && parser->m_characterDataHandler) + parser->m_characterDataHandler(parser->m_handlerArg, parser->m_dataBuf, + 0); + /* END disabled code */ + else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + *startPtr = next; + *nextPtr = next; + if (parser->m_parsingStatus.parsing == XML_FINISHED) + return XML_ERROR_ABORTED; + else + return XML_ERROR_NONE; + case XML_TOK_DATA_NEWLINE: + if (parser->m_characterDataHandler) { + XML_Char c = 0xA; + parser->m_characterDataHandler(parser->m_handlerArg, &c, 1); + } else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + break; + case XML_TOK_DATA_CHARS: { + XML_CharacterDataHandler charDataHandler = parser->m_characterDataHandler; + if (charDataHandler) { + if (MUST_CONVERT(enc, s)) { + for (;;) { + ICHAR *dataPtr = (ICHAR *)parser->m_dataBuf; + const enum XML_Convert_Result convert_res = XmlConvert( + enc, &s, next, &dataPtr, (ICHAR *)parser->m_dataBufEnd); + *eventEndPP = next; + charDataHandler(parser->m_handlerArg, parser->m_dataBuf, + (int)(dataPtr - (ICHAR *)parser->m_dataBuf)); + if ((convert_res == XML_CONVERT_COMPLETED) + || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) + break; + *eventPP = s; + } + } else + charDataHandler(parser->m_handlerArg, (XML_Char *)s, + (int)((XML_Char *)next - (XML_Char *)s)); + } else if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + } break; + case XML_TOK_INVALID: + *eventPP = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_PARTIAL: + case XML_TOK_NONE: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_UNCLOSED_CDATA_SECTION; + default: + /* Every token returned by XmlCdataSectionTok() has its own + * explicit case, so this default case will never be executed. + * We retain it as a safety net and exclude it from the coverage + * statistics. + * + * LCOV_EXCL_START + */ + *eventPP = next; + return XML_ERROR_UNEXPECTED_STATE; + /* LCOV_EXCL_STOP */ + } + + *eventPP = s = next; + switch (parser->m_parsingStatus.parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default:; + } + } + /* not reached */ +} + +#ifdef XML_DTD + +/* The idea here is to avoid using stack for each IGNORE section when + the whole file is parsed with one call. +*/ +static enum XML_Error PTRCALL +ignoreSectionProcessor(XML_Parser parser, const char *start, const char *end, + const char **endPtr) { + enum XML_Error result + = doIgnoreSection(parser, parser->m_encoding, &start, end, endPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer); + if (result != XML_ERROR_NONE) + return result; + if (start) { + parser->m_processor = prologProcessor; + return prologProcessor(parser, start, end, endPtr); + } + return result; +} + +/* startPtr gets set to non-null is the section is closed, and to null + if the section is not yet closed. +*/ +static enum XML_Error +doIgnoreSection(XML_Parser parser, const ENCODING *enc, const char **startPtr, + const char *end, const char **nextPtr, XML_Bool haveMore) { + const char *next = *startPtr; /* in case of XML_TOK_NONE or XML_TOK_PARTIAL */ + int tok; + const char *s = *startPtr; + const char **eventPP; + const char **eventEndPP; + if (enc == parser->m_encoding) { + eventPP = &parser->m_eventPtr; + *eventPP = s; + eventEndPP = &parser->m_eventEndPtr; + } else { + /* It's not entirely clear, but it seems the following two lines + * of code cannot be executed. The only occasions on which 'enc' + * is not 'encoding' are when this function is called + * from the internal entity processing, and IGNORE sections are an + * error in internal entities. + * + * Since it really isn't clear that this is true, we keep the code + * and just remove it from our coverage tests. + * + * LCOV_EXCL_START + */ + eventPP = &(parser->m_openInternalEntities->internalEventPtr); + eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); + /* LCOV_EXCL_STOP */ + } + *eventPP = s; + *startPtr = NULL; + tok = XmlIgnoreSectionTok(enc, s, end, &next); + *eventEndPP = next; + switch (tok) { + case XML_TOK_IGNORE_SECT: + if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + *startPtr = next; + *nextPtr = next; + if (parser->m_parsingStatus.parsing == XML_FINISHED) + return XML_ERROR_ABORTED; + else + return XML_ERROR_NONE; + case XML_TOK_INVALID: + *eventPP = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_PARTIAL: + case XML_TOK_NONE: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_SYNTAX; /* XML_ERROR_UNCLOSED_IGNORE_SECTION */ + default: + /* All of the tokens that XmlIgnoreSectionTok() returns have + * explicit cases to handle them, so this default case is never + * executed. We keep it as a safety net anyway, and remove it + * from our test coverage statistics. + * + * LCOV_EXCL_START + */ + *eventPP = next; + return XML_ERROR_UNEXPECTED_STATE; + /* LCOV_EXCL_STOP */ + } + /* not reached */ +} + +#endif /* XML_DTD */ + +static enum XML_Error +initializeEncoding(XML_Parser parser) { + const char *s; +#ifdef XML_UNICODE + char encodingBuf[128]; + /* See comments abount `protoclEncodingName` in parserInit() */ + if (! parser->m_protocolEncodingName) + s = NULL; + else { + int i; + for (i = 0; parser->m_protocolEncodingName[i]; i++) { + if (i == sizeof(encodingBuf) - 1 + || (parser->m_protocolEncodingName[i] & ~0x7f) != 0) { + encodingBuf[0] = '\0'; + break; + } + encodingBuf[i] = (char)parser->m_protocolEncodingName[i]; + } + encodingBuf[i] = '\0'; + s = encodingBuf; + } +#else + s = parser->m_protocolEncodingName; +#endif + if ((parser->m_ns ? XmlInitEncodingNS : XmlInitEncoding)( + &parser->m_initEncoding, &parser->m_encoding, s)) + return XML_ERROR_NONE; + return handleUnknownEncoding(parser, parser->m_protocolEncodingName); +} + +static enum XML_Error +processXmlDecl(XML_Parser parser, int isGeneralTextEntity, const char *s, + const char *next) { + const char *encodingName = NULL; + const XML_Char *storedEncName = NULL; + const ENCODING *newEncoding = NULL; + const char *version = NULL; + const char *versionend; + const XML_Char *storedversion = NULL; + int standalone = -1; + if (! (parser->m_ns ? XmlParseXmlDeclNS : XmlParseXmlDecl)( + isGeneralTextEntity, parser->m_encoding, s, next, &parser->m_eventPtr, + &version, &versionend, &encodingName, &newEncoding, &standalone)) { + if (isGeneralTextEntity) + return XML_ERROR_TEXT_DECL; + else + return XML_ERROR_XML_DECL; + } + if (! isGeneralTextEntity && standalone == 1) { + parser->m_dtd->standalone = XML_TRUE; +#ifdef XML_DTD + if (parser->m_paramEntityParsing + == XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE) + parser->m_paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; +#endif /* XML_DTD */ + } + if (parser->m_xmlDeclHandler) { + if (encodingName != NULL) { + storedEncName = poolStoreString( + &parser->m_temp2Pool, parser->m_encoding, encodingName, + encodingName + XmlNameLength(parser->m_encoding, encodingName)); + if (! storedEncName) + return XML_ERROR_NO_MEMORY; + poolFinish(&parser->m_temp2Pool); + } + if (version) { + storedversion + = poolStoreString(&parser->m_temp2Pool, parser->m_encoding, version, + versionend - parser->m_encoding->minBytesPerChar); + if (! storedversion) + return XML_ERROR_NO_MEMORY; + } + parser->m_xmlDeclHandler(parser->m_handlerArg, storedversion, storedEncName, + standalone); + } else if (parser->m_defaultHandler) + reportDefault(parser, parser->m_encoding, s, next); + if (parser->m_protocolEncodingName == NULL) { + if (newEncoding) { + /* Check that the specified encoding does not conflict with what + * the parser has already deduced. Do we have the same number + * of bytes in the smallest representation of a character? If + * this is UTF-16, is it the same endianness? + */ + if (newEncoding->minBytesPerChar != parser->m_encoding->minBytesPerChar + || (newEncoding->minBytesPerChar == 2 + && newEncoding != parser->m_encoding)) { + parser->m_eventPtr = encodingName; + return XML_ERROR_INCORRECT_ENCODING; + } + parser->m_encoding = newEncoding; + } else if (encodingName) { + enum XML_Error result; + if (! storedEncName) { + storedEncName = poolStoreString( + &parser->m_temp2Pool, parser->m_encoding, encodingName, + encodingName + XmlNameLength(parser->m_encoding, encodingName)); + if (! storedEncName) + return XML_ERROR_NO_MEMORY; + } + result = handleUnknownEncoding(parser, storedEncName); + poolClear(&parser->m_temp2Pool); + if (result == XML_ERROR_UNKNOWN_ENCODING) + parser->m_eventPtr = encodingName; + return result; + } + } + + if (storedEncName || storedversion) + poolClear(&parser->m_temp2Pool); + + return XML_ERROR_NONE; +} + +static enum XML_Error +handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) { + if (parser->m_unknownEncodingHandler) { + XML_Encoding info; + int i; + for (i = 0; i < 256; i++) + info.map[i] = -1; + info.convert = NULL; + info.data = NULL; + info.release = NULL; + if (parser->m_unknownEncodingHandler(parser->m_unknownEncodingHandlerData, + encodingName, &info)) { + ENCODING *enc; + parser->m_unknownEncodingMem = MALLOC(parser, XmlSizeOfUnknownEncoding()); + if (! parser->m_unknownEncodingMem) { + if (info.release) + info.release(info.data); + return XML_ERROR_NO_MEMORY; + } + enc = (parser->m_ns ? XmlInitUnknownEncodingNS : XmlInitUnknownEncoding)( + parser->m_unknownEncodingMem, info.map, info.convert, info.data); + if (enc) { + parser->m_unknownEncodingData = info.data; + parser->m_unknownEncodingRelease = info.release; + parser->m_encoding = enc; + return XML_ERROR_NONE; + } + } + if (info.release != NULL) + info.release(info.data); + } + return XML_ERROR_UNKNOWN_ENCODING; +} + +static enum XML_Error PTRCALL +prologInitProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { + enum XML_Error result = initializeEncoding(parser); + if (result != XML_ERROR_NONE) + return result; + parser->m_processor = prologProcessor; + return prologProcessor(parser, s, end, nextPtr); +} + +#ifdef XML_DTD + +static enum XML_Error PTRCALL +externalParEntInitProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { + enum XML_Error result = initializeEncoding(parser); + if (result != XML_ERROR_NONE) + return result; + + /* we know now that XML_Parse(Buffer) has been called, + so we consider the external parameter entity read */ + parser->m_dtd->paramEntityRead = XML_TRUE; + + if (parser->m_prologState.inEntityValue) { + parser->m_processor = entityValueInitProcessor; + return entityValueInitProcessor(parser, s, end, nextPtr); + } else { + parser->m_processor = externalParEntProcessor; + return externalParEntProcessor(parser, s, end, nextPtr); + } +} + +static enum XML_Error PTRCALL +entityValueInitProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { + int tok; + const char *start = s; + const char *next = start; + parser->m_eventPtr = start; + + for (;;) { + tok = XmlPrologTok(parser->m_encoding, start, end, &next); + parser->m_eventEndPtr = next; + if (tok <= 0) { + if (! parser->m_parsingStatus.finalBuffer && tok != XML_TOK_INVALID) { + *nextPtr = s; + return XML_ERROR_NONE; + } + switch (tok) { + case XML_TOK_INVALID: + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_NONE: /* start == end */ + default: + break; + } + /* found end of entity value - can store it now */ + return storeEntityValue(parser, parser->m_encoding, s, end); + } else if (tok == XML_TOK_XML_DECL) { + enum XML_Error result; + result = processXmlDecl(parser, 0, start, next); + if (result != XML_ERROR_NONE) + return result; + /* At this point, m_parsingStatus.parsing cannot be XML_SUSPENDED. For + * that to happen, a parameter entity parsing handler must have attempted + * to suspend the parser, which fails and raises an error. The parser can + * be aborted, but can't be suspended. + */ + if (parser->m_parsingStatus.parsing == XML_FINISHED) + return XML_ERROR_ABORTED; + *nextPtr = next; + /* stop scanning for text declaration - we found one */ + parser->m_processor = entityValueProcessor; + return entityValueProcessor(parser, next, end, nextPtr); + } + /* If we are at the end of the buffer, this would cause XmlPrologTok to + return XML_TOK_NONE on the next call, which would then cause the + function to exit with *nextPtr set to s - that is what we want for other + tokens, but not for the BOM - we would rather like to skip it; + then, when this routine is entered the next time, XmlPrologTok will + return XML_TOK_INVALID, since the BOM is still in the buffer + */ + else if (tok == XML_TOK_BOM && next == end + && ! parser->m_parsingStatus.finalBuffer) { + *nextPtr = next; + return XML_ERROR_NONE; + } + /* If we get this token, we have the start of what might be a + normal tag, but not a declaration (i.e. it doesn't begin with + "m_eventPtr = start; + } +} + +static enum XML_Error PTRCALL +externalParEntProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { + const char *next = s; + int tok; + + tok = XmlPrologTok(parser->m_encoding, s, end, &next); + if (tok <= 0) { + if (! parser->m_parsingStatus.finalBuffer && tok != XML_TOK_INVALID) { + *nextPtr = s; + return XML_ERROR_NONE; + } + switch (tok) { + case XML_TOK_INVALID: + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_NONE: /* start == end */ + default: + break; + } + } + /* This would cause the next stage, i.e. doProlog to be passed XML_TOK_BOM. + However, when parsing an external subset, doProlog will not accept a BOM + as valid, and report a syntax error, so we have to skip the BOM + */ + else if (tok == XML_TOK_BOM) { + s = next; + tok = XmlPrologTok(parser->m_encoding, s, end, &next); + } + + parser->m_processor = prologProcessor; + return doProlog(parser, parser->m_encoding, s, end, tok, next, nextPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_TRUE); +} + +static enum XML_Error PTRCALL +entityValueProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { + const char *start = s; + const char *next = s; + const ENCODING *enc = parser->m_encoding; + int tok; + + for (;;) { + tok = XmlPrologTok(enc, start, end, &next); + if (tok <= 0) { + if (! parser->m_parsingStatus.finalBuffer && tok != XML_TOK_INVALID) { + *nextPtr = s; + return XML_ERROR_NONE; + } + switch (tok) { + case XML_TOK_INVALID: + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_NONE: /* start == end */ + default: + break; + } + /* found end of entity value - can store it now */ + return storeEntityValue(parser, enc, s, end); + } + start = next; + } +} + +#endif /* XML_DTD */ + +static enum XML_Error PTRCALL +prologProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { + const char *next = s; + int tok = XmlPrologTok(parser->m_encoding, s, end, &next); + return doProlog(parser, parser->m_encoding, s, end, tok, next, nextPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_TRUE); +} + +static enum XML_Error +doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, + int tok, const char *next, const char **nextPtr, XML_Bool haveMore, + XML_Bool allowClosingDoctype) { +#ifdef XML_DTD + static const XML_Char externalSubsetName[] = {ASCII_HASH, '\0'}; +#endif /* XML_DTD */ + static const XML_Char atypeCDATA[] + = {ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0'}; + static const XML_Char atypeID[] = {ASCII_I, ASCII_D, '\0'}; + static const XML_Char atypeIDREF[] + = {ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0'}; + static const XML_Char atypeIDREFS[] + = {ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0'}; + static const XML_Char atypeENTITY[] + = {ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0'}; + static const XML_Char atypeENTITIES[] + = {ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, + ASCII_I, ASCII_E, ASCII_S, '\0'}; + static const XML_Char atypeNMTOKEN[] + = {ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0'}; + static const XML_Char atypeNMTOKENS[] + = {ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, + ASCII_E, ASCII_N, ASCII_S, '\0'}; + static const XML_Char notationPrefix[] + = {ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, + ASCII_I, ASCII_O, ASCII_N, ASCII_LPAREN, '\0'}; + static const XML_Char enumValueSep[] = {ASCII_PIPE, '\0'}; + static const XML_Char enumValueStart[] = {ASCII_LPAREN, '\0'}; + + /* save one level of indirection */ + DTD *const dtd = parser->m_dtd; + + const char **eventPP; + const char **eventEndPP; + enum XML_Content_Quant quant; + + if (enc == parser->m_encoding) { + eventPP = &parser->m_eventPtr; + eventEndPP = &parser->m_eventEndPtr; + } else { + eventPP = &(parser->m_openInternalEntities->internalEventPtr); + eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); + } + + for (;;) { + int role; + XML_Bool handleDefault = XML_TRUE; + *eventPP = s; + *eventEndPP = next; + if (tok <= 0) { + if (haveMore && tok != XML_TOK_INVALID) { + *nextPtr = s; + return XML_ERROR_NONE; + } + switch (tok) { + case XML_TOK_INVALID: + *eventPP = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + return XML_ERROR_PARTIAL_CHAR; + case -XML_TOK_PROLOG_S: + tok = -tok; + break; + case XML_TOK_NONE: +#ifdef XML_DTD + /* for internal PE NOT referenced between declarations */ + if (enc != parser->m_encoding + && ! parser->m_openInternalEntities->betweenDecl) { + *nextPtr = s; + return XML_ERROR_NONE; + } + /* WFC: PE Between Declarations - must check that PE contains + complete markup, not only for external PEs, but also for + internal PEs if the reference occurs between declarations. + */ + if (parser->m_isParamEntity || enc != parser->m_encoding) { + if (XmlTokenRole(&parser->m_prologState, XML_TOK_NONE, end, end, enc) + == XML_ROLE_ERROR) + return XML_ERROR_INCOMPLETE_PE; + *nextPtr = s; + return XML_ERROR_NONE; + } +#endif /* XML_DTD */ + return XML_ERROR_NO_ELEMENTS; + default: + tok = -tok; + next = end; + break; + } + } + role = XmlTokenRole(&parser->m_prologState, tok, s, next, enc); + switch (role) { + case XML_ROLE_XML_DECL: { + enum XML_Error result = processXmlDecl(parser, 0, s, next); + if (result != XML_ERROR_NONE) + return result; + enc = parser->m_encoding; + handleDefault = XML_FALSE; + } break; + case XML_ROLE_DOCTYPE_NAME: + if (parser->m_startDoctypeDeclHandler) { + parser->m_doctypeName + = poolStoreString(&parser->m_tempPool, enc, s, next); + if (! parser->m_doctypeName) + return XML_ERROR_NO_MEMORY; + poolFinish(&parser->m_tempPool); + parser->m_doctypePubid = NULL; + handleDefault = XML_FALSE; + } + parser->m_doctypeSysid = NULL; /* always initialize to NULL */ + break; + case XML_ROLE_DOCTYPE_INTERNAL_SUBSET: + if (parser->m_startDoctypeDeclHandler) { + parser->m_startDoctypeDeclHandler( + parser->m_handlerArg, parser->m_doctypeName, parser->m_doctypeSysid, + parser->m_doctypePubid, 1); + parser->m_doctypeName = NULL; + poolClear(&parser->m_tempPool); + handleDefault = XML_FALSE; + } + break; +#ifdef XML_DTD + case XML_ROLE_TEXT_DECL: { + enum XML_Error result = processXmlDecl(parser, 1, s, next); + if (result != XML_ERROR_NONE) + return result; + enc = parser->m_encoding; + handleDefault = XML_FALSE; + } break; +#endif /* XML_DTD */ + case XML_ROLE_DOCTYPE_PUBLIC_ID: +#ifdef XML_DTD + parser->m_useForeignDTD = XML_FALSE; + parser->m_declEntity = (ENTITY *)lookup( + parser, &dtd->paramEntities, externalSubsetName, sizeof(ENTITY)); + if (! parser->m_declEntity) + return XML_ERROR_NO_MEMORY; +#endif /* XML_DTD */ + dtd->hasParamEntityRefs = XML_TRUE; + if (parser->m_startDoctypeDeclHandler) { + XML_Char *pubId; + if (! XmlIsPublicId(enc, s, next, eventPP)) + return XML_ERROR_PUBLICID; + pubId = poolStoreString(&parser->m_tempPool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (! pubId) + return XML_ERROR_NO_MEMORY; + normalizePublicId(pubId); + poolFinish(&parser->m_tempPool); + parser->m_doctypePubid = pubId; + handleDefault = XML_FALSE; + goto alreadyChecked; + } + /* fall through */ + case XML_ROLE_ENTITY_PUBLIC_ID: + if (! XmlIsPublicId(enc, s, next, eventPP)) + return XML_ERROR_PUBLICID; + alreadyChecked: + if (dtd->keepProcessing && parser->m_declEntity) { + XML_Char *tem + = poolStoreString(&dtd->pool, enc, s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (! tem) + return XML_ERROR_NO_MEMORY; + normalizePublicId(tem); + parser->m_declEntity->publicId = tem; + poolFinish(&dtd->pool); + /* Don't suppress the default handler if we fell through from + * the XML_ROLE_DOCTYPE_PUBLIC_ID case. + */ + if (parser->m_entityDeclHandler && role == XML_ROLE_ENTITY_PUBLIC_ID) + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_DOCTYPE_CLOSE: + if (allowClosingDoctype != XML_TRUE) { + /* Must not close doctype from within expanded parameter entities */ + return XML_ERROR_INVALID_TOKEN; + } + + if (parser->m_doctypeName) { + parser->m_startDoctypeDeclHandler( + parser->m_handlerArg, parser->m_doctypeName, parser->m_doctypeSysid, + parser->m_doctypePubid, 0); + poolClear(&parser->m_tempPool); + handleDefault = XML_FALSE; + } + /* parser->m_doctypeSysid will be non-NULL in the case of a previous + XML_ROLE_DOCTYPE_SYSTEM_ID, even if parser->m_startDoctypeDeclHandler + was not set, indicating an external subset + */ +#ifdef XML_DTD + if (parser->m_doctypeSysid || parser->m_useForeignDTD) { + XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs; + dtd->hasParamEntityRefs = XML_TRUE; + if (parser->m_paramEntityParsing + && parser->m_externalEntityRefHandler) { + ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities, + externalSubsetName, sizeof(ENTITY)); + if (! entity) { + /* The external subset name "#" will have already been + * inserted into the hash table at the start of the + * external entity parsing, so no allocation will happen + * and lookup() cannot fail. + */ + return XML_ERROR_NO_MEMORY; /* LCOV_EXCL_LINE */ + } + if (parser->m_useForeignDTD) + entity->base = parser->m_curBase; + dtd->paramEntityRead = XML_FALSE; + if (! parser->m_externalEntityRefHandler( + parser->m_externalEntityRefHandlerArg, 0, entity->base, + entity->systemId, entity->publicId)) + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + if (dtd->paramEntityRead) { + if (! dtd->standalone && parser->m_notStandaloneHandler + && ! parser->m_notStandaloneHandler(parser->m_handlerArg)) + return XML_ERROR_NOT_STANDALONE; + } + /* if we didn't read the foreign DTD then this means that there + is no external subset and we must reset dtd->hasParamEntityRefs + */ + else if (! parser->m_doctypeSysid) + dtd->hasParamEntityRefs = hadParamEntityRefs; + /* end of DTD - no need to update dtd->keepProcessing */ + } + parser->m_useForeignDTD = XML_FALSE; + } +#endif /* XML_DTD */ + if (parser->m_endDoctypeDeclHandler) { + parser->m_endDoctypeDeclHandler(parser->m_handlerArg); + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_INSTANCE_START: +#ifdef XML_DTD + /* if there is no DOCTYPE declaration then now is the + last chance to read the foreign DTD + */ + if (parser->m_useForeignDTD) { + XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs; + dtd->hasParamEntityRefs = XML_TRUE; + if (parser->m_paramEntityParsing + && parser->m_externalEntityRefHandler) { + ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities, + externalSubsetName, sizeof(ENTITY)); + if (! entity) + return XML_ERROR_NO_MEMORY; + entity->base = parser->m_curBase; + dtd->paramEntityRead = XML_FALSE; + if (! parser->m_externalEntityRefHandler( + parser->m_externalEntityRefHandlerArg, 0, entity->base, + entity->systemId, entity->publicId)) + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + if (dtd->paramEntityRead) { + if (! dtd->standalone && parser->m_notStandaloneHandler + && ! parser->m_notStandaloneHandler(parser->m_handlerArg)) + return XML_ERROR_NOT_STANDALONE; + } + /* if we didn't read the foreign DTD then this means that there + is no external subset and we must reset dtd->hasParamEntityRefs + */ + else + dtd->hasParamEntityRefs = hadParamEntityRefs; + /* end of DTD - no need to update dtd->keepProcessing */ + } + } +#endif /* XML_DTD */ + parser->m_processor = contentProcessor; + return contentProcessor(parser, s, end, nextPtr); + case XML_ROLE_ATTLIST_ELEMENT_NAME: + parser->m_declElementType = getElementType(parser, enc, s, next); + if (! parser->m_declElementType) + return XML_ERROR_NO_MEMORY; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_NAME: + parser->m_declAttributeId = getAttributeId(parser, enc, s, next); + if (! parser->m_declAttributeId) + return XML_ERROR_NO_MEMORY; + parser->m_declAttributeIsCdata = XML_FALSE; + parser->m_declAttributeType = NULL; + parser->m_declAttributeIsId = XML_FALSE; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_CDATA: + parser->m_declAttributeIsCdata = XML_TRUE; + parser->m_declAttributeType = atypeCDATA; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_ID: + parser->m_declAttributeIsId = XML_TRUE; + parser->m_declAttributeType = atypeID; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_IDREF: + parser->m_declAttributeType = atypeIDREF; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_IDREFS: + parser->m_declAttributeType = atypeIDREFS; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_ENTITY: + parser->m_declAttributeType = atypeENTITY; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_ENTITIES: + parser->m_declAttributeType = atypeENTITIES; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN: + parser->m_declAttributeType = atypeNMTOKEN; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS: + parser->m_declAttributeType = atypeNMTOKENS; + checkAttListDeclHandler: + if (dtd->keepProcessing && parser->m_attlistDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_ATTRIBUTE_ENUM_VALUE: + case XML_ROLE_ATTRIBUTE_NOTATION_VALUE: + if (dtd->keepProcessing && parser->m_attlistDeclHandler) { + const XML_Char *prefix; + if (parser->m_declAttributeType) { + prefix = enumValueSep; + } else { + prefix = (role == XML_ROLE_ATTRIBUTE_NOTATION_VALUE ? notationPrefix + : enumValueStart); + } + if (! poolAppendString(&parser->m_tempPool, prefix)) + return XML_ERROR_NO_MEMORY; + if (! poolAppend(&parser->m_tempPool, enc, s, next)) + return XML_ERROR_NO_MEMORY; + parser->m_declAttributeType = parser->m_tempPool.start; + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_IMPLIED_ATTRIBUTE_VALUE: + case XML_ROLE_REQUIRED_ATTRIBUTE_VALUE: + if (dtd->keepProcessing) { + if (! defineAttribute(parser->m_declElementType, + parser->m_declAttributeId, + parser->m_declAttributeIsCdata, + parser->m_declAttributeIsId, 0, parser)) + return XML_ERROR_NO_MEMORY; + if (parser->m_attlistDeclHandler && parser->m_declAttributeType) { + if (*parser->m_declAttributeType == XML_T(ASCII_LPAREN) + || (*parser->m_declAttributeType == XML_T(ASCII_N) + && parser->m_declAttributeType[1] == XML_T(ASCII_O))) { + /* Enumerated or Notation type */ + if (! poolAppendChar(&parser->m_tempPool, XML_T(ASCII_RPAREN)) + || ! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) + return XML_ERROR_NO_MEMORY; + parser->m_declAttributeType = parser->m_tempPool.start; + poolFinish(&parser->m_tempPool); + } + *eventEndPP = s; + parser->m_attlistDeclHandler( + parser->m_handlerArg, parser->m_declElementType->name, + parser->m_declAttributeId->name, parser->m_declAttributeType, 0, + role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE); + poolClear(&parser->m_tempPool); + handleDefault = XML_FALSE; + } + } + break; + case XML_ROLE_DEFAULT_ATTRIBUTE_VALUE: + case XML_ROLE_FIXED_ATTRIBUTE_VALUE: + if (dtd->keepProcessing) { + const XML_Char *attVal; + enum XML_Error result = storeAttributeValue( + parser, enc, parser->m_declAttributeIsCdata, + s + enc->minBytesPerChar, next - enc->minBytesPerChar, &dtd->pool); + if (result) + return result; + attVal = poolStart(&dtd->pool); + poolFinish(&dtd->pool); + /* ID attributes aren't allowed to have a default */ + if (! defineAttribute( + parser->m_declElementType, parser->m_declAttributeId, + parser->m_declAttributeIsCdata, XML_FALSE, attVal, parser)) + return XML_ERROR_NO_MEMORY; + if (parser->m_attlistDeclHandler && parser->m_declAttributeType) { + if (*parser->m_declAttributeType == XML_T(ASCII_LPAREN) + || (*parser->m_declAttributeType == XML_T(ASCII_N) + && parser->m_declAttributeType[1] == XML_T(ASCII_O))) { + /* Enumerated or Notation type */ + if (! poolAppendChar(&parser->m_tempPool, XML_T(ASCII_RPAREN)) + || ! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) + return XML_ERROR_NO_MEMORY; + parser->m_declAttributeType = parser->m_tempPool.start; + poolFinish(&parser->m_tempPool); + } + *eventEndPP = s; + parser->m_attlistDeclHandler( + parser->m_handlerArg, parser->m_declElementType->name, + parser->m_declAttributeId->name, parser->m_declAttributeType, + attVal, role == XML_ROLE_FIXED_ATTRIBUTE_VALUE); + poolClear(&parser->m_tempPool); + handleDefault = XML_FALSE; + } + } + break; + case XML_ROLE_ENTITY_VALUE: + if (dtd->keepProcessing) { + enum XML_Error result = storeEntityValue( + parser, enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar); + if (parser->m_declEntity) { + parser->m_declEntity->textPtr = poolStart(&dtd->entityValuePool); + parser->m_declEntity->textLen + = (int)(poolLength(&dtd->entityValuePool)); + poolFinish(&dtd->entityValuePool); + if (parser->m_entityDeclHandler) { + *eventEndPP = s; + parser->m_entityDeclHandler( + parser->m_handlerArg, parser->m_declEntity->name, + parser->m_declEntity->is_param, parser->m_declEntity->textPtr, + parser->m_declEntity->textLen, parser->m_curBase, 0, 0, 0); + handleDefault = XML_FALSE; + } + } else + poolDiscard(&dtd->entityValuePool); + if (result != XML_ERROR_NONE) + return result; + } + break; + case XML_ROLE_DOCTYPE_SYSTEM_ID: +#ifdef XML_DTD + parser->m_useForeignDTD = XML_FALSE; +#endif /* XML_DTD */ + dtd->hasParamEntityRefs = XML_TRUE; + if (parser->m_startDoctypeDeclHandler) { + parser->m_doctypeSysid = poolStoreString(&parser->m_tempPool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (parser->m_doctypeSysid == NULL) + return XML_ERROR_NO_MEMORY; + poolFinish(&parser->m_tempPool); + handleDefault = XML_FALSE; + } +#ifdef XML_DTD + else + /* use externalSubsetName to make parser->m_doctypeSysid non-NULL + for the case where no parser->m_startDoctypeDeclHandler is set */ + parser->m_doctypeSysid = externalSubsetName; +#endif /* XML_DTD */ + if (! dtd->standalone +#ifdef XML_DTD + && ! parser->m_paramEntityParsing +#endif /* XML_DTD */ + && parser->m_notStandaloneHandler + && ! parser->m_notStandaloneHandler(parser->m_handlerArg)) + return XML_ERROR_NOT_STANDALONE; +#ifndef XML_DTD + break; +#else /* XML_DTD */ + if (! parser->m_declEntity) { + parser->m_declEntity = (ENTITY *)lookup( + parser, &dtd->paramEntities, externalSubsetName, sizeof(ENTITY)); + if (! parser->m_declEntity) + return XML_ERROR_NO_MEMORY; + parser->m_declEntity->publicId = NULL; + } +#endif /* XML_DTD */ + /* fall through */ + case XML_ROLE_ENTITY_SYSTEM_ID: + if (dtd->keepProcessing && parser->m_declEntity) { + parser->m_declEntity->systemId + = poolStoreString(&dtd->pool, enc, s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (! parser->m_declEntity->systemId) + return XML_ERROR_NO_MEMORY; + parser->m_declEntity->base = parser->m_curBase; + poolFinish(&dtd->pool); + /* Don't suppress the default handler if we fell through from + * the XML_ROLE_DOCTYPE_SYSTEM_ID case. + */ + if (parser->m_entityDeclHandler && role == XML_ROLE_ENTITY_SYSTEM_ID) + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_ENTITY_COMPLETE: + if (dtd->keepProcessing && parser->m_declEntity + && parser->m_entityDeclHandler) { + *eventEndPP = s; + parser->m_entityDeclHandler( + parser->m_handlerArg, parser->m_declEntity->name, + parser->m_declEntity->is_param, 0, 0, parser->m_declEntity->base, + parser->m_declEntity->systemId, parser->m_declEntity->publicId, 0); + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_ENTITY_NOTATION_NAME: + if (dtd->keepProcessing && parser->m_declEntity) { + parser->m_declEntity->notation + = poolStoreString(&dtd->pool, enc, s, next); + if (! parser->m_declEntity->notation) + return XML_ERROR_NO_MEMORY; + poolFinish(&dtd->pool); + if (parser->m_unparsedEntityDeclHandler) { + *eventEndPP = s; + parser->m_unparsedEntityDeclHandler( + parser->m_handlerArg, parser->m_declEntity->name, + parser->m_declEntity->base, parser->m_declEntity->systemId, + parser->m_declEntity->publicId, parser->m_declEntity->notation); + handleDefault = XML_FALSE; + } else if (parser->m_entityDeclHandler) { + *eventEndPP = s; + parser->m_entityDeclHandler( + parser->m_handlerArg, parser->m_declEntity->name, 0, 0, 0, + parser->m_declEntity->base, parser->m_declEntity->systemId, + parser->m_declEntity->publicId, parser->m_declEntity->notation); + handleDefault = XML_FALSE; + } + } + break; + case XML_ROLE_GENERAL_ENTITY_NAME: { + if (XmlPredefinedEntityName(enc, s, next)) { + parser->m_declEntity = NULL; + break; + } + if (dtd->keepProcessing) { + const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); + if (! name) + return XML_ERROR_NO_MEMORY; + parser->m_declEntity = (ENTITY *)lookup(parser, &dtd->generalEntities, + name, sizeof(ENTITY)); + if (! parser->m_declEntity) + return XML_ERROR_NO_MEMORY; + if (parser->m_declEntity->name != name) { + poolDiscard(&dtd->pool); + parser->m_declEntity = NULL; + } else { + poolFinish(&dtd->pool); + parser->m_declEntity->publicId = NULL; + parser->m_declEntity->is_param = XML_FALSE; + /* if we have a parent parser or are reading an internal parameter + entity, then the entity declaration is not considered "internal" + */ + parser->m_declEntity->is_internal + = ! (parser->m_parentParser || parser->m_openInternalEntities); + if (parser->m_entityDeclHandler) + handleDefault = XML_FALSE; + } + } else { + poolDiscard(&dtd->pool); + parser->m_declEntity = NULL; + } + } break; + case XML_ROLE_PARAM_ENTITY_NAME: +#ifdef XML_DTD + if (dtd->keepProcessing) { + const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); + if (! name) + return XML_ERROR_NO_MEMORY; + parser->m_declEntity = (ENTITY *)lookup(parser, &dtd->paramEntities, + name, sizeof(ENTITY)); + if (! parser->m_declEntity) + return XML_ERROR_NO_MEMORY; + if (parser->m_declEntity->name != name) { + poolDiscard(&dtd->pool); + parser->m_declEntity = NULL; + } else { + poolFinish(&dtd->pool); + parser->m_declEntity->publicId = NULL; + parser->m_declEntity->is_param = XML_TRUE; + /* if we have a parent parser or are reading an internal parameter + entity, then the entity declaration is not considered "internal" + */ + parser->m_declEntity->is_internal + = ! (parser->m_parentParser || parser->m_openInternalEntities); + if (parser->m_entityDeclHandler) + handleDefault = XML_FALSE; + } + } else { + poolDiscard(&dtd->pool); + parser->m_declEntity = NULL; + } +#else /* not XML_DTD */ + parser->m_declEntity = NULL; +#endif /* XML_DTD */ + break; + case XML_ROLE_NOTATION_NAME: + parser->m_declNotationPublicId = NULL; + parser->m_declNotationName = NULL; + if (parser->m_notationDeclHandler) { + parser->m_declNotationName + = poolStoreString(&parser->m_tempPool, enc, s, next); + if (! parser->m_declNotationName) + return XML_ERROR_NO_MEMORY; + poolFinish(&parser->m_tempPool); + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_NOTATION_PUBLIC_ID: + if (! XmlIsPublicId(enc, s, next, eventPP)) + return XML_ERROR_PUBLICID; + if (parser + ->m_declNotationName) { /* means m_notationDeclHandler != NULL */ + XML_Char *tem = poolStoreString(&parser->m_tempPool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (! tem) + return XML_ERROR_NO_MEMORY; + normalizePublicId(tem); + parser->m_declNotationPublicId = tem; + poolFinish(&parser->m_tempPool); + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_NOTATION_SYSTEM_ID: + if (parser->m_declNotationName && parser->m_notationDeclHandler) { + const XML_Char *systemId = poolStoreString(&parser->m_tempPool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (! systemId) + return XML_ERROR_NO_MEMORY; + *eventEndPP = s; + parser->m_notationDeclHandler( + parser->m_handlerArg, parser->m_declNotationName, parser->m_curBase, + systemId, parser->m_declNotationPublicId); + handleDefault = XML_FALSE; + } + poolClear(&parser->m_tempPool); + break; + case XML_ROLE_NOTATION_NO_SYSTEM_ID: + if (parser->m_declNotationPublicId && parser->m_notationDeclHandler) { + *eventEndPP = s; + parser->m_notationDeclHandler( + parser->m_handlerArg, parser->m_declNotationName, parser->m_curBase, + 0, parser->m_declNotationPublicId); + handleDefault = XML_FALSE; + } + poolClear(&parser->m_tempPool); + break; + case XML_ROLE_ERROR: + switch (tok) { + case XML_TOK_PARAM_ENTITY_REF: + /* PE references in internal subset are + not allowed within declarations. */ + return XML_ERROR_PARAM_ENTITY_REF; + case XML_TOK_XML_DECL: + return XML_ERROR_MISPLACED_XML_PI; + default: + return XML_ERROR_SYNTAX; + } +#ifdef XML_DTD + case XML_ROLE_IGNORE_SECT: { + enum XML_Error result; + if (parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + handleDefault = XML_FALSE; + result = doIgnoreSection(parser, enc, &next, end, nextPtr, haveMore); + if (result != XML_ERROR_NONE) + return result; + else if (! next) { + parser->m_processor = ignoreSectionProcessor; + return result; + } + } break; +#endif /* XML_DTD */ + case XML_ROLE_GROUP_OPEN: + if (parser->m_prologState.level >= parser->m_groupSize) { + if (parser->m_groupSize) { + { + char *const new_connector = (char *)REALLOC( + parser, parser->m_groupConnector, parser->m_groupSize *= 2); + if (new_connector == NULL) { + parser->m_groupSize /= 2; + return XML_ERROR_NO_MEMORY; + } + parser->m_groupConnector = new_connector; + } + + if (dtd->scaffIndex) { + int *const new_scaff_index = (int *)REALLOC( + parser, dtd->scaffIndex, parser->m_groupSize * sizeof(int)); + if (new_scaff_index == NULL) + return XML_ERROR_NO_MEMORY; + dtd->scaffIndex = new_scaff_index; + } + } else { + parser->m_groupConnector + = (char *)MALLOC(parser, parser->m_groupSize = 32); + if (! parser->m_groupConnector) { + parser->m_groupSize = 0; + return XML_ERROR_NO_MEMORY; + } + } + } + parser->m_groupConnector[parser->m_prologState.level] = 0; + if (dtd->in_eldecl) { + int myindex = nextScaffoldPart(parser); + if (myindex < 0) + return XML_ERROR_NO_MEMORY; + assert(dtd->scaffIndex != NULL); + dtd->scaffIndex[dtd->scaffLevel] = myindex; + dtd->scaffLevel++; + dtd->scaffold[myindex].type = XML_CTYPE_SEQ; + if (parser->m_elementDeclHandler) + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_GROUP_SEQUENCE: + if (parser->m_groupConnector[parser->m_prologState.level] == ASCII_PIPE) + return XML_ERROR_SYNTAX; + parser->m_groupConnector[parser->m_prologState.level] = ASCII_COMMA; + if (dtd->in_eldecl && parser->m_elementDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_GROUP_CHOICE: + if (parser->m_groupConnector[parser->m_prologState.level] == ASCII_COMMA) + return XML_ERROR_SYNTAX; + if (dtd->in_eldecl + && ! parser->m_groupConnector[parser->m_prologState.level] + && (dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type + != XML_CTYPE_MIXED)) { + dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type + = XML_CTYPE_CHOICE; + if (parser->m_elementDeclHandler) + handleDefault = XML_FALSE; + } + parser->m_groupConnector[parser->m_prologState.level] = ASCII_PIPE; + break; + case XML_ROLE_PARAM_ENTITY_REF: +#ifdef XML_DTD + case XML_ROLE_INNER_PARAM_ENTITY_REF: + dtd->hasParamEntityRefs = XML_TRUE; + if (! parser->m_paramEntityParsing) + dtd->keepProcessing = dtd->standalone; + else { + const XML_Char *name; + ENTITY *entity; + name = poolStoreString(&dtd->pool, enc, s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (! name) + return XML_ERROR_NO_MEMORY; + entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); + poolDiscard(&dtd->pool); + /* first, determine if a check for an existing declaration is needed; + if yes, check that the entity exists, and that it is internal, + otherwise call the skipped entity handler + */ + if (parser->m_prologState.documentEntity + && (dtd->standalone ? ! parser->m_openInternalEntities + : ! dtd->hasParamEntityRefs)) { + if (! entity) + return XML_ERROR_UNDEFINED_ENTITY; + else if (! entity->is_internal) { + /* It's hard to exhaustively search the code to be sure, + * but there doesn't seem to be a way of executing the + * following line. There are two cases: + * + * If 'standalone' is false, the DTD must have no + * parameter entities or we wouldn't have passed the outer + * 'if' statement. That measn the only entity in the hash + * table is the external subset name "#" which cannot be + * given as a parameter entity name in XML syntax, so the + * lookup must have returned NULL and we don't even reach + * the test for an internal entity. + * + * If 'standalone' is true, it does not seem to be + * possible to create entities taking this code path that + * are not internal entities, so fail the test above. + * + * Because this analysis is very uncertain, the code is + * being left in place and merely removed from the + * coverage test statistics. + */ + return XML_ERROR_ENTITY_DECLARED_IN_PE; /* LCOV_EXCL_LINE */ + } + } else if (! entity) { + dtd->keepProcessing = dtd->standalone; + /* cannot report skipped entities in declarations */ + if ((role == XML_ROLE_PARAM_ENTITY_REF) + && parser->m_skippedEntityHandler) { + parser->m_skippedEntityHandler(parser->m_handlerArg, name, 1); + handleDefault = XML_FALSE; + } + break; + } + if (entity->open) + return XML_ERROR_RECURSIVE_ENTITY_REF; + if (entity->textPtr) { + enum XML_Error result; + XML_Bool betweenDecl + = (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE); + result = processInternalEntity(parser, entity, betweenDecl); + if (result != XML_ERROR_NONE) + return result; + handleDefault = XML_FALSE; + break; + } + if (parser->m_externalEntityRefHandler) { + dtd->paramEntityRead = XML_FALSE; + entity->open = XML_TRUE; + if (! parser->m_externalEntityRefHandler( + parser->m_externalEntityRefHandlerArg, 0, entity->base, + entity->systemId, entity->publicId)) { + entity->open = XML_FALSE; + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + } + entity->open = XML_FALSE; + handleDefault = XML_FALSE; + if (! dtd->paramEntityRead) { + dtd->keepProcessing = dtd->standalone; + break; + } + } else { + dtd->keepProcessing = dtd->standalone; + break; + } + } +#endif /* XML_DTD */ + if (! dtd->standalone && parser->m_notStandaloneHandler + && ! parser->m_notStandaloneHandler(parser->m_handlerArg)) + return XML_ERROR_NOT_STANDALONE; + break; + + /* Element declaration stuff */ + + case XML_ROLE_ELEMENT_NAME: + if (parser->m_elementDeclHandler) { + parser->m_declElementType = getElementType(parser, enc, s, next); + if (! parser->m_declElementType) + return XML_ERROR_NO_MEMORY; + dtd->scaffLevel = 0; + dtd->scaffCount = 0; + dtd->in_eldecl = XML_TRUE; + handleDefault = XML_FALSE; + } + break; + + case XML_ROLE_CONTENT_ANY: + case XML_ROLE_CONTENT_EMPTY: + if (dtd->in_eldecl) { + if (parser->m_elementDeclHandler) { + XML_Content *content + = (XML_Content *)MALLOC(parser, sizeof(XML_Content)); + if (! content) + return XML_ERROR_NO_MEMORY; + content->quant = XML_CQUANT_NONE; + content->name = NULL; + content->numchildren = 0; + content->children = NULL; + content->type = ((role == XML_ROLE_CONTENT_ANY) ? XML_CTYPE_ANY + : XML_CTYPE_EMPTY); + *eventEndPP = s; + parser->m_elementDeclHandler( + parser->m_handlerArg, parser->m_declElementType->name, content); + handleDefault = XML_FALSE; + } + dtd->in_eldecl = XML_FALSE; + } + break; + + case XML_ROLE_CONTENT_PCDATA: + if (dtd->in_eldecl) { + dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type + = XML_CTYPE_MIXED; + if (parser->m_elementDeclHandler) + handleDefault = XML_FALSE; + } + break; + + case XML_ROLE_CONTENT_ELEMENT: + quant = XML_CQUANT_NONE; + goto elementContent; + case XML_ROLE_CONTENT_ELEMENT_OPT: + quant = XML_CQUANT_OPT; + goto elementContent; + case XML_ROLE_CONTENT_ELEMENT_REP: + quant = XML_CQUANT_REP; + goto elementContent; + case XML_ROLE_CONTENT_ELEMENT_PLUS: + quant = XML_CQUANT_PLUS; + elementContent: + if (dtd->in_eldecl) { + ELEMENT_TYPE *el; + const XML_Char *name; + int nameLen; + const char *nxt + = (quant == XML_CQUANT_NONE ? next : next - enc->minBytesPerChar); + int myindex = nextScaffoldPart(parser); + if (myindex < 0) + return XML_ERROR_NO_MEMORY; + dtd->scaffold[myindex].type = XML_CTYPE_NAME; + dtd->scaffold[myindex].quant = quant; + el = getElementType(parser, enc, s, nxt); + if (! el) + return XML_ERROR_NO_MEMORY; + name = el->name; + dtd->scaffold[myindex].name = name; + nameLen = 0; + for (; name[nameLen++];) + ; + dtd->contentStringLen += nameLen; + if (parser->m_elementDeclHandler) + handleDefault = XML_FALSE; + } + break; + + case XML_ROLE_GROUP_CLOSE: + quant = XML_CQUANT_NONE; + goto closeGroup; + case XML_ROLE_GROUP_CLOSE_OPT: + quant = XML_CQUANT_OPT; + goto closeGroup; + case XML_ROLE_GROUP_CLOSE_REP: + quant = XML_CQUANT_REP; + goto closeGroup; + case XML_ROLE_GROUP_CLOSE_PLUS: + quant = XML_CQUANT_PLUS; + closeGroup: + if (dtd->in_eldecl) { + if (parser->m_elementDeclHandler) + handleDefault = XML_FALSE; + dtd->scaffLevel--; + dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel]].quant = quant; + if (dtd->scaffLevel == 0) { + if (! handleDefault) { + XML_Content *model = build_model(parser); + if (! model) + return XML_ERROR_NO_MEMORY; + *eventEndPP = s; + parser->m_elementDeclHandler( + parser->m_handlerArg, parser->m_declElementType->name, model); + } + dtd->in_eldecl = XML_FALSE; + dtd->contentStringLen = 0; + } + } + break; + /* End element declaration stuff */ + + case XML_ROLE_PI: + if (! reportProcessingInstruction(parser, enc, s, next)) + return XML_ERROR_NO_MEMORY; + handleDefault = XML_FALSE; + break; + case XML_ROLE_COMMENT: + if (! reportComment(parser, enc, s, next)) + return XML_ERROR_NO_MEMORY; + handleDefault = XML_FALSE; + break; + case XML_ROLE_NONE: + switch (tok) { + case XML_TOK_BOM: + handleDefault = XML_FALSE; + break; + } + break; + case XML_ROLE_DOCTYPE_NONE: + if (parser->m_startDoctypeDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_ENTITY_NONE: + if (dtd->keepProcessing && parser->m_entityDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_NOTATION_NONE: + if (parser->m_notationDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_ATTLIST_NONE: + if (dtd->keepProcessing && parser->m_attlistDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_ELEMENT_NONE: + if (parser->m_elementDeclHandler) + handleDefault = XML_FALSE; + break; + } /* end of big switch */ + + if (handleDefault && parser->m_defaultHandler) + reportDefault(parser, enc, s, next); + + switch (parser->m_parsingStatus.parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: + s = next; + tok = XmlPrologTok(enc, s, end, &next); + } + } + /* not reached */ +} + +static enum XML_Error PTRCALL +epilogProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { + parser->m_processor = epilogProcessor; + parser->m_eventPtr = s; + for (;;) { + const char *next = NULL; + int tok = XmlPrologTok(parser->m_encoding, s, end, &next); + parser->m_eventEndPtr = next; + switch (tok) { + /* report partial linebreak - it might be the last token */ + case -XML_TOK_PROLOG_S: + if (parser->m_defaultHandler) { + reportDefault(parser, parser->m_encoding, s, next); + if (parser->m_parsingStatus.parsing == XML_FINISHED) + return XML_ERROR_ABORTED; + } + *nextPtr = next; + return XML_ERROR_NONE; + case XML_TOK_NONE: + *nextPtr = s; + return XML_ERROR_NONE; + case XML_TOK_PROLOG_S: + if (parser->m_defaultHandler) + reportDefault(parser, parser->m_encoding, s, next); + break; + case XML_TOK_PI: + if (! reportProcessingInstruction(parser, parser->m_encoding, s, next)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_COMMENT: + if (! reportComment(parser, parser->m_encoding, s, next)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_INVALID: + parser->m_eventPtr = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + if (! parser->m_parsingStatus.finalBuffer) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (! parser->m_parsingStatus.finalBuffer) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + default: + return XML_ERROR_JUNK_AFTER_DOC_ELEMENT; + } + parser->m_eventPtr = s = next; + switch (parser->m_parsingStatus.parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default:; + } + } +} + +static enum XML_Error +processInternalEntity(XML_Parser parser, ENTITY *entity, XML_Bool betweenDecl) { + const char *textStart, *textEnd; + const char *next; + enum XML_Error result; + OPEN_INTERNAL_ENTITY *openEntity; + + if (parser->m_freeInternalEntities) { + openEntity = parser->m_freeInternalEntities; + parser->m_freeInternalEntities = openEntity->next; + } else { + openEntity + = (OPEN_INTERNAL_ENTITY *)MALLOC(parser, sizeof(OPEN_INTERNAL_ENTITY)); + if (! openEntity) + return XML_ERROR_NO_MEMORY; + } + entity->open = XML_TRUE; + entity->processed = 0; + openEntity->next = parser->m_openInternalEntities; + parser->m_openInternalEntities = openEntity; + openEntity->entity = entity; + openEntity->startTagLevel = parser->m_tagLevel; + openEntity->betweenDecl = betweenDecl; + openEntity->internalEventPtr = NULL; + openEntity->internalEventEndPtr = NULL; + textStart = (const char *)entity->textPtr; + textEnd = (const char *)(entity->textPtr + entity->textLen); + /* Set a safe default value in case 'next' does not get set */ + next = textStart; + +#ifdef XML_DTD + if (entity->is_param) { + int tok + = XmlPrologTok(parser->m_internalEncoding, textStart, textEnd, &next); + result = doProlog(parser, parser->m_internalEncoding, textStart, textEnd, + tok, next, &next, XML_FALSE, XML_FALSE); + } else +#endif /* XML_DTD */ + result = doContent(parser, parser->m_tagLevel, parser->m_internalEncoding, + textStart, textEnd, &next, XML_FALSE); + + if (result == XML_ERROR_NONE) { + if (textEnd != next && parser->m_parsingStatus.parsing == XML_SUSPENDED) { + entity->processed = (int)(next - textStart); + parser->m_processor = internalEntityProcessor; + } else { + entity->open = XML_FALSE; + parser->m_openInternalEntities = openEntity->next; + /* put openEntity back in list of free instances */ + openEntity->next = parser->m_freeInternalEntities; + parser->m_freeInternalEntities = openEntity; + } + } + return result; +} + +static enum XML_Error PTRCALL +internalEntityProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { + ENTITY *entity; + const char *textStart, *textEnd; + const char *next; + enum XML_Error result; + OPEN_INTERNAL_ENTITY *openEntity = parser->m_openInternalEntities; + if (! openEntity) + return XML_ERROR_UNEXPECTED_STATE; + + entity = openEntity->entity; + textStart = ((const char *)entity->textPtr) + entity->processed; + textEnd = (const char *)(entity->textPtr + entity->textLen); + /* Set a safe default value in case 'next' does not get set */ + next = textStart; + +#ifdef XML_DTD + if (entity->is_param) { + int tok + = XmlPrologTok(parser->m_internalEncoding, textStart, textEnd, &next); + result = doProlog(parser, parser->m_internalEncoding, textStart, textEnd, + tok, next, &next, XML_FALSE, XML_TRUE); + } else +#endif /* XML_DTD */ + result = doContent(parser, openEntity->startTagLevel, + parser->m_internalEncoding, textStart, textEnd, &next, + XML_FALSE); + + if (result != XML_ERROR_NONE) + return result; + else if (textEnd != next + && parser->m_parsingStatus.parsing == XML_SUSPENDED) { + entity->processed = (int)(next - (const char *)entity->textPtr); + return result; + } else { + entity->open = XML_FALSE; + parser->m_openInternalEntities = openEntity->next; + /* put openEntity back in list of free instances */ + openEntity->next = parser->m_freeInternalEntities; + parser->m_freeInternalEntities = openEntity; + } + +#ifdef XML_DTD + if (entity->is_param) { + int tok; + parser->m_processor = prologProcessor; + tok = XmlPrologTok(parser->m_encoding, s, end, &next); + return doProlog(parser, parser->m_encoding, s, end, tok, next, nextPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_TRUE); + } else +#endif /* XML_DTD */ + { + parser->m_processor = contentProcessor; + /* see externalEntityContentProcessor vs contentProcessor */ + return doContent(parser, parser->m_parentParser ? 1 : 0, parser->m_encoding, + s, end, nextPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer); + } +} + +static enum XML_Error PTRCALL +errorProcessor(XML_Parser parser, const char *s, const char *end, + const char **nextPtr) { + UNUSED_P(s); + UNUSED_P(end); + UNUSED_P(nextPtr); + return parser->m_errorCode; +} + +static enum XML_Error +storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, + const char *ptr, const char *end, STRING_POOL *pool) { + enum XML_Error result + = appendAttributeValue(parser, enc, isCdata, ptr, end, pool); + if (result) + return result; + if (! isCdata && poolLength(pool) && poolLastChar(pool) == 0x20) + poolChop(pool); + if (! poolAppendChar(pool, XML_T('\0'))) + return XML_ERROR_NO_MEMORY; + return XML_ERROR_NONE; +} + +static enum XML_Error +appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, + const char *ptr, const char *end, STRING_POOL *pool) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ + for (;;) { + const char *next; + int tok = XmlAttributeValueTok(enc, ptr, end, &next); + switch (tok) { + case XML_TOK_NONE: + return XML_ERROR_NONE; + case XML_TOK_INVALID: + if (enc == parser->m_encoding) + parser->m_eventPtr = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + if (enc == parser->m_encoding) + parser->m_eventPtr = ptr; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_CHAR_REF: { + XML_Char buf[XML_ENCODE_MAX]; + int i; + int n = XmlCharRefNumber(enc, ptr); + if (n < 0) { + if (enc == parser->m_encoding) + parser->m_eventPtr = ptr; + return XML_ERROR_BAD_CHAR_REF; + } + if (! isCdata && n == 0x20 /* space */ + && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) + break; + n = XmlEncode(n, (ICHAR *)buf); + /* The XmlEncode() functions can never return 0 here. That + * error return happens if the code point passed in is either + * negative or greater than or equal to 0x110000. The + * XmlCharRefNumber() functions will all return a number + * strictly less than 0x110000 or a negative value if an error + * occurred. The negative value is intercepted above, so + * XmlEncode() is never passed a value it might return an + * error for. + */ + for (i = 0; i < n; i++) { + if (! poolAppendChar(pool, buf[i])) + return XML_ERROR_NO_MEMORY; + } + } break; + case XML_TOK_DATA_CHARS: + if (! poolAppend(pool, enc, ptr, next)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_TRAILING_CR: + next = ptr + enc->minBytesPerChar; + /* fall through */ + case XML_TOK_ATTRIBUTE_VALUE_S: + case XML_TOK_DATA_NEWLINE: + if (! isCdata && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) + break; + if (! poolAppendChar(pool, 0x20)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_ENTITY_REF: { + const XML_Char *name; + ENTITY *entity; + char checkEntityDecl; + XML_Char ch = (XML_Char)XmlPredefinedEntityName( + enc, ptr + enc->minBytesPerChar, next - enc->minBytesPerChar); + if (ch) { + if (! poolAppendChar(pool, ch)) + return XML_ERROR_NO_MEMORY; + break; + } + name = poolStoreString(&parser->m_temp2Pool, enc, + ptr + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (! name) + return XML_ERROR_NO_MEMORY; + entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); + poolDiscard(&parser->m_temp2Pool); + /* First, determine if a check for an existing declaration is needed; + if yes, check that the entity exists, and that it is internal. + */ + if (pool == &dtd->pool) /* are we called from prolog? */ + checkEntityDecl = +#ifdef XML_DTD + parser->m_prologState.documentEntity && +#endif /* XML_DTD */ + (dtd->standalone ? ! parser->m_openInternalEntities + : ! dtd->hasParamEntityRefs); + else /* if (pool == &parser->m_tempPool): we are called from content */ + checkEntityDecl = ! dtd->hasParamEntityRefs || dtd->standalone; + if (checkEntityDecl) { + if (! entity) + return XML_ERROR_UNDEFINED_ENTITY; + else if (! entity->is_internal) + return XML_ERROR_ENTITY_DECLARED_IN_PE; + } else if (! entity) { + /* Cannot report skipped entity here - see comments on + parser->m_skippedEntityHandler. + if (parser->m_skippedEntityHandler) + parser->m_skippedEntityHandler(parser->m_handlerArg, name, 0); + */ + /* Cannot call the default handler because this would be + out of sync with the call to the startElementHandler. + if ((pool == &parser->m_tempPool) && parser->m_defaultHandler) + reportDefault(parser, enc, ptr, next); + */ + break; + } + if (entity->open) { + if (enc == parser->m_encoding) { + /* It does not appear that this line can be executed. + * + * The "if (entity->open)" check catches recursive entity + * definitions. In order to be called with an open + * entity, it must have gone through this code before and + * been through the recursive call to + * appendAttributeValue() some lines below. That call + * sets the local encoding ("enc") to the parser's + * internal encoding (internal_utf8 or internal_utf16), + * which can never be the same as the principle encoding. + * It doesn't appear there is another code path that gets + * here with entity->open being TRUE. + * + * Since it is not certain that this logic is watertight, + * we keep the line and merely exclude it from coverage + * tests. + */ + parser->m_eventPtr = ptr; /* LCOV_EXCL_LINE */ + } + return XML_ERROR_RECURSIVE_ENTITY_REF; + } + if (entity->notation) { + if (enc == parser->m_encoding) + parser->m_eventPtr = ptr; + return XML_ERROR_BINARY_ENTITY_REF; + } + if (! entity->textPtr) { + if (enc == parser->m_encoding) + parser->m_eventPtr = ptr; + return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF; + } else { + enum XML_Error result; + const XML_Char *textEnd = entity->textPtr + entity->textLen; + entity->open = XML_TRUE; + result = appendAttributeValue(parser, parser->m_internalEncoding, + isCdata, (const char *)entity->textPtr, + (const char *)textEnd, pool); + entity->open = XML_FALSE; + if (result) + return result; + } + } break; + default: + /* The only token returned by XmlAttributeValueTok() that does + * not have an explicit case here is XML_TOK_PARTIAL_CHAR. + * Getting that would require an entity name to contain an + * incomplete XML character (e.g. \xE2\x82); however previous + * tokenisers will have already recognised and rejected such + * names before XmlAttributeValueTok() gets a look-in. This + * default case should be retained as a safety net, but the code + * excluded from coverage tests. + * + * LCOV_EXCL_START + */ + if (enc == parser->m_encoding) + parser->m_eventPtr = ptr; + return XML_ERROR_UNEXPECTED_STATE; + /* LCOV_EXCL_STOP */ + } + ptr = next; + } + /* not reached */ +} + +static enum XML_Error +storeEntityValue(XML_Parser parser, const ENCODING *enc, + const char *entityTextPtr, const char *entityTextEnd) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ + STRING_POOL *pool = &(dtd->entityValuePool); + enum XML_Error result = XML_ERROR_NONE; +#ifdef XML_DTD + int oldInEntityValue = parser->m_prologState.inEntityValue; + parser->m_prologState.inEntityValue = 1; +#endif /* XML_DTD */ + /* never return Null for the value argument in EntityDeclHandler, + since this would indicate an external entity; therefore we + have to make sure that entityValuePool.start is not null */ + if (! pool->blocks) { + if (! poolGrow(pool)) + return XML_ERROR_NO_MEMORY; + } + + for (;;) { + const char *next; + int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next); + switch (tok) { + case XML_TOK_PARAM_ENTITY_REF: +#ifdef XML_DTD + if (parser->m_isParamEntity || enc != parser->m_encoding) { + const XML_Char *name; + ENTITY *entity; + name = poolStoreString(&parser->m_tempPool, enc, + entityTextPtr + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (! name) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); + poolDiscard(&parser->m_tempPool); + if (! entity) { + /* not a well-formedness error - see XML 1.0: WFC Entity Declared */ + /* cannot report skipped entity here - see comments on + parser->m_skippedEntityHandler + if (parser->m_skippedEntityHandler) + parser->m_skippedEntityHandler(parser->m_handlerArg, name, 0); + */ + dtd->keepProcessing = dtd->standalone; + goto endEntityValue; + } + if (entity->open) { + if (enc == parser->m_encoding) + parser->m_eventPtr = entityTextPtr; + result = XML_ERROR_RECURSIVE_ENTITY_REF; + goto endEntityValue; + } + if (entity->systemId) { + if (parser->m_externalEntityRefHandler) { + dtd->paramEntityRead = XML_FALSE; + entity->open = XML_TRUE; + if (! parser->m_externalEntityRefHandler( + parser->m_externalEntityRefHandlerArg, 0, entity->base, + entity->systemId, entity->publicId)) { + entity->open = XML_FALSE; + result = XML_ERROR_EXTERNAL_ENTITY_HANDLING; + goto endEntityValue; + } + entity->open = XML_FALSE; + if (! dtd->paramEntityRead) + dtd->keepProcessing = dtd->standalone; + } else + dtd->keepProcessing = dtd->standalone; + } else { + entity->open = XML_TRUE; + result = storeEntityValue( + parser, parser->m_internalEncoding, (const char *)entity->textPtr, + (const char *)(entity->textPtr + entity->textLen)); + entity->open = XML_FALSE; + if (result) + goto endEntityValue; + } + break; + } +#endif /* XML_DTD */ + /* In the internal subset, PE references are not legal + within markup declarations, e.g entity values in this case. */ + parser->m_eventPtr = entityTextPtr; + result = XML_ERROR_PARAM_ENTITY_REF; + goto endEntityValue; + case XML_TOK_NONE: + result = XML_ERROR_NONE; + goto endEntityValue; + case XML_TOK_ENTITY_REF: + case XML_TOK_DATA_CHARS: + if (! poolAppend(pool, enc, entityTextPtr, next)) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + break; + case XML_TOK_TRAILING_CR: + next = entityTextPtr + enc->minBytesPerChar; + /* fall through */ + case XML_TOK_DATA_NEWLINE: + if (pool->end == pool->ptr && ! poolGrow(pool)) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + *(pool->ptr)++ = 0xA; + break; + case XML_TOK_CHAR_REF: { + XML_Char buf[XML_ENCODE_MAX]; + int i; + int n = XmlCharRefNumber(enc, entityTextPtr); + if (n < 0) { + if (enc == parser->m_encoding) + parser->m_eventPtr = entityTextPtr; + result = XML_ERROR_BAD_CHAR_REF; + goto endEntityValue; + } + n = XmlEncode(n, (ICHAR *)buf); + /* The XmlEncode() functions can never return 0 here. That + * error return happens if the code point passed in is either + * negative or greater than or equal to 0x110000. The + * XmlCharRefNumber() functions will all return a number + * strictly less than 0x110000 or a negative value if an error + * occurred. The negative value is intercepted above, so + * XmlEncode() is never passed a value it might return an + * error for. + */ + for (i = 0; i < n; i++) { + if (pool->end == pool->ptr && ! poolGrow(pool)) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + *(pool->ptr)++ = buf[i]; + } + } break; + case XML_TOK_PARTIAL: + if (enc == parser->m_encoding) + parser->m_eventPtr = entityTextPtr; + result = XML_ERROR_INVALID_TOKEN; + goto endEntityValue; + case XML_TOK_INVALID: + if (enc == parser->m_encoding) + parser->m_eventPtr = next; + result = XML_ERROR_INVALID_TOKEN; + goto endEntityValue; + default: + /* This default case should be unnecessary -- all the tokens + * that XmlEntityValueTok() can return have their own explicit + * cases -- but should be retained for safety. We do however + * exclude it from the coverage statistics. + * + * LCOV_EXCL_START + */ + if (enc == parser->m_encoding) + parser->m_eventPtr = entityTextPtr; + result = XML_ERROR_UNEXPECTED_STATE; + goto endEntityValue; + /* LCOV_EXCL_STOP */ + } + entityTextPtr = next; + } +endEntityValue: +#ifdef XML_DTD + parser->m_prologState.inEntityValue = oldInEntityValue; +#endif /* XML_DTD */ + return result; +} + +static void FASTCALL +normalizeLines(XML_Char *s) { + XML_Char *p; + for (;; s++) { + if (*s == XML_T('\0')) + return; + if (*s == 0xD) + break; + } + p = s; + do { + if (*s == 0xD) { + *p++ = 0xA; + if (*++s == 0xA) + s++; + } else + *p++ = *s++; + } while (*s); + *p = XML_T('\0'); +} + +static int +reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end) { + const XML_Char *target; + XML_Char *data; + const char *tem; + if (! parser->m_processingInstructionHandler) { + if (parser->m_defaultHandler) + reportDefault(parser, enc, start, end); + return 1; + } + start += enc->minBytesPerChar * 2; + tem = start + XmlNameLength(enc, start); + target = poolStoreString(&parser->m_tempPool, enc, start, tem); + if (! target) + return 0; + poolFinish(&parser->m_tempPool); + data = poolStoreString(&parser->m_tempPool, enc, XmlSkipS(enc, tem), + end - enc->minBytesPerChar * 2); + if (! data) + return 0; + normalizeLines(data); + parser->m_processingInstructionHandler(parser->m_handlerArg, target, data); + poolClear(&parser->m_tempPool); + return 1; +} + +static int +reportComment(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end) { + XML_Char *data; + if (! parser->m_commentHandler) { + if (parser->m_defaultHandler) + reportDefault(parser, enc, start, end); + return 1; + } + data = poolStoreString(&parser->m_tempPool, enc, + start + enc->minBytesPerChar * 4, + end - enc->minBytesPerChar * 3); + if (! data) + return 0; + normalizeLines(data); + parser->m_commentHandler(parser->m_handlerArg, data); + poolClear(&parser->m_tempPool); + return 1; +} + +static void +reportDefault(XML_Parser parser, const ENCODING *enc, const char *s, + const char *end) { + if (MUST_CONVERT(enc, s)) { + enum XML_Convert_Result convert_res; + const char **eventPP; + const char **eventEndPP; + if (enc == parser->m_encoding) { + eventPP = &parser->m_eventPtr; + eventEndPP = &parser->m_eventEndPtr; + } else { + /* To get here, two things must be true; the parser must be + * using a character encoding that is not the same as the + * encoding passed in, and the encoding passed in must need + * conversion to the internal format (UTF-8 unless XML_UNICODE + * is defined). The only occasions on which the encoding passed + * in is not the same as the parser's encoding are when it is + * the internal encoding (e.g. a previously defined parameter + * entity, already converted to internal format). This by + * definition doesn't need conversion, so the whole branch never + * gets executed. + * + * For safety's sake we don't delete these lines and merely + * exclude them from coverage statistics. + * + * LCOV_EXCL_START + */ + eventPP = &(parser->m_openInternalEntities->internalEventPtr); + eventEndPP = &(parser->m_openInternalEntities->internalEventEndPtr); + /* LCOV_EXCL_STOP */ + } + do { + ICHAR *dataPtr = (ICHAR *)parser->m_dataBuf; + convert_res + = XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)parser->m_dataBufEnd); + *eventEndPP = s; + parser->m_defaultHandler(parser->m_handlerArg, parser->m_dataBuf, + (int)(dataPtr - (ICHAR *)parser->m_dataBuf)); + *eventPP = s; + } while ((convert_res != XML_CONVERT_COMPLETED) + && (convert_res != XML_CONVERT_INPUT_INCOMPLETE)); + } else + parser->m_defaultHandler(parser->m_handlerArg, (XML_Char *)s, + (int)((XML_Char *)end - (XML_Char *)s)); +} + +static int +defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, + XML_Bool isId, const XML_Char *value, XML_Parser parser) { + DEFAULT_ATTRIBUTE *att; + if (value || isId) { + /* The handling of default attributes gets messed up if we have + a default which duplicates a non-default. */ + int i; + for (i = 0; i < type->nDefaultAtts; i++) + if (attId == type->defaultAtts[i].id) + return 1; + if (isId && ! type->idAtt && ! attId->xmlns) + type->idAtt = attId; + } + if (type->nDefaultAtts == type->allocDefaultAtts) { + if (type->allocDefaultAtts == 0) { + type->allocDefaultAtts = 8; + type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC( + parser, type->allocDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); + if (! type->defaultAtts) { + type->allocDefaultAtts = 0; + return 0; + } + } else { + DEFAULT_ATTRIBUTE *temp; + int count = type->allocDefaultAtts * 2; + temp = (DEFAULT_ATTRIBUTE *)REALLOC(parser, type->defaultAtts, + (count * sizeof(DEFAULT_ATTRIBUTE))); + if (temp == NULL) + return 0; + type->allocDefaultAtts = count; + type->defaultAtts = temp; + } + } + att = type->defaultAtts + type->nDefaultAtts; + att->id = attId; + att->value = value; + att->isCdata = isCdata; + if (! isCdata) + attId->maybeTokenized = XML_TRUE; + type->nDefaultAtts += 1; + return 1; +} + +static int +setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ + const XML_Char *name; + for (name = elementType->name; *name; name++) { + if (*name == XML_T(ASCII_COLON)) { + PREFIX *prefix; + const XML_Char *s; + for (s = elementType->name; s != name; s++) { + if (! poolAppendChar(&dtd->pool, *s)) + return 0; + } + if (! poolAppendChar(&dtd->pool, XML_T('\0'))) + return 0; + prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool), + sizeof(PREFIX)); + if (! prefix) + return 0; + if (prefix->name == poolStart(&dtd->pool)) + poolFinish(&dtd->pool); + else + poolDiscard(&dtd->pool); + elementType->prefix = prefix; + break; + } + } + return 1; +} + +static ATTRIBUTE_ID * +getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ + ATTRIBUTE_ID *id; + const XML_Char *name; + if (! poolAppendChar(&dtd->pool, XML_T('\0'))) + return NULL; + name = poolStoreString(&dtd->pool, enc, start, end); + if (! name) + return NULL; + /* skip quotation mark - its storage will be re-used (like in name[-1]) */ + ++name; + id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, name, + sizeof(ATTRIBUTE_ID)); + if (! id) + return NULL; + if (id->name != name) + poolDiscard(&dtd->pool); + else { + poolFinish(&dtd->pool); + if (! parser->m_ns) + ; + else if (name[0] == XML_T(ASCII_x) && name[1] == XML_T(ASCII_m) + && name[2] == XML_T(ASCII_l) && name[3] == XML_T(ASCII_n) + && name[4] == XML_T(ASCII_s) + && (name[5] == XML_T('\0') || name[5] == XML_T(ASCII_COLON))) { + if (name[5] == XML_T('\0')) + id->prefix = &dtd->defaultPrefix; + else + id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, name + 6, + sizeof(PREFIX)); + id->xmlns = XML_TRUE; + } else { + int i; + for (i = 0; name[i]; i++) { + /* attributes without prefix are *not* in the default namespace */ + if (name[i] == XML_T(ASCII_COLON)) { + int j; + for (j = 0; j < i; j++) { + if (! poolAppendChar(&dtd->pool, name[j])) + return NULL; + } + if (! poolAppendChar(&dtd->pool, XML_T('\0'))) + return NULL; + id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, + poolStart(&dtd->pool), sizeof(PREFIX)); + if (! id->prefix) + return NULL; + if (id->prefix->name == poolStart(&dtd->pool)) + poolFinish(&dtd->pool); + else + poolDiscard(&dtd->pool); + break; + } + } + } + } + return id; +} + +#define CONTEXT_SEP XML_T(ASCII_FF) + +static const XML_Char * +getContext(XML_Parser parser) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ + HASH_TABLE_ITER iter; + XML_Bool needSep = XML_FALSE; + + if (dtd->defaultPrefix.binding) { + int i; + int len; + if (! poolAppendChar(&parser->m_tempPool, XML_T(ASCII_EQUALS))) + return NULL; + len = dtd->defaultPrefix.binding->uriLen; + if (parser->m_namespaceSeparator) + len--; + for (i = 0; i < len; i++) { + if (! poolAppendChar(&parser->m_tempPool, + dtd->defaultPrefix.binding->uri[i])) { + /* Because of memory caching, I don't believe this line can be + * executed. + * + * This is part of a loop copying the default prefix binding + * URI into the parser's temporary string pool. Previously, + * that URI was copied into the same string pool, with a + * terminating NUL character, as part of setContext(). When + * the pool was cleared, that leaves a block definitely big + * enough to hold the URI on the free block list of the pool. + * The URI copy in getContext() therefore cannot run out of + * memory. + * + * If the pool is used between the setContext() and + * getContext() calls, the worst it can do is leave a bigger + * block on the front of the free list. Given that this is + * all somewhat inobvious and program logic can be changed, we + * don't delete the line but we do exclude it from the test + * coverage statistics. + */ + return NULL; /* LCOV_EXCL_LINE */ + } + } + needSep = XML_TRUE; + } + + hashTableIterInit(&iter, &(dtd->prefixes)); + for (;;) { + int i; + int len; + const XML_Char *s; + PREFIX *prefix = (PREFIX *)hashTableIterNext(&iter); + if (! prefix) + break; + if (! prefix->binding) { + /* This test appears to be (justifiable) paranoia. There does + * not seem to be a way of injecting a prefix without a binding + * that doesn't get errored long before this function is called. + * The test should remain for safety's sake, so we instead + * exclude the following line from the coverage statistics. + */ + continue; /* LCOV_EXCL_LINE */ + } + if (needSep && ! poolAppendChar(&parser->m_tempPool, CONTEXT_SEP)) + return NULL; + for (s = prefix->name; *s; s++) + if (! poolAppendChar(&parser->m_tempPool, *s)) + return NULL; + if (! poolAppendChar(&parser->m_tempPool, XML_T(ASCII_EQUALS))) + return NULL; + len = prefix->binding->uriLen; + if (parser->m_namespaceSeparator) + len--; + for (i = 0; i < len; i++) + if (! poolAppendChar(&parser->m_tempPool, prefix->binding->uri[i])) + return NULL; + needSep = XML_TRUE; + } + + hashTableIterInit(&iter, &(dtd->generalEntities)); + for (;;) { + const XML_Char *s; + ENTITY *e = (ENTITY *)hashTableIterNext(&iter); + if (! e) + break; + if (! e->open) + continue; + if (needSep && ! poolAppendChar(&parser->m_tempPool, CONTEXT_SEP)) + return NULL; + for (s = e->name; *s; s++) + if (! poolAppendChar(&parser->m_tempPool, *s)) + return 0; + needSep = XML_TRUE; + } + + if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) + return NULL; + return parser->m_tempPool.start; +} + +static XML_Bool +setContext(XML_Parser parser, const XML_Char *context) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ + const XML_Char *s = context; + + while (*context != XML_T('\0')) { + if (*s == CONTEXT_SEP || *s == XML_T('\0')) { + ENTITY *e; + if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) + return XML_FALSE; + e = (ENTITY *)lookup(parser, &dtd->generalEntities, + poolStart(&parser->m_tempPool), 0); + if (e) + e->open = XML_TRUE; + if (*s != XML_T('\0')) + s++; + context = s; + poolDiscard(&parser->m_tempPool); + } else if (*s == XML_T(ASCII_EQUALS)) { + PREFIX *prefix; + if (poolLength(&parser->m_tempPool) == 0) + prefix = &dtd->defaultPrefix; + else { + if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) + return XML_FALSE; + prefix + = (PREFIX *)lookup(parser, &dtd->prefixes, + poolStart(&parser->m_tempPool), sizeof(PREFIX)); + if (! prefix) + return XML_FALSE; + if (prefix->name == poolStart(&parser->m_tempPool)) { + prefix->name = poolCopyString(&dtd->pool, prefix->name); + if (! prefix->name) + return XML_FALSE; + } + poolDiscard(&parser->m_tempPool); + } + for (context = s + 1; *context != CONTEXT_SEP && *context != XML_T('\0'); + context++) + if (! poolAppendChar(&parser->m_tempPool, *context)) + return XML_FALSE; + if (! poolAppendChar(&parser->m_tempPool, XML_T('\0'))) + return XML_FALSE; + if (addBinding(parser, prefix, NULL, poolStart(&parser->m_tempPool), + &parser->m_inheritedBindings) + != XML_ERROR_NONE) + return XML_FALSE; + poolDiscard(&parser->m_tempPool); + if (*context != XML_T('\0')) + ++context; + s = context; + } else { + if (! poolAppendChar(&parser->m_tempPool, *s)) + return XML_FALSE; + s++; + } + } + return XML_TRUE; +} + +static void FASTCALL +normalizePublicId(XML_Char *publicId) { + XML_Char *p = publicId; + XML_Char *s; + for (s = publicId; *s; s++) { + switch (*s) { + case 0x20: + case 0xD: + case 0xA: + if (p != publicId && p[-1] != 0x20) + *p++ = 0x20; + break; + default: + *p++ = *s; + } + } + if (p != publicId && p[-1] == 0x20) + --p; + *p = XML_T('\0'); +} + +static DTD * +dtdCreate(const XML_Memory_Handling_Suite *ms) { + DTD *p = (DTD *)ms->malloc_fcn(sizeof(DTD)); + if (p == NULL) + return p; + poolInit(&(p->pool), ms); + poolInit(&(p->entityValuePool), ms); + hashTableInit(&(p->generalEntities), ms); + hashTableInit(&(p->elementTypes), ms); + hashTableInit(&(p->attributeIds), ms); + hashTableInit(&(p->prefixes), ms); +#ifdef XML_DTD + p->paramEntityRead = XML_FALSE; + hashTableInit(&(p->paramEntities), ms); +#endif /* XML_DTD */ + p->defaultPrefix.name = NULL; + p->defaultPrefix.binding = NULL; + + p->in_eldecl = XML_FALSE; + p->scaffIndex = NULL; + p->scaffold = NULL; + p->scaffLevel = 0; + p->scaffSize = 0; + p->scaffCount = 0; + p->contentStringLen = 0; + + p->keepProcessing = XML_TRUE; + p->hasParamEntityRefs = XML_FALSE; + p->standalone = XML_FALSE; + return p; +} + +static void +dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms) { + HASH_TABLE_ITER iter; + hashTableIterInit(&iter, &(p->elementTypes)); + for (;;) { + ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); + if (! e) + break; + if (e->allocDefaultAtts != 0) + ms->free_fcn(e->defaultAtts); + } + hashTableClear(&(p->generalEntities)); +#ifdef XML_DTD + p->paramEntityRead = XML_FALSE; + hashTableClear(&(p->paramEntities)); +#endif /* XML_DTD */ + hashTableClear(&(p->elementTypes)); + hashTableClear(&(p->attributeIds)); + hashTableClear(&(p->prefixes)); + poolClear(&(p->pool)); + poolClear(&(p->entityValuePool)); + p->defaultPrefix.name = NULL; + p->defaultPrefix.binding = NULL; + + p->in_eldecl = XML_FALSE; + + ms->free_fcn(p->scaffIndex); + p->scaffIndex = NULL; + ms->free_fcn(p->scaffold); + p->scaffold = NULL; + + p->scaffLevel = 0; + p->scaffSize = 0; + p->scaffCount = 0; + p->contentStringLen = 0; + + p->keepProcessing = XML_TRUE; + p->hasParamEntityRefs = XML_FALSE; + p->standalone = XML_FALSE; +} + +static void +dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms) { + HASH_TABLE_ITER iter; + hashTableIterInit(&iter, &(p->elementTypes)); + for (;;) { + ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); + if (! e) + break; + if (e->allocDefaultAtts != 0) + ms->free_fcn(e->defaultAtts); + } + hashTableDestroy(&(p->generalEntities)); +#ifdef XML_DTD + hashTableDestroy(&(p->paramEntities)); +#endif /* XML_DTD */ + hashTableDestroy(&(p->elementTypes)); + hashTableDestroy(&(p->attributeIds)); + hashTableDestroy(&(p->prefixes)); + poolDestroy(&(p->pool)); + poolDestroy(&(p->entityValuePool)); + if (isDocEntity) { + ms->free_fcn(p->scaffIndex); + ms->free_fcn(p->scaffold); + } + ms->free_fcn(p); +} + +/* Do a deep copy of the DTD. Return 0 for out of memory, non-zero otherwise. + The new DTD has already been initialized. +*/ +static int +dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, + const XML_Memory_Handling_Suite *ms) { + HASH_TABLE_ITER iter; + + /* Copy the prefix table. */ + + hashTableIterInit(&iter, &(oldDtd->prefixes)); + for (;;) { + const XML_Char *name; + const PREFIX *oldP = (PREFIX *)hashTableIterNext(&iter); + if (! oldP) + break; + name = poolCopyString(&(newDtd->pool), oldP->name); + if (! name) + return 0; + if (! lookup(oldParser, &(newDtd->prefixes), name, sizeof(PREFIX))) + return 0; + } + + hashTableIterInit(&iter, &(oldDtd->attributeIds)); + + /* Copy the attribute id table. */ + + for (;;) { + ATTRIBUTE_ID *newA; + const XML_Char *name; + const ATTRIBUTE_ID *oldA = (ATTRIBUTE_ID *)hashTableIterNext(&iter); + + if (! oldA) + break; + /* Remember to allocate the scratch byte before the name. */ + if (! poolAppendChar(&(newDtd->pool), XML_T('\0'))) + return 0; + name = poolCopyString(&(newDtd->pool), oldA->name); + if (! name) + return 0; + ++name; + newA = (ATTRIBUTE_ID *)lookup(oldParser, &(newDtd->attributeIds), name, + sizeof(ATTRIBUTE_ID)); + if (! newA) + return 0; + newA->maybeTokenized = oldA->maybeTokenized; + if (oldA->prefix) { + newA->xmlns = oldA->xmlns; + if (oldA->prefix == &oldDtd->defaultPrefix) + newA->prefix = &newDtd->defaultPrefix; + else + newA->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes), + oldA->prefix->name, 0); + } + } + + /* Copy the element type table. */ + + hashTableIterInit(&iter, &(oldDtd->elementTypes)); + + for (;;) { + int i; + ELEMENT_TYPE *newE; + const XML_Char *name; + const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter); + if (! oldE) + break; + name = poolCopyString(&(newDtd->pool), oldE->name); + if (! name) + return 0; + newE = (ELEMENT_TYPE *)lookup(oldParser, &(newDtd->elementTypes), name, + sizeof(ELEMENT_TYPE)); + if (! newE) + return 0; + if (oldE->nDefaultAtts) { + newE->defaultAtts = (DEFAULT_ATTRIBUTE *)ms->malloc_fcn( + oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); + if (! newE->defaultAtts) { + return 0; + } + } + if (oldE->idAtt) + newE->idAtt = (ATTRIBUTE_ID *)lookup(oldParser, &(newDtd->attributeIds), + oldE->idAtt->name, 0); + newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts; + if (oldE->prefix) + newE->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes), + oldE->prefix->name, 0); + for (i = 0; i < newE->nDefaultAtts; i++) { + newE->defaultAtts[i].id = (ATTRIBUTE_ID *)lookup( + oldParser, &(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0); + newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata; + if (oldE->defaultAtts[i].value) { + newE->defaultAtts[i].value + = poolCopyString(&(newDtd->pool), oldE->defaultAtts[i].value); + if (! newE->defaultAtts[i].value) + return 0; + } else + newE->defaultAtts[i].value = NULL; + } + } + + /* Copy the entity tables. */ + if (! copyEntityTable(oldParser, &(newDtd->generalEntities), &(newDtd->pool), + &(oldDtd->generalEntities))) + return 0; + +#ifdef XML_DTD + if (! copyEntityTable(oldParser, &(newDtd->paramEntities), &(newDtd->pool), + &(oldDtd->paramEntities))) + return 0; + newDtd->paramEntityRead = oldDtd->paramEntityRead; +#endif /* XML_DTD */ + + newDtd->keepProcessing = oldDtd->keepProcessing; + newDtd->hasParamEntityRefs = oldDtd->hasParamEntityRefs; + newDtd->standalone = oldDtd->standalone; + + /* Don't want deep copying for scaffolding */ + newDtd->in_eldecl = oldDtd->in_eldecl; + newDtd->scaffold = oldDtd->scaffold; + newDtd->contentStringLen = oldDtd->contentStringLen; + newDtd->scaffSize = oldDtd->scaffSize; + newDtd->scaffLevel = oldDtd->scaffLevel; + newDtd->scaffIndex = oldDtd->scaffIndex; + + return 1; +} /* End dtdCopy */ + +static int +copyEntityTable(XML_Parser oldParser, HASH_TABLE *newTable, + STRING_POOL *newPool, const HASH_TABLE *oldTable) { + HASH_TABLE_ITER iter; + const XML_Char *cachedOldBase = NULL; + const XML_Char *cachedNewBase = NULL; + + hashTableIterInit(&iter, oldTable); + + for (;;) { + ENTITY *newE; + const XML_Char *name; + const ENTITY *oldE = (ENTITY *)hashTableIterNext(&iter); + if (! oldE) + break; + name = poolCopyString(newPool, oldE->name); + if (! name) + return 0; + newE = (ENTITY *)lookup(oldParser, newTable, name, sizeof(ENTITY)); + if (! newE) + return 0; + if (oldE->systemId) { + const XML_Char *tem = poolCopyString(newPool, oldE->systemId); + if (! tem) + return 0; + newE->systemId = tem; + if (oldE->base) { + if (oldE->base == cachedOldBase) + newE->base = cachedNewBase; + else { + cachedOldBase = oldE->base; + tem = poolCopyString(newPool, cachedOldBase); + if (! tem) + return 0; + cachedNewBase = newE->base = tem; + } + } + if (oldE->publicId) { + tem = poolCopyString(newPool, oldE->publicId); + if (! tem) + return 0; + newE->publicId = tem; + } + } else { + const XML_Char *tem + = poolCopyStringN(newPool, oldE->textPtr, oldE->textLen); + if (! tem) + return 0; + newE->textPtr = tem; + newE->textLen = oldE->textLen; + } + if (oldE->notation) { + const XML_Char *tem = poolCopyString(newPool, oldE->notation); + if (! tem) + return 0; + newE->notation = tem; + } + newE->is_param = oldE->is_param; + newE->is_internal = oldE->is_internal; + } + return 1; +} + +#define INIT_POWER 6 + +static XML_Bool FASTCALL +keyeq(KEY s1, KEY s2) { + for (; *s1 == *s2; s1++, s2++) + if (*s1 == 0) + return XML_TRUE; + return XML_FALSE; +} + +static size_t +keylen(KEY s) { + size_t len = 0; + for (; *s; s++, len++) + ; + return len; +} + +static void +copy_salt_to_sipkey(XML_Parser parser, struct sipkey *key) { + key->k[0] = 0; + key->k[1] = get_hash_secret_salt(parser); +} + +static unsigned long FASTCALL +hash(XML_Parser parser, KEY s) { + struct siphash state; + struct sipkey key; + (void)sip24_valid; + copy_salt_to_sipkey(parser, &key); + sip24_init(&state, &key); + sip24_update(&state, s, keylen(s) * sizeof(XML_Char)); + return (unsigned long)sip24_final(&state); +} + +static NAMED * +lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) { + size_t i; + if (table->size == 0) { + size_t tsize; + if (! createSize) + return NULL; + table->power = INIT_POWER; + /* table->size is a power of 2 */ + table->size = (size_t)1 << INIT_POWER; + tsize = table->size * sizeof(NAMED *); + table->v = (NAMED **)table->mem->malloc_fcn(tsize); + if (! table->v) { + table->size = 0; + return NULL; + } + memset(table->v, 0, tsize); + i = hash(parser, name) & ((unsigned long)table->size - 1); + } else { + unsigned long h = hash(parser, name); + unsigned long mask = (unsigned long)table->size - 1; + unsigned char step = 0; + i = h & mask; + while (table->v[i]) { + if (keyeq(name, table->v[i]->name)) + return table->v[i]; + if (! step) + step = PROBE_STEP(h, mask, table->power); + i < step ? (i += table->size - step) : (i -= step); + } + if (! createSize) + return NULL; + + /* check for overflow (table is half full) */ + if (table->used >> (table->power - 1)) { + unsigned char newPower = table->power + 1; + size_t newSize = (size_t)1 << newPower; + unsigned long newMask = (unsigned long)newSize - 1; + size_t tsize = newSize * sizeof(NAMED *); + NAMED **newV = (NAMED **)table->mem->malloc_fcn(tsize); + if (! newV) + return NULL; + memset(newV, 0, tsize); + for (i = 0; i < table->size; i++) + if (table->v[i]) { + unsigned long newHash = hash(parser, table->v[i]->name); + size_t j = newHash & newMask; + step = 0; + while (newV[j]) { + if (! step) + step = PROBE_STEP(newHash, newMask, newPower); + j < step ? (j += newSize - step) : (j -= step); + } + newV[j] = table->v[i]; + } + table->mem->free_fcn(table->v); + table->v = newV; + table->power = newPower; + table->size = newSize; + i = h & newMask; + step = 0; + while (table->v[i]) { + if (! step) + step = PROBE_STEP(h, newMask, newPower); + i < step ? (i += newSize - step) : (i -= step); + } + } + } + table->v[i] = (NAMED *)table->mem->malloc_fcn(createSize); + if (! table->v[i]) + return NULL; + memset(table->v[i], 0, createSize); + table->v[i]->name = name; + (table->used)++; + return table->v[i]; +} + +static void FASTCALL +hashTableClear(HASH_TABLE *table) { + size_t i; + for (i = 0; i < table->size; i++) { + table->mem->free_fcn(table->v[i]); + table->v[i] = NULL; + } + table->used = 0; +} + +static void FASTCALL +hashTableDestroy(HASH_TABLE *table) { + size_t i; + for (i = 0; i < table->size; i++) + table->mem->free_fcn(table->v[i]); + table->mem->free_fcn(table->v); +} + +static void FASTCALL +hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms) { + p->power = 0; + p->size = 0; + p->used = 0; + p->v = NULL; + p->mem = ms; +} + +static void FASTCALL +hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table) { + iter->p = table->v; + iter->end = iter->p ? iter->p + table->size : NULL; +} + +static NAMED *FASTCALL +hashTableIterNext(HASH_TABLE_ITER *iter) { + while (iter->p != iter->end) { + NAMED *tem = *(iter->p)++; + if (tem) + return tem; + } + return NULL; +} + +static void FASTCALL +poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms) { + pool->blocks = NULL; + pool->freeBlocks = NULL; + pool->start = NULL; + pool->ptr = NULL; + pool->end = NULL; + pool->mem = ms; +} + +static void FASTCALL +poolClear(STRING_POOL *pool) { + if (! pool->freeBlocks) + pool->freeBlocks = pool->blocks; + else { + BLOCK *p = pool->blocks; + while (p) { + BLOCK *tem = p->next; + p->next = pool->freeBlocks; + pool->freeBlocks = p; + p = tem; + } + } + pool->blocks = NULL; + pool->start = NULL; + pool->ptr = NULL; + pool->end = NULL; +} + +static void FASTCALL +poolDestroy(STRING_POOL *pool) { + BLOCK *p = pool->blocks; + while (p) { + BLOCK *tem = p->next; + pool->mem->free_fcn(p); + p = tem; + } + p = pool->freeBlocks; + while (p) { + BLOCK *tem = p->next; + pool->mem->free_fcn(p); + p = tem; + } +} + +static XML_Char * +poolAppend(STRING_POOL *pool, const ENCODING *enc, const char *ptr, + const char *end) { + if (! pool->ptr && ! poolGrow(pool)) + return NULL; + for (;;) { + const enum XML_Convert_Result convert_res = XmlConvert( + enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end); + if ((convert_res == XML_CONVERT_COMPLETED) + || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) + break; + if (! poolGrow(pool)) + return NULL; + } + return pool->start; +} + +static const XML_Char *FASTCALL +poolCopyString(STRING_POOL *pool, const XML_Char *s) { + do { + if (! poolAppendChar(pool, *s)) + return NULL; + } while (*s++); + s = pool->start; + poolFinish(pool); + return s; +} + +static const XML_Char * +poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n) { + if (! pool->ptr && ! poolGrow(pool)) { + /* The following line is unreachable given the current usage of + * poolCopyStringN(). Currently it is called from exactly one + * place to copy the text of a simple general entity. By that + * point, the name of the entity is already stored in the pool, so + * pool->ptr cannot be NULL. + * + * If poolCopyStringN() is used elsewhere as it well might be, + * this line may well become executable again. Regardless, this + * sort of check shouldn't be removed lightly, so we just exclude + * it from the coverage statistics. + */ + return NULL; /* LCOV_EXCL_LINE */ + } + for (; n > 0; --n, s++) { + if (! poolAppendChar(pool, *s)) + return NULL; + } + s = pool->start; + poolFinish(pool); + return s; +} + +static const XML_Char *FASTCALL +poolAppendString(STRING_POOL *pool, const XML_Char *s) { + while (*s) { + if (! poolAppendChar(pool, *s)) + return NULL; + s++; + } + return pool->start; +} + +static XML_Char * +poolStoreString(STRING_POOL *pool, const ENCODING *enc, const char *ptr, + const char *end) { + if (! poolAppend(pool, enc, ptr, end)) + return NULL; + if (pool->ptr == pool->end && ! poolGrow(pool)) + return NULL; + *(pool->ptr)++ = 0; + return pool->start; +} + +static size_t +poolBytesToAllocateFor(int blockSize) { + /* Unprotected math would be: + ** return offsetof(BLOCK, s) + blockSize * sizeof(XML_Char); + ** + ** Detect overflow, avoiding _signed_ overflow undefined behavior + ** For a + b * c we check b * c in isolation first, so that addition of a + ** on top has no chance of making us accept a small non-negative number + */ + const size_t stretch = sizeof(XML_Char); /* can be 4 bytes */ + + if (blockSize <= 0) + return 0; + + if (blockSize > (int)(INT_MAX / stretch)) + return 0; + + { + const int stretchedBlockSize = blockSize * (int)stretch; + const int bytesToAllocate + = (int)(offsetof(BLOCK, s) + (unsigned)stretchedBlockSize); + if (bytesToAllocate < 0) + return 0; + + return (size_t)bytesToAllocate; + } +} + +static XML_Bool FASTCALL +poolGrow(STRING_POOL *pool) { + if (pool->freeBlocks) { + if (pool->start == 0) { + pool->blocks = pool->freeBlocks; + pool->freeBlocks = pool->freeBlocks->next; + pool->blocks->next = NULL; + pool->start = pool->blocks->s; + pool->end = pool->start + pool->blocks->size; + pool->ptr = pool->start; + return XML_TRUE; + } + if (pool->end - pool->start < pool->freeBlocks->size) { + BLOCK *tem = pool->freeBlocks->next; + pool->freeBlocks->next = pool->blocks; + pool->blocks = pool->freeBlocks; + pool->freeBlocks = tem; + memcpy(pool->blocks->s, pool->start, + (pool->end - pool->start) * sizeof(XML_Char)); + pool->ptr = pool->blocks->s + (pool->ptr - pool->start); + pool->start = pool->blocks->s; + pool->end = pool->start + pool->blocks->size; + return XML_TRUE; + } + } + if (pool->blocks && pool->start == pool->blocks->s) { + BLOCK *temp; + int blockSize = (int)((unsigned)(pool->end - pool->start) * 2U); + size_t bytesToAllocate; + + /* NOTE: Needs to be calculated prior to calling `realloc` + to avoid dangling pointers: */ + const ptrdiff_t offsetInsideBlock = pool->ptr - pool->start; + + if (blockSize < 0) { + /* This condition traps a situation where either more than + * INT_MAX/2 bytes have already been allocated. This isn't + * readily testable, since it is unlikely that an average + * machine will have that much memory, so we exclude it from the + * coverage statistics. + */ + return XML_FALSE; /* LCOV_EXCL_LINE */ + } + + bytesToAllocate = poolBytesToAllocateFor(blockSize); + if (bytesToAllocate == 0) + return XML_FALSE; + + temp = (BLOCK *)pool->mem->realloc_fcn(pool->blocks, + (unsigned)bytesToAllocate); + if (temp == NULL) + return XML_FALSE; + pool->blocks = temp; + pool->blocks->size = blockSize; + pool->ptr = pool->blocks->s + offsetInsideBlock; + pool->start = pool->blocks->s; + pool->end = pool->start + blockSize; + } else { + BLOCK *tem; + int blockSize = (int)(pool->end - pool->start); + size_t bytesToAllocate; + + if (blockSize < 0) { + /* This condition traps a situation where either more than + * INT_MAX bytes have already been allocated (which is prevented + * by various pieces of program logic, not least this one, never + * mind the unlikelihood of actually having that much memory) or + * the pool control fields have been corrupted (which could + * conceivably happen in an extremely buggy user handler + * function). Either way it isn't readily testable, so we + * exclude it from the coverage statistics. + */ + return XML_FALSE; /* LCOV_EXCL_LINE */ + } + + if (blockSize < INIT_BLOCK_SIZE) + blockSize = INIT_BLOCK_SIZE; + else { + /* Detect overflow, avoiding _signed_ overflow undefined behavior */ + if ((int)((unsigned)blockSize * 2U) < 0) { + return XML_FALSE; + } + blockSize *= 2; + } + + bytesToAllocate = poolBytesToAllocateFor(blockSize); + if (bytesToAllocate == 0) + return XML_FALSE; + + tem = (BLOCK *)pool->mem->malloc_fcn(bytesToAllocate); + if (! tem) + return XML_FALSE; + tem->size = blockSize; + tem->next = pool->blocks; + pool->blocks = tem; + if (pool->ptr != pool->start) + memcpy(tem->s, pool->start, (pool->ptr - pool->start) * sizeof(XML_Char)); + pool->ptr = tem->s + (pool->ptr - pool->start); + pool->start = tem->s; + pool->end = tem->s + blockSize; + } + return XML_TRUE; +} + +static int FASTCALL +nextScaffoldPart(XML_Parser parser) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ + CONTENT_SCAFFOLD *me; + int next; + + if (! dtd->scaffIndex) { + dtd->scaffIndex = (int *)MALLOC(parser, parser->m_groupSize * sizeof(int)); + if (! dtd->scaffIndex) + return -1; + dtd->scaffIndex[0] = 0; + } + + if (dtd->scaffCount >= dtd->scaffSize) { + CONTENT_SCAFFOLD *temp; + if (dtd->scaffold) { + temp = (CONTENT_SCAFFOLD *)REALLOC( + parser, dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD)); + if (temp == NULL) + return -1; + dtd->scaffSize *= 2; + } else { + temp = (CONTENT_SCAFFOLD *)MALLOC(parser, INIT_SCAFFOLD_ELEMENTS + * sizeof(CONTENT_SCAFFOLD)); + if (temp == NULL) + return -1; + dtd->scaffSize = INIT_SCAFFOLD_ELEMENTS; + } + dtd->scaffold = temp; + } + next = dtd->scaffCount++; + me = &dtd->scaffold[next]; + if (dtd->scaffLevel) { + CONTENT_SCAFFOLD *parent + = &dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]]; + if (parent->lastchild) { + dtd->scaffold[parent->lastchild].nextsib = next; + } + if (! parent->childcnt) + parent->firstchild = next; + parent->lastchild = next; + parent->childcnt++; + } + me->firstchild = me->lastchild = me->childcnt = me->nextsib = 0; + return next; +} + +static void +build_node(XML_Parser parser, int src_node, XML_Content *dest, + XML_Content **contpos, XML_Char **strpos) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ + dest->type = dtd->scaffold[src_node].type; + dest->quant = dtd->scaffold[src_node].quant; + if (dest->type == XML_CTYPE_NAME) { + const XML_Char *src; + dest->name = *strpos; + src = dtd->scaffold[src_node].name; + for (;;) { + *(*strpos)++ = *src; + if (! *src) + break; + src++; + } + dest->numchildren = 0; + dest->children = NULL; + } else { + unsigned int i; + int cn; + dest->numchildren = dtd->scaffold[src_node].childcnt; + dest->children = *contpos; + *contpos += dest->numchildren; + for (i = 0, cn = dtd->scaffold[src_node].firstchild; i < dest->numchildren; + i++, cn = dtd->scaffold[cn].nextsib) { + build_node(parser, cn, &(dest->children[i]), contpos, strpos); + } + dest->name = NULL; + } +} + +static XML_Content * +build_model(XML_Parser parser) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ + XML_Content *ret; + XML_Content *cpos; + XML_Char *str; + int allocsize = (dtd->scaffCount * sizeof(XML_Content) + + (dtd->contentStringLen * sizeof(XML_Char))); + + ret = (XML_Content *)MALLOC(parser, allocsize); + if (! ret) + return NULL; + + str = (XML_Char *)(&ret[dtd->scaffCount]); + cpos = &ret[1]; + + build_node(parser, 0, ret, &cpos, &str); + return ret; +} + +static ELEMENT_TYPE * +getElementType(XML_Parser parser, const ENCODING *enc, const char *ptr, + const char *end) { + DTD *const dtd = parser->m_dtd; /* save one level of indirection */ + const XML_Char *name = poolStoreString(&dtd->pool, enc, ptr, end); + ELEMENT_TYPE *ret; + + if (! name) + return NULL; + ret = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, + sizeof(ELEMENT_TYPE)); + if (! ret) + return NULL; + if (ret->name != name) + poolDiscard(&dtd->pool); + else { + poolFinish(&dtd->pool); + if (! setElementTypePrefix(parser, ret)) + return NULL; + } + return ret; +} + +static XML_Char * +copyString(const XML_Char *s, const XML_Memory_Handling_Suite *memsuite) { + int charsRequired = 0; + XML_Char *result; + + /* First determine how long the string is */ + while (s[charsRequired] != 0) { + charsRequired++; + } + /* Include the terminator */ + charsRequired++; + + /* Now allocate space for the copy */ + result = memsuite->malloc_fcn(charsRequired * sizeof(XML_Char)); + if (result == NULL) + return NULL; + /* Copy the original into place */ + memcpy(result, s, charsRequired * sizeof(XML_Char)); + return result; +} diff --git a/3rdparty/expat/lib/xmlrole.c b/3rdparty/expat/lib/xmlrole.c new file mode 100644 index 0000000..3b676a4 --- /dev/null +++ b/3rdparty/expat/lib/xmlrole.c @@ -0,0 +1,1249 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include + +#ifdef _WIN32 +# include "winconfig.h" +#else +# ifdef HAVE_EXPAT_CONFIG_H +# include +# endif +#endif /* ndef _WIN32 */ + +#include "expat_external.h" +#include "internal.h" +#include "xmlrole.h" +#include "ascii.h" + +/* Doesn't check: + + that ,| are not mixed in a model group + content of literals + +*/ + +static const char KW_ANY[] = {ASCII_A, ASCII_N, ASCII_Y, '\0'}; +static const char KW_ATTLIST[] + = {ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0'}; +static const char KW_CDATA[] + = {ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0'}; +static const char KW_DOCTYPE[] + = {ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0'}; +static const char KW_ELEMENT[] + = {ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0'}; +static const char KW_EMPTY[] + = {ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0'}; +static const char KW_ENTITIES[] = {ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, + ASCII_I, ASCII_E, ASCII_S, '\0'}; +static const char KW_ENTITY[] + = {ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0'}; +static const char KW_FIXED[] + = {ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0'}; +static const char KW_ID[] = {ASCII_I, ASCII_D, '\0'}; +static const char KW_IDREF[] + = {ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0'}; +static const char KW_IDREFS[] + = {ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0'}; +#ifdef XML_DTD +static const char KW_IGNORE[] + = {ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0'}; +#endif +static const char KW_IMPLIED[] + = {ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0'}; +#ifdef XML_DTD +static const char KW_INCLUDE[] + = {ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0'}; +#endif +static const char KW_NDATA[] + = {ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0'}; +static const char KW_NMTOKEN[] + = {ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0'}; +static const char KW_NMTOKENS[] = {ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, + ASCII_E, ASCII_N, ASCII_S, '\0'}; +static const char KW_NOTATION[] = {ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, + ASCII_I, ASCII_O, ASCII_N, '\0'}; +static const char KW_PCDATA[] + = {ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0'}; +static const char KW_PUBLIC[] + = {ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0'}; +static const char KW_REQUIRED[] = {ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, + ASCII_R, ASCII_E, ASCII_D, '\0'}; +static const char KW_SYSTEM[] + = {ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0'}; + +#ifndef MIN_BYTES_PER_CHAR +# define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar) +#endif + +#ifdef XML_DTD +# define setTopLevel(state) \ + ((state)->handler \ + = ((state)->documentEntity ? internalSubset : externalSubset1)) +#else /* not XML_DTD */ +# define setTopLevel(state) ((state)->handler = internalSubset) +#endif /* not XML_DTD */ + +typedef int PTRCALL PROLOG_HANDLER(PROLOG_STATE *state, int tok, + const char *ptr, const char *end, + const ENCODING *enc); + +static PROLOG_HANDLER prolog0, prolog1, prolog2, doctype0, doctype1, doctype2, + doctype3, doctype4, doctype5, internalSubset, entity0, entity1, entity2, + entity3, entity4, entity5, entity6, entity7, entity8, entity9, entity10, + notation0, notation1, notation2, notation3, notation4, attlist0, attlist1, + attlist2, attlist3, attlist4, attlist5, attlist6, attlist7, attlist8, + attlist9, element0, element1, element2, element3, element4, element5, + element6, element7, +#ifdef XML_DTD + externalSubset0, externalSubset1, condSect0, condSect1, condSect2, +#endif /* XML_DTD */ + declClose, error; + +static int FASTCALL common(PROLOG_STATE *state, int tok); + +static int PTRCALL +prolog0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + switch (tok) { + case XML_TOK_PROLOG_S: + state->handler = prolog1; + return XML_ROLE_NONE; + case XML_TOK_XML_DECL: + state->handler = prolog1; + return XML_ROLE_XML_DECL; + case XML_TOK_PI: + state->handler = prolog1; + return XML_ROLE_PI; + case XML_TOK_COMMENT: + state->handler = prolog1; + return XML_ROLE_COMMENT; + case XML_TOK_BOM: + return XML_ROLE_NONE; + case XML_TOK_DECL_OPEN: + if (! XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, + KW_DOCTYPE)) + break; + state->handler = doctype0; + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_INSTANCE_START: + state->handler = error; + return XML_ROLE_INSTANCE_START; + } + return common(state, tok); +} + +static int PTRCALL +prolog1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_PI: + return XML_ROLE_PI; + case XML_TOK_COMMENT: + return XML_ROLE_COMMENT; + case XML_TOK_BOM: + /* This case can never arise. To reach this role function, the + * parse must have passed through prolog0 and therefore have had + * some form of input, even if only a space. At that point, a + * byte order mark is no longer a valid character (though + * technically it should be interpreted as a non-breaking space), + * so will be rejected by the tokenizing stages. + */ + return XML_ROLE_NONE; /* LCOV_EXCL_LINE */ + case XML_TOK_DECL_OPEN: + if (! XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, + KW_DOCTYPE)) + break; + state->handler = doctype0; + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_INSTANCE_START: + state->handler = error; + return XML_ROLE_INSTANCE_START; + } + return common(state, tok); +} + +static int PTRCALL +prolog2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_PI: + return XML_ROLE_PI; + case XML_TOK_COMMENT: + return XML_ROLE_COMMENT; + case XML_TOK_INSTANCE_START: + state->handler = error; + return XML_ROLE_INSTANCE_START; + } + return common(state, tok); +} + +static int PTRCALL +doctype0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = doctype1; + return XML_ROLE_DOCTYPE_NAME; + } + return common(state, tok); +} + +static int PTRCALL +doctype1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_OPEN_BRACKET: + state->handler = internalSubset; + return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; + case XML_TOK_DECL_CLOSE: + state->handler = prolog2; + return XML_ROLE_DOCTYPE_CLOSE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { + state->handler = doctype3; + return XML_ROLE_DOCTYPE_NONE; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { + state->handler = doctype2; + return XML_ROLE_DOCTYPE_NONE; + } + break; + } + return common(state, tok); +} + +static int PTRCALL +doctype2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_LITERAL: + state->handler = doctype3; + return XML_ROLE_DOCTYPE_PUBLIC_ID; + } + return common(state, tok); +} + +static int PTRCALL +doctype3(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_LITERAL: + state->handler = doctype4; + return XML_ROLE_DOCTYPE_SYSTEM_ID; + } + return common(state, tok); +} + +static int PTRCALL +doctype4(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_OPEN_BRACKET: + state->handler = internalSubset; + return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; + case XML_TOK_DECL_CLOSE: + state->handler = prolog2; + return XML_ROLE_DOCTYPE_CLOSE; + } + return common(state, tok); +} + +static int PTRCALL +doctype5(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_DECL_CLOSE: + state->handler = prolog2; + return XML_ROLE_DOCTYPE_CLOSE; + } + return common(state, tok); +} + +static int PTRCALL +internalSubset(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_DECL_OPEN: + if (XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, + KW_ENTITY)) { + state->handler = entity0; + return XML_ROLE_ENTITY_NONE; + } + if (XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, + KW_ATTLIST)) { + state->handler = attlist0; + return XML_ROLE_ATTLIST_NONE; + } + if (XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, + KW_ELEMENT)) { + state->handler = element0; + return XML_ROLE_ELEMENT_NONE; + } + if (XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, + KW_NOTATION)) { + state->handler = notation0; + return XML_ROLE_NOTATION_NONE; + } + break; + case XML_TOK_PI: + return XML_ROLE_PI; + case XML_TOK_COMMENT: + return XML_ROLE_COMMENT; + case XML_TOK_PARAM_ENTITY_REF: + return XML_ROLE_PARAM_ENTITY_REF; + case XML_TOK_CLOSE_BRACKET: + state->handler = doctype5; + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_NONE: + return XML_ROLE_NONE; + } + return common(state, tok); +} + +#ifdef XML_DTD + +static int PTRCALL +externalSubset0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + state->handler = externalSubset1; + if (tok == XML_TOK_XML_DECL) + return XML_ROLE_TEXT_DECL; + return externalSubset1(state, tok, ptr, end, enc); +} + +static int PTRCALL +externalSubset1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + switch (tok) { + case XML_TOK_COND_SECT_OPEN: + state->handler = condSect0; + return XML_ROLE_NONE; + case XML_TOK_COND_SECT_CLOSE: + if (state->includeLevel == 0) + break; + state->includeLevel -= 1; + return XML_ROLE_NONE; + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_CLOSE_BRACKET: + break; + case XML_TOK_NONE: + if (state->includeLevel) + break; + return XML_ROLE_NONE; + default: + return internalSubset(state, tok, ptr, end, enc); + } + return common(state, tok); +} + +#endif /* XML_DTD */ + +static int PTRCALL +entity0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_PERCENT: + state->handler = entity1; + return XML_ROLE_ENTITY_NONE; + case XML_TOK_NAME: + state->handler = entity2; + return XML_ROLE_GENERAL_ENTITY_NAME; + } + return common(state, tok); +} + +static int PTRCALL +entity1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_NAME: + state->handler = entity7; + return XML_ROLE_PARAM_ENTITY_NAME; + } + return common(state, tok); +} + +static int PTRCALL +entity2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { + state->handler = entity4; + return XML_ROLE_ENTITY_NONE; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { + state->handler = entity3; + return XML_ROLE_ENTITY_NONE; + } + break; + case XML_TOK_LITERAL: + state->handler = declClose; + state->role_none = XML_ROLE_ENTITY_NONE; + return XML_ROLE_ENTITY_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +entity3(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_LITERAL: + state->handler = entity4; + return XML_ROLE_ENTITY_PUBLIC_ID; + } + return common(state, tok); +} + +static int PTRCALL +entity4(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_LITERAL: + state->handler = entity5; + return XML_ROLE_ENTITY_SYSTEM_ID; + } + return common(state, tok); +} + +static int PTRCALL +entity5(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_DECL_CLOSE: + setTopLevel(state); + return XML_ROLE_ENTITY_COMPLETE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_NDATA)) { + state->handler = entity6; + return XML_ROLE_ENTITY_NONE; + } + break; + } + return common(state, tok); +} + +static int PTRCALL +entity6(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_NAME: + state->handler = declClose; + state->role_none = XML_ROLE_ENTITY_NONE; + return XML_ROLE_ENTITY_NOTATION_NAME; + } + return common(state, tok); +} + +static int PTRCALL +entity7(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { + state->handler = entity9; + return XML_ROLE_ENTITY_NONE; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { + state->handler = entity8; + return XML_ROLE_ENTITY_NONE; + } + break; + case XML_TOK_LITERAL: + state->handler = declClose; + state->role_none = XML_ROLE_ENTITY_NONE; + return XML_ROLE_ENTITY_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +entity8(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_LITERAL: + state->handler = entity9; + return XML_ROLE_ENTITY_PUBLIC_ID; + } + return common(state, tok); +} + +static int PTRCALL +entity9(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_LITERAL: + state->handler = entity10; + return XML_ROLE_ENTITY_SYSTEM_ID; + } + return common(state, tok); +} + +static int PTRCALL +entity10(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_DECL_CLOSE: + setTopLevel(state); + return XML_ROLE_ENTITY_COMPLETE; + } + return common(state, tok); +} + +static int PTRCALL +notation0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NOTATION_NONE; + case XML_TOK_NAME: + state->handler = notation1; + return XML_ROLE_NOTATION_NAME; + } + return common(state, tok); +} + +static int PTRCALL +notation1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NOTATION_NONE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { + state->handler = notation3; + return XML_ROLE_NOTATION_NONE; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { + state->handler = notation2; + return XML_ROLE_NOTATION_NONE; + } + break; + } + return common(state, tok); +} + +static int PTRCALL +notation2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NOTATION_NONE; + case XML_TOK_LITERAL: + state->handler = notation4; + return XML_ROLE_NOTATION_PUBLIC_ID; + } + return common(state, tok); +} + +static int PTRCALL +notation3(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NOTATION_NONE; + case XML_TOK_LITERAL: + state->handler = declClose; + state->role_none = XML_ROLE_NOTATION_NONE; + return XML_ROLE_NOTATION_SYSTEM_ID; + } + return common(state, tok); +} + +static int PTRCALL +notation4(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NOTATION_NONE; + case XML_TOK_LITERAL: + state->handler = declClose; + state->role_none = XML_ROLE_NOTATION_NONE; + return XML_ROLE_NOTATION_SYSTEM_ID; + case XML_TOK_DECL_CLOSE: + setTopLevel(state); + return XML_ROLE_NOTATION_NO_SYSTEM_ID; + } + return common(state, tok); +} + +static int PTRCALL +attlist0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = attlist1; + return XML_ROLE_ATTLIST_ELEMENT_NAME; + } + return common(state, tok); +} + +static int PTRCALL +attlist1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_DECL_CLOSE: + setTopLevel(state); + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = attlist2; + return XML_ROLE_ATTRIBUTE_NAME; + } + return common(state, tok); +} + +static int PTRCALL +attlist2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_NAME: { + static const char *const types[] = { + KW_CDATA, KW_ID, KW_IDREF, KW_IDREFS, + KW_ENTITY, KW_ENTITIES, KW_NMTOKEN, KW_NMTOKENS, + }; + int i; + for (i = 0; i < (int)(sizeof(types) / sizeof(types[0])); i++) + if (XmlNameMatchesAscii(enc, ptr, end, types[i])) { + state->handler = attlist8; + return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i; + } + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) { + state->handler = attlist5; + return XML_ROLE_ATTLIST_NONE; + } + break; + case XML_TOK_OPEN_PAREN: + state->handler = attlist3; + return XML_ROLE_ATTLIST_NONE; + } + return common(state, tok); +} + +static int PTRCALL +attlist3(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_NMTOKEN: + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = attlist4; + return XML_ROLE_ATTRIBUTE_ENUM_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +attlist4(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_CLOSE_PAREN: + state->handler = attlist8; + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_OR: + state->handler = attlist3; + return XML_ROLE_ATTLIST_NONE; + } + return common(state, tok); +} + +static int PTRCALL +attlist5(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_OPEN_PAREN: + state->handler = attlist6; + return XML_ROLE_ATTLIST_NONE; + } + return common(state, tok); +} + +static int PTRCALL +attlist6(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_NAME: + state->handler = attlist7; + return XML_ROLE_ATTRIBUTE_NOTATION_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +attlist7(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_CLOSE_PAREN: + state->handler = attlist8; + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_OR: + state->handler = attlist6; + return XML_ROLE_ATTLIST_NONE; + } + return common(state, tok); +} + +/* default value */ +static int PTRCALL +attlist8(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_POUND_NAME: + if (XmlNameMatchesAscii(enc, ptr + MIN_BYTES_PER_CHAR(enc), end, + KW_IMPLIED)) { + state->handler = attlist1; + return XML_ROLE_IMPLIED_ATTRIBUTE_VALUE; + } + if (XmlNameMatchesAscii(enc, ptr + MIN_BYTES_PER_CHAR(enc), end, + KW_REQUIRED)) { + state->handler = attlist1; + return XML_ROLE_REQUIRED_ATTRIBUTE_VALUE; + } + if (XmlNameMatchesAscii(enc, ptr + MIN_BYTES_PER_CHAR(enc), end, + KW_FIXED)) { + state->handler = attlist9; + return XML_ROLE_ATTLIST_NONE; + } + break; + case XML_TOK_LITERAL: + state->handler = attlist1; + return XML_ROLE_DEFAULT_ATTRIBUTE_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +attlist9(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_LITERAL: + state->handler = attlist1; + return XML_ROLE_FIXED_ATTRIBUTE_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +element0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = element1; + return XML_ROLE_ELEMENT_NAME; + } + return common(state, tok); +} + +static int PTRCALL +element1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + return XML_ROLE_CONTENT_EMPTY; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + return XML_ROLE_CONTENT_ANY; + } + break; + case XML_TOK_OPEN_PAREN: + state->handler = element2; + state->level = 1; + return XML_ROLE_GROUP_OPEN; + } + return common(state, tok); +} + +static int PTRCALL +element2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_POUND_NAME: + if (XmlNameMatchesAscii(enc, ptr + MIN_BYTES_PER_CHAR(enc), end, + KW_PCDATA)) { + state->handler = element3; + return XML_ROLE_CONTENT_PCDATA; + } + break; + case XML_TOK_OPEN_PAREN: + state->level = 2; + state->handler = element6; + return XML_ROLE_GROUP_OPEN; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT; + case XML_TOK_NAME_QUESTION: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_OPT; + case XML_TOK_NAME_ASTERISK: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_REP; + case XML_TOK_NAME_PLUS: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_PLUS; + } + return common(state, tok); +} + +static int PTRCALL +element3(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_CLOSE_PAREN: + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + return XML_ROLE_GROUP_CLOSE; + case XML_TOK_CLOSE_PAREN_ASTERISK: + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + return XML_ROLE_GROUP_CLOSE_REP; + case XML_TOK_OR: + state->handler = element4; + return XML_ROLE_ELEMENT_NONE; + } + return common(state, tok); +} + +static int PTRCALL +element4(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = element5; + return XML_ROLE_CONTENT_ELEMENT; + } + return common(state, tok); +} + +static int PTRCALL +element5(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_CLOSE_PAREN_ASTERISK: + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + return XML_ROLE_GROUP_CLOSE_REP; + case XML_TOK_OR: + state->handler = element4; + return XML_ROLE_ELEMENT_NONE; + } + return common(state, tok); +} + +static int PTRCALL +element6(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_OPEN_PAREN: + state->level += 1; + return XML_ROLE_GROUP_OPEN; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT; + case XML_TOK_NAME_QUESTION: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_OPT; + case XML_TOK_NAME_ASTERISK: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_REP; + case XML_TOK_NAME_PLUS: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_PLUS; + } + return common(state, tok); +} + +static int PTRCALL +element7(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_CLOSE_PAREN: + state->level -= 1; + if (state->level == 0) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + } + return XML_ROLE_GROUP_CLOSE; + case XML_TOK_CLOSE_PAREN_ASTERISK: + state->level -= 1; + if (state->level == 0) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + } + return XML_ROLE_GROUP_CLOSE_REP; + case XML_TOK_CLOSE_PAREN_QUESTION: + state->level -= 1; + if (state->level == 0) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + } + return XML_ROLE_GROUP_CLOSE_OPT; + case XML_TOK_CLOSE_PAREN_PLUS: + state->level -= 1; + if (state->level == 0) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + } + return XML_ROLE_GROUP_CLOSE_PLUS; + case XML_TOK_COMMA: + state->handler = element6; + return XML_ROLE_GROUP_SEQUENCE; + case XML_TOK_OR: + state->handler = element6; + return XML_ROLE_GROUP_CHOICE; + } + return common(state, tok); +} + +#ifdef XML_DTD + +static int PTRCALL +condSect0(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_INCLUDE)) { + state->handler = condSect1; + return XML_ROLE_NONE; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_IGNORE)) { + state->handler = condSect2; + return XML_ROLE_NONE; + } + break; + } + return common(state, tok); +} + +static int PTRCALL +condSect1(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_OPEN_BRACKET: + state->handler = externalSubset1; + state->includeLevel += 1; + return XML_ROLE_NONE; + } + return common(state, tok); +} + +static int PTRCALL +condSect2(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_OPEN_BRACKET: + state->handler = externalSubset1; + return XML_ROLE_IGNORE_SECT; + } + return common(state, tok); +} + +#endif /* XML_DTD */ + +static int PTRCALL +declClose(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + switch (tok) { + case XML_TOK_PROLOG_S: + return state->role_none; + case XML_TOK_DECL_CLOSE: + setTopLevel(state); + return state->role_none; + } + return common(state, tok); +} + +/* This function will only be invoked if the internal logic of the + * parser has broken down. It is used in two cases: + * + * 1: When the XML prolog has been finished. At this point the + * processor (the parser level above these role handlers) should + * switch from prologProcessor to contentProcessor and reinitialise + * the handler function. + * + * 2: When an error has been detected (via common() below). At this + * point again the processor should be switched to errorProcessor, + * which will never call a handler. + * + * The result of this is that error() can only be called if the + * processor switch failed to happen, which is an internal error and + * therefore we shouldn't be able to provoke it simply by using the + * library. It is a necessary backstop, however, so we merely exclude + * it from the coverage statistics. + * + * LCOV_EXCL_START + */ +static int PTRCALL +error(PROLOG_STATE *state, int tok, const char *ptr, const char *end, + const ENCODING *enc) { + UNUSED_P(state); + UNUSED_P(tok); + UNUSED_P(ptr); + UNUSED_P(end); + UNUSED_P(enc); + return XML_ROLE_NONE; +} +/* LCOV_EXCL_STOP */ + +static int FASTCALL +common(PROLOG_STATE *state, int tok) { +#ifdef XML_DTD + if (! state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF) + return XML_ROLE_INNER_PARAM_ENTITY_REF; +#else + UNUSED_P(tok); +#endif + state->handler = error; + return XML_ROLE_ERROR; +} + +void +XmlPrologStateInit(PROLOG_STATE *state) { + state->handler = prolog0; +#ifdef XML_DTD + state->documentEntity = 1; + state->includeLevel = 0; + state->inEntityValue = 0; +#endif /* XML_DTD */ +} + +#ifdef XML_DTD + +void +XmlPrologStateInitExternalEntity(PROLOG_STATE *state) { + state->handler = externalSubset0; + state->documentEntity = 0; + state->includeLevel = 0; +} + +#endif /* XML_DTD */ diff --git a/3rdparty/expat/lib/xmlrole.h b/3rdparty/expat/lib/xmlrole.h new file mode 100644 index 0000000..036aba6 --- /dev/null +++ b/3rdparty/expat/lib/xmlrole.h @@ -0,0 +1,139 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef XmlRole_INCLUDED +#define XmlRole_INCLUDED 1 + +#ifdef __VMS +/* 0 1 2 3 0 1 2 3 + 1234567890123456789012345678901 1234567890123456789012345678901 */ +# define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt +#endif + +#include "xmltok.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum { + XML_ROLE_ERROR = -1, + XML_ROLE_NONE = 0, + XML_ROLE_XML_DECL, + XML_ROLE_INSTANCE_START, + XML_ROLE_DOCTYPE_NONE, + XML_ROLE_DOCTYPE_NAME, + XML_ROLE_DOCTYPE_SYSTEM_ID, + XML_ROLE_DOCTYPE_PUBLIC_ID, + XML_ROLE_DOCTYPE_INTERNAL_SUBSET, + XML_ROLE_DOCTYPE_CLOSE, + XML_ROLE_GENERAL_ENTITY_NAME, + XML_ROLE_PARAM_ENTITY_NAME, + XML_ROLE_ENTITY_NONE, + XML_ROLE_ENTITY_VALUE, + XML_ROLE_ENTITY_SYSTEM_ID, + XML_ROLE_ENTITY_PUBLIC_ID, + XML_ROLE_ENTITY_COMPLETE, + XML_ROLE_ENTITY_NOTATION_NAME, + XML_ROLE_NOTATION_NONE, + XML_ROLE_NOTATION_NAME, + XML_ROLE_NOTATION_SYSTEM_ID, + XML_ROLE_NOTATION_NO_SYSTEM_ID, + XML_ROLE_NOTATION_PUBLIC_ID, + XML_ROLE_ATTRIBUTE_NAME, + XML_ROLE_ATTRIBUTE_TYPE_CDATA, + XML_ROLE_ATTRIBUTE_TYPE_ID, + XML_ROLE_ATTRIBUTE_TYPE_IDREF, + XML_ROLE_ATTRIBUTE_TYPE_IDREFS, + XML_ROLE_ATTRIBUTE_TYPE_ENTITY, + XML_ROLE_ATTRIBUTE_TYPE_ENTITIES, + XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN, + XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS, + XML_ROLE_ATTRIBUTE_ENUM_VALUE, + XML_ROLE_ATTRIBUTE_NOTATION_VALUE, + XML_ROLE_ATTLIST_NONE, + XML_ROLE_ATTLIST_ELEMENT_NAME, + XML_ROLE_IMPLIED_ATTRIBUTE_VALUE, + XML_ROLE_REQUIRED_ATTRIBUTE_VALUE, + XML_ROLE_DEFAULT_ATTRIBUTE_VALUE, + XML_ROLE_FIXED_ATTRIBUTE_VALUE, + XML_ROLE_ELEMENT_NONE, + XML_ROLE_ELEMENT_NAME, + XML_ROLE_CONTENT_ANY, + XML_ROLE_CONTENT_EMPTY, + XML_ROLE_CONTENT_PCDATA, + XML_ROLE_GROUP_OPEN, + XML_ROLE_GROUP_CLOSE, + XML_ROLE_GROUP_CLOSE_REP, + XML_ROLE_GROUP_CLOSE_OPT, + XML_ROLE_GROUP_CLOSE_PLUS, + XML_ROLE_GROUP_CHOICE, + XML_ROLE_GROUP_SEQUENCE, + XML_ROLE_CONTENT_ELEMENT, + XML_ROLE_CONTENT_ELEMENT_REP, + XML_ROLE_CONTENT_ELEMENT_OPT, + XML_ROLE_CONTENT_ELEMENT_PLUS, + XML_ROLE_PI, + XML_ROLE_COMMENT, +#ifdef XML_DTD + XML_ROLE_TEXT_DECL, + XML_ROLE_IGNORE_SECT, + XML_ROLE_INNER_PARAM_ENTITY_REF, +#endif /* XML_DTD */ + XML_ROLE_PARAM_ENTITY_REF +}; + +typedef struct prolog_state { + int(PTRCALL *handler)(struct prolog_state *state, int tok, const char *ptr, + const char *end, const ENCODING *enc); + unsigned level; + int role_none; +#ifdef XML_DTD + unsigned includeLevel; + int documentEntity; + int inEntityValue; +#endif /* XML_DTD */ +} PROLOG_STATE; + +void XmlPrologStateInit(PROLOG_STATE *); +#ifdef XML_DTD +void XmlPrologStateInitExternalEntity(PROLOG_STATE *); +#endif /* XML_DTD */ + +#define XmlTokenRole(state, tok, ptr, end, enc) \ + (((state)->handler)(state, tok, ptr, end, enc)) + +#ifdef __cplusplus +} +#endif + +#endif /* not XmlRole_INCLUDED */ diff --git a/3rdparty/expat/lib/xmltok.c b/3rdparty/expat/lib/xmltok.c new file mode 100644 index 0000000..c4f9897 --- /dev/null +++ b/3rdparty/expat/lib/xmltok.c @@ -0,0 +1,1672 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include +#include /* memcpy */ + +#if defined(_MSC_VER) && (_MSC_VER <= 1700) +/* for vs2012/11.0/1700 and earlier Visual Studio compilers */ +# define bool int +# define false 0 +# define true 1 +#else +# include +#endif + +#ifdef _WIN32 +# include "winconfig.h" +#else +# ifdef HAVE_EXPAT_CONFIG_H +# include +# endif +#endif /* ndef _WIN32 */ + +#include "expat_external.h" +#include "internal.h" +#include "xmltok.h" +#include "nametab.h" + +#ifdef XML_DTD +# define IGNORE_SECTION_TOK_VTABLE , PREFIX(ignoreSectionTok) +#else +# define IGNORE_SECTION_TOK_VTABLE /* as nothing */ +#endif + +#define VTABLE1 \ + {PREFIX(prologTok), PREFIX(contentTok), \ + PREFIX(cdataSectionTok) IGNORE_SECTION_TOK_VTABLE}, \ + {PREFIX(attributeValueTok), PREFIX(entityValueTok)}, \ + PREFIX(nameMatchesAscii), PREFIX(nameLength), PREFIX(skipS), \ + PREFIX(getAtts), PREFIX(charRefNumber), PREFIX(predefinedEntityName), \ + PREFIX(updatePosition), PREFIX(isPublicId) + +#define VTABLE VTABLE1, PREFIX(toUtf8), PREFIX(toUtf16) + +#define UCS2_GET_NAMING(pages, hi, lo) \ + (namingBitmap[(pages[hi] << 3) + ((lo) >> 5)] & (1u << ((lo)&0x1F))) + +/* A 2 byte UTF-8 representation splits the characters 11 bits between + the bottom 5 and 6 bits of the bytes. We need 8 bits to index into + pages, 3 bits to add to that index and 5 bits to generate the mask. +*/ +#define UTF8_GET_NAMING2(pages, byte) \ + (namingBitmap[((pages)[(((byte)[0]) >> 2) & 7] << 3) \ + + ((((byte)[0]) & 3) << 1) + ((((byte)[1]) >> 5) & 1)] \ + & (1u << (((byte)[1]) & 0x1F))) + +/* A 3 byte UTF-8 representation splits the characters 16 bits between + the bottom 4, 6 and 6 bits of the bytes. We need 8 bits to index + into pages, 3 bits to add to that index and 5 bits to generate the + mask. +*/ +#define UTF8_GET_NAMING3(pages, byte) \ + (namingBitmap \ + [((pages)[((((byte)[0]) & 0xF) << 4) + ((((byte)[1]) >> 2) & 0xF)] \ + << 3) \ + + ((((byte)[1]) & 3) << 1) + ((((byte)[2]) >> 5) & 1)] \ + & (1u << (((byte)[2]) & 0x1F))) + +#define UTF8_GET_NAMING(pages, p, n) \ + ((n) == 2 \ + ? UTF8_GET_NAMING2(pages, (const unsigned char *)(p)) \ + : ((n) == 3 ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) : 0)) + +/* Detection of invalid UTF-8 sequences is based on Table 3.1B + of Unicode 3.2: http://www.unicode.org/unicode/reports/tr28/ + with the additional restriction of not allowing the Unicode + code points 0xFFFF and 0xFFFE (sequences EF,BF,BF and EF,BF,BE). + Implementation details: + (A & 0x80) == 0 means A < 0x80 + and + (A & 0xC0) == 0xC0 means A > 0xBF +*/ + +#define UTF8_INVALID2(p) \ + ((*p) < 0xC2 || ((p)[1] & 0x80) == 0 || ((p)[1] & 0xC0) == 0xC0) + +#define UTF8_INVALID3(p) \ + (((p)[2] & 0x80) == 0 \ + || ((*p) == 0xEF && (p)[1] == 0xBF ? (p)[2] > 0xBD \ + : ((p)[2] & 0xC0) == 0xC0) \ + || ((*p) == 0xE0 \ + ? (p)[1] < 0xA0 || ((p)[1] & 0xC0) == 0xC0 \ + : ((p)[1] & 0x80) == 0 \ + || ((*p) == 0xED ? (p)[1] > 0x9F : ((p)[1] & 0xC0) == 0xC0))) + +#define UTF8_INVALID4(p) \ + (((p)[3] & 0x80) == 0 || ((p)[3] & 0xC0) == 0xC0 || ((p)[2] & 0x80) == 0 \ + || ((p)[2] & 0xC0) == 0xC0 \ + || ((*p) == 0xF0 \ + ? (p)[1] < 0x90 || ((p)[1] & 0xC0) == 0xC0 \ + : ((p)[1] & 0x80) == 0 \ + || ((*p) == 0xF4 ? (p)[1] > 0x8F : ((p)[1] & 0xC0) == 0xC0))) + +static int PTRFASTCALL +isNever(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + UNUSED_P(p); + return 0; +} + +static int PTRFASTCALL +utf8_isName2(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return UTF8_GET_NAMING2(namePages, (const unsigned char *)p); +} + +static int PTRFASTCALL +utf8_isName3(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return UTF8_GET_NAMING3(namePages, (const unsigned char *)p); +} + +#define utf8_isName4 isNever + +static int PTRFASTCALL +utf8_isNmstrt2(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return UTF8_GET_NAMING2(nmstrtPages, (const unsigned char *)p); +} + +static int PTRFASTCALL +utf8_isNmstrt3(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return UTF8_GET_NAMING3(nmstrtPages, (const unsigned char *)p); +} + +#define utf8_isNmstrt4 isNever + +static int PTRFASTCALL +utf8_isInvalid2(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return UTF8_INVALID2((const unsigned char *)p); +} + +static int PTRFASTCALL +utf8_isInvalid3(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return UTF8_INVALID3((const unsigned char *)p); +} + +static int PTRFASTCALL +utf8_isInvalid4(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return UTF8_INVALID4((const unsigned char *)p); +} + +struct normal_encoding { + ENCODING enc; + unsigned char type[256]; +#ifdef XML_MIN_SIZE + int(PTRFASTCALL *byteType)(const ENCODING *, const char *); + int(PTRFASTCALL *isNameMin)(const ENCODING *, const char *); + int(PTRFASTCALL *isNmstrtMin)(const ENCODING *, const char *); + int(PTRFASTCALL *byteToAscii)(const ENCODING *, const char *); + int(PTRCALL *charMatches)(const ENCODING *, const char *, int); +#endif /* XML_MIN_SIZE */ + int(PTRFASTCALL *isName2)(const ENCODING *, const char *); + int(PTRFASTCALL *isName3)(const ENCODING *, const char *); + int(PTRFASTCALL *isName4)(const ENCODING *, const char *); + int(PTRFASTCALL *isNmstrt2)(const ENCODING *, const char *); + int(PTRFASTCALL *isNmstrt3)(const ENCODING *, const char *); + int(PTRFASTCALL *isNmstrt4)(const ENCODING *, const char *); + int(PTRFASTCALL *isInvalid2)(const ENCODING *, const char *); + int(PTRFASTCALL *isInvalid3)(const ENCODING *, const char *); + int(PTRFASTCALL *isInvalid4)(const ENCODING *, const char *); +}; + +#define AS_NORMAL_ENCODING(enc) ((const struct normal_encoding *)(enc)) + +#ifdef XML_MIN_SIZE + +# define STANDARD_VTABLE(E) \ + E##byteType, E##isNameMin, E##isNmstrtMin, E##byteToAscii, E##charMatches, + +#else + +# define STANDARD_VTABLE(E) /* as nothing */ + +#endif + +#define NORMAL_VTABLE(E) \ + E##isName2, E##isName3, E##isName4, E##isNmstrt2, E##isNmstrt3, \ + E##isNmstrt4, E##isInvalid2, E##isInvalid3, E##isInvalid4 + +#define NULL_VTABLE \ + /* isName2 */ NULL, /* isName3 */ NULL, /* isName4 */ NULL, \ + /* isNmstrt2 */ NULL, /* isNmstrt3 */ NULL, /* isNmstrt4 */ NULL, \ + /* isInvalid2 */ NULL, /* isInvalid3 */ NULL, /* isInvalid4 */ NULL + +static int FASTCALL checkCharRefNumber(int); + +#include "xmltok_impl.h" +#include "ascii.h" + +#ifdef XML_MIN_SIZE +# define sb_isNameMin isNever +# define sb_isNmstrtMin isNever +#endif + +#ifdef XML_MIN_SIZE +# define MINBPC(enc) ((enc)->minBytesPerChar) +#else +/* minimum bytes per character */ +# define MINBPC(enc) 1 +#endif + +#define SB_BYTE_TYPE(enc, p) \ + (((struct normal_encoding *)(enc))->type[(unsigned char)*(p)]) + +#ifdef XML_MIN_SIZE +static int PTRFASTCALL +sb_byteType(const ENCODING *enc, const char *p) { + return SB_BYTE_TYPE(enc, p); +} +# define BYTE_TYPE(enc, p) (AS_NORMAL_ENCODING(enc)->byteType(enc, p)) +#else +# define BYTE_TYPE(enc, p) SB_BYTE_TYPE(enc, p) +#endif + +#ifdef XML_MIN_SIZE +# define BYTE_TO_ASCII(enc, p) (AS_NORMAL_ENCODING(enc)->byteToAscii(enc, p)) +static int PTRFASTCALL +sb_byteToAscii(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return *p; +} +#else +# define BYTE_TO_ASCII(enc, p) (*(p)) +#endif + +#define IS_NAME_CHAR(enc, p, n) (AS_NORMAL_ENCODING(enc)->isName##n(enc, p)) +#define IS_NMSTRT_CHAR(enc, p, n) (AS_NORMAL_ENCODING(enc)->isNmstrt##n(enc, p)) +#define IS_INVALID_CHAR(enc, p, n) \ + (AS_NORMAL_ENCODING(enc)->isInvalid##n(enc, p)) + +#ifdef XML_MIN_SIZE +# define IS_NAME_CHAR_MINBPC(enc, p) \ + (AS_NORMAL_ENCODING(enc)->isNameMin(enc, p)) +# define IS_NMSTRT_CHAR_MINBPC(enc, p) \ + (AS_NORMAL_ENCODING(enc)->isNmstrtMin(enc, p)) +#else +# define IS_NAME_CHAR_MINBPC(enc, p) (0) +# define IS_NMSTRT_CHAR_MINBPC(enc, p) (0) +#endif + +#ifdef XML_MIN_SIZE +# define CHAR_MATCHES(enc, p, c) \ + (AS_NORMAL_ENCODING(enc)->charMatches(enc, p, c)) +static int PTRCALL +sb_charMatches(const ENCODING *enc, const char *p, int c) { + UNUSED_P(enc); + return *p == c; +} +#else +/* c is an ASCII character */ +# define CHAR_MATCHES(enc, p, c) (*(p) == c) +#endif + +#define PREFIX(ident) normal_##ident +#define XML_TOK_IMPL_C +#include "xmltok_impl.c" +#undef XML_TOK_IMPL_C + +#undef MINBPC +#undef BYTE_TYPE +#undef BYTE_TO_ASCII +#undef CHAR_MATCHES +#undef IS_NAME_CHAR +#undef IS_NAME_CHAR_MINBPC +#undef IS_NMSTRT_CHAR +#undef IS_NMSTRT_CHAR_MINBPC +#undef IS_INVALID_CHAR + +enum { /* UTF8_cvalN is value of masked first byte of N byte sequence */ + UTF8_cval1 = 0x00, + UTF8_cval2 = 0xc0, + UTF8_cval3 = 0xe0, + UTF8_cval4 = 0xf0 +}; + +void +_INTERNAL_trim_to_complete_utf8_characters(const char *from, + const char **fromLimRef) { + const char *fromLim = *fromLimRef; + size_t walked = 0; + for (; fromLim > from; fromLim--, walked++) { + const unsigned char prev = (unsigned char)fromLim[-1]; + if ((prev & 0xf8u) + == 0xf0u) { /* 4-byte character, lead by 0b11110xxx byte */ + if (walked + 1 >= 4) { + fromLim += 4 - 1; + break; + } else { + walked = 0; + } + } else if ((prev & 0xf0u) + == 0xe0u) { /* 3-byte character, lead by 0b1110xxxx byte */ + if (walked + 1 >= 3) { + fromLim += 3 - 1; + break; + } else { + walked = 0; + } + } else if ((prev & 0xe0u) + == 0xc0u) { /* 2-byte character, lead by 0b110xxxxx byte */ + if (walked + 1 >= 2) { + fromLim += 2 - 1; + break; + } else { + walked = 0; + } + } else if ((prev & 0x80u) + == 0x00u) { /* 1-byte character, matching 0b0xxxxxxx */ + break; + } + } + *fromLimRef = fromLim; +} + +static enum XML_Convert_Result PTRCALL +utf8_toUtf8(const ENCODING *enc, const char **fromP, const char *fromLim, + char **toP, const char *toLim) { + bool input_incomplete = false; + bool output_exhausted = false; + + /* Avoid copying partial characters (due to limited space). */ + const ptrdiff_t bytesAvailable = fromLim - *fromP; + const ptrdiff_t bytesStorable = toLim - *toP; + UNUSED_P(enc); + if (bytesAvailable > bytesStorable) { + fromLim = *fromP + bytesStorable; + output_exhausted = true; + } + + /* Avoid copying partial characters (from incomplete input). */ + { + const char *const fromLimBefore = fromLim; + _INTERNAL_trim_to_complete_utf8_characters(*fromP, &fromLim); + if (fromLim < fromLimBefore) { + input_incomplete = true; + } + } + + { + const ptrdiff_t bytesToCopy = fromLim - *fromP; + memcpy(*toP, *fromP, bytesToCopy); + *fromP += bytesToCopy; + *toP += bytesToCopy; + } + + if (output_exhausted) /* needs to go first */ + return XML_CONVERT_OUTPUT_EXHAUSTED; + else if (input_incomplete) + return XML_CONVERT_INPUT_INCOMPLETE; + else + return XML_CONVERT_COMPLETED; +} + +static enum XML_Convert_Result PTRCALL +utf8_toUtf16(const ENCODING *enc, const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) { + enum XML_Convert_Result res = XML_CONVERT_COMPLETED; + unsigned short *to = *toP; + const char *from = *fromP; + while (from < fromLim && to < toLim) { + switch (((struct normal_encoding *)enc)->type[(unsigned char)*from]) { + case BT_LEAD2: + if (fromLim - from < 2) { + res = XML_CONVERT_INPUT_INCOMPLETE; + goto after; + } + *to++ = (unsigned short)(((from[0] & 0x1f) << 6) | (from[1] & 0x3f)); + from += 2; + break; + case BT_LEAD3: + if (fromLim - from < 3) { + res = XML_CONVERT_INPUT_INCOMPLETE; + goto after; + } + *to++ = (unsigned short)(((from[0] & 0xf) << 12) | ((from[1] & 0x3f) << 6) + | (from[2] & 0x3f)); + from += 3; + break; + case BT_LEAD4: { + unsigned long n; + if (toLim - to < 2) { + res = XML_CONVERT_OUTPUT_EXHAUSTED; + goto after; + } + if (fromLim - from < 4) { + res = XML_CONVERT_INPUT_INCOMPLETE; + goto after; + } + n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12) + | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f); + n -= 0x10000; + to[0] = (unsigned short)((n >> 10) | 0xD800); + to[1] = (unsigned short)((n & 0x3FF) | 0xDC00); + to += 2; + from += 4; + } break; + default: + *to++ = *from++; + break; + } + } + if (from < fromLim) + res = XML_CONVERT_OUTPUT_EXHAUSTED; +after: + *fromP = from; + *toP = to; + return res; +} + +#ifdef XML_NS +static const struct normal_encoding utf8_encoding_ns + = {{VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0}, + { +# include "asciitab.h" +# include "utf8tab.h" + }, + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)}; +#endif + +static const struct normal_encoding utf8_encoding + = {{VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0}, + { +#define BT_COLON BT_NMSTRT +#include "asciitab.h" +#undef BT_COLON +#include "utf8tab.h" + }, + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)}; + +#ifdef XML_NS + +static const struct normal_encoding internal_utf8_encoding_ns + = {{VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0}, + { +# include "iasciitab.h" +# include "utf8tab.h" + }, + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)}; + +#endif + +static const struct normal_encoding internal_utf8_encoding + = {{VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0}, + { +#define BT_COLON BT_NMSTRT +#include "iasciitab.h" +#undef BT_COLON +#include "utf8tab.h" + }, + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)}; + +static enum XML_Convert_Result PTRCALL +latin1_toUtf8(const ENCODING *enc, const char **fromP, const char *fromLim, + char **toP, const char *toLim) { + UNUSED_P(enc); + for (;;) { + unsigned char c; + if (*fromP == fromLim) + return XML_CONVERT_COMPLETED; + c = (unsigned char)**fromP; + if (c & 0x80) { + if (toLim - *toP < 2) + return XML_CONVERT_OUTPUT_EXHAUSTED; + *(*toP)++ = (char)((c >> 6) | UTF8_cval2); + *(*toP)++ = (char)((c & 0x3f) | 0x80); + (*fromP)++; + } else { + if (*toP == toLim) + return XML_CONVERT_OUTPUT_EXHAUSTED; + *(*toP)++ = *(*fromP)++; + } + } +} + +static enum XML_Convert_Result PTRCALL +latin1_toUtf16(const ENCODING *enc, const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) { + UNUSED_P(enc); + while (*fromP < fromLim && *toP < toLim) + *(*toP)++ = (unsigned char)*(*fromP)++; + + if ((*toP == toLim) && (*fromP < fromLim)) + return XML_CONVERT_OUTPUT_EXHAUSTED; + else + return XML_CONVERT_COMPLETED; +} + +#ifdef XML_NS + +static const struct normal_encoding latin1_encoding_ns + = {{VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0}, + { +# include "asciitab.h" +# include "latin1tab.h" + }, + STANDARD_VTABLE(sb_) NULL_VTABLE}; + +#endif + +static const struct normal_encoding latin1_encoding + = {{VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0}, + { +#define BT_COLON BT_NMSTRT +#include "asciitab.h" +#undef BT_COLON +#include "latin1tab.h" + }, + STANDARD_VTABLE(sb_) NULL_VTABLE}; + +static enum XML_Convert_Result PTRCALL +ascii_toUtf8(const ENCODING *enc, const char **fromP, const char *fromLim, + char **toP, const char *toLim) { + UNUSED_P(enc); + while (*fromP < fromLim && *toP < toLim) + *(*toP)++ = *(*fromP)++; + + if ((*toP == toLim) && (*fromP < fromLim)) + return XML_CONVERT_OUTPUT_EXHAUSTED; + else + return XML_CONVERT_COMPLETED; +} + +#ifdef XML_NS + +static const struct normal_encoding ascii_encoding_ns + = {{VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0}, + { +# include "asciitab.h" + /* BT_NONXML == 0 */ + }, + STANDARD_VTABLE(sb_) NULL_VTABLE}; + +#endif + +static const struct normal_encoding ascii_encoding + = {{VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0}, + { +#define BT_COLON BT_NMSTRT +#include "asciitab.h" +#undef BT_COLON + /* BT_NONXML == 0 */ + }, + STANDARD_VTABLE(sb_) NULL_VTABLE}; + +static int PTRFASTCALL +unicode_byte_type(char hi, char lo) { + switch ((unsigned char)hi) { + /* 0xD800-0xDBFF first 16-bit code unit or high surrogate (W1) */ + case 0xD8: + case 0xD9: + case 0xDA: + case 0xDB: + return BT_LEAD4; + /* 0xDC00-0xDFFF second 16-bit code unit or low surrogate (W2) */ + case 0xDC: + case 0xDD: + case 0xDE: + case 0xDF: + return BT_TRAIL; + case 0xFF: + switch ((unsigned char)lo) { + case 0xFF: /* noncharacter-FFFF */ + case 0xFE: /* noncharacter-FFFE */ + return BT_NONXML; + } + break; + } + return BT_NONASCII; +} + +#define DEFINE_UTF16_TO_UTF8(E) \ + static enum XML_Convert_Result PTRCALL E##toUtf8( \ + const ENCODING *enc, const char **fromP, const char *fromLim, \ + char **toP, const char *toLim) { \ + const char *from = *fromP; \ + UNUSED_P(enc); \ + fromLim = from + (((fromLim - from) >> 1) << 1); /* shrink to even */ \ + for (; from < fromLim; from += 2) { \ + int plane; \ + unsigned char lo2; \ + unsigned char lo = GET_LO(from); \ + unsigned char hi = GET_HI(from); \ + switch (hi) { \ + case 0: \ + if (lo < 0x80) { \ + if (*toP == toLim) { \ + *fromP = from; \ + return XML_CONVERT_OUTPUT_EXHAUSTED; \ + } \ + *(*toP)++ = lo; \ + break; \ + } \ + /* fall through */ \ + case 0x1: \ + case 0x2: \ + case 0x3: \ + case 0x4: \ + case 0x5: \ + case 0x6: \ + case 0x7: \ + if (toLim - *toP < 2) { \ + *fromP = from; \ + return XML_CONVERT_OUTPUT_EXHAUSTED; \ + } \ + *(*toP)++ = ((lo >> 6) | (hi << 2) | UTF8_cval2); \ + *(*toP)++ = ((lo & 0x3f) | 0x80); \ + break; \ + default: \ + if (toLim - *toP < 3) { \ + *fromP = from; \ + return XML_CONVERT_OUTPUT_EXHAUSTED; \ + } \ + /* 16 bits divided 4, 6, 6 amongst 3 bytes */ \ + *(*toP)++ = ((hi >> 4) | UTF8_cval3); \ + *(*toP)++ = (((hi & 0xf) << 2) | (lo >> 6) | 0x80); \ + *(*toP)++ = ((lo & 0x3f) | 0x80); \ + break; \ + case 0xD8: \ + case 0xD9: \ + case 0xDA: \ + case 0xDB: \ + if (toLim - *toP < 4) { \ + *fromP = from; \ + return XML_CONVERT_OUTPUT_EXHAUSTED; \ + } \ + if (fromLim - from < 4) { \ + *fromP = from; \ + return XML_CONVERT_INPUT_INCOMPLETE; \ + } \ + plane = (((hi & 0x3) << 2) | ((lo >> 6) & 0x3)) + 1; \ + *(*toP)++ = (char)((plane >> 2) | UTF8_cval4); \ + *(*toP)++ = (((lo >> 2) & 0xF) | ((plane & 0x3) << 4) | 0x80); \ + from += 2; \ + lo2 = GET_LO(from); \ + *(*toP)++ = (((lo & 0x3) << 4) | ((GET_HI(from) & 0x3) << 2) \ + | (lo2 >> 6) | 0x80); \ + *(*toP)++ = ((lo2 & 0x3f) | 0x80); \ + break; \ + } \ + } \ + *fromP = from; \ + if (from < fromLim) \ + return XML_CONVERT_INPUT_INCOMPLETE; \ + else \ + return XML_CONVERT_COMPLETED; \ + } + +#define DEFINE_UTF16_TO_UTF16(E) \ + static enum XML_Convert_Result PTRCALL E##toUtf16( \ + const ENCODING *enc, const char **fromP, const char *fromLim, \ + unsigned short **toP, const unsigned short *toLim) { \ + enum XML_Convert_Result res = XML_CONVERT_COMPLETED; \ + UNUSED_P(enc); \ + fromLim = *fromP + (((fromLim - *fromP) >> 1) << 1); /* shrink to even */ \ + /* Avoid copying first half only of surrogate */ \ + if (fromLim - *fromP > ((toLim - *toP) << 1) \ + && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) { \ + fromLim -= 2; \ + res = XML_CONVERT_INPUT_INCOMPLETE; \ + } \ + for (; *fromP < fromLim && *toP < toLim; *fromP += 2) \ + *(*toP)++ = (GET_HI(*fromP) << 8) | GET_LO(*fromP); \ + if ((*toP == toLim) && (*fromP < fromLim)) \ + return XML_CONVERT_OUTPUT_EXHAUSTED; \ + else \ + return res; \ + } + +#define SET2(ptr, ch) (((ptr)[0] = ((ch)&0xff)), ((ptr)[1] = ((ch) >> 8))) +#define GET_LO(ptr) ((unsigned char)(ptr)[0]) +#define GET_HI(ptr) ((unsigned char)(ptr)[1]) + +DEFINE_UTF16_TO_UTF8(little2_) +DEFINE_UTF16_TO_UTF16(little2_) + +#undef SET2 +#undef GET_LO +#undef GET_HI + +#define SET2(ptr, ch) (((ptr)[0] = ((ch) >> 8)), ((ptr)[1] = ((ch)&0xFF))) +#define GET_LO(ptr) ((unsigned char)(ptr)[1]) +#define GET_HI(ptr) ((unsigned char)(ptr)[0]) + +DEFINE_UTF16_TO_UTF8(big2_) +DEFINE_UTF16_TO_UTF16(big2_) + +#undef SET2 +#undef GET_LO +#undef GET_HI + +#define LITTLE2_BYTE_TYPE(enc, p) \ + ((p)[1] == 0 ? ((struct normal_encoding *)(enc))->type[(unsigned char)*(p)] \ + : unicode_byte_type((p)[1], (p)[0])) +#define LITTLE2_BYTE_TO_ASCII(p) ((p)[1] == 0 ? (p)[0] : -1) +#define LITTLE2_CHAR_MATCHES(p, c) ((p)[1] == 0 && (p)[0] == c) +#define LITTLE2_IS_NAME_CHAR_MINBPC(p) \ + UCS2_GET_NAMING(namePages, (unsigned char)p[1], (unsigned char)p[0]) +#define LITTLE2_IS_NMSTRT_CHAR_MINBPC(p) \ + UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[1], (unsigned char)p[0]) + +#ifdef XML_MIN_SIZE + +static int PTRFASTCALL +little2_byteType(const ENCODING *enc, const char *p) { + return LITTLE2_BYTE_TYPE(enc, p); +} + +static int PTRFASTCALL +little2_byteToAscii(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return LITTLE2_BYTE_TO_ASCII(p); +} + +static int PTRCALL +little2_charMatches(const ENCODING *enc, const char *p, int c) { + UNUSED_P(enc); + return LITTLE2_CHAR_MATCHES(p, c); +} + +static int PTRFASTCALL +little2_isNameMin(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return LITTLE2_IS_NAME_CHAR_MINBPC(p); +} + +static int PTRFASTCALL +little2_isNmstrtMin(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return LITTLE2_IS_NMSTRT_CHAR_MINBPC(p); +} + +# undef VTABLE +# define VTABLE VTABLE1, little2_toUtf8, little2_toUtf16 + +#else /* not XML_MIN_SIZE */ + +# undef PREFIX +# define PREFIX(ident) little2_##ident +# define MINBPC(enc) 2 +/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ +# define BYTE_TYPE(enc, p) LITTLE2_BYTE_TYPE(enc, p) +# define BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(p) +# define CHAR_MATCHES(enc, p, c) LITTLE2_CHAR_MATCHES(p, c) +# define IS_NAME_CHAR(enc, p, n) 0 +# define IS_NAME_CHAR_MINBPC(enc, p) LITTLE2_IS_NAME_CHAR_MINBPC(p) +# define IS_NMSTRT_CHAR(enc, p, n) (0) +# define IS_NMSTRT_CHAR_MINBPC(enc, p) LITTLE2_IS_NMSTRT_CHAR_MINBPC(p) + +# define XML_TOK_IMPL_C +# include "xmltok_impl.c" +# undef XML_TOK_IMPL_C + +# undef MINBPC +# undef BYTE_TYPE +# undef BYTE_TO_ASCII +# undef CHAR_MATCHES +# undef IS_NAME_CHAR +# undef IS_NAME_CHAR_MINBPC +# undef IS_NMSTRT_CHAR +# undef IS_NMSTRT_CHAR_MINBPC +# undef IS_INVALID_CHAR + +#endif /* not XML_MIN_SIZE */ + +#ifdef XML_NS + +static const struct normal_encoding little2_encoding_ns + = {{VTABLE, 2, 0, +# if BYTEORDER == 1234 + 1 +# else + 0 +# endif + }, + { +# include "asciitab.h" +# include "latin1tab.h" + }, + STANDARD_VTABLE(little2_) NULL_VTABLE}; + +#endif + +static const struct normal_encoding little2_encoding + = {{VTABLE, 2, 0, +#if BYTEORDER == 1234 + 1 +#else + 0 +#endif + }, + { +#define BT_COLON BT_NMSTRT +#include "asciitab.h" +#undef BT_COLON +#include "latin1tab.h" + }, + STANDARD_VTABLE(little2_) NULL_VTABLE}; + +#if BYTEORDER != 4321 + +# ifdef XML_NS + +static const struct normal_encoding internal_little2_encoding_ns + = {{VTABLE, 2, 0, 1}, + { +# include "iasciitab.h" +# include "latin1tab.h" + }, + STANDARD_VTABLE(little2_) NULL_VTABLE}; + +# endif + +static const struct normal_encoding internal_little2_encoding + = {{VTABLE, 2, 0, 1}, + { +# define BT_COLON BT_NMSTRT +# include "iasciitab.h" +# undef BT_COLON +# include "latin1tab.h" + }, + STANDARD_VTABLE(little2_) NULL_VTABLE}; + +#endif + +#define BIG2_BYTE_TYPE(enc, p) \ + ((p)[0] == 0 \ + ? ((struct normal_encoding *)(enc))->type[(unsigned char)(p)[1]] \ + : unicode_byte_type((p)[0], (p)[1])) +#define BIG2_BYTE_TO_ASCII(p) ((p)[0] == 0 ? (p)[1] : -1) +#define BIG2_CHAR_MATCHES(p, c) ((p)[0] == 0 && (p)[1] == c) +#define BIG2_IS_NAME_CHAR_MINBPC(p) \ + UCS2_GET_NAMING(namePages, (unsigned char)p[0], (unsigned char)p[1]) +#define BIG2_IS_NMSTRT_CHAR_MINBPC(p) \ + UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[0], (unsigned char)p[1]) + +#ifdef XML_MIN_SIZE + +static int PTRFASTCALL +big2_byteType(const ENCODING *enc, const char *p) { + return BIG2_BYTE_TYPE(enc, p); +} + +static int PTRFASTCALL +big2_byteToAscii(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return BIG2_BYTE_TO_ASCII(p); +} + +static int PTRCALL +big2_charMatches(const ENCODING *enc, const char *p, int c) { + UNUSED_P(enc); + return BIG2_CHAR_MATCHES(p, c); +} + +static int PTRFASTCALL +big2_isNameMin(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return BIG2_IS_NAME_CHAR_MINBPC(p); +} + +static int PTRFASTCALL +big2_isNmstrtMin(const ENCODING *enc, const char *p) { + UNUSED_P(enc); + return BIG2_IS_NMSTRT_CHAR_MINBPC(p); +} + +# undef VTABLE +# define VTABLE VTABLE1, big2_toUtf8, big2_toUtf16 + +#else /* not XML_MIN_SIZE */ + +# undef PREFIX +# define PREFIX(ident) big2_##ident +# define MINBPC(enc) 2 +/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ +# define BYTE_TYPE(enc, p) BIG2_BYTE_TYPE(enc, p) +# define BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(p) +# define CHAR_MATCHES(enc, p, c) BIG2_CHAR_MATCHES(p, c) +# define IS_NAME_CHAR(enc, p, n) 0 +# define IS_NAME_CHAR_MINBPC(enc, p) BIG2_IS_NAME_CHAR_MINBPC(p) +# define IS_NMSTRT_CHAR(enc, p, n) (0) +# define IS_NMSTRT_CHAR_MINBPC(enc, p) BIG2_IS_NMSTRT_CHAR_MINBPC(p) + +# define XML_TOK_IMPL_C +# include "xmltok_impl.c" +# undef XML_TOK_IMPL_C + +# undef MINBPC +# undef BYTE_TYPE +# undef BYTE_TO_ASCII +# undef CHAR_MATCHES +# undef IS_NAME_CHAR +# undef IS_NAME_CHAR_MINBPC +# undef IS_NMSTRT_CHAR +# undef IS_NMSTRT_CHAR_MINBPC +# undef IS_INVALID_CHAR + +#endif /* not XML_MIN_SIZE */ + +#ifdef XML_NS + +static const struct normal_encoding big2_encoding_ns + = {{VTABLE, 2, 0, +# if BYTEORDER == 4321 + 1 +# else + 0 +# endif + }, + { +# include "asciitab.h" +# include "latin1tab.h" + }, + STANDARD_VTABLE(big2_) NULL_VTABLE}; + +#endif + +static const struct normal_encoding big2_encoding + = {{VTABLE, 2, 0, +#if BYTEORDER == 4321 + 1 +#else + 0 +#endif + }, + { +#define BT_COLON BT_NMSTRT +#include "asciitab.h" +#undef BT_COLON +#include "latin1tab.h" + }, + STANDARD_VTABLE(big2_) NULL_VTABLE}; + +#if BYTEORDER != 1234 + +# ifdef XML_NS + +static const struct normal_encoding internal_big2_encoding_ns + = {{VTABLE, 2, 0, 1}, + { +# include "iasciitab.h" +# include "latin1tab.h" + }, + STANDARD_VTABLE(big2_) NULL_VTABLE}; + +# endif + +static const struct normal_encoding internal_big2_encoding + = {{VTABLE, 2, 0, 1}, + { +# define BT_COLON BT_NMSTRT +# include "iasciitab.h" +# undef BT_COLON +# include "latin1tab.h" + }, + STANDARD_VTABLE(big2_) NULL_VTABLE}; + +#endif + +#undef PREFIX + +static int FASTCALL +streqci(const char *s1, const char *s2) { + for (;;) { + char c1 = *s1++; + char c2 = *s2++; + if (ASCII_a <= c1 && c1 <= ASCII_z) + c1 += ASCII_A - ASCII_a; + if (ASCII_a <= c2 && c2 <= ASCII_z) + /* The following line will never get executed. streqci() is + * only called from two places, both of which guarantee to put + * upper-case strings into s2. + */ + c2 += ASCII_A - ASCII_a; /* LCOV_EXCL_LINE */ + if (c1 != c2) + return 0; + if (! c1) + break; + } + return 1; +} + +static void PTRCALL +initUpdatePosition(const ENCODING *enc, const char *ptr, const char *end, + POSITION *pos) { + UNUSED_P(enc); + normal_updatePosition(&utf8_encoding.enc, ptr, end, pos); +} + +static int +toAscii(const ENCODING *enc, const char *ptr, const char *end) { + char buf[1]; + char *p = buf; + XmlUtf8Convert(enc, &ptr, end, &p, p + 1); + if (p == buf) + return -1; + else + return buf[0]; +} + +static int FASTCALL +isSpace(int c) { + switch (c) { + case 0x20: + case 0xD: + case 0xA: + case 0x9: + return 1; + } + return 0; +} + +/* Return 1 if there's just optional white space or there's an S + followed by name=val. +*/ +static int +parsePseudoAttribute(const ENCODING *enc, const char *ptr, const char *end, + const char **namePtr, const char **nameEndPtr, + const char **valPtr, const char **nextTokPtr) { + int c; + char open; + if (ptr == end) { + *namePtr = NULL; + return 1; + } + if (! isSpace(toAscii(enc, ptr, end))) { + *nextTokPtr = ptr; + return 0; + } + do { + ptr += enc->minBytesPerChar; + } while (isSpace(toAscii(enc, ptr, end))); + if (ptr == end) { + *namePtr = NULL; + return 1; + } + *namePtr = ptr; + for (;;) { + c = toAscii(enc, ptr, end); + if (c == -1) { + *nextTokPtr = ptr; + return 0; + } + if (c == ASCII_EQUALS) { + *nameEndPtr = ptr; + break; + } + if (isSpace(c)) { + *nameEndPtr = ptr; + do { + ptr += enc->minBytesPerChar; + } while (isSpace(c = toAscii(enc, ptr, end))); + if (c != ASCII_EQUALS) { + *nextTokPtr = ptr; + return 0; + } + break; + } + ptr += enc->minBytesPerChar; + } + if (ptr == *namePtr) { + *nextTokPtr = ptr; + return 0; + } + ptr += enc->minBytesPerChar; + c = toAscii(enc, ptr, end); + while (isSpace(c)) { + ptr += enc->minBytesPerChar; + c = toAscii(enc, ptr, end); + } + if (c != ASCII_QUOT && c != ASCII_APOS) { + *nextTokPtr = ptr; + return 0; + } + open = (char)c; + ptr += enc->minBytesPerChar; + *valPtr = ptr; + for (;; ptr += enc->minBytesPerChar) { + c = toAscii(enc, ptr, end); + if (c == open) + break; + if (! (ASCII_a <= c && c <= ASCII_z) && ! (ASCII_A <= c && c <= ASCII_Z) + && ! (ASCII_0 <= c && c <= ASCII_9) && c != ASCII_PERIOD + && c != ASCII_MINUS && c != ASCII_UNDERSCORE) { + *nextTokPtr = ptr; + return 0; + } + } + *nextTokPtr = ptr + enc->minBytesPerChar; + return 1; +} + +static const char KW_version[] + = {ASCII_v, ASCII_e, ASCII_r, ASCII_s, ASCII_i, ASCII_o, ASCII_n, '\0'}; + +static const char KW_encoding[] = {ASCII_e, ASCII_n, ASCII_c, ASCII_o, ASCII_d, + ASCII_i, ASCII_n, ASCII_g, '\0'}; + +static const char KW_standalone[] + = {ASCII_s, ASCII_t, ASCII_a, ASCII_n, ASCII_d, ASCII_a, + ASCII_l, ASCII_o, ASCII_n, ASCII_e, '\0'}; + +static const char KW_yes[] = {ASCII_y, ASCII_e, ASCII_s, '\0'}; + +static const char KW_no[] = {ASCII_n, ASCII_o, '\0'}; + +static int +doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, const char *, + const char *), + int isGeneralTextEntity, const ENCODING *enc, const char *ptr, + const char *end, const char **badPtr, const char **versionPtr, + const char **versionEndPtr, const char **encodingName, + const ENCODING **encoding, int *standalone) { + const char *val = NULL; + const char *name = NULL; + const char *nameEnd = NULL; + ptr += 5 * enc->minBytesPerChar; + end -= 2 * enc->minBytesPerChar; + if (! parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr) + || ! name) { + *badPtr = ptr; + return 0; + } + if (! XmlNameMatchesAscii(enc, name, nameEnd, KW_version)) { + if (! isGeneralTextEntity) { + *badPtr = name; + return 0; + } + } else { + if (versionPtr) + *versionPtr = val; + if (versionEndPtr) + *versionEndPtr = ptr; + if (! parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { + *badPtr = ptr; + return 0; + } + if (! name) { + if (isGeneralTextEntity) { + /* a TextDecl must have an EncodingDecl */ + *badPtr = ptr; + return 0; + } + return 1; + } + } + if (XmlNameMatchesAscii(enc, name, nameEnd, KW_encoding)) { + int c = toAscii(enc, val, end); + if (! (ASCII_a <= c && c <= ASCII_z) && ! (ASCII_A <= c && c <= ASCII_Z)) { + *badPtr = val; + return 0; + } + if (encodingName) + *encodingName = val; + if (encoding) + *encoding = encodingFinder(enc, val, ptr - enc->minBytesPerChar); + if (! parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { + *badPtr = ptr; + return 0; + } + if (! name) + return 1; + } + if (! XmlNameMatchesAscii(enc, name, nameEnd, KW_standalone) + || isGeneralTextEntity) { + *badPtr = name; + return 0; + } + if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_yes)) { + if (standalone) + *standalone = 1; + } else if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_no)) { + if (standalone) + *standalone = 0; + } else { + *badPtr = val; + return 0; + } + while (isSpace(toAscii(enc, ptr, end))) + ptr += enc->minBytesPerChar; + if (ptr != end) { + *badPtr = ptr; + return 0; + } + return 1; +} + +static int FASTCALL +checkCharRefNumber(int result) { + switch (result >> 8) { + case 0xD8: + case 0xD9: + case 0xDA: + case 0xDB: + case 0xDC: + case 0xDD: + case 0xDE: + case 0xDF: + return -1; + case 0: + if (latin1_encoding.type[result] == BT_NONXML) + return -1; + break; + case 0xFF: + if (result == 0xFFFE || result == 0xFFFF) + return -1; + break; + } + return result; +} + +int FASTCALL +XmlUtf8Encode(int c, char *buf) { + enum { + /* minN is minimum legal resulting value for N byte sequence */ + min2 = 0x80, + min3 = 0x800, + min4 = 0x10000 + }; + + if (c < 0) + return 0; /* LCOV_EXCL_LINE: this case is always eliminated beforehand */ + if (c < min2) { + buf[0] = (char)(c | UTF8_cval1); + return 1; + } + if (c < min3) { + buf[0] = (char)((c >> 6) | UTF8_cval2); + buf[1] = (char)((c & 0x3f) | 0x80); + return 2; + } + if (c < min4) { + buf[0] = (char)((c >> 12) | UTF8_cval3); + buf[1] = (char)(((c >> 6) & 0x3f) | 0x80); + buf[2] = (char)((c & 0x3f) | 0x80); + return 3; + } + if (c < 0x110000) { + buf[0] = (char)((c >> 18) | UTF8_cval4); + buf[1] = (char)(((c >> 12) & 0x3f) | 0x80); + buf[2] = (char)(((c >> 6) & 0x3f) | 0x80); + buf[3] = (char)((c & 0x3f) | 0x80); + return 4; + } + return 0; /* LCOV_EXCL_LINE: this case too is eliminated before calling */ +} + +int FASTCALL +XmlUtf16Encode(int charNum, unsigned short *buf) { + if (charNum < 0) + return 0; + if (charNum < 0x10000) { + buf[0] = (unsigned short)charNum; + return 1; + } + if (charNum < 0x110000) { + charNum -= 0x10000; + buf[0] = (unsigned short)((charNum >> 10) + 0xD800); + buf[1] = (unsigned short)((charNum & 0x3FF) + 0xDC00); + return 2; + } + return 0; +} + +struct unknown_encoding { + struct normal_encoding normal; + CONVERTER convert; + void *userData; + unsigned short utf16[256]; + char utf8[256][4]; +}; + +#define AS_UNKNOWN_ENCODING(enc) ((const struct unknown_encoding *)(enc)) + +int +XmlSizeOfUnknownEncoding(void) { + return sizeof(struct unknown_encoding); +} + +static int PTRFASTCALL +unknown_isName(const ENCODING *enc, const char *p) { + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + int c = uenc->convert(uenc->userData, p); + if (c & ~0xFFFF) + return 0; + return UCS2_GET_NAMING(namePages, c >> 8, c & 0xFF); +} + +static int PTRFASTCALL +unknown_isNmstrt(const ENCODING *enc, const char *p) { + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + int c = uenc->convert(uenc->userData, p); + if (c & ~0xFFFF) + return 0; + return UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xFF); +} + +static int PTRFASTCALL +unknown_isInvalid(const ENCODING *enc, const char *p) { + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + int c = uenc->convert(uenc->userData, p); + return (c & ~0xFFFF) || checkCharRefNumber(c) < 0; +} + +static enum XML_Convert_Result PTRCALL +unknown_toUtf8(const ENCODING *enc, const char **fromP, const char *fromLim, + char **toP, const char *toLim) { + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + char buf[XML_UTF8_ENCODE_MAX]; + for (;;) { + const char *utf8; + int n; + if (*fromP == fromLim) + return XML_CONVERT_COMPLETED; + utf8 = uenc->utf8[(unsigned char)**fromP]; + n = *utf8++; + if (n == 0) { + int c = uenc->convert(uenc->userData, *fromP); + n = XmlUtf8Encode(c, buf); + if (n > toLim - *toP) + return XML_CONVERT_OUTPUT_EXHAUSTED; + utf8 = buf; + *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] + - (BT_LEAD2 - 2)); + } else { + if (n > toLim - *toP) + return XML_CONVERT_OUTPUT_EXHAUSTED; + (*fromP)++; + } + memcpy(*toP, utf8, n); + *toP += n; + } +} + +static enum XML_Convert_Result PTRCALL +unknown_toUtf16(const ENCODING *enc, const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) { + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + while (*fromP < fromLim && *toP < toLim) { + unsigned short c = uenc->utf16[(unsigned char)**fromP]; + if (c == 0) { + c = (unsigned short)uenc->convert(uenc->userData, *fromP); + *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] + - (BT_LEAD2 - 2)); + } else + (*fromP)++; + *(*toP)++ = c; + } + + if ((*toP == toLim) && (*fromP < fromLim)) + return XML_CONVERT_OUTPUT_EXHAUSTED; + else + return XML_CONVERT_COMPLETED; +} + +ENCODING * +XmlInitUnknownEncoding(void *mem, int *table, CONVERTER convert, + void *userData) { + int i; + struct unknown_encoding *e = (struct unknown_encoding *)mem; + memcpy(mem, &latin1_encoding, sizeof(struct normal_encoding)); + for (i = 0; i < 128; i++) + if (latin1_encoding.type[i] != BT_OTHER + && latin1_encoding.type[i] != BT_NONXML && table[i] != i) + return 0; + for (i = 0; i < 256; i++) { + int c = table[i]; + if (c == -1) { + e->normal.type[i] = BT_MALFORM; + /* This shouldn't really get used. */ + e->utf16[i] = 0xFFFF; + e->utf8[i][0] = 1; + e->utf8[i][1] = 0; + } else if (c < 0) { + if (c < -4) + return 0; + /* Multi-byte sequences need a converter function */ + if (! convert) + return 0; + e->normal.type[i] = (unsigned char)(BT_LEAD2 - (c + 2)); + e->utf8[i][0] = 0; + e->utf16[i] = 0; + } else if (c < 0x80) { + if (latin1_encoding.type[c] != BT_OTHER + && latin1_encoding.type[c] != BT_NONXML && c != i) + return 0; + e->normal.type[i] = latin1_encoding.type[c]; + e->utf8[i][0] = 1; + e->utf8[i][1] = (char)c; + e->utf16[i] = (unsigned short)(c == 0 ? 0xFFFF : c); + } else if (checkCharRefNumber(c) < 0) { + e->normal.type[i] = BT_NONXML; + /* This shouldn't really get used. */ + e->utf16[i] = 0xFFFF; + e->utf8[i][0] = 1; + e->utf8[i][1] = 0; + } else { + if (c > 0xFFFF) + return 0; + if (UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xff)) + e->normal.type[i] = BT_NMSTRT; + else if (UCS2_GET_NAMING(namePages, c >> 8, c & 0xff)) + e->normal.type[i] = BT_NAME; + else + e->normal.type[i] = BT_OTHER; + e->utf8[i][0] = (char)XmlUtf8Encode(c, e->utf8[i] + 1); + e->utf16[i] = (unsigned short)c; + } + } + e->userData = userData; + e->convert = convert; + if (convert) { + e->normal.isName2 = unknown_isName; + e->normal.isName3 = unknown_isName; + e->normal.isName4 = unknown_isName; + e->normal.isNmstrt2 = unknown_isNmstrt; + e->normal.isNmstrt3 = unknown_isNmstrt; + e->normal.isNmstrt4 = unknown_isNmstrt; + e->normal.isInvalid2 = unknown_isInvalid; + e->normal.isInvalid3 = unknown_isInvalid; + e->normal.isInvalid4 = unknown_isInvalid; + } + e->normal.enc.utf8Convert = unknown_toUtf8; + e->normal.enc.utf16Convert = unknown_toUtf16; + return &(e->normal.enc); +} + +/* If this enumeration is changed, getEncodingIndex and encodings +must also be changed. */ +enum { + UNKNOWN_ENC = -1, + ISO_8859_1_ENC = 0, + US_ASCII_ENC, + UTF_8_ENC, + UTF_16_ENC, + UTF_16BE_ENC, + UTF_16LE_ENC, + /* must match encodingNames up to here */ + NO_ENC +}; + +static const char KW_ISO_8859_1[] + = {ASCII_I, ASCII_S, ASCII_O, ASCII_MINUS, ASCII_8, ASCII_8, + ASCII_5, ASCII_9, ASCII_MINUS, ASCII_1, '\0'}; +static const char KW_US_ASCII[] + = {ASCII_U, ASCII_S, ASCII_MINUS, ASCII_A, ASCII_S, + ASCII_C, ASCII_I, ASCII_I, '\0'}; +static const char KW_UTF_8[] + = {ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_8, '\0'}; +static const char KW_UTF_16[] + = {ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, '\0'}; +static const char KW_UTF_16BE[] + = {ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, + ASCII_6, ASCII_B, ASCII_E, '\0'}; +static const char KW_UTF_16LE[] + = {ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, + ASCII_6, ASCII_L, ASCII_E, '\0'}; + +static int FASTCALL +getEncodingIndex(const char *name) { + static const char *const encodingNames[] = { + KW_ISO_8859_1, KW_US_ASCII, KW_UTF_8, KW_UTF_16, KW_UTF_16BE, KW_UTF_16LE, + }; + int i; + if (name == NULL) + return NO_ENC; + for (i = 0; i < (int)(sizeof(encodingNames) / sizeof(encodingNames[0])); i++) + if (streqci(name, encodingNames[i])) + return i; + return UNKNOWN_ENC; +} + +/* For binary compatibility, we store the index of the encoding + specified at initialization in the isUtf16 member. +*/ + +#define INIT_ENC_INDEX(enc) ((int)(enc)->initEnc.isUtf16) +#define SET_INIT_ENC_INDEX(enc, i) ((enc)->initEnc.isUtf16 = (char)i) + +/* This is what detects the encoding. encodingTable maps from + encoding indices to encodings; INIT_ENC_INDEX(enc) is the index of + the external (protocol) specified encoding; state is + XML_CONTENT_STATE if we're parsing an external text entity, and + XML_PROLOG_STATE otherwise. +*/ + +static int +initScan(const ENCODING *const *encodingTable, const INIT_ENCODING *enc, + int state, const char *ptr, const char *end, const char **nextTokPtr) { + const ENCODING **encPtr; + + if (ptr >= end) + return XML_TOK_NONE; + encPtr = enc->encPtr; + if (ptr + 1 == end) { + /* only a single byte available for auto-detection */ +#ifndef XML_DTD /* FIXME */ + /* a well-formed document entity must have more than one byte */ + if (state != XML_CONTENT_STATE) + return XML_TOK_PARTIAL; +#endif + /* so we're parsing an external text entity... */ + /* if UTF-16 was externally specified, then we need at least 2 bytes */ + switch (INIT_ENC_INDEX(enc)) { + case UTF_16_ENC: + case UTF_16LE_ENC: + case UTF_16BE_ENC: + return XML_TOK_PARTIAL; + } + switch ((unsigned char)*ptr) { + case 0xFE: + case 0xFF: + case 0xEF: /* possibly first byte of UTF-8 BOM */ + if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC && state == XML_CONTENT_STATE) + break; + /* fall through */ + case 0x00: + case 0x3C: + return XML_TOK_PARTIAL; + } + } else { + switch (((unsigned char)ptr[0] << 8) | (unsigned char)ptr[1]) { + case 0xFEFF: + if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC && state == XML_CONTENT_STATE) + break; + *nextTokPtr = ptr + 2; + *encPtr = encodingTable[UTF_16BE_ENC]; + return XML_TOK_BOM; + /* 00 3C is handled in the default case */ + case 0x3C00: + if ((INIT_ENC_INDEX(enc) == UTF_16BE_ENC + || INIT_ENC_INDEX(enc) == UTF_16_ENC) + && state == XML_CONTENT_STATE) + break; + *encPtr = encodingTable[UTF_16LE_ENC]; + return XmlTok(*encPtr, state, ptr, end, nextTokPtr); + case 0xFFFE: + if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC && state == XML_CONTENT_STATE) + break; + *nextTokPtr = ptr + 2; + *encPtr = encodingTable[UTF_16LE_ENC]; + return XML_TOK_BOM; + case 0xEFBB: + /* Maybe a UTF-8 BOM (EF BB BF) */ + /* If there's an explicitly specified (external) encoding + of ISO-8859-1 or some flavour of UTF-16 + and this is an external text entity, + don't look for the BOM, + because it might be a legal data. + */ + if (state == XML_CONTENT_STATE) { + int e = INIT_ENC_INDEX(enc); + if (e == ISO_8859_1_ENC || e == UTF_16BE_ENC || e == UTF_16LE_ENC + || e == UTF_16_ENC) + break; + } + if (ptr + 2 == end) + return XML_TOK_PARTIAL; + if ((unsigned char)ptr[2] == 0xBF) { + *nextTokPtr = ptr + 3; + *encPtr = encodingTable[UTF_8_ENC]; + return XML_TOK_BOM; + } + break; + default: + if (ptr[0] == '\0') { + /* 0 isn't a legal data character. Furthermore a document + entity can only start with ASCII characters. So the only + way this can fail to be big-endian UTF-16 if it it's an + external parsed general entity that's labelled as + UTF-16LE. + */ + if (state == XML_CONTENT_STATE && INIT_ENC_INDEX(enc) == UTF_16LE_ENC) + break; + *encPtr = encodingTable[UTF_16BE_ENC]; + return XmlTok(*encPtr, state, ptr, end, nextTokPtr); + } else if (ptr[1] == '\0') { + /* We could recover here in the case: + - parsing an external entity + - second byte is 0 + - no externally specified encoding + - no encoding declaration + by assuming UTF-16LE. But we don't, because this would mean when + presented just with a single byte, we couldn't reliably determine + whether we needed further bytes. + */ + if (state == XML_CONTENT_STATE) + break; + *encPtr = encodingTable[UTF_16LE_ENC]; + return XmlTok(*encPtr, state, ptr, end, nextTokPtr); + } + break; + } + } + *encPtr = encodingTable[INIT_ENC_INDEX(enc)]; + return XmlTok(*encPtr, state, ptr, end, nextTokPtr); +} + +#define NS(x) x +#define ns(x) x +#define XML_TOK_NS_C +#include "xmltok_ns.c" +#undef XML_TOK_NS_C +#undef NS +#undef ns + +#ifdef XML_NS + +# define NS(x) x##NS +# define ns(x) x##_ns + +# define XML_TOK_NS_C +# include "xmltok_ns.c" +# undef XML_TOK_NS_C + +# undef NS +# undef ns + +ENCODING * +XmlInitUnknownEncodingNS(void *mem, int *table, CONVERTER convert, + void *userData) { + ENCODING *enc = XmlInitUnknownEncoding(mem, table, convert, userData); + if (enc) + ((struct normal_encoding *)enc)->type[ASCII_COLON] = BT_COLON; + return enc; +} + +#endif /* XML_NS */ diff --git a/3rdparty/expat/lib/xmltok.h b/3rdparty/expat/lib/xmltok.h new file mode 100644 index 0000000..2adbf53 --- /dev/null +++ b/3rdparty/expat/lib/xmltok.h @@ -0,0 +1,315 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef XmlTok_INCLUDED +#define XmlTok_INCLUDED 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* The following token may be returned by XmlContentTok */ +#define XML_TOK_TRAILING_RSQB \ + -5 /* ] or ]] at the end of the scan; might be \ + start of illegal ]]> sequence */ +/* The following tokens may be returned by both XmlPrologTok and + XmlContentTok. +*/ +#define XML_TOK_NONE -4 /* The string to be scanned is empty */ +#define XML_TOK_TRAILING_CR \ + -3 /* A CR at the end of the scan; \ + might be part of CRLF sequence */ +#define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */ +#define XML_TOK_PARTIAL -1 /* only part of a token */ +#define XML_TOK_INVALID 0 + +/* The following tokens are returned by XmlContentTok; some are also + returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok. +*/ +#define XML_TOK_START_TAG_WITH_ATTS 1 +#define XML_TOK_START_TAG_NO_ATTS 2 +#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag */ +#define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4 +#define XML_TOK_END_TAG 5 +#define XML_TOK_DATA_CHARS 6 +#define XML_TOK_DATA_NEWLINE 7 +#define XML_TOK_CDATA_SECT_OPEN 8 +#define XML_TOK_ENTITY_REF 9 +#define XML_TOK_CHAR_REF 10 /* numeric character reference */ + +/* The following tokens may be returned by both XmlPrologTok and + XmlContentTok. +*/ +#define XML_TOK_PI 11 /* processing instruction */ +#define XML_TOK_XML_DECL 12 /* XML decl or text decl */ +#define XML_TOK_COMMENT 13 +#define XML_TOK_BOM 14 /* Byte order mark */ + +/* The following tokens are returned only by XmlPrologTok */ +#define XML_TOK_PROLOG_S 15 +#define XML_TOK_DECL_OPEN 16 /* */ +#define XML_TOK_NAME 18 +#define XML_TOK_NMTOKEN 19 +#define XML_TOK_POUND_NAME 20 /* #name */ +#define XML_TOK_OR 21 /* | */ +#define XML_TOK_PERCENT 22 +#define XML_TOK_OPEN_PAREN 23 +#define XML_TOK_CLOSE_PAREN 24 +#define XML_TOK_OPEN_BRACKET 25 +#define XML_TOK_CLOSE_BRACKET 26 +#define XML_TOK_LITERAL 27 +#define XML_TOK_PARAM_ENTITY_REF 28 +#define XML_TOK_INSTANCE_START 29 + +/* The following occur only in element type declarations */ +#define XML_TOK_NAME_QUESTION 30 /* name? */ +#define XML_TOK_NAME_ASTERISK 31 /* name* */ +#define XML_TOK_NAME_PLUS 32 /* name+ */ +#define XML_TOK_COND_SECT_OPEN 33 /* */ +#define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */ +#define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */ +#define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */ +#define XML_TOK_COMMA 38 + +/* The following token is returned only by XmlAttributeValueTok */ +#define XML_TOK_ATTRIBUTE_VALUE_S 39 + +/* The following token is returned only by XmlCdataSectionTok */ +#define XML_TOK_CDATA_SECT_CLOSE 40 + +/* With namespace processing this is returned by XmlPrologTok for a + name with a colon. +*/ +#define XML_TOK_PREFIXED_NAME 41 + +#ifdef XML_DTD +# define XML_TOK_IGNORE_SECT 42 +#endif /* XML_DTD */ + +#ifdef XML_DTD +# define XML_N_STATES 4 +#else /* not XML_DTD */ +# define XML_N_STATES 3 +#endif /* not XML_DTD */ + +#define XML_PROLOG_STATE 0 +#define XML_CONTENT_STATE 1 +#define XML_CDATA_SECTION_STATE 2 +#ifdef XML_DTD +# define XML_IGNORE_SECTION_STATE 3 +#endif /* XML_DTD */ + +#define XML_N_LITERAL_TYPES 2 +#define XML_ATTRIBUTE_VALUE_LITERAL 0 +#define XML_ENTITY_VALUE_LITERAL 1 + +/* The size of the buffer passed to XmlUtf8Encode must be at least this. */ +#define XML_UTF8_ENCODE_MAX 4 +/* The size of the buffer passed to XmlUtf16Encode must be at least this. */ +#define XML_UTF16_ENCODE_MAX 2 + +typedef struct position { + /* first line and first column are 0 not 1 */ + XML_Size lineNumber; + XML_Size columnNumber; +} POSITION; + +typedef struct { + const char *name; + const char *valuePtr; + const char *valueEnd; + char normalized; +} ATTRIBUTE; + +struct encoding; +typedef struct encoding ENCODING; + +typedef int(PTRCALL *SCANNER)(const ENCODING *, const char *, const char *, + const char **); + +enum XML_Convert_Result { + XML_CONVERT_COMPLETED = 0, + XML_CONVERT_INPUT_INCOMPLETE = 1, + XML_CONVERT_OUTPUT_EXHAUSTED + = 2 /* and therefore potentially input remaining as well */ +}; + +struct encoding { + SCANNER scanners[XML_N_STATES]; + SCANNER literalScanners[XML_N_LITERAL_TYPES]; + int(PTRCALL *nameMatchesAscii)(const ENCODING *, const char *, const char *, + const char *); + int(PTRFASTCALL *nameLength)(const ENCODING *, const char *); + const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *); + int(PTRCALL *getAtts)(const ENCODING *enc, const char *ptr, int attsMax, + ATTRIBUTE *atts); + int(PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr); + int(PTRCALL *predefinedEntityName)(const ENCODING *, const char *, + const char *); + void(PTRCALL *updatePosition)(const ENCODING *, const char *ptr, + const char *end, POSITION *); + int(PTRCALL *isPublicId)(const ENCODING *enc, const char *ptr, + const char *end, const char **badPtr); + enum XML_Convert_Result(PTRCALL *utf8Convert)(const ENCODING *enc, + const char **fromP, + const char *fromLim, char **toP, + const char *toLim); + enum XML_Convert_Result(PTRCALL *utf16Convert)(const ENCODING *enc, + const char **fromP, + const char *fromLim, + unsigned short **toP, + const unsigned short *toLim); + int minBytesPerChar; + char isUtf8; + char isUtf16; +}; + +/* Scan the string starting at ptr until the end of the next complete + token, but do not scan past eptr. Return an integer giving the + type of token. + + Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set. + + Return XML_TOK_PARTIAL when the string does not contain a complete + token; nextTokPtr will not be set. + + Return XML_TOK_INVALID when the string does not start a valid + token; nextTokPtr will be set to point to the character which made + the token invalid. + + Otherwise the string starts with a valid token; nextTokPtr will be + set to point to the character following the end of that token. + + Each data character counts as a single token, but adjacent data + characters may be returned together. Similarly for characters in + the prolog outside literals, comments and processing instructions. +*/ + +#define XmlTok(enc, state, ptr, end, nextTokPtr) \ + (((enc)->scanners[state])(enc, ptr, end, nextTokPtr)) + +#define XmlPrologTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr) + +#define XmlContentTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr) + +#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr) + +#ifdef XML_DTD + +# define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr) + +#endif /* XML_DTD */ + +/* This is used for performing a 2nd-level tokenization on the content + of a literal that has already been returned by XmlTok. +*/ +#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \ + (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr)) + +#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \ + XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr) + +#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \ + XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr) + +#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \ + (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2)) + +#define XmlNameLength(enc, ptr) (((enc)->nameLength)(enc, ptr)) + +#define XmlSkipS(enc, ptr) (((enc)->skipS)(enc, ptr)) + +#define XmlGetAttributes(enc, ptr, attsMax, atts) \ + (((enc)->getAtts)(enc, ptr, attsMax, atts)) + +#define XmlCharRefNumber(enc, ptr) (((enc)->charRefNumber)(enc, ptr)) + +#define XmlPredefinedEntityName(enc, ptr, end) \ + (((enc)->predefinedEntityName)(enc, ptr, end)) + +#define XmlUpdatePosition(enc, ptr, end, pos) \ + (((enc)->updatePosition)(enc, ptr, end, pos)) + +#define XmlIsPublicId(enc, ptr, end, badPtr) \ + (((enc)->isPublicId)(enc, ptr, end, badPtr)) + +#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \ + (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim)) + +#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \ + (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim)) + +typedef struct { + ENCODING initEnc; + const ENCODING **encPtr; +} INIT_ENCODING; + +int XmlParseXmlDecl(int isGeneralTextEntity, const ENCODING *enc, + const char *ptr, const char *end, const char **badPtr, + const char **versionPtr, const char **versionEndPtr, + const char **encodingNamePtr, + const ENCODING **namedEncodingPtr, int *standalonePtr); + +int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name); +const ENCODING *XmlGetUtf8InternalEncoding(void); +const ENCODING *XmlGetUtf16InternalEncoding(void); +int FASTCALL XmlUtf8Encode(int charNumber, char *buf); +int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf); +int XmlSizeOfUnknownEncoding(void); + +typedef int(XMLCALL *CONVERTER)(void *userData, const char *p); + +ENCODING *XmlInitUnknownEncoding(void *mem, int *table, CONVERTER convert, + void *userData); + +int XmlParseXmlDeclNS(int isGeneralTextEntity, const ENCODING *enc, + const char *ptr, const char *end, const char **badPtr, + const char **versionPtr, const char **versionEndPtr, + const char **encodingNamePtr, + const ENCODING **namedEncodingPtr, int *standalonePtr); + +int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name); +const ENCODING *XmlGetUtf8InternalEncodingNS(void); +const ENCODING *XmlGetUtf16InternalEncodingNS(void); +ENCODING *XmlInitUnknownEncodingNS(void *mem, int *table, CONVERTER convert, + void *userData); +#ifdef __cplusplus +} +#endif + +#endif /* not XmlTok_INCLUDED */ diff --git a/3rdparty/expat/lib/xmltok_impl.c b/3rdparty/expat/lib/xmltok_impl.c new file mode 100644 index 0000000..06d5c90 --- /dev/null +++ b/3rdparty/expat/lib/xmltok_impl.c @@ -0,0 +1,1805 @@ +/* This file is included! + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifdef XML_TOK_IMPL_C + +# ifndef IS_INVALID_CHAR +# define IS_INVALID_CHAR(enc, ptr, n) (0) +# endif + +# define INVALID_LEAD_CASE(n, ptr, nextTokPtr) \ + case BT_LEAD##n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ + if (IS_INVALID_CHAR(enc, ptr, n)) { \ + *(nextTokPtr) = (ptr); \ + return XML_TOK_INVALID; \ + } \ + ptr += n; \ + break; + +# define INVALID_CASES(ptr, nextTokPtr) \ + INVALID_LEAD_CASE(2, ptr, nextTokPtr) \ + INVALID_LEAD_CASE(3, ptr, nextTokPtr) \ + INVALID_LEAD_CASE(4, ptr, nextTokPtr) \ + case BT_NONXML: \ + case BT_MALFORM: \ + case BT_TRAIL: \ + *(nextTokPtr) = (ptr); \ + return XML_TOK_INVALID; + +# define CHECK_NAME_CASE(n, enc, ptr, end, nextTokPtr) \ + case BT_LEAD##n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ + if (! IS_NAME_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + ptr += n; \ + break; + +# define CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) \ + case BT_NONASCII: \ + if (! IS_NAME_CHAR_MINBPC(enc, ptr)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + /* fall through */ \ + case BT_NMSTRT: \ + case BT_HEX: \ + case BT_DIGIT: \ + case BT_NAME: \ + case BT_MINUS: \ + ptr += MINBPC(enc); \ + break; \ + CHECK_NAME_CASE(2, enc, ptr, end, nextTokPtr) \ + CHECK_NAME_CASE(3, enc, ptr, end, nextTokPtr) \ + CHECK_NAME_CASE(4, enc, ptr, end, nextTokPtr) + +# define CHECK_NMSTRT_CASE(n, enc, ptr, end, nextTokPtr) \ + case BT_LEAD##n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ + if (! IS_NMSTRT_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + ptr += n; \ + break; + +# define CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) \ + case BT_NONASCII: \ + if (! IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + /* fall through */ \ + case BT_NMSTRT: \ + case BT_HEX: \ + ptr += MINBPC(enc); \ + break; \ + CHECK_NMSTRT_CASE(2, enc, ptr, end, nextTokPtr) \ + CHECK_NMSTRT_CASE(3, enc, ptr, end, nextTokPtr) \ + CHECK_NMSTRT_CASE(4, enc, ptr, end, nextTokPtr) + +# ifndef PREFIX +# define PREFIX(ident) ident +# endif + +# define HAS_CHARS(enc, ptr, end, count) (end - ptr >= count * MINBPC(enc)) + +# define HAS_CHAR(enc, ptr, end) HAS_CHARS(enc, ptr, end, 1) + +# define REQUIRE_CHARS(enc, ptr, end, count) \ + { \ + if (! HAS_CHARS(enc, ptr, end, count)) { \ + return XML_TOK_PARTIAL; \ + } \ + } + +# define REQUIRE_CHAR(enc, ptr, end) REQUIRE_CHARS(enc, ptr, end, 1) + +/* ptr points to character following " */ + switch (BYTE_TYPE(enc, ptr + MINBPC(enc))) { + case BT_S: + case BT_CR: + case BT_LF: + case BT_PERCNT: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + /* fall through */ + case BT_S: + case BT_CR: + case BT_LF: + *nextTokPtr = ptr; + return XML_TOK_DECL_OPEN; + case BT_NMSTRT: + case BT_HEX: + ptr += MINBPC(enc); + break; + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + } + return XML_TOK_PARTIAL; +} + +static int PTRCALL +PREFIX(checkPiTarget)(const ENCODING *enc, const char *ptr, const char *end, + int *tokPtr) { + int upper = 0; + UNUSED_P(enc); + *tokPtr = XML_TOK_PI; + if (end - ptr != MINBPC(enc) * 3) + return 1; + switch (BYTE_TO_ASCII(enc, ptr)) { + case ASCII_x: + break; + case ASCII_X: + upper = 1; + break; + default: + return 1; + } + ptr += MINBPC(enc); + switch (BYTE_TO_ASCII(enc, ptr)) { + case ASCII_m: + break; + case ASCII_M: + upper = 1; + break; + default: + return 1; + } + ptr += MINBPC(enc); + switch (BYTE_TO_ASCII(enc, ptr)) { + case ASCII_l: + break; + case ASCII_L: + upper = 1; + break; + default: + return 1; + } + if (upper) + return 0; + *tokPtr = XML_TOK_XML_DECL; + return 1; +} + +/* ptr points to character following "= end) + return XML_TOK_NONE; + if (MINBPC(enc) > 1) { + size_t n = end - ptr; + if (n & (MINBPC(enc) - 1)) { + n &= ~(MINBPC(enc) - 1); + if (n == 0) + return XML_TOK_PARTIAL; + end = ptr + n; + } + } + switch (BYTE_TYPE(enc, ptr)) { + case BT_RSQB: + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + if (! CHAR_MATCHES(enc, ptr, ASCII_RSQB)) + break; + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + if (! CHAR_MATCHES(enc, ptr, ASCII_GT)) { + ptr -= MINBPC(enc); + break; + } + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_CDATA_SECT_CLOSE; + case BT_CR: + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + if (BYTE_TYPE(enc, ptr) == BT_LF) + ptr += MINBPC(enc); + *nextTokPtr = ptr; + return XML_TOK_DATA_NEWLINE; + case BT_LF: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_DATA_NEWLINE; + INVALID_CASES(ptr, nextTokPtr) + default: + ptr += MINBPC(enc); + break; + } + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { +# define LEAD_CASE(n) \ + case BT_LEAD##n: \ + if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_DATA_CHARS; \ + } \ + ptr += n; \ + break; + LEAD_CASE(2) + LEAD_CASE(3) + LEAD_CASE(4) +# undef LEAD_CASE + case BT_NONXML: + case BT_MALFORM: + case BT_TRAIL: + case BT_CR: + case BT_LF: + case BT_RSQB: + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + default: + ptr += MINBPC(enc); + break; + } + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; +} + +/* ptr points to character following "= end) + return XML_TOK_NONE; + if (MINBPC(enc) > 1) { + size_t n = end - ptr; + if (n & (MINBPC(enc) - 1)) { + n &= ~(MINBPC(enc) - 1); + if (n == 0) + return XML_TOK_PARTIAL; + end = ptr + n; + } + } + switch (BYTE_TYPE(enc, ptr)) { + case BT_LT: + return PREFIX(scanLt)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_AMP: + return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_CR: + ptr += MINBPC(enc); + if (! HAS_CHAR(enc, ptr, end)) + return XML_TOK_TRAILING_CR; + if (BYTE_TYPE(enc, ptr) == BT_LF) + ptr += MINBPC(enc); + *nextTokPtr = ptr; + return XML_TOK_DATA_NEWLINE; + case BT_LF: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_DATA_NEWLINE; + case BT_RSQB: + ptr += MINBPC(enc); + if (! HAS_CHAR(enc, ptr, end)) + return XML_TOK_TRAILING_RSQB; + if (! CHAR_MATCHES(enc, ptr, ASCII_RSQB)) + break; + ptr += MINBPC(enc); + if (! HAS_CHAR(enc, ptr, end)) + return XML_TOK_TRAILING_RSQB; + if (! CHAR_MATCHES(enc, ptr, ASCII_GT)) { + ptr -= MINBPC(enc); + break; + } + *nextTokPtr = ptr; + return XML_TOK_INVALID; + INVALID_CASES(ptr, nextTokPtr) + default: + ptr += MINBPC(enc); + break; + } + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { +# define LEAD_CASE(n) \ + case BT_LEAD##n: \ + if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_DATA_CHARS; \ + } \ + ptr += n; \ + break; + LEAD_CASE(2) + LEAD_CASE(3) + LEAD_CASE(4) +# undef LEAD_CASE + case BT_RSQB: + if (HAS_CHARS(enc, ptr, end, 2)) { + if (! CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_RSQB)) { + ptr += MINBPC(enc); + break; + } + if (HAS_CHARS(enc, ptr, end, 3)) { + if (! CHAR_MATCHES(enc, ptr + 2 * MINBPC(enc), ASCII_GT)) { + ptr += MINBPC(enc); + break; + } + *nextTokPtr = ptr + 2 * MINBPC(enc); + return XML_TOK_INVALID; + } + } + /* fall through */ + case BT_AMP: + case BT_LT: + case BT_NONXML: + case BT_MALFORM: + case BT_TRAIL: + case BT_CR: + case BT_LF: + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + default: + ptr += MINBPC(enc); + break; + } + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; +} + +/* ptr points to character following "%" */ + +static int PTRCALL +PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { + REQUIRE_CHAR(enc, ptr, end); + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) + case BT_S: + case BT_LF: + case BT_CR: + case BT_PERCNT: + *nextTokPtr = ptr; + return XML_TOK_PERCENT; + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_SEMI: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_PARAM_ENTITY_REF; + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + } + return XML_TOK_PARTIAL; +} + +static int PTRCALL +PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { + REQUIRE_CHAR(enc, ptr, end); + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_CR: + case BT_LF: + case BT_S: + case BT_RPAR: + case BT_GT: + case BT_PERCNT: + case BT_VERBAR: + *nextTokPtr = ptr; + return XML_TOK_POUND_NAME; + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + } + return -XML_TOK_POUND_NAME; +} + +static int PTRCALL +PREFIX(scanLit)(int open, const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { + while (HAS_CHAR(enc, ptr, end)) { + int t = BYTE_TYPE(enc, ptr); + switch (t) { + INVALID_CASES(ptr, nextTokPtr) + case BT_QUOT: + case BT_APOS: + ptr += MINBPC(enc); + if (t != open) + break; + if (! HAS_CHAR(enc, ptr, end)) + return -XML_TOK_LITERAL; + *nextTokPtr = ptr; + switch (BYTE_TYPE(enc, ptr)) { + case BT_S: + case BT_CR: + case BT_LF: + case BT_GT: + case BT_PERCNT: + case BT_LSQB: + return XML_TOK_LITERAL; + default: + return XML_TOK_INVALID; + } + default: + ptr += MINBPC(enc); + break; + } + } + return XML_TOK_PARTIAL; +} + +static int PTRCALL +PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { + int tok; + if (ptr >= end) + return XML_TOK_NONE; + if (MINBPC(enc) > 1) { + size_t n = end - ptr; + if (n & (MINBPC(enc) - 1)) { + n &= ~(MINBPC(enc) - 1); + if (n == 0) + return XML_TOK_PARTIAL; + end = ptr + n; + } + } + switch (BYTE_TYPE(enc, ptr)) { + case BT_QUOT: + return PREFIX(scanLit)(BT_QUOT, enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_APOS: + return PREFIX(scanLit)(BT_APOS, enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_LT: { + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + switch (BYTE_TYPE(enc, ptr)) { + case BT_EXCL: + return PREFIX(scanDecl)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_QUEST: + return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_NMSTRT: + case BT_HEX: + case BT_NONASCII: + case BT_LEAD2: + case BT_LEAD3: + case BT_LEAD4: + *nextTokPtr = ptr - MINBPC(enc); + return XML_TOK_INSTANCE_START; + } + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + case BT_CR: + if (ptr + MINBPC(enc) == end) { + *nextTokPtr = end; + /* indicate that this might be part of a CR/LF pair */ + return -XML_TOK_PROLOG_S; + } + /* fall through */ + case BT_S: + case BT_LF: + for (;;) { + ptr += MINBPC(enc); + if (! HAS_CHAR(enc, ptr, end)) + break; + switch (BYTE_TYPE(enc, ptr)) { + case BT_S: + case BT_LF: + break; + case BT_CR: + /* don't split CR/LF pair */ + if (ptr + MINBPC(enc) != end) + break; + /* fall through */ + default: + *nextTokPtr = ptr; + return XML_TOK_PROLOG_S; + } + } + *nextTokPtr = ptr; + return XML_TOK_PROLOG_S; + case BT_PERCNT: + return PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_COMMA: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_COMMA; + case BT_LSQB: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_OPEN_BRACKET; + case BT_RSQB: + ptr += MINBPC(enc); + if (! HAS_CHAR(enc, ptr, end)) + return -XML_TOK_CLOSE_BRACKET; + if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { + REQUIRE_CHARS(enc, ptr, end, 2); + if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_GT)) { + *nextTokPtr = ptr + 2 * MINBPC(enc); + return XML_TOK_COND_SECT_CLOSE; + } + } + *nextTokPtr = ptr; + return XML_TOK_CLOSE_BRACKET; + case BT_LPAR: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_OPEN_PAREN; + case BT_RPAR: + ptr += MINBPC(enc); + if (! HAS_CHAR(enc, ptr, end)) + return -XML_TOK_CLOSE_PAREN; + switch (BYTE_TYPE(enc, ptr)) { + case BT_AST: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_CLOSE_PAREN_ASTERISK; + case BT_QUEST: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_CLOSE_PAREN_QUESTION; + case BT_PLUS: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_CLOSE_PAREN_PLUS; + case BT_CR: + case BT_LF: + case BT_S: + case BT_GT: + case BT_COMMA: + case BT_VERBAR: + case BT_RPAR: + *nextTokPtr = ptr; + return XML_TOK_CLOSE_PAREN; + } + *nextTokPtr = ptr; + return XML_TOK_INVALID; + case BT_VERBAR: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_OR; + case BT_GT: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_DECL_CLOSE; + case BT_NUM: + return PREFIX(scanPoundName)(enc, ptr + MINBPC(enc), end, nextTokPtr); +# define LEAD_CASE(n) \ + case BT_LEAD##n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ + if (IS_NMSTRT_CHAR(enc, ptr, n)) { \ + ptr += n; \ + tok = XML_TOK_NAME; \ + break; \ + } \ + if (IS_NAME_CHAR(enc, ptr, n)) { \ + ptr += n; \ + tok = XML_TOK_NMTOKEN; \ + break; \ + } \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; + LEAD_CASE(2) + LEAD_CASE(3) + LEAD_CASE(4) +# undef LEAD_CASE + case BT_NMSTRT: + case BT_HEX: + tok = XML_TOK_NAME; + ptr += MINBPC(enc); + break; + case BT_DIGIT: + case BT_NAME: + case BT_MINUS: +# ifdef XML_NS + case BT_COLON: +# endif + tok = XML_TOK_NMTOKEN; + ptr += MINBPC(enc); + break; + case BT_NONASCII: + if (IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { + ptr += MINBPC(enc); + tok = XML_TOK_NAME; + break; + } + if (IS_NAME_CHAR_MINBPC(enc, ptr)) { + ptr += MINBPC(enc); + tok = XML_TOK_NMTOKEN; + break; + } + /* fall through */ + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_GT: + case BT_RPAR: + case BT_COMMA: + case BT_VERBAR: + case BT_LSQB: + case BT_PERCNT: + case BT_S: + case BT_CR: + case BT_LF: + *nextTokPtr = ptr; + return tok; +# ifdef XML_NS + case BT_COLON: + ptr += MINBPC(enc); + switch (tok) { + case XML_TOK_NAME: + REQUIRE_CHAR(enc, ptr, end); + tok = XML_TOK_PREFIXED_NAME; + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + default: + tok = XML_TOK_NMTOKEN; + break; + } + break; + case XML_TOK_PREFIXED_NAME: + tok = XML_TOK_NMTOKEN; + break; + } + break; +# endif + case BT_PLUS: + if (tok == XML_TOK_NMTOKEN) { + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_NAME_PLUS; + case BT_AST: + if (tok == XML_TOK_NMTOKEN) { + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_NAME_ASTERISK; + case BT_QUEST: + if (tok == XML_TOK_NMTOKEN) { + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_NAME_QUESTION; + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + } + return -tok; +} + +static int PTRCALL +PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { + const char *start; + if (ptr >= end) + return XML_TOK_NONE; + else if (! HAS_CHAR(enc, ptr, end)) { + /* This line cannot be executed. The incoming data has already + * been tokenized once, so incomplete characters like this have + * already been eliminated from the input. Retaining the paranoia + * check is still valuable, however. + */ + return XML_TOK_PARTIAL; /* LCOV_EXCL_LINE */ + } + start = ptr; + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { +# define LEAD_CASE(n) \ + case BT_LEAD##n: \ + ptr += n; \ + break; + LEAD_CASE(2) + LEAD_CASE(3) + LEAD_CASE(4) +# undef LEAD_CASE + case BT_AMP: + if (ptr == start) + return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_LT: + /* this is for inside entity references */ + *nextTokPtr = ptr; + return XML_TOK_INVALID; + case BT_LF: + if (ptr == start) { + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_DATA_NEWLINE; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_CR: + if (ptr == start) { + ptr += MINBPC(enc); + if (! HAS_CHAR(enc, ptr, end)) + return XML_TOK_TRAILING_CR; + if (BYTE_TYPE(enc, ptr) == BT_LF) + ptr += MINBPC(enc); + *nextTokPtr = ptr; + return XML_TOK_DATA_NEWLINE; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_S: + if (ptr == start) { + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_ATTRIBUTE_VALUE_S; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + default: + ptr += MINBPC(enc); + break; + } + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; +} + +static int PTRCALL +PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { + const char *start; + if (ptr >= end) + return XML_TOK_NONE; + else if (! HAS_CHAR(enc, ptr, end)) { + /* This line cannot be executed. The incoming data has already + * been tokenized once, so incomplete characters like this have + * already been eliminated from the input. Retaining the paranoia + * check is still valuable, however. + */ + return XML_TOK_PARTIAL; /* LCOV_EXCL_LINE */ + } + start = ptr; + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { +# define LEAD_CASE(n) \ + case BT_LEAD##n: \ + ptr += n; \ + break; + LEAD_CASE(2) + LEAD_CASE(3) + LEAD_CASE(4) +# undef LEAD_CASE + case BT_AMP: + if (ptr == start) + return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_PERCNT: + if (ptr == start) { + int tok = PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr); + return (tok == XML_TOK_PERCENT) ? XML_TOK_INVALID : tok; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_LF: + if (ptr == start) { + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_DATA_NEWLINE; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_CR: + if (ptr == start) { + ptr += MINBPC(enc); + if (! HAS_CHAR(enc, ptr, end)) + return XML_TOK_TRAILING_CR; + if (BYTE_TYPE(enc, ptr) == BT_LF) + ptr += MINBPC(enc); + *nextTokPtr = ptr; + return XML_TOK_DATA_NEWLINE; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + default: + ptr += MINBPC(enc); + break; + } + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; +} + +# ifdef XML_DTD + +static int PTRCALL +PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { + int level = 0; + if (MINBPC(enc) > 1) { + size_t n = end - ptr; + if (n & (MINBPC(enc) - 1)) { + n &= ~(MINBPC(enc) - 1); + end = ptr + n; + } + } + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { + INVALID_CASES(ptr, nextTokPtr) + case BT_LT: + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + if (CHAR_MATCHES(enc, ptr, ASCII_EXCL)) { + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + if (CHAR_MATCHES(enc, ptr, ASCII_LSQB)) { + ++level; + ptr += MINBPC(enc); + } + } + break; + case BT_RSQB: + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + if (CHAR_MATCHES(enc, ptr, ASCII_GT)) { + ptr += MINBPC(enc); + if (level == 0) { + *nextTokPtr = ptr; + return XML_TOK_IGNORE_SECT; + } + --level; + } + } + break; + default: + ptr += MINBPC(enc); + break; + } + } + return XML_TOK_PARTIAL; +} + +# endif /* XML_DTD */ + +static int PTRCALL +PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end, + const char **badPtr) { + ptr += MINBPC(enc); + end -= MINBPC(enc); + for (; HAS_CHAR(enc, ptr, end); ptr += MINBPC(enc)) { + switch (BYTE_TYPE(enc, ptr)) { + case BT_DIGIT: + case BT_HEX: + case BT_MINUS: + case BT_APOS: + case BT_LPAR: + case BT_RPAR: + case BT_PLUS: + case BT_COMMA: + case BT_SOL: + case BT_EQUALS: + case BT_QUEST: + case BT_CR: + case BT_LF: + case BT_SEMI: + case BT_EXCL: + case BT_AST: + case BT_PERCNT: + case BT_NUM: +# ifdef XML_NS + case BT_COLON: +# endif + break; + case BT_S: + if (CHAR_MATCHES(enc, ptr, ASCII_TAB)) { + *badPtr = ptr; + return 0; + } + break; + case BT_NAME: + case BT_NMSTRT: + if (! (BYTE_TO_ASCII(enc, ptr) & ~0x7f)) + break; + /* fall through */ + default: + switch (BYTE_TO_ASCII(enc, ptr)) { + case 0x24: /* $ */ + case 0x40: /* @ */ + break; + default: + *badPtr = ptr; + return 0; + } + break; + } + } + return 1; +} + +/* This must only be called for a well-formed start-tag or empty + element tag. Returns the number of attributes. Pointers to the + first attsMax attributes are stored in atts. +*/ + +static int PTRCALL +PREFIX(getAtts)(const ENCODING *enc, const char *ptr, int attsMax, + ATTRIBUTE *atts) { + enum { other, inName, inValue } state = inName; + int nAtts = 0; + int open = 0; /* defined when state == inValue; + initialization just to shut up compilers */ + + for (ptr += MINBPC(enc);; ptr += MINBPC(enc)) { + switch (BYTE_TYPE(enc, ptr)) { +# define START_NAME \ + if (state == other) { \ + if (nAtts < attsMax) { \ + atts[nAtts].name = ptr; \ + atts[nAtts].normalized = 1; \ + } \ + state = inName; \ + } +# define LEAD_CASE(n) \ + case BT_LEAD##n: \ + START_NAME ptr += (n - MINBPC(enc)); \ + break; + LEAD_CASE(2) + LEAD_CASE(3) + LEAD_CASE(4) +# undef LEAD_CASE + case BT_NONASCII: + case BT_NMSTRT: + case BT_HEX: + START_NAME + break; +# undef START_NAME + case BT_QUOT: + if (state != inValue) { + if (nAtts < attsMax) + atts[nAtts].valuePtr = ptr + MINBPC(enc); + state = inValue; + open = BT_QUOT; + } else if (open == BT_QUOT) { + state = other; + if (nAtts < attsMax) + atts[nAtts].valueEnd = ptr; + nAtts++; + } + break; + case BT_APOS: + if (state != inValue) { + if (nAtts < attsMax) + atts[nAtts].valuePtr = ptr + MINBPC(enc); + state = inValue; + open = BT_APOS; + } else if (open == BT_APOS) { + state = other; + if (nAtts < attsMax) + atts[nAtts].valueEnd = ptr; + nAtts++; + } + break; + case BT_AMP: + if (nAtts < attsMax) + atts[nAtts].normalized = 0; + break; + case BT_S: + if (state == inName) + state = other; + else if (state == inValue && nAtts < attsMax && atts[nAtts].normalized + && (ptr == atts[nAtts].valuePtr + || BYTE_TO_ASCII(enc, ptr) != ASCII_SPACE + || BYTE_TO_ASCII(enc, ptr + MINBPC(enc)) == ASCII_SPACE + || BYTE_TYPE(enc, ptr + MINBPC(enc)) == open)) + atts[nAtts].normalized = 0; + break; + case BT_CR: + case BT_LF: + /* This case ensures that the first attribute name is counted + Apart from that we could just change state on the quote. */ + if (state == inName) + state = other; + else if (state == inValue && nAtts < attsMax) + atts[nAtts].normalized = 0; + break; + case BT_GT: + case BT_SOL: + if (state != inValue) + return nAtts; + break; + default: + break; + } + } + /* not reached */ +} + +static int PTRFASTCALL +PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr) { + int result = 0; + /* skip &# */ + UNUSED_P(enc); + ptr += 2 * MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_x)) { + for (ptr += MINBPC(enc); ! CHAR_MATCHES(enc, ptr, ASCII_SEMI); + ptr += MINBPC(enc)) { + int c = BYTE_TO_ASCII(enc, ptr); + switch (c) { + case ASCII_0: + case ASCII_1: + case ASCII_2: + case ASCII_3: + case ASCII_4: + case ASCII_5: + case ASCII_6: + case ASCII_7: + case ASCII_8: + case ASCII_9: + result <<= 4; + result |= (c - ASCII_0); + break; + case ASCII_A: + case ASCII_B: + case ASCII_C: + case ASCII_D: + case ASCII_E: + case ASCII_F: + result <<= 4; + result += 10 + (c - ASCII_A); + break; + case ASCII_a: + case ASCII_b: + case ASCII_c: + case ASCII_d: + case ASCII_e: + case ASCII_f: + result <<= 4; + result += 10 + (c - ASCII_a); + break; + } + if (result >= 0x110000) + return -1; + } + } else { + for (; ! CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) { + int c = BYTE_TO_ASCII(enc, ptr); + result *= 10; + result += (c - ASCII_0); + if (result >= 0x110000) + return -1; + } + } + return checkCharRefNumber(result); +} + +static int PTRCALL +PREFIX(predefinedEntityName)(const ENCODING *enc, const char *ptr, + const char *end) { + UNUSED_P(enc); + switch ((end - ptr) / MINBPC(enc)) { + case 2: + if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_t)) { + switch (BYTE_TO_ASCII(enc, ptr)) { + case ASCII_l: + return ASCII_LT; + case ASCII_g: + return ASCII_GT; + } + } + break; + case 3: + if (CHAR_MATCHES(enc, ptr, ASCII_a)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_m)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_p)) + return ASCII_AMP; + } + } + break; + case 4: + switch (BYTE_TO_ASCII(enc, ptr)) { + case ASCII_q: + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_u)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_o)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_t)) + return ASCII_QUOT; + } + } + break; + case ASCII_a: + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_p)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_o)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_s)) + return ASCII_APOS; + } + } + break; + } + } + return 0; +} + +static int PTRCALL +PREFIX(nameMatchesAscii)(const ENCODING *enc, const char *ptr1, + const char *end1, const char *ptr2) { + UNUSED_P(enc); + for (; *ptr2; ptr1 += MINBPC(enc), ptr2++) { + if (end1 - ptr1 < MINBPC(enc)) { + /* This line cannot be executed. The incoming data has already + * been tokenized once, so incomplete characters like this have + * already been eliminated from the input. Retaining the + * paranoia check is still valuable, however. + */ + return 0; /* LCOV_EXCL_LINE */ + } + if (! CHAR_MATCHES(enc, ptr1, *ptr2)) + return 0; + } + return ptr1 == end1; +} + +static int PTRFASTCALL +PREFIX(nameLength)(const ENCODING *enc, const char *ptr) { + const char *start = ptr; + for (;;) { + switch (BYTE_TYPE(enc, ptr)) { +# define LEAD_CASE(n) \ + case BT_LEAD##n: \ + ptr += n; \ + break; + LEAD_CASE(2) + LEAD_CASE(3) + LEAD_CASE(4) +# undef LEAD_CASE + case BT_NONASCII: + case BT_NMSTRT: +# ifdef XML_NS + case BT_COLON: +# endif + case BT_HEX: + case BT_DIGIT: + case BT_NAME: + case BT_MINUS: + ptr += MINBPC(enc); + break; + default: + return (int)(ptr - start); + } + } +} + +static const char *PTRFASTCALL +PREFIX(skipS)(const ENCODING *enc, const char *ptr) { + for (;;) { + switch (BYTE_TYPE(enc, ptr)) { + case BT_LF: + case BT_CR: + case BT_S: + ptr += MINBPC(enc); + break; + default: + return ptr; + } + } +} + +static void PTRCALL +PREFIX(updatePosition)(const ENCODING *enc, const char *ptr, const char *end, + POSITION *pos) { + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { +# define LEAD_CASE(n) \ + case BT_LEAD##n: \ + ptr += n; \ + pos->columnNumber++; \ + break; + LEAD_CASE(2) + LEAD_CASE(3) + LEAD_CASE(4) +# undef LEAD_CASE + case BT_LF: + pos->columnNumber = 0; + pos->lineNumber++; + ptr += MINBPC(enc); + break; + case BT_CR: + pos->lineNumber++; + ptr += MINBPC(enc); + if (HAS_CHAR(enc, ptr, end) && BYTE_TYPE(enc, ptr) == BT_LF) + ptr += MINBPC(enc); + pos->columnNumber = 0; + break; + default: + ptr += MINBPC(enc); + pos->columnNumber++; + break; + } + } +} + +# undef DO_LEAD_CASE +# undef MULTIBYTE_CASES +# undef INVALID_CASES +# undef CHECK_NAME_CASE +# undef CHECK_NAME_CASES +# undef CHECK_NMSTRT_CASE +# undef CHECK_NMSTRT_CASES + +#endif /* XML_TOK_IMPL_C */ diff --git a/3rdparty/expat/lib/xmltok_impl.h b/3rdparty/expat/lib/xmltok_impl.h new file mode 100644 index 0000000..e925dbc --- /dev/null +++ b/3rdparty/expat/lib/xmltok_impl.h @@ -0,0 +1,73 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +enum { + BT_NONXML, /* e.g. noncharacter-FFFF */ + BT_MALFORM, /* illegal, with regard to encoding */ + BT_LT, /* less than = "<" */ + BT_AMP, /* ampersand = "&" */ + BT_RSQB, /* right square bracket = "[" */ + BT_LEAD2, /* lead byte of a 2-byte UTF-8 character */ + BT_LEAD3, /* lead byte of a 3-byte UTF-8 character */ + BT_LEAD4, /* lead byte of a 4-byte UTF-8 character */ + BT_TRAIL, /* trailing unit, e.g. second 16-bit unit of a 4-byte char. */ + BT_CR, /* carriage return = "\r" */ + BT_LF, /* line feed = "\n" */ + BT_GT, /* greater than = ">" */ + BT_QUOT, /* quotation character = "\"" */ + BT_APOS, /* aposthrophe = "'" */ + BT_EQUALS, /* equal sign = "=" */ + BT_QUEST, /* question mark = "?" */ + BT_EXCL, /* exclamation mark = "!" */ + BT_SOL, /* solidus, slash = "/" */ + BT_SEMI, /* semicolon = ";" */ + BT_NUM, /* number sign = "#" */ + BT_LSQB, /* left square bracket = "[" */ + BT_S, /* white space, e.g. "\t", " "[, "\r"] */ + BT_NMSTRT, /* non-hex name start letter = "G".."Z" + "g".."z" + "_" */ + BT_COLON, /* colon = ":" */ + BT_HEX, /* hex letter = "A".."F" + "a".."f" */ + BT_DIGIT, /* digit = "0".."9" */ + BT_NAME, /* dot and middle dot = "." + chr(0xb7) */ + BT_MINUS, /* minus = "-" */ + BT_OTHER, /* known not to be a name or name start character */ + BT_NONASCII, /* might be a name or name start character */ + BT_PERCNT, /* percent sign = "%" */ + BT_LPAR, /* left parenthesis = "(" */ + BT_RPAR, /* right parenthesis = "(" */ + BT_AST, /* asterisk = "*" */ + BT_PLUS, /* plus sign = "+" */ + BT_COMMA, /* comma = "," */ + BT_VERBAR /* vertical bar = "|" */ +}; + +#include diff --git a/3rdparty/expat/lib/xmltok_ns.c b/3rdparty/expat/lib/xmltok_ns.c new file mode 100644 index 0000000..919c74e --- /dev/null +++ b/3rdparty/expat/lib/xmltok_ns.c @@ -0,0 +1,118 @@ +/* This file is included! + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifdef XML_TOK_NS_C + +const ENCODING * +NS(XmlGetUtf8InternalEncoding)(void) { + return &ns(internal_utf8_encoding).enc; +} + +const ENCODING * +NS(XmlGetUtf16InternalEncoding)(void) { +# if BYTEORDER == 1234 + return &ns(internal_little2_encoding).enc; +# elif BYTEORDER == 4321 + return &ns(internal_big2_encoding).enc; +# else + const short n = 1; + return (*(const char *)&n ? &ns(internal_little2_encoding).enc + : &ns(internal_big2_encoding).enc); +# endif +} + +static const ENCODING *const NS(encodings)[] = { + &ns(latin1_encoding).enc, &ns(ascii_encoding).enc, + &ns(utf8_encoding).enc, &ns(big2_encoding).enc, + &ns(big2_encoding).enc, &ns(little2_encoding).enc, + &ns(utf8_encoding).enc /* NO_ENC */ +}; + +static int PTRCALL +NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { + return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_PROLOG_STATE, + ptr, end, nextTokPtr); +} + +static int PTRCALL +NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { + return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_CONTENT_STATE, + ptr, end, nextTokPtr); +} + +int +NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr, + const char *name) { + int i = getEncodingIndex(name); + if (i == UNKNOWN_ENC) + return 0; + SET_INIT_ENC_INDEX(p, i); + p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog); + p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent); + p->initEnc.updatePosition = initUpdatePosition; + p->encPtr = encPtr; + *encPtr = &(p->initEnc); + return 1; +} + +static const ENCODING * +NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) { +# define ENCODING_MAX 128 + char buf[ENCODING_MAX]; + char *p = buf; + int i; + XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1); + if (ptr != end) + return 0; + *p = 0; + if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2) + return enc; + i = getEncodingIndex(buf); + if (i == UNKNOWN_ENC) + return 0; + return NS(encodings)[i]; +} + +int +NS(XmlParseXmlDecl)(int isGeneralTextEntity, const ENCODING *enc, + const char *ptr, const char *end, const char **badPtr, + const char **versionPtr, const char **versionEndPtr, + const char **encodingName, const ENCODING **encoding, + int *standalone) { + return doParseXmlDecl(NS(findEncoding), isGeneralTextEntity, enc, ptr, end, + badPtr, versionPtr, versionEndPtr, encodingName, + encoding, standalone); +} + +#endif /* XML_TOK_NS_C */ diff --git a/3rdparty/expat/m4/libtool.m4 b/3rdparty/expat/m4/libtool.m4 new file mode 100644 index 0000000..ae7c906 --- /dev/null +++ b/3rdparty/expat/m4/libtool.m4 @@ -0,0 +1,8387 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 2014 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 +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +]) + +# serial 58 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + +# _LT_CC_BASENAME(CC) +# ------------------- +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. +m4_defun([_LT_CC_BASENAME], +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from 'configure', and 'config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain=$ac_aux_dir/ltmain.sh +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the 'libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags='_LT_TAGS'dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# '#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test 0 = "$lt_write_fail" && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +'$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test 0 != $[#] +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try '$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try '$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test yes = "$silent" && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# 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. +# Written by Gordon Matzigkeit, 1996 + +_LT_COPYING +_LT_LIBTOOL_TAGS + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS=$save_LDFLAGS + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[[012]][[,.]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test yes = "$lt_cv_ld_force_load"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + m4_if([$1], [CXX], +[ if test yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case $ECHO in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([$with_sysroot]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and where our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*|powerpc64le-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + 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" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test yes = "[$]$2"; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS +]) + +if test yes = "[$]$2"; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, 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*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n "$lt_cv_sys_max_cmd_len"; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes = "$cross_compiling"; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen=shl_load], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen=dlopen], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links=nottested +if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test no = "$hard_links"; then + AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", + [Define to the sub-directory where libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then + + # We can hardcode non-existent directories. + if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && + test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || + test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$versuffix$shared_ext $libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .bundle || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + # Handle Gentoo/FreeBSD as it was Linux + case $host_vendor in + gentoo) + version_type=linux ;; + *) + version_type=freebsd-$objformat ;; + esac + + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + linux) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + need_lib_prefix=no + need_version=no + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program that can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac]) +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program that can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test no = "$withval" || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# '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 +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi]) +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_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 + fi + rm -f conftest*]) +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +AC_DEFUN([_LT_DLL_DEF_P], +[dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +])# _LT_DLL_DEF_P + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM=-lm) + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){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 + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], + [Transform the output of nm into a list of symbols to manually relocate]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], + [The name lister interface]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test yes = "$GCC"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS=$save_LDFLAGS]) + if test yes = "$lt_cv_irix_exported_symbol"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + osf3*) + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting $shlibpath_var if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC=$CC +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report what library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC=$lt_save_CC +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + + _LT_TAGVAR(GCC, $1)=$GXX + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)=$prev$p + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)=$p + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)=$p + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test no = "$F77"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_F77"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$G77 + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_F77" + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test no = "$FC"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_FC"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_FC" + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code=$lt_simple_compile_test_code + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +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], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine what file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/3rdparty/expat/m4/ltoptions.m4 b/3rdparty/expat/m4/ltoptions.m4 new file mode 100644 index 0000000..94b0829 --- /dev/null +++ b/3rdparty/expat/m4/ltoptions.m4 @@ -0,0 +1,437 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 8 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option '$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl 'shared' nor 'disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --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'. +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], + [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]) + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-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@:>@], + [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])]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/3rdparty/expat/m4/ltsugar.m4 b/3rdparty/expat/m4/ltsugar.m4 new file mode 100644 index 0000000..48bc934 --- /dev/null +++ b/3rdparty/expat/m4/ltsugar.m4 @@ -0,0 +1,124 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59, which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/3rdparty/expat/m4/ltversion.m4 b/3rdparty/expat/m4/ltversion.m4 new file mode 100644 index 0000000..fa04b52 --- /dev/null +++ b/3rdparty/expat/m4/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 4179 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.6]) +m4_define([LT_PACKAGE_REVISION], [2.4.6]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.6' +macro_revision='2.4.6' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/3rdparty/expat/m4/lt~obsolete.m4 b/3rdparty/expat/m4/lt~obsolete.m4 new file mode 100644 index 0000000..c6b26f8 --- /dev/null +++ b/3rdparty/expat/m4/lt~obsolete.m4 @@ -0,0 +1,99 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/3rdparty/expat/run.sh.in b/3rdparty/expat/run.sh.in new file mode 100644 index 0000000..ff3fb36 --- /dev/null +++ b/3rdparty/expat/run.sh.in @@ -0,0 +1,12 @@ +#! /usr/bin/env bash +# Copyright (C) 2017 Expat development team +# Licensed under the MIT license + +case "@host@" in +*-mingw*) + exec wine "$@" + ;; +*) + exec "$@" + ;; +esac diff --git a/3rdparty/expat/test-driver-wrapper.sh b/3rdparty/expat/test-driver-wrapper.sh new file mode 100755 index 0000000..36a1852 --- /dev/null +++ b/3rdparty/expat/test-driver-wrapper.sh @@ -0,0 +1,43 @@ +#! /usr/bin/env bash +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +set -e +top_srcdir="$(dirname "$(type -p "$0")")" +top_builddir=.. + +# Suck up all dash-dash test-driver arguments +test_driver_args=() +while [[ ${1} != '--' ]]; do + test_driver_args=( "${test_driver_args[@]}" "${1}" ) + shift +done +shift # drop "--" + +exec "${top_srcdir}"/conftools/test-driver "${test_driver_args[@]}" "${top_builddir}"/run.sh "$@" diff --git a/3rdparty/expat/tests/Makefile.am b/3rdparty/expat/tests/Makefile.am new file mode 100644 index 0000000..e19fc1a --- /dev/null +++ b/3rdparty/expat/tests/Makefile.am @@ -0,0 +1,66 @@ +# +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +SUBDIRS = . benchmark + +AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(srcdir)/../lib + +noinst_LIBRARIES = libruntests.a + +check_PROGRAMS = runtests runtestspp +TESTS = runtests runtestspp + +# To support MinGW and Non-MinGW at the same time: +LOG_DRIVER = $(srcdir)/../test-driver-wrapper.sh + +libruntests_a_SOURCES = \ + chardata.c \ + structdata.c \ + memcheck.c \ + minicheck.c + +runtests_SOURCES = \ + runtests.c + +runtestspp_SOURCES = \ + runtestspp.cpp + +runtests_LDADD = libruntests.a ../lib/libexpat.la +runtestspp_LDADD = libruntests.a ../lib/libexpat.la + +EXTRA_DIST = \ + chardata.h \ + structdata.h \ + minicheck.h \ + memcheck.h \ + README.txt \ + udiffer.py \ + xmltest.log.expected \ + xmltest.sh diff --git a/3rdparty/expat/tests/Makefile.in b/3rdparty/expat/tests/Makefile.in new file mode 100644 index 0000000..8b9b38e --- /dev/null +++ b/3rdparty/expat/tests/Makefile.in @@ -0,0 +1,1254 @@ +# Makefile.in generated by automake 1.16.2 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2020 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = runtests$(EXEEXT) runtestspp$(EXEEXT) +TESTS = runtests$(EXEEXT) runtestspp$(EXEEXT) +subdir = tests +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/conftools/ax-require-defined.m4 \ + $(top_srcdir)/conftools/ax-check-compile-flag.m4 \ + $(top_srcdir)/conftools/ax-check-link-flag.m4 \ + $(top_srcdir)/conftools/ax-append-flag.m4 \ + $(top_srcdir)/conftools/ax-append-compile-flags.m4 \ + $(top_srcdir)/conftools/ax-append-link-flags.m4 \ + $(top_srcdir)/conftools/expatcfg-compiler-supports-visibility.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/expat_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libruntests_a_AR = $(AR) $(ARFLAGS) +libruntests_a_LIBADD = +am_libruntests_a_OBJECTS = chardata.$(OBJEXT) structdata.$(OBJEXT) \ + memcheck.$(OBJEXT) minicheck.$(OBJEXT) +libruntests_a_OBJECTS = $(am_libruntests_a_OBJECTS) +am_runtests_OBJECTS = runtests.$(OBJEXT) +runtests_OBJECTS = $(am_runtests_OBJECTS) +runtests_DEPENDENCIES = libruntests.a ../lib/libexpat.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_runtestspp_OBJECTS = runtestspp.$(OBJEXT) +runtestspp_OBJECTS = $(am_runtestspp_OBJECTS) +runtestspp_DEPENDENCIES = libruntests.a ../lib/libexpat.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/conftools/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/chardata.Po ./$(DEPDIR)/memcheck.Po \ + ./$(DEPDIR)/minicheck.Po ./$(DEPDIR)/runtests.Po \ + ./$(DEPDIR)/runtestspp.Po ./$(DEPDIR)/structdata.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +SOURCES = $(libruntests_a_SOURCES) $(runtests_SOURCES) \ + $(runtestspp_SOURCES) +DIST_SOURCES = $(libruntests_a_SOURCES) $(runtests_SOURCES) \ + $(runtestspp_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + check recheck distdir distdir-am +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/conftools/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/conftools/depcomp \ + $(top_srcdir)/conftools/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(srcdir)/../lib +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILEMAP = @FILEMAP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBAGE = @LIBAGE@ +LIBCURRENT = @LIBCURRENT@ +LIBOBJS = @LIBOBJS@ +LIBREVISION = @LIBREVISION@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +_EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = . benchmark +noinst_LIBRARIES = libruntests.a + +# To support MinGW and Non-MinGW at the same time: +LOG_DRIVER = $(srcdir)/../test-driver-wrapper.sh +libruntests_a_SOURCES = \ + chardata.c \ + structdata.c \ + memcheck.c \ + minicheck.c + +runtests_SOURCES = \ + runtests.c + +runtestspp_SOURCES = \ + runtestspp.cpp + +runtests_LDADD = libruntests.a ../lib/libexpat.la +runtestspp_LDADD = libruntests.a ../lib/libexpat.la +EXTRA_DIST = \ + chardata.h \ + structdata.h \ + minicheck.h \ + memcheck.h \ + README.txt \ + udiffer.py \ + xmltest.log.expected \ + xmltest.sh + +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .cpp .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tests/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +libruntests.a: $(libruntests_a_OBJECTS) $(libruntests_a_DEPENDENCIES) $(EXTRA_libruntests_a_DEPENDENCIES) + $(AM_V_at)-rm -f libruntests.a + $(AM_V_AR)$(libruntests_a_AR) libruntests.a $(libruntests_a_OBJECTS) $(libruntests_a_LIBADD) + $(AM_V_at)$(RANLIB) libruntests.a + +runtests$(EXEEXT): $(runtests_OBJECTS) $(runtests_DEPENDENCIES) $(EXTRA_runtests_DEPENDENCIES) + @rm -f runtests$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(runtests_OBJECTS) $(runtests_LDADD) $(LIBS) + +runtestspp$(EXEEXT): $(runtestspp_OBJECTS) $(runtestspp_DEPENDENCIES) $(EXTRA_runtestspp_DEPENDENCIES) + @rm -f runtestspp$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(runtestspp_OBJECTS) $(runtestspp_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chardata.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memcheck.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/minicheck.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runtests.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runtestspp.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/structdata.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: $(check_PROGRAMS) + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +runtests.log: runtests$(EXEEXT) + @p='runtests$(EXEEXT)'; \ + b='runtests'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +runtestspp.log: runtestspp$(EXEEXT) + @p='runtestspp$(EXEEXT)'; \ + b='runtestspp'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-recursive +all-am: Makefile $(LIBRARIES) +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLIBRARIES mostlyclean-am + +distclean: distclean-recursive + -rm -f ./$(DEPDIR)/chardata.Po + -rm -f ./$(DEPDIR)/memcheck.Po + -rm -f ./$(DEPDIR)/minicheck.Po + -rm -f ./$(DEPDIR)/runtests.Po + -rm -f ./$(DEPDIR)/runtestspp.Po + -rm -f ./$(DEPDIR)/structdata.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f ./$(DEPDIR)/chardata.Po + -rm -f ./$(DEPDIR)/memcheck.Po + -rm -f ./$(DEPDIR)/minicheck.Po + -rm -f ./$(DEPDIR)/runtests.Po + -rm -f ./$(DEPDIR)/runtestspp.Po + -rm -f ./$(DEPDIR)/structdata.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) check-am install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--depfiles check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \ + uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/3rdparty/expat/tests/README.txt b/3rdparty/expat/tests/README.txt new file mode 100644 index 0000000..30e1d4d --- /dev/null +++ b/3rdparty/expat/tests/README.txt @@ -0,0 +1,13 @@ +This directory contains the (fledgling) test suite for Expat. The +tests provide general unit testing and regression coverage. The tests +are not expected to be useful examples of Expat usage; see the +examples/ directory for that. + +The Expat tests use a partial internal implementation of the "Check" +unit testing framework for C. More information on Check can be found at: + + http://check.sourceforge.net/ + +Expat must be built and, depending on platform, must be installed, before "make check" can be executed. + +This test suite can all change in a later version. diff --git a/3rdparty/expat/tests/benchmark/Makefile.am b/3rdparty/expat/tests/benchmark/Makefile.am new file mode 100644 index 0000000..5ea8dc1 --- /dev/null +++ b/3rdparty/expat/tests/benchmark/Makefile.am @@ -0,0 +1,40 @@ +# +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(srcdir)/../../lib + +noinst_PROGRAMS = benchmark + +benchmark_SOURCES = benchmark.c + +benchmark_LDADD = ../../lib/libexpat.la + +EXTRA_DIST = \ + README.txt diff --git a/3rdparty/expat/tests/benchmark/Makefile.in b/3rdparty/expat/tests/benchmark/Makefile.in new file mode 100644 index 0000000..665bca3 --- /dev/null +++ b/3rdparty/expat/tests/benchmark/Makefile.in @@ -0,0 +1,651 @@ +# Makefile.in generated by automake 1.16.2 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2020 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +noinst_PROGRAMS = benchmark$(EXEEXT) +subdir = tests/benchmark +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/conftools/ax-require-defined.m4 \ + $(top_srcdir)/conftools/ax-check-compile-flag.m4 \ + $(top_srcdir)/conftools/ax-check-link-flag.m4 \ + $(top_srcdir)/conftools/ax-append-flag.m4 \ + $(top_srcdir)/conftools/ax-append-compile-flags.m4 \ + $(top_srcdir)/conftools/ax-append-link-flags.m4 \ + $(top_srcdir)/conftools/expatcfg-compiler-supports-visibility.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/expat_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am_benchmark_OBJECTS = benchmark.$(OBJEXT) +benchmark_OBJECTS = $(am_benchmark_OBJECTS) +benchmark_DEPENDENCIES = ../../lib/libexpat.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/conftools/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/benchmark.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(benchmark_SOURCES) +DIST_SOURCES = $(benchmark_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/conftools/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(srcdir)/../../lib +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILEMAP = @FILEMAP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBAGE = @LIBAGE@ +LIBCURRENT = @LIBCURRENT@ +LIBOBJS = @LIBOBJS@ +LIBREVISION = @LIBREVISION@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +_EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +benchmark_SOURCES = benchmark.c +benchmark_LDADD = ../../lib/libexpat.la +EXTRA_DIST = \ + README.txt + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/benchmark/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tests/benchmark/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +benchmark$(EXEEXT): $(benchmark_OBJECTS) $(benchmark_DEPENDENCIES) $(EXTRA_benchmark_DEPENDENCIES) + @rm -f benchmark$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(benchmark_OBJECTS) $(benchmark_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/benchmark.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/benchmark.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/benchmark.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/3rdparty/expat/tests/benchmark/README.txt b/3rdparty/expat/tests/benchmark/README.txt new file mode 100644 index 0000000..86414d5 --- /dev/null +++ b/3rdparty/expat/tests/benchmark/README.txt @@ -0,0 +1,16 @@ +Use this benchmark command line utility as follows: + + benchmark [-n] <# iterations> + +The command line arguments are: + + -n ... optional; if supplied, namespace processing is turned on + ... name/path of test xml file + ... size of processing buffer; + the file is parsed in chunks of this size + <# iterations> ... how often will the file be parsed + +Returns: + + The time (in seconds) it takes to parse the test file, + averaged over the number of iterations.@ diff --git a/3rdparty/expat/tests/benchmark/benchmark.c b/3rdparty/expat/tests/benchmark/benchmark.c new file mode 100644 index 0000000..fda8268 --- /dev/null +++ b/3rdparty/expat/tests/benchmark/benchmark.c @@ -0,0 +1,145 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include +#include +#include +#include +#include "expat.h" + +#ifdef XML_LARGE_SIZE +# define XML_FMT_INT_MOD "ll" +#else +# define XML_FMT_INT_MOD "l" +#endif + +#ifdef XML_UNICODE_WCHAR_T +# define XML_FMT_STR "ls" +#else +# define XML_FMT_STR "s" +#endif + +static void +usage(const char *prog, int rc) { + fprintf(stderr, "usage: %s [-n] filename bufferSize nr_of_loops\n", prog); + exit(rc); +} + +int +main(int argc, char *argv[]) { + XML_Parser parser; + char *XMLBuf, *XMLBufEnd, *XMLBufPtr; + FILE *fd; + struct stat fileAttr; + int nrOfLoops, bufferSize, fileSize, i, isFinal; + int j = 0, ns = 0; + clock_t tstart, tend; + double cpuTime = 0.0; + + if (argc > 1) { + if (argv[1][0] == '-') { + if (argv[1][1] == 'n' && argv[1][2] == '\0') { + ns = 1; + j = 1; + } else + usage(argv[0], 1); + } + } + + if (argc != j + 4) + usage(argv[0], 1); + + if (stat(argv[j + 1], &fileAttr) != 0) { + fprintf(stderr, "could not access file '%s'\n", argv[j + 1]); + return 2; + } + + fd = fopen(argv[j + 1], "r"); + if (! fd) { + fprintf(stderr, "could not open file '%s'\n", argv[j + 1]); + exit(2); + } + + bufferSize = atoi(argv[j + 2]); + nrOfLoops = atoi(argv[j + 3]); + if (bufferSize <= 0 || nrOfLoops <= 0) { + fprintf(stderr, "buffer size and nr of loops must be greater than zero.\n"); + exit(3); + } + + XMLBuf = malloc(fileAttr.st_size); + fileSize = fread(XMLBuf, sizeof(char), fileAttr.st_size, fd); + fclose(fd); + + if (ns) + parser = XML_ParserCreateNS(NULL, '!'); + else + parser = XML_ParserCreate(NULL); + + i = 0; + XMLBufEnd = XMLBuf + fileSize; + while (i < nrOfLoops) { + XMLBufPtr = XMLBuf; + isFinal = 0; + tstart = clock(); + do { + int parseBufferSize = XMLBufEnd - XMLBufPtr; + if (parseBufferSize <= bufferSize) + isFinal = 1; + else + parseBufferSize = bufferSize; + if (! XML_Parse(parser, XMLBufPtr, parseBufferSize, isFinal)) { + fprintf(stderr, + "error '%" XML_FMT_STR "' at line %" XML_FMT_INT_MOD + "u character %" XML_FMT_INT_MOD "u\n", + XML_ErrorString(XML_GetErrorCode(parser)), + XML_GetCurrentLineNumber(parser), + XML_GetCurrentColumnNumber(parser)); + free(XMLBuf); + XML_ParserFree(parser); + exit(4); + } + XMLBufPtr += bufferSize; + } while (! isFinal); + tend = clock(); + cpuTime += ((double)(tend - tstart)) / CLOCKS_PER_SEC; + XML_ParserReset(parser, NULL); + i++; + } + + XML_ParserFree(parser); + free(XMLBuf); + + printf("%d loops, with buffer size %d. Average time per loop: %f\n", + nrOfLoops, bufferSize, cpuTime / (double)nrOfLoops); + return 0; +} diff --git a/3rdparty/expat/tests/chardata.c b/3rdparty/expat/tests/chardata.c new file mode 100644 index 0000000..75a5016 --- /dev/null +++ b/3rdparty/expat/tests/chardata.c @@ -0,0 +1,98 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifdef HAVE_EXPAT_CONFIG_H +# include +#endif +#include "minicheck.h" + +#include +#include +#include + +#include "chardata.h" + +static int +xmlstrlen(const XML_Char *s) { + int len = 0; + assert(s != NULL); + while (s[len] != 0) + ++len; + return len; +} + +void +CharData_Init(CharData *storage) { + assert(storage != NULL); + storage->count = -1; +} + +void +CharData_AppendXMLChars(CharData *storage, const XML_Char *s, int len) { + int maxchars; + + assert(storage != NULL); + assert(s != NULL); + maxchars = sizeof(storage->data) / sizeof(storage->data[0]); + if (storage->count < 0) + storage->count = 0; + if (len < 0) + len = xmlstrlen(s); + if ((len + storage->count) > maxchars) { + len = (maxchars - storage->count); + } + if (len + storage->count < (int)sizeof(storage->data)) { + memcpy(storage->data + storage->count, s, len * sizeof(storage->data[0])); + storage->count += len; + } +} + +int +CharData_CheckXMLChars(CharData *storage, const XML_Char *expected) { + char buffer[1024]; + int len = xmlstrlen(expected); + int count; + + assert(storage != NULL); + count = (storage->count < 0) ? 0 : storage->count; + if (len != count) { + sprintf(buffer, "wrong number of data characters: got %d, expected %d", + count, len); + fail(buffer); + return 0; + } + if (memcmp(expected, storage->data, len * sizeof(storage->data[0])) != 0) { + fail("got bad data bytes"); + return 0; + } + return 1; +} diff --git a/3rdparty/expat/tests/chardata.h b/3rdparty/expat/tests/chardata.h new file mode 100644 index 0000000..4001b9b --- /dev/null +++ b/3rdparty/expat/tests/chardata.h @@ -0,0 +1,60 @@ +/* Interface to some helper routines used to accumulate and check text + and attribute content. + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef XML_CHARDATA_H +# define XML_CHARDATA_H 1 + +# ifndef XML_VERSION +# include "expat.h" /* need XML_Char */ +# endif + +typedef struct { + int count; /* # of chars, < 0 if not set */ + XML_Char data[2048]; +} CharData; + +void CharData_Init(CharData *storage); + +void CharData_AppendXMLChars(CharData *storage, const XML_Char *s, int len); + +int CharData_CheckXMLChars(CharData *storage, const XML_Char *s); + +#endif /* XML_CHARDATA_H */ + +#ifdef __cplusplus +} +#endif diff --git a/3rdparty/expat/tests/memcheck.c b/3rdparty/expat/tests/memcheck.c new file mode 100644 index 0000000..41355f6 --- /dev/null +++ b/3rdparty/expat/tests/memcheck.c @@ -0,0 +1,190 @@ +/* Debug allocators for the Expat test suite + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include +#include +#include "memcheck.h" + +/* Structures to keep track of what has been allocated. Speed isn't a + * big issue for the tests this is required for, so we will use a + * doubly-linked list to make deletion easier. + */ + +typedef struct allocation_entry { + struct allocation_entry *next; + struct allocation_entry *prev; + void *allocation; + size_t num_bytes; +} AllocationEntry; + +static AllocationEntry *alloc_head = NULL; +static AllocationEntry *alloc_tail = NULL; + +static AllocationEntry *find_allocation(void *ptr); + +/* Allocate some memory and keep track of it. */ +void * +tracking_malloc(size_t size) { + AllocationEntry *entry = malloc(sizeof(AllocationEntry)); + + if (entry == NULL) { + printf("Allocator failure\n"); + return NULL; + } + entry->num_bytes = size; + entry->allocation = malloc(size); + if (entry->allocation == NULL) { + free(entry); + return NULL; + } + entry->next = NULL; + + /* Add to the list of allocations */ + if (alloc_head == NULL) { + entry->prev = NULL; + alloc_head = alloc_tail = entry; + } else { + entry->prev = alloc_tail; + alloc_tail->next = entry; + alloc_tail = entry; + } + + return entry->allocation; +} + +static AllocationEntry * +find_allocation(void *ptr) { + AllocationEntry *entry; + + for (entry = alloc_head; entry != NULL; entry = entry->next) { + if (entry->allocation == ptr) { + return entry; + } + } + return NULL; +} + +/* Free some memory and remove the tracking for it */ +void +tracking_free(void *ptr) { + AllocationEntry *entry; + + if (ptr == NULL) { + /* There won't be an entry for this */ + return; + } + + entry = find_allocation(ptr); + if (entry != NULL) { + /* This is the relevant allocation. Unlink it */ + if (entry->prev != NULL) + entry->prev->next = entry->next; + else + alloc_head = entry->next; + if (entry->next != NULL) + entry->next->prev = entry->prev; + else + alloc_tail = entry->next; + free(entry); + } else { + printf("Attempting to free unallocated memory at %p\n", ptr); + } + free(ptr); +} + +/* Reallocate some memory and keep track of it */ +void * +tracking_realloc(void *ptr, size_t size) { + AllocationEntry *entry; + + if (ptr == NULL) { + /* By definition, this is equivalent to malloc(size) */ + return tracking_malloc(size); + } + if (size == 0) { + /* By definition, this is equivalent to free(ptr) */ + tracking_free(ptr); + return NULL; + } + + /* Find the allocation entry for this memory */ + entry = find_allocation(ptr); + if (entry == NULL) { + printf("Attempting to realloc unallocated memory at %p\n", ptr); + entry = malloc(sizeof(AllocationEntry)); + if (entry == NULL) { + printf("Reallocator failure\n"); + return NULL; + } + entry->allocation = realloc(ptr, size); + if (entry->allocation == NULL) { + free(entry); + return NULL; + } + + /* Add to the list of allocations */ + entry->next = NULL; + if (alloc_head == NULL) { + entry->prev = NULL; + alloc_head = alloc_tail = entry; + } else { + entry->prev = alloc_tail; + alloc_tail->next = entry; + alloc_tail = entry; + } + } else { + entry->allocation = realloc(ptr, size); + if (entry->allocation == NULL) { + /* Realloc semantics say the original is still allocated */ + entry->allocation = ptr; + return NULL; + } + } + + entry->num_bytes = size; + return entry->allocation; +} + +int +tracking_report(void) { + AllocationEntry *entry; + + if (alloc_head == NULL) + return 1; + + /* Otherwise we have allocations that haven't been freed */ + for (entry = alloc_head; entry != NULL; entry = entry->next) { + printf("Allocated %lu bytes at %p\n", (long unsigned)entry->num_bytes, + entry->allocation); + } + return 0; +} diff --git a/3rdparty/expat/tests/memcheck.h b/3rdparty/expat/tests/memcheck.h new file mode 100644 index 0000000..4d20f4b --- /dev/null +++ b/3rdparty/expat/tests/memcheck.h @@ -0,0 +1,57 @@ +/* Interface to allocation functions that will track what has or has + not been freed. + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef XML_MEMCHECK_H +# define XML_MEMCHECK_H 1 + +/* Allocation declarations */ + +void *tracking_malloc(size_t size); +void tracking_free(void *ptr); +void *tracking_realloc(void *ptr, size_t size); + +/* End-of-test check to see if unfreed allocations remain. Returns + * TRUE (1) if there is nothing, otherwise prints a report of the + * remaining allocations and returns FALSE (0). + */ +int tracking_report(void); + +#endif /* XML_MEMCHECK_H */ + +#ifdef __cplusplus +} +#endif diff --git a/3rdparty/expat/tests/minicheck.c b/3rdparty/expat/tests/minicheck.c new file mode 100644 index 0000000..a5a1efb --- /dev/null +++ b/3rdparty/expat/tests/minicheck.c @@ -0,0 +1,229 @@ +/* Miniature re-implementation of the "check" library. + + This is intended to support just enough of check to run the Expat + tests. This interface is based entirely on the portion of the + check library being used. + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include +#include +#include +#include +#include + +#include "internal.h" /* for UNUSED_P only */ +#include "minicheck.h" + +Suite * +suite_create(const char *name) { + Suite *suite = (Suite *)calloc(1, sizeof(Suite)); + if (suite != NULL) { + suite->name = name; + } + return suite; +} + +TCase * +tcase_create(const char *name) { + TCase *tc = (TCase *)calloc(1, sizeof(TCase)); + if (tc != NULL) { + tc->name = name; + } + return tc; +} + +void +suite_add_tcase(Suite *suite, TCase *tc) { + assert(suite != NULL); + assert(tc != NULL); + assert(tc->next_tcase == NULL); + + tc->next_tcase = suite->tests; + suite->tests = tc; +} + +void +tcase_add_checked_fixture(TCase *tc, tcase_setup_function setup, + tcase_teardown_function teardown) { + assert(tc != NULL); + tc->setup = setup; + tc->teardown = teardown; +} + +void +tcase_add_test(TCase *tc, tcase_test_function test) { + assert(tc != NULL); + if (tc->allocated == tc->ntests) { + int nalloc = tc->allocated + 100; + size_t new_size = sizeof(tcase_test_function) * nalloc; + tcase_test_function *new_tests = realloc(tc->tests, new_size); + assert(new_tests != NULL); + tc->tests = new_tests; + tc->allocated = nalloc; + } + tc->tests[tc->ntests] = test; + tc->ntests++; +} + +static void +tcase_free(TCase *tc) { + if (! tc) { + return; + } + + free(tc->tests); + free(tc); +} + +static void +suite_free(Suite *suite) { + if (! suite) { + return; + } + + while (suite->tests != NULL) { + TCase *next = suite->tests->next_tcase; + tcase_free(suite->tests); + suite->tests = next; + } + free(suite); +} + +SRunner * +srunner_create(Suite *suite) { + SRunner *runner = calloc(1, sizeof(SRunner)); + if (runner != NULL) { + runner->suite = suite; + } + return runner; +} + +static jmp_buf env; + +static char const *_check_current_function = NULL; +static int _check_current_lineno = -1; +static char const *_check_current_filename = NULL; + +void +_check_set_test_info(char const *function, char const *filename, int lineno) { + _check_current_function = function; + _check_current_lineno = lineno; + _check_current_filename = filename; +} + +static void +add_failure(SRunner *runner, int verbosity) { + runner->nfailures++; + if (verbosity >= CK_VERBOSE) { + printf("%s:%d: %s\n", _check_current_filename, _check_current_lineno, + _check_current_function); + } +} + +void +srunner_run_all(SRunner *runner, int verbosity) { + Suite *suite; + TCase *volatile tc; + assert(runner != NULL); + suite = runner->suite; + tc = suite->tests; + while (tc != NULL) { + volatile int i; + for (i = 0; i < tc->ntests; ++i) { + runner->nchecks++; + + if (tc->setup != NULL) { + /* setup */ + if (setjmp(env)) { + add_failure(runner, verbosity); + continue; + } + tc->setup(); + } + /* test */ + if (setjmp(env)) { + add_failure(runner, verbosity); + continue; + } + (tc->tests[i])(); + + /* teardown */ + if (tc->teardown != NULL) { + if (setjmp(env)) { + add_failure(runner, verbosity); + continue; + } + tc->teardown(); + } + } + tc = tc->next_tcase; + } + if (verbosity) { + int passed = runner->nchecks - runner->nfailures; + double percentage = ((double)passed) / runner->nchecks; + int display = (int)(percentage * 100); + printf("%d%%: Checks: %d, Failed: %d\n", display, runner->nchecks, + runner->nfailures); + } +} + +void +_fail_unless(int condition, const char *file, int line, const char *msg) { + /* Always print the error message so it isn't lost. In this case, + we have a failure, so there's no reason to be quiet about what + it is. + */ + UNUSED_P(condition); + UNUSED_P(file); + UNUSED_P(line); + if (msg != NULL) { + const int has_newline = (msg[strlen(msg) - 1] == '\n'); + fprintf(stderr, "ERROR: %s%s", msg, has_newline ? "" : "\n"); + } + longjmp(env, 1); +} + +int +srunner_ntests_failed(SRunner *runner) { + assert(runner != NULL); + return runner->nfailures; +} + +void +srunner_free(SRunner *runner) { + if (! runner) { + return; + } + + suite_free(runner->suite); + free(runner); +} diff --git a/3rdparty/expat/tests/minicheck.h b/3rdparty/expat/tests/minicheck.h new file mode 100644 index 0000000..88a1658 --- /dev/null +++ b/3rdparty/expat/tests/minicheck.h @@ -0,0 +1,119 @@ +/* Miniature re-implementation of the "check" library. + + This is intended to support just enough of check to run the Expat + tests. This interface is based entirely on the portion of the + check library being used. + + This is *source* compatible, but not necessary *link* compatible. + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifdef __cplusplus +extern "C" { +#endif + +#define CK_NOFORK 0 +#define CK_FORK 1 + +#define CK_SILENT 0 +#define CK_NORMAL 1 +#define CK_VERBOSE 2 + +/* Workaround for Microsoft's compiler and Tru64 Unix systems where the + C compiler has a working __func__, but the C++ compiler only has a + working __FUNCTION__. This could be fixed in configure.in, but it's + not worth it right now. */ +#if defined(_MSC_VER) || (defined(__osf__) && defined(__cplusplus)) +# define __func__ __FUNCTION__ +#endif + +#define START_TEST(testname) \ + static void testname(void) { \ + _check_set_test_info(__func__, __FILE__, __LINE__); \ + { +#define END_TEST \ + } \ + } + +#define fail(msg) _fail_unless(0, __FILE__, __LINE__, msg) + +typedef void (*tcase_setup_function)(void); +typedef void (*tcase_teardown_function)(void); +typedef void (*tcase_test_function)(void); + +typedef struct SRunner SRunner; +typedef struct Suite Suite; +typedef struct TCase TCase; + +struct SRunner { + Suite *suite; + int nchecks; + int nfailures; +}; + +struct Suite { + const char *name; + TCase *tests; +}; + +struct TCase { + const char *name; + tcase_setup_function setup; + tcase_teardown_function teardown; + tcase_test_function *tests; + int ntests; + int allocated; + TCase *next_tcase; +}; + +/* Internal helper. */ +void _check_set_test_info(char const *function, char const *filename, + int lineno); + +/* + * Prototypes for the actual implementation. + */ + +void _fail_unless(int condition, const char *file, int line, const char *msg); +Suite *suite_create(const char *name); +TCase *tcase_create(const char *name); +void suite_add_tcase(Suite *suite, TCase *tc); +void tcase_add_checked_fixture(TCase *, tcase_setup_function, + tcase_teardown_function); +void tcase_add_test(TCase *tc, tcase_test_function test); +SRunner *srunner_create(Suite *suite); +void srunner_run_all(SRunner *runner, int verbosity); +int srunner_ntests_failed(SRunner *runner); +void srunner_free(SRunner *runner); + +#ifdef __cplusplus +} +#endif diff --git a/3rdparty/expat/tests/runtests.c b/3rdparty/expat/tests/runtests.c new file mode 100644 index 0000000..2490d86 --- /dev/null +++ b/3rdparty/expat/tests/runtests.c @@ -0,0 +1,11637 @@ +/* Run the Expat test suite + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#if defined(NDEBUG) +# undef NDEBUG /* because test suite relies on assert(...) at the moment */ +#endif + +#ifdef HAVE_EXPAT_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include /* ptrdiff_t */ +#include +#include + +#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER < 1600) +/* For vs2003/7.1 up to vs2008/9.0; _MSC_VER 1600 is vs2010/10.0 */ +# if defined(_WIN64) +typedef __int64 intptr_t; +# else +typedef __int32 intptr_t; +# endif +typedef unsigned __int64 uint64_t; +#else +# include /* intptr_t uint64_t */ +#endif + +#if ! defined(__cplusplus) +# if defined(_MSC_VER) && (_MSC_VER <= 1700) +/* for vs2012/11.0/1700 and earlier Visual Studio compilers */ +# define bool int +# define false 0 +# define true 1 +# else +# include +# endif +#endif + +#include "expat.h" +#include "chardata.h" +#include "structdata.h" +#include "internal.h" /* for UNUSED_P only */ +#include "minicheck.h" +#include "memcheck.h" +#include "siphash.h" +#include "ascii.h" /* for ASCII_xxx */ + +#ifdef XML_LARGE_SIZE +# define XML_FMT_INT_MOD "ll" +#else +# define XML_FMT_INT_MOD "l" +#endif + +#ifdef XML_UNICODE_WCHAR_T +# define XML_FMT_CHAR "lc" +# define XML_FMT_STR "ls" +# include +# define xcstrlen(s) wcslen(s) +# define xcstrcmp(s, t) wcscmp((s), (t)) +# define xcstrncmp(s, t, n) wcsncmp((s), (t), (n)) +# define XCS(s) _XCS(s) +# define _XCS(s) L##s +#else +# ifdef XML_UNICODE +# error "No support for UTF-16 character without wchar_t in tests" +# else +# define XML_FMT_CHAR "c" +# define XML_FMT_STR "s" +# define xcstrlen(s) strlen(s) +# define xcstrcmp(s, t) strcmp((s), (t)) +# define xcstrncmp(s, t, n) strncmp((s), (t), (n)) +# define XCS(s) s +# endif /* XML_UNICODE */ +#endif /* XML_UNICODE_WCHAR_T */ + +static XML_Parser g_parser = NULL; + +static void +tcase_add_test__ifdef_xml_dtd(TCase *tc, tcase_test_function test) { +#ifdef XML_DTD + tcase_add_test(tc, test); +#else + UNUSED_P(tc); + UNUSED_P(test); +#endif +} + +static void +basic_setup(void) { + g_parser = XML_ParserCreate(NULL); + if (g_parser == NULL) + fail("Parser not created."); +} + +static void +basic_teardown(void) { + if (g_parser != NULL) { + XML_ParserFree(g_parser); + g_parser = NULL; + } +} + +/* Generate a failure using the parser state to create an error message; + this should be used when the parser reports an error we weren't + expecting. +*/ +static void +_xml_failure(XML_Parser parser, const char *file, int line) { + char buffer[1024]; + enum XML_Error err = XML_GetErrorCode(parser); + sprintf(buffer, + " %d: %" XML_FMT_STR " (line %" XML_FMT_INT_MOD + "u, offset %" XML_FMT_INT_MOD "u)\n reported from %s, line %d\n", + err, XML_ErrorString(err), XML_GetCurrentLineNumber(parser), + XML_GetCurrentColumnNumber(parser), file, line); + _fail_unless(0, file, line, buffer); +} + +static enum XML_Status +_XML_Parse_SINGLE_BYTES(XML_Parser parser, const char *s, int len, + int isFinal) { + enum XML_Status res = XML_STATUS_ERROR; + int offset = 0; + + if (len == 0) { + return XML_Parse(parser, s, len, isFinal); + } + + for (; offset < len; offset++) { + const int innerIsFinal = (offset == len - 1) && isFinal; + const char c = s[offset]; /* to help out-of-bounds detection */ + res = XML_Parse(parser, &c, sizeof(char), innerIsFinal); + if (res != XML_STATUS_OK) { + return res; + } + } + return res; +} + +#define xml_failure(parser) _xml_failure((parser), __FILE__, __LINE__) + +static void +_expect_failure(const char *text, enum XML_Error errorCode, + const char *errorMessage, const char *file, int lineno) { + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_OK) + /* Hackish use of _fail_unless() macro, but let's us report + the right filename and line number. */ + _fail_unless(0, file, lineno, errorMessage); + if (XML_GetErrorCode(g_parser) != errorCode) + _xml_failure(g_parser, file, lineno); +} + +#define expect_failure(text, errorCode, errorMessage) \ + _expect_failure((text), (errorCode), (errorMessage), __FILE__, __LINE__) + +/* Dummy handlers for when we need to set a handler to tickle a bug, + but it doesn't need to do anything. +*/ +static unsigned long dummy_handler_flags = 0; + +#define DUMMY_START_DOCTYPE_HANDLER_FLAG (1UL << 0) +#define DUMMY_END_DOCTYPE_HANDLER_FLAG (1UL << 1) +#define DUMMY_ENTITY_DECL_HANDLER_FLAG (1UL << 2) +#define DUMMY_NOTATION_DECL_HANDLER_FLAG (1UL << 3) +#define DUMMY_ELEMENT_DECL_HANDLER_FLAG (1UL << 4) +#define DUMMY_ATTLIST_DECL_HANDLER_FLAG (1UL << 5) +#define DUMMY_COMMENT_HANDLER_FLAG (1UL << 6) +#define DUMMY_PI_HANDLER_FLAG (1UL << 7) +#define DUMMY_START_ELEMENT_HANDLER_FLAG (1UL << 8) +#define DUMMY_START_CDATA_HANDLER_FLAG (1UL << 9) +#define DUMMY_END_CDATA_HANDLER_FLAG (1UL << 10) +#define DUMMY_UNPARSED_ENTITY_DECL_HANDLER_FLAG (1UL << 11) +#define DUMMY_START_NS_DECL_HANDLER_FLAG (1UL << 12) +#define DUMMY_END_NS_DECL_HANDLER_FLAG (1UL << 13) +#define DUMMY_START_DOCTYPE_DECL_HANDLER_FLAG (1UL << 14) +#define DUMMY_END_DOCTYPE_DECL_HANDLER_FLAG (1UL << 15) +#define DUMMY_SKIP_HANDLER_FLAG (1UL << 16) +#define DUMMY_DEFAULT_HANDLER_FLAG (1UL << 17) + +static void XMLCALL +dummy_xdecl_handler(void *userData, const XML_Char *version, + const XML_Char *encoding, int standalone) { + UNUSED_P(userData); + UNUSED_P(version); + UNUSED_P(encoding); + UNUSED_P(standalone); +} + +static void XMLCALL +dummy_start_doctype_handler(void *userData, const XML_Char *doctypeName, + const XML_Char *sysid, const XML_Char *pubid, + int has_internal_subset) { + UNUSED_P(userData); + UNUSED_P(doctypeName); + UNUSED_P(sysid); + UNUSED_P(pubid); + UNUSED_P(has_internal_subset); + dummy_handler_flags |= DUMMY_START_DOCTYPE_HANDLER_FLAG; +} + +static void XMLCALL +dummy_end_doctype_handler(void *userData) { + UNUSED_P(userData); + dummy_handler_flags |= DUMMY_END_DOCTYPE_HANDLER_FLAG; +} + +static void XMLCALL +dummy_entity_decl_handler(void *userData, const XML_Char *entityName, + int is_parameter_entity, const XML_Char *value, + int value_length, const XML_Char *base, + const XML_Char *systemId, const XML_Char *publicId, + const XML_Char *notationName) { + UNUSED_P(userData); + UNUSED_P(entityName); + UNUSED_P(is_parameter_entity); + UNUSED_P(value); + UNUSED_P(value_length); + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + UNUSED_P(notationName); + dummy_handler_flags |= DUMMY_ENTITY_DECL_HANDLER_FLAG; +} + +static void XMLCALL +dummy_notation_decl_handler(void *userData, const XML_Char *notationName, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + UNUSED_P(userData); + UNUSED_P(notationName); + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + dummy_handler_flags |= DUMMY_NOTATION_DECL_HANDLER_FLAG; +} + +static void XMLCALL +dummy_element_decl_handler(void *userData, const XML_Char *name, + XML_Content *model) { + UNUSED_P(userData); + UNUSED_P(name); + /* The content model must be freed by the handler. Unfortunately + * we cannot pass the parser as the userData because this is used + * with other handlers that require other userData. + */ + XML_FreeContentModel(g_parser, model); + dummy_handler_flags |= DUMMY_ELEMENT_DECL_HANDLER_FLAG; +} + +static void XMLCALL +dummy_attlist_decl_handler(void *userData, const XML_Char *elname, + const XML_Char *attname, const XML_Char *att_type, + const XML_Char *dflt, int isrequired) { + UNUSED_P(userData); + UNUSED_P(elname); + UNUSED_P(attname); + UNUSED_P(att_type); + UNUSED_P(dflt); + UNUSED_P(isrequired); + dummy_handler_flags |= DUMMY_ATTLIST_DECL_HANDLER_FLAG; +} + +static void XMLCALL +dummy_comment_handler(void *userData, const XML_Char *data) { + UNUSED_P(userData); + UNUSED_P(data); + dummy_handler_flags |= DUMMY_COMMENT_HANDLER_FLAG; +} + +static void XMLCALL +dummy_pi_handler(void *userData, const XML_Char *target, const XML_Char *data) { + UNUSED_P(userData); + UNUSED_P(target); + UNUSED_P(data); + dummy_handler_flags |= DUMMY_PI_HANDLER_FLAG; +} + +static void XMLCALL +dummy_start_element(void *userData, const XML_Char *name, + const XML_Char **atts) { + UNUSED_P(userData); + UNUSED_P(name); + UNUSED_P(atts); + dummy_handler_flags |= DUMMY_START_ELEMENT_HANDLER_FLAG; +} + +static void XMLCALL +dummy_end_element(void *userData, const XML_Char *name) { + UNUSED_P(userData); + UNUSED_P(name); +} + +static void XMLCALL +dummy_start_cdata_handler(void *userData) { + UNUSED_P(userData); + dummy_handler_flags |= DUMMY_START_CDATA_HANDLER_FLAG; +} + +static void XMLCALL +dummy_end_cdata_handler(void *userData) { + UNUSED_P(userData); + dummy_handler_flags |= DUMMY_END_CDATA_HANDLER_FLAG; +} + +static void XMLCALL +dummy_cdata_handler(void *userData, const XML_Char *s, int len) { + UNUSED_P(userData); + UNUSED_P(s); + UNUSED_P(len); +} + +static void XMLCALL +dummy_start_namespace_decl_handler(void *userData, const XML_Char *prefix, + const XML_Char *uri) { + UNUSED_P(userData); + UNUSED_P(prefix); + UNUSED_P(uri); + dummy_handler_flags |= DUMMY_START_NS_DECL_HANDLER_FLAG; +} + +static void XMLCALL +dummy_end_namespace_decl_handler(void *userData, const XML_Char *prefix) { + UNUSED_P(userData); + UNUSED_P(prefix); + dummy_handler_flags |= DUMMY_END_NS_DECL_HANDLER_FLAG; +} + +/* This handler is obsolete, but while the code exists we should + * ensure that dealing with the handler is covered by tests. + */ +static void XMLCALL +dummy_unparsed_entity_decl_handler(void *userData, const XML_Char *entityName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName) { + UNUSED_P(userData); + UNUSED_P(entityName); + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + UNUSED_P(notationName); + dummy_handler_flags |= DUMMY_UNPARSED_ENTITY_DECL_HANDLER_FLAG; +} + +static void XMLCALL +dummy_default_handler(void *userData, const XML_Char *s, int len) { + UNUSED_P(userData); + UNUSED_P(s); + UNUSED_P(len); +} + +static void XMLCALL +dummy_start_doctype_decl_handler(void *userData, const XML_Char *doctypeName, + const XML_Char *sysid, const XML_Char *pubid, + int has_internal_subset) { + UNUSED_P(userData); + UNUSED_P(doctypeName); + UNUSED_P(sysid); + UNUSED_P(pubid); + UNUSED_P(has_internal_subset); + dummy_handler_flags |= DUMMY_START_DOCTYPE_DECL_HANDLER_FLAG; +} + +static void XMLCALL +dummy_end_doctype_decl_handler(void *userData) { + UNUSED_P(userData); + dummy_handler_flags |= DUMMY_END_DOCTYPE_DECL_HANDLER_FLAG; +} + +static void XMLCALL +dummy_skip_handler(void *userData, const XML_Char *entityName, + int is_parameter_entity) { + UNUSED_P(userData); + UNUSED_P(entityName); + UNUSED_P(is_parameter_entity); + dummy_handler_flags |= DUMMY_SKIP_HANDLER_FLAG; +} + +/* Useful external entity handler */ +typedef struct ExtOption { + const XML_Char *system_id; + const char *parse_text; +} ExtOption; + +static int XMLCALL +external_entity_optioner(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + ExtOption *options = (ExtOption *)XML_GetUserData(parser); + XML_Parser ext_parser; + + UNUSED_P(base); + UNUSED_P(publicId); + while (options->parse_text != NULL) { + if (! xcstrcmp(systemId, options->system_id)) { + enum XML_Status rc; + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + return XML_STATUS_ERROR; + rc = _XML_Parse_SINGLE_BYTES(ext_parser, options->parse_text, + (int)strlen(options->parse_text), XML_TRUE); + XML_ParserFree(ext_parser); + return rc; + } + options++; + } + fail("No suitable option found"); + return XML_STATUS_ERROR; +} + +/* + * Parameter entity evaluation support. + */ +#define ENTITY_MATCH_FAIL (-1) +#define ENTITY_MATCH_NOT_FOUND (0) +#define ENTITY_MATCH_SUCCESS (1) +static const XML_Char *entity_name_to_match = NULL; +static const XML_Char *entity_value_to_match = NULL; +static int entity_match_flag = ENTITY_MATCH_NOT_FOUND; + +static void XMLCALL +param_entity_match_handler(void *userData, const XML_Char *entityName, + int is_parameter_entity, const XML_Char *value, + int value_length, const XML_Char *base, + const XML_Char *systemId, const XML_Char *publicId, + const XML_Char *notationName) { + UNUSED_P(userData); + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + UNUSED_P(notationName); + if (! is_parameter_entity || entity_name_to_match == NULL + || entity_value_to_match == NULL) { + return; + } + if (! xcstrcmp(entityName, entity_name_to_match)) { + /* The cast here is safe because we control the horizontal and + * the vertical, and we therefore know our strings are never + * going to overflow an int. + */ + if (value_length != (int)xcstrlen(entity_value_to_match) + || xcstrncmp(value, entity_value_to_match, value_length)) { + entity_match_flag = ENTITY_MATCH_FAIL; + } else { + entity_match_flag = ENTITY_MATCH_SUCCESS; + } + } + /* Else leave the match flag alone */ +} + +/* + * Character & encoding tests. + */ + +START_TEST(test_nul_byte) { + char text[] = "\0"; + + /* test that a NUL byte (in US-ASCII data) is an error */ + if (_XML_Parse_SINGLE_BYTES(g_parser, text, sizeof(text) - 1, XML_TRUE) + == XML_STATUS_OK) + fail("Parser did not report error on NUL-byte."); + if (XML_GetErrorCode(g_parser) != XML_ERROR_INVALID_TOKEN) + xml_failure(g_parser); +} +END_TEST + +START_TEST(test_u0000_char) { + /* test that a NUL byte (in US-ASCII data) is an error */ + expect_failure("", XML_ERROR_BAD_CHAR_REF, + "Parser did not report error on NUL-byte."); +} +END_TEST + +START_TEST(test_siphash_self) { + if (! sip24_valid()) + fail("SipHash self-test failed"); +} +END_TEST + +START_TEST(test_siphash_spec) { + /* https://131002.net/siphash/siphash.pdf (page 19, "Test values") */ + const char message[] = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09" + "\x0a\x0b\x0c\x0d\x0e"; + const size_t len = sizeof(message) - 1; + const uint64_t expected = _SIP_ULL(0xa129ca61U, 0x49be45e5U); + struct siphash state; + struct sipkey key; + + sip_tokey(&key, "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09" + "\x0a\x0b\x0c\x0d\x0e\x0f"); + sip24_init(&state, &key); + + /* Cover spread across calls */ + sip24_update(&state, message, 4); + sip24_update(&state, message + 4, len - 4); + + /* Cover null length */ + sip24_update(&state, message, 0); + + if (sip24_final(&state) != expected) + fail("sip24_final failed spec test\n"); + + /* Cover wrapper */ + if (siphash24(message, len, &key) != expected) + fail("siphash24 failed spec test\n"); +} +END_TEST + +START_TEST(test_bom_utf8) { + /* This test is really just making sure we don't core on a UTF-8 BOM. */ + const char *text = "\357\273\277"; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +START_TEST(test_bom_utf16_be) { + char text[] = "\376\377\0<\0e\0/\0>"; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +START_TEST(test_bom_utf16_le) { + char text[] = "\377\376<\0e\0/\0>\0"; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Parse whole buffer at once to exercise a different code path */ +START_TEST(test_nobom_utf16_le) { + char text[] = " \0<\0e\0/\0>\0"; + + if (XML_Parse(g_parser, text, sizeof(text) - 1, XML_TRUE) == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +static void XMLCALL +accumulate_characters(void *userData, const XML_Char *s, int len) { + CharData_AppendXMLChars((CharData *)userData, s, len); +} + +static void XMLCALL +accumulate_attribute(void *userData, const XML_Char *name, + const XML_Char **atts) { + CharData *storage = (CharData *)userData; + UNUSED_P(name); + /* Check there are attributes to deal with */ + if (atts == NULL) + return; + + while (storage->count < 0 && atts[0] != NULL) { + /* "accumulate" the value of the first attribute we see */ + CharData_AppendXMLChars(storage, atts[1], -1); + atts += 2; + } +} + +static void +_run_character_check(const char *text, const XML_Char *expected, + const char *file, int line) { + CharData storage; + + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetCharacterDataHandler(g_parser, accumulate_characters); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + _xml_failure(g_parser, file, line); + CharData_CheckXMLChars(&storage, expected); +} + +#define run_character_check(text, expected) \ + _run_character_check(text, expected, __FILE__, __LINE__) + +static void +_run_attribute_check(const char *text, const XML_Char *expected, + const char *file, int line) { + CharData storage; + + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetStartElementHandler(g_parser, accumulate_attribute); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + _xml_failure(g_parser, file, line); + CharData_CheckXMLChars(&storage, expected); +} + +#define run_attribute_check(text, expected) \ + _run_attribute_check(text, expected, __FILE__, __LINE__) + +typedef struct ExtTest { + const char *parse_text; + const XML_Char *encoding; + CharData *storage; +} ExtTest; + +static void XMLCALL +ext_accumulate_characters(void *userData, const XML_Char *s, int len) { + ExtTest *test_data = (ExtTest *)userData; + accumulate_characters(test_data->storage, s, len); +} + +static void +_run_ext_character_check(const char *text, ExtTest *test_data, + const XML_Char *expected, const char *file, int line) { + CharData *const storage = (CharData *)malloc(sizeof(CharData)); + + CharData_Init(storage); + test_data->storage = storage; + XML_SetUserData(g_parser, test_data); + XML_SetCharacterDataHandler(g_parser, ext_accumulate_characters); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + _xml_failure(g_parser, file, line); + CharData_CheckXMLChars(storage, expected); + + free(storage); +} + +#define run_ext_character_check(text, test_data, expected) \ + _run_ext_character_check(text, test_data, expected, __FILE__, __LINE__) + +/* Regression test for SF bug #491986. */ +START_TEST(test_danish_latin1) { + const char *text = "\n" + "J\xF8rgen \xE6\xF8\xE5\xC6\xD8\xC5"; +#ifdef XML_UNICODE + const XML_Char *expected + = XCS("J\x00f8rgen \x00e6\x00f8\x00e5\x00c6\x00d8\x00c5"); +#else + const XML_Char *expected + = XCS("J\xC3\xB8rgen \xC3\xA6\xC3\xB8\xC3\xA5\xC3\x86\xC3\x98\xC3\x85"); +#endif + run_character_check(text, expected); +} +END_TEST + +/* Regression test for SF bug #514281. */ +START_TEST(test_french_charref_hexidecimal) { + const char *text = "\n" + "éèàçêÈ"; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x00e9\x00e8\x00e0\x00e7\x00ea\x00c8"); +#else + const XML_Char *expected + = XCS("\xC3\xA9\xC3\xA8\xC3\xA0\xC3\xA7\xC3\xAA\xC3\x88"); +#endif + run_character_check(text, expected); +} +END_TEST + +START_TEST(test_french_charref_decimal) { + const char *text = "\n" + "éèàçêÈ"; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x00e9\x00e8\x00e0\x00e7\x00ea\x00c8"); +#else + const XML_Char *expected + = XCS("\xC3\xA9\xC3\xA8\xC3\xA0\xC3\xA7\xC3\xAA\xC3\x88"); +#endif + run_character_check(text, expected); +} +END_TEST + +START_TEST(test_french_latin1) { + const char *text = "\n" + "\xE9\xE8\xE0\xE7\xEa\xC8"; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x00e9\x00e8\x00e0\x00e7\x00ea\x00c8"); +#else + const XML_Char *expected + = XCS("\xC3\xA9\xC3\xA8\xC3\xA0\xC3\xA7\xC3\xAA\xC3\x88"); +#endif + run_character_check(text, expected); +} +END_TEST + +START_TEST(test_french_utf8) { + const char *text = "\n" + "\xC3\xA9"; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x00e9"); +#else + const XML_Char *expected = XCS("\xC3\xA9"); +#endif + run_character_check(text, expected); +} +END_TEST + +/* Regression test for SF bug #600479. + XXX There should be a test that exercises all legal XML Unicode + characters as PCDATA and attribute value content, and XML Name + characters as part of element and attribute names. +*/ +START_TEST(test_utf8_false_rejection) { + const char *text = "\xEF\xBA\xBF"; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\xfebf"); +#else + const XML_Char *expected = XCS("\xEF\xBA\xBF"); +#endif + run_character_check(text, expected); +} +END_TEST + +/* Regression test for SF bug #477667. + This test assures that any 8-bit character followed by a 7-bit + character will not be mistakenly interpreted as a valid UTF-8 + sequence. +*/ +START_TEST(test_illegal_utf8) { + char text[100]; + int i; + + for (i = 128; i <= 255; ++i) { + sprintf(text, "%ccd", i); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_OK) { + sprintf(text, "expected token error for '%c' (ordinal %d) in UTF-8 text", + i, i); + fail(text); + } else if (XML_GetErrorCode(g_parser) != XML_ERROR_INVALID_TOKEN) + xml_failure(g_parser); + /* Reset the parser since we use the same parser repeatedly. */ + XML_ParserReset(g_parser, NULL); + } +} +END_TEST + +/* Examples, not masks: */ +#define UTF8_LEAD_1 "\x7f" /* 0b01111111 */ +#define UTF8_LEAD_2 "\xdf" /* 0b11011111 */ +#define UTF8_LEAD_3 "\xef" /* 0b11101111 */ +#define UTF8_LEAD_4 "\xf7" /* 0b11110111 */ +#define UTF8_FOLLOW "\xbf" /* 0b10111111 */ + +START_TEST(test_utf8_auto_align) { + struct TestCase { + ptrdiff_t expectedMovementInChars; + const char *input; + }; + + struct TestCase cases[] = { + {00, ""}, + + {00, UTF8_LEAD_1}, + + {-1, UTF8_LEAD_2}, + {00, UTF8_LEAD_2 UTF8_FOLLOW}, + + {-1, UTF8_LEAD_3}, + {-2, UTF8_LEAD_3 UTF8_FOLLOW}, + {00, UTF8_LEAD_3 UTF8_FOLLOW UTF8_FOLLOW}, + + {-1, UTF8_LEAD_4}, + {-2, UTF8_LEAD_4 UTF8_FOLLOW}, + {-3, UTF8_LEAD_4 UTF8_FOLLOW UTF8_FOLLOW}, + {00, UTF8_LEAD_4 UTF8_FOLLOW UTF8_FOLLOW UTF8_FOLLOW}, + }; + + size_t i = 0; + bool success = true; + for (; i < sizeof(cases) / sizeof(*cases); i++) { + const char *fromLim = cases[i].input + strlen(cases[i].input); + const char *const fromLimInitially = fromLim; + ptrdiff_t actualMovementInChars; + + _INTERNAL_trim_to_complete_utf8_characters(cases[i].input, &fromLim); + + actualMovementInChars = (fromLim - fromLimInitially); + if (actualMovementInChars != cases[i].expectedMovementInChars) { + size_t j = 0; + success = false; + printf("[-] UTF-8 case %2u: Expected movement by %2d chars" + ", actually moved by %2d chars: \"", + (unsigned)(i + 1), (int)cases[i].expectedMovementInChars, + (int)actualMovementInChars); + for (; j < strlen(cases[i].input); j++) { + printf("\\x%02x", (unsigned char)cases[i].input[j]); + } + printf("\"\n"); + } + } + + if (! success) { + fail("UTF-8 auto-alignment is not bullet-proof\n"); + } +} +END_TEST + +START_TEST(test_utf16) { + /* + * some {A} text + * + * where {A} is U+FF21, FULLWIDTH LATIN CAPITAL LETTER A + */ + char text[] + = "\000<\000?\000x\000m\000\154\000 \000v\000e\000r\000s\000i\000o" + "\000n\000=\000'\0001\000.\000\060\000'\000 \000e\000n\000c\000o" + "\000d\000i\000n\000g\000=\000'\000U\000T\000F\000-\0001\000\066" + "\000'\000?\000>\000\n" + "\000<\000d\000o\000c\000 \000a\000=\000'\0001\0002\0003\000'\000>" + "\000s\000o\000m\000e\000 \xff\x21\000 \000t\000e\000x\000t\000" + "<\000/\000d\000o\000c\000>"; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("some \xff21 text"); +#else + const XML_Char *expected = XCS("some \357\274\241 text"); +#endif + CharData storage; + + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetCharacterDataHandler(g_parser, accumulate_characters); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_utf16_le_epilog_newline) { + unsigned int first_chunk_bytes = 17; + char text[] = "\xFF\xFE" /* BOM */ + "<\000e\000/\000>\000" /* document element */ + "\r\000\n\000\r\000\n\000"; /* epilog */ + + if (first_chunk_bytes >= sizeof(text) - 1) + fail("bad value of first_chunk_bytes"); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, first_chunk_bytes, XML_FALSE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + else { + enum XML_Status rc; + rc = _XML_Parse_SINGLE_BYTES(g_parser, text + first_chunk_bytes, + sizeof(text) - first_chunk_bytes - 1, + XML_TRUE); + if (rc == XML_STATUS_ERROR) + xml_failure(g_parser); + } +} +END_TEST + +/* Test that an outright lie in the encoding is faulted */ +START_TEST(test_not_utf16) { + const char *text = "" + "Hi"; + + /* Use a handler to provoke the appropriate code paths */ + XML_SetXmlDeclHandler(g_parser, dummy_xdecl_handler); + expect_failure(text, XML_ERROR_INCORRECT_ENCODING, + "UTF-16 declared in UTF-8 not faulted"); +} +END_TEST + +/* Test that an unknown encoding is rejected */ +START_TEST(test_bad_encoding) { + const char *text = "Hi"; + + if (! XML_SetEncoding(g_parser, XCS("unknown-encoding"))) + fail("XML_SetEncoding failed"); + expect_failure(text, XML_ERROR_UNKNOWN_ENCODING, + "Unknown encoding not faulted"); +} +END_TEST + +/* Regression test for SF bug #481609, #774028. */ +START_TEST(test_latin1_umlauts) { + const char *text + = "\n" + "\xE4 \xF6 \xFC ä ö ü ä ö ü >"; +#ifdef XML_UNICODE + /* Expected results in UTF-16 */ + const XML_Char *expected = XCS("\x00e4 \x00f6 \x00fc ") + XCS("\x00e4 \x00f6 \x00fc ") XCS("\x00e4 \x00f6 \x00fc >"); +#else + /* Expected results in UTF-8 */ + const XML_Char *expected = XCS("\xC3\xA4 \xC3\xB6 \xC3\xBC ") + XCS("\xC3\xA4 \xC3\xB6 \xC3\xBC ") XCS("\xC3\xA4 \xC3\xB6 \xC3\xBC >"); +#endif + + run_character_check(text, expected); + XML_ParserReset(g_parser, NULL); + run_attribute_check(text, expected); + /* Repeat with a default handler */ + XML_ParserReset(g_parser, NULL); + XML_SetDefaultHandler(g_parser, dummy_default_handler); + run_character_check(text, expected); + XML_ParserReset(g_parser, NULL); + XML_SetDefaultHandler(g_parser, dummy_default_handler); + run_attribute_check(text, expected); +} +END_TEST + +/* Test that an element name with a 4-byte UTF-8 character is rejected */ +START_TEST(test_long_utf8_character) { + const char *text + = "\n" + /* 0xf0 0x90 0x80 0x80 = U+10000, the first Linear B character */ + ""; + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "4-byte UTF-8 character in element name not faulted"); +} +END_TEST + +/* Test that a long latin-1 attribute (too long to convert in one go) + * is correctly converted + */ +START_TEST(test_long_latin1_attribute) { + const char *text + = "\n" + "\n"; + + const XML_Char *expected = + /* 64 characters per line */ + /* clang-format off */ + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNO") + /* clang-format on */ +#ifdef XML_UNICODE + XCS("\x00e4"); +#else + XCS("\xc3\xa4"); +#endif + + run_attribute_check(text, expected); +} +END_TEST + +/* Test that a long ASCII attribute (too long to convert in one go) + * is correctly converted + */ +START_TEST(test_long_ascii_attribute) { + const char *text + = "\n" + "\n"; + const XML_Char *expected = + /* 64 characters per line */ + /* clang-format off */ + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("01234"); + /* clang-format on */ + + run_attribute_check(text, expected); +} +END_TEST + +/* Regression test #1 for SF bug #653180. */ +START_TEST(test_line_number_after_parse) { + const char *text = "\n" + "\n" + "\n"; + XML_Size lineno; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_FALSE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + lineno = XML_GetCurrentLineNumber(g_parser); + if (lineno != 4) { + char buffer[100]; + sprintf(buffer, "expected 4 lines, saw %" XML_FMT_INT_MOD "u", lineno); + fail(buffer); + } +} +END_TEST + +/* Regression test #2 for SF bug #653180. */ +START_TEST(test_column_number_after_parse) { + const char *text = ""; + XML_Size colno; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_FALSE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + colno = XML_GetCurrentColumnNumber(g_parser); + if (colno != 11) { + char buffer[100]; + sprintf(buffer, "expected 11 columns, saw %" XML_FMT_INT_MOD "u", colno); + fail(buffer); + } +} +END_TEST + +#define STRUCT_START_TAG 0 +#define STRUCT_END_TAG 1 +static void XMLCALL +start_element_event_handler2(void *userData, const XML_Char *name, + const XML_Char **attr) { + StructData *storage = (StructData *)userData; + UNUSED_P(attr); + StructData_AddItem(storage, name, XML_GetCurrentColumnNumber(g_parser), + XML_GetCurrentLineNumber(g_parser), STRUCT_START_TAG); +} + +static void XMLCALL +end_element_event_handler2(void *userData, const XML_Char *name) { + StructData *storage = (StructData *)userData; + StructData_AddItem(storage, name, XML_GetCurrentColumnNumber(g_parser), + XML_GetCurrentLineNumber(g_parser), STRUCT_END_TAG); +} + +/* Regression test #3 for SF bug #653180. */ +START_TEST(test_line_and_column_numbers_inside_handlers) { + const char *text = "\n" /* Unix end-of-line */ + " \r\n" /* Windows end-of-line */ + " \r" /* Mac OS end-of-line */ + " \n" + " \n" + " \n" + " \n" + ""; + const StructDataEntry expected[] + = {{XCS("a"), 0, 1, STRUCT_START_TAG}, {XCS("b"), 2, 2, STRUCT_START_TAG}, + {XCS("c"), 4, 3, STRUCT_START_TAG}, {XCS("c"), 8, 3, STRUCT_END_TAG}, + {XCS("b"), 2, 4, STRUCT_END_TAG}, {XCS("d"), 2, 5, STRUCT_START_TAG}, + {XCS("f"), 4, 6, STRUCT_START_TAG}, {XCS("f"), 8, 6, STRUCT_END_TAG}, + {XCS("d"), 2, 7, STRUCT_END_TAG}, {XCS("a"), 0, 8, STRUCT_END_TAG}}; + const int expected_count = sizeof(expected) / sizeof(StructDataEntry); + StructData storage; + + StructData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetStartElementHandler(g_parser, start_element_event_handler2); + XML_SetEndElementHandler(g_parser, end_element_event_handler2); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + + StructData_CheckItems(&storage, expected, expected_count); + StructData_Dispose(&storage); +} +END_TEST + +/* Regression test #4 for SF bug #653180. */ +START_TEST(test_line_number_after_error) { + const char *text = "\n" + " \n" + " "; /* missing */ + XML_Size lineno; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_FALSE) + != XML_STATUS_ERROR) + fail("Expected a parse error"); + + lineno = XML_GetCurrentLineNumber(g_parser); + if (lineno != 3) { + char buffer[100]; + sprintf(buffer, "expected 3 lines, saw %" XML_FMT_INT_MOD "u", lineno); + fail(buffer); + } +} +END_TEST + +/* Regression test #5 for SF bug #653180. */ +START_TEST(test_column_number_after_error) { + const char *text = "\n" + " \n" + " "; /* missing */ + XML_Size colno; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_FALSE) + != XML_STATUS_ERROR) + fail("Expected a parse error"); + + colno = XML_GetCurrentColumnNumber(g_parser); + if (colno != 4) { + char buffer[100]; + sprintf(buffer, "expected 4 columns, saw %" XML_FMT_INT_MOD "u", colno); + fail(buffer); + } +} +END_TEST + +/* Regression test for SF bug #478332. */ +START_TEST(test_really_long_lines) { + /* This parses an input line longer than INIT_DATA_BUF_SIZE + characters long (defined to be 1024 in xmlparse.c). We take a + really cheesy approach to building the input buffer, because + this avoids writing bugs in buffer-filling code. + */ + const char *text + = "" + /* 64 chars */ + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + /* until we have at least 1024 characters on the line: */ + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + ""; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test cdata processing across a buffer boundary */ +START_TEST(test_really_long_encoded_lines) { + /* As above, except that we want to provoke an output buffer + * overflow with a non-trivial encoding. For this we need to pass + * the whole cdata in one go, not byte-by-byte. + */ + void *buffer; + const char *text + = "" + "" + /* 64 chars */ + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + /* until we have at least 1024 characters on the line: */ + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + ""; + int parse_len = (int)strlen(text); + + /* Need a cdata handler to provoke the code path we want to test */ + XML_SetCharacterDataHandler(g_parser, dummy_cdata_handler); + buffer = XML_GetBuffer(g_parser, parse_len); + if (buffer == NULL) + fail("Could not allocate parse buffer"); + assert(buffer != NULL); + memcpy(buffer, text, parse_len); + if (XML_ParseBuffer(g_parser, parse_len, XML_TRUE) == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* + * Element event tests. + */ + +static void XMLCALL +start_element_event_handler(void *userData, const XML_Char *name, + const XML_Char **atts) { + UNUSED_P(atts); + CharData_AppendXMLChars((CharData *)userData, name, -1); +} + +static void XMLCALL +end_element_event_handler(void *userData, const XML_Char *name) { + CharData *storage = (CharData *)userData; + CharData_AppendXMLChars(storage, XCS("/"), 1); + CharData_AppendXMLChars(storage, name, -1); +} + +START_TEST(test_end_element_events) { + const char *text = ""; + const XML_Char *expected = XCS("/c/b/f/d/a"); + CharData storage; + + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetEndElementHandler(g_parser, end_element_event_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* + * Attribute tests. + */ + +/* Helpers used by the following test; this checks any "attr" and "refs" + attributes to make sure whitespace has been normalized. + + Return true if whitespace has been normalized in a string, using + the rules for attribute value normalization. The 'is_cdata' flag + is needed since CDATA attributes don't need to have multiple + whitespace characters collapsed to a single space, while other + attribute data types do. (Section 3.3.3 of the recommendation.) +*/ +static int +is_whitespace_normalized(const XML_Char *s, int is_cdata) { + int blanks = 0; + int at_start = 1; + while (*s) { + if (*s == XCS(' ')) + ++blanks; + else if (*s == XCS('\t') || *s == XCS('\n') || *s == XCS('\r')) + return 0; + else { + if (at_start) { + at_start = 0; + if (blanks && ! is_cdata) + /* illegal leading blanks */ + return 0; + } else if (blanks > 1 && ! is_cdata) + return 0; + blanks = 0; + } + ++s; + } + if (blanks && ! is_cdata) + return 0; + return 1; +} + +/* Check the attribute whitespace checker: */ +static void +testhelper_is_whitespace_normalized(void) { + assert(is_whitespace_normalized(XCS("abc"), 0)); + assert(is_whitespace_normalized(XCS("abc"), 1)); + assert(is_whitespace_normalized(XCS("abc def ghi"), 0)); + assert(is_whitespace_normalized(XCS("abc def ghi"), 1)); + assert(! is_whitespace_normalized(XCS(" abc def ghi"), 0)); + assert(is_whitespace_normalized(XCS(" abc def ghi"), 1)); + assert(! is_whitespace_normalized(XCS("abc def ghi"), 0)); + assert(is_whitespace_normalized(XCS("abc def ghi"), 1)); + assert(! is_whitespace_normalized(XCS("abc def ghi "), 0)); + assert(is_whitespace_normalized(XCS("abc def ghi "), 1)); + assert(! is_whitespace_normalized(XCS(" "), 0)); + assert(is_whitespace_normalized(XCS(" "), 1)); + assert(! is_whitespace_normalized(XCS("\t"), 0)); + assert(! is_whitespace_normalized(XCS("\t"), 1)); + assert(! is_whitespace_normalized(XCS("\n"), 0)); + assert(! is_whitespace_normalized(XCS("\n"), 1)); + assert(! is_whitespace_normalized(XCS("\r"), 0)); + assert(! is_whitespace_normalized(XCS("\r"), 1)); + assert(! is_whitespace_normalized(XCS("abc\t def"), 1)); +} + +static void XMLCALL +check_attr_contains_normalized_whitespace(void *userData, const XML_Char *name, + const XML_Char **atts) { + int i; + UNUSED_P(userData); + UNUSED_P(name); + for (i = 0; atts[i] != NULL; i += 2) { + const XML_Char *attrname = atts[i]; + const XML_Char *value = atts[i + 1]; + if (xcstrcmp(XCS("attr"), attrname) == 0 + || xcstrcmp(XCS("ents"), attrname) == 0 + || xcstrcmp(XCS("refs"), attrname) == 0) { + if (! is_whitespace_normalized(value, 0)) { + char buffer[256]; + sprintf(buffer, + "attribute value not normalized: %" XML_FMT_STR + "='%" XML_FMT_STR "'", + attrname, value); + fail(buffer); + } + } + } +} + +START_TEST(test_attr_whitespace_normalization) { + const char *text + = "\n" + "]>\n" + "\n" + " \n" + " \n" + ""; + + XML_SetStartElementHandler(g_parser, + check_attr_contains_normalized_whitespace); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* + * XML declaration tests. + */ + +START_TEST(test_xmldecl_misplaced) { + expect_failure("\n" + "\n" + "", + XML_ERROR_MISPLACED_XML_PI, + "failed to report misplaced XML declaration"); +} +END_TEST + +START_TEST(test_xmldecl_invalid) { + expect_failure("\n", XML_ERROR_XML_DECL, + "Failed to report invalid XML declaration"); +} +END_TEST + +START_TEST(test_xmldecl_missing_attr) { + expect_failure("\n\n", XML_ERROR_XML_DECL, + "Failed to report missing XML declaration attribute"); +} +END_TEST + +START_TEST(test_xmldecl_missing_value) { + expect_failure("\n" + "", + XML_ERROR_XML_DECL, + "Failed to report missing attribute value"); +} +END_TEST + +/* Regression test for SF bug #584832. */ +static int XMLCALL +UnknownEncodingHandler(void *data, const XML_Char *encoding, + XML_Encoding *info) { + UNUSED_P(data); + if (xcstrcmp(encoding, XCS("unsupported-encoding")) == 0) { + int i; + for (i = 0; i < 256; ++i) + info->map[i] = i; + info->data = NULL; + info->convert = NULL; + info->release = NULL; + return XML_STATUS_OK; + } + return XML_STATUS_ERROR; +} + +START_TEST(test_unknown_encoding_internal_entity) { + const char *text = "\n" + "]>\n" + ""; + + XML_SetUnknownEncodingHandler(g_parser, UnknownEncodingHandler, NULL); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test unrecognised encoding handler */ +static void +dummy_release(void *data) { + UNUSED_P(data); +} + +static int XMLCALL +UnrecognisedEncodingHandler(void *data, const XML_Char *encoding, + XML_Encoding *info) { + UNUSED_P(data); + UNUSED_P(encoding); + info->data = NULL; + info->convert = NULL; + info->release = dummy_release; + return XML_STATUS_ERROR; +} + +START_TEST(test_unrecognised_encoding_internal_entity) { + const char *text = "\n" + "]>\n" + ""; + + XML_SetUnknownEncodingHandler(g_parser, UnrecognisedEncodingHandler, NULL); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + fail("Unrecognised encoding not rejected"); +} +END_TEST + +/* Regression test for SF bug #620106. */ +static int XMLCALL +external_entity_loader(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + ExtTest *test_data = (ExtTest *)XML_GetUserData(parser); + XML_Parser extparser; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + extparser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (extparser == NULL) + fail("Could not create external entity parser."); + if (test_data->encoding != NULL) { + if (! XML_SetEncoding(extparser, test_data->encoding)) + fail("XML_SetEncoding() ignored for external entity"); + } + if (_XML_Parse_SINGLE_BYTES(extparser, test_data->parse_text, + (int)strlen(test_data->parse_text), XML_TRUE) + == XML_STATUS_ERROR) { + xml_failure(extparser); + return XML_STATUS_ERROR; + } + XML_ParserFree(extparser); + return XML_STATUS_OK; +} + +START_TEST(test_ext_entity_set_encoding) { + const char *text = "\n" + "]>\n" + "&en;"; + ExtTest test_data + = {/* This text says it's an unsupported encoding, but it's really + UTF-8, which we tell Expat using XML_SetEncoding(). + */ + "\xC3\xA9", XCS("utf-8"), NULL}; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x00e9"); +#else + const XML_Char *expected = XCS("\xc3\xa9"); +#endif + + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader); + run_ext_character_check(text, &test_data, expected); +} +END_TEST + +/* Test external entities with no handler */ +START_TEST(test_ext_entity_no_handler) { + const char *text = "\n" + "]>\n" + "&en;"; + + XML_SetDefaultHandler(g_parser, dummy_default_handler); + run_character_check(text, XCS("")); +} +END_TEST + +/* Test UTF-8 BOM is accepted */ +START_TEST(test_ext_entity_set_bom) { + const char *text = "\n" + "]>\n" + "&en;"; + ExtTest test_data = {"\xEF\xBB\xBF" /* BOM */ + "" + "\xC3\xA9", + XCS("utf-8"), NULL}; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x00e9"); +#else + const XML_Char *expected = XCS("\xc3\xa9"); +#endif + + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader); + run_ext_character_check(text, &test_data, expected); +} +END_TEST + +/* Test that bad encodings are faulted */ +typedef struct ext_faults { + const char *parse_text; + const char *fail_text; + const XML_Char *encoding; + enum XML_Error error; +} ExtFaults; + +static int XMLCALL +external_entity_faulter(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + XML_Parser ext_parser; + ExtFaults *fault = (ExtFaults *)XML_GetUserData(parser); + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + if (fault->encoding != NULL) { + if (! XML_SetEncoding(ext_parser, fault->encoding)) + fail("XML_SetEncoding failed"); + } + if (_XML_Parse_SINGLE_BYTES(ext_parser, fault->parse_text, + (int)strlen(fault->parse_text), XML_TRUE) + != XML_STATUS_ERROR) + fail(fault->fail_text); + if (XML_GetErrorCode(ext_parser) != fault->error) + xml_failure(ext_parser); + + XML_ParserFree(ext_parser); + return XML_STATUS_ERROR; +} + +START_TEST(test_ext_entity_bad_encoding) { + const char *text = "\n" + "]>\n" + "&en;"; + ExtFaults fault + = {"u", "Unsupported encoding not faulted", + XCS("unknown"), XML_ERROR_UNKNOWN_ENCODING}; + + XML_SetExternalEntityRefHandler(g_parser, external_entity_faulter); + XML_SetUserData(g_parser, &fault); + expect_failure(text, XML_ERROR_EXTERNAL_ENTITY_HANDLING, + "Bad encoding should not have been accepted"); +} +END_TEST + +/* Try handing an invalid encoding to an external entity parser */ +START_TEST(test_ext_entity_bad_encoding_2) { + const char *text = "\n" + "\n" + "&entity;"; + ExtFaults fault + = {"", "Unknown encoding not faulted", + XCS("unknown-encoding"), XML_ERROR_UNKNOWN_ENCODING}; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_faulter); + XML_SetUserData(g_parser, &fault); + expect_failure(text, XML_ERROR_EXTERNAL_ENTITY_HANDLING, + "Bad encoding not faulted in external entity handler"); +} +END_TEST + +/* Test that no error is reported for unknown entities if we don't + read an external subset. This was fixed in Expat 1.95.5. +*/ +START_TEST(test_wfc_undeclared_entity_unread_external_subset) { + const char *text = "\n" + "&entity;"; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test that an error is reported for unknown entities if we don't + have an external subset. +*/ +START_TEST(test_wfc_undeclared_entity_no_external_subset) { + expect_failure("&entity;", XML_ERROR_UNDEFINED_ENTITY, + "Parser did not report undefined entity w/out a DTD."); +} +END_TEST + +/* Test that an error is reported for unknown entities if we don't + read an external subset, but have been declared standalone. +*/ +START_TEST(test_wfc_undeclared_entity_standalone) { + const char *text + = "\n" + "\n" + "&entity;"; + + expect_failure(text, XML_ERROR_UNDEFINED_ENTITY, + "Parser did not report undefined entity (standalone)."); +} +END_TEST + +/* Test that an error is reported for unknown entities if we have read + an external subset, and standalone is true. +*/ +START_TEST(test_wfc_undeclared_entity_with_external_subset_standalone) { + const char *text + = "\n" + "\n" + "&entity;"; + ExtTest test_data = {"", NULL, NULL}; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetUserData(g_parser, &test_data); + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader); + expect_failure(text, XML_ERROR_UNDEFINED_ENTITY, + "Parser did not report undefined entity (external DTD)."); +} +END_TEST + +/* Test that external entity handling is not done if the parsing flag + * is set to UNLESS_STANDALONE + */ +START_TEST(test_entity_with_external_subset_unless_standalone) { + const char *text + = "\n" + "\n" + "&entity;"; + ExtTest test_data = {"", NULL, NULL}; + + XML_SetParamEntityParsing(g_parser, + XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE); + XML_SetUserData(g_parser, &test_data); + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader); + expect_failure(text, XML_ERROR_UNDEFINED_ENTITY, + "Parser did not report undefined entity"); +} +END_TEST + +/* Test that no error is reported for unknown entities if we have read + an external subset, and standalone is false. +*/ +START_TEST(test_wfc_undeclared_entity_with_external_subset) { + const char *text = "\n" + "\n" + "&entity;"; + ExtTest test_data = {"", NULL, NULL}; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader); + run_ext_character_check(text, &test_data, XCS("")); +} +END_TEST + +/* Test that an error is reported if our NotStandalone handler fails */ +static int XMLCALL +reject_not_standalone_handler(void *userData) { + UNUSED_P(userData); + return XML_STATUS_ERROR; +} + +START_TEST(test_not_standalone_handler_reject) { + const char *text = "\n" + "\n" + "&entity;"; + ExtTest test_data = {"", NULL, NULL}; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetUserData(g_parser, &test_data); + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader); + XML_SetNotStandaloneHandler(g_parser, reject_not_standalone_handler); + expect_failure(text, XML_ERROR_NOT_STANDALONE, + "NotStandalone handler failed to reject"); + + /* Try again but without external entity handling */ + XML_ParserReset(g_parser, NULL); + XML_SetNotStandaloneHandler(g_parser, reject_not_standalone_handler); + expect_failure(text, XML_ERROR_NOT_STANDALONE, + "NotStandalone handler failed to reject"); +} +END_TEST + +/* Test that no error is reported if our NotStandalone handler succeeds */ +static int XMLCALL +accept_not_standalone_handler(void *userData) { + UNUSED_P(userData); + return XML_STATUS_OK; +} + +START_TEST(test_not_standalone_handler_accept) { + const char *text = "\n" + "\n" + "&entity;"; + ExtTest test_data = {"", NULL, NULL}; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader); + XML_SetNotStandaloneHandler(g_parser, accept_not_standalone_handler); + run_ext_character_check(text, &test_data, XCS("")); + + /* Repeat wtihout the external entity handler */ + XML_ParserReset(g_parser, NULL); + XML_SetNotStandaloneHandler(g_parser, accept_not_standalone_handler); + run_character_check(text, XCS("")); +} +END_TEST + +START_TEST(test_wfc_no_recursive_entity_refs) { + const char *text = "\n" + "]>\n" + "&entity;"; + + expect_failure(text, XML_ERROR_RECURSIVE_ENTITY_REF, + "Parser did not report recursive entity reference."); +} +END_TEST + +/* Test incomplete external entities are faulted */ +START_TEST(test_ext_entity_invalid_parse) { + const char *text = "\n" + "]>\n" + "&en;"; + const ExtFaults faults[] + = {{"<", "Incomplete element declaration not faulted", NULL, + XML_ERROR_UNCLOSED_TOKEN}, + {"<\xe2\x82", /* First two bytes of a three-byte char */ + "Incomplete character not faulted", NULL, XML_ERROR_PARTIAL_CHAR}, + {"\xe2\x82", "Incomplete character in CDATA not faulted", NULL, + XML_ERROR_PARTIAL_CHAR}, + {NULL, NULL, NULL, XML_ERROR_NONE}}; + const ExtFaults *fault = faults; + + for (; fault->parse_text != NULL; fault++) { + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_faulter); + XML_SetUserData(g_parser, (void *)fault); + expect_failure(text, XML_ERROR_EXTERNAL_ENTITY_HANDLING, + "Parser did not report external entity error"); + XML_ParserReset(g_parser, NULL); + } +} +END_TEST + +/* Regression test for SF bug #483514. */ +START_TEST(test_dtd_default_handling) { + const char *text = "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "]>"; + + XML_SetDefaultHandler(g_parser, accumulate_characters); + XML_SetStartDoctypeDeclHandler(g_parser, dummy_start_doctype_handler); + XML_SetEndDoctypeDeclHandler(g_parser, dummy_end_doctype_handler); + XML_SetEntityDeclHandler(g_parser, dummy_entity_decl_handler); + XML_SetNotationDeclHandler(g_parser, dummy_notation_decl_handler); + XML_SetElementDeclHandler(g_parser, dummy_element_decl_handler); + XML_SetAttlistDeclHandler(g_parser, dummy_attlist_decl_handler); + XML_SetProcessingInstructionHandler(g_parser, dummy_pi_handler); + XML_SetCommentHandler(g_parser, dummy_comment_handler); + XML_SetStartCdataSectionHandler(g_parser, dummy_start_cdata_handler); + XML_SetEndCdataSectionHandler(g_parser, dummy_end_cdata_handler); + run_character_check(text, XCS("\n\n\n\n\n\n\n")); +} +END_TEST + +/* Test handling of attribute declarations */ +typedef struct AttTest { + const char *definition; + const XML_Char *element_name; + const XML_Char *attr_name; + const XML_Char *attr_type; + const XML_Char *default_value; + int is_required; +} AttTest; + +static void XMLCALL +verify_attlist_decl_handler(void *userData, const XML_Char *element_name, + const XML_Char *attr_name, + const XML_Char *attr_type, + const XML_Char *default_value, int is_required) { + AttTest *at = (AttTest *)userData; + + if (xcstrcmp(element_name, at->element_name)) + fail("Unexpected element name in attribute declaration"); + if (xcstrcmp(attr_name, at->attr_name)) + fail("Unexpected attribute name in attribute declaration"); + if (xcstrcmp(attr_type, at->attr_type)) + fail("Unexpected attribute type in attribute declaration"); + if ((default_value == NULL && at->default_value != NULL) + || (default_value != NULL && at->default_value == NULL) + || (default_value != NULL && xcstrcmp(default_value, at->default_value))) + fail("Unexpected default value in attribute declaration"); + if (is_required != at->is_required) + fail("Requirement mismatch in attribute declaration"); +} + +START_TEST(test_dtd_attr_handling) { + const char *prolog = "\n"; + AttTest attr_data[] + = {{"\n" + "]>" + "", + XCS("doc"), XCS("a"), + XCS("(one|two|three)"), /* Extraneous spaces will be removed */ + NULL, XML_TRUE}, + {"\n" + "\n" + "]>" + "", + XCS("doc"), XCS("a"), XCS("NOTATION(foo)"), NULL, XML_FALSE}, + {"\n" + "]>" + "", + XCS("doc"), XCS("a"), XCS("NOTATION(foo)"), XCS("bar"), XML_FALSE}, + {"\n" + "]>" + "", + XCS("doc"), XCS("a"), XCS("CDATA"), +#ifdef XML_UNICODE + XCS("\x06f2"), +#else + XCS("\xdb\xb2"), +#endif + XML_FALSE}, + {NULL, NULL, NULL, NULL, NULL, XML_FALSE}}; + AttTest *test; + + for (test = attr_data; test->definition != NULL; test++) { + XML_SetAttlistDeclHandler(g_parser, verify_attlist_decl_handler); + XML_SetUserData(g_parser, test); + if (_XML_Parse_SINGLE_BYTES(g_parser, prolog, (int)strlen(prolog), + XML_FALSE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + if (_XML_Parse_SINGLE_BYTES(g_parser, test->definition, + (int)strlen(test->definition), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + XML_ParserReset(g_parser, NULL); + } +} +END_TEST + +/* See related SF bug #673791. + When namespace processing is enabled, setting the namespace URI for + a prefix is not allowed; this test ensures that it *is* allowed + when namespace processing is not enabled. + (See Namespaces in XML, section 2.) +*/ +START_TEST(test_empty_ns_without_namespaces) { + const char *text = "\n" + " \n" + ""; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Regression test for SF bug #824420. + Checks that an xmlns:prefix attribute set in an attribute's default + value isn't misinterpreted. +*/ +START_TEST(test_ns_in_attribute_default_without_namespaces) { + const char *text = "\n" + " ]>\n" + ""; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +static const char *long_character_data_text + = "" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + ""; + +static XML_Bool resumable = XML_FALSE; + +static void +clearing_aborting_character_handler(void *userData, const XML_Char *s, + int len) { + UNUSED_P(userData); + UNUSED_P(s); + UNUSED_P(len); + XML_StopParser(g_parser, resumable); + XML_SetCharacterDataHandler(g_parser, NULL); +} + +/* Regression test for SF bug #1515266: missing check of stopped + parser in doContext() 'for' loop. */ +START_TEST(test_stop_parser_between_char_data_calls) { + /* The sample data must be big enough that there are two calls to + the character data handler from within the inner "for" loop of + the XML_TOK_DATA_CHARS case in doContent(), and the character + handler must stop the parser and clear the character data + handler. + */ + const char *text = long_character_data_text; + + XML_SetCharacterDataHandler(g_parser, clearing_aborting_character_handler); + resumable = XML_FALSE; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + xml_failure(g_parser); + if (XML_GetErrorCode(g_parser) != XML_ERROR_ABORTED) + xml_failure(g_parser); +} +END_TEST + +/* Regression test for SF bug #1515266: missing check of stopped + parser in doContext() 'for' loop. */ +START_TEST(test_suspend_parser_between_char_data_calls) { + /* The sample data must be big enough that there are two calls to + the character data handler from within the inner "for" loop of + the XML_TOK_DATA_CHARS case in doContent(), and the character + handler must stop the parser and clear the character data + handler. + */ + const char *text = long_character_data_text; + + XML_SetCharacterDataHandler(g_parser, clearing_aborting_character_handler); + resumable = XML_TRUE; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_SUSPENDED) + xml_failure(g_parser); + if (XML_GetErrorCode(g_parser) != XML_ERROR_NONE) + xml_failure(g_parser); + /* Try parsing directly */ + if (XML_Parse(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + fail("Attempt to continue parse while suspended not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_SUSPENDED) + fail("Suspended parse not faulted with correct error"); +} +END_TEST + +static XML_Bool abortable = XML_FALSE; + +static void +parser_stop_character_handler(void *userData, const XML_Char *s, int len) { + UNUSED_P(userData); + UNUSED_P(s); + UNUSED_P(len); + XML_StopParser(g_parser, resumable); + XML_SetCharacterDataHandler(g_parser, NULL); + if (! resumable) { + /* Check that aborting an aborted parser is faulted */ + if (XML_StopParser(g_parser, XML_FALSE) != XML_STATUS_ERROR) + fail("Aborting aborted parser not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_FINISHED) + xml_failure(g_parser); + } else if (abortable) { + /* Check that aborting a suspended parser works */ + if (XML_StopParser(g_parser, XML_FALSE) == XML_STATUS_ERROR) + xml_failure(g_parser); + } else { + /* Check that suspending a suspended parser works */ + if (XML_StopParser(g_parser, XML_TRUE) != XML_STATUS_ERROR) + fail("Suspending suspended parser not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_SUSPENDED) + xml_failure(g_parser); + } +} + +/* Test repeated calls to XML_StopParser are handled correctly */ +START_TEST(test_repeated_stop_parser_between_char_data_calls) { + const char *text = long_character_data_text; + + XML_SetCharacterDataHandler(g_parser, parser_stop_character_handler); + resumable = XML_FALSE; + abortable = XML_FALSE; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + fail("Failed to double-stop parser"); + + XML_ParserReset(g_parser, NULL); + XML_SetCharacterDataHandler(g_parser, parser_stop_character_handler); + resumable = XML_TRUE; + abortable = XML_FALSE; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_SUSPENDED) + fail("Failed to double-suspend parser"); + + XML_ParserReset(g_parser, NULL); + XML_SetCharacterDataHandler(g_parser, parser_stop_character_handler); + resumable = XML_TRUE; + abortable = XML_TRUE; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + fail("Failed to suspend-abort parser"); +} +END_TEST + +START_TEST(test_good_cdata_ascii) { + const char *text = "Hello, world!]]>"; + const XML_Char *expected = XCS("Hello, world!"); + + CharData storage; + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetCharacterDataHandler(g_parser, accumulate_characters); + /* Add start and end handlers for coverage */ + XML_SetStartCdataSectionHandler(g_parser, dummy_start_cdata_handler); + XML_SetEndCdataSectionHandler(g_parser, dummy_end_cdata_handler); + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); + + /* Try again, this time with a default handler */ + XML_ParserReset(g_parser, NULL); + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetCharacterDataHandler(g_parser, accumulate_characters); + XML_SetDefaultHandler(g_parser, dummy_default_handler); + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_good_cdata_utf16) { + /* Test data is: + * + * + */ + const char text[] + = "\0<\0?\0x\0m\0l\0" + " \0v\0e\0r\0s\0i\0o\0n\0=\0'\0\x31\0.\0\x30\0'\0" + " \0e\0n\0c\0o\0d\0i\0n\0g\0=\0'\0u\0t\0f\0-\0" + "1\0" + "6\0'" + "\0?\0>\0\n" + "\0<\0a\0>\0<\0!\0[\0C\0D\0A\0T\0A\0[\0h\0e\0l\0l\0o\0]\0]\0>\0<\0/\0a\0>"; + const XML_Char *expected = XCS("hello"); + + CharData storage; + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetCharacterDataHandler(g_parser, accumulate_characters); + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_good_cdata_utf16_le) { + /* Test data is: + * + * + */ + const char text[] + = "<\0?\0x\0m\0l\0" + " \0v\0e\0r\0s\0i\0o\0n\0=\0'\0\x31\0.\0\x30\0'\0" + " \0e\0n\0c\0o\0d\0i\0n\0g\0=\0'\0u\0t\0f\0-\0" + "1\0" + "6\0'" + "\0?\0>\0\n" + "\0<\0a\0>\0<\0!\0[\0C\0D\0A\0T\0A\0[\0h\0e\0l\0l\0o\0]\0]\0>\0<\0/\0a\0>\0"; + const XML_Char *expected = XCS("hello"); + + CharData storage; + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetCharacterDataHandler(g_parser, accumulate_characters); + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Test UTF16 conversion of a long cdata string */ + +/* 16 characters: handy macro to reduce visual clutter */ +#define A_TO_P_IN_UTF16 "\0A\0B\0C\0D\0E\0F\0G\0H\0I\0J\0K\0L\0M\0N\0O\0P" + +START_TEST(test_long_cdata_utf16) { + /* Test data is: + * + * + */ + const char text[] + = "\0<\0?\0x\0m\0l\0 " + "\0v\0e\0r\0s\0i\0o\0n\0=\0'\0\x31\0.\0\x30\0'\0 " + "\0e\0n\0c\0o\0d\0i\0n\0g\0=\0'\0u\0t\0f\0-\0\x31\0\x36\0'\0?\0>" + "\0<\0a\0>\0<\0!\0[\0C\0D\0A\0T\0A\0[" + /* 64 characters per line */ + /* clang-format off */ + A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 + A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 + A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 + A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 + A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 + A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 + A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 + A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 + A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 + A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 + A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 + A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 + A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 + A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 + A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 + A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 A_TO_P_IN_UTF16 + A_TO_P_IN_UTF16 + /* clang-format on */ + "\0]\0]\0>\0<\0/\0a\0>"; + const XML_Char *expected = + /* clang-format off */ + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP") + XCS("ABCDEFGHIJKLMNOP"); + /* clang-format on */ + CharData storage; + void *buffer; + + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetCharacterDataHandler(g_parser, accumulate_characters); + buffer = XML_GetBuffer(g_parser, sizeof(text) - 1); + if (buffer == NULL) + fail("Could not allocate parse buffer"); + assert(buffer != NULL); + memcpy(buffer, text, sizeof(text) - 1); + if (XML_ParseBuffer(g_parser, sizeof(text) - 1, XML_TRUE) == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Test handling of multiple unit UTF-16 characters */ +#ifndef XML_MIN_SIZE /* FIXME workaround -DXML_MIN_SIZE + ASan (issue #332) */ +START_TEST(test_multichar_cdata_utf16) { + /* Test data is: + * + * + * + * where {MINIM} is U+1d15e (a minim or half-note) + * UTF-16: 0xd834 0xdd5e + * UTF-8: 0xf0 0x9d 0x85 0x9e + * and {CROTCHET} is U+1d15f (a crotchet or quarter-note) + * UTF-16: 0xd834 0xdd5f + * UTF-8: 0xf0 0x9d 0x85 0x9f + */ + const char text[] = "\0<\0?\0x\0m\0l\0" + " \0v\0e\0r\0s\0i\0o\0n\0=\0'\0\x31\0.\0\x30\0'\0" + " \0e\0n\0c\0o\0d\0i\0n\0g\0=\0'\0u\0t\0f\0-\0" + "1\0" + "6\0'" + "\0?\0>\0\n" + "\0<\0a\0>\0<\0!\0[\0C\0D\0A\0T\0A\0[" + "\xd8\x34\xdd\x5e\xd8\x34\xdd\x5f" + "\0]\0]\0>\0<\0/\0a\0>"; +# ifdef XML_UNICODE + const XML_Char *expected = XCS("\xd834\xdd5e\xd834\xdd5f"); +# else + const XML_Char *expected = XCS("\xf0\x9d\x85\x9e\xf0\x9d\x85\x9f"); +# endif + CharData storage; + + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetCharacterDataHandler(g_parser, accumulate_characters); + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST +#endif /* ifndef XML_MIN_SIZE */ + +/* Test that an element name with a UTF-16 surrogate pair is rejected */ +START_TEST(test_utf16_bad_surrogate_pair) { + /* Test data is: + * + * + * + * where {BADLINB} is U+10000 (the first Linear B character) + * with the UTF-16 surrogate pair in the wrong order, i.e. + * 0xdc00 0xd800 + */ + const char text[] = "\0<\0?\0x\0m\0l\0" + " \0v\0e\0r\0s\0i\0o\0n\0=\0'\0\x31\0.\0\x30\0'\0" + " \0e\0n\0c\0o\0d\0i\0n\0g\0=\0'\0u\0t\0f\0-\0" + "1\0" + "6\0'" + "\0?\0>\0\n" + "\0<\0a\0>\0<\0!\0[\0C\0D\0A\0T\0A\0[" + "\xdc\x00\xd8\x00" + "\0]\0]\0>\0<\0/\0a\0>"; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + != XML_STATUS_ERROR) + fail("Reversed UTF-16 surrogate pair not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_INVALID_TOKEN) + xml_failure(g_parser); +} +END_TEST + +START_TEST(test_bad_cdata) { + struct CaseData { + const char *text; + enum XML_Error expectedError; + }; + + struct CaseData cases[] + = {{"<", XML_ERROR_UNCLOSED_TOKEN}, + {"", XML_ERROR_INVALID_TOKEN}, + {"", XML_ERROR_UNCLOSED_TOKEN}, /* ?! */ + {"", XML_ERROR_UNCLOSED_TOKEN}, /* ?! */ + {"", XML_ERROR_INVALID_TOKEN}, + {"", XML_ERROR_INVALID_TOKEN}, + {"", XML_ERROR_INVALID_TOKEN}, + {"", XML_ERROR_INVALID_TOKEN}, + + {"", XML_ERROR_UNCLOSED_CDATA_SECTION}, + {"", XML_ERROR_UNCLOSED_CDATA_SECTION}, + {"", XML_ERROR_UNCLOSED_CDATA_SECTION}}; + + size_t i = 0; + for (; i < sizeof(cases) / sizeof(struct CaseData); i++) { + const enum XML_Status actualStatus = _XML_Parse_SINGLE_BYTES( + g_parser, cases[i].text, (int)strlen(cases[i].text), XML_TRUE); + const enum XML_Error actualError = XML_GetErrorCode(g_parser); + + assert(actualStatus == XML_STATUS_ERROR); + + if (actualError != cases[i].expectedError) { + char message[100]; + sprintf(message, + "Expected error %d but got error %d for case %u: \"%s\"\n", + cases[i].expectedError, actualError, (unsigned int)i + 1, + cases[i].text); + fail(message); + } + + XML_ParserReset(g_parser, NULL); + } +} +END_TEST + +/* Test failures in UTF-16 CDATA */ +#ifndef XML_MIN_SIZE /* FIXME workaround -DXML_MIN_SIZE + ASan (issue #332) */ +START_TEST(test_bad_cdata_utf16) { + struct CaseData { + size_t text_bytes; + const char *text; + enum XML_Error expected_error; + }; + + const char prolog[] = "\0<\0?\0x\0m\0l\0" + " \0v\0e\0r\0s\0i\0o\0n\0=\0'\0\x31\0.\0\x30\0'\0" + " \0e\0n\0c\0o\0d\0i\0n\0g\0=\0'\0u\0t\0f\0-\0" + "1\0" + "6\0'" + "\0?\0>\0\n" + "\0<\0a\0>"; + struct CaseData cases[] = { + {1, "\0", XML_ERROR_UNCLOSED_TOKEN}, + {2, "\0<", XML_ERROR_UNCLOSED_TOKEN}, + {3, "\0<\0", XML_ERROR_UNCLOSED_TOKEN}, + {4, "\0<\0!", XML_ERROR_UNCLOSED_TOKEN}, + {5, "\0<\0!\0", XML_ERROR_UNCLOSED_TOKEN}, + {6, "\0<\0!\0[", XML_ERROR_UNCLOSED_TOKEN}, + {7, "\0<\0!\0[\0", XML_ERROR_UNCLOSED_TOKEN}, + {8, "\0<\0!\0[\0C", XML_ERROR_UNCLOSED_TOKEN}, + {9, "\0<\0!\0[\0C\0", XML_ERROR_UNCLOSED_TOKEN}, + {10, "\0<\0!\0[\0C\0D", XML_ERROR_UNCLOSED_TOKEN}, + {11, "\0<\0!\0[\0C\0D\0", XML_ERROR_UNCLOSED_TOKEN}, + {12, "\0<\0!\0[\0C\0D\0A", XML_ERROR_UNCLOSED_TOKEN}, + {13, "\0<\0!\0[\0C\0D\0A\0", XML_ERROR_UNCLOSED_TOKEN}, + {14, "\0<\0!\0[\0C\0D\0A\0T", XML_ERROR_UNCLOSED_TOKEN}, + {15, "\0<\0!\0[\0C\0D\0A\0T\0", XML_ERROR_UNCLOSED_TOKEN}, + {16, "\0<\0!\0[\0C\0D\0A\0T\0A", XML_ERROR_UNCLOSED_TOKEN}, + {17, "\0<\0!\0[\0C\0D\0A\0T\0A\0", XML_ERROR_UNCLOSED_TOKEN}, + {18, "\0<\0!\0[\0C\0D\0A\0T\0A\0[", XML_ERROR_UNCLOSED_CDATA_SECTION}, + {19, "\0<\0!\0[\0C\0D\0A\0T\0A\0[\0", XML_ERROR_UNCLOSED_CDATA_SECTION}, + {20, "\0<\0!\0[\0C\0D\0A\0T\0A\0[\0Z", XML_ERROR_UNCLOSED_CDATA_SECTION}, + /* Now add a four-byte UTF-16 character */ + {21, "\0<\0!\0[\0C\0D\0A\0T\0A\0[\0Z\xd8", + XML_ERROR_UNCLOSED_CDATA_SECTION}, + {22, "\0<\0!\0[\0C\0D\0A\0T\0A\0[\0Z\xd8\x34", XML_ERROR_PARTIAL_CHAR}, + {23, "\0<\0!\0[\0C\0D\0A\0T\0A\0[\0Z\xd8\x34\xdd", + XML_ERROR_PARTIAL_CHAR}, + {24, "\0<\0!\0[\0C\0D\0A\0T\0A\0[\0Z\xd8\x34\xdd\x5e", + XML_ERROR_UNCLOSED_CDATA_SECTION}}; + size_t i; + + for (i = 0; i < sizeof(cases) / sizeof(struct CaseData); i++) { + enum XML_Status actual_status; + enum XML_Error actual_error; + + if (_XML_Parse_SINGLE_BYTES(g_parser, prolog, (int)sizeof(prolog) - 1, + XML_FALSE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + actual_status = _XML_Parse_SINGLE_BYTES(g_parser, cases[i].text, + (int)cases[i].text_bytes, XML_TRUE); + assert(actual_status == XML_STATUS_ERROR); + actual_error = XML_GetErrorCode(g_parser); + if (actual_error != cases[i].expected_error) { + char message[1024]; + + sprintf(message, + "Expected error %d (%" XML_FMT_STR "), got %d (%" XML_FMT_STR + ") for case %lu\n", + cases[i].expected_error, XML_ErrorString(cases[i].expected_error), + actual_error, XML_ErrorString(actual_error), + (long unsigned)(i + 1)); + fail(message); + } + XML_ParserReset(g_parser, NULL); + } +} +END_TEST +#endif /* ifndef XML_MIN_SIZE */ + +static const char *long_cdata_text + = ""; + +/* Test stopping the parser in cdata handler */ +START_TEST(test_stop_parser_between_cdata_calls) { + const char *text = long_cdata_text; + + XML_SetCharacterDataHandler(g_parser, clearing_aborting_character_handler); + resumable = XML_FALSE; + expect_failure(text, XML_ERROR_ABORTED, "Parse not aborted in CDATA handler"); +} +END_TEST + +/* Test suspending the parser in cdata handler */ +START_TEST(test_suspend_parser_between_cdata_calls) { + const char *text = long_cdata_text; + enum XML_Status result; + + XML_SetCharacterDataHandler(g_parser, clearing_aborting_character_handler); + resumable = XML_TRUE; + result = _XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE); + if (result != XML_STATUS_SUSPENDED) { + if (result == XML_STATUS_ERROR) + xml_failure(g_parser); + fail("Parse not suspended in CDATA handler"); + } + if (XML_GetErrorCode(g_parser) != XML_ERROR_NONE) + xml_failure(g_parser); +} +END_TEST + +/* Test memory allocation functions */ +START_TEST(test_memory_allocation) { + char *buffer = (char *)XML_MemMalloc(g_parser, 256); + char *p; + + if (buffer == NULL) { + fail("Allocation failed"); + } else { + /* Try writing to memory; some OSes try to cheat! */ + buffer[0] = 'T'; + buffer[1] = 'E'; + buffer[2] = 'S'; + buffer[3] = 'T'; + buffer[4] = '\0'; + if (strcmp(buffer, "TEST") != 0) { + fail("Memory not writable"); + } else { + p = (char *)XML_MemRealloc(g_parser, buffer, 512); + if (p == NULL) { + fail("Reallocation failed"); + } else { + /* Write again, just to be sure */ + buffer = p; + buffer[0] = 'V'; + if (strcmp(buffer, "VEST") != 0) { + fail("Reallocated memory not writable"); + } + } + } + XML_MemFree(g_parser, buffer); + } +} +END_TEST + +static void XMLCALL +record_default_handler(void *userData, const XML_Char *s, int len) { + UNUSED_P(s); + UNUSED_P(len); + CharData_AppendXMLChars((CharData *)userData, XCS("D"), 1); +} + +static void XMLCALL +record_cdata_handler(void *userData, const XML_Char *s, int len) { + UNUSED_P(s); + UNUSED_P(len); + CharData_AppendXMLChars((CharData *)userData, XCS("C"), 1); + XML_DefaultCurrent(g_parser); +} + +static void XMLCALL +record_cdata_nodefault_handler(void *userData, const XML_Char *s, int len) { + UNUSED_P(s); + UNUSED_P(len); + CharData_AppendXMLChars((CharData *)userData, XCS("c"), 1); +} + +static void XMLCALL +record_skip_handler(void *userData, const XML_Char *entityName, + int is_parameter_entity) { + UNUSED_P(entityName); + CharData_AppendXMLChars((CharData *)userData, + is_parameter_entity ? XCS("E") : XCS("e"), 1); +} + +/* Test XML_DefaultCurrent() passes handling on correctly */ +START_TEST(test_default_current) { + const char *text = "hell]"; + const char *entity_text = "\n" + "]>\n" + "&entity;"; + CharData storage; + + XML_SetDefaultHandler(g_parser, record_default_handler); + XML_SetCharacterDataHandler(g_parser, record_cdata_handler); + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, XCS("DCDCDCDCDCDD")); + + /* Again, without the defaulting */ + XML_ParserReset(g_parser, NULL); + XML_SetDefaultHandler(g_parser, record_default_handler); + XML_SetCharacterDataHandler(g_parser, record_cdata_nodefault_handler); + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, XCS("DcccccD")); + + /* Now with an internal entity to complicate matters */ + XML_ParserReset(g_parser, NULL); + XML_SetDefaultHandler(g_parser, record_default_handler); + XML_SetCharacterDataHandler(g_parser, record_cdata_handler); + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, entity_text, (int)strlen(entity_text), + XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + /* The default handler suppresses the entity */ + CharData_CheckXMLChars(&storage, XCS("DDDDDDDDDDDDDDDDDDD")); + + /* Again, with a skip handler */ + XML_ParserReset(g_parser, NULL); + XML_SetDefaultHandler(g_parser, record_default_handler); + XML_SetCharacterDataHandler(g_parser, record_cdata_handler); + XML_SetSkippedEntityHandler(g_parser, record_skip_handler); + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, entity_text, (int)strlen(entity_text), + XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + /* The default handler suppresses the entity */ + CharData_CheckXMLChars(&storage, XCS("DDDDDDDDDDDDDDDDDeD")); + + /* This time, allow the entity through */ + XML_ParserReset(g_parser, NULL); + XML_SetDefaultHandlerExpand(g_parser, record_default_handler); + XML_SetCharacterDataHandler(g_parser, record_cdata_handler); + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, entity_text, (int)strlen(entity_text), + XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, XCS("DDDDDDDDDDDDDDDDDCDD")); + + /* Finally, without passing the cdata to the default handler */ + XML_ParserReset(g_parser, NULL); + XML_SetDefaultHandlerExpand(g_parser, record_default_handler); + XML_SetCharacterDataHandler(g_parser, record_cdata_nodefault_handler); + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, entity_text, (int)strlen(entity_text), + XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, XCS("DDDDDDDDDDDDDDDDDcD")); +} +END_TEST + +/* Test DTD element parsing code paths */ +START_TEST(test_dtd_elements) { + const char *text = "\n" + "\n" + "]>\n" + "Wombats are go"; + + XML_SetElementDeclHandler(g_parser, dummy_element_decl_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test foreign DTD handling */ +START_TEST(test_set_foreign_dtd) { + const char *text1 = "\n"; + const char *text2 = "&entity;"; + ExtTest test_data = {"", NULL, NULL}; + + /* Check hash salt is passed through too */ + XML_SetHashSalt(g_parser, 0x12345678); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetUserData(g_parser, &test_data); + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader); + /* Add a default handler to exercise more code paths */ + XML_SetDefaultHandler(g_parser, dummy_default_handler); + if (XML_UseForeignDTD(g_parser, XML_TRUE) != XML_ERROR_NONE) + fail("Could not set foreign DTD"); + if (_XML_Parse_SINGLE_BYTES(g_parser, text1, (int)strlen(text1), XML_FALSE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + + /* Ensure that trying to set the DTD after parsing has started + * is faulted, even if it's the same setting. + */ + if (XML_UseForeignDTD(g_parser, XML_TRUE) + != XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING) + fail("Failed to reject late foreign DTD setting"); + /* Ditto for the hash salt */ + if (XML_SetHashSalt(g_parser, 0x23456789)) + fail("Failed to reject late hash salt change"); + + /* Now finish the parse */ + if (_XML_Parse_SINGLE_BYTES(g_parser, text2, (int)strlen(text2), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test foreign DTD handling with a failing NotStandalone handler */ +START_TEST(test_foreign_dtd_not_standalone) { + const char *text = "\n" + "&entity;"; + ExtTest test_data = {"", NULL, NULL}; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetUserData(g_parser, &test_data); + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader); + XML_SetNotStandaloneHandler(g_parser, reject_not_standalone_handler); + if (XML_UseForeignDTD(g_parser, XML_TRUE) != XML_ERROR_NONE) + fail("Could not set foreign DTD"); + expect_failure(text, XML_ERROR_NOT_STANDALONE, + "NotStandalonehandler failed to reject"); +} +END_TEST + +/* Test invalid character in a foreign DTD is faulted */ +START_TEST(test_invalid_foreign_dtd) { + const char *text = "\n" + "&entity;"; + ExtFaults test_data + = {"$", "Dollar not faulted", NULL, XML_ERROR_INVALID_TOKEN}; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetUserData(g_parser, &test_data); + XML_SetExternalEntityRefHandler(g_parser, external_entity_faulter); + XML_UseForeignDTD(g_parser, XML_TRUE); + expect_failure(text, XML_ERROR_EXTERNAL_ENTITY_HANDLING, + "Bad DTD should not have been accepted"); +} +END_TEST + +/* Test foreign DTD use with a doctype */ +START_TEST(test_foreign_dtd_with_doctype) { + const char *text1 = "\n" + "]>\n"; + const char *text2 = "&entity;"; + ExtTest test_data = {"", NULL, NULL}; + + /* Check hash salt is passed through too */ + XML_SetHashSalt(g_parser, 0x12345678); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetUserData(g_parser, &test_data); + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader); + /* Add a default handler to exercise more code paths */ + XML_SetDefaultHandler(g_parser, dummy_default_handler); + if (XML_UseForeignDTD(g_parser, XML_TRUE) != XML_ERROR_NONE) + fail("Could not set foreign DTD"); + if (_XML_Parse_SINGLE_BYTES(g_parser, text1, (int)strlen(text1), XML_FALSE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + + /* Ensure that trying to set the DTD after parsing has started + * is faulted, even if it's the same setting. + */ + if (XML_UseForeignDTD(g_parser, XML_TRUE) + != XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING) + fail("Failed to reject late foreign DTD setting"); + /* Ditto for the hash salt */ + if (XML_SetHashSalt(g_parser, 0x23456789)) + fail("Failed to reject late hash salt change"); + + /* Now finish the parse */ + if (_XML_Parse_SINGLE_BYTES(g_parser, text2, (int)strlen(text2), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test XML_UseForeignDTD with no external subset present */ +static int XMLCALL +external_entity_null_loader(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + UNUSED_P(parser); + UNUSED_P(context); + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + return XML_STATUS_OK; +} + +START_TEST(test_foreign_dtd_without_external_subset) { + const char *text = "]>\n" + "&foo;"; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetUserData(g_parser, NULL); + XML_SetExternalEntityRefHandler(g_parser, external_entity_null_loader); + XML_UseForeignDTD(g_parser, XML_TRUE); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +START_TEST(test_empty_foreign_dtd) { + const char *text = "\n" + "&entity;"; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_null_loader); + XML_UseForeignDTD(g_parser, XML_TRUE); + expect_failure(text, XML_ERROR_UNDEFINED_ENTITY, + "Undefined entity not faulted"); +} +END_TEST + +/* Test XML Base is set and unset appropriately */ +START_TEST(test_set_base) { + const XML_Char *old_base; + const XML_Char *new_base = XCS("/local/file/name.xml"); + + old_base = XML_GetBase(g_parser); + if (XML_SetBase(g_parser, new_base) != XML_STATUS_OK) + fail("Unable to set base"); + if (xcstrcmp(XML_GetBase(g_parser), new_base) != 0) + fail("Base setting not correct"); + if (XML_SetBase(g_parser, NULL) != XML_STATUS_OK) + fail("Unable to NULL base"); + if (XML_GetBase(g_parser) != NULL) + fail("Base setting not nulled"); + XML_SetBase(g_parser, old_base); +} +END_TEST + +/* Test attribute counts, indexing, etc */ +typedef struct attrInfo { + const XML_Char *name; + const XML_Char *value; +} AttrInfo; + +typedef struct elementInfo { + const XML_Char *name; + int attr_count; + const XML_Char *id_name; + AttrInfo *attributes; +} ElementInfo; + +static void XMLCALL +counting_start_element_handler(void *userData, const XML_Char *name, + const XML_Char **atts) { + ElementInfo *info = (ElementInfo *)userData; + AttrInfo *attr; + int count, id, i; + + while (info->name != NULL) { + if (! xcstrcmp(name, info->name)) + break; + info++; + } + if (info->name == NULL) + fail("Element not recognised"); + /* The attribute count is twice what you might expect. It is a + * count of items in atts, an array which contains alternating + * attribute names and attribute values. For the naive user this + * is possibly a little unexpected, but it is what the + * documentation in expat.h tells us to expect. + */ + count = XML_GetSpecifiedAttributeCount(g_parser); + if (info->attr_count * 2 != count) { + fail("Not got expected attribute count"); + return; + } + id = XML_GetIdAttributeIndex(g_parser); + if (id == -1 && info->id_name != NULL) { + fail("ID not present"); + return; + } + if (id != -1 && xcstrcmp(atts[id], info->id_name)) { + fail("ID does not have the correct name"); + return; + } + for (i = 0; i < info->attr_count; i++) { + attr = info->attributes; + while (attr->name != NULL) { + if (! xcstrcmp(atts[0], attr->name)) + break; + attr++; + } + if (attr->name == NULL) { + fail("Attribute not recognised"); + return; + } + if (xcstrcmp(atts[1], attr->value)) { + fail("Attribute has wrong value"); + return; + } + /* Remember, two entries in atts per attribute (see above) */ + atts += 2; + } +} + +START_TEST(test_attributes) { + const char *text = "\n" + "\n" + "]>" + "" + "" + ""; + AttrInfo doc_info[] = {{XCS("a"), XCS("1")}, + {XCS("b"), XCS("2")}, + {XCS("id"), XCS("one")}, + {NULL, NULL}}; + AttrInfo tag_info[] = {{XCS("c"), XCS("3")}, {NULL, NULL}}; + ElementInfo info[] = {{XCS("doc"), 3, XCS("id"), NULL}, + {XCS("tag"), 1, NULL, NULL}, + {NULL, 0, NULL, NULL}}; + info[0].attributes = doc_info; + info[1].attributes = tag_info; + + XML_SetStartElementHandler(g_parser, counting_start_element_handler); + XML_SetUserData(g_parser, info); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test reset works correctly in the middle of processing an internal + * entity. Exercises some obscure code in XML_ParserReset(). + */ +START_TEST(test_reset_in_entity) { + const char *text = "\n" + "\n" + "]>\n" + "&entity;"; + XML_ParsingStatus status; + + resumable = XML_TRUE; + XML_SetCharacterDataHandler(g_parser, clearing_aborting_character_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_FALSE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + XML_GetParsingStatus(g_parser, &status); + if (status.parsing != XML_SUSPENDED) + fail("Parsing status not SUSPENDED"); + XML_ParserReset(g_parser, NULL); + XML_GetParsingStatus(g_parser, &status); + if (status.parsing != XML_INITIALIZED) + fail("Parsing status doesn't reset to INITIALIZED"); +} +END_TEST + +/* Test that resume correctly passes through parse errors */ +START_TEST(test_resume_invalid_parse) { + const char *text = "Hello"); + CharData storage; + + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetDefaultHandler(g_parser, accumulate_characters); + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Test resetting a subordinate parser does exactly nothing */ +static int XMLCALL +external_entity_resetter(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text = ""; + XML_Parser ext_parser; + XML_ParsingStatus status; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + XML_GetParsingStatus(ext_parser, &status); + if (status.parsing != XML_INITIALIZED) { + fail("Parsing status is not INITIALIZED"); + return XML_STATUS_ERROR; + } + if (_XML_Parse_SINGLE_BYTES(ext_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) { + xml_failure(parser); + return XML_STATUS_ERROR; + } + XML_GetParsingStatus(ext_parser, &status); + if (status.parsing != XML_FINISHED) { + fail("Parsing status is not FINISHED"); + return XML_STATUS_ERROR; + } + /* Check we can't parse here */ + if (XML_Parse(ext_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + fail("Parsing when finished not faulted"); + if (XML_GetErrorCode(ext_parser) != XML_ERROR_FINISHED) + fail("Parsing when finished faulted with wrong code"); + XML_ParserReset(ext_parser, NULL); + XML_GetParsingStatus(ext_parser, &status); + if (status.parsing != XML_FINISHED) { + fail("Parsing status not still FINISHED"); + return XML_STATUS_ERROR; + } + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +START_TEST(test_subordinate_reset) { + const char *text = "\n" + "\n" + "&entity;"; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_resetter); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test suspending a subordinate parser */ + +static void XMLCALL +entity_suspending_decl_handler(void *userData, const XML_Char *name, + XML_Content *model) { + XML_Parser ext_parser = (XML_Parser)userData; + + UNUSED_P(name); + if (XML_StopParser(ext_parser, XML_TRUE) != XML_STATUS_ERROR) + fail("Attempting to suspend a subordinate parser not faulted"); + if (XML_GetErrorCode(ext_parser) != XML_ERROR_SUSPEND_PE) + fail("Suspending subordinate parser get wrong code"); + XML_SetElementDeclHandler(ext_parser, NULL); + XML_FreeContentModel(g_parser, model); +} + +static int XMLCALL +external_entity_suspender(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text = ""; + XML_Parser ext_parser; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + XML_SetElementDeclHandler(ext_parser, entity_suspending_decl_handler); + XML_SetUserData(ext_parser, ext_parser); + if (_XML_Parse_SINGLE_BYTES(ext_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) { + xml_failure(ext_parser); + return XML_STATUS_ERROR; + } + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +START_TEST(test_subordinate_suspend) { + const char *text = "\n" + "\n" + "&entity;"; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_suspender); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test suspending a subordinate parser from an XML declaration */ +/* Increases code coverage of the tests */ +static void XMLCALL +entity_suspending_xdecl_handler(void *userData, const XML_Char *version, + const XML_Char *encoding, int standalone) { + XML_Parser ext_parser = (XML_Parser)userData; + + UNUSED_P(version); + UNUSED_P(encoding); + UNUSED_P(standalone); + XML_StopParser(ext_parser, resumable); + XML_SetXmlDeclHandler(ext_parser, NULL); +} + +static int XMLCALL +external_entity_suspend_xmldecl(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text = ""; + XML_Parser ext_parser; + XML_ParsingStatus status; + enum XML_Status rc; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + XML_SetXmlDeclHandler(ext_parser, entity_suspending_xdecl_handler); + XML_SetUserData(ext_parser, ext_parser); + rc = _XML_Parse_SINGLE_BYTES(ext_parser, text, (int)strlen(text), XML_TRUE); + XML_GetParsingStatus(ext_parser, &status); + if (resumable) { + if (rc == XML_STATUS_ERROR) + xml_failure(ext_parser); + if (status.parsing != XML_SUSPENDED) + fail("Ext Parsing status not SUSPENDED"); + } else { + if (rc != XML_STATUS_ERROR) + fail("Ext parsing not aborted"); + if (XML_GetErrorCode(ext_parser) != XML_ERROR_ABORTED) + xml_failure(ext_parser); + if (status.parsing != XML_FINISHED) + fail("Ext Parsing status not FINISHED"); + } + + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +START_TEST(test_subordinate_xdecl_suspend) { + const char *text + = "\n" + "]>\n" + "&entity;"; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_suspend_xmldecl); + resumable = XML_TRUE; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +START_TEST(test_subordinate_xdecl_abort) { + const char *text + = "\n" + "]>\n" + "&entity;"; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_suspend_xmldecl); + resumable = XML_FALSE; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test external entity fault handling with suspension */ +static int XMLCALL +external_entity_suspending_faulter(XML_Parser parser, const XML_Char *context, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId) { + XML_Parser ext_parser; + ExtFaults *fault = (ExtFaults *)XML_GetUserData(parser); + void *buffer; + int parse_len = (int)strlen(fault->parse_text); + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + XML_SetXmlDeclHandler(ext_parser, entity_suspending_xdecl_handler); + XML_SetUserData(ext_parser, ext_parser); + resumable = XML_TRUE; + buffer = XML_GetBuffer(ext_parser, parse_len); + if (buffer == NULL) + fail("Could not allocate parse buffer"); + assert(buffer != NULL); + memcpy(buffer, fault->parse_text, parse_len); + if (XML_ParseBuffer(ext_parser, parse_len, XML_FALSE) != XML_STATUS_SUSPENDED) + fail("XML declaration did not suspend"); + if (XML_ResumeParser(ext_parser) != XML_STATUS_OK) + xml_failure(ext_parser); + if (XML_ParseBuffer(ext_parser, 0, XML_TRUE) != XML_STATUS_ERROR) + fail(fault->fail_text); + if (XML_GetErrorCode(ext_parser) != fault->error) + xml_failure(ext_parser); + + XML_ParserFree(ext_parser); + return XML_STATUS_ERROR; +} + +START_TEST(test_ext_entity_invalid_suspended_parse) { + const char *text = "\n" + "]>\n" + "&en;"; + ExtFaults faults[] + = {{"<", + "Incomplete element declaration not faulted", NULL, + XML_ERROR_UNCLOSED_TOKEN}, + {/* First two bytes of a three-byte char */ + "\xe2\x82", + "Incomplete character not faulted", NULL, XML_ERROR_PARTIAL_CHAR}, + {NULL, NULL, NULL, XML_ERROR_NONE}}; + ExtFaults *fault; + + for (fault = &faults[0]; fault->parse_text != NULL; fault++) { + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, + external_entity_suspending_faulter); + XML_SetUserData(g_parser, fault); + expect_failure(text, XML_ERROR_EXTERNAL_ENTITY_HANDLING, + "Parser did not report external entity error"); + XML_ParserReset(g_parser, NULL); + } +} +END_TEST + +/* Test setting an explicit encoding */ +START_TEST(test_explicit_encoding) { + const char *text1 = "Hello "; + const char *text2 = " World"; + + /* Just check that we can set the encoding to NULL before starting */ + if (XML_SetEncoding(g_parser, NULL) != XML_STATUS_OK) + fail("Failed to initialise encoding to NULL"); + /* Say we are UTF-8 */ + if (XML_SetEncoding(g_parser, XCS("utf-8")) != XML_STATUS_OK) + fail("Failed to set explicit encoding"); + if (_XML_Parse_SINGLE_BYTES(g_parser, text1, (int)strlen(text1), XML_FALSE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + /* Try to switch encodings mid-parse */ + if (XML_SetEncoding(g_parser, XCS("us-ascii")) != XML_STATUS_ERROR) + fail("Allowed encoding change"); + if (_XML_Parse_SINGLE_BYTES(g_parser, text2, (int)strlen(text2), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + /* Try now the parse is over */ + if (XML_SetEncoding(g_parser, NULL) != XML_STATUS_OK) + fail("Failed to unset encoding"); +} +END_TEST + +/* Test handling of trailing CR (rather than newline) */ +static void XMLCALL +cr_cdata_handler(void *userData, const XML_Char *s, int len) { + int *pfound = (int *)userData; + + /* Internal processing turns the CR into a newline for the + * character data handler, but not for the default handler + */ + if (len == 1 && (*s == XCS('\n') || *s == XCS('\r'))) + *pfound = 1; +} + +START_TEST(test_trailing_cr) { + const char *text = "\r"; + int found_cr; + + /* Try with a character handler, for code coverage */ + XML_SetCharacterDataHandler(g_parser, cr_cdata_handler); + XML_SetUserData(g_parser, &found_cr); + found_cr = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_OK) + fail("Failed to fault unclosed doc"); + if (found_cr == 0) + fail("Did not catch the carriage return"); + XML_ParserReset(g_parser, NULL); + + /* Now with a default handler instead */ + XML_SetDefaultHandler(g_parser, cr_cdata_handler); + XML_SetUserData(g_parser, &found_cr); + found_cr = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_OK) + fail("Failed to fault unclosed doc"); + if (found_cr == 0) + fail("Did not catch default carriage return"); +} +END_TEST + +/* Test trailing CR in an external entity parse */ +static int XMLCALL +external_entity_cr_catcher(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text = "\r"; + XML_Parser ext_parser; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + XML_SetCharacterDataHandler(ext_parser, cr_cdata_handler); + if (_XML_Parse_SINGLE_BYTES(ext_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(ext_parser); + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +static int XMLCALL +external_entity_bad_cr_catcher(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text = "\r"; + XML_Parser ext_parser; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + XML_SetCharacterDataHandler(ext_parser, cr_cdata_handler); + if (_XML_Parse_SINGLE_BYTES(ext_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_OK) + fail("Async entity error not caught"); + if (XML_GetErrorCode(ext_parser) != XML_ERROR_ASYNC_ENTITY) + xml_failure(ext_parser); + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +START_TEST(test_ext_entity_trailing_cr) { + const char *text = "\n" + "]>\n" + "&en;"; + int found_cr; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_cr_catcher); + XML_SetUserData(g_parser, &found_cr); + found_cr = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_OK) + xml_failure(g_parser); + if (found_cr == 0) + fail("No carriage return found"); + XML_ParserReset(g_parser, NULL); + + /* Try again with a different trailing CR */ + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_bad_cr_catcher); + XML_SetUserData(g_parser, &found_cr); + found_cr = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_OK) + xml_failure(g_parser); + if (found_cr == 0) + fail("No carriage return found"); +} +END_TEST + +/* Test handling of trailing square bracket */ +static void XMLCALL +rsqb_handler(void *userData, const XML_Char *s, int len) { + int *pfound = (int *)userData; + + if (len == 1 && *s == XCS(']')) + *pfound = 1; +} + +START_TEST(test_trailing_rsqb) { + const char *text8 = "]"; + const char text16[] = "\xFF\xFE<\000d\000o\000c\000>\000]\000"; + int found_rsqb; + int text8_len = (int)strlen(text8); + + XML_SetCharacterDataHandler(g_parser, rsqb_handler); + XML_SetUserData(g_parser, &found_rsqb); + found_rsqb = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text8, text8_len, XML_TRUE) + == XML_STATUS_OK) + fail("Failed to fault unclosed doc"); + if (found_rsqb == 0) + fail("Did not catch the right square bracket"); + + /* Try again with a different encoding */ + XML_ParserReset(g_parser, NULL); + XML_SetCharacterDataHandler(g_parser, rsqb_handler); + XML_SetUserData(g_parser, &found_rsqb); + found_rsqb = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text16, (int)sizeof(text16) - 1, + XML_TRUE) + == XML_STATUS_OK) + fail("Failed to fault unclosed doc"); + if (found_rsqb == 0) + fail("Did not catch the right square bracket"); + + /* And finally with a default handler */ + XML_ParserReset(g_parser, NULL); + XML_SetDefaultHandler(g_parser, rsqb_handler); + XML_SetUserData(g_parser, &found_rsqb); + found_rsqb = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text16, (int)sizeof(text16) - 1, + XML_TRUE) + == XML_STATUS_OK) + fail("Failed to fault unclosed doc"); + if (found_rsqb == 0) + fail("Did not catch the right square bracket"); +} +END_TEST + +/* Test trailing right square bracket in an external entity parse */ +static int XMLCALL +external_entity_rsqb_catcher(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text = "]"; + XML_Parser ext_parser; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + XML_SetCharacterDataHandler(ext_parser, rsqb_handler); + if (_XML_Parse_SINGLE_BYTES(ext_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + fail("Async entity error not caught"); + if (XML_GetErrorCode(ext_parser) != XML_ERROR_ASYNC_ENTITY) + xml_failure(ext_parser); + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +START_TEST(test_ext_entity_trailing_rsqb) { + const char *text = "\n" + "]>\n" + "&en;"; + int found_rsqb; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_rsqb_catcher); + XML_SetUserData(g_parser, &found_rsqb); + found_rsqb = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_OK) + xml_failure(g_parser); + if (found_rsqb == 0) + fail("No right square bracket found"); +} +END_TEST + +/* Test CDATA handling in an external entity */ +static int XMLCALL +external_entity_good_cdata_ascii(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text = "Hello, world!]]>"; + const XML_Char *expected = XCS("Hello, world!"); + CharData storage; + XML_Parser ext_parser; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + CharData_Init(&storage); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + XML_SetUserData(ext_parser, &storage); + XML_SetCharacterDataHandler(ext_parser, accumulate_characters); + + if (_XML_Parse_SINGLE_BYTES(ext_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(ext_parser); + CharData_CheckXMLChars(&storage, expected); + + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +START_TEST(test_ext_entity_good_cdata) { + const char *text = "\n" + "]>\n" + "&en;"; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_good_cdata_ascii); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_OK) + xml_failure(g_parser); +} +END_TEST + +/* Test user parameter settings */ +/* Variable holding the expected handler userData */ +static void *handler_data = NULL; +/* Count of the number of times the comment handler has been invoked */ +static int comment_count = 0; +/* Count of the number of skipped entities */ +static int skip_count = 0; +/* Count of the number of times the XML declaration handler is invoked */ +static int xdecl_count = 0; + +static void XMLCALL +xml_decl_handler(void *userData, const XML_Char *version, + const XML_Char *encoding, int standalone) { + UNUSED_P(version); + UNUSED_P(encoding); + if (userData != handler_data) + fail("User data (xml decl) not correctly set"); + if (standalone != -1) + fail("Standalone not flagged as not present in XML decl"); + xdecl_count++; +} + +static void XMLCALL +param_check_skip_handler(void *userData, const XML_Char *entityName, + int is_parameter_entity) { + UNUSED_P(entityName); + UNUSED_P(is_parameter_entity); + if (userData != handler_data) + fail("User data (skip) not correctly set"); + skip_count++; +} + +static void XMLCALL +data_check_comment_handler(void *userData, const XML_Char *data) { + UNUSED_P(data); + /* Check that the userData passed through is what we expect */ + if (userData != handler_data) + fail("User data (parser) not correctly set"); + /* Check that the user data in the parser is appropriate */ + if (XML_GetUserData(userData) != (void *)1) + fail("User data in parser not correctly set"); + comment_count++; +} + +static int XMLCALL +external_entity_param_checker(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text = "\n" + ""; + XML_Parser ext_parser; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + handler_data = ext_parser; + if (_XML_Parse_SINGLE_BYTES(ext_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) { + xml_failure(parser); + return XML_STATUS_ERROR; + } + handler_data = parser; + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +START_TEST(test_user_parameters) { + const char *text = "\n" + "\n" + "\n" + "&entity;"; + const char *epilog = "\n" + ""; + + comment_count = 0; + skip_count = 0; + xdecl_count = 0; + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetXmlDeclHandler(g_parser, xml_decl_handler); + XML_SetExternalEntityRefHandler(g_parser, external_entity_param_checker); + XML_SetCommentHandler(g_parser, data_check_comment_handler); + XML_SetSkippedEntityHandler(g_parser, param_check_skip_handler); + XML_UseParserAsHandlerArg(g_parser); + XML_SetUserData(g_parser, (void *)1); + handler_data = g_parser; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_FALSE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + if (comment_count != 2) + fail("Comment handler not invoked enough times"); + /* Ensure we can't change policy mid-parse */ + if (XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_NEVER)) + fail("Changed param entity parsing policy while parsing"); + if (_XML_Parse_SINGLE_BYTES(g_parser, epilog, (int)strlen(epilog), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + if (comment_count != 3) + fail("Comment handler not invoked enough times"); + if (skip_count != 1) + fail("Skip handler not invoked enough times"); + if (xdecl_count != 1) + fail("XML declaration handler not invoked"); +} +END_TEST + +/* Test that an explicit external entity handler argument replaces + * the parser as the first argument. + * + * We do not call the first parameter to the external entity handler + * 'parser' for once, since the first time the handler is called it + * will actually be a text string. We need to be able to access the + * global 'parser' variable to create our external entity parser from, + * since there are code paths we need to ensure get executed. + */ +static int XMLCALL +external_entity_ref_param_checker(XML_Parser parameter, const XML_Char *context, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId) { + const char *text = ""; + XML_Parser ext_parser; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + if ((void *)parameter != handler_data) + fail("External entity ref handler parameter not correct"); + + /* Here we use the global 'parser' variable */ + ext_parser = XML_ExternalEntityParserCreate(g_parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + if (_XML_Parse_SINGLE_BYTES(ext_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(ext_parser); + + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +START_TEST(test_ext_entity_ref_parameter) { + const char *text = "\n" + "\n" + "&entity;"; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_ref_param_checker); + /* Set a handler arg that is not NULL and not parser (which is + * what NULL would cause to be passed. + */ + XML_SetExternalEntityRefHandlerArg(g_parser, (void *)text); + handler_data = (void *)text; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + + /* Now try again with unset args */ + XML_ParserReset(g_parser, NULL); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_ref_param_checker); + XML_SetExternalEntityRefHandlerArg(g_parser, NULL); + handler_data = (void *)g_parser; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test the parsing of an empty string */ +START_TEST(test_empty_parse) { + const char *text = ""; + const char *partial = ""; + + if (XML_Parse(g_parser, NULL, 0, XML_FALSE) == XML_STATUS_ERROR) + fail("Parsing empty string faulted"); + if (XML_Parse(g_parser, NULL, 0, XML_TRUE) != XML_STATUS_ERROR) + fail("Parsing final empty string not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_NO_ELEMENTS) + fail("Parsing final empty string faulted for wrong reason"); + + /* Now try with valid text before the empty end */ + XML_ParserReset(g_parser, NULL); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_FALSE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + if (XML_Parse(g_parser, NULL, 0, XML_TRUE) == XML_STATUS_ERROR) + fail("Parsing final empty string faulted"); + + /* Now try with invalid text before the empty end */ + XML_ParserReset(g_parser, NULL); + if (_XML_Parse_SINGLE_BYTES(g_parser, partial, (int)strlen(partial), + XML_FALSE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + if (XML_Parse(g_parser, NULL, 0, XML_TRUE) != XML_STATUS_ERROR) + fail("Parsing final incomplete empty string not faulted"); +} +END_TEST + +/* Test odd corners of the XML_GetBuffer interface */ +static enum XML_Status +get_feature(enum XML_FeatureEnum feature_id, long *presult) { + const XML_Feature *feature = XML_GetFeatureList(); + + if (feature == NULL) + return XML_STATUS_ERROR; + for (; feature->feature != XML_FEATURE_END; feature++) { + if (feature->feature == feature_id) { + *presult = feature->value; + return XML_STATUS_OK; + } + } + return XML_STATUS_ERROR; +} + +/* Having an element name longer than 1024 characters exercises some + * of the pool allocation code in the parser that otherwise does not + * get executed. The count at the end of the line is the number of + * characters (bytes) in the element name by that point.x + */ +static const char *get_buffer_test_text + = "\n" +START_TEST(test_byte_info_at_error) { + const char *text = PRE_ERROR_STR POST_ERROR_STR; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_OK) + fail("Syntax error not faulted"); + if (XML_GetCurrentByteCount(g_parser) != 0) + fail("Error byte count incorrect"); + if (XML_GetCurrentByteIndex(g_parser) != strlen(PRE_ERROR_STR)) + fail("Error byte index incorrect"); +} +END_TEST +#undef PRE_ERROR_STR +#undef POST_ERROR_STR + +/* Test position information in handler */ +typedef struct ByteTestData { + int start_element_len; + int cdata_len; + int total_string_len; +} ByteTestData; + +static void +byte_character_handler(void *userData, const XML_Char *s, int len) { +#ifdef XML_CONTEXT_BYTES + int offset, size; + const char *buffer; + ByteTestData *data = (ByteTestData *)userData; + + UNUSED_P(s); + buffer = XML_GetInputContext(g_parser, &offset, &size); + if (buffer == NULL) + fail("Failed to get context buffer"); + if (offset != data->start_element_len) + fail("Context offset in unexpected position"); + if (len != data->cdata_len) + fail("CDATA length reported incorrectly"); + if (size != data->total_string_len) + fail("Context size is not full buffer"); + if (XML_GetCurrentByteIndex(g_parser) != offset) + fail("Character byte index incorrect"); + if (XML_GetCurrentByteCount(g_parser) != len) + fail("Character byte count incorrect"); +#else + UNUSED_P(s); + UNUSED_P(userData); + UNUSED_P(len); +#endif +} + +#define START_ELEMENT "" +#define CDATA_TEXT "Hello" +#define END_ELEMENT "" +START_TEST(test_byte_info_at_cdata) { + const char *text = START_ELEMENT CDATA_TEXT END_ELEMENT; + int offset, size; + ByteTestData data; + + /* Check initial context is empty */ + if (XML_GetInputContext(g_parser, &offset, &size) != NULL) + fail("Unexpected context at start of parse"); + + data.start_element_len = (int)strlen(START_ELEMENT); + data.cdata_len = (int)strlen(CDATA_TEXT); + data.total_string_len = (int)strlen(text); + XML_SetCharacterDataHandler(g_parser, byte_character_handler); + XML_SetUserData(g_parser, &data); + if (XML_Parse(g_parser, text, (int)strlen(text), XML_TRUE) != XML_STATUS_OK) + xml_failure(g_parser); +} +END_TEST +#undef START_ELEMENT +#undef CDATA_TEXT +#undef END_ELEMENT + +/* Test predefined entities are correctly recognised */ +START_TEST(test_predefined_entities) { + const char *text = "<>&"'"; + const XML_Char *expected = XCS("<>&"'"); + const XML_Char *result = XCS("<>&\"'"); + CharData storage; + + XML_SetDefaultHandler(g_parser, accumulate_characters); + /* run_character_check uses XML_SetCharacterDataHandler(), which + * unfortunately heads off a code path that we need to exercise. + */ + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + /* The default handler doesn't translate the entities */ + CharData_CheckXMLChars(&storage, expected); + + /* Now try again and check the translation */ + XML_ParserReset(g_parser, NULL); + run_character_check(text, result); +} +END_TEST + +/* Regression test that an invalid tag in an external parameter + * reference in an external DTD is correctly faulted. + * + * Only a few specific tags are legal in DTDs ignoring comments and + * processing instructions, all of which begin with an exclamation + * mark. "" is not one of them, so the parser should raise an + * error on encountering it. + */ +static int XMLCALL +external_entity_param(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text1 = "\n" + "\n" + "\n" + "%e1;\n"; + const char *text2 = "\n" + "\n"; + XML_Parser ext_parser; + + UNUSED_P(base); + UNUSED_P(publicId); + if (systemId == NULL) + return XML_STATUS_OK; + + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + + if (! xcstrcmp(systemId, XCS("004-1.ent"))) { + if (_XML_Parse_SINGLE_BYTES(ext_parser, text1, (int)strlen(text1), XML_TRUE) + != XML_STATUS_ERROR) + fail("Inner DTD with invalid tag not rejected"); + if (XML_GetErrorCode(ext_parser) != XML_ERROR_EXTERNAL_ENTITY_HANDLING) + xml_failure(ext_parser); + } else if (! xcstrcmp(systemId, XCS("004-2.ent"))) { + if (_XML_Parse_SINGLE_BYTES(ext_parser, text2, (int)strlen(text2), XML_TRUE) + != XML_STATUS_ERROR) + fail("Invalid tag in external param not rejected"); + if (XML_GetErrorCode(ext_parser) != XML_ERROR_SYNTAX) + xml_failure(ext_parser); + } else { + fail("Unknown system ID"); + } + + XML_ParserFree(ext_parser); + return XML_STATUS_ERROR; +} + +START_TEST(test_invalid_tag_in_dtd) { + const char *text = "\n" + "\n"; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_param); + expect_failure(text, XML_ERROR_EXTERNAL_ENTITY_HANDLING, + "Invalid tag IN DTD external param not rejected"); +} +END_TEST + +/* Test entities not quite the predefined ones are not mis-recognised */ +START_TEST(test_not_predefined_entities) { + const char *text[] = {"&pt;", "&amo;", + "&quid;", "&apod;", NULL}; + int i = 0; + + while (text[i] != NULL) { + expect_failure(text[i], XML_ERROR_UNDEFINED_ENTITY, + "Undefined entity not rejected"); + XML_ParserReset(g_parser, NULL); + i++; + } +} +END_TEST + +/* Test conditional inclusion (IGNORE) */ +static int XMLCALL +external_entity_load_ignore(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text = "]]>"; + XML_Parser ext_parser; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + if (_XML_Parse_SINGLE_BYTES(ext_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(parser); + + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +START_TEST(test_ignore_section) { + const char *text = "\n" + "&entity;"; + const XML_Char *expected + = XCS("]]>\n&entity;"); + CharData storage; + + CharData_Init(&storage); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetUserData(g_parser, &storage); + XML_SetExternalEntityRefHandler(g_parser, external_entity_load_ignore); + XML_SetDefaultHandler(g_parser, accumulate_characters); + XML_SetStartDoctypeDeclHandler(g_parser, dummy_start_doctype_handler); + XML_SetEndDoctypeDeclHandler(g_parser, dummy_end_doctype_handler); + XML_SetElementDeclHandler(g_parser, dummy_element_decl_handler); + XML_SetStartElementHandler(g_parser, dummy_start_element); + XML_SetEndElementHandler(g_parser, dummy_end_element); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +static int XMLCALL +external_entity_load_ignore_utf16(XML_Parser parser, const XML_Char *context, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId) { + const char text[] = + /* ]]> */ + "<\0!\0[\0I\0G\0N\0O\0R\0E\0[\0" + "<\0!\0E\0L\0E\0M\0E\0N\0T\0 \0e\0 \0" + "(\0#\0P\0C\0D\0A\0T\0A\0)\0*\0>\0]\0]\0>\0"; + XML_Parser ext_parser; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + if (_XML_Parse_SINGLE_BYTES(ext_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(parser); + + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +START_TEST(test_ignore_section_utf16) { + const char text[] = + /* */ + "<\0!\0D\0O\0C\0T\0Y\0P\0E\0 \0d\0 " + "\0S\0Y\0S\0T\0E\0M\0 \0'\0s\0'\0>\0\n\0" + /* &en; */ + "<\0d\0>\0<\0e\0>\0&\0e\0n\0;\0<\0/\0e\0>\0<\0/\0d\0>\0"; + const XML_Char *expected = XCS("]]>\n&en;"); + CharData storage; + + CharData_Init(&storage); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetUserData(g_parser, &storage); + XML_SetExternalEntityRefHandler(g_parser, external_entity_load_ignore_utf16); + XML_SetDefaultHandler(g_parser, accumulate_characters); + XML_SetStartDoctypeDeclHandler(g_parser, dummy_start_doctype_handler); + XML_SetEndDoctypeDeclHandler(g_parser, dummy_end_doctype_handler); + XML_SetElementDeclHandler(g_parser, dummy_element_decl_handler); + XML_SetStartElementHandler(g_parser, dummy_start_element); + XML_SetEndElementHandler(g_parser, dummy_end_element); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +static int XMLCALL +external_entity_load_ignore_utf16_be(XML_Parser parser, const XML_Char *context, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId) { + const char text[] = + /* ]]> */ + "\0<\0!\0[\0I\0G\0N\0O\0R\0E\0[" + "\0<\0!\0E\0L\0E\0M\0E\0N\0T\0 \0e\0 " + "\0(\0#\0P\0C\0D\0A\0T\0A\0)\0*\0>\0]\0]\0>"; + XML_Parser ext_parser; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + if (_XML_Parse_SINGLE_BYTES(ext_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(parser); + + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +START_TEST(test_ignore_section_utf16_be) { + const char text[] = + /* */ + "\0<\0!\0D\0O\0C\0T\0Y\0P\0E\0 \0d\0 " + "\0S\0Y\0S\0T\0E\0M\0 \0'\0s\0'\0>\0\n" + /* &en; */ + "\0<\0d\0>\0<\0e\0>\0&\0e\0n\0;\0<\0/\0e\0>\0<\0/\0d\0>"; + const XML_Char *expected = XCS("]]>\n&en;"); + CharData storage; + + CharData_Init(&storage); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetUserData(g_parser, &storage); + XML_SetExternalEntityRefHandler(g_parser, + external_entity_load_ignore_utf16_be); + XML_SetDefaultHandler(g_parser, accumulate_characters); + XML_SetStartDoctypeDeclHandler(g_parser, dummy_start_doctype_handler); + XML_SetEndDoctypeDeclHandler(g_parser, dummy_end_doctype_handler); + XML_SetElementDeclHandler(g_parser, dummy_element_decl_handler); + XML_SetStartElementHandler(g_parser, dummy_start_element); + XML_SetEndElementHandler(g_parser, dummy_end_element); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Test mis-formatted conditional exclusion */ +START_TEST(test_bad_ignore_section) { + const char *text = "\n" + "&entity;"; + ExtFaults faults[] + = {{"", "Invalid XML character not faulted", NULL, + XML_ERROR_INVALID_TOKEN}, + {/* FIrst two bytes of a three-byte char */ + "parse_text != NULL; fault++) { + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_faulter); + XML_SetUserData(g_parser, fault); + expect_failure(text, XML_ERROR_EXTERNAL_ENTITY_HANDLING, + "Incomplete IGNORE section not failed"); + XML_ParserReset(g_parser, NULL); + } +} +END_TEST + +/* Test recursive parsing */ +static int XMLCALL +external_entity_valuer(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text1 = "\n" + "\n" + "\n" + "%e1;\n"; + XML_Parser ext_parser; + + UNUSED_P(base); + UNUSED_P(publicId); + if (systemId == NULL) + return XML_STATUS_OK; + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + if (! xcstrcmp(systemId, XCS("004-1.ent"))) { + if (_XML_Parse_SINGLE_BYTES(ext_parser, text1, (int)strlen(text1), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(ext_parser); + } else if (! xcstrcmp(systemId, XCS("004-2.ent"))) { + ExtFaults *fault = (ExtFaults *)XML_GetUserData(parser); + enum XML_Status status; + enum XML_Error error; + + status = _XML_Parse_SINGLE_BYTES(ext_parser, fault->parse_text, + (int)strlen(fault->parse_text), XML_TRUE); + if (fault->error == XML_ERROR_NONE) { + if (status == XML_STATUS_ERROR) + xml_failure(ext_parser); + } else { + if (status != XML_STATUS_ERROR) + fail(fault->fail_text); + error = XML_GetErrorCode(ext_parser); + if (error != fault->error + && (fault->error != XML_ERROR_XML_DECL + || error != XML_ERROR_TEXT_DECL)) + xml_failure(ext_parser); + } + } + + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +START_TEST(test_external_entity_values) { + const char *text = "\n" + "\n"; + ExtFaults data_004_2[] = { + {"", NULL, NULL, XML_ERROR_NONE}, + {"", "Invalid token not faulted", NULL, + XML_ERROR_INVALID_TOKEN}, + {"'wombat", "Unterminated string not faulted", NULL, + XML_ERROR_UNCLOSED_TOKEN}, + {"\xe2\x82", "Partial UTF-8 character not faulted", NULL, + XML_ERROR_PARTIAL_CHAR}, + {"\n", NULL, NULL, XML_ERROR_NONE}, + {"", "Malformed XML declaration not faulted", NULL, + XML_ERROR_XML_DECL}, + {/* UTF-8 BOM */ + "\xEF\xBB\xBF", NULL, NULL, + XML_ERROR_NONE}, + {"\n$", + "Invalid token after text declaration not faulted", NULL, + XML_ERROR_INVALID_TOKEN}, + {"\n'wombat", + "Unterminated string after text decl not faulted", NULL, + XML_ERROR_UNCLOSED_TOKEN}, + {"\n\xe2\x82", + "Partial UTF-8 character after text decl not faulted", NULL, + XML_ERROR_PARTIAL_CHAR}, + {"%e1;", "Recursive parameter entity not faulted", NULL, + XML_ERROR_RECURSIVE_ENTITY_REF}, + {NULL, NULL, NULL, XML_ERROR_NONE}}; + int i; + + for (i = 0; data_004_2[i].parse_text != NULL; i++) { + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_valuer); + XML_SetUserData(g_parser, &data_004_2[i]); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + XML_ParserReset(g_parser, NULL); + } +} +END_TEST + +/* Test the recursive parse interacts with a not standalone handler */ +static int XMLCALL +external_entity_not_standalone(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text1 = "\n" + "\n" + "%e1;\n"; + const char *text2 = ""; + XML_Parser ext_parser; + + UNUSED_P(base); + UNUSED_P(publicId); + if (systemId == NULL) + return XML_STATUS_OK; + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + if (! xcstrcmp(systemId, XCS("foo"))) { + XML_SetNotStandaloneHandler(ext_parser, reject_not_standalone_handler); + if (_XML_Parse_SINGLE_BYTES(ext_parser, text1, (int)strlen(text1), XML_TRUE) + != XML_STATUS_ERROR) + fail("Expected not standalone rejection"); + if (XML_GetErrorCode(ext_parser) != XML_ERROR_NOT_STANDALONE) + xml_failure(ext_parser); + XML_SetNotStandaloneHandler(ext_parser, NULL); + XML_ParserFree(ext_parser); + return XML_STATUS_ERROR; + } else if (! xcstrcmp(systemId, XCS("bar"))) { + if (_XML_Parse_SINGLE_BYTES(ext_parser, text2, (int)strlen(text2), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(ext_parser); + } + + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +START_TEST(test_ext_entity_not_standalone) { + const char *text = "\n" + ""; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_not_standalone); + expect_failure(text, XML_ERROR_EXTERNAL_ENTITY_HANDLING, + "Standalone rejection not caught"); +} +END_TEST + +static int XMLCALL +external_entity_value_aborter(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text1 = "\n" + "\n" + "\n" + "%e1;\n"; + const char *text2 = ""; + XML_Parser ext_parser; + + UNUSED_P(base); + UNUSED_P(publicId); + if (systemId == NULL) + return XML_STATUS_OK; + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + if (! xcstrcmp(systemId, XCS("004-1.ent"))) { + if (_XML_Parse_SINGLE_BYTES(ext_parser, text1, (int)strlen(text1), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(ext_parser); + } + if (! xcstrcmp(systemId, XCS("004-2.ent"))) { + XML_SetXmlDeclHandler(ext_parser, entity_suspending_xdecl_handler); + XML_SetUserData(ext_parser, ext_parser); + if (_XML_Parse_SINGLE_BYTES(ext_parser, text2, (int)strlen(text2), XML_TRUE) + != XML_STATUS_ERROR) + fail("Aborted parse not faulted"); + if (XML_GetErrorCode(ext_parser) != XML_ERROR_ABORTED) + xml_failure(ext_parser); + } + + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +START_TEST(test_ext_entity_value_abort) { + const char *text = "\n" + "\n"; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_value_aborter); + resumable = XML_FALSE; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +START_TEST(test_bad_public_doctype) { + const char *text = "\n" + "\n" + ""; + + /* Setting a handler provokes a particular code path */ + XML_SetDoctypeDeclHandler(g_parser, dummy_start_doctype_handler, + dummy_end_doctype_handler); + expect_failure(text, XML_ERROR_PUBLICID, "Bad Public ID not failed"); +} +END_TEST + +/* Test based on ibm/valid/P32/ibm32v04.xml */ +START_TEST(test_attribute_enum_value) { + const char *text = "\n" + "\n" + "This is a \n \n\nyellow tiger"; + ExtTest dtd_data + = {"\n" + "\n" + "", + NULL, NULL}; + const XML_Char *expected = XCS("This is a \n \n\nyellow tiger"); + + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader); + XML_SetUserData(g_parser, &dtd_data); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + /* An attribute list handler provokes a different code path */ + XML_SetAttlistDeclHandler(g_parser, dummy_attlist_decl_handler); + run_ext_character_check(text, &dtd_data, expected); +} +END_TEST + +/* Slightly bizarrely, the library seems to silently ignore entity + * definitions for predefined entities, even when they are wrong. The + * language of the XML 1.0 spec is somewhat unhelpful as to what ought + * to happen, so this is currently treated as acceptable. + */ +START_TEST(test_predefined_entity_redefinition) { + const char *text = "\n" + "]>\n" + "'"; + run_character_check(text, XCS("'")); +} +END_TEST + +/* Test that the parser stops processing the DTD after an unresolved + * parameter entity is encountered. + */ +START_TEST(test_dtd_stop_processing) { + const char *text = "\n" + "]>"; + + XML_SetEntityDeclHandler(g_parser, dummy_entity_decl_handler); + dummy_handler_flags = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + if (dummy_handler_flags != 0) + fail("DTD processing still going after undefined PE"); +} +END_TEST + +/* Test public notations with no system ID */ +START_TEST(test_public_notation_no_sysid) { + const char *text = "\n" + "\n" + "]>\n"; + + dummy_handler_flags = 0; + XML_SetNotationDeclHandler(g_parser, dummy_notation_decl_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + if (dummy_handler_flags != DUMMY_NOTATION_DECL_HANDLER_FLAG) + fail("Notation declaration handler not called"); +} +END_TEST + +static void XMLCALL +record_element_start_handler(void *userData, const XML_Char *name, + const XML_Char **atts) { + UNUSED_P(atts); + CharData_AppendXMLChars((CharData *)userData, name, (int)xcstrlen(name)); +} + +START_TEST(test_nested_groups) { + const char *text + = "\n" + "" + "]>\n" + ""; + CharData storage; + + CharData_Init(&storage); + XML_SetElementDeclHandler(g_parser, dummy_element_decl_handler); + XML_SetStartElementHandler(g_parser, record_element_start_handler); + XML_SetUserData(g_parser, &storage); + dummy_handler_flags = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, XCS("doce")); + if (dummy_handler_flags != DUMMY_ELEMENT_DECL_HANDLER_FLAG) + fail("Element handler not fired"); +} +END_TEST + +START_TEST(test_group_choice) { + const char *text = "\n" + "\n" + "\n" + "\n" + "]>\n" + "\n" + "\n" + "This is a foo\n" + "\n" + "\n"; + + XML_SetElementDeclHandler(g_parser, dummy_element_decl_handler); + dummy_handler_flags = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + if (dummy_handler_flags != DUMMY_ELEMENT_DECL_HANDLER_FLAG) + fail("Element handler flag not raised"); +} +END_TEST + +static int XMLCALL +external_entity_public(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text1 = (const char *)XML_GetUserData(parser); + const char *text2 = ""; + const char *text = NULL; + XML_Parser ext_parser; + int parse_res; + + UNUSED_P(base); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + return XML_STATUS_ERROR; + if (systemId != NULL && ! xcstrcmp(systemId, XCS("http://example.org/"))) { + text = text1; + } else if (publicId != NULL && ! xcstrcmp(publicId, XCS("foo"))) { + text = text2; + } else + fail("Unexpected parameters to external entity parser"); + assert(text != NULL); + parse_res + = _XML_Parse_SINGLE_BYTES(ext_parser, text, (int)strlen(text), XML_TRUE); + XML_ParserFree(ext_parser); + return parse_res; +} + +START_TEST(test_standalone_parameter_entity) { + const char *text = "\n" + "'>\n" + "%entity;\n" + "]>\n" + ""; + char dtd_data[] = "\n"; + + XML_SetUserData(g_parser, dtd_data); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_public); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test skipping of parameter entity in an external DTD */ +/* Derived from ibm/invalid/P69/ibm69i01.xml */ +START_TEST(test_skipped_parameter_entity) { + const char *text = "\n" + "\n" + "]>\n" + ""; + ExtTest dtd_data = {"%pe2;", NULL, NULL}; + + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader); + XML_SetUserData(g_parser, &dtd_data); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetSkippedEntityHandler(g_parser, dummy_skip_handler); + dummy_handler_flags = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + if (dummy_handler_flags != DUMMY_SKIP_HANDLER_FLAG) + fail("Skip handler not executed"); +} +END_TEST + +/* Test recursive parameter entity definition rejected in external DTD */ +START_TEST(test_recursive_external_parameter_entity) { + const char *text = "\n" + "\n" + "]>\n" + ""; + ExtFaults dtd_data = {"\n%pe2;", + "Recursive external parameter entity not faulted", NULL, + XML_ERROR_RECURSIVE_ENTITY_REF}; + + XML_SetExternalEntityRefHandler(g_parser, external_entity_faulter); + XML_SetUserData(g_parser, &dtd_data); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + expect_failure(text, XML_ERROR_EXTERNAL_ENTITY_HANDLING, + "Recursive external parameter not spotted"); +} +END_TEST + +/* Test undefined parameter entity in external entity handler */ +static int XMLCALL +external_entity_devaluer(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text = "\n" + "\n" + "%e1;\n"; + XML_Parser ext_parser; + intptr_t clear_handler = (intptr_t)XML_GetUserData(parser); + + UNUSED_P(base); + UNUSED_P(publicId); + if (systemId == NULL || ! xcstrcmp(systemId, XCS("bar"))) + return XML_STATUS_OK; + if (xcstrcmp(systemId, XCS("foo"))) + fail("Unexpected system ID"); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could note create external entity parser"); + if (clear_handler) + XML_SetExternalEntityRefHandler(ext_parser, NULL); + if (_XML_Parse_SINGLE_BYTES(ext_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(ext_parser); + + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +START_TEST(test_undefined_ext_entity_in_external_dtd) { + const char *text = "\n" + "\n"; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_devaluer); + XML_SetUserData(g_parser, (void *)(intptr_t)XML_FALSE); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + + /* Now repeat without the external entity ref handler invoking + * another copy of itself. + */ + XML_ParserReset(g_parser, NULL); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_devaluer); + XML_SetUserData(g_parser, (void *)(intptr_t)XML_TRUE); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +static void XMLCALL +aborting_xdecl_handler(void *userData, const XML_Char *version, + const XML_Char *encoding, int standalone) { + UNUSED_P(userData); + UNUSED_P(version); + UNUSED_P(encoding); + UNUSED_P(standalone); + XML_StopParser(g_parser, resumable); + XML_SetXmlDeclHandler(g_parser, NULL); +} + +/* Test suspending the parse on receiving an XML declaration works */ +START_TEST(test_suspend_xdecl) { + const char *text = long_character_data_text; + + XML_SetXmlDeclHandler(g_parser, aborting_xdecl_handler); + resumable = XML_TRUE; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_SUSPENDED) + xml_failure(g_parser); + if (XML_GetErrorCode(g_parser) != XML_ERROR_NONE) + xml_failure(g_parser); + /* Attempt to start a new parse while suspended */ + if (XML_Parse(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + fail("Attempt to parse while suspended not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_SUSPENDED) + fail("Suspended parse not faulted with correct error"); +} +END_TEST + +/* Test aborting the parse in an epilog works */ +static void XMLCALL +selective_aborting_default_handler(void *userData, const XML_Char *s, int len) { + const XML_Char *match = (const XML_Char *)userData; + + if (match == NULL + || (xcstrlen(match) == (unsigned)len && ! xcstrncmp(match, s, len))) { + XML_StopParser(g_parser, resumable); + XML_SetDefaultHandler(g_parser, NULL); + } +} + +START_TEST(test_abort_epilog) { + const char *text = "\n\r\n"; + XML_Char match[] = XCS("\r"); + + XML_SetDefaultHandler(g_parser, selective_aborting_default_handler); + XML_SetUserData(g_parser, match); + resumable = XML_FALSE; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + fail("Abort not triggered"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_ABORTED) + xml_failure(g_parser); +} +END_TEST + +/* Test a different code path for abort in the epilog */ +START_TEST(test_abort_epilog_2) { + const char *text = "\n"; + XML_Char match[] = XCS("\n"); + + XML_SetDefaultHandler(g_parser, selective_aborting_default_handler); + XML_SetUserData(g_parser, match); + resumable = XML_FALSE; + expect_failure(text, XML_ERROR_ABORTED, "Abort not triggered"); +} +END_TEST + +/* Test suspension from the epilog */ +START_TEST(test_suspend_epilog) { + const char *text = "\n"; + XML_Char match[] = XCS("\n"); + + XML_SetDefaultHandler(g_parser, selective_aborting_default_handler); + XML_SetUserData(g_parser, match); + resumable = XML_TRUE; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_SUSPENDED) + xml_failure(g_parser); +} +END_TEST + +static void XMLCALL +suspending_end_handler(void *userData, const XML_Char *s) { + UNUSED_P(s); + XML_StopParser((XML_Parser)userData, 1); +} + +START_TEST(test_suspend_in_sole_empty_tag) { + const char *text = ""; + enum XML_Status rc; + + XML_SetEndElementHandler(g_parser, suspending_end_handler); + XML_SetUserData(g_parser, g_parser); + rc = _XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE); + if (rc == XML_STATUS_ERROR) + xml_failure(g_parser); + else if (rc != XML_STATUS_SUSPENDED) + fail("Suspend not triggered"); + rc = XML_ResumeParser(g_parser); + if (rc == XML_STATUS_ERROR) + xml_failure(g_parser); + else if (rc != XML_STATUS_OK) + fail("Resume failed"); +} +END_TEST + +START_TEST(test_unfinished_epilog) { + const char *text = "<"; + + expect_failure(text, XML_ERROR_UNCLOSED_TOKEN, + "Incomplete epilog entry not faulted"); +} +END_TEST + +START_TEST(test_partial_char_in_epilog) { + const char *text = "\xe2\x82"; + + /* First check that no fault is raised if the parse is not finished */ + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_FALSE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + /* Now check that it is faulted once we finish */ + if (XML_ParseBuffer(g_parser, 0, XML_TRUE) != XML_STATUS_ERROR) + fail("Partial character in epilog not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_PARTIAL_CHAR) + xml_failure(g_parser); +} +END_TEST + +START_TEST(test_hash_collision) { + /* For full coverage of the lookup routine, we need to ensure a + * hash collision even though we can only tell that we have one + * through breakpoint debugging or coverage statistics. The + * following will cause a hash collision on machines with a 64-bit + * long type; others will have to experiment. The full coverage + * tests invoked from qa.sh usually provide a hash collision, but + * not always. This is an attempt to provide insurance. + */ +#define COLLIDING_HASH_SALT (unsigned long)_SIP_ULL(0xffffffffU, 0xff99fc90U) + const char *text + = "\n" + "\n" + "This is a foo\n" + "\n" + "\n" + "\n" + "This triggers the table growth and collides with b2\n" + "\n"; + + XML_SetHashSalt(g_parser, COLLIDING_HASH_SALT); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST +#undef COLLIDING_HASH_SALT + +/* Test resuming a parse suspended in entity substitution */ +static void XMLCALL +start_element_suspender(void *userData, const XML_Char *name, + const XML_Char **atts) { + UNUSED_P(userData); + UNUSED_P(atts); + if (! xcstrcmp(name, XCS("suspend"))) + XML_StopParser(g_parser, XML_TRUE); + if (! xcstrcmp(name, XCS("abort"))) + XML_StopParser(g_parser, XML_FALSE); +} + +START_TEST(test_suspend_resume_internal_entity) { + const char *text + = "HiHo'>\n" + "]>\n" + "&foo;\n"; + const XML_Char *expected1 = XCS("Hi"); + const XML_Char *expected2 = XCS("HiHo"); + CharData storage; + + CharData_Init(&storage); + XML_SetStartElementHandler(g_parser, start_element_suspender); + XML_SetCharacterDataHandler(g_parser, accumulate_characters); + XML_SetUserData(g_parser, &storage); + if (XML_Parse(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_SUSPENDED) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, XCS("")); + if (XML_ResumeParser(g_parser) != XML_STATUS_SUSPENDED) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected1); + if (XML_ResumeParser(g_parser) != XML_STATUS_OK) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected2); +} +END_TEST + +/* Test syntax error is caught at parse resumption */ +START_TEST(test_resume_entity_with_syntax_error) { + const char *text = "Hi'>\n" + "]>\n" + "&foo;\n"; + + XML_SetStartElementHandler(g_parser, start_element_suspender); + if (XML_Parse(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_SUSPENDED) + xml_failure(g_parser); + if (XML_ResumeParser(g_parser) != XML_STATUS_ERROR) + fail("Syntax error in entity not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_TAG_MISMATCH) + xml_failure(g_parser); +} +END_TEST + +/* Test suspending and resuming in a parameter entity substitution */ +static void XMLCALL +element_decl_suspender(void *userData, const XML_Char *name, + XML_Content *model) { + UNUSED_P(userData); + UNUSED_P(name); + XML_StopParser(g_parser, XML_TRUE); + XML_FreeContentModel(g_parser, model); +} + +START_TEST(test_suspend_resume_parameter_entity) { + const char *text = "'>\n" + "%foo;\n" + "]>\n" + "Hello, world"; + const XML_Char *expected = XCS("Hello, world"); + CharData storage; + + CharData_Init(&storage); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetElementDeclHandler(g_parser, element_decl_suspender); + XML_SetCharacterDataHandler(g_parser, accumulate_characters); + XML_SetUserData(g_parser, &storage); + if (XML_Parse(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_SUSPENDED) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, XCS("")); + if (XML_ResumeParser(g_parser) != XML_STATUS_OK) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Test attempting to use parser after an error is faulted */ +START_TEST(test_restart_on_error) { + const char *text = "<$doc>"; + + if (XML_Parse(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + fail("Invalid tag name not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_INVALID_TOKEN) + xml_failure(g_parser); + if (XML_Parse(g_parser, NULL, 0, XML_TRUE) != XML_STATUS_ERROR) + fail("Restarting invalid parse not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_INVALID_TOKEN) + xml_failure(g_parser); +} +END_TEST + +/* Test that angle brackets in an attribute default value are faulted */ +START_TEST(test_reject_lt_in_attribute_value) { + const char *text = "'>]>\n" + ""; + + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "Bad attribute default not faulted"); +} +END_TEST + +START_TEST(test_reject_unfinished_param_in_att_value) { + const char *text = "]>\n" + ""; + + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "Bad attribute default not faulted"); +} +END_TEST + +START_TEST(test_trailing_cr_in_att_value) { + const char *text = ""; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Try parsing a general entity within a parameter entity in a + * standalone internal DTD. Covers a corner case in the parser. + */ +START_TEST(test_standalone_internal_entity) { + const char *text = "\n" + "\n" + " '>\n" + " \n" + " %pe;\n" + "]>\n" + ""; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test that a reference to an unknown external entity is skipped */ +START_TEST(test_skipped_external_entity) { + const char *text = "\n" + "\n"; + ExtTest test_data = {"\n" + "\n", + NULL, NULL}; + + XML_SetUserData(g_parser, &test_data); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test a different form of unknown external entity */ +typedef struct ext_hdlr_data { + const char *parse_text; + XML_ExternalEntityRefHandler handler; +} ExtHdlrData; + +static int XMLCALL +external_entity_oneshot_loader(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + ExtHdlrData *test_data = (ExtHdlrData *)XML_GetUserData(parser); + XML_Parser ext_parser; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser."); + /* Use the requested entity parser for further externals */ + XML_SetExternalEntityRefHandler(ext_parser, test_data->handler); + if (_XML_Parse_SINGLE_BYTES(ext_parser, test_data->parse_text, + (int)strlen(test_data->parse_text), XML_TRUE) + == XML_STATUS_ERROR) { + xml_failure(ext_parser); + } + + XML_ParserFree(ext_parser); + return XML_STATUS_OK; +} + +START_TEST(test_skipped_null_loaded_ext_entity) { + const char *text = "\n" + ""; + ExtHdlrData test_data + = {"\n" + "\n" + "%pe2;\n", + external_entity_null_loader}; + + XML_SetUserData(g_parser, &test_data); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_oneshot_loader); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +START_TEST(test_skipped_unloaded_ext_entity) { + const char *text = "\n" + ""; + ExtHdlrData test_data + = {"\n" + "\n" + "%pe2;\n", + NULL}; + + XML_SetUserData(g_parser, &test_data); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_oneshot_loader); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test that a parameter entity value ending with a carriage return + * has it translated internally into a newline. + */ +START_TEST(test_param_entity_with_trailing_cr) { +#define PARAM_ENTITY_NAME "pe" +#define PARAM_ENTITY_CORE_VALUE "" + const char *text = "\n" + ""; + ExtTest test_data + = {"\n" + "%" PARAM_ENTITY_NAME ";\n", + NULL, NULL}; + + XML_SetUserData(g_parser, &test_data); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader); + XML_SetEntityDeclHandler(g_parser, param_entity_match_handler); + entity_name_to_match = XCS(PARAM_ENTITY_NAME); + entity_value_to_match = XCS(PARAM_ENTITY_CORE_VALUE) XCS("\n"); + entity_match_flag = ENTITY_MATCH_NOT_FOUND; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + if (entity_match_flag == ENTITY_MATCH_FAIL) + fail("Parameter entity CR->NEWLINE conversion failed"); + else if (entity_match_flag == ENTITY_MATCH_NOT_FOUND) + fail("Parameter entity not parsed"); +} +#undef PARAM_ENTITY_NAME +#undef PARAM_ENTITY_CORE_VALUE +END_TEST + +START_TEST(test_invalid_character_entity) { + const char *text = "\n" + "]>\n" + "&entity;"; + + expect_failure(text, XML_ERROR_BAD_CHAR_REF, + "Out of range character reference not faulted"); +} +END_TEST + +START_TEST(test_invalid_character_entity_2) { + const char *text = "\n" + "]>\n" + "&entity;"; + + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "Out of range character reference not faulted"); +} +END_TEST + +START_TEST(test_invalid_character_entity_3) { + const char text[] = + /* \n */ + "\0<\0!\0E\0N\0T\0I\0T\0Y\0 \0e\0n\0t\0i\0t\0y\0 " + "\0'\0&\x0e\x04\x0e\x08\0;\0'\0>\0\n" + /* ]>\n */ + "\0]\0>\0\n" + /* &entity; */ + "\0<\0d\0o\0c\0>\0&\0e\0n\0t\0i\0t\0y\0;\0<\0/\0d\0o\0c\0>"; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + != XML_STATUS_ERROR) + fail("Invalid start of entity name not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_UNDEFINED_ENTITY) + xml_failure(g_parser); +} +END_TEST + +START_TEST(test_invalid_character_entity_4) { + const char *text = "\n" /* = � */ + "]>\n" + "&entity;"; + + expect_failure(text, XML_ERROR_BAD_CHAR_REF, + "Out of range character reference not faulted"); +} +END_TEST + +/* Test that processing instructions are picked up by a default handler */ +START_TEST(test_pi_handled_in_default) { + const char *text = "\n"; + const XML_Char *expected = XCS("\n"); + CharData storage; + + CharData_Init(&storage); + XML_SetDefaultHandler(g_parser, accumulate_characters); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Test that comments are picked up by a default handler */ +START_TEST(test_comment_handled_in_default) { + const char *text = "\n"; + const XML_Char *expected = XCS("\n"); + CharData storage; + + CharData_Init(&storage); + XML_SetDefaultHandler(g_parser, accumulate_characters); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Test PIs that look almost but not quite like XML declarations */ +static void XMLCALL +accumulate_pi_characters(void *userData, const XML_Char *target, + const XML_Char *data) { + CharData *storage = (CharData *)userData; + + CharData_AppendXMLChars(storage, target, -1); + CharData_AppendXMLChars(storage, XCS(": "), 2); + CharData_AppendXMLChars(storage, data, -1); + CharData_AppendXMLChars(storage, XCS("\n"), 1); +} + +START_TEST(test_pi_yml) { + const char *text = ""; + const XML_Char *expected = XCS("yml: something like data\n"); + CharData storage; + + CharData_Init(&storage); + XML_SetProcessingInstructionHandler(g_parser, accumulate_pi_characters); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_pi_xnl) { + const char *text = ""; + const XML_Char *expected = XCS("xnl: nothing like data\n"); + CharData storage; + + CharData_Init(&storage); + XML_SetProcessingInstructionHandler(g_parser, accumulate_pi_characters); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_pi_xmm) { + const char *text = ""; + const XML_Char *expected = XCS("xmm: everything like data\n"); + CharData storage; + + CharData_Init(&storage); + XML_SetProcessingInstructionHandler(g_parser, accumulate_pi_characters); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_utf16_pi) { + const char text[] = + /* + * where {KHO KHWAI} = U+0E04 + * and {CHO CHAN} = U+0E08 + */ + "<\0?\0\x04\x0e\x08\x0e?\0>\0" + /* */ + "<\0q\0/\0>\0"; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x0e04\x0e08: \n"); +#else + const XML_Char *expected = XCS("\xe0\xb8\x84\xe0\xb8\x88: \n"); +#endif + CharData storage; + + CharData_Init(&storage); + XML_SetProcessingInstructionHandler(g_parser, accumulate_pi_characters); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_utf16_be_pi) { + const char text[] = + /* + * where {KHO KHWAI} = U+0E04 + * and {CHO CHAN} = U+0E08 + */ + "\0<\0?\x0e\x04\x0e\x08\0?\0>" + /* */ + "\0<\0q\0/\0>"; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x0e04\x0e08: \n"); +#else + const XML_Char *expected = XCS("\xe0\xb8\x84\xe0\xb8\x88: \n"); +#endif + CharData storage; + + CharData_Init(&storage); + XML_SetProcessingInstructionHandler(g_parser, accumulate_pi_characters); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Test that comments can be picked up and translated */ +static void XMLCALL +accumulate_comment(void *userData, const XML_Char *data) { + CharData *storage = (CharData *)userData; + + CharData_AppendXMLChars(storage, data, -1); +} + +START_TEST(test_utf16_be_comment) { + const char text[] = + /* */ + "\0<\0!\0-\0-\0 \0C\0o\0m\0m\0e\0n\0t\0 \0A\0 \0-\0-\0>\0\n" + /* */ + "\0<\0d\0o\0c\0/\0>"; + const XML_Char *expected = XCS(" Comment A "); + CharData storage; + + CharData_Init(&storage); + XML_SetCommentHandler(g_parser, accumulate_comment); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_utf16_le_comment) { + const char text[] = + /* */ + "<\0!\0-\0-\0 \0C\0o\0m\0m\0e\0n\0t\0 \0B\0 \0-\0-\0>\0\n\0" + /* */ + "<\0d\0o\0c\0/\0>\0"; + const XML_Char *expected = XCS(" Comment B "); + CharData storage; + + CharData_Init(&storage); + XML_SetCommentHandler(g_parser, accumulate_comment); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Test that the unknown encoding handler with map entries that expect + * conversion but no conversion function is faulted + */ +static int XMLCALL +failing_converter(void *data, const char *s) { + UNUSED_P(data); + UNUSED_P(s); + /* Always claim to have failed */ + return -1; +} + +static int XMLCALL +prefix_converter(void *data, const char *s) { + UNUSED_P(data); + /* If the first byte is 0xff, raise an error */ + if (s[0] == (char)-1) + return -1; + /* Just add the low bits of the first byte to the second */ + return (s[1] + (s[0] & 0x7f)) & 0x01ff; +} + +static int XMLCALL +MiscEncodingHandler(void *data, const XML_Char *encoding, XML_Encoding *info) { + int i; + int high_map = -2; /* Assume a 2-byte sequence */ + + if (! xcstrcmp(encoding, XCS("invalid-9")) + || ! xcstrcmp(encoding, XCS("ascii-like")) + || ! xcstrcmp(encoding, XCS("invalid-len")) + || ! xcstrcmp(encoding, XCS("invalid-a")) + || ! xcstrcmp(encoding, XCS("invalid-surrogate")) + || ! xcstrcmp(encoding, XCS("invalid-high"))) + high_map = -1; + + for (i = 0; i < 128; ++i) + info->map[i] = i; + for (; i < 256; ++i) + info->map[i] = high_map; + + /* If required, put an invalid value in the ASCII entries */ + if (! xcstrcmp(encoding, XCS("invalid-9"))) + info->map[9] = 5; + /* If required, have a top-bit set character starts a 5-byte sequence */ + if (! xcstrcmp(encoding, XCS("invalid-len"))) + info->map[0x81] = -5; + /* If required, make a top-bit set character a valid ASCII character */ + if (! xcstrcmp(encoding, XCS("invalid-a"))) + info->map[0x82] = 'a'; + /* If required, give a top-bit set character a forbidden value, + * what would otherwise be the first of a surrogate pair. + */ + if (! xcstrcmp(encoding, XCS("invalid-surrogate"))) + info->map[0x83] = 0xd801; + /* If required, give a top-bit set character too high a value */ + if (! xcstrcmp(encoding, XCS("invalid-high"))) + info->map[0x84] = 0x010101; + + info->data = data; + info->release = NULL; + if (! xcstrcmp(encoding, XCS("failing-conv"))) + info->convert = failing_converter; + else if (! xcstrcmp(encoding, XCS("prefix-conv"))) + info->convert = prefix_converter; + else + info->convert = NULL; + return XML_STATUS_OK; +} + +START_TEST(test_missing_encoding_conversion_fn) { + const char *text = "\n" + "\x81"; + + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + /* MiscEncodingHandler sets up an encoding with every top-bit-set + * character introducing a two-byte sequence. For this, it + * requires a convert function. The above function call doesn't + * pass one through, so when BadEncodingHandler actually gets + * called it should supply an invalid encoding. + */ + expect_failure(text, XML_ERROR_UNKNOWN_ENCODING, + "Encoding with missing convert() not faulted"); +} +END_TEST + +START_TEST(test_failing_encoding_conversion_fn) { + const char *text = "\n" + "\x81"; + + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + /* BadEncodingHandler sets up an encoding with every top-bit-set + * character introducing a two-byte sequence. For this, it + * requires a convert function. The above function call passes + * one that insists all possible sequences are invalid anyway. + */ + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "Encoding with failing convert() not faulted"); +} +END_TEST + +/* Test unknown encoding conversions */ +START_TEST(test_unknown_encoding_success) { + const char *text = "\n" + /* Equivalent to Hello, world */ + "<\x81\x64\x80oc>Hello, world"; + + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + run_character_check(text, XCS("Hello, world")); +} +END_TEST + +/* Test bad name character in unknown encoding */ +START_TEST(test_unknown_encoding_bad_name) { + const char *text = "\n" + "<\xff\x64oc>Hello, world"; + + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "Bad name start in unknown encoding not faulted"); +} +END_TEST + +/* Test bad mid-name character in unknown encoding */ +START_TEST(test_unknown_encoding_bad_name_2) { + const char *text = "\n" + "Hello, world"; + + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "Bad name in unknown encoding not faulted"); +} +END_TEST + +/* Test element name that is long enough to fill the conversion buffer + * in an unknown encoding, finishing with an encoded character. + */ +START_TEST(test_unknown_encoding_long_name_1) { + const char *text = "\n" + "" + "Hi" + ""; + const XML_Char *expected = XCS("abcdefghabcdefghabcdefghijklmnop"); + CharData storage; + + CharData_Init(&storage); + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + XML_SetStartElementHandler(g_parser, record_element_start_handler); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Test element name that is long enough to fill the conversion buffer + * in an unknown encoding, finishing with an simple character. + */ +START_TEST(test_unknown_encoding_long_name_2) { + const char *text = "\n" + "" + "Hi" + ""; + const XML_Char *expected = XCS("abcdefghabcdefghabcdefghijklmnop"); + CharData storage; + + CharData_Init(&storage); + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + XML_SetStartElementHandler(g_parser, record_element_start_handler); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_invalid_unknown_encoding) { + const char *text = "\n" + "Hello world"; + + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + expect_failure(text, XML_ERROR_UNKNOWN_ENCODING, + "Invalid unknown encoding not faulted"); +} +END_TEST + +START_TEST(test_unknown_ascii_encoding_ok) { + const char *text = "\n" + "Hello, world"; + + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + run_character_check(text, XCS("Hello, world")); +} +END_TEST + +START_TEST(test_unknown_ascii_encoding_fail) { + const char *text = "\n" + "Hello, \x80 world"; + + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "Invalid character not faulted"); +} +END_TEST + +START_TEST(test_unknown_encoding_invalid_length) { + const char *text = "\n" + "Hello, world"; + + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + expect_failure(text, XML_ERROR_UNKNOWN_ENCODING, + "Invalid unknown encoding not faulted"); +} +END_TEST + +START_TEST(test_unknown_encoding_invalid_topbit) { + const char *text = "\n" + "Hello, world"; + + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + expect_failure(text, XML_ERROR_UNKNOWN_ENCODING, + "Invalid unknown encoding not faulted"); +} +END_TEST + +START_TEST(test_unknown_encoding_invalid_surrogate) { + const char *text = "\n" + "Hello, \x82 world"; + + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "Invalid unknown encoding not faulted"); +} +END_TEST + +START_TEST(test_unknown_encoding_invalid_high) { + const char *text = "\n" + "Hello, world"; + + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + expect_failure(text, XML_ERROR_UNKNOWN_ENCODING, + "Invalid unknown encoding not faulted"); +} +END_TEST + +START_TEST(test_unknown_encoding_invalid_attr_value) { + const char *text = "\n" + ""; + + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "Invalid attribute valid not faulted"); +} +END_TEST + +/* Test an external entity parser set to use latin-1 detects UTF-16 + * BOMs correctly. + */ +enum ee_parse_flags { EE_PARSE_NONE = 0x00, EE_PARSE_FULL_BUFFER = 0x01 }; + +typedef struct ExtTest2 { + const char *parse_text; + int parse_len; + const XML_Char *encoding; + CharData *storage; + enum ee_parse_flags flags; +} ExtTest2; + +static int XMLCALL +external_entity_loader2(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + ExtTest2 *test_data = (ExtTest2 *)XML_GetUserData(parser); + XML_Parser extparser; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + extparser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (extparser == NULL) + fail("Coulr not create external entity parser"); + if (test_data->encoding != NULL) { + if (! XML_SetEncoding(extparser, test_data->encoding)) + fail("XML_SetEncoding() ignored for external entity"); + } + if (test_data->flags & EE_PARSE_FULL_BUFFER) { + if (XML_Parse(extparser, test_data->parse_text, test_data->parse_len, + XML_TRUE) + == XML_STATUS_ERROR) { + xml_failure(extparser); + } + } else if (_XML_Parse_SINGLE_BYTES(extparser, test_data->parse_text, + test_data->parse_len, XML_TRUE) + == XML_STATUS_ERROR) { + xml_failure(extparser); + } + + XML_ParserFree(extparser); + return XML_STATUS_OK; +} + +/* Test that UTF-16 BOM does not select UTF-16 given explicit encoding */ +static void XMLCALL +ext2_accumulate_characters(void *userData, const XML_Char *s, int len) { + ExtTest2 *test_data = (ExtTest2 *)userData; + accumulate_characters(test_data->storage, s, len); +} + +START_TEST(test_ext_entity_latin1_utf16le_bom) { + const char *text = "\n" + "]>\n" + "&en;"; + ExtTest2 test_data + = {/* If UTF-16, 0xfeff is the BOM and 0x204c is black left bullet */ + /* If Latin-1, 0xff = Y-diaeresis, 0xfe = lowercase thorn, + * 0x4c = L and 0x20 is a space + */ + "\xff\xfe\x4c\x20", 4, XCS("iso-8859-1"), NULL, EE_PARSE_NONE}; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x00ff\x00feL "); +#else + /* In UTF-8, y-diaeresis is 0xc3 0xbf, lowercase thorn is 0xc3 0xbe */ + const XML_Char *expected = XCS("\xc3\xbf\xc3\xbeL "); +#endif + CharData storage; + + CharData_Init(&storage); + test_data.storage = &storage; + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader2); + XML_SetUserData(g_parser, &test_data); + XML_SetCharacterDataHandler(g_parser, ext2_accumulate_characters); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_ext_entity_latin1_utf16be_bom) { + const char *text = "\n" + "]>\n" + "&en;"; + ExtTest2 test_data + = {/* If UTF-16, 0xfeff is the BOM and 0x204c is black left bullet */ + /* If Latin-1, 0xff = Y-diaeresis, 0xfe = lowercase thorn, + * 0x4c = L and 0x20 is a space + */ + "\xfe\xff\x20\x4c", 4, XCS("iso-8859-1"), NULL, EE_PARSE_NONE}; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x00fe\x00ff L"); +#else + /* In UTF-8, y-diaeresis is 0xc3 0xbf, lowercase thorn is 0xc3 0xbe */ + const XML_Char *expected = XCS("\xc3\xbe\xc3\xbf L"); +#endif + CharData storage; + + CharData_Init(&storage); + test_data.storage = &storage; + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader2); + XML_SetUserData(g_parser, &test_data); + XML_SetCharacterDataHandler(g_parser, ext2_accumulate_characters); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Parsing the full buffer rather than a byte at a time makes a + * difference to the encoding scanning code, so repeat the above tests + * without breaking them down by byte. + */ +START_TEST(test_ext_entity_latin1_utf16le_bom2) { + const char *text = "\n" + "]>\n" + "&en;"; + ExtTest2 test_data + = {/* If UTF-16, 0xfeff is the BOM and 0x204c is black left bullet */ + /* If Latin-1, 0xff = Y-diaeresis, 0xfe = lowercase thorn, + * 0x4c = L and 0x20 is a space + */ + "\xff\xfe\x4c\x20", 4, XCS("iso-8859-1"), NULL, EE_PARSE_FULL_BUFFER}; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x00ff\x00feL "); +#else + /* In UTF-8, y-diaeresis is 0xc3 0xbf, lowercase thorn is 0xc3 0xbe */ + const XML_Char *expected = XCS("\xc3\xbf\xc3\xbeL "); +#endif + CharData storage; + + CharData_Init(&storage); + test_data.storage = &storage; + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader2); + XML_SetUserData(g_parser, &test_data); + XML_SetCharacterDataHandler(g_parser, ext2_accumulate_characters); + if (XML_Parse(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_ext_entity_latin1_utf16be_bom2) { + const char *text = "\n" + "]>\n" + "&en;"; + ExtTest2 test_data + = {/* If UTF-16, 0xfeff is the BOM and 0x204c is black left bullet */ + /* If Latin-1, 0xff = Y-diaeresis, 0xfe = lowercase thorn, + * 0x4c = L and 0x20 is a space + */ + "\xfe\xff\x20\x4c", 4, XCS("iso-8859-1"), NULL, EE_PARSE_FULL_BUFFER}; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x00fe\x00ff L"); +#else + /* In UTF-8, y-diaeresis is 0xc3 0xbf, lowercase thorn is 0xc3 0xbe */ + const XML_Char *expected = "\xc3\xbe\xc3\xbf L"; +#endif + CharData storage; + + CharData_Init(&storage); + test_data.storage = &storage; + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader2); + XML_SetUserData(g_parser, &test_data); + XML_SetCharacterDataHandler(g_parser, ext2_accumulate_characters); + if (XML_Parse(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Test little-endian UTF-16 given an explicit big-endian encoding */ +START_TEST(test_ext_entity_utf16_be) { + const char *text = "\n" + "]>\n" + "&en;"; + ExtTest2 test_data + = {"<\0e\0/\0>\0", 8, XCS("utf-16be"), NULL, EE_PARSE_NONE}; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x3c00\x6500\x2f00\x3e00"); +#else + const XML_Char *expected = XCS("\xe3\xb0\x80" /* U+3C00 */ + "\xe6\x94\x80" /* U+6500 */ + "\xe2\xbc\x80" /* U+2F00 */ + "\xe3\xb8\x80"); /* U+3E00 */ +#endif + CharData storage; + + CharData_Init(&storage); + test_data.storage = &storage; + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader2); + XML_SetUserData(g_parser, &test_data); + XML_SetCharacterDataHandler(g_parser, ext2_accumulate_characters); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Test big-endian UTF-16 given an explicit little-endian encoding */ +START_TEST(test_ext_entity_utf16_le) { + const char *text = "\n" + "]>\n" + "&en;"; + ExtTest2 test_data + = {"\0<\0e\0/\0>", 8, XCS("utf-16le"), NULL, EE_PARSE_NONE}; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x3c00\x6500\x2f00\x3e00"); +#else + const XML_Char *expected = XCS("\xe3\xb0\x80" /* U+3C00 */ + "\xe6\x94\x80" /* U+6500 */ + "\xe2\xbc\x80" /* U+2F00 */ + "\xe3\xb8\x80"); /* U+3E00 */ +#endif + CharData storage; + + CharData_Init(&storage); + test_data.storage = &storage; + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader2); + XML_SetUserData(g_parser, &test_data); + XML_SetCharacterDataHandler(g_parser, ext2_accumulate_characters); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Test little-endian UTF-16 given no explicit encoding. + * The existing default encoding (UTF-8) is assumed to hold without a + * BOM to contradict it, so the entity value will in fact provoke an + * error because 0x00 is not a valid XML character. We parse the + * whole buffer in one go rather than feeding it in byte by byte to + * exercise different code paths in the initial scanning routines. + */ +typedef struct ExtFaults2 { + const char *parse_text; + int parse_len; + const char *fail_text; + const XML_Char *encoding; + enum XML_Error error; +} ExtFaults2; + +static int XMLCALL +external_entity_faulter2(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + ExtFaults2 *test_data = (ExtFaults2 *)XML_GetUserData(parser); + XML_Parser extparser; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + extparser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (extparser == NULL) + fail("Could not create external entity parser"); + if (test_data->encoding != NULL) { + if (! XML_SetEncoding(extparser, test_data->encoding)) + fail("XML_SetEncoding() ignored for external entity"); + } + if (XML_Parse(extparser, test_data->parse_text, test_data->parse_len, + XML_TRUE) + != XML_STATUS_ERROR) + fail(test_data->fail_text); + if (XML_GetErrorCode(extparser) != test_data->error) + xml_failure(extparser); + + XML_ParserFree(extparser); + return XML_STATUS_ERROR; +} + +START_TEST(test_ext_entity_utf16_unknown) { + const char *text = "\n" + "]>\n" + "&en;"; + ExtFaults2 test_data + = {"a\0b\0c\0", 6, "Invalid character in entity not faulted", NULL, + XML_ERROR_INVALID_TOKEN}; + + XML_SetExternalEntityRefHandler(g_parser, external_entity_faulter2); + XML_SetUserData(g_parser, &test_data); + expect_failure(text, XML_ERROR_EXTERNAL_ENTITY_HANDLING, + "Invalid character should not have been accepted"); +} +END_TEST + +/* Test not-quite-UTF-8 BOM (0xEF 0xBB 0xBF) */ +START_TEST(test_ext_entity_utf8_non_bom) { + const char *text = "\n" + "]>\n" + "&en;"; + ExtTest2 test_data + = {"\xef\xbb\x80", /* Arabic letter DAD medial form, U+FEC0 */ + 3, NULL, NULL, EE_PARSE_NONE}; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\xfec0"); +#else + const XML_Char *expected = XCS("\xef\xbb\x80"); +#endif + CharData storage; + + CharData_Init(&storage); + test_data.storage = &storage; + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader2); + XML_SetUserData(g_parser, &test_data); + XML_SetCharacterDataHandler(g_parser, ext2_accumulate_characters); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Test that UTF-8 in a CDATA section is correctly passed through */ +START_TEST(test_utf8_in_cdata_section) { + const char *text = ""; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("one \x00e9 two"); +#else + const XML_Char *expected = XCS("one \xc3\xa9 two"); +#endif + + run_character_check(text, expected); +} +END_TEST + +/* Test that little-endian UTF-16 in a CDATA section is handled */ +START_TEST(test_utf8_in_cdata_section_2) { + const char *text = ""; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x00e9]\x00e9two"); +#else + const XML_Char *expected = XCS("\xc3\xa9]\xc3\xa9two"); +#endif + + run_character_check(text, expected); +} +END_TEST + +/* Test trailing spaces in elements are accepted */ +static void XMLCALL +record_element_end_handler(void *userData, const XML_Char *name) { + CharData *storage = (CharData *)userData; + + CharData_AppendXMLChars(storage, XCS("/"), 1); + CharData_AppendXMLChars(storage, name, -1); +} + +START_TEST(test_trailing_spaces_in_elements) { + const char *text = "Hi"; + const XML_Char *expected = XCS("doc/doc"); + CharData storage; + + CharData_Init(&storage); + XML_SetElementHandler(g_parser, record_element_start_handler, + record_element_end_handler); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_utf16_attribute) { + const char text[] = + /* + * where {KHO KHWAI} = U+0E04 = 0xe0 0xb8 0x84 in UTF-8 + * and {CHO CHAN} = U+0E08 = 0xe0 0xb8 0x88 in UTF-8 + */ + "<\0d\0 \0\x04\x0e\x08\x0e=\0'\0a\0'\0/\0>\0"; + const XML_Char *expected = XCS("a"); + CharData storage; + + CharData_Init(&storage); + XML_SetStartElementHandler(g_parser, accumulate_attribute); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_utf16_second_attr) { + /* + * where {KHO KHWAI} = U+0E04 = 0xe0 0xb8 0x84 in UTF-8 + * and {CHO CHAN} = U+0E08 = 0xe0 0xb8 0x88 in UTF-8 + */ + const char text[] = "<\0d\0 \0a\0=\0'\0\x31\0'\0 \0" + "\x04\x0e\x08\x0e=\0'\0\x32\0'\0/\0>\0"; + const XML_Char *expected = XCS("1"); + CharData storage; + + CharData_Init(&storage); + XML_SetStartElementHandler(g_parser, accumulate_attribute); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_attr_after_solidus) { + const char *text = ""; + + expect_failure(text, XML_ERROR_INVALID_TOKEN, "Misplaced / not faulted"); +} +END_TEST + +static void XMLCALL +accumulate_entity_decl(void *userData, const XML_Char *entityName, + int is_parameter_entity, const XML_Char *value, + int value_length, const XML_Char *base, + const XML_Char *systemId, const XML_Char *publicId, + const XML_Char *notationName) { + CharData *storage = (CharData *)userData; + + UNUSED_P(is_parameter_entity); + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + UNUSED_P(notationName); + CharData_AppendXMLChars(storage, entityName, -1); + CharData_AppendXMLChars(storage, XCS("="), 1); + CharData_AppendXMLChars(storage, value, value_length); + CharData_AppendXMLChars(storage, XCS("\n"), 1); +} + +START_TEST(test_utf16_pe) { + /* '> + * %{KHO KHWAI}{CHO CHAN}; + * ]> + * + * + * where {KHO KHWAI} = U+0E04 = 0xe0 0xb8 0x84 in UTF-8 + * and {CHO CHAN} = U+0E08 = 0xe0 0xb8 0x88 in UTF-8 + */ + const char text[] = "\0<\0!\0D\0O\0C\0T\0Y\0P\0E\0 \0d\0o\0c\0 \0[\0\n" + "\0<\0!\0E\0N\0T\0I\0T\0Y\0 \0%\0 \x0e\x04\x0e\x08\0 " + "\0'\0<\0!\0E\0L\0E\0M\0E\0N\0T\0 " + "\0d\0o\0c\0 \0(\0#\0P\0C\0D\0A\0T\0A\0)\0>\0'\0>\0\n" + "\0%\x0e\x04\x0e\x08\0;\0\n" + "\0]\0>\0\n" + "\0<\0d\0o\0c\0>\0<\0/\0d\0o\0c\0>"; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x0e04\x0e08=\n"); +#else + const XML_Char *expected + = XCS("\xe0\xb8\x84\xe0\xb8\x88=\n"); +#endif + CharData storage; + + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetEntityDeclHandler(g_parser, accumulate_entity_decl); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Test that duff attribute description keywords are rejected */ +START_TEST(test_bad_attr_desc_keyword) { + const char *text = "\n" + "]>\n" + ""; + + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "Bad keyword !IMPLIED not faulted"); +} +END_TEST + +/* Test that an invalid attribute description keyword consisting of + * UTF-16 characters with their top bytes non-zero are correctly + * faulted + */ +START_TEST(test_bad_attr_desc_keyword_utf16) { + /* + * ]> + * + * where {KHO KHWAI} = U+0E04 = 0xe0 0xb8 0x84 in UTF-8 + * and {CHO CHAN} = U+0E08 = 0xe0 0xb8 0x88 in UTF-8 + */ + const char text[] + = "\0<\0!\0D\0O\0C\0T\0Y\0P\0E\0 \0d\0 \0[\0\n" + "\0<\0!\0A\0T\0T\0L\0I\0S\0T\0 \0d\0 \0a\0 \0C\0D\0A\0T\0A\0 " + "\0#\x0e\x04\x0e\x08\0>\0\n" + "\0]\0>\0<\0d\0/\0>"; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + != XML_STATUS_ERROR) + fail("Invalid UTF16 attribute keyword not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_SYNTAX) + xml_failure(g_parser); +} +END_TEST + +/* Test that invalid syntax in a is rejected. Do this + * using prefix-encoding (see above) to trigger specific code paths + */ +START_TEST(test_bad_doctype) { + const char *text = "\n" + ""; + + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + expect_failure(text, XML_ERROR_SYNTAX, + "Invalid bytes in DOCTYPE not faulted"); +} +END_TEST + +START_TEST(test_bad_doctype_utf16) { + const char text[] = + /* + * + * U+06F2 = EXTENDED ARABIC-INDIC DIGIT TWO, a valid number + * (name character) but not a valid letter (name start character) + */ + "\0<\0!\0D\0O\0C\0T\0Y\0P\0E\0 \0d\0o\0c\0 \0[\0 " + "\x06\xf2" + "\0 \0]\0>\0<\0d\0o\0c\0/\0>"; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + != XML_STATUS_ERROR) + fail("Invalid bytes in DOCTYPE not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_SYNTAX) + xml_failure(g_parser); +} +END_TEST + +START_TEST(test_bad_doctype_plus) { + const char *text = " ]>\n" + "<1+>&foo;"; + + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "'+' in document name not faulted"); +} +END_TEST + +START_TEST(test_bad_doctype_star) { + const char *text = " ]>\n" + "<1*>&foo;"; + + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "'*' in document name not faulted"); +} +END_TEST + +START_TEST(test_bad_doctype_query) { + const char *text = " ]>\n" + "<1?>&foo;"; + + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "'?' in document name not faulted"); +} +END_TEST + +START_TEST(test_unknown_encoding_bad_ignore) { + const char *text = "" + "" + "&entity;"; + ExtFaults fault = {"]]>", + "Invalid character not faulted", XCS("prefix-conv"), + XML_ERROR_INVALID_TOKEN}; + + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_faulter); + XML_SetUserData(g_parser, &fault); + expect_failure(text, XML_ERROR_EXTERNAL_ENTITY_HANDLING, + "Bad IGNORE section with unknown encoding not failed"); +} +END_TEST + +START_TEST(test_entity_in_utf16_be_attr) { + const char text[] = + /* */ + "\0<\0e\0 \0a\0=\0'\0&\0#\0\x32\0\x32\0\x38\0;\0 " + "\0&\0#\0x\0\x30\0\x30\0E\0\x34\0;\0'\0>\0<\0/\0e\0>"; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x00e4 \x00e4"); +#else + const XML_Char *expected = XCS("\xc3\xa4 \xc3\xa4"); +#endif + CharData storage; + + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetStartElementHandler(g_parser, accumulate_attribute); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_entity_in_utf16_le_attr) { + const char text[] = + /* */ + "<\0e\0 \0a\0=\0'\0&\0#\0\x32\0\x32\0\x38\0;\0 \0" + "&\0#\0x\0\x30\0\x30\0E\0\x34\0;\0'\0>\0<\0/\0e\0>\0"; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("\x00e4 \x00e4"); +#else + const XML_Char *expected = XCS("\xc3\xa4 \xc3\xa4"); +#endif + CharData storage; + + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetStartElementHandler(g_parser, accumulate_attribute); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_entity_public_utf16_be) { + const char text[] = + /* */ + "\0<\0!\0E\0N\0T\0I\0T\0Y\0 \0%\0 \0e\0 \0P\0U\0B\0L\0I\0C\0 " + "\0'\0f\0o\0o\0'\0 \0'\0b\0a\0r\0.\0e\0n\0t\0'\0>\0\n" + /* %e; */ + "\0%\0e\0;\0\n" + /* ]> */ + "\0]\0>\0\n" + /* &j; */ + "\0<\0d\0>\0&\0j\0;\0<\0/\0d\0>"; + ExtTest2 test_data = {/* */ + "\0<\0!\0E\0N\0T\0I\0T\0Y\0 \0j\0 \0'\0b\0a\0z\0'\0>", + 34, NULL, NULL, EE_PARSE_NONE}; + const XML_Char *expected = XCS("baz"); + CharData storage; + + CharData_Init(&storage); + test_data.storage = &storage; + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader2); + XML_SetUserData(g_parser, &test_data); + XML_SetCharacterDataHandler(g_parser, ext2_accumulate_characters); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_entity_public_utf16_le) { + const char text[] = + /* */ + "<\0!\0E\0N\0T\0I\0T\0Y\0 \0%\0 \0e\0 \0P\0U\0B\0L\0I\0C\0 \0" + "'\0f\0o\0o\0'\0 \0'\0b\0a\0r\0.\0e\0n\0t\0'\0>\0\n\0" + /* %e; */ + "%\0e\0;\0\n\0" + /* ]> */ + "]\0>\0\n\0" + /* &j; */ + "<\0d\0>\0&\0j\0;\0<\0/\0d\0>\0"; + ExtTest2 test_data = {/* */ + "<\0!\0E\0N\0T\0I\0T\0Y\0 \0j\0 \0'\0b\0a\0z\0'\0>\0", + 34, NULL, NULL, EE_PARSE_NONE}; + const XML_Char *expected = XCS("baz"); + CharData storage; + + CharData_Init(&storage); + test_data.storage = &storage; + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_loader2); + XML_SetUserData(g_parser, &test_data); + XML_SetCharacterDataHandler(g_parser, ext2_accumulate_characters); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +/* Test that a doctype with neither an internal nor external subset is + * faulted + */ +START_TEST(test_short_doctype) { + const char *text = ""; + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "DOCTYPE without subset not rejected"); +} +END_TEST + +START_TEST(test_short_doctype_2) { + const char *text = ""; + expect_failure(text, XML_ERROR_SYNTAX, + "DOCTYPE without Public ID not rejected"); +} +END_TEST + +START_TEST(test_short_doctype_3) { + const char *text = ""; + expect_failure(text, XML_ERROR_SYNTAX, + "DOCTYPE without System ID not rejected"); +} +END_TEST + +START_TEST(test_long_doctype) { + const char *text = ""; + expect_failure(text, XML_ERROR_SYNTAX, "DOCTYPE with extra ID not rejected"); +} +END_TEST + +START_TEST(test_bad_entity) { + const char *text = "\n" + "]>\n" + ""; + expect_failure(text, XML_ERROR_SYNTAX, + "ENTITY without Public ID is not rejected"); +} +END_TEST + +/* Test unquoted value is faulted */ +START_TEST(test_bad_entity_2) { + const char *text = "\n" + "]>\n" + ""; + expect_failure(text, XML_ERROR_SYNTAX, + "ENTITY without Public ID is not rejected"); +} +END_TEST + +START_TEST(test_bad_entity_3) { + const char *text = "\n" + "]>\n" + ""; + expect_failure(text, XML_ERROR_SYNTAX, + "Parameter ENTITY without Public ID is not rejected"); +} +END_TEST + +START_TEST(test_bad_entity_4) { + const char *text = "\n" + "]>\n" + ""; + expect_failure(text, XML_ERROR_SYNTAX, + "Parameter ENTITY without Public ID is not rejected"); +} +END_TEST + +START_TEST(test_bad_notation) { + const char *text = "\n" + "]>\n" + ""; + expect_failure(text, XML_ERROR_SYNTAX, + "Notation without System ID is not rejected"); +} +END_TEST + +/* Test for issue #11, wrongly suppressed default handler */ +typedef struct default_check { + const XML_Char *expected; + const int expectedLen; + XML_Bool seen; +} DefaultCheck; + +static void XMLCALL +checking_default_handler(void *userData, const XML_Char *s, int len) { + DefaultCheck *data = (DefaultCheck *)userData; + int i; + + for (i = 0; data[i].expected != NULL; i++) { + if (data[i].expectedLen == len + && ! memcmp(data[i].expected, s, len * sizeof(XML_Char))) { + data[i].seen = XML_TRUE; + break; + } + } +} + +START_TEST(test_default_doctype_handler) { + const char *text = "\n" + "]>\n" + "&foo;"; + DefaultCheck test_data[] = {{XCS("'pubname'"), 9, XML_FALSE}, + {XCS("'test.dtd'"), 10, XML_FALSE}, + {NULL, 0, XML_FALSE}}; + int i; + + XML_SetUserData(g_parser, &test_data); + XML_SetDefaultHandler(g_parser, checking_default_handler); + XML_SetEntityDeclHandler(g_parser, dummy_entity_decl_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + for (i = 0; test_data[i].expected != NULL; i++) + if (! test_data[i].seen) + fail("Default handler not run for public !DOCTYPE"); +} +END_TEST + +START_TEST(test_empty_element_abort) { + const char *text = ""; + + XML_SetStartElementHandler(g_parser, start_element_suspender); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + fail("Expected to error on abort"); +} +END_TEST + +/* + * Namespaces tests. + */ + +static void +namespace_setup(void) { + g_parser = XML_ParserCreateNS(NULL, XCS(' ')); + if (g_parser == NULL) + fail("Parser not created."); +} + +static void +namespace_teardown(void) { + basic_teardown(); +} + +/* Check that an element name and attribute name match the expected values. + The expected values are passed as an array reference of string pointers + provided as the userData argument; the first is the expected + element name, and the second is the expected attribute name. +*/ +static int triplet_start_flag = XML_FALSE; +static int triplet_end_flag = XML_FALSE; + +static void XMLCALL +triplet_start_checker(void *userData, const XML_Char *name, + const XML_Char **atts) { + XML_Char **elemstr = (XML_Char **)userData; + char buffer[1024]; + if (xcstrcmp(elemstr[0], name) != 0) { + sprintf(buffer, "unexpected start string: '%" XML_FMT_STR "'", name); + fail(buffer); + } + if (xcstrcmp(elemstr[1], atts[0]) != 0) { + sprintf(buffer, "unexpected attribute string: '%" XML_FMT_STR "'", atts[0]); + fail(buffer); + } + triplet_start_flag = XML_TRUE; +} + +/* Check that the element name passed to the end-element handler matches + the expected value. The expected value is passed as the first element + in an array of strings passed as the userData argument. +*/ +static void XMLCALL +triplet_end_checker(void *userData, const XML_Char *name) { + XML_Char **elemstr = (XML_Char **)userData; + if (xcstrcmp(elemstr[0], name) != 0) { + char buffer[1024]; + sprintf(buffer, "unexpected end string: '%" XML_FMT_STR "'", name); + fail(buffer); + } + triplet_end_flag = XML_TRUE; +} + +START_TEST(test_return_ns_triplet) { + const char *text = ""; + const char *epilog = ""; + const XML_Char *elemstr[] + = {XCS("http://example.org/ e foo"), XCS("http://example.org/ a bar")}; + XML_SetReturnNSTriplet(g_parser, XML_TRUE); + XML_SetUserData(g_parser, (void *)elemstr); + XML_SetElementHandler(g_parser, triplet_start_checker, triplet_end_checker); + XML_SetNamespaceDeclHandler(g_parser, dummy_start_namespace_decl_handler, + dummy_end_namespace_decl_handler); + triplet_start_flag = XML_FALSE; + triplet_end_flag = XML_FALSE; + dummy_handler_flags = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_FALSE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + if (! triplet_start_flag) + fail("triplet_start_checker not invoked"); + /* Check that unsetting "return triplets" fails while still parsing */ + XML_SetReturnNSTriplet(g_parser, XML_FALSE); + if (_XML_Parse_SINGLE_BYTES(g_parser, epilog, (int)strlen(epilog), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + if (! triplet_end_flag) + fail("triplet_end_checker not invoked"); + if (dummy_handler_flags + != (DUMMY_START_NS_DECL_HANDLER_FLAG | DUMMY_END_NS_DECL_HANDLER_FLAG)) + fail("Namespace handlers not called"); +} +END_TEST + +static void XMLCALL +overwrite_start_checker(void *userData, const XML_Char *name, + const XML_Char **atts) { + CharData *storage = (CharData *)userData; + CharData_AppendXMLChars(storage, XCS("start "), 6); + CharData_AppendXMLChars(storage, name, -1); + while (*atts != NULL) { + CharData_AppendXMLChars(storage, XCS("\nattribute "), 11); + CharData_AppendXMLChars(storage, *atts, -1); + atts += 2; + } + CharData_AppendXMLChars(storage, XCS("\n"), 1); +} + +static void XMLCALL +overwrite_end_checker(void *userData, const XML_Char *name) { + CharData *storage = (CharData *)userData; + CharData_AppendXMLChars(storage, XCS("end "), 4); + CharData_AppendXMLChars(storage, name, -1); + CharData_AppendXMLChars(storage, XCS("\n"), 1); +} + +static void +run_ns_tagname_overwrite_test(const char *text, const XML_Char *result) { + CharData storage; + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetElementHandler(g_parser, overwrite_start_checker, + overwrite_end_checker); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, result); +} + +/* Regression test for SF bug #566334. */ +START_TEST(test_ns_tagname_overwrite) { + const char *text = "\n" + " \n" + " \n" + ""; + const XML_Char *result = XCS("start http://example.org/ e\n") + XCS("start http://example.org/ f\n") + XCS("attribute http://example.org/ attr\n") + XCS("end http://example.org/ f\n") + XCS("start http://example.org/ g\n") + XCS("attribute http://example.org/ attr2\n") + XCS("end http://example.org/ g\n") + XCS("end http://example.org/ e\n"); + run_ns_tagname_overwrite_test(text, result); +} +END_TEST + +/* Regression test for SF bug #566334. */ +START_TEST(test_ns_tagname_overwrite_triplet) { + const char *text = "\n" + " \n" + " \n" + ""; + const XML_Char *result = XCS("start http://example.org/ e n\n") + XCS("start http://example.org/ f n\n") + XCS("attribute http://example.org/ attr n\n") + XCS("end http://example.org/ f n\n") + XCS("start http://example.org/ g n\n") + XCS("attribute http://example.org/ attr2 n\n") + XCS("end http://example.org/ g n\n") + XCS("end http://example.org/ e n\n"); + XML_SetReturnNSTriplet(g_parser, XML_TRUE); + run_ns_tagname_overwrite_test(text, result); +} +END_TEST + +/* Regression test for SF bug #620343. */ +static void XMLCALL +start_element_fail(void *userData, const XML_Char *name, + const XML_Char **atts) { + UNUSED_P(userData); + UNUSED_P(name); + UNUSED_P(atts); + + /* We should never get here. */ + fail("should never reach start_element_fail()"); +} + +static void XMLCALL +start_ns_clearing_start_element(void *userData, const XML_Char *prefix, + const XML_Char *uri) { + UNUSED_P(prefix); + UNUSED_P(uri); + XML_SetStartElementHandler((XML_Parser)userData, NULL); +} + +START_TEST(test_start_ns_clears_start_element) { + /* This needs to use separate start/end tags; using the empty tag + syntax doesn't cause the problematic path through Expat to be + taken. + */ + const char *text = ""; + + XML_SetStartElementHandler(g_parser, start_element_fail); + XML_SetStartNamespaceDeclHandler(g_parser, start_ns_clearing_start_element); + XML_SetEndNamespaceDeclHandler(g_parser, dummy_end_namespace_decl_handler); + XML_UseParserAsHandlerArg(g_parser); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Regression test for SF bug #616863. */ +static int XMLCALL +external_entity_handler(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + intptr_t callno = 1 + (intptr_t)XML_GetUserData(parser); + const char *text; + XML_Parser p2; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + if (callno == 1) + text = ("\n" + "\n" + "\n"); + else + text = ("" + ""); + + XML_SetUserData(parser, (void *)callno); + p2 = XML_ExternalEntityParserCreate(parser, context, NULL); + if (_XML_Parse_SINGLE_BYTES(p2, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) { + xml_failure(p2); + return XML_STATUS_ERROR; + } + XML_ParserFree(p2); + return XML_STATUS_OK; +} + +START_TEST(test_default_ns_from_ext_subset_and_ext_ge) { + const char *text = "\n" + "\n" + "]>\n" + "\n" + "&en;\n" + ""; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_handler); + /* We actually need to set this handler to tickle this bug. */ + XML_SetStartElementHandler(g_parser, dummy_start_element); + XML_SetUserData(g_parser, NULL); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Regression test #1 for SF bug #673791. */ +START_TEST(test_ns_prefix_with_empty_uri_1) { + const char *text = "\n" + " \n" + ""; + + expect_failure(text, XML_ERROR_UNDECLARING_PREFIX, + "Did not report re-setting namespace" + " URI with prefix to ''."); +} +END_TEST + +/* Regression test #2 for SF bug #673791. */ +START_TEST(test_ns_prefix_with_empty_uri_2) { + const char *text = "\n" + ""; + + expect_failure(text, XML_ERROR_UNDECLARING_PREFIX, + "Did not report setting namespace URI with prefix to ''."); +} +END_TEST + +/* Regression test #3 for SF bug #673791. */ +START_TEST(test_ns_prefix_with_empty_uri_3) { + const char *text = "\n" + " \n" + "]>\n" + ""; + + expect_failure(text, XML_ERROR_UNDECLARING_PREFIX, + "Didn't report attr default setting NS w/ prefix to ''."); +} +END_TEST + +/* Regression test #4 for SF bug #673791. */ +START_TEST(test_ns_prefix_with_empty_uri_4) { + const char *text = "\n" + " \n" + "]>\n" + ""; + /* Packaged info expected by the end element handler; + the weird structuring lets us re-use the triplet_end_checker() + function also used for another test. */ + const XML_Char *elemstr[] = {XCS("http://example.org/ doc prefix")}; + XML_SetReturnNSTriplet(g_parser, XML_TRUE); + XML_SetUserData(g_parser, (void *)elemstr); + XML_SetEndElementHandler(g_parser, triplet_end_checker); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test with non-xmlns prefix */ +START_TEST(test_ns_unbound_prefix) { + const char *text = "\n" + " \n" + "]>\n" + ""; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + fail("Unbound prefix incorrectly passed"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_UNBOUND_PREFIX) + xml_failure(g_parser); +} +END_TEST + +START_TEST(test_ns_default_with_empty_uri) { + const char *text = "\n" + " \n" + ""; + /* Add some handlers to exercise extra code paths */ + XML_SetStartNamespaceDeclHandler(g_parser, + dummy_start_namespace_decl_handler); + XML_SetEndNamespaceDeclHandler(g_parser, dummy_end_namespace_decl_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Regression test for SF bug #692964: two prefixes for one namespace. */ +START_TEST(test_ns_duplicate_attrs_diff_prefixes) { + const char *text = ""; + expect_failure(text, XML_ERROR_DUPLICATE_ATTRIBUTE, + "did not report multiple attributes with same URI+name"); +} +END_TEST + +START_TEST(test_ns_duplicate_hashes) { + /* The hash of an attribute is calculated as the hash of its URI + * concatenated with a space followed by its name (after the + * colon). We wish to generate attributes with the same hash + * value modulo the attribute table size so that we can check that + * the attribute hash table works correctly. The attribute hash + * table size will be the smallest power of two greater than the + * number of attributes, but at least eight. There is + * unfortunately no programmatic way of getting the hash or the + * table size at user level, but the test code coverage percentage + * will drop if the hashes cease to point to the same row. + * + * The cunning plan is to have few enough attributes to have a + * reliable table size of 8, and have the single letter attribute + * names be 8 characters apart, producing a hash which will be the + * same modulo 8. + */ + const char *text = ""; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Regression test for SF bug #695401: unbound prefix. */ +START_TEST(test_ns_unbound_prefix_on_attribute) { + const char *text = ""; + expect_failure(text, XML_ERROR_UNBOUND_PREFIX, + "did not report unbound prefix on attribute"); +} +END_TEST + +/* Regression test for SF bug #695401: unbound prefix. */ +START_TEST(test_ns_unbound_prefix_on_element) { + const char *text = ""; + expect_failure(text, XML_ERROR_UNBOUND_PREFIX, + "did not report unbound prefix on element"); +} +END_TEST + +/* Test that the parsing status is correctly reset by XML_ParserReset(). + * We usE test_return_ns_triplet() for our example parse to improve + * coverage of tidying up code executed. + */ +START_TEST(test_ns_parser_reset) { + XML_ParsingStatus status; + + XML_GetParsingStatus(g_parser, &status); + if (status.parsing != XML_INITIALIZED) + fail("parsing status doesn't start INITIALIZED"); + test_return_ns_triplet(); + XML_GetParsingStatus(g_parser, &status); + if (status.parsing != XML_FINISHED) + fail("parsing status doesn't end FINISHED"); + XML_ParserReset(g_parser, NULL); + XML_GetParsingStatus(g_parser, &status); + if (status.parsing != XML_INITIALIZED) + fail("parsing status doesn't reset to INITIALIZED"); +} +END_TEST + +/* Test that long element names with namespaces are handled correctly */ +START_TEST(test_ns_long_element) { + const char *text + = "" + ""; + const XML_Char *elemstr[] + = {XCS("http://example.org/") + XCS(" thisisalongenoughelementnametotriggerareallocation foo"), + XCS("http://example.org/ a bar")}; + + XML_SetReturnNSTriplet(g_parser, XML_TRUE); + XML_SetUserData(g_parser, (void *)elemstr); + XML_SetElementHandler(g_parser, triplet_start_checker, triplet_end_checker); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test mixed population of prefixed and unprefixed attributes */ +START_TEST(test_ns_mixed_prefix_atts) { + const char *text = "" + ""; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test having a long namespaced element name inside a short one. + * This exercises some internal buffer reallocation that is shared + * across elements with the same namespace URI. + */ +START_TEST(test_ns_extend_uri_buffer) { + const char *text = "" + " " + ""; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test that xmlns is correctly rejected as an attribute in the xmlns + * namespace, but not in other namespaces + */ +START_TEST(test_ns_reserved_attributes) { + const char *text1 + = ""; + const char *text2 + = ""; + expect_failure(text1, XML_ERROR_RESERVED_PREFIX_XMLNS, + "xmlns not rejected as an attribute"); + XML_ParserReset(g_parser, NULL); + if (_XML_Parse_SINGLE_BYTES(g_parser, text2, (int)strlen(text2), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test more reserved attributes */ +START_TEST(test_ns_reserved_attributes_2) { + const char *text1 = ""; + const char *text2 + = ""; + const char *text3 = ""; + + expect_failure(text1, XML_ERROR_RESERVED_PREFIX_XML, + "xml not rejected as an attribute"); + XML_ParserReset(g_parser, NULL); + expect_failure(text2, XML_ERROR_RESERVED_NAMESPACE_URI, + "Use of w3.org URL not faulted"); + XML_ParserReset(g_parser, NULL); + expect_failure(text3, XML_ERROR_RESERVED_NAMESPACE_URI, + "Use of w3.org xmlns URL not faulted"); +} +END_TEST + +/* Test string pool handling of namespace names of 2048 characters */ +/* Exercises a particular string pool growth path */ +START_TEST(test_ns_extremely_long_prefix) { + /* C99 compilers are only required to support 4095-character + * strings, so the following needs to be split in two to be safe + * for all compilers. + */ + const char *text1 + = "" + ""; + + if (_XML_Parse_SINGLE_BYTES(g_parser, text1, (int)strlen(text1), XML_FALSE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + if (_XML_Parse_SINGLE_BYTES(g_parser, text2, (int)strlen(text2), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +/* Test unknown encoding handlers in namespace setup */ +START_TEST(test_ns_unknown_encoding_success) { + const char *text = "\n" + "Hi"; + + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + run_character_check(text, XCS("Hi")); +} +END_TEST + +/* Test that too many colons are rejected */ +START_TEST(test_ns_double_colon) { + const char *text = ""; + const enum XML_Status status + = _XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE); +#ifdef XML_NS + if ((status == XML_STATUS_OK) + || (XML_GetErrorCode(g_parser) != XML_ERROR_INVALID_TOKEN)) { + fail("Double colon in attribute name not faulted" + " (despite active namespace support)"); + } +#else + if (status != XML_STATUS_OK) { + fail("Double colon in attribute name faulted" + " (despite inactive namespace support"); + } +#endif +} +END_TEST + +START_TEST(test_ns_double_colon_element) { + const char *text = ""; + const enum XML_Status status + = _XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE); +#ifdef XML_NS + if ((status == XML_STATUS_OK) + || (XML_GetErrorCode(g_parser) != XML_ERROR_INVALID_TOKEN)) { + fail("Double colon in element name not faulted" + " (despite active namespace support)"); + } +#else + if (status != XML_STATUS_OK) { + fail("Double colon in element name faulted" + " (despite inactive namespace support"); + } +#endif +} +END_TEST + +/* Test that non-name characters after a colon are rejected */ +START_TEST(test_ns_bad_attr_leafname) { + const char *text = ""; + + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "Invalid character in leafname not faulted"); +} +END_TEST + +START_TEST(test_ns_bad_element_leafname) { + const char *text = ""; + + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "Invalid character in element leafname not faulted"); +} +END_TEST + +/* Test high-byte-set UTF-16 characters are valid in a leafname */ +START_TEST(test_ns_utf16_leafname) { + const char text[] = + /* + * where {KHO KHWAI} = U+0E04 = 0xe0 0xb8 0x84 in UTF-8 + */ + "<\0n\0:\0e\0 \0x\0m\0l\0n\0s\0:\0n\0=\0'\0U\0R\0I\0'\0 \0" + "n\0:\0\x04\x0e=\0'\0a\0'\0 \0/\0>\0"; + const XML_Char *expected = XCS("a"); + CharData storage; + + CharData_Init(&storage); + XML_SetStartElementHandler(g_parser, accumulate_attribute); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_ns_utf16_element_leafname) { + const char text[] = + /* + * where {KHO KHWAI} = U+0E04 = 0xe0 0xb8 0x84 in UTF-8 + */ + "\0<\0n\0:\x0e\x04\0 \0x\0m\0l\0n\0s\0:\0n\0=\0'\0U\0R\0I\0'\0/\0>"; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("URI \x0e04"); +#else + const XML_Char *expected = XCS("URI \xe0\xb8\x84"); +#endif + CharData storage; + + CharData_Init(&storage); + XML_SetStartElementHandler(g_parser, start_element_event_handler); + XML_SetUserData(g_parser, &storage); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_ns_utf16_doctype) { + const char text[] = + /* ]>\n + * where {KHO KHWAI} = U+0E04 = 0xe0 0xb8 0x84 in UTF-8 + */ + "\0<\0!\0D\0O\0C\0T\0Y\0P\0E\0 \0f\0o\0o\0:\x0e\x04\0 " + "\0[\0 \0<\0!\0E\0N\0T\0I\0T\0Y\0 \0b\0a\0r\0 \0'\0b\0a\0z\0'\0>\0 " + "\0]\0>\0\n" + /* &bar; */ + "\0<\0f\0o\0o\0:\x0e\x04\0 " + "\0x\0m\0l\0n\0s\0:\0f\0o\0o\0=\0'\0U\0R\0I\0'\0>" + "\0&\0b\0a\0r\0;" + "\0<\0/\0f\0o\0o\0:\x0e\x04\0>"; +#ifdef XML_UNICODE + const XML_Char *expected = XCS("URI \x0e04"); +#else + const XML_Char *expected = XCS("URI \xe0\xb8\x84"); +#endif + CharData storage; + + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetStartElementHandler(g_parser, start_element_event_handler); + XML_SetUnknownEncodingHandler(g_parser, MiscEncodingHandler, NULL); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_ns_invalid_doctype) { + const char *text = "\n" + "&bar;"; + + expect_failure(text, XML_ERROR_INVALID_TOKEN, + "Invalid character in document local name not faulted"); +} +END_TEST + +START_TEST(test_ns_double_colon_doctype) { + const char *text = "\n" + "&bar;"; + + expect_failure(text, XML_ERROR_SYNTAX, + "Double colon in document name not faulted"); +} +END_TEST + +/* Control variable; the number of times duff_allocator() will successfully + * allocate */ +#define ALLOC_ALWAYS_SUCCEED (-1) +#define REALLOC_ALWAYS_SUCCEED (-1) + +static intptr_t allocation_count = ALLOC_ALWAYS_SUCCEED; +static intptr_t reallocation_count = REALLOC_ALWAYS_SUCCEED; + +/* Crocked allocator for allocation failure tests */ +static void * +duff_allocator(size_t size) { + if (allocation_count == 0) + return NULL; + if (allocation_count != ALLOC_ALWAYS_SUCCEED) + allocation_count--; + return malloc(size); +} + +/* Crocked reallocator for allocation failure tests */ +static void * +duff_reallocator(void *ptr, size_t size) { + if (reallocation_count == 0) + return NULL; + if (reallocation_count != REALLOC_ALWAYS_SUCCEED) + reallocation_count--; + return realloc(ptr, size); +} + +/* Test that a failure to allocate the parser structure fails gracefully */ +START_TEST(test_misc_alloc_create_parser) { + XML_Memory_Handling_Suite memsuite = {duff_allocator, realloc, free}; + unsigned int i; + const unsigned int max_alloc_count = 10; + + /* Something this simple shouldn't need more than 10 allocations */ + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + g_parser = XML_ParserCreate_MM(NULL, &memsuite, NULL); + if (g_parser != NULL) + break; + } + if (i == 0) + fail("Parser unexpectedly ignored failing allocator"); + else if (i == max_alloc_count) + fail("Parser not created with max allocation count"); +} +END_TEST + +/* Test memory allocation failures for a parser with an encoding */ +START_TEST(test_misc_alloc_create_parser_with_encoding) { + XML_Memory_Handling_Suite memsuite = {duff_allocator, realloc, free}; + unsigned int i; + const unsigned int max_alloc_count = 10; + + /* Try several levels of allocation */ + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + g_parser = XML_ParserCreate_MM(XCS("us-ascii"), &memsuite, NULL); + if (g_parser != NULL) + break; + } + if (i == 0) + fail("Parser ignored failing allocator"); + else if (i == max_alloc_count) + fail("Parser not created with max allocation count"); +} +END_TEST + +/* Test that freeing a NULL parser doesn't cause an explosion. + * (Not actually tested anywhere else) + */ +START_TEST(test_misc_null_parser) { + XML_ParserFree(NULL); +} +END_TEST + +/* Test that XML_ErrorString rejects out-of-range codes */ +START_TEST(test_misc_error_string) { + if (XML_ErrorString((enum XML_Error) - 1) != NULL) + fail("Negative error code not rejected"); + if (XML_ErrorString((enum XML_Error)100) != NULL) + fail("Large error code not rejected"); +} +END_TEST + +/* Test the version information is consistent */ + +/* Since we are working in XML_LChars (potentially 16-bits), we + * can't use the standard C library functions for character + * manipulation and have to roll our own. + */ +static int +parse_version(const XML_LChar *version_text, + XML_Expat_Version *version_struct) { + if (! version_text) + return XML_FALSE; + + while (*version_text != 0x00) { + if (*version_text >= ASCII_0 && *version_text <= ASCII_9) + break; + version_text++; + } + if (*version_text == 0x00) + return XML_FALSE; + + /* version_struct->major = strtoul(version_text, 10, &version_text) */ + version_struct->major = 0; + while (*version_text >= ASCII_0 && *version_text <= ASCII_9) { + version_struct->major + = 10 * version_struct->major + (*version_text++ - ASCII_0); + } + if (*version_text++ != ASCII_PERIOD) + return XML_FALSE; + + /* Now for the minor version number */ + version_struct->minor = 0; + while (*version_text >= ASCII_0 && *version_text <= ASCII_9) { + version_struct->minor + = 10 * version_struct->minor + (*version_text++ - ASCII_0); + } + if (*version_text++ != ASCII_PERIOD) + return XML_FALSE; + + /* Finally the micro version number */ + version_struct->micro = 0; + while (*version_text >= ASCII_0 && *version_text <= ASCII_9) { + version_struct->micro + = 10 * version_struct->micro + (*version_text++ - ASCII_0); + } + if (*version_text != 0x00) + return XML_FALSE; + return XML_TRUE; +} + +static int +versions_equal(const XML_Expat_Version *first, + const XML_Expat_Version *second) { + return (first->major == second->major && first->minor == second->minor + && first->micro == second->micro); +} + +START_TEST(test_misc_version) { + XML_Expat_Version read_version = XML_ExpatVersionInfo(); + /* Silence compiler warning with the following assignment */ + XML_Expat_Version parsed_version = {0, 0, 0}; + const XML_LChar *version_text = XML_ExpatVersion(); + + if (version_text == NULL) + fail("Could not obtain version text"); + assert(version_text != NULL); + if (! parse_version(version_text, &parsed_version)) + fail("Unable to parse version text"); + if (! versions_equal(&read_version, &parsed_version)) + fail("Version mismatch"); + +#if ! defined(XML_UNICODE) || defined(XML_UNICODE_WCHAR_T) + if (xcstrcmp(version_text, XCS("expat_2.2.10"))) /* needs bump on releases */ + fail("XML_*_VERSION in expat.h out of sync?\n"); +#else + /* If we have XML_UNICODE defined but not XML_UNICODE_WCHAR_T + * then XML_LChar is defined as char, for some reason. + */ + if (strcmp(version_text, "expat_2.2.5")) /* needs bump on releases */ + fail("XML_*_VERSION in expat.h out of sync?\n"); +#endif /* ! defined(XML_UNICODE) || defined(XML_UNICODE_WCHAR_T) */ +} +END_TEST + +/* Test feature information */ +START_TEST(test_misc_features) { + const XML_Feature *features = XML_GetFeatureList(); + + /* Prevent problems with double-freeing parsers */ + g_parser = NULL; + if (features == NULL) { + fail("Failed to get feature information"); + } else { + /* Loop through the features checking what we can */ + while (features->feature != XML_FEATURE_END) { + switch (features->feature) { + case XML_FEATURE_SIZEOF_XML_CHAR: + if (features->value != sizeof(XML_Char)) + fail("Incorrect size of XML_Char"); + break; + case XML_FEATURE_SIZEOF_XML_LCHAR: + if (features->value != sizeof(XML_LChar)) + fail("Incorrect size of XML_LChar"); + break; + default: + break; + } + features++; + } + } +} +END_TEST + +/* Regression test for GitHub Issue #17: memory leak parsing attribute + * values with mixed bound and unbound namespaces. + */ +START_TEST(test_misc_attribute_leak) { + const char *text = ""; + XML_Memory_Handling_Suite memsuite + = {tracking_malloc, tracking_realloc, tracking_free}; + + g_parser = XML_ParserCreate_MM(XCS("UTF-8"), &memsuite, XCS("\n")); + expect_failure(text, XML_ERROR_UNBOUND_PREFIX, "Unbound prefixes not found"); + XML_ParserFree(g_parser); + /* Prevent the teardown trying to double free */ + g_parser = NULL; + + if (! tracking_report()) + fail("Memory leak found"); +} +END_TEST + +/* Test parser created for UTF-16LE is successful */ +START_TEST(test_misc_utf16le) { + const char text[] = + /* Hi */ + "<\0?\0x\0m\0l\0 \0" + "v\0e\0r\0s\0i\0o\0n\0=\0'\0\x31\0.\0\x30\0'\0?\0>\0" + "<\0q\0>\0H\0i\0<\0/\0q\0>\0"; + const XML_Char *expected = XCS("Hi"); + CharData storage; + + g_parser = XML_ParserCreate(XCS("UTF-16LE")); + if (g_parser == NULL) + fail("Parser not created"); + + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetCharacterDataHandler(g_parser, accumulate_characters); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)sizeof(text) - 1, XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +typedef struct { + XML_Parser parser; + int deep; +} DataIssue240; + +static void +start_element_issue_240(void *userData, const XML_Char *name, + const XML_Char **atts) { + DataIssue240 *mydata = (DataIssue240 *)userData; + UNUSED_P(name); + UNUSED_P(atts); + mydata->deep++; +} + +static void +end_element_issue_240(void *userData, const XML_Char *name) { + DataIssue240 *mydata = (DataIssue240 *)userData; + + UNUSED_P(name); + mydata->deep--; + if (mydata->deep == 0) { + XML_StopParser(mydata->parser, 0); + } +} + +START_TEST(test_misc_stop_during_end_handler_issue_240_1) { + XML_Parser parser; + DataIssue240 *mydata; + enum XML_Status result; + const char *const doc1 = ""; + + parser = XML_ParserCreate(NULL); + XML_SetElementHandler(parser, start_element_issue_240, end_element_issue_240); + mydata = (DataIssue240 *)malloc(sizeof(DataIssue240)); + mydata->parser = parser; + mydata->deep = 0; + XML_SetUserData(parser, mydata); + + result = XML_Parse(parser, doc1, (int)strlen(doc1), 1); + XML_ParserFree(parser); + free(mydata); + if (result != XML_STATUS_ERROR) + fail("Stopping the parser did not work as expected"); +} +END_TEST + +START_TEST(test_misc_stop_during_end_handler_issue_240_2) { + XML_Parser parser; + DataIssue240 *mydata; + enum XML_Status result; + const char *const doc2 = ""; + + parser = XML_ParserCreate(NULL); + XML_SetElementHandler(parser, start_element_issue_240, end_element_issue_240); + mydata = (DataIssue240 *)malloc(sizeof(DataIssue240)); + mydata->parser = parser; + mydata->deep = 0; + XML_SetUserData(parser, mydata); + + result = XML_Parse(parser, doc2, (int)strlen(doc2), 1); + XML_ParserFree(parser); + free(mydata); + if (result != XML_STATUS_ERROR) + fail("Stopping the parser did not work as expected"); +} +END_TEST + +START_TEST(test_misc_deny_internal_entity_closing_doctype_issue_317) { + const char *const inputOne = "'>\n" + "\n" + "%e;"; + const char *const inputTwo = "'>\n" + "\n" + "%e2;"; + const char *const inputThree = "\n" + "\n" + "%e;"; + const char *const inputIssue317 = "\n" + "Hell'>\n" + "%foo;\n" + "]>\n" + "Hello, world"; + + const char *const inputs[] = {inputOne, inputTwo, inputThree, inputIssue317}; + size_t inputIndex = 0; + + for (; inputIndex < sizeof(inputs) / sizeof(inputs[0]); inputIndex++) { + XML_Parser parser; + enum XML_Status parseResult; + int setParamEntityResult; + XML_Size lineNumber; + XML_Size columnNumber; + const char *const input = inputs[inputIndex]; + + parser = XML_ParserCreate(NULL); + setParamEntityResult + = XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + if (setParamEntityResult != 1) + fail("Failed to set XML_PARAM_ENTITY_PARSING_ALWAYS."); + + parseResult = XML_Parse(parser, input, (int)strlen(input), 0); + if (parseResult != XML_STATUS_ERROR) { + parseResult = XML_Parse(parser, "", 0, 1); + if (parseResult != XML_STATUS_ERROR) { + fail("Parsing was expected to fail but succeeded."); + } + } + + if (XML_GetErrorCode(parser) != XML_ERROR_INVALID_TOKEN) + fail("Error code does not match XML_ERROR_INVALID_TOKEN"); + + lineNumber = XML_GetCurrentLineNumber(parser); + if (lineNumber != 4) + fail("XML_GetCurrentLineNumber does not work as expected."); + + columnNumber = XML_GetCurrentColumnNumber(parser); + if (columnNumber != 0) + fail("XML_GetCurrentColumnNumber does not work as expected."); + + XML_ParserFree(parser); + } +} +END_TEST + +static void +alloc_setup(void) { + XML_Memory_Handling_Suite memsuite = {duff_allocator, duff_reallocator, free}; + + /* Ensure the parser creation will go through */ + allocation_count = ALLOC_ALWAYS_SUCCEED; + reallocation_count = REALLOC_ALWAYS_SUCCEED; + g_parser = XML_ParserCreate_MM(NULL, &memsuite, NULL); + if (g_parser == NULL) + fail("Parser not created"); +} + +static void +alloc_teardown(void) { + basic_teardown(); +} + +/* Test the effects of allocation failures on xml declaration processing */ +START_TEST(test_alloc_parse_xdecl) { + const char *text = "\n" + "Hello, world"; + int i; + const int max_alloc_count = 15; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetXmlDeclHandler(g_parser, dummy_xdecl_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* Resetting the parser is insufficient, because some memory + * allocations are cached within the parser. Instead we use + * the teardown and setup routines to ensure that we have the + * right sort of parser back in our hands. + */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed with max allocations"); +} +END_TEST + +/* As above, but with an encoding big enough to cause storing the + * version information to expand the string pool being used. + */ +static int XMLCALL +long_encoding_handler(void *userData, const XML_Char *encoding, + XML_Encoding *info) { + int i; + + UNUSED_P(userData); + UNUSED_P(encoding); + for (i = 0; i < 256; i++) + info->map[i] = i; + info->data = NULL; + info->convert = NULL; + info->release = NULL; + return XML_STATUS_OK; +} + +START_TEST(test_alloc_parse_xdecl_2) { + const char *text + = "" + "Hello, world"; + int i; + const int max_alloc_count = 20; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetXmlDeclHandler(g_parser, dummy_xdecl_handler); + XML_SetUnknownEncodingHandler(g_parser, long_encoding_handler, NULL); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed with max allocations"); +} +END_TEST + +/* Test the effects of allocation failures on a straightforward parse */ +START_TEST(test_alloc_parse_pi) { + const char *text = "\n" + "\n" + "" + "Hello, world" + ""; + int i; + const int max_alloc_count = 15; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetProcessingInstructionHandler(g_parser, dummy_pi_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed with max allocations"); +} +END_TEST + +START_TEST(test_alloc_parse_pi_2) { + const char *text = "\n" + "" + "Hello, world" + "\n" + ""; + int i; + const int max_alloc_count = 15; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetProcessingInstructionHandler(g_parser, dummy_pi_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed with max allocations"); +} +END_TEST + +START_TEST(test_alloc_parse_pi_3) { + const char *text + = ""; + int i; + const int max_alloc_count = 20; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetProcessingInstructionHandler(g_parser, dummy_pi_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed with max allocations"); +} +END_TEST + +START_TEST(test_alloc_parse_comment) { + const char *text = "\n" + "" + "Hi"; + int i; + const int max_alloc_count = 15; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetCommentHandler(g_parser, dummy_comment_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed with max allocations"); +} +END_TEST + +START_TEST(test_alloc_parse_comment_2) { + const char *text = "\n" + "" + "Hello, world" + "" + ""; + int i; + const int max_alloc_count = 15; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetCommentHandler(g_parser, dummy_comment_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed with max allocations"); +} +END_TEST + +static int XMLCALL +external_entity_duff_loader(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + XML_Parser new_parser; + unsigned int i; + const unsigned int max_alloc_count = 10; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + /* Try a few different allocation levels */ + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + new_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (new_parser != NULL) { + XML_ParserFree(new_parser); + break; + } + } + if (i == 0) + fail("External parser creation ignored failing allocator"); + else if (i == max_alloc_count) + fail("Extern parser not created with max allocation count"); + + /* Make sure other random allocation doesn't now fail */ + allocation_count = ALLOC_ALWAYS_SUCCEED; + + /* Make sure the failure code path is executed too */ + return XML_STATUS_ERROR; +} + +/* Test that external parser creation running out of memory is + * correctly reported. Based on the external entity test cases. + */ +START_TEST(test_alloc_create_external_parser) { + const char *text = "\n" + "\n" + "&entity;"; + char foo_text[] = ""; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetUserData(g_parser, foo_text); + XML_SetExternalEntityRefHandler(g_parser, external_entity_duff_loader); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) { + fail("External parser allocator returned success incorrectly"); + } +} +END_TEST + +/* More external parser memory allocation testing */ +START_TEST(test_alloc_run_external_parser) { + const char *text = "\n" + "\n" + "&entity;"; + char foo_text[] = ""; + unsigned int i; + const unsigned int max_alloc_count = 15; + + for (i = 0; i < max_alloc_count; i++) { + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetUserData(g_parser, foo_text); + XML_SetExternalEntityRefHandler(g_parser, external_entity_null_loader); + allocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parsing ignored failing allocator"); + else if (i == max_alloc_count) + fail("Parsing failed with allocation count 10"); +} +END_TEST + +static int XMLCALL +external_entity_dbl_handler(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + intptr_t callno = (intptr_t)XML_GetUserData(parser); + const char *text; + XML_Parser new_parser; + int i; + const int max_alloc_count = 20; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + if (callno == 0) { + /* First time through, check how many calls to malloc occur */ + text = ("\n" + "\n" + "\n"); + allocation_count = 10000; + new_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (new_parser == NULL) { + fail("Unable to allocate first external parser"); + return XML_STATUS_ERROR; + } + /* Stash the number of calls in the user data */ + XML_SetUserData(parser, (void *)(intptr_t)(10000 - allocation_count)); + } else { + text = ("" + ""); + /* Try at varying levels to exercise more code paths */ + for (i = 0; i < max_alloc_count; i++) { + allocation_count = callno + i; + new_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (new_parser != NULL) + break; + } + if (i == 0) { + fail("Second external parser unexpectedly created"); + XML_ParserFree(new_parser); + return XML_STATUS_ERROR; + } else if (i == max_alloc_count) { + fail("Second external parser not created"); + return XML_STATUS_ERROR; + } + } + + allocation_count = ALLOC_ALWAYS_SUCCEED; + if (_XML_Parse_SINGLE_BYTES(new_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) { + xml_failure(new_parser); + return XML_STATUS_ERROR; + } + XML_ParserFree(new_parser); + return XML_STATUS_OK; +} + +/* Test that running out of memory in dtdCopy is correctly reported. + * Based on test_default_ns_from_ext_subset_and_ext_ge() + */ +START_TEST(test_alloc_dtd_copy_default_atts) { + const char *text = "\n" + "\n" + "]>\n" + "\n" + "&en;\n" + ""; + + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_dbl_handler); + XML_SetUserData(g_parser, NULL); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); +} +END_TEST + +static int XMLCALL +external_entity_dbl_handler_2(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + intptr_t callno = (intptr_t)XML_GetUserData(parser); + const char *text; + XML_Parser new_parser; + enum XML_Status rv; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + if (callno == 0) { + /* Try different allocation levels for whole exercise */ + text = ("\n" + "\n" + "\n"); + XML_SetUserData(parser, (void *)(intptr_t)1); + new_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (new_parser == NULL) + return XML_STATUS_ERROR; + rv = _XML_Parse_SINGLE_BYTES(new_parser, text, (int)strlen(text), XML_TRUE); + } else { + /* Just run through once */ + text = ("" + ""); + new_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (new_parser == NULL) + return XML_STATUS_ERROR; + rv = _XML_Parse_SINGLE_BYTES(new_parser, text, (int)strlen(text), XML_TRUE); + } + XML_ParserFree(new_parser); + if (rv == XML_STATUS_ERROR) + return XML_STATUS_ERROR; + return XML_STATUS_OK; +} + +/* Test more external entity allocation failure paths */ +START_TEST(test_alloc_external_entity) { + const char *text = "\n" + "\n" + "]>\n" + "\n" + "&en;\n" + ""; + int i; + const int alloc_test_max_repeats = 50; + + for (i = 0; i < alloc_test_max_repeats; i++) { + allocation_count = -1; + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_dbl_handler_2); + XML_SetUserData(g_parser, NULL); + allocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_OK) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + allocation_count = -1; + if (i == 0) + fail("External entity parsed despite duff allocator"); + if (i == alloc_test_max_repeats) + fail("External entity not parsed at max allocation count"); +} +END_TEST + +/* Test more allocation failure paths */ +static int XMLCALL +external_entity_alloc_set_encoding(XML_Parser parser, const XML_Char *context, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId) { + /* As for external_entity_loader() */ + const char *text = "" + "\xC3\xA9"; + XML_Parser ext_parser; + enum XML_Status status; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + return XML_STATUS_ERROR; + if (! XML_SetEncoding(ext_parser, XCS("utf-8"))) { + XML_ParserFree(ext_parser); + return XML_STATUS_ERROR; + } + status + = _XML_Parse_SINGLE_BYTES(ext_parser, text, (int)strlen(text), XML_TRUE); + XML_ParserFree(ext_parser); + if (status == XML_STATUS_ERROR) + return XML_STATUS_ERROR; + return XML_STATUS_OK; +} + +START_TEST(test_alloc_ext_entity_set_encoding) { + const char *text = "\n" + "]>\n" + "&en;"; + int i; + const int max_allocation_count = 30; + + for (i = 0; i < max_allocation_count; i++) { + XML_SetExternalEntityRefHandler(g_parser, + external_entity_alloc_set_encoding); + allocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_OK) + break; + allocation_count = -1; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Encoding check succeeded despite failing allocator"); + if (i == max_allocation_count) + fail("Encoding failed at max allocation count"); +} +END_TEST + +static int XMLCALL +unknown_released_encoding_handler(void *data, const XML_Char *encoding, + XML_Encoding *info) { + UNUSED_P(data); + if (! xcstrcmp(encoding, XCS("unsupported-encoding"))) { + int i; + + for (i = 0; i < 256; i++) + info->map[i] = i; + info->data = NULL; + info->convert = NULL; + info->release = dummy_release; + return XML_STATUS_OK; + } + return XML_STATUS_ERROR; +} + +/* Test the effects of allocation failure in internal entities. + * Based on test_unknown_encoding_internal_entity + */ +START_TEST(test_alloc_internal_entity) { + const char *text = "\n" + "]>\n" + ""; + unsigned int i; + const unsigned int max_alloc_count = 20; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetUnknownEncodingHandler(g_parser, unknown_released_encoding_handler, + NULL); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Internal entity worked despite failing allocations"); + else if (i == max_alloc_count) + fail("Internal entity failed at max allocation count"); +} +END_TEST + +/* Test the robustness against allocation failure of element handling + * Based on test_dtd_default_handling(). + */ +START_TEST(test_alloc_dtd_default_handling) { + const char *text = "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "]>\n" + ""; + const XML_Char *expected = XCS("\n\n\n\n\n\n\n\n\ntext in doc"); + CharData storage; + int i; + const int max_alloc_count = 25; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + dummy_handler_flags = 0; + XML_SetDefaultHandler(g_parser, accumulate_characters); + XML_SetDoctypeDeclHandler(g_parser, dummy_start_doctype_handler, + dummy_end_doctype_handler); + XML_SetEntityDeclHandler(g_parser, dummy_entity_decl_handler); + XML_SetNotationDeclHandler(g_parser, dummy_notation_decl_handler); + XML_SetElementDeclHandler(g_parser, dummy_element_decl_handler); + XML_SetAttlistDeclHandler(g_parser, dummy_attlist_decl_handler); + XML_SetProcessingInstructionHandler(g_parser, dummy_pi_handler); + XML_SetCommentHandler(g_parser, dummy_comment_handler); + XML_SetCdataSectionHandler(g_parser, dummy_start_cdata_handler, + dummy_end_cdata_handler); + XML_SetUnparsedEntityDeclHandler(g_parser, + dummy_unparsed_entity_decl_handler); + CharData_Init(&storage); + XML_SetUserData(g_parser, &storage); + XML_SetCharacterDataHandler(g_parser, accumulate_characters); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Default DTD parsed despite allocation failures"); + if (i == max_alloc_count) + fail("Default DTD not parsed with maximum alloc count"); + CharData_CheckXMLChars(&storage, expected); + if (dummy_handler_flags + != (DUMMY_START_DOCTYPE_HANDLER_FLAG | DUMMY_END_DOCTYPE_HANDLER_FLAG + | DUMMY_ENTITY_DECL_HANDLER_FLAG | DUMMY_NOTATION_DECL_HANDLER_FLAG + | DUMMY_ELEMENT_DECL_HANDLER_FLAG | DUMMY_ATTLIST_DECL_HANDLER_FLAG + | DUMMY_COMMENT_HANDLER_FLAG | DUMMY_PI_HANDLER_FLAG + | DUMMY_START_CDATA_HANDLER_FLAG | DUMMY_END_CDATA_HANDLER_FLAG + | DUMMY_UNPARSED_ENTITY_DECL_HANDLER_FLAG)) + fail("Not all handlers were called"); +} +END_TEST + +/* Test robustness of XML_SetEncoding() with a failing allocator */ +START_TEST(test_alloc_explicit_encoding) { + int i; + const int max_alloc_count = 5; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + if (XML_SetEncoding(g_parser, XCS("us-ascii")) == XML_STATUS_OK) + break; + } + if (i == 0) + fail("Encoding set despite failing allocator"); + else if (i == max_alloc_count) + fail("Encoding not set at max allocation count"); +} +END_TEST + +/* Test robustness of XML_SetBase against a failing allocator */ +START_TEST(test_alloc_set_base) { + const XML_Char *new_base = XCS("/local/file/name.xml"); + int i; + const int max_alloc_count = 5; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + if (XML_SetBase(g_parser, new_base) == XML_STATUS_OK) + break; + } + if (i == 0) + fail("Base set despite failing allocator"); + else if (i == max_alloc_count) + fail("Base not set with max allocation count"); +} +END_TEST + +/* Test buffer extension in the face of a duff reallocator */ +START_TEST(test_alloc_realloc_buffer) { + const char *text = get_buffer_test_text; + void *buffer; + int i; + const int max_realloc_count = 10; + + /* Get a smallish buffer */ + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + buffer = XML_GetBuffer(g_parser, 1536); + if (buffer == NULL) + fail("1.5K buffer reallocation failed"); + assert(buffer != NULL); + memcpy(buffer, text, strlen(text)); + if (XML_ParseBuffer(g_parser, (int)strlen(text), XML_FALSE) + == XML_STATUS_OK) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + reallocation_count = -1; + if (i == 0) + fail("Parse succeeded with no reallocation"); + else if (i == max_realloc_count) + fail("Parse failed with max reallocation count"); +} +END_TEST + +/* Same test for external entity parsers */ +static int XMLCALL +external_entity_reallocator(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text = get_buffer_test_text; + XML_Parser ext_parser; + void *buffer; + enum XML_Status status; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + fail("Could not create external entity parser"); + + reallocation_count = (intptr_t)XML_GetUserData(parser); + buffer = XML_GetBuffer(ext_parser, 1536); + if (buffer == NULL) + fail("Buffer allocation failed"); + assert(buffer != NULL); + memcpy(buffer, text, strlen(text)); + status = XML_ParseBuffer(ext_parser, (int)strlen(text), XML_FALSE); + reallocation_count = -1; + XML_ParserFree(ext_parser); + return (status == XML_STATUS_OK) ? XML_STATUS_OK : XML_STATUS_ERROR; +} + +START_TEST(test_alloc_ext_entity_realloc_buffer) { + const char *text = "\n" + "]>\n" + "&en;"; + int i; + const int max_realloc_count = 10; + + for (i = 0; i < max_realloc_count; i++) { + XML_SetExternalEntityRefHandler(g_parser, external_entity_reallocator); + XML_SetUserData(g_parser, (void *)(intptr_t)i); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + == XML_STATUS_OK) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Succeeded with no reallocations"); + if (i == max_realloc_count) + fail("Failed with max reallocations"); +} +END_TEST + +/* Test elements with many attributes are handled correctly */ +START_TEST(test_alloc_realloc_many_attributes) { + const char *text = "\n" + "\n" + "\n" + "]>\n" + "" + ""; + int i; + const int max_realloc_count = 10; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite no reallocations"); + if (i == max_realloc_count) + fail("Parse failed at max reallocations"); +} +END_TEST + +/* Test handling of a public entity with failing allocator */ +START_TEST(test_alloc_public_entity_value) { + const char *text = "\n" + "\n"; + char dtd_text[] + = "\n" + "\n" + "\n" + "%e1;\n"; + int i; + const int max_alloc_count = 50; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + dummy_handler_flags = 0; + XML_SetUserData(g_parser, dtd_text); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_public); + /* Provoke a particular code path */ + XML_SetEntityDeclHandler(g_parser, dummy_entity_decl_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing allocation"); + if (i == max_alloc_count) + fail("Parsing failed at max allocation count"); + if (dummy_handler_flags != DUMMY_ENTITY_DECL_HANDLER_FLAG) + fail("Entity declaration handler not called"); +} +END_TEST + +START_TEST(test_alloc_realloc_subst_public_entity_value) { + const char *text = "\n" + "\n"; + char dtd_text[] + = "\n" + "\n" + "%ThisIsAStupidlyLongParameterNameIntendedToTriggerPoolGrowth12345" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP;"; + int i; + const int max_realloc_count = 10; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + XML_SetUserData(g_parser, dtd_text); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_public); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing reallocation"); + if (i == max_realloc_count) + fail("Parsing failed at max reallocation count"); +} +END_TEST + +START_TEST(test_alloc_parse_public_doctype) { + const char *text + = "\n" + "\n" + ""; + int i; + const int max_alloc_count = 25; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + dummy_handler_flags = 0; + XML_SetDoctypeDeclHandler(g_parser, dummy_start_doctype_decl_handler, + dummy_end_doctype_decl_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed at maximum allocation count"); + if (dummy_handler_flags + != (DUMMY_START_DOCTYPE_DECL_HANDLER_FLAG + | DUMMY_END_DOCTYPE_DECL_HANDLER_FLAG)) + fail("Doctype handler functions not called"); +} +END_TEST + +START_TEST(test_alloc_parse_public_doctype_long_name) { + const char *text + = "\n" + "\n" + ""; + int i; + const int max_alloc_count = 25; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetDoctypeDeclHandler(g_parser, dummy_start_doctype_decl_handler, + dummy_end_doctype_decl_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed at maximum allocation count"); +} +END_TEST + +static int XMLCALL +external_entity_alloc(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + const char *text = (const char *)XML_GetUserData(parser); + XML_Parser ext_parser; + int parse_res; + + UNUSED_P(base); + UNUSED_P(systemId); + UNUSED_P(publicId); + ext_parser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (ext_parser == NULL) + return XML_STATUS_ERROR; + parse_res + = _XML_Parse_SINGLE_BYTES(ext_parser, text, (int)strlen(text), XML_TRUE); + XML_ParserFree(ext_parser); + return parse_res; +} + +/* Test foreign DTD handling */ +START_TEST(test_alloc_set_foreign_dtd) { + const char *text1 = "\n" + "&entity;"; + char text2[] = ""; + int i; + const int max_alloc_count = 25; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetUserData(g_parser, &text2); + XML_SetExternalEntityRefHandler(g_parser, external_entity_alloc); + if (XML_UseForeignDTD(g_parser, XML_TRUE) != XML_ERROR_NONE) + fail("Could not set foreign DTD"); + if (_XML_Parse_SINGLE_BYTES(g_parser, text1, (int)strlen(text1), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed at maximum allocation count"); +} +END_TEST + +/* Test based on ibm/valid/P32/ibm32v04.xml */ +START_TEST(test_alloc_attribute_enum_value) { + const char *text = "\n" + "\n" + "This is a \n \n\nyellow tiger"; + char dtd_text[] = "\n" + "\n" + ""; + int i; + const int max_alloc_count = 30; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetExternalEntityRefHandler(g_parser, external_entity_alloc); + XML_SetUserData(g_parser, dtd_text); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + /* An attribute list handler provokes a different code path */ + XML_SetAttlistDeclHandler(g_parser, dummy_attlist_decl_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed at maximum allocation count"); +} +END_TEST + +/* Test attribute enums sufficient to overflow the string pool */ +START_TEST(test_alloc_realloc_attribute_enum_value) { + const char *text = "\n" + "\n" + "This is a yellow tiger"; + /* We wish to define a collection of attribute enums that will + * cause the string pool storing them to have to expand. This + * means more than 1024 bytes, including the parentheses and + * separator bars. + */ + char dtd_text[] + = "\n" + ""; + int i; + const int max_realloc_count = 10; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + XML_SetExternalEntityRefHandler(g_parser, external_entity_alloc); + XML_SetUserData(g_parser, dtd_text); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + /* An attribute list handler provokes a different code path */ + XML_SetAttlistDeclHandler(g_parser, dummy_attlist_decl_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing reallocator"); + if (i == max_realloc_count) + fail("Parse failed at maximum reallocation count"); +} +END_TEST + +/* Test attribute enums in a #IMPLIED attribute forcing pool growth */ +START_TEST(test_alloc_realloc_implied_attribute) { + /* Forcing this particular code path is a balancing act. The + * addition of the closing parenthesis and terminal NUL must be + * what pushes the string of enums over the 1024-byte limit, + * otherwise a different code path will pick up the realloc. + */ + const char *text + = "\n" + "\n" + "]>"; + int i; + const int max_realloc_count = 10; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + XML_SetAttlistDeclHandler(g_parser, dummy_attlist_decl_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing reallocator"); + if (i == max_realloc_count) + fail("Parse failed at maximum reallocation count"); +} +END_TEST + +/* Test attribute enums in a defaulted attribute forcing pool growth */ +START_TEST(test_alloc_realloc_default_attribute) { + /* Forcing this particular code path is a balancing act. The + * addition of the closing parenthesis and terminal NUL must be + * what pushes the string of enums over the 1024-byte limit, + * otherwise a different code path will pick up the realloc. + */ + const char *text + = "\n" + "\n]>"; + int i; + const int max_realloc_count = 10; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + XML_SetAttlistDeclHandler(g_parser, dummy_attlist_decl_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing reallocator"); + if (i == max_realloc_count) + fail("Parse failed at maximum reallocation count"); +} +END_TEST + +/* Test long notation name with dodgy allocator */ +START_TEST(test_alloc_notation) { + const char *text + = "\n" + "\n" + "\n" + "]>\n"; + int i; + const int max_alloc_count = 20; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + dummy_handler_flags = 0; + XML_SetNotationDeclHandler(g_parser, dummy_notation_decl_handler); + XML_SetEntityDeclHandler(g_parser, dummy_entity_decl_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite allocation failures"); + if (i == max_alloc_count) + fail("Parse failed at maximum allocation count"); + if (dummy_handler_flags + != (DUMMY_ENTITY_DECL_HANDLER_FLAG | DUMMY_NOTATION_DECL_HANDLER_FLAG)) + fail("Entity declaration handler not called"); +} +END_TEST + +/* Test public notation with dodgy allocator */ +START_TEST(test_alloc_public_notation) { + const char *text + = "\n" + "\n" + "\n" + "]>\n"; + int i; + const int max_alloc_count = 20; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + dummy_handler_flags = 0; + XML_SetNotationDeclHandler(g_parser, dummy_notation_decl_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite allocation failures"); + if (i == max_alloc_count) + fail("Parse failed at maximum allocation count"); + if (dummy_handler_flags != DUMMY_NOTATION_DECL_HANDLER_FLAG) + fail("Notation handler not called"); +} +END_TEST + +/* Test public notation with dodgy allocator */ +START_TEST(test_alloc_system_notation) { + const char *text + = "\n" + "\n" + "\n" + "]>\n"; + int i; + const int max_alloc_count = 20; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + dummy_handler_flags = 0; + XML_SetNotationDeclHandler(g_parser, dummy_notation_decl_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite allocation failures"); + if (i == max_alloc_count) + fail("Parse failed at maximum allocation count"); + if (dummy_handler_flags != DUMMY_NOTATION_DECL_HANDLER_FLAG) + fail("Notation handler not called"); +} +END_TEST + +START_TEST(test_alloc_nested_groups) { + const char *text + = "\n" + "" + "]>\n" + ""; + CharData storage; + int i; + const int max_alloc_count = 20; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + CharData_Init(&storage); + XML_SetElementDeclHandler(g_parser, dummy_element_decl_handler); + XML_SetStartElementHandler(g_parser, record_element_start_handler); + XML_SetUserData(g_parser, &storage); + dummy_handler_flags = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + + if (i == 0) + fail("Parse succeeded despite failing reallocator"); + if (i == max_alloc_count) + fail("Parse failed at maximum reallocation count"); + CharData_CheckXMLChars(&storage, XCS("doce")); + if (dummy_handler_flags != DUMMY_ELEMENT_DECL_HANDLER_FLAG) + fail("Element handler not fired"); +} +END_TEST + +START_TEST(test_alloc_realloc_nested_groups) { + const char *text + = "\n" + "" + "]>\n" + ""; + CharData storage; + int i; + const int max_realloc_count = 10; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + CharData_Init(&storage); + XML_SetElementDeclHandler(g_parser, dummy_element_decl_handler); + XML_SetStartElementHandler(g_parser, record_element_start_handler); + XML_SetUserData(g_parser, &storage); + dummy_handler_flags = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + + if (i == 0) + fail("Parse succeeded despite failing reallocator"); + if (i == max_realloc_count) + fail("Parse failed at maximum reallocation count"); + CharData_CheckXMLChars(&storage, XCS("doce")); + if (dummy_handler_flags != DUMMY_ELEMENT_DECL_HANDLER_FLAG) + fail("Element handler not fired"); +} +END_TEST + +START_TEST(test_alloc_large_group) { + const char *text = "\n" + "]>\n" + "\n" + "\n" + "\n"; + int i; + const int max_alloc_count = 50; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetElementDeclHandler(g_parser, dummy_element_decl_handler); + dummy_handler_flags = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed at maximum allocation count"); + if (dummy_handler_flags != DUMMY_ELEMENT_DECL_HANDLER_FLAG) + fail("Element handler flag not raised"); +} +END_TEST + +START_TEST(test_alloc_realloc_group_choice) { + const char *text = "\n" + "]>\n" + "\n" + "\n" + "This is a foo\n" + "\n" + "\n"; + int i; + const int max_realloc_count = 10; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + XML_SetElementDeclHandler(g_parser, dummy_element_decl_handler); + dummy_handler_flags = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing reallocator"); + if (i == max_realloc_count) + fail("Parse failed at maximum reallocation count"); + if (dummy_handler_flags != DUMMY_ELEMENT_DECL_HANDLER_FLAG) + fail("Element handler flag not raised"); +} +END_TEST + +START_TEST(test_alloc_pi_in_epilog) { + const char *text = "\n" + ""; + int i; + const int max_alloc_count = 15; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetProcessingInstructionHandler(g_parser, dummy_pi_handler); + dummy_handler_flags = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse completed despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed at maximum allocation count"); + if (dummy_handler_flags != DUMMY_PI_HANDLER_FLAG) + fail("Processing instruction handler not invoked"); +} +END_TEST + +START_TEST(test_alloc_comment_in_epilog) { + const char *text = "\n" + ""; + int i; + const int max_alloc_count = 15; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetCommentHandler(g_parser, dummy_comment_handler); + dummy_handler_flags = 0; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse completed despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed at maximum allocation count"); + if (dummy_handler_flags != DUMMY_COMMENT_HANDLER_FLAG) + fail("Processing instruction handler not invoked"); +} +END_TEST + +START_TEST(test_alloc_realloc_long_attribute_value) { + const char *text + = "]>\n" + ""; + int i; + const int max_realloc_count = 10; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing reallocator"); + if (i == max_realloc_count) + fail("Parse failed at maximum reallocation count"); +} +END_TEST + +START_TEST(test_alloc_attribute_whitespace) { + const char *text = ""; + int i; + const int max_alloc_count = 15; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed at maximum allocation count"); +} +END_TEST + +START_TEST(test_alloc_attribute_predefined_entity) { + const char *text = ""; + int i; + const int max_alloc_count = 15; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed at maximum allocation count"); +} +END_TEST + +/* Test that a character reference at the end of a suitably long + * default value for an attribute can trigger pool growth, and recovers + * if the allocator fails on it. + */ +START_TEST(test_alloc_long_attr_default_with_char_ref) { + const char *text + = "]>\n" + ""; + int i; + const int max_alloc_count = 20; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed at maximum allocation count"); +} +END_TEST + +/* Test that a long character reference substitution triggers a pool + * expansion correctly for an attribute value. + */ +START_TEST(test_alloc_long_attr_value) { + const char *text + = "]>\n" + ""; + int i; + const int max_alloc_count = 25; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing allocator"); + if (i == max_alloc_count) + fail("Parse failed at maximum allocation count"); +} +END_TEST + +/* Test that an error in a nested parameter entity substitution is + * handled correctly. It seems unlikely that the code path being + * exercised can be reached purely by carefully crafted XML, but an + * allocation error in the right place will definitely do it. + */ +START_TEST(test_alloc_nested_entities) { + const char *text = "\n" + ""; + ExtFaults test_data + = {"\n" + "\n" + "%pe2;", + "Memory Fail not faulted", NULL, XML_ERROR_NO_MEMORY}; + + /* Causes an allocation error in a nested storeEntityValue() */ + allocation_count = 12; + XML_SetUserData(g_parser, &test_data); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_faulter); + expect_failure(text, XML_ERROR_EXTERNAL_ENTITY_HANDLING, + "Entity allocation failure not noted"); +} +END_TEST + +START_TEST(test_alloc_realloc_param_entity_newline) { + const char *text = "\n" + ""; + char dtd_text[] + = "\n'>" + "%pe;\n"; + int i; + const int max_realloc_count = 5; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + XML_SetUserData(g_parser, dtd_text); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_alloc); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing reallocator"); + if (i == max_realloc_count) + fail("Parse failed at maximum reallocation count"); +} +END_TEST + +START_TEST(test_alloc_realloc_ce_extends_pe) { + const char *text = "\n" + ""; + char dtd_text[] + = "\n'>" + "%pe;\n"; + int i; + const int max_realloc_count = 5; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + XML_SetUserData(g_parser, dtd_text); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_alloc); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parse succeeded despite failing reallocator"); + if (i == max_realloc_count) + fail("Parse failed at maximum reallocation count"); +} +END_TEST + +START_TEST(test_alloc_realloc_attributes) { + const char *text = "]>\n" + "wombat\n"; + int i; + const int max_realloc_count = 5; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + + if (i == 0) + fail("Parse succeeded despite failing reallocator"); + if (i == max_realloc_count) + fail("Parse failed at maximum reallocation count"); +} +END_TEST + +START_TEST(test_alloc_long_doc_name) { + const char *text = + /* 64 characters per line */ + ""; + int i; + const int max_alloc_count = 20; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing reallocations"); + else if (i == max_alloc_count) + fail("Parsing failed even at max reallocation count"); +} +END_TEST + +START_TEST(test_alloc_long_base) { + const char *text = "\n" + "]>\n" + "&e;"; + char entity_text[] = "Hello world"; + const XML_Char *base = + /* 64 characters per line */ + /* clang-format off */ + XCS("LongBaseURI/that/will/overflow/an/internal/buffer/and/cause/it/t") + XCS("o/have/to/grow/PQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789A/") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789A/") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789A/") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789A/") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789A/") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789A/") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789A/") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789A/") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789A/") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789A/") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789A/") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789A/") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789A/") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789A/") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789A/"); + /* clang-format on */ + int i; + const int max_alloc_count = 25; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetUserData(g_parser, entity_text); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_alloc); + if (XML_SetBase(g_parser, base) == XML_STATUS_ERROR) { + XML_ParserReset(g_parser, NULL); + continue; + } + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing allocations"); + else if (i == max_alloc_count) + fail("Parsing failed even at max allocation count"); +} +END_TEST + +START_TEST(test_alloc_long_public_id) { + const char *text + = "\n" + "]>\n" + "&e;"; + char entity_text[] = "Hello world"; + int i; + const int max_alloc_count = 40; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetUserData(g_parser, entity_text); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_alloc); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing allocations"); + else if (i == max_alloc_count) + fail("Parsing failed even at max allocation count"); +} +END_TEST + +START_TEST(test_alloc_long_entity_value) { + const char *text + = "\n" + " \n" + "]>\n" + "&e2;"; + char entity_text[] = "Hello world"; + int i; + const int max_alloc_count = 40; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetUserData(g_parser, entity_text); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_alloc); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing allocations"); + else if (i == max_alloc_count) + fail("Parsing failed even at max allocation count"); +} +END_TEST + +START_TEST(test_alloc_long_notation) { + const char *text + = "\n" + " \n" + " \n" + "]>\n" + "&e2;"; + ExtOption options[] + = {{XCS("foo"), "Entity Foo"}, {XCS("bar"), "Entity Bar"}, {NULL, NULL}}; + int i; + const int max_alloc_count = 40; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetUserData(g_parser, options); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_optioner); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + + /* See comment in test_alloc_parse_xdecl() */ + alloc_teardown(); + alloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing allocations"); + else if (i == max_alloc_count) + fail("Parsing failed even at max allocation count"); +} +END_TEST + +static void +nsalloc_setup(void) { + XML_Memory_Handling_Suite memsuite = {duff_allocator, duff_reallocator, free}; + XML_Char ns_sep[2] = {' ', '\0'}; + + /* Ensure the parser creation will go through */ + allocation_count = ALLOC_ALWAYS_SUCCEED; + reallocation_count = REALLOC_ALWAYS_SUCCEED; + g_parser = XML_ParserCreate_MM(NULL, &memsuite, ns_sep); + if (g_parser == NULL) + fail("Parser not created"); +} + +static void +nsalloc_teardown(void) { + basic_teardown(); +} + +/* Test the effects of allocation failure in simple namespace parsing. + * Based on test_ns_default_with_empty_uri() + */ +START_TEST(test_nsalloc_xmlns) { + const char *text = "\n" + " \n" + ""; + unsigned int i; + const unsigned int max_alloc_count = 30; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + /* Exercise more code paths with a default handler */ + XML_SetDefaultHandler(g_parser, dummy_default_handler); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* Resetting the parser is insufficient, because some memory + * allocations are cached within the parser. Instead we use + * the teardown and setup routines to ensure that we have the + * right sort of parser back in our hands. + */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing allocations"); + else if (i == max_alloc_count) + fail("Parsing failed even at maximum allocation count"); +} +END_TEST + +/* Test XML_ParseBuffer interface with namespace and a dicky allocator */ +START_TEST(test_nsalloc_parse_buffer) { + const char *text = "Hello"; + void *buffer; + + /* Try a parse before the start of the world */ + /* (Exercises new code path) */ + allocation_count = 0; + if (XML_ParseBuffer(g_parser, 0, XML_FALSE) != XML_STATUS_ERROR) + fail("Pre-init XML_ParseBuffer not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_NO_MEMORY) + fail("Pre-init XML_ParseBuffer faulted for wrong reason"); + + /* Now with actual memory allocation */ + allocation_count = ALLOC_ALWAYS_SUCCEED; + if (XML_ParseBuffer(g_parser, 0, XML_FALSE) != XML_STATUS_OK) + xml_failure(g_parser); + + /* Check that resuming an unsuspended parser is faulted */ + if (XML_ResumeParser(g_parser) != XML_STATUS_ERROR) + fail("Resuming unsuspended parser not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_NOT_SUSPENDED) + xml_failure(g_parser); + + /* Get the parser into suspended state */ + XML_SetCharacterDataHandler(g_parser, clearing_aborting_character_handler); + resumable = XML_TRUE; + buffer = XML_GetBuffer(g_parser, (int)strlen(text)); + if (buffer == NULL) + fail("Could not acquire parse buffer"); + assert(buffer != NULL); + memcpy(buffer, text, strlen(text)); + if (XML_ParseBuffer(g_parser, (int)strlen(text), XML_TRUE) + != XML_STATUS_SUSPENDED) + xml_failure(g_parser); + if (XML_GetErrorCode(g_parser) != XML_ERROR_NONE) + xml_failure(g_parser); + if (XML_ParseBuffer(g_parser, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + fail("Suspended XML_ParseBuffer not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_SUSPENDED) + xml_failure(g_parser); + if (XML_GetBuffer(g_parser, (int)strlen(text)) != NULL) + fail("Suspended XML_GetBuffer not faulted"); + + /* Get it going again and complete the world */ + XML_SetCharacterDataHandler(g_parser, NULL); + if (XML_ResumeParser(g_parser) != XML_STATUS_OK) + xml_failure(g_parser); + if (XML_ParseBuffer(g_parser, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + fail("Post-finishing XML_ParseBuffer not faulted"); + if (XML_GetErrorCode(g_parser) != XML_ERROR_FINISHED) + xml_failure(g_parser); + if (XML_GetBuffer(g_parser, (int)strlen(text)) != NULL) + fail("Post-finishing XML_GetBuffer not faulted"); +} +END_TEST + +/* Check handling of long prefix names (pool growth) */ +START_TEST(test_nsalloc_long_prefix) { + const char *text + = "<" + /* 64 characters per line */ + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + ":foo xmlns:" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "='http://example.org/'>" + ""; + int i; + const int max_alloc_count = 40; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing allocations"); + else if (i == max_alloc_count) + fail("Parsing failed even at max allocation count"); +} +END_TEST + +/* Check handling of long uri names (pool growth) */ +START_TEST(test_nsalloc_long_uri) { + const char *text + = "" + ""; + int i; + const int max_alloc_count = 40; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing allocations"); + else if (i == max_alloc_count) + fail("Parsing failed even at max allocation count"); +} +END_TEST + +/* Test handling of long attribute names with prefixes */ +START_TEST(test_nsalloc_long_attr) { + const char *text + = "" + ""; + int i; + const int max_alloc_count = 40; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing allocations"); + else if (i == max_alloc_count) + fail("Parsing failed even at max allocation count"); +} +END_TEST + +/* Test handling of an attribute name with a long namespace prefix */ +START_TEST(test_nsalloc_long_attr_prefix) { + const char *text + = "" + ""; + const XML_Char *elemstr[] = { + /* clang-format off */ + XCS("http://example.org/ e foo"), + XCS("http://example.org/ a ") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ") + XCS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ") + /* clang-format on */ + }; + int i; + const int max_alloc_count = 40; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetReturnNSTriplet(g_parser, XML_TRUE); + XML_SetUserData(g_parser, (void *)elemstr); + XML_SetElementHandler(g_parser, triplet_start_checker, triplet_end_checker); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing allocations"); + else if (i == max_alloc_count) + fail("Parsing failed even at max allocation count"); +} +END_TEST + +/* Test attribute handling in the face of a dodgy reallocator */ +START_TEST(test_nsalloc_realloc_attributes) { + const char *text = "" + ""; + int i; + const int max_realloc_count = 10; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing reallocations"); + else if (i == max_realloc_count) + fail("Parsing failed at max reallocation count"); +} +END_TEST + +/* Test long element names with namespaces under a failing allocator */ +START_TEST(test_nsalloc_long_element) { + const char *text + = "" + ""; + const XML_Char *elemstr[] + = {XCS("http://example.org/") + XCS(" thisisalongenoughelementnametotriggerareallocation foo"), + XCS("http://example.org/ a bar")}; + int i; + const int max_alloc_count = 30; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetReturnNSTriplet(g_parser, XML_TRUE); + XML_SetUserData(g_parser, (void *)elemstr); + XML_SetElementHandler(g_parser, triplet_start_checker, triplet_end_checker); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing reallocations"); + else if (i == max_alloc_count) + fail("Parsing failed at max reallocation count"); +} +END_TEST + +/* Test the effects of reallocation failure when reassigning a + * binding. + * + * XML_ParserReset does not free the BINDING structures used by a + * parser, but instead adds them to an internal free list to be reused + * as necessary. Likewise the URI buffers allocated for the binding + * aren't freed, but kept attached to their existing binding. If the + * new binding has a longer URI, it will need reallocation. This test + * provokes that reallocation, and tests the control path if it fails. + */ +START_TEST(test_nsalloc_realloc_binding_uri) { + const char *first = "\n" + " \n" + ""; + const char *second + = "\n" + " \n" + ""; + unsigned i; + const unsigned max_realloc_count = 10; + + /* First, do a full parse that will leave bindings around */ + if (_XML_Parse_SINGLE_BYTES(g_parser, first, (int)strlen(first), XML_TRUE) + == XML_STATUS_ERROR) + xml_failure(g_parser); + + /* Now repeat with a longer URI and a duff reallocator */ + for (i = 0; i < max_realloc_count; i++) { + XML_ParserReset(g_parser, NULL); + reallocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, second, (int)strlen(second), XML_TRUE) + != XML_STATUS_ERROR) + break; + } + if (i == 0) + fail("Parsing worked despite failing reallocation"); + else if (i == max_realloc_count) + fail("Parsing failed at max reallocation count"); +} +END_TEST + +/* Check handling of long prefix names (pool growth) */ +START_TEST(test_nsalloc_realloc_long_prefix) { + const char *text + = "<" + /* 64 characters per line */ + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + ":foo xmlns:" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "='http://example.org/'>" + ""; + int i; + const int max_realloc_count = 12; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing reallocations"); + else if (i == max_realloc_count) + fail("Parsing failed even at max reallocation count"); +} +END_TEST + +/* Check handling of even long prefix names (different code path) */ +START_TEST(test_nsalloc_realloc_longer_prefix) { + const char *text + = "<" + /* 64 characters per line */ + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "Q:foo xmlns:" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "Q='http://example.org/'>" + ""; + int i; + const int max_realloc_count = 12; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing reallocations"); + else if (i == max_realloc_count) + fail("Parsing failed even at max reallocation count"); +} +END_TEST + +START_TEST(test_nsalloc_long_namespace) { + const char *text1 + = "<" + /* 64 characters per line */ + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + ":e xmlns:" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "='http://example.org/'>\n"; + const char *text2 + = "<" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + ":f " + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + ":attr='foo'/>\n" + ""; + int i; + const int max_alloc_count = 40; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text1, (int)strlen(text1), XML_FALSE) + != XML_STATUS_ERROR + && _XML_Parse_SINGLE_BYTES(g_parser, text2, (int)strlen(text2), + XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing allocations"); + else if (i == max_alloc_count) + fail("Parsing failed even at max allocation count"); +} +END_TEST + +/* Using a slightly shorter namespace name provokes allocations in + * slightly different places in the code. + */ +START_TEST(test_nsalloc_less_long_namespace) { + const char *text + = "<" + /* 64 characters per line */ + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678" + ":e xmlns:" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678" + "='http://example.org/'>\n" + "<" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678" + ":f " + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789AZ" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678" + ":att='foo'/>\n" + ""; + int i; + const int max_alloc_count = 40; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing allocations"); + else if (i == max_alloc_count) + fail("Parsing failed even at max allocation count"); +} +END_TEST + +START_TEST(test_nsalloc_long_context) { + const char *text + = "\n" + " \n" + "]>\n" + "\n" + "&en;" + ""; + ExtOption options[] = { + {XCS("foo"), ""}, {XCS("bar"), ""}, {NULL, NULL}}; + int i; + const int max_alloc_count = 70; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetUserData(g_parser, options); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_optioner); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing allocations"); + else if (i == max_alloc_count) + fail("Parsing failed even at max allocation count"); +} +END_TEST + +/* This function is void; it will throw a fail() on error, so if it + * returns normally it must have succeeded. + */ +static void +context_realloc_test(const char *text) { + ExtOption options[] = { + {XCS("foo"), ""}, {XCS("bar"), ""}, {NULL, NULL}}; + int i; + const int max_realloc_count = 6; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + XML_SetUserData(g_parser, options); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_optioner); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing reallocations"); + else if (i == max_realloc_count) + fail("Parsing failed even at max reallocation count"); +} + +START_TEST(test_nsalloc_realloc_long_context) { + const char *text + = "\n" + "]>\n" + "\n" + "&en;" + ""; + + context_realloc_test(text); +} +END_TEST + +START_TEST(test_nsalloc_realloc_long_context_2) { + const char *text + = "\n" + "]>\n" + "\n" + "&en;" + ""; + + context_realloc_test(text); +} +END_TEST + +START_TEST(test_nsalloc_realloc_long_context_3) { + const char *text + = "\n" + "]>\n" + "\n" + "&en;" + ""; + + context_realloc_test(text); +} +END_TEST + +START_TEST(test_nsalloc_realloc_long_context_4) { + const char *text + = "\n" + "]>\n" + "\n" + "&en;" + ""; + + context_realloc_test(text); +} +END_TEST + +START_TEST(test_nsalloc_realloc_long_context_5) { + const char *text + = "\n" + "]>\n" + "\n" + "&en;" + ""; + + context_realloc_test(text); +} +END_TEST + +START_TEST(test_nsalloc_realloc_long_context_6) { + const char *text + = "\n" + "]>\n" + "\n" + "&en;" + ""; + + context_realloc_test(text); +} +END_TEST + +START_TEST(test_nsalloc_realloc_long_context_7) { + const char *text + = "\n" + "]>\n" + "\n" + "&en;" + ""; + + context_realloc_test(text); +} +END_TEST + +START_TEST(test_nsalloc_realloc_long_ge_name) { + const char *text + = "\n" + "]>\n" + "\n" + "&" + /* 64 characters per line */ + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + ";" + ""; + ExtOption options[] = { + {XCS("foo"), ""}, {XCS("bar"), ""}, {NULL, NULL}}; + int i; + const int max_realloc_count = 10; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + XML_SetUserData(g_parser, options); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_optioner); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing reallocations"); + else if (i == max_realloc_count) + fail("Parsing failed even at max reallocation count"); +} +END_TEST + +/* Test that when a namespace is passed through the context mechanism + * to an external entity parser, the parsers handle reallocation + * failures correctly. The prefix is exactly the right length to + * provoke particular uncommon code paths. + */ +START_TEST(test_nsalloc_realloc_long_context_in_dtd) { + const char *text1 + = "\n" + "]>\n" + "<" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + ":doc xmlns:" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + "='foo/Second'>&First;"; + const char *text2 + = ""; + ExtOption options[] = {{XCS("foo/First"), "Hello world"}, {NULL, NULL}}; + int i; + const int max_realloc_count = 20; + + for (i = 0; i < max_realloc_count; i++) { + reallocation_count = i; + XML_SetUserData(g_parser, options); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_optioner); + if (_XML_Parse_SINGLE_BYTES(g_parser, text1, (int)strlen(text1), XML_FALSE) + != XML_STATUS_ERROR + && _XML_Parse_SINGLE_BYTES(g_parser, text2, (int)strlen(text2), + XML_TRUE) + != XML_STATUS_ERROR) + break; + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing reallocations"); + else if (i == max_realloc_count) + fail("Parsing failed even at max reallocation count"); +} +END_TEST + +START_TEST(test_nsalloc_long_default_in_ext) { + const char *text + = "\n" + " \n" + "]>\n" + "&x;"; + ExtOption options[] = {{XCS("foo"), ""}, {NULL, NULL}}; + int i; + const int max_alloc_count = 50; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetUserData(g_parser, options); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_optioner); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing allocations"); + else if (i == max_alloc_count) + fail("Parsing failed even at max allocation count"); +} +END_TEST + +START_TEST(test_nsalloc_long_systemid_in_ext) { + const char *text + = "\n" + "]>\n" + "&en;"; + ExtOption options[] = { + {XCS("foo"), ""}, + {/* clang-format off */ + XCS("ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/") + XCS("ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/") + XCS("ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/") + XCS("ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/") + XCS("ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/") + XCS("ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/") + XCS("ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/") + XCS("ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/") + XCS("ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/") + XCS("ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/") + XCS("ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/") + XCS("ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/") + XCS("ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/") + XCS("ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/") + XCS("ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/") + XCS("ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/ABCDEFGHIJKLMNO/"), + /* clang-format on */ + ""}, + {NULL, NULL}}; + int i; + const int max_alloc_count = 55; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetUserData(g_parser, options); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_optioner); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Parsing worked despite failing allocations"); + else if (i == max_alloc_count) + fail("Parsing failed even at max allocation count"); +} +END_TEST + +/* Test the effects of allocation failure on parsing an element in a + * namespace. Based on test_nsalloc_long_context. + */ +START_TEST(test_nsalloc_prefixed_element) { + const char *text = "\n" + " \n" + "]>\n" + "\n" + "&en;" + ""; + ExtOption options[] = { + {XCS("foo"), ""}, {XCS("bar"), ""}, {NULL, NULL}}; + int i; + const int max_alloc_count = 70; + + for (i = 0; i < max_alloc_count; i++) { + allocation_count = i; + XML_SetUserData(g_parser, options); + XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(g_parser, external_entity_optioner); + if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) + != XML_STATUS_ERROR) + break; + + /* See comment in test_nsalloc_xmlns() */ + nsalloc_teardown(); + nsalloc_setup(); + } + if (i == 0) + fail("Success despite failing allocator"); + else if (i == max_alloc_count) + fail("Failed even at full allocation count"); +} +END_TEST + +static Suite * +make_suite(void) { + Suite *s = suite_create("basic"); + TCase *tc_basic = tcase_create("basic tests"); + TCase *tc_namespace = tcase_create("XML namespaces"); + TCase *tc_misc = tcase_create("miscellaneous tests"); + TCase *tc_alloc = tcase_create("allocation tests"); + TCase *tc_nsalloc = tcase_create("namespace allocation tests"); + + suite_add_tcase(s, tc_basic); + tcase_add_checked_fixture(tc_basic, basic_setup, basic_teardown); + tcase_add_test(tc_basic, test_nul_byte); + tcase_add_test(tc_basic, test_u0000_char); + tcase_add_test(tc_basic, test_siphash_self); + tcase_add_test(tc_basic, test_siphash_spec); + tcase_add_test(tc_basic, test_bom_utf8); + tcase_add_test(tc_basic, test_bom_utf16_be); + tcase_add_test(tc_basic, test_bom_utf16_le); + tcase_add_test(tc_basic, test_nobom_utf16_le); + tcase_add_test(tc_basic, test_illegal_utf8); + tcase_add_test(tc_basic, test_utf8_auto_align); + tcase_add_test(tc_basic, test_utf16); + tcase_add_test(tc_basic, test_utf16_le_epilog_newline); + tcase_add_test(tc_basic, test_not_utf16); + tcase_add_test(tc_basic, test_bad_encoding); + tcase_add_test(tc_basic, test_latin1_umlauts); + tcase_add_test(tc_basic, test_long_utf8_character); + tcase_add_test(tc_basic, test_long_latin1_attribute); + tcase_add_test(tc_basic, test_long_ascii_attribute); + /* Regression test for SF bug #491986. */ + tcase_add_test(tc_basic, test_danish_latin1); + /* Regression test for SF bug #514281. */ + tcase_add_test(tc_basic, test_french_charref_hexidecimal); + tcase_add_test(tc_basic, test_french_charref_decimal); + tcase_add_test(tc_basic, test_french_latin1); + tcase_add_test(tc_basic, test_french_utf8); + tcase_add_test(tc_basic, test_utf8_false_rejection); + tcase_add_test(tc_basic, test_line_number_after_parse); + tcase_add_test(tc_basic, test_column_number_after_parse); + tcase_add_test(tc_basic, test_line_and_column_numbers_inside_handlers); + tcase_add_test(tc_basic, test_line_number_after_error); + tcase_add_test(tc_basic, test_column_number_after_error); + tcase_add_test(tc_basic, test_really_long_lines); + tcase_add_test(tc_basic, test_really_long_encoded_lines); + tcase_add_test(tc_basic, test_end_element_events); + tcase_add_test(tc_basic, test_attr_whitespace_normalization); + tcase_add_test(tc_basic, test_xmldecl_misplaced); + tcase_add_test(tc_basic, test_xmldecl_invalid); + tcase_add_test(tc_basic, test_xmldecl_missing_attr); + tcase_add_test(tc_basic, test_xmldecl_missing_value); + tcase_add_test(tc_basic, test_unknown_encoding_internal_entity); + tcase_add_test(tc_basic, test_unrecognised_encoding_internal_entity); + tcase_add_test(tc_basic, test_wfc_undeclared_entity_unread_external_subset); + tcase_add_test(tc_basic, test_wfc_undeclared_entity_no_external_subset); + tcase_add_test(tc_basic, test_wfc_undeclared_entity_standalone); + tcase_add_test(tc_basic, test_wfc_undeclared_entity_with_external_subset); + tcase_add_test(tc_basic, test_not_standalone_handler_reject); + tcase_add_test(tc_basic, test_not_standalone_handler_accept); + tcase_add_test(tc_basic, + test_wfc_undeclared_entity_with_external_subset_standalone); + tcase_add_test(tc_basic, test_entity_with_external_subset_unless_standalone); + tcase_add_test(tc_basic, test_wfc_no_recursive_entity_refs); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_ext_entity_set_encoding); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_ext_entity_no_handler); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_ext_entity_set_bom); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_ext_entity_bad_encoding); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_ext_entity_bad_encoding_2); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_ext_entity_invalid_parse); + tcase_add_test__ifdef_xml_dtd(tc_basic, + test_ext_entity_invalid_suspended_parse); + tcase_add_test(tc_basic, test_dtd_default_handling); + tcase_add_test(tc_basic, test_dtd_attr_handling); + tcase_add_test(tc_basic, test_empty_ns_without_namespaces); + tcase_add_test(tc_basic, test_ns_in_attribute_default_without_namespaces); + tcase_add_test(tc_basic, test_stop_parser_between_char_data_calls); + tcase_add_test(tc_basic, test_suspend_parser_between_char_data_calls); + tcase_add_test(tc_basic, test_repeated_stop_parser_between_char_data_calls); + tcase_add_test(tc_basic, test_good_cdata_ascii); + tcase_add_test(tc_basic, test_good_cdata_utf16); + tcase_add_test(tc_basic, test_good_cdata_utf16_le); + tcase_add_test(tc_basic, test_long_cdata_utf16); +#ifndef XML_MIN_SIZE /* FIXME workaround -DXML_MIN_SIZE + ASan (issue #332) */ + tcase_add_test(tc_basic, test_multichar_cdata_utf16); +#endif + tcase_add_test(tc_basic, test_utf16_bad_surrogate_pair); + tcase_add_test(tc_basic, test_bad_cdata); +#ifndef XML_MIN_SIZE /* FIXME workaround -DXML_MIN_SIZE + ASan (issue #332) */ + tcase_add_test(tc_basic, test_bad_cdata_utf16); +#endif + tcase_add_test(tc_basic, test_stop_parser_between_cdata_calls); + tcase_add_test(tc_basic, test_suspend_parser_between_cdata_calls); + tcase_add_test(tc_basic, test_memory_allocation); + tcase_add_test(tc_basic, test_default_current); + tcase_add_test(tc_basic, test_dtd_elements); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_set_foreign_dtd); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_foreign_dtd_not_standalone); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_invalid_foreign_dtd); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_foreign_dtd_with_doctype); + tcase_add_test__ifdef_xml_dtd(tc_basic, + test_foreign_dtd_without_external_subset); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_empty_foreign_dtd); + tcase_add_test(tc_basic, test_set_base); + tcase_add_test(tc_basic, test_attributes); + tcase_add_test(tc_basic, test_reset_in_entity); + tcase_add_test(tc_basic, test_resume_invalid_parse); + tcase_add_test(tc_basic, test_resume_resuspended); + tcase_add_test(tc_basic, test_cdata_default); + tcase_add_test(tc_basic, test_subordinate_reset); + tcase_add_test(tc_basic, test_subordinate_suspend); + tcase_add_test(tc_basic, test_subordinate_xdecl_suspend); + tcase_add_test(tc_basic, test_subordinate_xdecl_abort); + tcase_add_test(tc_basic, test_explicit_encoding); + tcase_add_test(tc_basic, test_trailing_cr); + tcase_add_test(tc_basic, test_ext_entity_trailing_cr); + tcase_add_test(tc_basic, test_trailing_rsqb); + tcase_add_test(tc_basic, test_ext_entity_trailing_rsqb); + tcase_add_test(tc_basic, test_ext_entity_good_cdata); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_user_parameters); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_ext_entity_ref_parameter); + tcase_add_test(tc_basic, test_empty_parse); + tcase_add_test(tc_basic, test_get_buffer_1); + tcase_add_test(tc_basic, test_get_buffer_2); + tcase_add_test(tc_basic, test_byte_info_at_end); + tcase_add_test(tc_basic, test_byte_info_at_error); + tcase_add_test(tc_basic, test_byte_info_at_cdata); + tcase_add_test(tc_basic, test_predefined_entities); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_invalid_tag_in_dtd); + tcase_add_test(tc_basic, test_not_predefined_entities); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_ignore_section); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_ignore_section_utf16); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_ignore_section_utf16_be); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_bad_ignore_section); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_external_entity_values); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_ext_entity_not_standalone); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_ext_entity_value_abort); + tcase_add_test(tc_basic, test_bad_public_doctype); + tcase_add_test(tc_basic, test_attribute_enum_value); + tcase_add_test(tc_basic, test_predefined_entity_redefinition); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_dtd_stop_processing); + tcase_add_test(tc_basic, test_public_notation_no_sysid); + tcase_add_test(tc_basic, test_nested_groups); + tcase_add_test(tc_basic, test_group_choice); + tcase_add_test(tc_basic, test_standalone_parameter_entity); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_skipped_parameter_entity); + tcase_add_test__ifdef_xml_dtd(tc_basic, + test_recursive_external_parameter_entity); + tcase_add_test(tc_basic, test_undefined_ext_entity_in_external_dtd); + tcase_add_test(tc_basic, test_suspend_xdecl); + tcase_add_test(tc_basic, test_abort_epilog); + tcase_add_test(tc_basic, test_abort_epilog_2); + tcase_add_test(tc_basic, test_suspend_epilog); + tcase_add_test(tc_basic, test_suspend_in_sole_empty_tag); + tcase_add_test(tc_basic, test_unfinished_epilog); + tcase_add_test(tc_basic, test_partial_char_in_epilog); + tcase_add_test(tc_basic, test_hash_collision); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_suspend_resume_internal_entity); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_resume_entity_with_syntax_error); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_suspend_resume_parameter_entity); + tcase_add_test(tc_basic, test_restart_on_error); + tcase_add_test(tc_basic, test_reject_lt_in_attribute_value); + tcase_add_test(tc_basic, test_reject_unfinished_param_in_att_value); + tcase_add_test(tc_basic, test_trailing_cr_in_att_value); + tcase_add_test(tc_basic, test_standalone_internal_entity); + tcase_add_test(tc_basic, test_skipped_external_entity); + tcase_add_test(tc_basic, test_skipped_null_loaded_ext_entity); + tcase_add_test(tc_basic, test_skipped_unloaded_ext_entity); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_param_entity_with_trailing_cr); + tcase_add_test(tc_basic, test_invalid_character_entity); + tcase_add_test(tc_basic, test_invalid_character_entity_2); + tcase_add_test(tc_basic, test_invalid_character_entity_3); + tcase_add_test(tc_basic, test_invalid_character_entity_4); + tcase_add_test(tc_basic, test_pi_handled_in_default); + tcase_add_test(tc_basic, test_comment_handled_in_default); + tcase_add_test(tc_basic, test_pi_yml); + tcase_add_test(tc_basic, test_pi_xnl); + tcase_add_test(tc_basic, test_pi_xmm); + tcase_add_test(tc_basic, test_utf16_pi); + tcase_add_test(tc_basic, test_utf16_be_pi); + tcase_add_test(tc_basic, test_utf16_be_comment); + tcase_add_test(tc_basic, test_utf16_le_comment); + tcase_add_test(tc_basic, test_missing_encoding_conversion_fn); + tcase_add_test(tc_basic, test_failing_encoding_conversion_fn); + tcase_add_test(tc_basic, test_unknown_encoding_success); + tcase_add_test(tc_basic, test_unknown_encoding_bad_name); + tcase_add_test(tc_basic, test_unknown_encoding_bad_name_2); + tcase_add_test(tc_basic, test_unknown_encoding_long_name_1); + tcase_add_test(tc_basic, test_unknown_encoding_long_name_2); + tcase_add_test(tc_basic, test_invalid_unknown_encoding); + tcase_add_test(tc_basic, test_unknown_ascii_encoding_ok); + tcase_add_test(tc_basic, test_unknown_ascii_encoding_fail); + tcase_add_test(tc_basic, test_unknown_encoding_invalid_length); + tcase_add_test(tc_basic, test_unknown_encoding_invalid_topbit); + tcase_add_test(tc_basic, test_unknown_encoding_invalid_surrogate); + tcase_add_test(tc_basic, test_unknown_encoding_invalid_high); + tcase_add_test(tc_basic, test_unknown_encoding_invalid_attr_value); + tcase_add_test(tc_basic, test_ext_entity_latin1_utf16le_bom); + tcase_add_test(tc_basic, test_ext_entity_latin1_utf16be_bom); + tcase_add_test(tc_basic, test_ext_entity_latin1_utf16le_bom2); + tcase_add_test(tc_basic, test_ext_entity_latin1_utf16be_bom2); + tcase_add_test(tc_basic, test_ext_entity_utf16_be); + tcase_add_test(tc_basic, test_ext_entity_utf16_le); + tcase_add_test(tc_basic, test_ext_entity_utf16_unknown); + tcase_add_test(tc_basic, test_ext_entity_utf8_non_bom); + tcase_add_test(tc_basic, test_utf8_in_cdata_section); + tcase_add_test(tc_basic, test_utf8_in_cdata_section_2); + tcase_add_test(tc_basic, test_trailing_spaces_in_elements); + tcase_add_test(tc_basic, test_utf16_attribute); + tcase_add_test(tc_basic, test_utf16_second_attr); + tcase_add_test(tc_basic, test_attr_after_solidus); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_utf16_pe); + tcase_add_test(tc_basic, test_bad_attr_desc_keyword); + tcase_add_test(tc_basic, test_bad_attr_desc_keyword_utf16); + tcase_add_test(tc_basic, test_bad_doctype); + tcase_add_test(tc_basic, test_bad_doctype_utf16); + tcase_add_test(tc_basic, test_bad_doctype_plus); + tcase_add_test(tc_basic, test_bad_doctype_star); + tcase_add_test(tc_basic, test_bad_doctype_query); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_unknown_encoding_bad_ignore); + tcase_add_test(tc_basic, test_entity_in_utf16_be_attr); + tcase_add_test(tc_basic, test_entity_in_utf16_le_attr); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_entity_public_utf16_be); + tcase_add_test__ifdef_xml_dtd(tc_basic, test_entity_public_utf16_le); + tcase_add_test(tc_basic, test_short_doctype); + tcase_add_test(tc_basic, test_short_doctype_2); + tcase_add_test(tc_basic, test_short_doctype_3); + tcase_add_test(tc_basic, test_long_doctype); + tcase_add_test(tc_basic, test_bad_entity); + tcase_add_test(tc_basic, test_bad_entity_2); + tcase_add_test(tc_basic, test_bad_entity_3); + tcase_add_test(tc_basic, test_bad_entity_4); + tcase_add_test(tc_basic, test_bad_notation); + tcase_add_test(tc_basic, test_default_doctype_handler); + tcase_add_test(tc_basic, test_empty_element_abort); + + suite_add_tcase(s, tc_namespace); + tcase_add_checked_fixture(tc_namespace, namespace_setup, namespace_teardown); + tcase_add_test(tc_namespace, test_return_ns_triplet); + tcase_add_test(tc_namespace, test_ns_tagname_overwrite); + tcase_add_test(tc_namespace, test_ns_tagname_overwrite_triplet); + tcase_add_test(tc_namespace, test_start_ns_clears_start_element); + tcase_add_test__ifdef_xml_dtd(tc_namespace, + test_default_ns_from_ext_subset_and_ext_ge); + tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_1); + tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_2); + tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_3); + tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_4); + tcase_add_test(tc_namespace, test_ns_unbound_prefix); + tcase_add_test(tc_namespace, test_ns_default_with_empty_uri); + tcase_add_test(tc_namespace, test_ns_duplicate_attrs_diff_prefixes); + tcase_add_test(tc_namespace, test_ns_duplicate_hashes); + tcase_add_test(tc_namespace, test_ns_unbound_prefix_on_attribute); + tcase_add_test(tc_namespace, test_ns_unbound_prefix_on_element); + tcase_add_test(tc_namespace, test_ns_parser_reset); + tcase_add_test(tc_namespace, test_ns_long_element); + tcase_add_test(tc_namespace, test_ns_mixed_prefix_atts); + tcase_add_test(tc_namespace, test_ns_extend_uri_buffer); + tcase_add_test(tc_namespace, test_ns_reserved_attributes); + tcase_add_test(tc_namespace, test_ns_reserved_attributes_2); + tcase_add_test(tc_namespace, test_ns_extremely_long_prefix); + tcase_add_test(tc_namespace, test_ns_unknown_encoding_success); + tcase_add_test(tc_namespace, test_ns_double_colon); + tcase_add_test(tc_namespace, test_ns_double_colon_element); + tcase_add_test(tc_namespace, test_ns_bad_attr_leafname); + tcase_add_test(tc_namespace, test_ns_bad_element_leafname); + tcase_add_test(tc_namespace, test_ns_utf16_leafname); + tcase_add_test(tc_namespace, test_ns_utf16_element_leafname); + tcase_add_test(tc_namespace, test_ns_utf16_doctype); + tcase_add_test(tc_namespace, test_ns_invalid_doctype); + tcase_add_test(tc_namespace, test_ns_double_colon_doctype); + + suite_add_tcase(s, tc_misc); + tcase_add_checked_fixture(tc_misc, NULL, basic_teardown); + tcase_add_test(tc_misc, test_misc_alloc_create_parser); + tcase_add_test(tc_misc, test_misc_alloc_create_parser_with_encoding); + tcase_add_test(tc_misc, test_misc_null_parser); + tcase_add_test(tc_misc, test_misc_error_string); + tcase_add_test(tc_misc, test_misc_version); + tcase_add_test(tc_misc, test_misc_features); + tcase_add_test(tc_misc, test_misc_attribute_leak); + tcase_add_test(tc_misc, test_misc_utf16le); + tcase_add_test(tc_misc, test_misc_stop_during_end_handler_issue_240_1); + tcase_add_test(tc_misc, test_misc_stop_during_end_handler_issue_240_2); + tcase_add_test__ifdef_xml_dtd( + tc_misc, test_misc_deny_internal_entity_closing_doctype_issue_317); + + suite_add_tcase(s, tc_alloc); + tcase_add_checked_fixture(tc_alloc, alloc_setup, alloc_teardown); + tcase_add_test(tc_alloc, test_alloc_parse_xdecl); + tcase_add_test(tc_alloc, test_alloc_parse_xdecl_2); + tcase_add_test(tc_alloc, test_alloc_parse_pi); + tcase_add_test(tc_alloc, test_alloc_parse_pi_2); + tcase_add_test(tc_alloc, test_alloc_parse_pi_3); + tcase_add_test(tc_alloc, test_alloc_parse_comment); + tcase_add_test(tc_alloc, test_alloc_parse_comment_2); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_create_external_parser); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_run_external_parser); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_dtd_copy_default_atts); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_external_entity); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_ext_entity_set_encoding); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_internal_entity); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_dtd_default_handling); + tcase_add_test(tc_alloc, test_alloc_explicit_encoding); + tcase_add_test(tc_alloc, test_alloc_set_base); + tcase_add_test(tc_alloc, test_alloc_realloc_buffer); + tcase_add_test(tc_alloc, test_alloc_ext_entity_realloc_buffer); + tcase_add_test(tc_alloc, test_alloc_realloc_many_attributes); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_public_entity_value); + tcase_add_test__ifdef_xml_dtd(tc_alloc, + test_alloc_realloc_subst_public_entity_value); + tcase_add_test(tc_alloc, test_alloc_parse_public_doctype); + tcase_add_test(tc_alloc, test_alloc_parse_public_doctype_long_name); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_set_foreign_dtd); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_attribute_enum_value); + tcase_add_test__ifdef_xml_dtd(tc_alloc, + test_alloc_realloc_attribute_enum_value); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_realloc_implied_attribute); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_realloc_default_attribute); + tcase_add_test(tc_alloc, test_alloc_notation); + tcase_add_test(tc_alloc, test_alloc_public_notation); + tcase_add_test(tc_alloc, test_alloc_system_notation); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_nested_groups); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_realloc_nested_groups); + tcase_add_test(tc_alloc, test_alloc_large_group); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_realloc_group_choice); + tcase_add_test(tc_alloc, test_alloc_pi_in_epilog); + tcase_add_test(tc_alloc, test_alloc_comment_in_epilog); + tcase_add_test__ifdef_xml_dtd(tc_alloc, + test_alloc_realloc_long_attribute_value); + tcase_add_test(tc_alloc, test_alloc_attribute_whitespace); + tcase_add_test(tc_alloc, test_alloc_attribute_predefined_entity); + tcase_add_test(tc_alloc, test_alloc_long_attr_default_with_char_ref); + tcase_add_test(tc_alloc, test_alloc_long_attr_value); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_nested_entities); + tcase_add_test__ifdef_xml_dtd(tc_alloc, + test_alloc_realloc_param_entity_newline); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_realloc_ce_extends_pe); + tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_realloc_attributes); + tcase_add_test(tc_alloc, test_alloc_long_doc_name); + tcase_add_test(tc_alloc, test_alloc_long_base); + tcase_add_test(tc_alloc, test_alloc_long_public_id); + tcase_add_test(tc_alloc, test_alloc_long_entity_value); + tcase_add_test(tc_alloc, test_alloc_long_notation); + + suite_add_tcase(s, tc_nsalloc); + tcase_add_checked_fixture(tc_nsalloc, nsalloc_setup, nsalloc_teardown); + tcase_add_test(tc_nsalloc, test_nsalloc_xmlns); + tcase_add_test(tc_nsalloc, test_nsalloc_parse_buffer); + tcase_add_test(tc_nsalloc, test_nsalloc_long_prefix); + tcase_add_test(tc_nsalloc, test_nsalloc_long_uri); + tcase_add_test(tc_nsalloc, test_nsalloc_long_attr); + tcase_add_test(tc_nsalloc, test_nsalloc_long_attr_prefix); + tcase_add_test(tc_nsalloc, test_nsalloc_realloc_attributes); + tcase_add_test(tc_nsalloc, test_nsalloc_long_element); + tcase_add_test(tc_nsalloc, test_nsalloc_realloc_binding_uri); + tcase_add_test(tc_nsalloc, test_nsalloc_realloc_long_prefix); + tcase_add_test(tc_nsalloc, test_nsalloc_realloc_longer_prefix); + tcase_add_test(tc_nsalloc, test_nsalloc_long_namespace); + tcase_add_test(tc_nsalloc, test_nsalloc_less_long_namespace); + tcase_add_test(tc_nsalloc, test_nsalloc_long_context); + tcase_add_test(tc_nsalloc, test_nsalloc_realloc_long_context); + tcase_add_test(tc_nsalloc, test_nsalloc_realloc_long_context_2); + tcase_add_test(tc_nsalloc, test_nsalloc_realloc_long_context_3); + tcase_add_test(tc_nsalloc, test_nsalloc_realloc_long_context_4); + tcase_add_test(tc_nsalloc, test_nsalloc_realloc_long_context_5); + tcase_add_test(tc_nsalloc, test_nsalloc_realloc_long_context_6); + tcase_add_test(tc_nsalloc, test_nsalloc_realloc_long_context_7); + tcase_add_test(tc_nsalloc, test_nsalloc_realloc_long_ge_name); + tcase_add_test(tc_nsalloc, test_nsalloc_realloc_long_context_in_dtd); + tcase_add_test(tc_nsalloc, test_nsalloc_long_default_in_ext); + tcase_add_test(tc_nsalloc, test_nsalloc_long_systemid_in_ext); + tcase_add_test(tc_nsalloc, test_nsalloc_prefixed_element); + + return s; +} + +int +main(int argc, char *argv[]) { + int i, nf; + int verbosity = CK_NORMAL; + Suite *s = make_suite(); + SRunner *sr = srunner_create(s); + + /* run the tests for internal helper functions */ + testhelper_is_whitespace_normalized(); + + for (i = 1; i < argc; ++i) { + char *opt = argv[i]; + if (strcmp(opt, "-v") == 0 || strcmp(opt, "--verbose") == 0) + verbosity = CK_VERBOSE; + else if (strcmp(opt, "-q") == 0 || strcmp(opt, "--quiet") == 0) + verbosity = CK_SILENT; + else { + fprintf(stderr, "runtests: unknown option '%s'\n", opt); + return 2; + } + } + if (verbosity != CK_SILENT) + printf("Expat version: %" XML_FMT_STR "\n", XML_ExpatVersion()); + srunner_run_all(sr, verbosity); + nf = srunner_ntests_failed(sr); + srunner_free(sr); + + return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE; +} diff --git a/3rdparty/expat/tests/runtestspp.cpp b/3rdparty/expat/tests/runtestspp.cpp new file mode 100644 index 0000000..fd3ceaa --- /dev/null +++ b/3rdparty/expat/tests/runtestspp.cpp @@ -0,0 +1,36 @@ +/* C++ compilation harness for the test suite. + + This is used to ensure the Expat headers can be included from C++ + and have everything work as expected. + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "runtests.c" diff --git a/3rdparty/expat/tests/structdata.c b/3rdparty/expat/tests/structdata.c new file mode 100644 index 0000000..e81b7b1 --- /dev/null +++ b/3rdparty/expat/tests/structdata.c @@ -0,0 +1,155 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifdef HAVE_EXPAT_CONFIG_H +# include "expat_config.h" +#endif + +#include +#include +#include +#include + +#include "structdata.h" +#include "minicheck.h" + +#define STRUCT_EXTENSION_COUNT 8 + +#ifdef XML_UNICODE_WCHAR_T +# include +# define XML_FMT_STR "ls" +# define xcstrlen(s) wcslen(s) +# define xcstrcmp(s, t) wcscmp((s), (t)) +#else +# define XML_FMT_STR "s" +# define xcstrlen(s) strlen(s) +# define xcstrcmp(s, t) strcmp((s), (t)) +#endif + +static XML_Char * +xmlstrdup(const XML_Char *s) { + size_t byte_count = (xcstrlen(s) + 1) * sizeof(XML_Char); + XML_Char *dup = malloc(byte_count); + + assert(dup != NULL); + memcpy(dup, s, byte_count); + return dup; +} + +void +StructData_Init(StructData *storage) { + assert(storage != NULL); + storage->count = 0; + storage->max_count = 0; + storage->entries = NULL; +} + +void +StructData_AddItem(StructData *storage, const XML_Char *s, int data0, int data1, + int data2) { + StructDataEntry *entry; + + assert(storage != NULL); + assert(s != NULL); + if (storage->count == storage->max_count) { + StructDataEntry *new; + + storage->max_count += STRUCT_EXTENSION_COUNT; + new = realloc(storage->entries, + storage->max_count * sizeof(StructDataEntry)); + assert(new != NULL); + storage->entries = new; + } + + entry = &storage->entries[storage->count]; + entry->str = xmlstrdup(s); + entry->data0 = data0; + entry->data1 = data1; + entry->data2 = data2; + storage->count++; +} + +/* 'fail()' aborts the function via a longjmp, so there is no point + * in returning a value from this function. + */ +void +StructData_CheckItems(StructData *storage, const StructDataEntry *expected, + int count) { + char buffer[1024]; + int i; + + assert(storage != NULL); + assert(expected != NULL); + if (count != storage->count) { + sprintf(buffer, "wrong number of entries: got %d, expected %d", + storage->count, count); + StructData_Dispose(storage); + fail(buffer); + } else { + for (i = 0; i < count; i++) { + const StructDataEntry *got = &storage->entries[i]; + const StructDataEntry *want = &expected[i]; + + assert(got != NULL); + assert(want != NULL); + + if (xcstrcmp(got->str, want->str) != 0) { + StructData_Dispose(storage); + fail("structure got bad string"); + } else { + if (got->data0 != want->data0 || got->data1 != want->data1 + || got->data2 != want->data2) { + sprintf(buffer, + "struct '%" XML_FMT_STR + "' expected (%d,%d,%d), got (%d,%d,%d)", + got->str, want->data0, want->data1, want->data2, got->data0, + got->data1, got->data2); + StructData_Dispose(storage); + fail(buffer); + } + } + } + } +} + +void +StructData_Dispose(StructData *storage) { + int i; + + assert(storage != NULL); + for (i = 0; i < storage->count; i++) + free((void *)storage->entries[i].str); + free(storage->entries); + + storage->count = 0; + storage->entries = NULL; +} diff --git a/3rdparty/expat/tests/structdata.h b/3rdparty/expat/tests/structdata.h new file mode 100644 index 0000000..870ffaf --- /dev/null +++ b/3rdparty/expat/tests/structdata.h @@ -0,0 +1,70 @@ +/* Interface to some helper routines used to accumulate and check + structured content. + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef XML_STRUCTDATA_H +# define XML_STRUCTDATA_H 1 + +# include "expat.h" + +typedef struct { + const XML_Char *str; + int data0; + int data1; + int data2; +} StructDataEntry; + +typedef struct { + int count; /* Number of entries used */ + int max_count; /* Number of StructDataEntry items in `entries` */ + StructDataEntry *entries; +} StructData; + +void StructData_Init(StructData *storage); + +void StructData_AddItem(StructData *storage, const XML_Char *s, int data0, + int data1, int data2); + +void StructData_CheckItems(StructData *storage, const StructDataEntry *expected, + int count); + +void StructData_Dispose(StructData *storage); + +#endif /* XML_STRUCTDATA_H */ + +#ifdef __cplusplus +} +#endif diff --git a/3rdparty/expat/tests/udiffer.py b/3rdparty/expat/tests/udiffer.py new file mode 100755 index 0000000..6fb91be --- /dev/null +++ b/3rdparty/expat/tests/udiffer.py @@ -0,0 +1,62 @@ +#! /usr/bin/env python3 +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +import argparse +import difflib +import sys + + +def _read_lines(filename): + try: + with open(filename) as f: + return f.readlines() + except UnicodeDecodeError: + with open(filename, encoding='utf_16') as f: + return f.readlines() + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('first', metavar='FILE') + parser.add_argument('second', metavar='FILE') + config = parser.parse_args() + + first = _read_lines(config.first) + second = _read_lines(config.second) + + diffs = list(difflib.unified_diff(first, second, fromfile=config.first, + tofile=config.second)) + if diffs: + sys.stdout.writelines(diffs) + sys.exit(1) + + +if __name__ == '__main__': + main() diff --git a/3rdparty/expat/tests/xmltest.log.expected b/3rdparty/expat/tests/xmltest.log.expected new file mode 100644 index 0000000..032f546 --- /dev/null +++ b/3rdparty/expat/tests/xmltest.log.expected @@ -0,0 +1,10 @@ +Output differs: ibm/valid/P02/ibm02v01.xml +ibm49i02.dtd: No such file or directory +Expected not well-formed: ibm/not-wf/misc/432gewf.xml +Expected not well-formed: xmltest/not-wf/not-sa/005.xml +Expected not well-formed: sun/not-wf/uri01.xml +Expected not well-formed: oasis/p06fail1.xml +Expected not well-formed: oasis/p08fail1.xml +Expected not well-formed: oasis/p08fail2.xml +Passed: 1801 +Failed: 8 diff --git a/3rdparty/expat/tests/xmltest.sh b/3rdparty/expat/tests/xmltest.sh new file mode 100755 index 0000000..9b50035 --- /dev/null +++ b/3rdparty/expat/tests/xmltest.sh @@ -0,0 +1,142 @@ +#! /usr/bin/env bash + +# EXPAT TEST SCRIPT FOR W3C XML TEST SUITE + +# This script can be used to exercise Expat against the +# w3c.org xml test suite, available from +# http://www.w3.org/XML/Test/xmlts20020606.zip. + +# To run this script, first set XMLWF below so that xmlwf can be +# found, then set the output directory with OUTPUT. + +# The script lists all test cases where Expat shows a discrepancy +# from the expected result. Test cases where only the canonical +# output differs are prefixed with "Output differs:", and a diff file +# is generated in the appropriate subdirectory under $OUTPUT. + +# If there are output files provided, the script will use +# output from xmlwf and compare the desired output against it. +# However, one has to take into account that the canonical output +# produced by xmlwf conforms to an older definition of canonical XML +# and does not generate notation declarations. + +shopt -s nullglob + +# Note: OUTPUT must terminate with the directory separator. +OUTPUT="$PWD/tests/out/" +TS="$PWD/tests/" + +MYDIR="`dirname \"$0\"`" +cd "$MYDIR" +MYDIR="`pwd`" +XMLWF="${1:-`dirname \"$MYDIR\"`/xmlwf/xmlwf}" +# Unicode-aware diff utility +DIFF="${MYDIR}/udiffer.py" + + +# RunXmlwfNotWF file reldir +# reldir includes trailing slash +RunXmlwfNotWF() { + file="$1" + reldir="$2" + if $XMLWF -p "$file" > /dev/null; then + echo "Expected not well-formed: $reldir$file" + return 1 + else + return 0 + fi +} + +# RunXmlwfWF file reldir +# reldir includes trailing slash +RunXmlwfWF() { + file="$1" + reldir="$2" + $XMLWF -p -N -d "$OUTPUT$reldir" "$file" > outfile || return $? + read outdata < outfile + if test "$outdata" = "" ; then + if [ -f "out/$file" ] ; then + $DIFF "$OUTPUT$reldir$file" "out/$file" > outfile + if [ -s outfile ] ; then + cp outfile "$OUTPUT$reldir$file.diff" + echo "Output differs: $reldir$file" + return 1 + fi + fi + return 0 + else + echo "In $reldir: $outdata" + return 1 + fi +} + +SUCCESS=0 +ERROR=0 + +UpdateStatus() { + if [ "$1" -eq 0 ] ; then + SUCCESS=`expr $SUCCESS + 1` + else + ERROR=`expr $ERROR + 1` + fi +} + +########################## +# well-formed test cases # +########################## + +cd "$TS/xmlconf" +for xmldir in ibm/valid/P* \ + ibm/invalid/P* \ + xmltest/valid/ext-sa \ + xmltest/valid/not-sa \ + xmltest/invalid \ + xmltest/invalid/not-sa \ + xmltest/valid/sa \ + sun/valid \ + sun/invalid ; do + cd "$TS/xmlconf/$xmldir" + mkdir -p "$OUTPUT$xmldir" + for xmlfile in $(ls -1 *.xml | sort -d) ; do + [[ -f "$xmlfile" ]] || continue + RunXmlwfWF "$xmlfile" "$xmldir/" + UpdateStatus $? + done + rm -f outfile +done + +cd "$TS/xmlconf/oasis" +mkdir -p "$OUTPUT"oasis +for xmlfile in *pass*.xml ; do + RunXmlwfWF "$xmlfile" "oasis/" + UpdateStatus $? +done +rm outfile + +############################## +# not well-formed test cases # +############################## + +cd "$TS/xmlconf" +for xmldir in ibm/not-wf/P* \ + ibm/not-wf/p28a \ + ibm/not-wf/misc \ + xmltest/not-wf/ext-sa \ + xmltest/not-wf/not-sa \ + xmltest/not-wf/sa \ + sun/not-wf ; do + cd "$TS/xmlconf/$xmldir" + for xmlfile in *.xml ; do + RunXmlwfNotWF "$xmlfile" "$xmldir/" + UpdateStatus $? + done +done + +cd "$TS/xmlconf/oasis" +for xmlfile in *fail*.xml ; do + RunXmlwfNotWF "$xmlfile" "oasis/" + UpdateStatus $? +done + +echo "Passed: $SUCCESS" +echo "Failed: $ERROR" diff --git a/3rdparty/expat/win32/MANIFEST.txt b/3rdparty/expat/win32/MANIFEST.txt new file mode 100644 index 0000000..58201fa --- /dev/null +++ b/3rdparty/expat/win32/MANIFEST.txt @@ -0,0 +1,25 @@ + Overview of the Expat distribution + +The Expat distribution creates several subdirectories on your system. +Some of these directories contain components of interest to all Expat +users, and some contain material of interest to developers who wish to +use Expat in their applications. In the list below, is the +directory you specified to the installer. + + Directory Contents + --------------------------------------------------------------------- + \ Some general information files. + + \Doc\ API documentation for developers. + + \Bin\ Pre-compiled dynamic libraries for developers. + Pre-compiled static libraries for developers (*MT.lib). + The XML well-formedness checker xmlwf. + + \Source\ Source code, which may interest some developers, + including a workspace for Microsoft Visual C++. + The source code includes the parser, the well- + formedness checker, and a couple of small sample + applications. + + diff --git a/3rdparty/expat/win32/README.txt b/3rdparty/expat/win32/README.txt new file mode 100644 index 0000000..d1069cd --- /dev/null +++ b/3rdparty/expat/win32/README.txt @@ -0,0 +1,60 @@ + +Expat can be built on Windows in two ways: + using MS Visual Studio .NET or Cygwin. + +* Cygwin: + This follows the Unix build procedures. + +* MS Visual Studio 2008, 2010, 2013, 2015 and 2017: + Use CMake to generate a solution file for Visual Studio, then use msbuild + to compile. For example: + + md build + cd build + cmake -G"Visual Studio 15 2017" -DCMAKE_BUILD_TYPE=RelWithDebInfo .. + msbuild /m expat.sln + +* All MS C/C++ compilers: + The output for all projects will be generated in the \ + and xmlwf\\ directories. + +* Creating MinGW dynamic libraries from MS VC++ DLLs: + + On the command line, execute these steps: + pexports libexpat.dll > expat.def + pexports libexpatw.dll > expatw.def + dlltool -d expat.def -l libexpat.a + dlltool -d expatw.def -l libexpatw.a + + The *.a files are mingw libraries. + +* Special note about MS VC++ and runtime libraries: + + There are three possible configurations: using the + single threaded or multithreaded run-time library, + or using the multi-threaded run-time Dll. That is, + one can build three different Expat libraries depending + on the needs of the application. + + Dynamic Linking: + + By default the Expat Dlls are built to link dynamically + with the multi-threaded run-time library. + The libraries are named + - libexpat(w).dll + - libexpat(w).lib (import library) + The "w" indicates the UTF-16 version of the library. + + Versions that are statically linking with the multi-threaded run-time library + can be built with -DEXPAT_MSVC_STATIC_CRT=ON. + + Static Linking: (through -DEXPAT_SHARED_LIBS=OFF) + + The libraries should be named like this: + Multi-threaded: libexpat(w)MT.lib + Multi-threaded Dll: libexpat(w)MD.lib + The suffixes conform to the compiler switch settings + /MT and /MD for MS VC++. + + An application linking to the static libraries must + have the global macro XML_STATIC defined. diff --git a/3rdparty/expat/win32/build_expat_iss.bat b/3rdparty/expat/win32/build_expat_iss.bat new file mode 100644 index 0000000..2eb3b72 --- /dev/null +++ b/3rdparty/expat/win32/build_expat_iss.bat @@ -0,0 +1,84 @@ +REM Batch script to build Inno Setup installer for libexpat for Windows +REM Call from parent directory, e.g.: cmd /c win32\build_expat_iss.bat +REM __ __ _ +REM ___\ \/ /_ __ __ _| |_ +REM / _ \\ /| '_ \ / _` | __| +REM | __// \| |_) | (_| | |_ +REM \___/_/\_\ .__/ \__,_|\__| +REM |_| XML parser +REM +REM Copyright (C) 2019 Expat development team +REM Licensed under the MIT license: +REM +REM Permission is hereby granted, free of charge, to any person obtaining +REM a copy of this software and associated documentation files (the +REM "Software"), to deal in the Software without restriction, including +REM without limitation the rights to use, copy, modify, merge, publish, +REM distribute, sublicense, and/or sell copies of the Software, and to permit +REM persons to whom the Software is furnished to do so, subject to the +REM following conditions: +REM +REM The above copyright notice and this permission notice shall be included +REM in all copies or substantial portions of the Software. +REM +REM THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +REM EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +REM MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +REM NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +REM DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +REM OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +REM USE OR OTHER DEALINGS IN THE SOFTWARE. + +SET GENERATOR=Visual Studio 15 2017 + +REM Read by msbuild! +SET CONFIGURATION=RelWithDebInfo + +REM Where Inno Setup expects build results +SET BINDIR=win32\bin\Release + + +MD %BINDIR% || EXIT /b 1 + + +MD build_shared_char || EXIT /b 1 +CD build_shared_char || EXIT /b 1 + cmake -G"%GENERATOR%" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DEXPAT_MSVC_STATIC_CRT=ON -DEXPAT_BUILD_EXAMPLES=OFF -DEXPAT_BUILD_TESTS=OFF -DEXPAT_BUILD_TOOLS=OFF .. || EXIT /b 1 + msbuild /m expat.sln || EXIT /b 1 + DIR %CONFIGURATION% || EXIT /b 1 + CD .. || EXIT /b 1 +COPY build_shared_char\%CONFIGURATION%\libexpat.dll %BINDIR%\ || EXIT /b 1 +COPY build_shared_char\%CONFIGURATION%\libexpat.lib %BINDIR%\ || EXIT /b 1 + + +MD build_static_char || EXIT /b 1 +CD build_static_char || EXIT /b 1 + cmake -G"%GENERATOR%" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DEXPAT_MSVC_STATIC_CRT=ON -DEXPAT_BUILD_EXAMPLES=OFF -DEXPAT_BUILD_TESTS=OFF -DEXPAT_SHARED_LIBS=OFF .. || EXIT /b 1 + msbuild /m expat.sln || EXIT /b 1 + DIR %CONFIGURATION% || EXIT /b 1 + CD .. || EXIT /b 1 +COPY build_static_char\%CONFIGURATION%\libexpatMT.lib %BINDIR%\ || EXIT /b 1 +COPY build_static_char\xmlwf\%CONFIGURATION%\xmlwf.exe %BINDIR%\ || EXIT /b 1 + + +MD build_shared_wchar_t || EXIT /b 1 +CD build_shared_wchar_t || EXIT /b 1 + cmake -G"%GENERATOR%" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DEXPAT_MSVC_STATIC_CRT=ON -DEXPAT_BUILD_EXAMPLES=OFF -DEXPAT_BUILD_TESTS=OFF -DEXPAT_BUILD_TOOLS=OFF -DEXPAT_CHAR_TYPE=wchar_t .. || EXIT /b 1 + msbuild /m expat.sln || EXIT /b 1 + DIR %CONFIGURATION% || EXIT /b 1 + CD .. || EXIT /b 1 +COPY build_shared_wchar_t\%CONFIGURATION%\libexpatw.dll %BINDIR%\ || EXIT /b 1 +COPY build_shared_wchar_t\%CONFIGURATION%\libexpatw.lib %BINDIR%\ || EXIT /b 1 + + +MD build_static_wchar_t || EXIT /b 1 +CD build_static_wchar_t || EXIT /b 1 + cmake -G"%GENERATOR%" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DEXPAT_MSVC_STATIC_CRT=ON -DEXPAT_BUILD_EXAMPLES=OFF -DEXPAT_BUILD_TESTS=OFF -DEXPAT_BUILD_TOOLS=OFF -DEXPAT_SHARED_LIBS=OFF -DEXPAT_CHAR_TYPE=wchar_t .. || EXIT /b 1 + msbuild /m expat.sln || EXIT /b 1 + DIR %CONFIGURATION% || EXIT /b 1 + CD .. || EXIT /b 1 +COPY build_static_wchar_t\%CONFIGURATION%\libexpatwMT.lib %BINDIR%\ || EXIT /b 1 + + +DIR %BINDIR% || EXIT /b 1 +iscc win32\expat.iss || EXIT /b 1 diff --git a/3rdparty/expat/win32/expat.iss b/3rdparty/expat/win32/expat.iss new file mode 100644 index 0000000..ef95f17 --- /dev/null +++ b/3rdparty/expat/win32/expat.iss @@ -0,0 +1,69 @@ +; Basic setup script for the Inno Setup installer builder. For more +; information on the free installer builder, see www.jrsoftware.org. +; +; This script was contributed by Tim Peters. +; It was designed for Inno Setup 2.0.19 but works with later versions as well. + +#define expatVer "2.2.10" + +[Setup] +AppName=Expat +AppId=expat +AppVersion={#expatVer} +AppVerName=Expat {#expatVer} +AppCopyright=Copyright © 1998-2017 Thai Open Source Software Center, Clark Cooper, and the Expat maintainers +AppPublisher=The Expat Developers +AppPublisherURL=http://www.libexpat.org/ +AppSupportURL=http://www.libexpat.org/ +AppUpdatesURL=http://www.libexpat.org/ +UninstallDisplayName=Expat XML Parser {#expatVer} +VersionInfoVersion={#expatVer} +OutputBaseFilename=expat-win32bin-{#expatVer} + +DefaultDirName={pf}\Expat {#expatVer} +UninstallFilesDir={app}\Uninstall + +Compression=lzma +SolidCompression=yes +SourceDir=.. +OutputDir=win32 +DisableStartupPrompt=yes +AllowNoIcons=yes +DisableProgramGroupPage=yes +DisableReadyPage=yes + +[Files] +Flags: ignoreversion; Source: win32\bin\Release\xmlwf.exe; DestDir: "{app}\Bin" +Flags: ignoreversion; Source: win32\MANIFEST.txt; DestDir: "{app}" +Flags: ignoreversion; Source: AUTHORS; DestDir: "{app}"; DestName: AUTHORS.txt +Flags: ignoreversion; Source: Changes; DestDir: "{app}"; DestName: Changes.txt +Flags: ignoreversion; Source: COPYING; DestDir: "{app}"; DestName: COPYING.txt +Flags: ignoreversion; Source: README.md; DestDir: "{app}"; DestName: README.txt +Flags: ignoreversion; Source: doc\*.html; DestDir: "{app}\Doc" +Flags: ignoreversion; Source: doc\*.css; DestDir: "{app}\Doc" +Flags: ignoreversion; Source: doc\*.png; DestDir: "{app}\Doc" +Flags: ignoreversion; Source: win32\bin\Release\*.dll; DestDir: "{app}\Bin" +Flags: ignoreversion; Source: win32\bin\Release\*.lib; DestDir: "{app}\Bin" +Flags: ignoreversion; Source: win32\README.txt; DestDir: "{app}\Source" +Flags: ignoreversion; Source: Changes; DestDir: "{app}\Source" +Flags: ignoreversion; Source: CMake.README; DestDir: "{app}\Source" +Flags: ignoreversion; Source: CMakeLists.txt; DestDir: "{app}\Source" +Flags: ignoreversion; Source: ConfigureChecks.cmake; DestDir: "{app}\Source" +Flags: ignoreversion; Source: expat_config.h.cmake; DestDir: "{app}\Source" +Flags: ignoreversion; Source: cmake\expat-config.cmake.in; DestDir: "{app}\Source\cmake" +Flags: ignoreversion; Source: lib\*.c; DestDir: "{app}\Source\lib" +Flags: ignoreversion; Source: lib\*.h; DestDir: "{app}\Source\lib" +Flags: ignoreversion; Source: lib\*.def; DestDir: "{app}\Source\lib" +Flags: ignoreversion; Source: examples\*.c; DestDir: "{app}\Source\examples" +Flags: ignoreversion; Source: tests\*.c; DestDir: "{app}\Source\tests" +Flags: ignoreversion; Source: tests\*.cpp; DestDir: "{app}\Source\tests" +Flags: ignoreversion; Source: tests\*.h; DestDir: "{app}\Source\tests" +Flags: ignoreversion; Source: tests\README.txt; DestDir: "{app}\Source\tests" +Flags: ignoreversion; Source: tests\benchmark\*.c; DestDir: "{app}\Source\tests\benchmark" +Flags: ignoreversion; Source: tests\benchmark\README.txt; DestDir: "{app}\Source\tests\benchmark" +Flags: ignoreversion; Source: xmlwf\*.c*; DestDir: "{app}\Source\xmlwf" +Flags: ignoreversion; Source: xmlwf\*.h; DestDir: "{app}\Source\xmlwf" + +[Messages] +WelcomeLabel1=Welcome to the Expat XML Parser Setup Wizard +WelcomeLabel2=This will install [name/ver] on your computer.%n%nExpat is an XML parser with a C-language API, and is primarily made available to allow developers to build applications which use XML using a portable API and fast implementation.%n%nIt is strongly recommended that you close all other applications you have running before continuing. This will help prevent any conflicts during the installation process. diff --git a/3rdparty/expat/xmlwf/Makefile.am b/3rdparty/expat/xmlwf/Makefile.am new file mode 100644 index 0000000..f35ade7 --- /dev/null +++ b/3rdparty/expat/xmlwf/Makefile.am @@ -0,0 +1,60 @@ +# +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +bin_PROGRAMS = xmlwf + +xmlwf_LDADD = ../lib/libexpat.la +xmlwf_SOURCES = \ + xmlwf.c \ + xmlfile.c \ + codepage.c \ + @FILEMAP@.c + +xmlwf_CPPFLAGS = @AM_CPPFLAGS@ -I$(srcdir)/../lib +xmlwf_LDFLAGS = @AM_LDFLAGS@ + +if MINGW +if UNICODE +xmlwf_CPPFLAGS += -mwindows +xmlwf_LDFLAGS += -municode +endif +endif + +EXTRA_DIST = \ + codepage.h \ + ct.c \ + filemap.h \ + readfilemap.c \ + unixfilemap.c \ + win32filemap.c \ + xmlfile.h \ + xmlmime.c \ + xmlmime.h \ + xmltchar.h diff --git a/3rdparty/expat/xmlwf/Makefile.in b/3rdparty/expat/xmlwf/Makefile.in new file mode 100644 index 0000000..531475a --- /dev/null +++ b/3rdparty/expat/xmlwf/Makefile.in @@ -0,0 +1,783 @@ +# Makefile.in generated by automake 1.16.2 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2020 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2017 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = xmlwf$(EXEEXT) +@MINGW_TRUE@@UNICODE_TRUE@am__append_1 = -mwindows +@MINGW_TRUE@@UNICODE_TRUE@am__append_2 = -municode +subdir = xmlwf +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/conftools/ax-require-defined.m4 \ + $(top_srcdir)/conftools/ax-check-compile-flag.m4 \ + $(top_srcdir)/conftools/ax-check-link-flag.m4 \ + $(top_srcdir)/conftools/ax-append-flag.m4 \ + $(top_srcdir)/conftools/ax-append-compile-flags.m4 \ + $(top_srcdir)/conftools/ax-append-link-flags.m4 \ + $(top_srcdir)/conftools/expatcfg-compiler-supports-visibility.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/expat_config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am_xmlwf_OBJECTS = xmlwf-xmlwf.$(OBJEXT) xmlwf-xmlfile.$(OBJEXT) \ + xmlwf-codepage.$(OBJEXT) xmlwf-@FILEMAP@.$(OBJEXT) +xmlwf_OBJECTS = $(am_xmlwf_OBJECTS) +xmlwf_DEPENDENCIES = ../lib/libexpat.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +xmlwf_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(xmlwf_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/conftools/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/xmlwf-@FILEMAP@.Po \ + ./$(DEPDIR)/xmlwf-codepage.Po ./$(DEPDIR)/xmlwf-xmlfile.Po \ + ./$(DEPDIR)/xmlwf-xmlwf.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(xmlwf_SOURCES) +DIST_SOURCES = $(xmlwf_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/conftools/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CPPFLAGS = @AM_CPPFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILEMAP = @FILEMAP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBAGE = @LIBAGE@ +LIBCURRENT = @LIBCURRENT@ +LIBOBJS = @LIBOBJS@ +LIBREVISION = @LIBREVISION@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +_EXPAT_OUTPUT_NAME = @_EXPAT_OUTPUT_NAME@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +xmlwf_LDADD = ../lib/libexpat.la +xmlwf_SOURCES = \ + xmlwf.c \ + xmlfile.c \ + codepage.c \ + @FILEMAP@.c + +xmlwf_CPPFLAGS = @AM_CPPFLAGS@ -I$(srcdir)/../lib $(am__append_1) +xmlwf_LDFLAGS = @AM_LDFLAGS@ $(am__append_2) +EXTRA_DIST = \ + codepage.h \ + ct.c \ + filemap.h \ + readfilemap.c \ + unixfilemap.c \ + win32filemap.c \ + xmlfile.h \ + xmlmime.c \ + xmlmime.h \ + xmltchar.h + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu xmlwf/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu xmlwf/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +xmlwf$(EXEEXT): $(xmlwf_OBJECTS) $(xmlwf_DEPENDENCIES) $(EXTRA_xmlwf_DEPENDENCIES) + @rm -f xmlwf$(EXEEXT) + $(AM_V_CCLD)$(xmlwf_LINK) $(xmlwf_OBJECTS) $(xmlwf_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlwf-@FILEMAP@.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlwf-codepage.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlwf-xmlfile.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlwf-xmlwf.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +xmlwf-xmlwf.o: xmlwf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xmlwf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xmlwf-xmlwf.o -MD -MP -MF $(DEPDIR)/xmlwf-xmlwf.Tpo -c -o xmlwf-xmlwf.o `test -f 'xmlwf.c' || echo '$(srcdir)/'`xmlwf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/xmlwf-xmlwf.Tpo $(DEPDIR)/xmlwf-xmlwf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xmlwf.c' object='xmlwf-xmlwf.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) $(xmlwf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xmlwf-xmlwf.o `test -f 'xmlwf.c' || echo '$(srcdir)/'`xmlwf.c + +xmlwf-xmlwf.obj: xmlwf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xmlwf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xmlwf-xmlwf.obj -MD -MP -MF $(DEPDIR)/xmlwf-xmlwf.Tpo -c -o xmlwf-xmlwf.obj `if test -f 'xmlwf.c'; then $(CYGPATH_W) 'xmlwf.c'; else $(CYGPATH_W) '$(srcdir)/xmlwf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/xmlwf-xmlwf.Tpo $(DEPDIR)/xmlwf-xmlwf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xmlwf.c' object='xmlwf-xmlwf.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) $(xmlwf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xmlwf-xmlwf.obj `if test -f 'xmlwf.c'; then $(CYGPATH_W) 'xmlwf.c'; else $(CYGPATH_W) '$(srcdir)/xmlwf.c'; fi` + +xmlwf-xmlfile.o: xmlfile.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xmlwf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xmlwf-xmlfile.o -MD -MP -MF $(DEPDIR)/xmlwf-xmlfile.Tpo -c -o xmlwf-xmlfile.o `test -f 'xmlfile.c' || echo '$(srcdir)/'`xmlfile.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/xmlwf-xmlfile.Tpo $(DEPDIR)/xmlwf-xmlfile.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xmlfile.c' object='xmlwf-xmlfile.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) $(xmlwf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xmlwf-xmlfile.o `test -f 'xmlfile.c' || echo '$(srcdir)/'`xmlfile.c + +xmlwf-xmlfile.obj: xmlfile.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xmlwf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xmlwf-xmlfile.obj -MD -MP -MF $(DEPDIR)/xmlwf-xmlfile.Tpo -c -o xmlwf-xmlfile.obj `if test -f 'xmlfile.c'; then $(CYGPATH_W) 'xmlfile.c'; else $(CYGPATH_W) '$(srcdir)/xmlfile.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/xmlwf-xmlfile.Tpo $(DEPDIR)/xmlwf-xmlfile.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xmlfile.c' object='xmlwf-xmlfile.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) $(xmlwf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xmlwf-xmlfile.obj `if test -f 'xmlfile.c'; then $(CYGPATH_W) 'xmlfile.c'; else $(CYGPATH_W) '$(srcdir)/xmlfile.c'; fi` + +xmlwf-codepage.o: codepage.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xmlwf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xmlwf-codepage.o -MD -MP -MF $(DEPDIR)/xmlwf-codepage.Tpo -c -o xmlwf-codepage.o `test -f 'codepage.c' || echo '$(srcdir)/'`codepage.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/xmlwf-codepage.Tpo $(DEPDIR)/xmlwf-codepage.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='codepage.c' object='xmlwf-codepage.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) $(xmlwf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xmlwf-codepage.o `test -f 'codepage.c' || echo '$(srcdir)/'`codepage.c + +xmlwf-codepage.obj: codepage.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xmlwf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xmlwf-codepage.obj -MD -MP -MF $(DEPDIR)/xmlwf-codepage.Tpo -c -o xmlwf-codepage.obj `if test -f 'codepage.c'; then $(CYGPATH_W) 'codepage.c'; else $(CYGPATH_W) '$(srcdir)/codepage.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/xmlwf-codepage.Tpo $(DEPDIR)/xmlwf-codepage.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='codepage.c' object='xmlwf-codepage.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) $(xmlwf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xmlwf-codepage.obj `if test -f 'codepage.c'; then $(CYGPATH_W) 'codepage.c'; else $(CYGPATH_W) '$(srcdir)/codepage.c'; fi` + +xmlwf-@FILEMAP@.o: @FILEMAP@.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xmlwf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xmlwf-@FILEMAP@.o -MD -MP -MF $(DEPDIR)/xmlwf-@FILEMAP@.Tpo -c -o xmlwf-@FILEMAP@.o `test -f '@FILEMAP@.c' || echo '$(srcdir)/'`@FILEMAP@.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/xmlwf-@FILEMAP@.Tpo $(DEPDIR)/xmlwf-@FILEMAP@.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='@FILEMAP@.c' object='xmlwf-@FILEMAP@.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) $(xmlwf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xmlwf-@FILEMAP@.o `test -f '@FILEMAP@.c' || echo '$(srcdir)/'`@FILEMAP@.c + +xmlwf-@FILEMAP@.obj: @FILEMAP@.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xmlwf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xmlwf-@FILEMAP@.obj -MD -MP -MF $(DEPDIR)/xmlwf-@FILEMAP@.Tpo -c -o xmlwf-@FILEMAP@.obj `if test -f '@FILEMAP@.c'; then $(CYGPATH_W) '@FILEMAP@.c'; else $(CYGPATH_W) '$(srcdir)/@FILEMAP@.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/xmlwf-@FILEMAP@.Tpo $(DEPDIR)/xmlwf-@FILEMAP@.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='@FILEMAP@.c' object='xmlwf-@FILEMAP@.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) $(xmlwf_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xmlwf-@FILEMAP@.obj `if test -f '@FILEMAP@.c'; then $(CYGPATH_W) '@FILEMAP@.c'; else $(CYGPATH_W) '$(srcdir)/@FILEMAP@.c'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/xmlwf-@FILEMAP@.Po + -rm -f ./$(DEPDIR)/xmlwf-codepage.Po + -rm -f ./$(DEPDIR)/xmlwf-xmlfile.Po + -rm -f ./$(DEPDIR)/xmlwf-xmlwf.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/xmlwf-@FILEMAP@.Po + -rm -f ./$(DEPDIR)/xmlwf-codepage.Po + -rm -f ./$(DEPDIR)/xmlwf-xmlfile.Po + -rm -f ./$(DEPDIR)/xmlwf-xmlwf.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-binPROGRAMS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/3rdparty/expat/xmlwf/codepage.c b/3rdparty/expat/xmlwf/codepage.c new file mode 100644 index 0000000..44d2035 --- /dev/null +++ b/3rdparty/expat/xmlwf/codepage.c @@ -0,0 +1,94 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "codepage.h" +#include "internal.h" /* for UNUSED_P only */ + +#if defined(_WIN32) +# define STRICT 1 +# define WIN32_LEAN_AND_MEAN 1 + +# include +#endif /* defined(_WIN32) */ + +int +codepageMap(int cp, int *map) { +#if defined(_WIN32) + int i; + CPINFO info; + if (! GetCPInfo(cp, &info) || info.MaxCharSize > 2) + return 0; + for (i = 0; i < 256; i++) + map[i] = -1; + if (info.MaxCharSize > 1) { + for (i = 0; i < MAX_LEADBYTES; i += 2) { + int j, lim; + if (info.LeadByte[i] == 0 && info.LeadByte[i + 1] == 0) + break; + lim = info.LeadByte[i + 1]; + for (j = info.LeadByte[i]; j <= lim; j++) + map[j] = -2; + } + } + for (i = 0; i < 256; i++) { + if (map[i] == -1) { + char c = (char)i; + unsigned short n; + if (MultiByteToWideChar(cp, MB_PRECOMPOSED | MB_ERR_INVALID_CHARS, &c, 1, + &n, 1) + == 1) + map[i] = n; + } + } + return 1; +#else + UNUSED_P(cp); + UNUSED_P(map); + return 0; +#endif +} + +int +codepageConvert(int cp, const char *p) { +#if defined(_WIN32) + unsigned short c; + if (MultiByteToWideChar(cp, MB_PRECOMPOSED | MB_ERR_INVALID_CHARS, p, 2, &c, + 1) + == 1) + return c; + return -1; +#else + UNUSED_P(cp); + UNUSED_P(p); + return -1; +#endif +} diff --git a/3rdparty/expat/xmlwf/codepage.h b/3rdparty/expat/xmlwf/codepage.h new file mode 100644 index 0000000..1b75d58 --- /dev/null +++ b/3rdparty/expat/xmlwf/codepage.h @@ -0,0 +1,34 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +int codepageMap(int cp, int *map); +int codepageConvert(int cp, const char *p); diff --git a/3rdparty/expat/xmlwf/ct.c b/3rdparty/expat/xmlwf/ct.c new file mode 100644 index 0000000..dcf92ba --- /dev/null +++ b/3rdparty/expat/xmlwf/ct.c @@ -0,0 +1,173 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#define CHARSET_MAX 41 + +static const char * +getTok(const char **pp) { + enum { inAtom, inString, init, inComment }; + int state = init; + const char *tokStart = 0; + for (;;) { + switch (**pp) { + case '\0': + return 0; + case ' ': + case '\r': + case '\t': + case '\n': + if (state == inAtom) + return tokStart; + break; + case '(': + if (state == inAtom) + return tokStart; + if (state != inString) + state++; + break; + case ')': + if (state > init) + --state; + else if (state != inString) + return 0; + break; + case ';': + case '/': + case '=': + if (state == inAtom) + return tokStart; + if (state == init) + return (*pp)++; + break; + case '\\': + ++*pp; + if (**pp == '\0') + return 0; + break; + case '"': + switch (state) { + case inString: + ++*pp; + return tokStart; + case inAtom: + return tokStart; + case init: + tokStart = *pp; + state = inString; + break; + } + break; + default: + if (state == init) { + tokStart = *pp; + state = inAtom; + } + break; + } + ++*pp; + } + /* not reached */ +} + +/* key must be lowercase ASCII */ + +static int +matchkey(const char *start, const char *end, const char *key) { + if (! start) + return 0; + for (; start != end; start++, key++) + if (*start != *key && *start != 'A' + (*key - 'a')) + return 0; + return *key == '\0'; +} + +void +getXMLCharset(const char *buf, char *charset) { + const char *next, *p; + + charset[0] = '\0'; + next = buf; + p = getTok(&next); + if (matchkey(p, next, "text")) + strcpy(charset, "us-ascii"); + else if (! matchkey(p, next, "application")) + return; + p = getTok(&next); + if (! p || *p != '/') + return; + p = getTok(&next); + if (matchkey(p, next, "xml")) + isXml = 1; + p = getTok(&next); + while (p) { + if (*p == ';') { + p = getTok(&next); + if (matchkey(p, next, "charset")) { + p = getTok(&next); + if (p && *p == '=') { + p = getTok(&next); + if (p) { + char *s = charset; + if (*p == '"') { + while (++p != next - 1) { + if (*p == '\\') + ++p; + if (s == charset + CHARSET_MAX - 1) { + charset[0] = '\0'; + break; + } + *s++ = *p; + } + *s++ = '\0'; + } else { + if (next - p > CHARSET_MAX - 1) + break; + while (p != next) + *s++ = *p++; + *s = 0; + break; + } + } + } + } + } else + p = getTok(&next); + } +} + +int +main(int argc, char **argv) { + char buf[CHARSET_MAX]; + getXMLCharset(argv[1], buf); + printf("charset = \"%s\"\n", buf); + return 0; +} diff --git a/3rdparty/expat/xmlwf/filemap.h b/3rdparty/expat/xmlwf/filemap.h new file mode 100644 index 0000000..ef66114 --- /dev/null +++ b/3rdparty/expat/xmlwf/filemap.h @@ -0,0 +1,53 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include /* INT_MAX */ +#include + +/* The following limit (for XML_Parse's int len) derives from + * this loop in xmparse.c: + * + * do { + * bufferSize = (int) (2U * (unsigned) bufferSize); + * } while (bufferSize < neededSize && bufferSize > 0); + */ +#define XML_MAX_CHUNK_LEN (INT_MAX / 2 + 1) + +#ifdef XML_UNICODE +int filemap(const wchar_t *name, + void (*processor)(const void *, size_t, const wchar_t *, void *arg), + void *arg); +#else +int filemap(const char *name, + void (*processor)(const void *, size_t, const char *, void *arg), + void *arg); +#endif diff --git a/3rdparty/expat/xmlwf/readfilemap.c b/3rdparty/expat/xmlwf/readfilemap.c new file mode 100644 index 0000000..d5b84f9 --- /dev/null +++ b/3rdparty/expat/xmlwf/readfilemap.c @@ -0,0 +1,140 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include +#include +#include +#include +#include + +/* Functions close(2) and read(2) */ +#if ! defined(_WIN32) && ! defined(_WIN64) +# include +#endif + +/* Function "read": */ +#if defined(_MSC_VER) +# include +/* https://msdn.microsoft.com/en-us/library/wyssk1bs(v=vs.100).aspx */ +# define _EXPAT_read _read +# define _EXPAT_read_count_t int +# define _EXPAT_read_req_t unsigned int +#else /* POSIX */ +/* http://pubs.opengroup.org/onlinepubs/009695399/functions/read.html */ +# define _EXPAT_read read +# define _EXPAT_read_count_t ssize_t +# define _EXPAT_read_req_t size_t +#endif + +#ifndef S_ISREG +# ifndef S_IFREG +# define S_IFREG _S_IFREG +# endif +# ifndef S_IFMT +# define S_IFMT _S_IFMT +# endif +# define S_ISREG(m) (((m)&S_IFMT) == S_IFREG) +#endif /* not S_ISREG */ + +#ifndef O_BINARY +# ifdef _O_BINARY +# define O_BINARY _O_BINARY +# else +# define O_BINARY 0 +# endif +#endif + +#include "xmltchar.h" +#include "filemap.h" + +int +filemap(const tchar *name, + void (*processor)(const void *, size_t, const tchar *, void *arg), + void *arg) { + size_t nbytes; + int fd; + _EXPAT_read_count_t n; + struct stat sb; + void *p; + + fd = topen(name, O_RDONLY | O_BINARY); + if (fd < 0) { + tperror(name); + return 0; + } + if (fstat(fd, &sb) < 0) { + tperror(name); + close(fd); + return 0; + } + if (! S_ISREG(sb.st_mode)) { + ftprintf(stderr, T("%s: not a regular file\n"), name); + close(fd); + return 0; + } + if (sb.st_size > XML_MAX_CHUNK_LEN) { + close(fd); + return 2; /* Cannot be passed to XML_Parse in one go */ + } + + nbytes = sb.st_size; + /* malloc will return NULL with nbytes == 0, handle files with size 0 */ + if (nbytes == 0) { + static const char c = '\0'; + processor(&c, 0, name, arg); + close(fd); + return 1; + } + p = malloc(nbytes); + if (! p) { + ftprintf(stderr, T("%s: out of memory\n"), name); + close(fd); + return 0; + } + n = _EXPAT_read(fd, p, (_EXPAT_read_req_t)nbytes); + if (n < 0) { + tperror(name); + free(p); + close(fd); + return 0; + } + if (n != (_EXPAT_read_count_t)nbytes) { + ftprintf(stderr, T("%s: read unexpected number of bytes\n"), name); + free(p); + close(fd); + return 0; + } + processor(p, nbytes, name, arg); + free(p); + close(fd); + return 1; +} diff --git a/3rdparty/expat/xmlwf/unixfilemap.c b/3rdparty/expat/xmlwf/unixfilemap.c new file mode 100644 index 0000000..0d0dc04 --- /dev/null +++ b/3rdparty/expat/xmlwf/unixfilemap.c @@ -0,0 +1,103 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef MAP_FILE +# define MAP_FILE 0 +#endif + +#include "xmltchar.h" +#include "filemap.h" + +#ifdef XML_UNICODE_WCHAR_T +# define XML_FMT_STR "ls" +#else +# define XML_FMT_STR "s" +#endif + +int +filemap(const tchar *name, + void (*processor)(const void *, size_t, const tchar *, void *arg), + void *arg) { + int fd; + size_t nbytes; + struct stat sb; + void *p; + + fd = topen(name, O_RDONLY); + if (fd < 0) { + tperror(name); + return 0; + } + if (fstat(fd, &sb) < 0) { + tperror(name); + close(fd); + return 0; + } + if (! S_ISREG(sb.st_mode)) { + close(fd); + fprintf(stderr, "%" XML_FMT_STR ": not a regular file\n", name); + return 0; + } + if (sb.st_size > XML_MAX_CHUNK_LEN) { + close(fd); + return 2; /* Cannot be passed to XML_Parse in one go */ + } + + nbytes = sb.st_size; + /* mmap fails for zero length files */ + if (nbytes == 0) { + static const char c = '\0'; + processor(&c, 0, name, arg); + close(fd); + return 1; + } + p = (void *)mmap((void *)0, (size_t)nbytes, PROT_READ, MAP_FILE | MAP_PRIVATE, + fd, (off_t)0); + if (p == (void *)-1) { + tperror(name); + close(fd); + return 0; + } + processor(p, nbytes, name, arg); + munmap((void *)p, nbytes); + close(fd); + return 1; +} diff --git a/3rdparty/expat/xmlwf/win32filemap.c b/3rdparty/expat/xmlwf/win32filemap.c new file mode 100644 index 0000000..0c9b7ec --- /dev/null +++ b/3rdparty/expat/xmlwf/win32filemap.c @@ -0,0 +1,118 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#define STRICT 1 +#define WIN32_LEAN_AND_MEAN 1 + +#ifdef XML_UNICODE_WCHAR_T +# ifndef XML_UNICODE +# define XML_UNICODE +# endif +#endif + +#ifdef XML_UNICODE +# define UNICODE +# define _UNICODE +#endif /* XML_UNICODE */ +#include +#include +#include +#include "filemap.h" + +static void win32perror(const TCHAR *); + +int +filemap(const TCHAR *name, + void (*processor)(const void *, size_t, const TCHAR *, void *arg), + void *arg) { + HANDLE f; + HANDLE m; + DWORD size; + DWORD sizeHi; + void *p; + + f = CreateFile(name, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, + FILE_FLAG_SEQUENTIAL_SCAN, NULL); + if (f == INVALID_HANDLE_VALUE) { + win32perror(name); + return 0; + } + size = GetFileSize(f, &sizeHi); + if (size == (DWORD)-1) { + win32perror(name); + CloseHandle(f); + return 0; + } + if (sizeHi || (size > XML_MAX_CHUNK_LEN)) { + CloseHandle(f); + return 2; /* Cannot be passed to XML_Parse in one go */ + } + /* CreateFileMapping barfs on zero length files */ + if (size == 0) { + static const char c = '\0'; + processor(&c, 0, name, arg); + CloseHandle(f); + return 1; + } + m = CreateFileMapping(f, NULL, PAGE_READONLY, 0, 0, NULL); + if (m == NULL) { + win32perror(name); + CloseHandle(f); + return 0; + } + p = MapViewOfFile(m, FILE_MAP_READ, 0, 0, 0); + if (p == NULL) { + win32perror(name); + CloseHandle(m); + CloseHandle(f); + return 0; + } + processor(p, size, name, arg); + UnmapViewOfFile(p); + CloseHandle(m); + CloseHandle(f); + return 1; +} + +static void +win32perror(const TCHAR *s) { + LPVOID buf; + if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + NULL, GetLastError(), + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&buf, 0, + NULL)) { + _ftprintf(stderr, _T("%s: %s"), s, buf); + fflush(stderr); + LocalFree(buf); + } else + _ftprintf(stderr, _T("%s: unknown Windows error\n"), s); +} diff --git a/3rdparty/expat/xmlwf/xmlfile.c b/3rdparty/expat/xmlwf/xmlfile.c new file mode 100644 index 0000000..e3d22c5 --- /dev/null +++ b/3rdparty/expat/xmlwf/xmlfile.c @@ -0,0 +1,273 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include +#include +#include +#include +#include + +#ifdef _WIN32 +# include "winconfig.h" +#elif defined(HAVE_EXPAT_CONFIG_H) +# include +#endif /* ndef _WIN32 */ + +#include "expat.h" +#include "internal.h" /* for UNUSED_P only */ +#include "xmlfile.h" +#include "xmltchar.h" +#include "filemap.h" + +#if defined(_MSC_VER) +# include +#endif + +#ifdef HAVE_UNISTD_H +# include +#endif + +#ifndef O_BINARY +# ifdef _O_BINARY +# define O_BINARY _O_BINARY +# else +# define O_BINARY 0 +# endif +#endif + +#ifdef _DEBUG +# define READ_SIZE 16 +#else +# define READ_SIZE (1024 * 8) +#endif + +typedef struct { + XML_Parser parser; + int *retPtr; +} PROCESS_ARGS; + +static int processStream(const XML_Char *filename, XML_Parser parser); + +static void +reportError(XML_Parser parser, const XML_Char *filename) { + enum XML_Error code = XML_GetErrorCode(parser); + const XML_Char *message = XML_ErrorString(code); + if (message) + ftprintf(stdout, + T("%s") T(":%") T(XML_FMT_INT_MOD) T("u") T(":%") + T(XML_FMT_INT_MOD) T("u") T(": %s\n"), + filename, XML_GetErrorLineNumber(parser), + XML_GetErrorColumnNumber(parser), message); + else + ftprintf(stderr, T("%s: (unknown message %d)\n"), filename, code); +} + +/* This implementation will give problems on files larger than INT_MAX. */ +static void +processFile(const void *data, size_t size, const XML_Char *filename, + void *args) { + XML_Parser parser = ((PROCESS_ARGS *)args)->parser; + int *retPtr = ((PROCESS_ARGS *)args)->retPtr; + if (XML_Parse(parser, (const char *)data, (int)size, 1) == XML_STATUS_ERROR) { + reportError(parser, filename); + *retPtr = 0; + } else + *retPtr = 1; +} + +#if defined(_WIN32) + +static int +isAsciiLetter(XML_Char c) { + return (T('a') <= c && c <= T('z')) || (T('A') <= c && c <= T('Z')); +} + +#endif /* _WIN32 */ + +static const XML_Char * +resolveSystemId(const XML_Char *base, const XML_Char *systemId, + XML_Char **toFree) { + XML_Char *s; + *toFree = 0; + if (! base || *systemId == T('/') +#if defined(_WIN32) + || *systemId == T('\\') + || (isAsciiLetter(systemId[0]) && systemId[1] == T(':')) +#endif + ) + return systemId; + *toFree = (XML_Char *)malloc((tcslen(base) + tcslen(systemId) + 2) + * sizeof(XML_Char)); + if (! *toFree) + return systemId; + tcscpy(*toFree, base); + s = *toFree; + if (tcsrchr(s, T('/'))) + s = tcsrchr(s, T('/')) + 1; +#if defined(_WIN32) + if (tcsrchr(s, T('\\'))) + s = tcsrchr(s, T('\\')) + 1; +#endif + tcscpy(s, systemId); + return *toFree; +} + +static int +externalEntityRefFilemap(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + int result; + XML_Char *s; + const XML_Char *filename; + XML_Parser entParser = XML_ExternalEntityParserCreate(parser, context, 0); + int filemapRes; + PROCESS_ARGS args; + UNUSED_P(publicId); + args.retPtr = &result; + args.parser = entParser; + filename = resolveSystemId(base, systemId, &s); + XML_SetBase(entParser, filename); + filemapRes = filemap(filename, processFile, &args); + switch (filemapRes) { + case 0: + result = 0; + break; + case 2: + ftprintf(stderr, + T("%s: file too large for memory-mapping") + T(", switching to streaming\n"), + filename); + result = processStream(filename, entParser); + break; + } + free(s); + XML_ParserFree(entParser); + return result; +} + +static int +processStream(const XML_Char *filename, XML_Parser parser) { + /* passing NULL for filename means read input from stdin */ + int fd = 0; /* 0 is the fileno for stdin */ + + if (filename != NULL) { + fd = topen(filename, O_BINARY | O_RDONLY); + if (fd < 0) { + tperror(filename); + return 0; + } + } + for (;;) { + int nread; + char *buf = (char *)XML_GetBuffer(parser, READ_SIZE); + if (! buf) { + if (filename != NULL) + close(fd); + ftprintf(stderr, T("%s: out of memory\n"), + filename != NULL ? filename : T("xmlwf")); + return 0; + } + nread = read(fd, buf, READ_SIZE); + if (nread < 0) { + tperror(filename != NULL ? filename : T("STDIN")); + if (filename != NULL) + close(fd); + return 0; + } + if (XML_ParseBuffer(parser, nread, nread == 0) == XML_STATUS_ERROR) { + reportError(parser, filename != NULL ? filename : T("STDIN")); + if (filename != NULL) + close(fd); + return 0; + } + if (nread == 0) { + if (filename != NULL) + close(fd); + break; + ; + } + } + return 1; +} + +static int +externalEntityRefStream(XML_Parser parser, const XML_Char *context, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + XML_Char *s; + const XML_Char *filename; + int ret; + XML_Parser entParser = XML_ExternalEntityParserCreate(parser, context, 0); + UNUSED_P(publicId); + filename = resolveSystemId(base, systemId, &s); + XML_SetBase(entParser, filename); + ret = processStream(filename, entParser); + free(s); + XML_ParserFree(entParser); + return ret; +} + +int +XML_ProcessFile(XML_Parser parser, const XML_Char *filename, unsigned flags) { + int result; + + if (! XML_SetBase(parser, filename)) { + ftprintf(stderr, T("%s: out of memory"), filename); + exit(1); + } + + if (flags & XML_EXTERNAL_ENTITIES) + XML_SetExternalEntityRefHandler(parser, (flags & XML_MAP_FILE) + ? externalEntityRefFilemap + : externalEntityRefStream); + if (flags & XML_MAP_FILE) { + int filemapRes; + PROCESS_ARGS args; + args.retPtr = &result; + args.parser = parser; + filemapRes = filemap(filename, processFile, &args); + switch (filemapRes) { + case 0: + result = 0; + break; + case 2: + ftprintf(stderr, + T("%s: file too large for memory-mapping") + T(", switching to streaming\n"), + filename); + result = processStream(filename, parser); + break; + } + } else + result = processStream(filename, parser); + return result; +} diff --git a/3rdparty/expat/xmlwf/xmlfile.h b/3rdparty/expat/xmlwf/xmlfile.h new file mode 100644 index 0000000..6e5d5b4 --- /dev/null +++ b/3rdparty/expat/xmlwf/xmlfile.h @@ -0,0 +1,43 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#define XML_MAP_FILE 01 +#define XML_EXTERNAL_ENTITIES 02 + +#ifdef XML_LARGE_SIZE +# define XML_FMT_INT_MOD "ll" +#else +# define XML_FMT_INT_MOD "l" +#endif + +extern int XML_ProcessFile(XML_Parser parser, const XML_Char *filename, + unsigned flags); diff --git a/3rdparty/expat/xmlwf/xmlmime.c b/3rdparty/expat/xmlwf/xmlmime.c new file mode 100644 index 0000000..39160d7 --- /dev/null +++ b/3rdparty/expat/xmlwf/xmlmime.c @@ -0,0 +1,191 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include +#include "xmlmime.h" + +static const char * +getTok(const char **pp) { + /* inComment means one level of nesting; inComment+1 means two levels etc */ + enum { inAtom, inString, init, inComment }; + int state = init; + const char *tokStart = 0; + for (;;) { + switch (**pp) { + case '\0': + if (state == inAtom) + return tokStart; + return 0; + case ' ': + case '\r': + case '\t': + case '\n': + if (state == inAtom) + return tokStart; + break; + case '(': + if (state == inAtom) + return tokStart; + if (state != inString) + state++; + break; + case ')': + if (state > init) + --state; + else if (state != inString) + return 0; + break; + case ';': + case '/': + case '=': + if (state == inAtom) + return tokStart; + if (state == init) + return (*pp)++; + break; + case '\\': + ++*pp; + if (**pp == '\0') + return 0; + break; + case '"': + switch (state) { + case inString: + ++*pp; + return tokStart; + case inAtom: + return tokStart; + case init: + tokStart = *pp; + state = inString; + break; + } + break; + default: + if (state == init) { + tokStart = *pp; + state = inAtom; + } + break; + } + ++*pp; + } + /* not reached */ +} + +/* key must be lowercase ASCII */ + +static int +matchkey(const char *start, const char *end, const char *key) { + if (! start) + return 0; + for (; start != end; start++, key++) + if (*start != *key && *start != 'A' + (*key - 'a')) + return 0; + return *key == '\0'; +} + +void +getXMLCharset(const char *buf, char *charset) { + const char *next, *p; + + charset[0] = '\0'; + next = buf; + p = getTok(&next); + if (matchkey(p, next, "text")) + strcpy(charset, "us-ascii"); + else if (! matchkey(p, next, "application")) + return; + p = getTok(&next); + if (! p || *p != '/') + return; + p = getTok(&next); + /* BEGIN disabled code */ + if (0) { + if (! matchkey(p, next, "xml") && charset[0] == '\0') + return; + } + /* END disabled code */ + p = getTok(&next); + while (p) { + if (*p == ';') { + p = getTok(&next); + if (matchkey(p, next, "charset")) { + p = getTok(&next); + if (p && *p == '=') { + p = getTok(&next); + if (p) { + char *s = charset; + if (*p == '"') { + while (++p != next - 1) { + if (*p == '\\') + ++p; + if (s == charset + CHARSET_MAX - 1) { + charset[0] = '\0'; + break; + } + *s++ = *p; + } + *s++ = '\0'; + } else { + if (next - p > CHARSET_MAX - 1) + break; + while (p != next) + *s++ = *p++; + *s = 0; + break; + } + } + } + break; + } + } else + p = getTok(&next); + } +} + +#ifdef TEST + +# include + +int +main(int argc, char *argv[]) { + char buf[CHARSET_MAX]; + if (argc <= 1) + return 1; + printf("%s\n", argv[1]); + getXMLCharset(argv[1], buf); + printf("charset=\"%s\"\n", buf); + return 0; +} + +#endif /* TEST */ diff --git a/3rdparty/expat/xmlwf/xmlmime.h b/3rdparty/expat/xmlwf/xmlmime.h new file mode 100644 index 0000000..0471286 --- /dev/null +++ b/3rdparty/expat/xmlwf/xmlmime.h @@ -0,0 +1,51 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Registered charset names are at most 40 characters long. */ + +#define CHARSET_MAX 41 + +/* Figure out the charset to use from the ContentType. + buf contains the body of the header field (the part after "Content-Type:"). + charset gets the charset to use. It must be at least CHARSET_MAX chars + long. charset will be empty if the default charset should be used. +*/ + +void getXMLCharset(const char *buf, char *charset); + +#ifdef __cplusplus +} +#endif diff --git a/3rdparty/expat/xmlwf/xmltchar.h b/3rdparty/expat/xmlwf/xmltchar.h new file mode 100644 index 0000000..d7e7b41 --- /dev/null +++ b/3rdparty/expat/xmlwf/xmltchar.h @@ -0,0 +1,74 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* Ensures compile-time constants are consistent */ +#include "expat_external.h" + +#ifdef XML_UNICODE +# ifndef XML_UNICODE_WCHAR_T +# error xmlwf requires a 16-bit Unicode-compatible wchar_t +# endif +# define _PREPEND_BIG_L(x) L##x +# define T(x) _PREPEND_BIG_L(x) +# define ftprintf fwprintf +# define tfopen _wfopen +# define fputts fputws +# define puttc putwc +# define tcscmp wcscmp +# define tcscpy wcscpy +# define tcscat wcscat +# define tcschr wcschr +# define tcsrchr wcsrchr +# define tcslen wcslen +# define tperror _wperror +# define topen _wopen +# define tmain wmain +# define tremove _wremove +# define tchar wchar_t +#else /* not XML_UNICODE */ +# define T(x) x +# define ftprintf fprintf +# define tfopen fopen +# define fputts fputs +# define puttc putc +# define tcscmp strcmp +# define tcscpy strcpy +# define tcscat strcat +# define tcschr strchr +# define tcsrchr strrchr +# define tcslen strlen +# define tperror perror +# define topen open +# define tmain main +# define tremove remove +# define tchar char +#endif /* not XML_UNICODE */ diff --git a/3rdparty/expat/xmlwf/xmlwf.c b/3rdparty/expat/xmlwf/xmlwf.c new file mode 100644 index 0000000..5121fa1 --- /dev/null +++ b/3rdparty/expat/xmlwf/xmlwf.c @@ -0,0 +1,1130 @@ +/* + __ __ _ + ___\ \/ /_ __ __ _| |_ + / _ \\ /| '_ \ / _` | __| + | __// \| |_) | (_| | |_ + \___/_/\_\ .__/ \__,_|\__| + |_| XML parser + + Copyright (c) 1997-2000 Thai Open Source Software Center Ltd + Copyright (c) 2000-2017 Expat development team + Licensed under the MIT license: + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include +#include +#include +#include +#include + +#include "expat.h" +#include "codepage.h" +#include "internal.h" /* for UNUSED_P only */ +#include "xmlfile.h" +#include "xmltchar.h" + +#ifdef _MSC_VER +# include +#endif + +#ifdef XML_UNICODE +# include +#endif + +/* Structures for handler user data */ +typedef struct NotationList { + struct NotationList *next; + const XML_Char *notationName; + const XML_Char *systemId; + const XML_Char *publicId; +} NotationList; + +typedef struct xmlwfUserData { + FILE *fp; + NotationList *notationListHead; + const XML_Char *currentDoctypeName; +} XmlwfUserData; + +/* This ensures proper sorting. */ + +#define NSSEP T('\001') + +static void XMLCALL +characterData(void *userData, const XML_Char *s, int len) { + FILE *fp = ((XmlwfUserData *)userData)->fp; + for (; len > 0; --len, ++s) { + switch (*s) { + case T('&'): + fputts(T("&"), fp); + break; + case T('<'): + fputts(T("<"), fp); + break; + case T('>'): + fputts(T(">"), fp); + break; +#ifdef W3C14N + case 13: + fputts(T(" "), fp); + break; +#else + case T('"'): + fputts(T("""), fp); + break; + case 9: + case 10: + case 13: + ftprintf(fp, T("&#%d;"), *s); + break; +#endif + default: + puttc(*s, fp); + break; + } + } +} + +static void +attributeValue(FILE *fp, const XML_Char *s) { + puttc(T('='), fp); + puttc(T('"'), fp); + assert(s); + for (;;) { + switch (*s) { + case 0: + case NSSEP: + puttc(T('"'), fp); + return; + case T('&'): + fputts(T("&"), fp); + break; + case T('<'): + fputts(T("<"), fp); + break; + case T('"'): + fputts(T("""), fp); + break; +#ifdef W3C14N + case 9: + fputts(T(" "), fp); + break; + case 10: + fputts(T(" "), fp); + break; + case 13: + fputts(T(" "), fp); + break; +#else + case T('>'): + fputts(T(">"), fp); + break; + case 9: + case 10: + case 13: + ftprintf(fp, T("&#%d;"), *s); + break; +#endif + default: + puttc(*s, fp); + break; + } + s++; + } +} + +/* Lexicographically comparing UTF-8 encoded attribute values, +is equivalent to lexicographically comparing based on the character number. */ + +static int +attcmp(const void *att1, const void *att2) { + return tcscmp(*(const XML_Char **)att1, *(const XML_Char **)att2); +} + +static void XMLCALL +startElement(void *userData, const XML_Char *name, const XML_Char **atts) { + int nAtts; + const XML_Char **p; + FILE *fp = ((XmlwfUserData *)userData)->fp; + puttc(T('<'), fp); + fputts(name, fp); + + p = atts; + while (*p) + ++p; + nAtts = (int)((p - atts) >> 1); + if (nAtts > 1) + qsort((void *)atts, nAtts, sizeof(XML_Char *) * 2, attcmp); + while (*atts) { + puttc(T(' '), fp); + fputts(*atts++, fp); + attributeValue(fp, *atts); + atts++; + } + puttc(T('>'), fp); +} + +static void XMLCALL +endElement(void *userData, const XML_Char *name) { + FILE *fp = ((XmlwfUserData *)userData)->fp; + puttc(T('<'), fp); + puttc(T('/'), fp); + fputts(name, fp); + puttc(T('>'), fp); +} + +static int +nsattcmp(const void *p1, const void *p2) { + const XML_Char *att1 = *(const XML_Char **)p1; + const XML_Char *att2 = *(const XML_Char **)p2; + int sep1 = (tcsrchr(att1, NSSEP) != 0); + int sep2 = (tcsrchr(att1, NSSEP) != 0); + if (sep1 != sep2) + return sep1 - sep2; + return tcscmp(att1, att2); +} + +static void XMLCALL +startElementNS(void *userData, const XML_Char *name, const XML_Char **atts) { + int nAtts; + int nsi; + const XML_Char **p; + FILE *fp = ((XmlwfUserData *)userData)->fp; + const XML_Char *sep; + puttc(T('<'), fp); + + sep = tcsrchr(name, NSSEP); + if (sep) { + fputts(T("n1:"), fp); + fputts(sep + 1, fp); + fputts(T(" xmlns:n1"), fp); + attributeValue(fp, name); + nsi = 2; + } else { + fputts(name, fp); + nsi = 1; + } + + p = atts; + while (*p) + ++p; + nAtts = (int)((p - atts) >> 1); + if (nAtts > 1) + qsort((void *)atts, nAtts, sizeof(XML_Char *) * 2, nsattcmp); + while (*atts) { + name = *atts++; + sep = tcsrchr(name, NSSEP); + puttc(T(' '), fp); + if (sep) { + ftprintf(fp, T("n%d:"), nsi); + fputts(sep + 1, fp); + } else + fputts(name, fp); + attributeValue(fp, *atts); + if (sep) { + ftprintf(fp, T(" xmlns:n%d"), nsi++); + attributeValue(fp, name); + } + atts++; + } + puttc(T('>'), fp); +} + +static void XMLCALL +endElementNS(void *userData, const XML_Char *name) { + FILE *fp = ((XmlwfUserData *)userData)->fp; + const XML_Char *sep; + puttc(T('<'), fp); + puttc(T('/'), fp); + sep = tcsrchr(name, NSSEP); + if (sep) { + fputts(T("n1:"), fp); + fputts(sep + 1, fp); + } else + fputts(name, fp); + puttc(T('>'), fp); +} + +#ifndef W3C14N + +static void XMLCALL +processingInstruction(void *userData, const XML_Char *target, + const XML_Char *data) { + FILE *fp = ((XmlwfUserData *)userData)->fp; + puttc(T('<'), fp); + puttc(T('?'), fp); + fputts(target, fp); + puttc(T(' '), fp); + fputts(data, fp); + puttc(T('?'), fp); + puttc(T('>'), fp); +} + +static XML_Char * +xcsdup(const XML_Char *s) { + XML_Char *result; + int count = 0; + int numBytes; + + /* Get the length of the string, including terminator */ + while (s[count++] != 0) { + /* Do nothing */ + } + numBytes = count * sizeof(XML_Char); + result = malloc(numBytes); + if (result == NULL) + return NULL; + memcpy(result, s, numBytes); + return result; +} + +static void XMLCALL +startDoctypeDecl(void *userData, const XML_Char *doctypeName, + const XML_Char *sysid, const XML_Char *publid, + int has_internal_subset) { + XmlwfUserData *data = (XmlwfUserData *)userData; + UNUSED_P(sysid); + UNUSED_P(publid); + UNUSED_P(has_internal_subset); + data->currentDoctypeName = xcsdup(doctypeName); +} + +static void +freeNotations(XmlwfUserData *data) { + NotationList *notationListHead = data->notationListHead; + + while (notationListHead != NULL) { + NotationList *next = notationListHead->next; + free((void *)notationListHead->notationName); + free((void *)notationListHead->systemId); + free((void *)notationListHead->publicId); + free(notationListHead); + notationListHead = next; + } + data->notationListHead = NULL; +} + +static int +xcscmp(const XML_Char *xs, const XML_Char *xt) { + while (*xs != 0 && *xt != 0) { + if (*xs < *xt) + return -1; + if (*xs > *xt) + return 1; + xs++; + xt++; + } + if (*xs < *xt) + return -1; + if (*xs > *xt) + return 1; + return 0; +} + +static int +notationCmp(const void *a, const void *b) { + const NotationList *const n1 = *(NotationList **)a; + const NotationList *const n2 = *(NotationList **)b; + + return xcscmp(n1->notationName, n2->notationName); +} + +static void XMLCALL +endDoctypeDecl(void *userData) { + XmlwfUserData *data = (XmlwfUserData *)userData; + NotationList **notations; + int notationCount = 0; + NotationList *p; + int i; + + /* How many notations do we have? */ + for (p = data->notationListHead; p != NULL; p = p->next) + notationCount++; + if (notationCount == 0) { + /* Nothing to report */ + free((void *)data->currentDoctypeName); + data->currentDoctypeName = NULL; + return; + } + + notations = malloc(notationCount * sizeof(NotationList *)); + if (notations == NULL) { + fprintf(stderr, "Unable to sort notations"); + freeNotations(data); + return; + } + + for (p = data->notationListHead, i = 0; i < notationCount; p = p->next, i++) { + notations[i] = p; + } + qsort(notations, notationCount, sizeof(NotationList *), notationCmp); + + /* Output the DOCTYPE header */ + fputts(T("fp); + fputts(data->currentDoctypeName, data->fp); + fputts(T(" [\n"), data->fp); + + /* Now the NOTATIONs */ + for (i = 0; i < notationCount; i++) { + fputts(T("fp); + fputts(notations[i]->notationName, data->fp); + if (notations[i]->publicId != NULL) { + fputts(T(" PUBLIC '"), data->fp); + fputts(notations[i]->publicId, data->fp); + puttc(T('\''), data->fp); + if (notations[i]->systemId != NULL) { + puttc(T(' '), data->fp); + puttc(T('\''), data->fp); + fputts(notations[i]->systemId, data->fp); + puttc(T('\''), data->fp); + } + } else if (notations[i]->systemId != NULL) { + fputts(T(" SYSTEM '"), data->fp); + fputts(notations[i]->systemId, data->fp); + puttc(T('\''), data->fp); + } + puttc(T('>'), data->fp); + puttc(T('\n'), data->fp); + } + + /* Finally end the DOCTYPE */ + fputts(T("]>\n"), data->fp); + + free(notations); + freeNotations(data); + free((void *)data->currentDoctypeName); + data->currentDoctypeName = NULL; +} + +static void XMLCALL +notationDecl(void *userData, const XML_Char *notationName, const XML_Char *base, + const XML_Char *systemId, const XML_Char *publicId) { + XmlwfUserData *data = (XmlwfUserData *)userData; + NotationList *entry = malloc(sizeof(NotationList)); + const char *errorMessage = "Unable to store NOTATION for output\n"; + + UNUSED_P(base); + if (entry == NULL) { + fputs(errorMessage, stderr); + return; /* Nothing we can really do about this */ + } + entry->notationName = xcsdup(notationName); + if (entry->notationName == NULL) { + fputs(errorMessage, stderr); + free(entry); + return; + } + if (systemId != NULL) { + entry->systemId = xcsdup(systemId); + if (entry->systemId == NULL) { + fputs(errorMessage, stderr); + free((void *)entry->notationName); + free(entry); + return; + } + } else { + entry->systemId = NULL; + } + if (publicId != NULL) { + entry->publicId = xcsdup(publicId); + if (entry->publicId == NULL) { + fputs(errorMessage, stderr); + free((void *)entry->systemId); /* Safe if it's NULL */ + free((void *)entry->notationName); + free(entry); + return; + } + } else { + entry->publicId = NULL; + } + + entry->next = data->notationListHead; + data->notationListHead = entry; +} + +#endif /* not W3C14N */ + +static void XMLCALL +defaultCharacterData(void *userData, const XML_Char *s, int len) { + UNUSED_P(s); + UNUSED_P(len); + XML_DefaultCurrent((XML_Parser)userData); +} + +static void XMLCALL +defaultStartElement(void *userData, const XML_Char *name, + const XML_Char **atts) { + UNUSED_P(name); + UNUSED_P(atts); + XML_DefaultCurrent((XML_Parser)userData); +} + +static void XMLCALL +defaultEndElement(void *userData, const XML_Char *name) { + UNUSED_P(name); + XML_DefaultCurrent((XML_Parser)userData); +} + +static void XMLCALL +defaultProcessingInstruction(void *userData, const XML_Char *target, + const XML_Char *data) { + UNUSED_P(target); + UNUSED_P(data); + XML_DefaultCurrent((XML_Parser)userData); +} + +static void XMLCALL +nopCharacterData(void *userData, const XML_Char *s, int len) { + UNUSED_P(userData); + UNUSED_P(s); + UNUSED_P(len); +} + +static void XMLCALL +nopStartElement(void *userData, const XML_Char *name, const XML_Char **atts) { + UNUSED_P(userData); + UNUSED_P(name); + UNUSED_P(atts); +} + +static void XMLCALL +nopEndElement(void *userData, const XML_Char *name) { + UNUSED_P(userData); + UNUSED_P(name); +} + +static void XMLCALL +nopProcessingInstruction(void *userData, const XML_Char *target, + const XML_Char *data) { + UNUSED_P(userData); + UNUSED_P(target); + UNUSED_P(data); +} + +static void XMLCALL +markup(void *userData, const XML_Char *s, int len) { + FILE *fp = ((XmlwfUserData *)XML_GetUserData((XML_Parser)userData))->fp; + for (; len > 0; --len, ++s) + puttc(*s, fp); +} + +static void +metaLocation(XML_Parser parser) { + const XML_Char *uri = XML_GetBase(parser); + FILE *fp = ((XmlwfUserData *)XML_GetUserData(parser))->fp; + if (uri) + ftprintf(fp, T(" uri=\"%s\""), uri); + ftprintf(fp, + T(" byte=\"%") T(XML_FMT_INT_MOD) T("d\"") T(" nbytes=\"%d\"") + T(" line=\"%") T(XML_FMT_INT_MOD) T("u\"") T(" col=\"%") + T(XML_FMT_INT_MOD) T("u\""), + XML_GetCurrentByteIndex(parser), XML_GetCurrentByteCount(parser), + XML_GetCurrentLineNumber(parser), + XML_GetCurrentColumnNumber(parser)); +} + +static void +metaStartDocument(void *userData) { + fputts(T("\n"), + ((XmlwfUserData *)XML_GetUserData((XML_Parser)userData))->fp); +} + +static void +metaEndDocument(void *userData) { + fputts(T("\n"), + ((XmlwfUserData *)XML_GetUserData((XML_Parser)userData))->fp); +} + +static void XMLCALL +metaStartElement(void *userData, const XML_Char *name, const XML_Char **atts) { + XML_Parser parser = (XML_Parser)userData; + XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser); + FILE *fp = data->fp; + const XML_Char **specifiedAttsEnd + = atts + XML_GetSpecifiedAttributeCount(parser); + const XML_Char **idAttPtr; + int idAttIndex = XML_GetIdAttributeIndex(parser); + if (idAttIndex < 0) + idAttPtr = 0; + else + idAttPtr = atts + idAttIndex; + + ftprintf(fp, T("\n"), fp); + do { + ftprintf(fp, T("= specifiedAttsEnd) + fputts(T("\" defaulted=\"yes\"/>\n"), fp); + else if (atts == idAttPtr) + fputts(T("\" id=\"yes\"/>\n"), fp); + else + fputts(T("\"/>\n"), fp); + } while (*(atts += 2)); + fputts(T("\n"), fp); + } else + fputts(T("/>\n"), fp); +} + +static void XMLCALL +metaEndElement(void *userData, const XML_Char *name) { + XML_Parser parser = (XML_Parser)userData; + XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser); + FILE *fp = data->fp; + ftprintf(fp, T("\n"), fp); +} + +static void XMLCALL +metaProcessingInstruction(void *userData, const XML_Char *target, + const XML_Char *data) { + XML_Parser parser = (XML_Parser)userData; + XmlwfUserData *usrData = (XmlwfUserData *)XML_GetUserData(parser); + FILE *fp = usrData->fp; + ftprintf(fp, T("\n"), fp); +} + +static void XMLCALL +metaComment(void *userData, const XML_Char *data) { + XML_Parser parser = (XML_Parser)userData; + XmlwfUserData *usrData = (XmlwfUserData *)XML_GetUserData(parser); + FILE *fp = usrData->fp; + fputts(T("\n"), fp); +} + +static void XMLCALL +metaStartCdataSection(void *userData) { + XML_Parser parser = (XML_Parser)userData; + XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser); + FILE *fp = data->fp; + fputts(T("\n"), fp); +} + +static void XMLCALL +metaEndCdataSection(void *userData) { + XML_Parser parser = (XML_Parser)userData; + XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser); + FILE *fp = data->fp; + fputts(T("\n"), fp); +} + +static void XMLCALL +metaCharacterData(void *userData, const XML_Char *s, int len) { + XML_Parser parser = (XML_Parser)userData; + XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser); + FILE *fp = data->fp; + fputts(T("\n"), fp); +} + +static void XMLCALL +metaStartDoctypeDecl(void *userData, const XML_Char *doctypeName, + const XML_Char *sysid, const XML_Char *pubid, + int has_internal_subset) { + XML_Parser parser = (XML_Parser)userData; + XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser); + FILE *fp = data->fp; + UNUSED_P(sysid); + UNUSED_P(pubid); + UNUSED_P(has_internal_subset); + ftprintf(fp, T("\n"), fp); +} + +static void XMLCALL +metaEndDoctypeDecl(void *userData) { + XML_Parser parser = (XML_Parser)userData; + XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser); + FILE *fp = data->fp; + fputts(T("\n"), fp); +} + +static void XMLCALL +metaNotationDecl(void *userData, const XML_Char *notationName, + const XML_Char *base, const XML_Char *systemId, + const XML_Char *publicId) { + XML_Parser parser = (XML_Parser)userData; + XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser); + FILE *fp = data->fp; + UNUSED_P(base); + ftprintf(fp, T("\n"), fp); +} + +static void XMLCALL +metaEntityDecl(void *userData, const XML_Char *entityName, int is_param, + const XML_Char *value, int value_length, const XML_Char *base, + const XML_Char *systemId, const XML_Char *publicId, + const XML_Char *notationName) { + XML_Parser parser = (XML_Parser)userData; + XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser); + FILE *fp = data->fp; + + UNUSED_P(is_param); + UNUSED_P(base); + if (value) { + ftprintf(fp, T("'), fp); + characterData(data, value, value_length); + fputts(T("\n"), fp); + } else if (notationName) { + ftprintf(fp, T("\n"), fp); + } else { + ftprintf(fp, T("\n"), fp); + } +} + +static void XMLCALL +metaStartNamespaceDecl(void *userData, const XML_Char *prefix, + const XML_Char *uri) { + XML_Parser parser = (XML_Parser)userData; + XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser); + FILE *fp = data->fp; + fputts(T("\n"), fp); + } else + fputts(T("/>\n"), fp); +} + +static void XMLCALL +metaEndNamespaceDecl(void *userData, const XML_Char *prefix) { + XML_Parser parser = (XML_Parser)userData; + XmlwfUserData *data = (XmlwfUserData *)XML_GetUserData(parser); + FILE *fp = data->fp; + if (! prefix) + fputts(T("\n"), fp); + else + ftprintf(fp, T("\n"), prefix); +} + +static int XMLCALL +unknownEncodingConvert(void *data, const char *p) { + return codepageConvert(*(int *)data, p); +} + +static int XMLCALL +unknownEncoding(void *userData, const XML_Char *name, XML_Encoding *info) { + int cp; + static const XML_Char prefixL[] = T("windows-"); + static const XML_Char prefixU[] = T("WINDOWS-"); + int i; + + UNUSED_P(userData); + for (i = 0; prefixU[i]; i++) + if (name[i] != prefixU[i] && name[i] != prefixL[i]) + return 0; + + cp = 0; + for (; name[i]; i++) { + static const XML_Char digits[] = T("0123456789"); + const XML_Char *s = tcschr(digits, name[i]); + if (! s) + return 0; + cp *= 10; + cp += (int)(s - digits); + if (cp >= 0x10000) + return 0; + } + if (! codepageMap(cp, info->map)) + return 0; + info->convert = unknownEncodingConvert; + /* We could just cast the code page integer to a void *, + and avoid the use of release. */ + info->release = free; + info->data = malloc(sizeof(int)); + if (! info->data) + return 0; + *(int *)info->data = cp; + return 1; +} + +static int XMLCALL +notStandalone(void *userData) { + UNUSED_P(userData); + return 0; +} + +static void +showVersion(XML_Char *prog) { + XML_Char *s = prog; + XML_Char ch; + const XML_Feature *features = XML_GetFeatureList(); + while ((ch = *s) != 0) { + if (ch == '/' +#if defined(_WIN32) + || ch == '\\' +#endif + ) + prog = s + 1; + ++s; + } + ftprintf(stdout, T("%s using %s\n"), prog, XML_ExpatVersion()); + if (features != NULL && features[0].feature != XML_FEATURE_END) { + int i = 1; + ftprintf(stdout, T("%s"), features[0].name); + if (features[0].value) + ftprintf(stdout, T("=%ld"), features[0].value); + while (features[i].feature != XML_FEATURE_END) { + ftprintf(stdout, T(", %s"), features[i].name); + if (features[i].value) + ftprintf(stdout, T("=%ld"), features[i].value); + ++i; + } + ftprintf(stdout, T("\n")); + } +} + +static void +usage(const XML_Char *prog, int rc) { + ftprintf( + stderr, + /* Generated with: + * $ xmlwf/xmlwf_helpgen.sh + */ + /* clang-format off */ + T("usage: %s [-s] [-n] [-p] [-x] [-e ENCODING] [-w] [-r] [-d DIRECTORY]\n") + T(" [-c | -m | -t] [-N]\n") + T(" [FILE [FILE ...]]\n") + T("\n") + T("xmlwf - Determines if an XML document is well-formed\n") + T("\n") + T("positional arguments:\n") + T(" FILE file to process (default: STDIN)\n") + T("\n") + T("input control arguments:\n") + T(" -s print an error if the document is not [s]tandalone\n") + T(" -n enable [n]amespace processing\n") + T(" -p enable processing external DTDs and [p]arameter entities\n") + T(" -x enable processing of e[x]ternal entities\n") + T(" -e ENCODING override any in-document [e]ncoding declaration\n") + T(" -w enable support for [W]indows code pages\n") + T(" -r disable memory-mapping and use normal file [r]ead IO calls instead\n") + T("\n") + T("output control arguments:\n") + T(" -d DIRECTORY output [d]estination directory\n") + T(" -c write a [c]opy of input XML, not canonical XML\n") + T(" -m write [m]eta XML, not canonical XML\n") + T(" -t write no XML output for [t]iming of plain parsing\n") + T(" -N enable adding doctype and [n]otation declarations\n") + T("\n") + T("info arguments:\n") + T(" -h show this [h]elp message and exit\n") + T(" -v show program's [v]ersion number and exit\n") + T("\n") + T("xmlwf of libexpat is software libre, licensed under the MIT license.\n") + T("Please report bugs at https://github.com/libexpat/libexpat/issues. Thank you!\n") + , /* clang-format on */ + prog); + exit(rc); +} + +#if defined(__MINGW32__) && defined(XML_UNICODE) +/* Silence warning about missing prototype */ +int wmain(int argc, XML_Char **argv); +#endif + +int +tmain(int argc, XML_Char **argv) { + int i, j; + const XML_Char *outputDir = NULL; + const XML_Char *encoding = NULL; + unsigned processFlags = XML_MAP_FILE; + int windowsCodePages = 0; + int outputType = 0; + int useNamespaces = 0; + int requireStandalone = 0; + int requiresNotations = 0; + enum XML_ParamEntityParsing paramEntityParsing + = XML_PARAM_ENTITY_PARSING_NEVER; + int useStdin = 0; + XmlwfUserData userData = {NULL, NULL, NULL}; + +#ifdef _MSC_VER + _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); +#endif + + i = 1; + j = 0; + while (i < argc) { + if (j == 0) { + if (argv[i][0] != T('-')) + break; + if (argv[i][1] == T('-') && argv[i][2] == T('\0')) { + i++; + break; + } + j++; + } + switch (argv[i][j]) { + case T('r'): + processFlags &= ~XML_MAP_FILE; + j++; + break; + case T('s'): + requireStandalone = 1; + j++; + break; + case T('n'): + useNamespaces = 1; + j++; + break; + case T('p'): + paramEntityParsing = XML_PARAM_ENTITY_PARSING_ALWAYS; + /* fall through */ + case T('x'): + processFlags |= XML_EXTERNAL_ENTITIES; + j++; + break; + case T('w'): + windowsCodePages = 1; + j++; + break; + case T('m'): + outputType = 'm'; + j++; + break; + case T('c'): + outputType = 'c'; + useNamespaces = 0; + j++; + break; + case T('t'): + outputType = 't'; + j++; + break; + case T('N'): + requiresNotations = 1; + j++; + break; + case T('d'): + if (argv[i][j + 1] == T('\0')) { + if (++i == argc) + usage(argv[0], 2); + outputDir = argv[i]; + } else + outputDir = argv[i] + j + 1; + i++; + j = 0; + break; + case T('e'): + if (argv[i][j + 1] == T('\0')) { + if (++i == argc) + usage(argv[0], 2); + encoding = argv[i]; + } else + encoding = argv[i] + j + 1; + i++; + j = 0; + break; + case T('h'): + usage(argv[0], 0); + return 0; + case T('v'): + showVersion(argv[0]); + return 0; + case T('\0'): + if (j > 1) { + i++; + j = 0; + break; + } + /* fall through */ + default: + usage(argv[0], 2); + } + } + if (i == argc) { + useStdin = 1; + processFlags &= ~XML_MAP_FILE; + i--; + } + for (; i < argc; i++) { + XML_Char *outName = 0; + int result; + XML_Parser parser; + if (useNamespaces) + parser = XML_ParserCreateNS(encoding, NSSEP); + else + parser = XML_ParserCreate(encoding); + + if (! parser) { + tperror(T("Could not instantiate parser")); + exit(1); + } + + if (requireStandalone) + XML_SetNotStandaloneHandler(parser, notStandalone); + XML_SetParamEntityParsing(parser, paramEntityParsing); + if (outputType == 't') { + /* This is for doing timings; this gives a more realistic estimate of + the parsing time. */ + outputDir = 0; + XML_SetElementHandler(parser, nopStartElement, nopEndElement); + XML_SetCharacterDataHandler(parser, nopCharacterData); + XML_SetProcessingInstructionHandler(parser, nopProcessingInstruction); + } else if (outputDir) { + const XML_Char *delim = T("/"); + const XML_Char *file = useStdin ? T("STDIN") : argv[i]; + if (! useStdin) { + /* Jump after last (back)slash */ + const XML_Char *lastDelim = tcsrchr(file, delim[0]); + if (lastDelim) + file = lastDelim + 1; +#if defined(_WIN32) + else { + const XML_Char *winDelim = T("\\"); + lastDelim = tcsrchr(file, winDelim[0]); + if (lastDelim) { + file = lastDelim + 1; + delim = winDelim; + } + } +#endif + } + outName = (XML_Char *)malloc((tcslen(outputDir) + tcslen(file) + 2) + * sizeof(XML_Char)); + if (! outName) { + tperror(T("Could not allocate memory")); + exit(1); + } + tcscpy(outName, outputDir); + tcscat(outName, delim); + tcscat(outName, file); + userData.fp = tfopen(outName, T("wb")); + if (! userData.fp) { + tperror(outName); + exit(3); + } + setvbuf(userData.fp, NULL, _IOFBF, 16384); +#ifdef XML_UNICODE + puttc(0xFEFF, userData.fp); +#endif + XML_SetUserData(parser, &userData); + switch (outputType) { + case 'm': + XML_UseParserAsHandlerArg(parser); + XML_SetElementHandler(parser, metaStartElement, metaEndElement); + XML_SetProcessingInstructionHandler(parser, metaProcessingInstruction); + XML_SetCommentHandler(parser, metaComment); + XML_SetCdataSectionHandler(parser, metaStartCdataSection, + metaEndCdataSection); + XML_SetCharacterDataHandler(parser, metaCharacterData); + XML_SetDoctypeDeclHandler(parser, metaStartDoctypeDecl, + metaEndDoctypeDecl); + XML_SetEntityDeclHandler(parser, metaEntityDecl); + XML_SetNotationDeclHandler(parser, metaNotationDecl); + XML_SetNamespaceDeclHandler(parser, metaStartNamespaceDecl, + metaEndNamespaceDecl); + metaStartDocument(parser); + break; + case 'c': + XML_UseParserAsHandlerArg(parser); + XML_SetDefaultHandler(parser, markup); + XML_SetElementHandler(parser, defaultStartElement, defaultEndElement); + XML_SetCharacterDataHandler(parser, defaultCharacterData); + XML_SetProcessingInstructionHandler(parser, + defaultProcessingInstruction); + break; + default: + if (useNamespaces) + XML_SetElementHandler(parser, startElementNS, endElementNS); + else + XML_SetElementHandler(parser, startElement, endElement); + XML_SetCharacterDataHandler(parser, characterData); +#ifndef W3C14N + XML_SetProcessingInstructionHandler(parser, processingInstruction); + if (requiresNotations) { + XML_SetDoctypeDeclHandler(parser, startDoctypeDecl, endDoctypeDecl); + XML_SetNotationDeclHandler(parser, notationDecl); + } +#endif /* not W3C14N */ + break; + } + } + if (windowsCodePages) + XML_SetUnknownEncodingHandler(parser, unknownEncoding, 0); + result = XML_ProcessFile(parser, useStdin ? NULL : argv[i], processFlags); + if (outputDir) { + if (outputType == 'm') + metaEndDocument(parser); + fclose(userData.fp); + if (! result) { + tremove(outName); + } + free(outName); + } + XML_ParserFree(parser); + if (! result) { + exit(2); + } + } + return 0; +} diff --git a/3rdparty/expat/xmlwf/xmlwf_helpgen.py b/3rdparty/expat/xmlwf/xmlwf_helpgen.py new file mode 100755 index 0000000..939286e --- /dev/null +++ b/3rdparty/expat/xmlwf/xmlwf_helpgen.py @@ -0,0 +1,69 @@ +#! /usr/bin/env python3 +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2019 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +import argparse + +epilog = """ +xmlwf of libexpat is software libre, licensed under the MIT license. +Please report bugs at https://github.com/libexpat/libexpat/issues. Thank you! +""" + +parser = argparse.ArgumentParser(prog='xmlwf', add_help=False, + description='xmlwf - Determines if an XML document is well-formed', + formatter_class=argparse.RawTextHelpFormatter, + epilog=epilog) + +input_related = parser.add_argument_group('input control arguments') +input_related.add_argument('-s', action='store_true', help='print an error if the document is not [s]tandalone') +input_related.add_argument('-n', action='store_true', help='enable [n]amespace processing') +input_related.add_argument('-p', action='store_true', help='enable processing external DTDs and [p]arameter entities') +input_related.add_argument('-x', action='store_true', help='enable processing of e[x]ternal entities') +input_related.add_argument('-e', action='store', metavar='ENCODING', help='override any in-document [e]ncoding declaration') +input_related.add_argument('-w', action='store_true', help='enable support for [W]indows code pages') +input_related.add_argument('-r', action='store_true', help='disable memory-mapping and use normal file [r]ead IO calls instead') + +output_related = parser.add_argument_group('output control arguments') +output_related.add_argument('-d', action='store', metavar='DIRECTORY', help='output [d]estination directory') +output_mode = output_related.add_mutually_exclusive_group() +output_mode.add_argument('-c', action='store_true', help='write a [c]opy of input XML, not canonical XML') +output_mode.add_argument('-m', action='store_true', help='write [m]eta XML, not canonical XML') +output_mode.add_argument('-t', action='store_true', help='write no XML output for [t]iming of plain parsing') +output_related.add_argument('-N', action='store_true', help='enable adding doctype and [n]otation declarations') + +parser.add_argument('files', metavar='FILE', nargs='*', help='file to process (default: STDIN)') + +info = parser.add_argument_group('info arguments') +info = info.add_mutually_exclusive_group() +info.add_argument('-h', action='store_true', help='show this [h]elp message and exit') +info.add_argument('-v', action='store_true', help='show program\'s [v]ersion number and exit') + + +if __name__ == '__main__': + parser.print_help() diff --git a/3rdparty/expat/xmlwf/xmlwf_helpgen.sh b/3rdparty/expat/xmlwf/xmlwf_helpgen.sh new file mode 100755 index 0000000..6b0fbf9 --- /dev/null +++ b/3rdparty/expat/xmlwf/xmlwf_helpgen.sh @@ -0,0 +1,35 @@ +#! /usr/bin/env bash +# __ __ _ +# ___\ \/ /_ __ __ _| |_ +# / _ \\ /| '_ \ / _` | __| +# | __// \| |_) | (_| | |_ +# \___/_/\_\ .__/ \__,_|\__| +# |_| XML parser +# +# Copyright (c) 2019 Expat development team +# Licensed under the MIT license: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the +# following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +# USE OR OTHER DEALINGS IN THE SOFTWARE. + +./xmlwf/xmlwf_helpgen.py | sed \ + -e 's,usage: xmlwf,usage: %s,' \ + -e 's, \[-h | -v\],,' \ + -e 's,^, T(",' \ + -e 's,$,\\n"),' diff --git a/3rdparty/libflac/AUTHORS b/3rdparty/libflac/AUTHORS new file mode 100644 index 0000000..217baf4 --- /dev/null +++ b/3rdparty/libflac/AUTHORS @@ -0,0 +1,41 @@ +/* FLAC - Free Lossless Audio Codec + * Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson + * + * This file is part the FLAC project. FLAC is comprised of several + * components distributed under difference licenses. The codec libraries + * are distributed under Xiph.Org's BSD-like license (see the file + * COPYING.Xiph in this distribution). All other programs, libraries, and + * plugins are distributed under the GPL (see COPYING.GPL). The documentation + * is distributed under the Gnu FDL (see COPYING.FDL). Each file in the + * FLAC distribution contains at the top the terms under which it may be + * distributed. + * + * Since this particular file is relevant to all components of FLAC, + * it may be distributed under the Xiph.Org license, which is the least + * restrictive of those mentioned above. See the file COPYING.Xiph in this + * distribution. + */ + + +FLAC (http://flac.sourceforge.net/) is an Open Source lossless audio +codec developed by Josh Coalson . + +Other major contributors and their contributions: +"Andrey Astafiev" +* Russian translation of the HTML documentation + +"Miroslav Lichvar" +* IA-32 assembly versions of several libFLAC routines + +"Brady Patterson" +* AIFF file support, PPC assembly versions of libFLAC routines + +"Daisuke Shimamura" +* i18n support in the XMMS plugin + +"X-Fixer" +* Configuration system, tag editing, and file info in the Winamp2 plugin + +"Matt Zimmerman" +* Libtool/autoconf/automake make system, flac man page + diff --git a/3rdparty/libflac/COPYING.FDL b/3rdparty/libflac/COPYING.FDL new file mode 100644 index 0000000..4a0fe1c --- /dev/null +++ b/3rdparty/libflac/COPYING.FDL @@ -0,0 +1,397 @@ + GNU Free Documentation License + Version 1.2, November 2002 + + + Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + +0. PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document "free" in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + + +1. APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The "Document", below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as "you". You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A "Modified Version" of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A "Secondary Section" is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (Thus, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The "Invariant Sections" are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The "Cover Texts" are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A "Transparent" copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not "Transparent" is called "Opaque". + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML, PostScript or PDF designed for human modification. Examples of +transparent image formats include PNG, XCF and JPG. Opaque formats +include proprietary formats that can be read and edited only by +proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML, PostScript or PDF produced by some word +processors for output purposes only. + +The "Title Page" means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +A section "Entitled XYZ" means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as "Acknowledgements", +"Dedications", "Endorsements", or "History".) To "Preserve the Title" +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + + +2. VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + + +3. COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + + +4. MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. +D. Preserve all the copyright notices of the Document. +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. +H. Include an unaltered copy of this License. +I. Preserve the section Entitled "History", Preserve its Title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section Entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. +K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section all + the substance and tone of each of the contributor acknowledgements + and/or dedications given therein. +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. +M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. +N. Do not retitle any existing section to be Entitled "Endorsements" + or to conflict in title with any Invariant Section. +O. Preserve any Warranty Disclaimers. + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + + +5. COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgements", +and any sections Entitled "Dedications". You must delete all sections +Entitled "Endorsements". + + +6. COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + + +7. AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an "aggregate" if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + + +8. TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled "Acknowledgements", +"Dedications", or "History", the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + + +9. TERMINATION + +You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + + +10. FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + + +ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + + Copyright (c) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.2 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. diff --git a/3rdparty/libflac/COPYING.GPL b/3rdparty/libflac/COPYING.GPL new file mode 100644 index 0000000..c3c7a9e --- /dev/null +++ b/3rdparty/libflac/COPYING.GPL @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/3rdparty/libflac/COPYING.LGPL b/3rdparty/libflac/COPYING.LGPL new file mode 100644 index 0000000..5ab7695 --- /dev/null +++ b/3rdparty/libflac/COPYING.LGPL @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/3rdparty/libflac/COPYING.Xiph b/3rdparty/libflac/COPYING.Xiph new file mode 100644 index 0000000..0a104a9 --- /dev/null +++ b/3rdparty/libflac/COPYING.Xiph @@ -0,0 +1,28 @@ +Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007 Josh Coalson + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of the Xiph.org Foundation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/3rdparty/libflac/FLAC.dsw b/3rdparty/libflac/FLAC.dsw new file mode 100644 index 0000000..d19b8f4 --- /dev/null +++ b/3rdparty/libflac/FLAC.dsw @@ -0,0 +1,683 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "all"=.\all.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name all_dynamic + End Project Dependency + Begin Project Dependency + Project_Dep_Name all_static + End Project Dependency +}}} + +############################################################################### + +Project: "all_dynamic"=.\all_dynamic.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name examples + End Project Dependency + Begin Project Dependency + Project_Dep_Name flac + End Project Dependency + Begin Project Dependency + Project_Dep_Name iffscan + End Project Dependency + Begin Project Dependency + Project_Dep_Name metaflac + End Project Dependency + Begin Project Dependency + Project_Dep_Name in_flac + End Project Dependency + Begin Project Dependency + Project_Dep_Name flac_mac + End Project Dependency + Begin Project Dependency + Project_Dep_Name flac_ren + End Project Dependency + Begin Project Dependency + Project_Dep_Name flacdiff + End Project Dependency + Begin Project Dependency + Project_Dep_Name flactimer + End Project Dependency + Begin Project Dependency + Project_Dep_Name grabbag_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name replaygain_analysis_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name replaygain_synthesis_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name getopt_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name libFLAC_dynamic + End Project Dependency + Begin Project Dependency + Project_Dep_Name libFLAC_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name libFLAC++_dynamic + End Project Dependency + Begin Project Dependency + Project_Dep_Name libFLAC++_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name test_libs_common_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name plugin_common_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name utf8_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name test_cuesheet + End Project Dependency + Begin Project Dependency + Project_Dep_Name test_picture + End Project Dependency + Begin Project Dependency + Project_Dep_Name test_libFLAC + End Project Dependency + Begin Project Dependency + Project_Dep_Name test_libFLAC++ + End Project Dependency + Begin Project Dependency + Project_Dep_Name test_seeking + End Project Dependency + Begin Project Dependency + Project_Dep_Name test_streams + End Project Dependency +}}} + +############################################################################### + +Project: "all_static"=.\all_static.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name examples + End Project Dependency + Begin Project Dependency + Project_Dep_Name flac + End Project Dependency + Begin Project Dependency + Project_Dep_Name iffscan + End Project Dependency + Begin Project Dependency + Project_Dep_Name metaflac + End Project Dependency + Begin Project Dependency + Project_Dep_Name in_flac + End Project Dependency + Begin Project Dependency + Project_Dep_Name flac_mac + End Project Dependency + Begin Project Dependency + Project_Dep_Name flac_ren + End Project Dependency + Begin Project Dependency + Project_Dep_Name flacdiff + End Project Dependency + Begin Project Dependency + Project_Dep_Name flactimer + End Project Dependency + Begin Project Dependency + Project_Dep_Name grabbag_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name replaygain_analysis_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name replaygain_synthesis_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name getopt_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name libFLAC_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name libFLAC++_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name test_libs_common_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name plugin_common_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name utf8_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name test_cuesheet + End Project Dependency + Begin Project Dependency + Project_Dep_Name test_picture + End Project Dependency + Begin Project Dependency + Project_Dep_Name test_libFLAC + End Project Dependency + Begin Project Dependency + Project_Dep_Name test_libFLAC++ + End Project Dependency + Begin Project Dependency + Project_Dep_Name test_seeking + End Project Dependency + Begin Project Dependency + Project_Dep_Name test_streams + End Project Dependency +}}} + +############################################################################### + +Project: "examples"=.\examples\examples.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name example_c_decode_file + End Project Dependency + Begin Project Dependency + Project_Dep_Name example_c_encode_file + End Project Dependency + Begin Project Dependency + Project_Dep_Name example_cpp_decode_file + End Project Dependency + Begin Project Dependency + Project_Dep_Name example_cpp_encode_file + End Project Dependency +}}} + +############################################################################### + +Project: "example_c_decode_file"=.\examples\c\decode\file\example_c_decode_file.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libFLAC_static + End Project Dependency +}}} + +############################################################################### + +Project: "example_c_encode_file"=.\examples\c\encode\file\example_c_encode_file.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libFLAC_static + End Project Dependency +}}} + +############################################################################### + +Project: "example_cpp_decode_file"=.\examples\cpp\decode\file\example_cpp_decode_file.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libFLAC++_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name libFLAC_static + End Project Dependency +}}} + +############################################################################### + +Project: "example_cpp_encode_file"=.\examples\cpp\encode\file\example_cpp_encode_file.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libFLAC++_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name libFLAC_static + End Project Dependency +}}} + +############################################################################### + +Project: "flac"=.\src\flac\flac.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name grabbag_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name replaygain_analysis_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name replaygain_synthesis_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name getopt_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name libFLAC_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name utf8_static + End Project Dependency +}}} + +############################################################################### + +Project: "iffscan"=.\src\flac\iffscan.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libFLAC_static + End Project Dependency +}}} + +############################################################################### + +Project: "flac_mac"=.\src\monkeys_audio_utilities\flac_mac\flac_mac.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "flac_ren"=.\src\monkeys_audio_utilities\flac_ren\flac_ren.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "replaygain_analysis_static"=.\src\share\replaygain_analysis\replaygain_analysis_static.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "replaygain_synthesis_static"=.\src\share\replaygain_synthesis\replaygain_synthesis_static.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "getopt_static"=.\src\share\getopt\getopt_static.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "grabbag_static"=.\src\share\grabbag\grabbag_static.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libFLAC_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name replaygain_analysis_static + End Project Dependency +}}} + +############################################################################### + +Project: "in_flac"=.\src\plugin_winamp2\in_flac.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libFLAC_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name plugin_common_static + End Project Dependency +}}} + +############################################################################### + +Project: "libFLAC_dynamic"=.\src\libFLAC\libFLAC_dynamic.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "libFLAC_static"=.\src\libFLAC\libFLAC_static.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "libFLAC++_dynamic"=".\src\libFLAC++\libFLAC++_dynamic.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libFLAC_dynamic + End Project Dependency +}}} + +############################################################################### + +Project: "libFLAC++_static"=".\src\libFLAC++\libFLAC++_static.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libFLAC_static + End Project Dependency +}}} + +############################################################################### + +Project: "metaflac"=.\src\metaflac\metaflac.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name replaygain_analysis_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name getopt_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name grabbag_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name libFLAC_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name utf8_static + End Project Dependency +}}} + +############################################################################### + +Project: "plugin_common_static"=.\src\plugin_common\plugin_common_static.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name replaygain_synthesis_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name libFLAC_static + End Project Dependency +}}} + +############################################################################### + +Project: "test_cuesheet"=.\src\test_grabbag\cuesheet\test_cuesheet.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name grabbag_static + End Project Dependency +}}} + +############################################################################### + +Project: "test_picture"=.\src\test_grabbag\picture\test_picture.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name grabbag_static + End Project Dependency +}}} + +############################################################################### + +Project: "test_libs_common"=.\src\test_libs_common\test_libs_common_static.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libFLAC_static + End Project Dependency +}}} + +############################################################################### + +Project: "test_libFLAC"=.\src\test_libFLAC\test_libFLAC.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libFLAC_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name test_libs_common_static + End Project Dependency +}}} + +############################################################################### + +Project: "test_libFLAC++"=".\src\test_libFLAC++\test_libFLAC++.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libFLAC++_static + End Project Dependency + Begin Project Dependency + Project_Dep_Name test_libs_common_static + End Project Dependency +}}} + +############################################################################### + +Project: "test_seeking"=.\src\test_seeking\test_seeking.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "test_streams"=.\src\test_streams\test_streams.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "utf8_static"=.\src\share\utf8\utf8_static.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "flacdiff"=".\src\utils\flacdiff\flacdiff.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libFLAC++_static + End Project Dependency +}}} + +############################################################################### + +Project: "flactimer"=".\src\utils\flactimer\flactimer.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/3rdparty/libflac/FLAC.sln b/3rdparty/libflac/FLAC.sln new file mode 100644 index 0000000..a753408 --- /dev/null +++ b/3rdparty/libflac/FLAC.sln @@ -0,0 +1,265 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual C++ Express 2005 +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "example_c_decode_file", "examples\c\decode\file\example_c_decode_file.vcproj", "{4cefbd00-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc84-c215-11db-8314-0800200c9a66} = {4cefbc84-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "example_c_encode_file", "examples\c\encode\file\example_c_encode_file.vcproj", "{4cefbd01-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc84-c215-11db-8314-0800200c9a66} = {4cefbc84-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "example_cpp_decode_file", "examples\cpp\decode\file\example_cpp_decode_file.vcproj", "{4cefbe00-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc84-c215-11db-8314-0800200c9a66} = {4cefbc84-c215-11db-8314-0800200c9a66} + {4cefbc86-c215-11db-8314-0800200c9a66} = {4cefbc86-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "example_cpp_encode_file", "examples\cpp\encode\file\example_cpp_encode_file.vcproj", "{4cefbe01-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc84-c215-11db-8314-0800200c9a66} = {4cefbc84-c215-11db-8314-0800200c9a66} + {4cefbc86-c215-11db-8314-0800200c9a66} = {4cefbc86-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "flac", "src\flac\flac.vcproj", "{4cefbc7d-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc81-c215-11db-8314-0800200c9a66} = {4cefbc81-c215-11db-8314-0800200c9a66} + {4cefbc89-c215-11db-8314-0800200c9a66} = {4cefbc89-c215-11db-8314-0800200c9a66} + {4cefbc92-c215-11db-8314-0800200c9a66} = {4cefbc92-c215-11db-8314-0800200c9a66} + {4cefbc80-c215-11db-8314-0800200c9a66} = {4cefbc80-c215-11db-8314-0800200c9a66} + {4cefbc8a-c215-11db-8314-0800200c9a66} = {4cefbc8a-c215-11db-8314-0800200c9a66} + {4cefbc84-c215-11db-8314-0800200c9a66} = {4cefbc84-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "iffscan", "src\flac\iffscan.vcproj", "{4cefbc94-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc84-c215-11db-8314-0800200c9a66} = {4cefbc84-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "flac_mac", "src\monkeys_audio_utilities\flac_mac\flac_mac.vcproj", "{4cefbc7e-c215-11db-8314-0800200c9a66}" +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "flac_ren", "src\monkeys_audio_utilities\flac_ren\flac_ren.vcproj", "{4cefbc7f-c215-11db-8314-0800200c9a66}" +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "flacdiff", "src\utils\flacdiff\flacdiff.vcproj", "{4cefbc93-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc86-c215-11db-8314-0800200c9a66} = {4cefbc86-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "flactimer", "src\utils\flactimer\flactimer.vcproj", "{4cefbc95-c215-11db-8314-0800200c9a66}" +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "getopt_static", "src\share\getopt\getopt_static.vcproj", "{4cefbc80-c215-11db-8314-0800200c9a66}" +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "grabbag_static", "src\share\grabbag\grabbag_static.vcproj", "{4cefbc81-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc84-c215-11db-8314-0800200c9a66} = {4cefbc84-c215-11db-8314-0800200c9a66} + {4cefbc89-c215-11db-8314-0800200c9a66} = {4cefbc89-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "in_flac", "src\plugin_winamp2\in_flac.vcproj", "{4cefbc82-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc84-c215-11db-8314-0800200c9a66} = {4cefbc84-c215-11db-8314-0800200c9a66} + {4cefbc8a-c215-11db-8314-0800200c9a66} = {4cefbc8a-c215-11db-8314-0800200c9a66} + {4cefbc81-c215-11db-8314-0800200c9a66} = {4cefbc81-c215-11db-8314-0800200c9a66} + {4cefbc88-c215-11db-8314-0800200c9a66} = {4cefbc88-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "libFLAC_dynamic", "src\libFLAC\libFLAC_dynamic.vcproj", "{4cefbc83-c215-11db-8314-0800200c9a66}" +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "libFLAC_static", "src\libFLAC\libFLAC_static.vcproj", "{4cefbc84-c215-11db-8314-0800200c9a66}" +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "libFLAC++_dynamic", "src\libFLAC++\libFLAC++_dynamic.vcproj", "{4cefbc85-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc83-c215-11db-8314-0800200c9a66} = {4cefbc83-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "libFLAC++_static", "src\libFLAC++\libFLAC++_static.vcproj", "{4cefbc86-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc84-c215-11db-8314-0800200c9a66} = {4cefbc84-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "metaflac", "src\metaflac\metaflac.vcproj", "{4cefbc87-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc84-c215-11db-8314-0800200c9a66} = {4cefbc84-c215-11db-8314-0800200c9a66} + {4cefbc80-c215-11db-8314-0800200c9a66} = {4cefbc80-c215-11db-8314-0800200c9a66} + {4cefbc92-c215-11db-8314-0800200c9a66} = {4cefbc92-c215-11db-8314-0800200c9a66} + {4cefbc89-c215-11db-8314-0800200c9a66} = {4cefbc89-c215-11db-8314-0800200c9a66} + {4cefbc81-c215-11db-8314-0800200c9a66} = {4cefbc81-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "plugin_common_static", "src\plugin_common\plugin_common_static.vcproj", "{4cefbc88-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc81-c215-11db-8314-0800200c9a66} = {4cefbc81-c215-11db-8314-0800200c9a66} + {4cefbc84-c215-11db-8314-0800200c9a66} = {4cefbc84-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "replaygain_analysis_static", "src\share\replaygain_analysis\replaygain_analysis_static.vcproj", "{4cefbc89-c215-11db-8314-0800200c9a66}" +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "replaygain_synthesis_static", "src\share\replaygain_synthesis\replaygain_synthesis_static.vcproj", "{4cefbc8a-c215-11db-8314-0800200c9a66}" +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "test_cuesheet", "src\test_grabbag\cuesheet\test_cuesheet.vcproj", "{4cefbc8b-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc81-c215-11db-8314-0800200c9a66} = {4cefbc81-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "test_libFLAC", "src\test_libFLAC\test_libFLAC.vcproj", "{4cefbc8c-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc8e-c215-11db-8314-0800200c9a66} = {4cefbc8e-c215-11db-8314-0800200c9a66} + {4cefbc81-c215-11db-8314-0800200c9a66} = {4cefbc81-c215-11db-8314-0800200c9a66} + {4cefbc84-c215-11db-8314-0800200c9a66} = {4cefbc84-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "test_libFLAC++", "src\test_libFLAC++\test_libFLAC++.vcproj", "{4cefbc8d-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc86-c215-11db-8314-0800200c9a66} = {4cefbc86-c215-11db-8314-0800200c9a66} + {4cefbc81-c215-11db-8314-0800200c9a66} = {4cefbc81-c215-11db-8314-0800200c9a66} + {4cefbc8e-c215-11db-8314-0800200c9a66} = {4cefbc8e-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "test_libs_common_static", "src\test_libs_common\test_libs_common_static.vcproj", "{4cefbc8e-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc84-c215-11db-8314-0800200c9a66} = {4cefbc84-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "test_picture", "src\test_grabbag\picture\test_picture.vcproj", "{4cefbc8f-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc81-c215-11db-8314-0800200c9a66} = {4cefbc81-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "test_seeking", "src\test_seeking\test_seeking.vcproj", "{4cefbc90-c215-11db-8314-0800200c9a66}" + ProjectSection(ProjectDependencies) = postProject + {4cefbc84-c215-11db-8314-0800200c9a66} = {4cefbc84-c215-11db-8314-0800200c9a66} + EndProjectSection +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "test_streams", "src\test_streams\test_streams.vcproj", "{4cefbc91-c215-11db-8314-0800200c9a66}" +EndProject +Project("{4cefbc7c-c215-11db-8314-0800200c9a66}") = "utf8_static", "src\share\utf8\utf8_static.vcproj", "{4cefbc92-c215-11db-8314-0800200c9a66}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4cefbc7d-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc7d-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc7d-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc7d-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc7e-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc7e-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc7e-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc7e-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc7f-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc7f-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc7f-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc7f-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc80-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc80-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc80-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc80-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc81-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc81-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc81-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc81-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc82-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc82-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc82-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc82-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc83-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc83-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc83-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc83-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc84-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc84-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc84-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc84-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc85-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc85-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc85-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc85-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc86-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc86-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc86-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc86-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc87-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc87-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc87-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc87-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc88-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc88-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc88-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc88-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc89-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc89-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc89-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc89-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc8a-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc8a-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc8a-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc8a-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc8b-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc8b-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc8b-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc8b-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc8c-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc8c-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc8c-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc8c-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc8d-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc8d-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc8d-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc8d-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc8e-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc8e-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc8e-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc8e-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc8f-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc8f-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc8f-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc8f-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc90-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc90-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc90-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc90-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc91-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc91-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc91-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc91-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc92-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc92-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc92-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc92-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc93-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc93-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc93-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc93-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc94-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc94-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc94-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc94-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbc95-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbc95-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbc95-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbc95-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbd00-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbd00-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbd00-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbd00-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbd01-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbd01-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbd01-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbd01-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbe00-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbe00-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbe00-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbe00-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + {4cefbe01-c215-11db-8314-0800200c9a66}.Debug|Win32.ActiveCfg = Debug|Win32 + {4cefbe01-c215-11db-8314-0800200c9a66}.Debug|Win32.Build.0 = Debug|Win32 + {4cefbe01-c215-11db-8314-0800200c9a66}.Release|Win32.ActiveCfg = Release|Win32 + {4cefbe01-c215-11db-8314-0800200c9a66}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/3rdparty/libflac/Makefile.am b/3rdparty/libflac/Makefile.am new file mode 100644 index 0000000..5627bb5 --- /dev/null +++ b/3rdparty/libflac/Makefile.am @@ -0,0 +1,52 @@ +# FLAC - Free Lossless Audio Codec +# Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This file is part the FLAC project. FLAC is comprised of several +# components distributed under difference licenses. The codec libraries +# are distributed under Xiph.Org's BSD-like license (see the file +# COPYING.Xiph in this distribution). All other programs, libraries, and +# plugins are distributed under the GPL (see COPYING.GPL). The documentation +# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the +# FLAC distribution contains at the top the terms under which it may be +# distributed. +# +# Since this particular file is relevant to all components of FLAC, +# it may be distributed under the Xiph.Org license, which is the least +# restrictive of those mentioned above. See the file COPYING.Xiph in this +# distribution. + +# +# automake provides the following useful targets: +# +# all: build all programs and libraries using the current +# configuration (set by configure) +# +# check: build and run all self-tests +# +# clean: remove everything except what's required to build everything +# +# distclean: remove everything except what goes in the distribution +# + +AUTOMAKE_OPTIONS = foreign 1.7 + +SUBDIRS = doc include m4 man src examples test build obj + +DISTCLEANFILES = libtool-disable-static + +EXTRA_DIST = \ + COPYING.FDL \ + COPYING.GPL \ + COPYING.LGPL \ + COPYING.Xiph \ + FLAC.dsw \ + FLAC.sln \ + Makefile.lite \ + all.dsp \ + all_dynamic.dsp \ + all_static.dsp \ + autogen.sh \ + config.rpath \ + depcomp \ + ltmain.sh \ + strip_non_asm_libtool_args.sh diff --git a/3rdparty/libflac/Makefile.in b/3rdparty/libflac/Makefile.in new file mode 100644 index 0000000..4dafa35 --- /dev/null +++ b/3rdparty/libflac/Makefile.in @@ -0,0 +1,673 @@ +# Makefile.in generated by automake 1.7.9 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# FLAC - Free Lossless Audio Codec +# Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This file is part the FLAC project. FLAC is comprised of several +# components distributed under difference licenses. The codec libraries +# are distributed under Xiph.Org's BSD-like license (see the file +# COPYING.Xiph in this distribution). All other programs, libraries, and +# plugins are distributed under the GPL (see COPYING.GPL). The documentation +# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the +# FLAC distribution contains at the top the terms under which it may be +# distributed. +# +# Since this particular file is relevant to all components of FLAC, +# it may be distributed under the Xiph.Org license, which is the least +# restrictive of those mentioned above. See the file COPYING.Xiph in this +# distribution. + +# +# automake provides the following useful targets: +# +# all: build all programs and libraries using the current +# configuration (set by configure) +# +# check: build and run all self-tests +# +# clean: remove everything except what's required to build everything +# +# distclean: remove everything except what goes in the distribution +# + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_FALSE = @DEBUG_FALSE@ +DEBUG_TRUE = @DEBUG_TRUE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLAC__TEST_LEVEL = @FLAC__TEST_LEVEL@ +FLAC__TEST_WITH_VALGRIND = @FLAC__TEST_WITH_VALGRIND@ +FLaC__CPU_IA32_FALSE = @FLaC__CPU_IA32_FALSE@ +FLaC__CPU_IA32_TRUE = @FLaC__CPU_IA32_TRUE@ +FLaC__CPU_PPC_FALSE = @FLaC__CPU_PPC_FALSE@ +FLaC__CPU_PPC_TRUE = @FLaC__CPU_PPC_TRUE@ +FLaC__CPU_SPARC_FALSE = @FLaC__CPU_SPARC_FALSE@ +FLaC__CPU_SPARC_TRUE = @FLaC__CPU_SPARC_TRUE@ +FLaC__HAS_AS_FALSE = @FLaC__HAS_AS_FALSE@ +FLaC__HAS_AS_TRUE = @FLaC__HAS_AS_TRUE@ +FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@ +FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@ +FLaC__HAS_DOCBOOK_TO_MAN_FALSE = @FLaC__HAS_DOCBOOK_TO_MAN_FALSE@ +FLaC__HAS_DOCBOOK_TO_MAN_TRUE = @FLaC__HAS_DOCBOOK_TO_MAN_TRUE@ +FLaC__HAS_DOXYGEN_FALSE = @FLaC__HAS_DOXYGEN_FALSE@ +FLaC__HAS_DOXYGEN_TRUE = @FLaC__HAS_DOXYGEN_TRUE@ +FLaC__HAS_GAS_FALSE = @FLaC__HAS_GAS_FALSE@ +FLaC__HAS_GAS_TRUE = @FLaC__HAS_GAS_TRUE@ +FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@ +FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@ +FLaC__HAS_NASM_FALSE = @FLaC__HAS_NASM_FALSE@ +FLaC__HAS_NASM_TRUE = @FLaC__HAS_NASM_TRUE@ +FLaC__HAS_OGG_FALSE = @FLaC__HAS_OGG_FALSE@ +FLaC__HAS_OGG_TRUE = @FLaC__HAS_OGG_TRUE@ +FLaC__HAS_XMMS_FALSE = @FLaC__HAS_XMMS_FALSE@ +FLaC__HAS_XMMS_TRUE = @FLaC__HAS_XMMS_TRUE@ +FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE@ +FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE@ +FLaC__NO_ASM_FALSE = @FLaC__NO_ASM_FALSE@ +FLaC__NO_ASM_TRUE = @FLaC__NO_ASM_TRUE@ +FLaC__SSE_OS_FALSE = @FLaC__SSE_OS_FALSE@ +FLaC__SSE_OS_TRUE = @FLaC__SSE_OS_TRUE@ +FLaC__SYS_DARWIN_FALSE = @FLaC__SYS_DARWIN_FALSE@ +FLaC__SYS_DARWIN_TRUE = @FLaC__SYS_DARWIN_TRUE@ +FLaC__SYS_LINUX_FALSE = @FLaC__SYS_LINUX_FALSE@ +FLaC__SYS_LINUX_TRUE = @FLaC__SYS_LINUX_TRUE@ +FLaC__USE_3DNOW_FALSE = @FLaC__USE_3DNOW_FALSE@ +FLaC__USE_3DNOW_TRUE = @FLaC__USE_3DNOW_TRUE@ +FLaC__USE_ALTIVEC_FALSE = @FLaC__USE_ALTIVEC_FALSE@ +FLaC__USE_ALTIVEC_TRUE = @FLaC__USE_ALTIVEC_TRUE@ +FLaC__WITH_CPPLIBS_FALSE = @FLaC__WITH_CPPLIBS_FALSE@ +FLaC__WITH_CPPLIBS_TRUE = @FLaC__WITH_CPPLIBS_TRUE@ +GAS = @GAS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +MINGW_WINSOCK_LIBS = @MINGW_WINSOCK_LIBS@ +NASM = @NASM@ +OBJEXT = @OBJEXT@ +OBJ_FORMAT = @OBJ_FORMAT@ +OGG_CFLAGS = @OGG_CFLAGS@ +OGG_LIBS = @OGG_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XMMS_CFLAGS = @XMMS_CFLAGS@ +XMMS_CONFIG = @XMMS_CONFIG@ +XMMS_DATA_DIR = @XMMS_DATA_DIR@ +XMMS_EFFECT_PLUGIN_DIR = @XMMS_EFFECT_PLUGIN_DIR@ +XMMS_GENERAL_PLUGIN_DIR = @XMMS_GENERAL_PLUGIN_DIR@ +XMMS_INPUT_PLUGIN_DIR = @XMMS_INPUT_PLUGIN_DIR@ +XMMS_LIBS = @XMMS_LIBS@ +XMMS_OUTPUT_PLUGIN_DIR = @XMMS_OUTPUT_PLUGIN_DIR@ +XMMS_PLUGIN_DIR = @XMMS_PLUGIN_DIR@ +XMMS_VERSION = @XMMS_VERSION@ +XMMS_VISUALIZATION_PLUGIN_DIR = @XMMS_VISUALIZATION_PLUGIN_DIR@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +AUTOMAKE_OPTIONS = foreign 1.7 + +SUBDIRS = doc include m4 man src examples test build obj + +DISTCLEANFILES = libtool-disable-static + +EXTRA_DIST = \ + COPYING.FDL \ + COPYING.GPL \ + COPYING.LGPL \ + COPYING.Xiph \ + FLAC.dsw \ + FLAC.sln \ + Makefile.lite \ + all.dsp \ + all_dynamic.dsp \ + all_static.dsp \ + autogen.sh \ + config.rpath \ + depcomp \ + ltmain.sh \ + strip_non_asm_libtool_args.sh + +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive +DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure AUTHORS \ + Makefile.am aclocal.m4 config.guess config.h.in config.rpath \ + config.sub configure.in depcomp install-sh ltmain.sh missing \ + mkinstalldirs +DIST_SUBDIRS = $(SUBDIRS) +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: + +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) + +$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h + +$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOHEADER) + touch $(srcdir)/config.h.in + +distclean-hdr: + -rm -f config.h stamp-h1 + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if (etags --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + else \ + include_option=--include; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = . +distdir = $(PACKAGE)-$(VERSION) + +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } + +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkinstalldirs) $(distdir)/src/libFLAC $(distdir)/src/libFLAC++ + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist dist-all: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + $(am__remove_distdir) + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ + && rm -f $(distdir).tar.gz \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @echo "$(distdir).tar.gz is ready for distribution" | \ + sed 'h;s/./=/g;p;x;p;x' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f $(CONFIG_CLEAN_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive dist dist-all dist-gzip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-recursive distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am dvi-recursive info info-am \ + info-recursive install install-am install-data install-data-am \ + install-data-recursive install-exec install-exec-am \ + install-exec-recursive install-info install-info-am \ + install-info-recursive install-man install-recursive \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am installdirs-recursive maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive mostlyclean \ + mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ + pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ + tags-recursive uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/3rdparty/libflac/Makefile.lite b/3rdparty/libflac/Makefile.lite new file mode 100644 index 0000000..92e5822 --- /dev/null +++ b/3rdparty/libflac/Makefile.lite @@ -0,0 +1,106 @@ +# FLAC - Free Lossless Audio Codec +# Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This file is part the FLAC project. FLAC is comprised of several +# components distributed under difference licenses. The codec libraries +# are distributed under Xiph.Org's BSD-like license (see the file +# COPYING.Xiph in this distribution). All other programs, libraries, and +# plugins are distributed under the GPL (see COPYING.GPL). The documentation +# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the +# FLAC distribution contains at the top the terms under which it may be +# distributed. +# +# Since this particular file is relevant to all components of FLAC, +# it may be distributed under the Xiph.Org license, which is the least +# restrictive of those mentioned above. See the file COPYING.Xiph in this +# distribution. + +# +# GNU Makefile +# +# Useful targets +# +# all : build all libraries and programs in the default configuration (currently 'release') +# debug : build all libraries and programs in debug mode +# valgrind: build all libraries and programs in debug mode, dynamically linked and ready for valgrind +# release : build all libraries and programs in release mode +# test : run the unit and stream tests +# clean : remove all non-distro files +# + +topdir = . + +.PHONY: all doc src examples libFLAC libFLAC++ share plugin_common plugin_xmms flac metaflac test_grabbag test_libFLAC test_libFLAC++ test_seeking test_streams +all: doc src examples + +DEFAULT_CONFIG = release + +CONFIG = $(DEFAULT_CONFIG) + +debug : CONFIG = debug +valgrind: CONFIG = valgrind +release : CONFIG = release + +debug : all +valgrind: all +release : all + +doc: + (cd $@ && $(MAKE) -f Makefile.lite) + +src: + (cd $@ && $(MAKE) -f Makefile.lite $(CONFIG)) + +examples: src + (cd $@ && $(MAKE) -f Makefile.lite $(CONFIG)) + +libFLAC: + (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG)) + +libFLAC++: libFLAC + (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG)) + +share: libFLAC + (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG)) + +flac: libFLAC share + (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG)) + +metaflac: libFLAC share + (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG)) + +plugin_common: libFLAC + (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG)) + +plugin_xmms: libFLAC plugin_common + (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG)) + +test_seeking: libFLAC + (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG)) + +test_streams: libFLAC + (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG)) + +test_grabbag: share + (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG)) + +test_libFLAC: libFLAC + (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG)) + +test_libFLAC++: libFLAC libFLAC++ + (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG)) + +test: debug + (cd test && $(MAKE) -f Makefile.lite debug) + +testv: valgrind + (cd test && $(MAKE) -f Makefile.lite valgrind) + +testr: release + (cd test && $(MAKE) -f Makefile.lite release) + +clean: + -(cd doc && $(MAKE) -f Makefile.lite clean) + -(cd src && $(MAKE) -f Makefile.lite clean) + -(cd examples && $(MAKE) -f Makefile.lite clean) + -(cd test && $(MAKE) -f Makefile.lite clean) diff --git a/3rdparty/libflac/README b/3rdparty/libflac/README new file mode 100644 index 0000000..f4a461b --- /dev/null +++ b/3rdparty/libflac/README @@ -0,0 +1,254 @@ +/* FLAC - Free Lossless Audio Codec + * Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson + * + * This file is part the FLAC project. FLAC is comprised of several + * components distributed under difference licenses. The codec libraries + * are distributed under Xiph.Org's BSD-like license (see the file + * COPYING.Xiph in this distribution). All other programs, libraries, and + * plugins are distributed under the LGPL or GPL (see COPYING.LGPL and + * COPYING.GPL). The documentation is distributed under the Gnu FDL (see + * COPYING.FDL). Each file in the FLAC distribution contains at the top the + * terms under which it may be distributed. + * + * Since this particular file is relevant to all components of FLAC, + * it may be distributed under the Xiph.Org license, which is the least + * restrictive of those mentioned above. See the file COPYING.Xiph in this + * distribution. + */ + + +FLAC (http://flac.sourceforge.net/) is an Open Source lossless audio +codec developed by Josh Coalson. + +FLAC is comprised of + * `libFLAC', a library which implements reference encoders and + decoders for native FLAC and Ogg FLAC, and a metadata interface + * `libFLAC++', a C++ object wrapper library around libFLAC + * `flac', a command-line program for encoding and decoding files + * `metaflac', a command-line program for viewing and editing FLAC + metadata + * player plugins for XMMS and Winamp + * user and API documentation + +The libraries (libFLAC, libFLAC++) are +licensed under Xiph.org's BSD-like license (see COPYING.Xiph). All other +programs and plugins are licensed under the GNU General Public License +(see COPYING.GPL). The documentation is licensed under the GNU Free +Documentation License (see COPYING.FDL). + + +=============================================================================== +FLAC - 1.2.1 - Contents +=============================================================================== + +- Introduction +- Prerequisites +- Note to embedded developers +- Building in a GNU environment +- Building with Makefile.lite +- Building with MSVC +- Building on Mac OS X + + +=============================================================================== +Introduction +=============================================================================== + +This is the source release for the FLAC project. See + + doc/html/index.html + +for full documentation. + +A brief description of the directory tree: + + doc/ the HTML documentation + include/ public include files for libFLAC and libFLAC++ + man/ the man page for `flac' + src/ the source code and private headers + test/ the test scripts + + +=============================================================================== +Prerequisites +=============================================================================== + +To build FLAC with support for Ogg FLAC you must have built and installed +libogg according to the specific instructions below. You must have +libogg 1.1.2 or greater, or there will be seeking problems with Ogg FLAC. + +If you are building on x86 and want the assembly optimizations, you will +need to have NASM >= 0.98.30 installed according to the specific instructions +below. + + +=============================================================================== +Note to embedded developers +=============================================================================== + +libFLAC has grown larger over time as more functionality has been +included, but much of it may be unnecessary for a particular embedded +implementation. Unused parts may be pruned by some simple editing of +configure.in and src/libFLAC/Makefile.am; the following dependency +graph shows which modules may be pruned without breaking things +further down: + +metadata.h + stream_decoder.h + format.h + +stream_encoder.h + stream_decoder.h + format.h + +stream_decoder.h + format.h + +In other words, for pure decoding applications, both the stream encoder +and metadata editing interfaces can be safely removed. + +There is a section dedicated to embedded use in the libFLAC API +HTML documentation (see doc/html/api/index.html). + +Also, there are several places in the libFLAC code with comments marked +with "OPT:" where a #define can be changed to enable code that might be +faster on a specific platform. Experimenting with these can yield faster +binaries. + + +=============================================================================== +Building in a GNU environment +=============================================================================== + +FLAC uses autoconf and libtool for configuring and building. +Better documentation for these will be forthcoming, but in +general, this should work: + +./configure && make && make check && make install + +The 'make check' step is optional; omit it to skip all the tests, +which can take several hours and use around 70-80 megs of disk space. +Even though it will stop with an explicit message on any failure, it +does print out a lot of stuff so you might want to capture the output +to a file if you're having a problem. Also, don't run 'make check' +as root because it confuses some of the tests. + +NOTE: Despite our best efforts it's entirely possible to have +problems when using older versions of autoconf, automake, or +libtool. If you have the latest versions and still can't get it +to work, see the next section on Makefile.lite. + +There are a few FLAC-specific arguments you can give to +`configure': + +--enable-debug : Builds everything with debug symbols and some +extra (and more verbose) error checking. + +--disable-asm-optimizations : Disables the compilation of the +assembly routines. Many routines have assembly versions for +speed and `configure' is pretty good about knowing what is +supported, but you can use this option to build only from the +C sources. May be necessary for building on OS X (Intel) + +--enable-sse : If you are building for an x86 CPU that supports +SSE instructions, you can enable some of the faster routines +if your operating system also supports SSE instructions. flac +can tell if the CPU supports the instructions but currently has +no way to test if the OS does, so if it does, you must pass +this argument to configure to use the SSE routines. If flac +crashes when built with this option you will have to go back and +configure without --enable-sse. Note that +--disable-asm-optimizations implies --disable-sse. + +--enable-local-xmms-plugin : Installs the FLAC XMMS plugin in +$HOME/.xmms/Plugins, instead of the global XMMS plugin area +(usually /usr/lib/xmms/Input). + +--with-ogg= +--with-xmms-prefix= +--with-libiconv-prefix= +Use these if you have these packages but configure can't find them. + +If you want to build completely from scratch (i.e. starting with just +configure.in and Makefile.am) you should be able to just run 'autogen.sh' +but make sure and read the comments in that file first. + + +=============================================================================== +Building with Makefile.lite +=============================================================================== + +There is a more lightweight build system for do-it-yourself-ers. +It is also useful if configure isn't working, which may be the +case since lately we've had some problems with different versions +of automake and libtool. The Makefile.lite system should work +on GNU systems with few or no adjustments. + +From the top level just 'make -f Makefile.lite'. You can +specify zero or one optional target from 'release', 'debug', +'test', or 'clean'. The default is 'release'. There is no +'install' target but everything you need will end up in the +obj/ directory. + +If you are not on an x86 system or you don't have nasm, you +may have to change the DEFINES in src/libFLAC/Makefile.lite. If +you don't have nasm, remove -DFLAC__HAS_NASM. If your target is +not an x86, change -DFLAC__CPU_IA32 to -DFLAC__CPU_UNKNOWN. + + +=============================================================================== +Building with MSVC +=============================================================================== + +There are .dsp projects and a master FLAC.dsw workspace to build all +the libraries and executables with MSVC6. There are also .vcproj +projects and a master FLAC.sln solution to build all the libraries and +executables with VC++ 2005. + +Prerequisite: you must have the Ogg libraries installed as described +later. + +Prerequisite: you must have nasm installed, and nasmw.exe must be in +your PATH, or the path to nasmw.exe must be added to the list of +directories for executable files in the MSVC global options. + +MSVC6: +To build everything, run Developer Studio, do File|Open Workspace, +and open FLAC.dsw. Select "Build | Set active configuration..." +from the menu, then in the dialog, select "All - Win32 Release" (or +Debug if you prefer). Click "Ok" then hit F7 to build. + +VC++ 2005: +To build everything, run Visual Studio, do File|Open and open FLAC.sln. +From the dropdown in the toolbar, select "Release" instead of "Debug", +then hit F7 to build. + +Either way, this will build all libraries both statically (e.g. +obj\release\lib\libFLAC_static.lib) and as DLLs (e.g. +obj\release\lib\libFLAC.dll), and it will build all binaries, statically +linked (e.g. obj\release\bin\flac.exe). + +Everything will end up in the "obj" directory. DLLs and .exe files +are all that are needed and can be copied to an installation area and +added to the PATH. The plugins have to be copied to their appropriate +place in the player area. For Winamp2 this is \Plugins. + +By default the code is configured with Ogg support. Before building FLAC +you will need to get the Ogg source distribution +(see http://xiph.org/ogg/vorbis/download/), build ogg_static.lib (load and +build win32\ogg_static.dsp), copy ogg_static.lib into FLAC's +'obj\release\lib' directory, and copy the entire include\ogg tree into +FLAC's 'include' directory (so that there is an 'ogg' directory in FLAC's +'include' directory with the files ogg.h, os_types.h and config_types.h). + +If you want to build without Ogg support, instead edit all .dsp or +.vcproj files and remove any occurrences of "/D FLAC__HAS_OGG". + + +=============================================================================== +Building on Mac OS X +=============================================================================== + +If you have Fink or a recent version of OS X with the proper autotooles, +the GNU flow above should work. The Project Builder project has been +deprecated but we are working on replacing it with an Xcode equivalent. diff --git a/3rdparty/libflac/aclocal.m4 b/3rdparty/libflac/aclocal.m4 new file mode 100644 index 0000000..19b724e --- /dev/null +++ b/3rdparty/libflac/aclocal.m4 @@ -0,0 +1,8287 @@ +# generated automatically by aclocal 1.7.9 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# Do all the work for Automake. -*- Autoconf -*- + +# This macro actually does too much some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 10 + +AC_PREREQ([2.54]) + +# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +# the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_MISSING_PROG(AMTAR, tar) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl + +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.7.9])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# +# Check to make sure that the build environment is sane. +# + +# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# -*- Autoconf -*- + + +# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# AM_AUX_DIR_EXPAND + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +# Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50]) + +AC_DEFUN([AM_AUX_DIR_EXPAND], [ +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# AM_PROG_INSTALL_STRIP + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# -*- Autoconf -*- +# Copyright (C) 2003 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 1 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# serial 5 -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + : > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # (even with -Werror). So we grep stderr for any message + # that says an option was ignored. + if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking Speeds up one-time builds + --enable-dependency-tracking Do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +#serial 2 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 5 + +AC_PREREQ(2.52) + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]) +fi])]) + +# Add --enable-maintainer-mode option to configure. +# From Jim Meyering + +# Copyright 1996, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +AC_DEFUN([AM_MAINTAINER_MODE], +[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode is disabled by default + AC_ARG_ENABLE(maintainer-mode, +[ --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer], + USE_MAINTAINER_MODE=$enableval, + USE_MAINTAINER_MODE=no) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST(MAINT)dnl +] +) + +AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 47 AC_PROG_LIBTOOL + + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If this macro is not defined by Autoconf, define it here. +m4_ifdef([AC_PROVIDE_IFELSE], + [], + [m4_define([AC_PROVIDE_IFELSE], + [m4_ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AC_PROG_LIBTOOL +# --------------- +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. + AC_PROVIDE_IFELSE([AC_PROG_CXX], + [AC_LIBTOOL_CXX], + [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX + ])]) +dnl And a similar setup for Fortran 77 support + AC_PROVIDE_IFELSE([AC_PROG_F77], + [AC_LIBTOOL_F77], + [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +])]) + +dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. + AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [ifdef([AC_PROG_GCJ], + [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([A][M_PROG_GCJ], + [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +])])# AC_PROG_LIBTOOL + + +# _AC_PROG_LIBTOOL +# ---------------- +AC_DEFUN([_AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +])# _AC_PROG_LIBTOOL + + +# AC_LIBTOOL_SETUP +# ---------------- +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +AC_ARG_WITH([pic], + [AC_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +AC_DEFUN([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +AC_DEFUN([_LT_COMPILER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +AC_DEFUN([_LT_LINKER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_LINKER_BOILERPLATE + + +# _LT_AC_SYS_LIBPATH_AIX +# ---------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_AC_SYS_LIBPATH_AIX + + +# _LT_AC_SHELL_INIT(ARG) +# ---------------------- +AC_DEFUN([_LT_AC_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_AC_SHELL_INIT + + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[_LT_AC_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string="`eval $cmd`") 2>/dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +])])# _LT_AC_PROG_ECHO_BACKSLASH + + +# _LT_AC_LOCK +# ----------- +AC_DEFUN([_LT_AC_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; + ]) +esac + +need_locks="$enable_libtool_lock" + +])# _LT_AC_LOCK + + +# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $rm conftest* +]) + +if test x"[$]$2" = xyes; then + ifelse([$5], , :, [$5]) +else + ifelse([$6], , :, [$6]) +fi +])# AC_LIBTOOL_COMPILER_OPTION + + +# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ------------------------------------------------------------ +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +[AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + ifelse([$4], , :, [$4]) +else + ifelse([$5], , :, [$5]) +fi +])# AC_LIBTOOL_LINKER_OPTION + + +# AC_LIBTOOL_SYS_MAX_CMD_LEN +# -------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +[# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, 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*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for *BSD + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +])# AC_LIBTOOL_SYS_MAX_CMD_LEN + + +# _LT_AC_CHECK_DLFCN +# -------------------- +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h)dnl +])# _LT_AC_CHECK_DLFCN + + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ------------------------------------------------------------------ +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_unknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + + +# AC_LIBTOOL_DLOPEN_SELF +# ------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + + +# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +# --------------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler +AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* +]) +])# AC_LIBTOOL_PROG_CC_C_O + + +# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +# ----------------------------------------- +# Check to see if we can do hard links to lock some files if needed +AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +[AC_REQUIRE([_LT_AC_LOCK])dnl + +hard_links="nottested" +if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + + +# AC_LIBTOOL_OBJDIR +# ----------------- +AC_DEFUN([AC_LIBTOOL_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +])# AC_LIBTOOL_OBJDIR + + +# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +# ---------------------------------------------- +# Check hardcoding attributes. +AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_AC_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ + test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_AC_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_AC_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + + +# AC_LIBTOOL_SYS_LIB_STRIP +# ------------------------ +AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +[striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +])# AC_LIBTOOL_SYS_LIB_STRIP + + +# AC_LIBTOOL_SYS_DYNAMIC_LINKER +# ----------------------------- +# PORTME Fill in your ld.so characteristics +AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +[AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + 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' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + 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 + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-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='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +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 + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + 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' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # find out which ABI we are using + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + esac + fi + rm -rf conftest* + ;; + esac + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-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='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=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=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + 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=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + 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 + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no +])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[AC_ARG_WITH([tags], + [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], + [include additional configurations @<:@automatic@:>@])], + [tagnames="$withval"]) + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + AC_MSG_WARN([output file `$ofile' does not exist]) + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) + else + AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) + fi + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in + "") ;; + *) AC_MSG_ERROR([invalid tag name: $tagname]) + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + AC_MSG_ERROR([tag name \"$tagname\" already exists]) + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_LIBTOOL_LANG_CXX_CONFIG + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + AC_LIBTOOL_LANG_F77_CONFIG + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + AC_LIBTOOL_LANG_GCJ_CONFIG + else + tagname="" + fi + ;; + + RC) + AC_LIBTOOL_LANG_RC_CONFIG + ;; + + *) + AC_MSG_ERROR([Unsupported tag name: $tagname]) + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +fi +])# _LT_AC_TAGCONFIG + + +# AC_LIBTOOL_DLOPEN +# ----------------- +# enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], + [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_DLOPEN + + +# AC_LIBTOOL_WIN32_DLL +# -------------------- +# declare package support for building win32 dll's +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_WIN32_DLL + + +# AC_ENABLE_SHARED([DEFAULT]) +# --------------------------- +# implement the --enable-shared flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +])# AC_ENABLE_SHARED + + +# AC_DISABLE_SHARED +# ----------------- +#- set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no) +])# AC_DISABLE_SHARED + + +# AC_ENABLE_STATIC([DEFAULT]) +# --------------------------- +# implement the --enable-static flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]AC_ENABLE_STATIC_DEFAULT) +])# AC_ENABLE_STATIC + + +# AC_DISABLE_STATIC +# ----------------- +# set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no) +])# AC_DISABLE_STATIC + + +# AC_ENABLE_FAST_INSTALL([DEFAULT]) +# --------------------------------- +# implement the --enable-fast-install flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([fast-install], + [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +])# AC_ENABLE_FAST_INSTALL + + +# AC_DISABLE_FAST_INSTALL +# ----------------------- +# set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no) +])# AC_DISABLE_FAST_INSTALL + + +# AC_LIBTOOL_PICMODE([MODE]) +# -------------------------- +# implement the --with-pic flag +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default) +])# AC_LIBTOOL_PICMODE + + +# AC_PROG_EGREP +# ------------- +# This is predefined starting with Autoconf 2.54, so this conditional +# definition can be removed once we require Autoconf 2.54 or later. +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], + [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) +])]) + + +# AC_PATH_TOOL_PREFIX +# ------------------- +# find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +])# AC_PATH_TOOL_PREFIX + + +# AC_PATH_MAGIC +# ------------- +# find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# AC_PATH_MAGIC + + +# AC_PROG_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH([gnu-ld], + [AC_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no]) +AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case "$host_cpu" in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown +])# AC_DEPLIBS_CHECK_METHOD + + +# AC_PROG_NM +# ---------- +# find the pathname to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + esac + fi + done + IFS="$lt_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# AC_CHECK_LIBM +# ------------- +# check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +])# AC_CHECK_LIBM + + +# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL +# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If +# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will +# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_CONVENIENCE + + +# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl installable library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that LIBLTDL +# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If +# DIRECTORY is not provided and an installed libltdl is not found, it is +# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' +# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single +# quotes!). If your package is not flat and you're not using automake, +# define top_builddir and top_srcdir appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, lt_dlinit, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_INSTALLABLE + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _LT_AC_LANG_CXX +# --------------- +AC_DEFUN([_LT_AC_LANG_CXX], +[AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + +# _LT_AC_PROG_CXXCPP +# --------------- +AC_DEFUN([_LT_AC_PROG_CXXCPP], +[ +AC_REQUIRE([AC_PROG_CXX]) +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +fi +])# _LT_AC_PROG_CXXCPP + +# AC_LIBTOOL_F77 +# -------------- +# enable support for Fortran 77 libraries +AC_DEFUN([AC_LIBTOOL_F77], +[AC_REQUIRE([_LT_AC_LANG_F77]) +])# AC_LIBTOOL_F77 + + +# _LT_AC_LANG_F77 +# --------------- +AC_DEFUN([_LT_AC_LANG_F77], +[AC_REQUIRE([AC_PROG_F77]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +])# _LT_AC_LANG_F77 + + +# AC_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _LT_AC_LANG_GCJ +# --------------- +AC_DEFUN([_LT_AC_LANG_GCJ], +[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], + [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], + [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], + [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +])# _LT_AC_LANG_GCJ + + +# AC_LIBTOOL_RC +# -------------- +# enable support for Windows resource files +AC_DEFUN([AC_LIBTOOL_RC], +[AC_REQUIRE([LT_AC_PROG_RC]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +])# AC_LIBTOOL_RC + + +# AC_LIBTOOL_LANG_C_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +AC_DEFUN([_LT_AC_LANG_C_CONFIG], +[lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# +# Check for any special shared library compilation flags. +# +_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' + ;; + esac +fi +if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then + AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) + if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : + else + AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) + _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), + $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) + + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +# Report which librarie types wil actually be built +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# AC_LIBTOOL_LANG_CXX_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +[AC_LANG_PUSH(C++) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Dependencies to place before and after the object being linked: +_LT_AC_TAGVAR(predep_objects, $1)= +_LT_AC_TAGVAR(postdep_objects, $1)= +_LT_AC_TAGVAR(predeps, $1)= +_LT_AC_TAGVAR(postdeps, $1)= +_LT_AC_TAGVAR(compiler_lib_search_path, $1)= + +# Source file extension for C++ test sources. +ac_ext=cc + +# Object file extension for compiled C++ test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +else + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +_LT_AC_TAGVAR(ld_shlibs, $1)=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds it's shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_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' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + ;; + gnu*) + ;; + hpux9*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + *) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case "$host_cpu" in + ia64*|hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + linux*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + ;; + cxx*) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + m88k*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + sco*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; +esac +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_POSTDEP_PREDEP($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +])# AC_LIBTOOL_LANG_CXX_CONFIG + +# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +# ------------------------ +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" +ifelse([$1], [], +[#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG], +[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +# Commands used to build and install a shared archive. +archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +ifelse([$1],[], [ + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +]) +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi +])# AC_LIBTOOL_CONFIG + + +# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDGIRSTW]]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris* | sysv5*) + symcode='[[BDRT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[[]] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + + +# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +# --------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) + ifelse([$1],[CXX],[ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + sco*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + *) + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + unixware*) + ;; + vxworks*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + ccc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' + ;; + + solaris*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then + AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), + [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" + ;; +esac +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +ifelse([$1],[CXX],[ + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +],[ + runpath_var= + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)= + _LT_AC_TAGVAR(archive_expsym_cmds, $1)= + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown + _LT_AC_TAGVAR(hardcode_automatic, $1)=no + _LT_AC_TAGVAR(module_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_AC_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + _LT_CC_BASENAME([$compiler]) + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + ;; + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + tmp_addflag=' -fpic -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sunos4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds it's shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + # see comment about different semantics on the GNU ld section + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + bsdi[[45]]*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' + _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + *) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + *) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4.2uw2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv5*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_AC_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac +])# AC_LIBTOOL_PROG_LD_SHLIBS + + +# _LT_AC_FILE_LTDLL_C +# ------------------- +# Be careful that the start marker always follows a newline. +AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ +])# _LT_AC_FILE_LTDLL_C + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + +# 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. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_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 +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 $lt_ac_count -gt 10 && 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_MSG_RESULT([$SED]) +]) + +# Figure out how to run the assembler. -*- Autoconf -*- + +# serial 2 + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# AM_PROG_AS +# ---------- +AC_DEFUN([AM_PROG_AS], +[# By default we simply use the C compiler to build assembly code. +AC_REQUIRE([AC_PROG_CC]) +: ${CCAS='$(CC)'} +# Set ASFLAGS if not already set. +: ${CCASFLAGS='$(CFLAGS)'} +AC_SUBST(CCAS) +AC_SUBST(CCASFLAGS)]) + +# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- + +# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_PREREQ([2.52]) + +# serial 6 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# CFLAGS and library paths for XMMS +# written 15 December 1999 by Ben Gertzfield + +dnl Usage: +dnl AM_PATH_XMMS([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl +dnl Example: +dnl AM_PATH_XMMS(0.9.5.1, , AC_MSG_ERROR([*** XMMS >= 0.9.5.1 not installed - please install first ***])) +dnl +dnl Defines XMMS_CFLAGS, XMMS_LIBS, XMMS_DATA_DIR, XMMS_PLUGIN_DIR, +dnl XMMS_VISUALIZATION_PLUGIN_DIR, XMMS_INPUT_PLUGIN_DIR, +dnl XMMS_OUTPUT_PLUGIN_DIR, XMMS_GENERAL_PLUGIN_DIR, XMMS_EFFECT_PLUGIN_DIR, +dnl and XMMS_VERSION for your plugin pleasure. +dnl + +dnl XMMS_TEST_VERSION(AVAILABLE-VERSION, NEEDED-VERSION [, ACTION-IF-OKAY [, ACTION-IF-NOT-OKAY]]) +AC_DEFUN([XMMS_TEST_VERSION], [ + +# Determine which version number is greater. Prints 2 to stdout if +# the second number is greater, 1 if the first number is greater, +# 0 if the numbers are equal. + +# Written 15 December 1999 by Ben Gertzfield +# Revised 15 December 1999 by Jim Monty + + AC_PROG_AWK + xmms_got_version=[` $AWK ' \ +BEGIN { \ + print vercmp(ARGV[1], ARGV[2]); \ +} \ + \ +function vercmp(ver1, ver2, ver1arr, ver2arr, \ + ver1len, ver2len, \ + ver1int, ver2int, len, i, p) { \ + \ + ver1len = split(ver1, ver1arr, /\./); \ + ver2len = split(ver2, ver2arr, /\./); \ + \ + len = ver1len > ver2len ? ver1len : ver2len; \ + \ + for (i = 1; i <= len; i++) { \ + p = 1000 ^ (len - i); \ + ver1int += ver1arr[i] * p; \ + ver2int += ver2arr[i] * p; \ + } \ + \ + if (ver1int < ver2int) \ + return 2; \ + else if (ver1int > ver2int) \ + return 1; \ + else \ + return 0; \ +}' $1 $2`] + + if test $xmms_got_version -eq 2; then # failure + ifelse([$4], , :, $4) + else # success! + ifelse([$3], , :, $3) + fi +]) + +AC_DEFUN([AM_PATH_XMMS], +[ +AC_ARG_WITH(xmms-prefix,[ --with-xmms-prefix=PFX Prefix where XMMS is installed (optional)], + xmms_config_prefix="$withval", xmms_config_prefix="") +AC_ARG_WITH(xmms-exec-prefix,[ --with-xmms-exec-prefix=PFX Exec prefix where XMMS is installed (optional)], + xmms_config_exec_prefix="$withval", xmms_config_exec_prefix="") + +if test x$xmms_config_exec_prefix != x; then + xmms_config_args="$xmms_config_args --exec-prefix=$xmms_config_exec_prefix" + if test x${XMMS_CONFIG+set} != xset; then + XMMS_CONFIG=$xmms_config_exec_prefix/bin/xmms-config + fi +fi + +if test x$xmms_config_prefix != x; then + xmms_config_args="$xmms_config_args --prefix=$xmms_config_prefix" + if test x${XMMS_CONFIG+set} != xset; then + XMMS_CONFIG=$xmms_config_prefix/bin/xmms-config + fi +fi + +AC_PATH_PROG(XMMS_CONFIG, xmms-config, no) +min_xmms_version=ifelse([$1], ,0.9.5.1, $1) + +if test "$XMMS_CONFIG" = "no"; then + no_xmms=yes +else + XMMS_CFLAGS=`$XMMS_CONFIG $xmms_config_args --cflags` + XMMS_LIBS=`$XMMS_CONFIG $xmms_config_args --libs` + XMMS_VERSION=`$XMMS_CONFIG $xmms_config_args --version` + XMMS_DATA_DIR=`$XMMS_CONFIG $xmms_config_args --data-dir` + XMMS_PLUGIN_DIR=`$XMMS_CONFIG $xmms_config_args --plugin-dir` + XMMS_VISUALIZATION_PLUGIN_DIR=`$XMMS_CONFIG $xmms_config_args \ + --visualization-plugin-dir` + XMMS_INPUT_PLUGIN_DIR=`$XMMS_CONFIG $xmms_config_args --input-plugin-dir` + XMMS_OUTPUT_PLUGIN_DIR=`$XMMS_CONFIG $xmms_config_args --output-plugin-dir` + XMMS_EFFECT_PLUGIN_DIR=`$XMMS_CONFIG $xmms_config_args --effect-plugin-dir` + XMMS_GENERAL_PLUGIN_DIR=`$XMMS_CONFIG $xmms_config_args --general-plugin-dir` + + XMMS_TEST_VERSION($XMMS_VERSION, $min_xmms_version, ,no_xmms=version) +fi + +AC_MSG_CHECKING(for XMMS - version >= $min_xmms_version) + +if test "x$no_xmms" = x; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) +else + AC_MSG_RESULT(no) + + if test "$XMMS_CONFIG" = "no" ; then + echo "*** The xmms-config script installed by XMMS could not be found." + echo "*** If XMMS was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the XMMS_CONFIG environment variable to the" + echo "*** full path to xmms-config." + else + if test "$no_xmms" = "version"; then + echo "*** An old version of XMMS, $XMMS_VERSION, was found." + echo "*** You need a version of XMMS newer than $min_xmms_version." + echo "*** The latest version of XMMS is always available from" + echo "*** http://www.xmms.org/" + echo "***" + + echo "*** If you have already installed a sufficiently new version, this error" + echo "*** probably means that the wrong copy of the xmms-config shell script is" + echo "*** being found. The easiest way to fix this is to remove the old version" + echo "*** of XMMS, but you can also set the XMMS_CONFIG environment to point to the" + echo "*** correct copy of xmms-config. (In this case, you will have to" + echo "*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf" + echo "*** so that the correct libraries are found at run-time)" + fi + fi + XMMS_CFLAGS="" + XMMS_LIBS="" + ifelse([$3], , :, [$3]) +fi +AC_SUBST(XMMS_CFLAGS) +AC_SUBST(XMMS_LIBS) +AC_SUBST(XMMS_VERSION) +AC_SUBST(XMMS_DATA_DIR) +AC_SUBST(XMMS_PLUGIN_DIR) +AC_SUBST(XMMS_VISUALIZATION_PLUGIN_DIR) +AC_SUBST(XMMS_INPUT_PLUGIN_DIR) +AC_SUBST(XMMS_OUTPUT_PLUGIN_DIR) +AC_SUBST(XMMS_GENERAL_PLUGIN_DIR) +AC_SUBST(XMMS_EFFECT_PLUGIN_DIR) +]) + +# Configure paths for libogg +# Jack Moffitt 10-21-2000 +# Shamelessly stolen from Owen Taylor and Manish Singh + +dnl XIPH_PATH_OGG([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) +dnl Test for libogg, and define OGG_CFLAGS and OGG_LIBS +dnl +AC_DEFUN([XIPH_PATH_OGG], +[dnl +dnl Get the cflags and libraries +dnl +AC_ARG_WITH(ogg,[ --with-ogg=PFX Prefix where libogg is installed (optional)], ogg_prefix="$withval", ogg_prefix="") +AC_ARG_WITH(ogg-libraries,[ --with-ogg-libraries=DIR Directory where libogg library is installed (optional)], ogg_libraries="$withval", ogg_libraries="") +AC_ARG_WITH(ogg-includes,[ --with-ogg-includes=DIR Directory where libogg header files are installed (optional)], ogg_includes="$withval", ogg_includes="") +AC_ARG_ENABLE(oggtest, [ --disable-oggtest Do not try to compile and run a test Ogg program],, enable_oggtest=yes) + + if test "x$ogg_libraries" != "x" ; then + OGG_LIBS="-L$ogg_libraries" + elif test "x$ogg_prefix" != "x" ; then + OGG_LIBS="-L$ogg_prefix/lib" + elif test "x$prefix" != "xNONE" ; then + OGG_LIBS="-L$prefix/lib" + fi + + OGG_LIBS="$OGG_LIBS -logg" + + if test "x$ogg_includes" != "x" ; then + OGG_CFLAGS="-I$ogg_includes" + elif test "x$ogg_prefix" != "x" ; then + OGG_CFLAGS="-I$ogg_prefix/include" + elif test "x$prefix" != "xNONE"; then + OGG_CFLAGS="-I$prefix/include" + fi + + AC_MSG_CHECKING(for Ogg) + no_ogg="" + + + if test "x$enable_oggtest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $OGG_CFLAGS" + LIBS="$LIBS $OGG_LIBS" +dnl +dnl Now check if the installed Ogg is sufficiently new. +dnl + rm -f conf.oggtest + AC_TRY_RUN([ +#include +#include +#include +#include + +int main () +{ + system("touch conf.oggtest"); + return 0; +} + +],, no_ogg=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + + if test "x$no_ogg" = "x" ; then + AC_MSG_RESULT(yes) + ifelse([$1], , :, [$1]) + else + AC_MSG_RESULT(no) + if test -f conf.oggtest ; then + : + else + echo "*** Could not run Ogg test program, checking why..." + CFLAGS="$CFLAGS $OGG_CFLAGS" + LIBS="$LIBS $OGG_LIBS" + AC_TRY_LINK([ +#include +#include +], [ return 0; ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding Ogg or finding the wrong" + echo "*** version of Ogg. If it is not finding Ogg, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means Ogg was incorrectly installed" + echo "*** or that you have moved Ogg since it was installed." ]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + OGG_CFLAGS="" + OGG_LIBS="" + ifelse([$2], , :, [$2]) + fi + AC_SUBST(OGG_CFLAGS) + AC_SUBST(OGG_LIBS) + rm -f conf.oggtest +]) + +# iconv.m4 serial AM4 (gettext-0.11.3) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], +[ + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([iconv]) +]) + +AC_DEFUN([AM_ICONV_LINK], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + + dnl Add $INCICONV to CPPFLAGS before performing the following checks, + dnl because if the user has installed libiconv and not disabled its use + dnl via --without-libiconv-prefix, he wants to use it. The first + dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. + am_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST(LIBICONV) + AC_SUBST(LTLIBICONV) +]) + +AC_DEFUN([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi +]) + +# lib-prefix.m4 serial 4 (gettext-0.14.2) +dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) + +# lib-link.m4 serial 6 (gettext-0.14.3) +dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_PREREQ(2.50) + +dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and +dnl augments the CPPFLAGS variable. +AC_DEFUN([AC_LIB_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + ac_cv_lib[]Name[]_libs="$LIB[]NAME" + ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" + ac_cv_lib[]Name[]_cppflags="$INC[]NAME" + ]) + LIB[]NAME="$ac_cv_lib[]Name[]_libs" + LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" + INC[]NAME="$ac_cv_lib[]Name[]_cppflags" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the + dnl results of this search when this library appears as a dependency. + HAVE_LIB[]NAME=yes + undefine([Name]) + undefine([NAME]) +]) + +dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) +dnl searches for libname and the libraries corresponding to explicit and +dnl implicit dependencies, together with the specified include files and +dnl the ability to compile and link the specified testcode. If found, it +dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and +dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and +dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs +dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. +AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + + dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + + dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, + dnl because if the user has installed lib[]Name and not disabled its use + dnl via --without-lib[]Name-prefix, he wants to use it. + ac_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + + AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ + ac_save_LIBS="$LIBS" + LIBS="$LIBS $LIB[]NAME" + AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) + LIBS="$ac_save_LIBS" + ]) + if test "$ac_cv_lib[]Name" = yes; then + HAVE_LIB[]NAME=yes + AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) + AC_MSG_CHECKING([how to link with lib[]$1]) + AC_MSG_RESULT([$LIB[]NAME]) + else + HAVE_LIB[]NAME=no + dnl If $LIB[]NAME didn't lead to a usable library, we don't need + dnl $INC[]NAME either. + CPPFLAGS="$ac_save_CPPFLAGS" + LIB[]NAME= + LTLIB[]NAME= + fi + AC_SUBST([HAVE_LIB]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + undefine([Name]) + undefine([NAME]) +]) + +dnl Determine the platform dependent parameters needed to use rpath: +dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, +dnl hardcode_direct, hardcode_minus_L. +AC_DEFUN([AC_LIB_RPATH], +[ + dnl Tell automake >= 1.10 to complain if config.rpath is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) + AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE(rpath, + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib$1-prefix], +[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib + --without-lib$1-prefix don't search for lib$1 in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) + +# lib-ld.m4 serial 3 (gettext-0.13) +dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Subroutines of libtool.m4, +dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision +dnl with libtool.m4. + +dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]* | [A-Za-z]:[\\/]*)] + [re_direlt='/[^/][^/]*/\.\./'] + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(acl_cv_path_LD, +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$acl_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_LIB_PROG_LD_GNU +]) + +# codeset.m4 serial AM1 (gettext-0.10.40) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, + [AC_TRY_LINK([#include ], + [char* cs = nl_langinfo(CODESET);], + am_cv_langinfo_codeset=yes, + am_cv_langinfo_codeset=no) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have and nl_langinfo(CODESET).]) + fi +]) + diff --git a/3rdparty/libflac/all.dsp b/3rdparty/libflac/all.dsp new file mode 100644 index 0000000..8b3896b --- /dev/null +++ b/3rdparty/libflac/all.dsp @@ -0,0 +1,67 @@ +# Microsoft Developer Studio Project File - Name="all" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Generic Project" 0x010a + +CFG=all - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "all.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "all.mak" CFG="all - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "all - Win32 Release" (based on "Win32 (x86) Generic Project") +!MESSAGE "all - Win32 Debug" (based on "Win32 (x86) Generic Project") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "all" +# PROP Scc_LocalPath "." +MTL=midl.exe + +!IF "$(CFG)" == "all - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "obj\release" +# PROP Intermediate_Dir "obj\release" +# PROP Target_Dir "" + +!ELSEIF "$(CFG)" == "all - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "obj\debug" +# PROP Intermediate_Dir "obj\debug" +# PROP Target_Dir "" + +!ENDIF + +# Begin Target + +# Name "all - Win32 Release" +# Name "all - Win32 Debug" +# Begin Source File + +SOURCE=.\README +# End Source File +# End Target +# End Project diff --git a/3rdparty/libflac/all_dynamic.dsp b/3rdparty/libflac/all_dynamic.dsp new file mode 100644 index 0000000..ce110c6 --- /dev/null +++ b/3rdparty/libflac/all_dynamic.dsp @@ -0,0 +1,67 @@ +# Microsoft Developer Studio Project File - Name="all_dynamic" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Generic Project" 0x010a + +CFG=all_dynamic - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "all_dynamic.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "all_dynamic.mak" CFG="all_dynamic - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "all_dynamic - Win32 Release" (based on "Win32 (x86) Generic Project") +!MESSAGE "all_dynamic - Win32 Debug" (based on "Win32 (x86) Generic Project") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "all" +# PROP Scc_LocalPath "." +MTL=midl.exe + +!IF "$(CFG)" == "all_dynamic - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "obj\release" +# PROP Intermediate_Dir "obj\release" +# PROP Target_Dir "" + +!ELSEIF "$(CFG)" == "all_dynamic - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "obj\debug" +# PROP Intermediate_Dir "obj\debug" +# PROP Target_Dir "" + +!ENDIF + +# Begin Target + +# Name "all_dynamic - Win32 Release" +# Name "all_dynamic - Win32 Debug" +# Begin Source File + +SOURCE=.\README +# End Source File +# End Target +# End Project diff --git a/3rdparty/libflac/all_static.dsp b/3rdparty/libflac/all_static.dsp new file mode 100644 index 0000000..5914725 --- /dev/null +++ b/3rdparty/libflac/all_static.dsp @@ -0,0 +1,67 @@ +# Microsoft Developer Studio Project File - Name="all_static" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Generic Project" 0x010a + +CFG=all_static - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "all_static.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "all_static.mak" CFG="all_static - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "all_static - Win32 Release" (based on "Win32 (x86) Generic Project") +!MESSAGE "all_static - Win32 Debug" (based on "Win32 (x86) Generic Project") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "all" +# PROP Scc_LocalPath "." +MTL=midl.exe + +!IF "$(CFG)" == "all_static - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "obj\release" +# PROP Intermediate_Dir "obj\release" +# PROP Target_Dir "" + +!ELSEIF "$(CFG)" == "all_static - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "obj\debug" +# PROP Intermediate_Dir "obj\debug" +# PROP Target_Dir "" + +!ENDIF + +# Begin Target + +# Name "all_static - Win32 Release" +# Name "all_static - Win32 Debug" +# Begin Source File + +SOURCE=.\README +# End Source File +# End Target +# End Project diff --git a/3rdparty/libflac/autogen.sh b/3rdparty/libflac/autogen.sh new file mode 100644 index 0000000..6ba76d0 --- /dev/null +++ b/3rdparty/libflac/autogen.sh @@ -0,0 +1,162 @@ +#!/bin/sh +# Run this to set up the build system: configure, makefiles, etc. +# (based on the version in enlightenment's cvs) + +# Some notes: +# +# You may need to specify -I /SOME_PATH/share/aclocal in ACLOCAL_FLAGS +# if any packages FLAC relies on (autotools, libogg, libiconv) are +# installed in non-standard places. +# +# If you don't have XMMS installed at all, you should comment out +# AM_PATH_XMMS in configure.in. +# +# FLAC uses iconv but not gettext. iconv requires config.rpath which +# is supplied by gettext, which is copied in by gettextize. But we +# can't run gettextize since we do not fulfill all it's requirements +# (because we don't use it). So you may have to: +# +# cp /usr/share/gettext/config.rpath . +# +# before running autogen.sh +# +# If you are running on OS X and get errors related to the AM_ICONV +# and/or AM_LANGINFO_CODESET macros, replace those 2 lines in +# configure.in with +# +# AC_DEFINE([HAVE_ICONV], [], [Whether we have libiconv available]) LIBICONV="-liconv" +# AC_SUBST(LIBICONV) +# +# See also http://lists.xiph.org/pipermail/flac-dev/2007-September/002384.html +# +# Also watchout, if you replace ltmain.sh, there is a bug in some +# versions of libtool (or maybe autoconf) on some platforms where the +# configure-generated libtool does not have $SED defined. See also: +# +# http://lists.gnu.org/archive/html/libtool/2003-11/msg00131.html + +package="flac" + +olddir=`pwd` +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. + +cd "$srcdir" +DIE=0 + +ACLOCAL_FLAGS="-I m4 $ACLOCAL_FLAGS" + +echo "checking for autoconf... " +(autoconf --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "You must have autoconf installed to compile $package." + echo "Download the appropriate package for your distribution," + echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" + DIE=1 +} + +VERSIONGREP="sed -e s/.*[^0-9\.]\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/" +VERSIONMKMAJ="sed -e s/\([0-9][0-9]*\)[^0-9].*/\\1/" +VERSIONMKMIN="sed -e s/.*[0-9][0-9]*\.//" + +# do we need automake? +if test -r Makefile.am; then + AM_OPTIONS=`fgrep AUTOMAKE_OPTIONS Makefile.am` + AM_NEEDED=`echo $AM_OPTIONS | $VERSIONGREP` + if test x"$AM_NEEDED" = "x$AM_OPTIONS"; then + AM_NEEDED="" + fi + if test -z $AM_NEEDED; then + echo -n "checking for automake... " + AUTOMAKE=automake + ACLOCAL=aclocal + if ($AUTOMAKE --version < /dev/null > /dev/null 2>&1); then + echo "yes" + else + echo "no" + AUTOMAKE= + fi + else + echo -n "checking for automake $AM_NEEDED or later... " + majneeded=`echo $AM_NEEDED | $VERSIONMKMAJ` + minneeded=`echo $AM_NEEDED | $VERSIONMKMIN` + for am in automake-$AM_NEEDED automake$AM_NEEDED \ + automake automake-1.7 automake-1.8 automake-1.9 automake-1.10; do + ($am --version < /dev/null > /dev/null 2>&1) || continue + ver=`$am --version < /dev/null | head -n 1 | $VERSIONGREP` + maj=`echo $ver | $VERSIONMKMAJ` + min=`echo $ver | $VERSIONMKMIN` + if test $maj -eq $majneeded -a $min -ge $minneeded; then + AUTOMAKE=$am + echo $AUTOMAKE + break + fi + done + test -z $AUTOMAKE && echo "no" + echo -n "checking for aclocal $AM_NEEDED or later... " + for ac in aclocal-$AM_NEEDED aclocal$AM_NEEDED \ + aclocal aclocal-1.7 aclocal-1.8 aclocal-1.9 aclocal-1.10; do + ($ac --version < /dev/null > /dev/null 2>&1) || continue + ver=`$ac --version < /dev/null | head -n 1 | $VERSIONGREP` + maj=`echo $ver | $VERSIONMKMAJ` + min=`echo $ver | $VERSIONMKMIN` + if test $maj -eq $majneeded -a $min -ge $minneeded; then + ACLOCAL=$ac + echo $ACLOCAL + break + fi + done + test -z $ACLOCAL && echo "no" + fi + test -z $AUTOMAKE || test -z $ACLOCAL && { + echo + echo "You must have automake installed to compile $package." + echo "Download the appropriate package for your distribution," + echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" + exit 1 + } +fi + +echo -n "checking for libtool... " +for LIBTOOLIZE in libtoolize glibtoolize nope; do + ($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 && break +done +if test x$LIBTOOLIZE = xnope; then + echo "nope." + LIBTOOLIZE=libtoolize +else + echo $LIBTOOLIZE +fi +($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "You must have libtool installed to compile $package." + echo "Download the appropriate package for your system," + echo "or get the source from one of the GNU ftp sites" + echo "listed in http://www.gnu.org/order/ftp.html" + DIE=1 +} + +if test "$DIE" -eq 1; then + exit 1 +fi + +if test -z "$*"; then + echo "I am going to run ./configure with no arguments - if you wish " + echo "to pass any to it, please specify them on the $0 command line." +fi + +echo "Generating configuration files for $package, please wait...." + +echo " $ACLOCAL $ACLOCAL_FLAGS" +$ACLOCAL $ACLOCAL_FLAGS || exit 1 +echo " $LIBTOOLIZE --automake" +$LIBTOOLIZE --automake || exit 1 +echo " autoheader" +autoheader || exit 1 +echo " $AUTOMAKE --add-missing $AUTOMAKE_FLAGS" +$AUTOMAKE --add-missing $AUTOMAKE_FLAGS || exit 1 +echo " autoconf" +autoconf || exit 1 + +cd $olddir +$srcdir/configure --enable-maintainer-mode "$@" && echo diff --git a/3rdparty/libflac/build/Makefile.am b/3rdparty/libflac/build/Makefile.am new file mode 100644 index 0000000..7ec88fe --- /dev/null +++ b/3rdparty/libflac/build/Makefile.am @@ -0,0 +1,21 @@ +# FLAC - Free Lossless Audio Codec +# Copyright (C) 2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This file is part the FLAC project. FLAC is comprised of several +# components distributed under difference licenses. The codec libraries +# are distributed under Xiph.Org's BSD-like license (see the file +# COPYING.Xiph in this distribution). All other programs, libraries, and +# plugins are distributed under the GPL (see COPYING.GPL). The documentation +# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the +# FLAC distribution contains at the top the terms under which it may be +# distributed. +# +# Since this particular file is relevant to all components of FLAC, +# it may be distributed under the Xiph.Org license, which is the least +# restrictive of those mentioned above. See the file COPYING.Xiph in this +# distribution. + +EXTRA_DIST = \ + config.mk \ + exe.mk \ + lib.mk diff --git a/3rdparty/libflac/build/Makefile.in b/3rdparty/libflac/build/Makefile.in new file mode 100644 index 0000000..e3a5c2a --- /dev/null +++ b/3rdparty/libflac/build/Makefile.in @@ -0,0 +1,375 @@ +# Makefile.in generated by automake 1.7.9 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# FLAC - Free Lossless Audio Codec +# Copyright (C) 2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This file is part the FLAC project. FLAC is comprised of several +# components distributed under difference licenses. The codec libraries +# are distributed under Xiph.Org's BSD-like license (see the file +# COPYING.Xiph in this distribution). All other programs, libraries, and +# plugins are distributed under the GPL (see COPYING.GPL). The documentation +# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the +# FLAC distribution contains at the top the terms under which it may be +# distributed. +# +# Since this particular file is relevant to all components of FLAC, +# it may be distributed under the Xiph.Org license, which is the least +# restrictive of those mentioned above. See the file COPYING.Xiph in this +# distribution. + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_FALSE = @DEBUG_FALSE@ +DEBUG_TRUE = @DEBUG_TRUE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLAC__TEST_LEVEL = @FLAC__TEST_LEVEL@ +FLAC__TEST_WITH_VALGRIND = @FLAC__TEST_WITH_VALGRIND@ +FLaC__CPU_IA32_FALSE = @FLaC__CPU_IA32_FALSE@ +FLaC__CPU_IA32_TRUE = @FLaC__CPU_IA32_TRUE@ +FLaC__CPU_PPC_FALSE = @FLaC__CPU_PPC_FALSE@ +FLaC__CPU_PPC_TRUE = @FLaC__CPU_PPC_TRUE@ +FLaC__CPU_SPARC_FALSE = @FLaC__CPU_SPARC_FALSE@ +FLaC__CPU_SPARC_TRUE = @FLaC__CPU_SPARC_TRUE@ +FLaC__HAS_AS_FALSE = @FLaC__HAS_AS_FALSE@ +FLaC__HAS_AS_TRUE = @FLaC__HAS_AS_TRUE@ +FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@ +FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@ +FLaC__HAS_DOCBOOK_TO_MAN_FALSE = @FLaC__HAS_DOCBOOK_TO_MAN_FALSE@ +FLaC__HAS_DOCBOOK_TO_MAN_TRUE = @FLaC__HAS_DOCBOOK_TO_MAN_TRUE@ +FLaC__HAS_DOXYGEN_FALSE = @FLaC__HAS_DOXYGEN_FALSE@ +FLaC__HAS_DOXYGEN_TRUE = @FLaC__HAS_DOXYGEN_TRUE@ +FLaC__HAS_GAS_FALSE = @FLaC__HAS_GAS_FALSE@ +FLaC__HAS_GAS_TRUE = @FLaC__HAS_GAS_TRUE@ +FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@ +FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@ +FLaC__HAS_NASM_FALSE = @FLaC__HAS_NASM_FALSE@ +FLaC__HAS_NASM_TRUE = @FLaC__HAS_NASM_TRUE@ +FLaC__HAS_OGG_FALSE = @FLaC__HAS_OGG_FALSE@ +FLaC__HAS_OGG_TRUE = @FLaC__HAS_OGG_TRUE@ +FLaC__HAS_XMMS_FALSE = @FLaC__HAS_XMMS_FALSE@ +FLaC__HAS_XMMS_TRUE = @FLaC__HAS_XMMS_TRUE@ +FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE@ +FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE@ +FLaC__NO_ASM_FALSE = @FLaC__NO_ASM_FALSE@ +FLaC__NO_ASM_TRUE = @FLaC__NO_ASM_TRUE@ +FLaC__SSE_OS_FALSE = @FLaC__SSE_OS_FALSE@ +FLaC__SSE_OS_TRUE = @FLaC__SSE_OS_TRUE@ +FLaC__SYS_DARWIN_FALSE = @FLaC__SYS_DARWIN_FALSE@ +FLaC__SYS_DARWIN_TRUE = @FLaC__SYS_DARWIN_TRUE@ +FLaC__SYS_LINUX_FALSE = @FLaC__SYS_LINUX_FALSE@ +FLaC__SYS_LINUX_TRUE = @FLaC__SYS_LINUX_TRUE@ +FLaC__USE_3DNOW_FALSE = @FLaC__USE_3DNOW_FALSE@ +FLaC__USE_3DNOW_TRUE = @FLaC__USE_3DNOW_TRUE@ +FLaC__USE_ALTIVEC_FALSE = @FLaC__USE_ALTIVEC_FALSE@ +FLaC__USE_ALTIVEC_TRUE = @FLaC__USE_ALTIVEC_TRUE@ +FLaC__WITH_CPPLIBS_FALSE = @FLaC__WITH_CPPLIBS_FALSE@ +FLaC__WITH_CPPLIBS_TRUE = @FLaC__WITH_CPPLIBS_TRUE@ +GAS = @GAS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +MINGW_WINSOCK_LIBS = @MINGW_WINSOCK_LIBS@ +NASM = @NASM@ +OBJEXT = @OBJEXT@ +OBJ_FORMAT = @OBJ_FORMAT@ +OGG_CFLAGS = @OGG_CFLAGS@ +OGG_LIBS = @OGG_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XMMS_CFLAGS = @XMMS_CFLAGS@ +XMMS_CONFIG = @XMMS_CONFIG@ +XMMS_DATA_DIR = @XMMS_DATA_DIR@ +XMMS_EFFECT_PLUGIN_DIR = @XMMS_EFFECT_PLUGIN_DIR@ +XMMS_GENERAL_PLUGIN_DIR = @XMMS_GENERAL_PLUGIN_DIR@ +XMMS_INPUT_PLUGIN_DIR = @XMMS_INPUT_PLUGIN_DIR@ +XMMS_LIBS = @XMMS_LIBS@ +XMMS_OUTPUT_PLUGIN_DIR = @XMMS_OUTPUT_PLUGIN_DIR@ +XMMS_PLUGIN_DIR = @XMMS_PLUGIN_DIR@ +XMMS_VERSION = @XMMS_VERSION@ +XMMS_VISUALIZATION_PLUGIN_DIR = @XMMS_VISUALIZATION_PLUGIN_DIR@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +EXTRA_DIST = \ + config.mk \ + exe.mk \ + lib.mk + +subdir = build +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile + +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/3rdparty/libflac/build/config.mk b/3rdparty/libflac/build/config.mk new file mode 100644 index 0000000..477de0f --- /dev/null +++ b/3rdparty/libflac/build/config.mk @@ -0,0 +1,52 @@ +# FLAC - Free Lossless Audio Codec +# Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This file is part the FLAC project. FLAC is comprised of several +# components distributed under difference licenses. The codec libraries +# are distributed under Xiph.Org's BSD-like license (see the file +# COPYING.Xiph in this distribution). All other programs, libraries, and +# plugins are distributed under the GPL (see COPYING.GPL). The documentation +# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the +# FLAC distribution contains at the top the terms under which it may be +# distributed. +# +# Since this particular file is relevant to all components of FLAC, +# it may be distributed under the Xiph.Org license, which is the least +# restrictive of those mentioned above. See the file COPYING.Xiph in this +# distribution. + +# +# debug/release selection +# + +DEFAULT_BUILD = release + +debug : BUILD = debug +valgrind : BUILD = debug +release : BUILD = release + +# override LINKAGE on OS X until we figure out how to get 'cc -static' to work +ifeq ($(DARWIN_BUILD),yes) +LINKAGE = +else +debug : LINKAGE = -static +valgrind : LINKAGE = -dynamic +release : LINKAGE = -static +endif + +all default: $(DEFAULT_BUILD) + +# +# GNU makefile fragment for emulating stuff normally done by configure +# + +VERSION=\"1.2.1\" + +ifeq ($(DARWIN_BUILD),yes) +CONFIG_CFLAGS=-DHAVE_INTTYPES_H -DHAVE_ICONV -DHAVE_LANGINFO_CODESET -DFLAC__HAS_OGG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFLAC__SYS_DARWIN -DWORDS_BIGENDIAN +else +CONFIG_CFLAGS=-DHAVE_INTTYPES_H -DHAVE_ICONV -DHAVE_LANGINFO_CODESET -DHAVE_SOCKLEN_T -DFLAC__HAS_OGG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +endif + +OGG_INCLUDE_DIR=$(HOME)/local/include +OGG_LIB_DIR=$(HOME)/local/lib diff --git a/3rdparty/libflac/build/exe.mk b/3rdparty/libflac/build/exe.mk new file mode 100644 index 0000000..89ce2c0 --- /dev/null +++ b/3rdparty/libflac/build/exe.mk @@ -0,0 +1,97 @@ +# FLAC - Free Lossless Audio Codec +# Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This file is part the FLAC project. FLAC is comprised of several +# components distributed under difference licenses. The codec libraries +# are distributed under Xiph.Org's BSD-like license (see the file +# COPYING.Xiph in this distribution). All other programs, libraries, and +# plugins are distributed under the GPL (see COPYING.GPL). The documentation +# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the +# FLAC distribution contains at the top the terms under which it may be +# distributed. +# +# Since this particular file is relevant to all components of FLAC, +# it may be distributed under the Xiph.Org license, which is the least +# restrictive of those mentioned above. See the file COPYING.Xiph in this +# distribution. + +# +# GNU makefile fragment for building an executable +# + +include $(topdir)/build/config.mk + +ifeq ($(DARWIN_BUILD),yes) +CC = cc +CCC = c++ +else +CC = gcc +CCC = g++ +endif +NASM = nasm +LINK = $(CC) $(LINKAGE) +OBJPATH = $(topdir)/obj +BINPATH = $(OBJPATH)/$(BUILD)/bin +LIBPATH = $(OBJPATH)/$(BUILD)/lib +DEBUG_BINPATH = $(OBJPATH)/debug/bin +DEBUG_LIBPATH = $(OBJPATH)/debug/lib +RELEASE_BINPATH = $(OBJPATH)/release/bin +RELEASE_LIBPATH = $(OBJPATH)/release/lib +PROGRAM = $(BINPATH)/$(PROGRAM_NAME) +DEBUG_PROGRAM = $(DEBUG_BINPATH)/$(PROGRAM_NAME) +RELEASE_PROGRAM = $(RELEASE_BINPATH)/$(PROGRAM_NAME) + +debug : CFLAGS = -g -O0 -DDEBUG $(CONFIG_CFLAGS) $(DEBUG_CFLAGS) -W -Wall -Wmissing-prototypes -Wstrict-prototypes -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES) +valgrind: CFLAGS = -g -O0 -DDEBUG $(CONFIG_CFLAGS) $(DEBUG_CFLAGS) -DFLAC__VALGRIND_TESTING -W -Wall -Wmissing-prototypes -Wstrict-prototypes -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES) +release : CFLAGS = -O3 -fomit-frame-pointer -funroll-loops -finline-functions -DNDEBUG $(CONFIG_CFLAGS) $(RELEASE_CFLAGS) -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Winline -DFLaC__INLINE=__inline__ -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES) + +LFLAGS = -L$(LIBPATH) + +DEBUG_OBJS = $(SRCS_C:%.c=%.debug.o) $(SRCS_CC:%.cc=%.debug.o) $(SRCS_CPP:%.cpp=%.debug.o) $(SRCS_NASM:%.nasm=%.debug.o) +RELEASE_OBJS = $(SRCS_C:%.c=%.release.o) $(SRCS_CC:%.cc=%.release.o) $(SRCS_CPP:%.cpp=%.release.o) $(SRCS_NASM:%.nasm=%.release.o) + +debug : $(DEBUG_PROGRAM) +valgrind: $(DEBUG_PROGRAM) +release : $(RELEASE_PROGRAM) + +# by default on OS X we link with static libs as much as possible + +$(DEBUG_PROGRAM) : $(DEBUG_OBJS) +ifeq ($(DARWIN_BUILD),yes) + $(LINK) -o $@ $(DEBUG_OBJS) $(EXPLICIT_LIBS) +else + $(LINK) -o $@ $(DEBUG_OBJS) $(LFLAGS) $(LIBS) +endif + +$(RELEASE_PROGRAM) : $(RELEASE_OBJS) +ifeq ($(DARWIN_BUILD),yes) + $(LINK) -o $@ $(RELEASE_OBJS) $(EXPLICIT_LIBS) +else + $(LINK) -o $@ $(RELEASE_OBJS) $(LFLAGS) $(LIBS) +endif + +%.debug.o %.release.o : %.c + $(CC) $(CFLAGS) -c $< -o $@ +%.debug.o %.release.o : %.cc + $(CCC) $(CFLAGS) -c $< -o $@ +%.debug.o %.release.o : %.cpp + $(CCC) $(CFLAGS) -c $< -o $@ +%.debug.i %.release.i : %.c + $(CC) $(CFLAGS) -E $< -o $@ +%.debug.i %.release.i : %.cc + $(CCC) $(CFLAGS) -E $< -o $@ +%.debug.i %.release.i : %.cpp + $(CCC) $(CFLAGS) -E $< -o $@ + +%.debug.o : %.nasm + $(NASM) -f elf -d OBJ_FORMAT_elf -i ia32/ -g $< -o $@ +%.release.o : %.nasm + $(NASM) -f elf -d OBJ_FORMAT_elf -i ia32/ $< -o $@ + +.PHONY : clean +clean : + -rm -f $(DEBUG_OBJS) $(RELEASE_OBJS) $(OBJPATH)/*/bin/$(PROGRAM_NAME) + +.PHONY : depend +depend: + makedepend -fMakefile.lite -- $(CFLAGS) $(INCLUDES) -- *.c *.cc *.cpp diff --git a/3rdparty/libflac/build/lib.mk b/3rdparty/libflac/build/lib.mk new file mode 100644 index 0000000..4480bbd --- /dev/null +++ b/3rdparty/libflac/build/lib.mk @@ -0,0 +1,124 @@ +# FLAC - Free Lossless Audio Codec +# Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This file is part the FLAC project. FLAC is comprised of several +# components distributed under difference licenses. The codec libraries +# are distributed under Xiph.Org's BSD-like license (see the file +# COPYING.Xiph in this distribution). All other programs, libraries, and +# plugins are distributed under the GPL (see COPYING.GPL). The documentation +# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the +# FLAC distribution contains at the top the terms under which it may be +# distributed. +# +# Since this particular file is relevant to all components of FLAC, +# it may be distributed under the Xiph.Org license, which is the least +# restrictive of those mentioned above. See the file COPYING.Xiph in this +# distribution. + +# +# GNU makefile fragment for building a library +# + +include $(topdir)/build/config.mk + +ifeq ($(DARWIN_BUILD),yes) +CC = cc +CCC = c++ +else +CC = gcc +CCC = g++ +endif +AS = as +NASM = nasm +LINK = ar cru +OBJPATH = $(topdir)/obj +LIBPATH = $(OBJPATH)/$(BUILD)/lib +DEBUG_LIBPATH = $(OBJPATH)/debug/lib +RELEASE_LIBPATH = $(OBJPATH)/release/lib +ifeq ($(DARWIN_BUILD),yes) +STATIC_LIB_SUFFIX = a +DYNAMIC_LIB_SUFFIX = dylib +else +STATIC_LIB_SUFFIX = a +DYNAMIC_LIB_SUFFIX = so +endif +STATIC_LIB_NAME = $(LIB_NAME).$(STATIC_LIB_SUFFIX) +DYNAMIC_LIB_NAME = $(LIB_NAME).$(DYNAMIC_LIB_SUFFIX) +STATIC_LIB = $(LIBPATH)/$(STATIC_LIB_NAME) +DYNAMIC_LIB = $(LIBPATH)/$(DYNAMIC_LIB_NAME) +DEBUG_STATIC_LIB = $(DEBUG_LIBPATH)/$(STATIC_LIB_NAME) +DEBUG_DYNAMIC_LIB = $(DEBUG_LIBPATH)/$(DYNAMIC_LIB_NAME) +RELEASE_STATIC_LIB = $(RELEASE_LIBPATH)/$(STATIC_LIB_NAME) +RELEASE_DYNAMIC_LIB = $(RELEASE_LIBPATH)/$(DYNAMIC_LIB_NAME) +ifeq ($(DARWIN_BUILD),yes) +LINKD = $(CC) -dynamiclib -flat_namespace -undefined suppress -install_name $(DYNAMIC_LIB) +else +LINKD = $(CC) -shared +endif + +debug : CFLAGS = -g -O0 -DDEBUG $(CONFIG_CFLAGS) $(DEBUG_CFLAGS) -W -Wall -Wmissing-prototypes -Wstrict-prototypes -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES) +valgrind: CFLAGS = -g -O0 -DDEBUG $(CONFIG_CFLAGS) $(DEBUG_CFLAGS) -DFLAC__VALGRIND_TESTING -W -Wall -Wmissing-prototypes -Wstrict-prototypes -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES) +release : CFLAGS = -O3 -fomit-frame-pointer -funroll-loops -finline-functions -DNDEBUG $(CONFIG_CFLAGS) $(RELEASE_CFLAGS) -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Winline -DFLaC__INLINE=__inline__ -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES) + +LFLAGS = -L$(LIBPATH) + +DEBUG_OBJS = $(SRCS_C:%.c=%.debug.o) $(SRCS_CC:%.cc=%.debug.o) $(SRCS_CPP:%.cpp=%.debug.o) $(SRCS_NASM:%.nasm=%.debug.o) $(SRCS_S:%.s=%.debug.o) +RELEASE_OBJS = $(SRCS_C:%.c=%.release.o) $(SRCS_CC:%.cc=%.release.o) $(SRCS_CPP:%.cpp=%.release.o) $(SRCS_NASM:%.nasm=%.release.o) $(SRCS_S:%.s=%.release.o) + +debug : $(DEBUG_STATIC_LIB) $(DEBUG_DYNAMIC_LIB) +valgrind: $(DEBUG_STATIC_LIB) $(DEBUG_DYNAMIC_LIB) +release : $(RELEASE_STATIC_LIB) $(RELEASE_DYNAMIC_LIB) + +$(DEBUG_STATIC_LIB): $(DEBUG_OBJS) + $(LINK) $@ $(DEBUG_OBJS) && ranlib $@ + +$(RELEASE_STATIC_LIB): $(RELEASE_OBJS) + $(LINK) $@ $(RELEASE_OBJS) && ranlib $@ + +$(DEBUG_DYNAMIC_LIB) : $(DEBUG_OBJS) +ifeq ($(DARWIN_BUILD),yes) + echo Not building dynamic lib, command is: $(LINKD) -o $@ $(DEBUG_OBJS) $(LFLAGS) $(LIBS) -lc +else + $(LINKD) -o $@ $(DEBUG_OBJS) $(LFLAGS) $(LIBS) +endif + +$(RELEASE_DYNAMIC_LIB) : $(RELEASE_OBJS) +ifeq ($(DARWIN_BUILD),yes) + echo Not building dynamic lib, command is: $(LINKD) -o $@ $(RELEASE_OBJS) $(LFLAGS) $(LIBS) -lc +else + $(LINKD) -o $@ $(RELEASE_OBJS) $(LFLAGS) $(LIBS) +endif + +%.debug.o %.release.o : %.c + $(CC) $(CFLAGS) -c $< -o $@ +%.debug.o %.release.o : %.cc + $(CCC) $(CFLAGS) -c $< -o $@ +%.debug.o %.release.o : %.cpp + $(CCC) $(CFLAGS) -c $< -o $@ +%.debug.i %.release.i : %.c + $(CC) $(CFLAGS) -E $< -o $@ +%.debug.i %.release.i : %.cc + $(CCC) $(CFLAGS) -E $< -o $@ +%.debug.i %.release.i : %.cpp + $(CCC) $(CFLAGS) -E $< -o $@ + +%.debug.o %.release.o : %.s +ifeq ($(DARWIN_BUILD),yes) + #$(CC) -c -arch ppc -Wall -force_cpusubtype_ALL $< -o $@ + $(AS) -arch ppc -force_cpusubtype_ALL $< -o $@ +else + $(AS) $< -o $@ +endif + +%.debug.o : %.nasm + $(NASM) -f elf -d OBJ_FORMAT_elf -i ia32/ -g $< -o $@ +%.release.o : %.nasm + $(NASM) -f elf -d OBJ_FORMAT_elf -i ia32/ $< -o $@ + +.PHONY : clean +clean : + -rm -f $(DEBUG_OBJS) $(RELEASE_OBJS) $(OBJPATH)/*/lib/$(STATIC_LIB_NAME) $(OBJPATH)/*/lib/$(DYNAMIC_LIB_NAME) + +.PHONY : depend +depend: + makedepend -fMakefile.lite -- $(CFLAGS) $(INCLUDES) -- *.c *.cc *.cpp diff --git a/3rdparty/libflac/config.guess b/3rdparty/libflac/config.guess new file mode 100644 index 0000000..2fc3acc --- /dev/null +++ b/3rdparty/libflac/config.guess @@ -0,0 +1,1411 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-06-17' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +## for Red Hat Linux +if test -f /etc/redhat-release ; then + VENDOR=redhat ; +else + VENDOR= ; +fi + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha*:OpenVMS:*:*) + echo alpha-hp-vms + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*|*:GNU/FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR:-ibm}-linux-gnu + exit 0 ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-${VENDOR:-unknown}-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR:-pc}-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + case `uname -p` in + *86) UNAME_PROCESSOR=i686 ;; + powerpc) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/3rdparty/libflac/config.h.in b/3rdparty/libflac/config.h.in new file mode 100644 index 0000000..588212b --- /dev/null +++ b/3rdparty/libflac/config.h.in @@ -0,0 +1,134 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* define to align allocated memory on 32-byte boundaries */ +#undef FLAC__ALIGN_MALLOC_DATA + +/* define if building for ia32/i386 */ +#undef FLAC__CPU_IA32 + +/* define if building for PowerPC */ +#undef FLAC__CPU_PPC + +/* define if building for SPARC */ +#undef FLAC__CPU_SPARC + +/* define if you are compiling for PowerPC and have the 'as' assembler */ +#undef FLAC__HAS_AS + +/* define if you have docbook-to-man or docbook2man */ +#undef FLAC__HAS_DOCBOOK_TO_MAN + +/* define if you are compiling for PowerPC and have the 'gas' assembler */ +#undef FLAC__HAS_GAS + +/* define if you are compiling for x86 and have the NASM assembler */ +#undef FLAC__HAS_NASM + +/* define if you have the ogg library */ +#undef FLAC__HAS_OGG + +/* define to disable use of assembly code */ +#undef FLAC__NO_ASM + +/* define if your operating system supports SSE instructions */ +#undef FLAC__SSE_OS + +/* define if building for Darwin / MacOS X */ +#undef FLAC__SYS_DARWIN + +/* define if building for Linux */ +#undef FLAC__SYS_LINUX + +/* define to enable use of 3Dnow! instructions */ +#undef FLAC__USE_3DNOW + +/* define to enable use of Altivec instructions */ +#undef FLAC__USE_ALTIVEC + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ +#undef HAVE_FSEEKO + +/* Define to 1 if you have the `getopt_long' function. */ +#undef HAVE_GETOPT_LONG + +/* Define if you have the iconv() function. */ +#undef HAVE_ICONV + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if the system has the type `socklen_t'. */ +#undef HAVE_SOCKLEN_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define as const if the declaration of iconv() needs const. */ +#undef ICONV_CONST + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* The size of a `void*', as computed by sizeof. */ +#undef SIZEOF_VOIDP + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ +#undef WORDS_BIGENDIAN + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ +#undef _LARGEFILE_SOURCE + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES diff --git a/3rdparty/libflac/config.rpath b/3rdparty/libflac/config.rpath new file mode 100644 index 0000000..3f1bef3 --- /dev/null +++ b/3rdparty/libflac/config.rpath @@ -0,0 +1,571 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2005 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +cc_basename=`echo "$CC" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + darwin*) + case "$cc_basename" in + xlc*) + wl='-Wl,' + ;; + esac + ;; + mingw* | pw32* | os2*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + newsos6) + ;; + linux*) + case $cc_basename in + icc* | ecc*) + wl='-Wl,' + ;; + pgcc | pgf77 | pgf90) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + esac + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + sco3.2v5*) + ;; + solaris*) + wl='-Wl,' + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + unicos*) + wl='-Wl,' + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + case "$host_os" in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we cannot use + # them. + ld_shlibs=no + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sunos4*) + hardcode_direct=yes + ;; + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = yes; then + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + else + aix_use_runtimelinking=no + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=no + if test "$GCC" = yes ; then + : + else + case "$cc_basename" in + xlc*) + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd1*) + ld_shlibs=no + ;; + freebsd2.2*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + freebsd2*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10* | hpux11*) + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=no + ;; + ia64*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=no + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + *) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + openbsd*) + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + sco3.2v5*) + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4.2uw2*) + hardcode_direct=yes + hardcode_minus_L=no + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + ;; + sysv5*) + hardcode_libdir_flag_spec= + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. +libname_spec='lib$name' +case "$host_os" in + aix3*) + ;; + aix4* | aix5*) + ;; + amigaos*) + ;; + beos*) + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32*) + shrext=.dll + ;; + darwin* | rhapsody*) + shrext=.dylib + ;; + dgux*) + ;; + freebsd1*) + ;; + kfreebsd*-gnu) + ;; + freebsd*) + ;; + gnu*) + ;; + hpux9* | hpux10* | hpux11*) + case "$host_cpu" in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux*) + ;; + knetbsd*-gnu) + ;; + netbsd*) + ;; + newsos6) + ;; + nto-qnx*) + ;; + openbsd*) + ;; + os2*) + libname_spec='$name' + shrext=.dll + ;; + osf3* | osf4* | osf5*) + ;; + sco3.2v5*) + ;; + solaris*) + ;; + sunos4*) + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + ;; + sysv4*MP*) + ;; + uts4*) + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | s390 | s390x \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* \ + | m32r-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | msp430-* \ + | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | s390-* | s390x-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nv1) + basic_machine=nv1-cray + os=-unicosmp + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/3rdparty/libflac/configure b/3rdparty/libflac/configure new file mode 100644 index 0000000..947f077 --- /dev/null +++ b/3rdparty/libflac/configure @@ -0,0 +1,25257 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59. +# +# Copyright (C) 2003 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string="`eval $cmd`") 2>/dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +tagnames=${tagnames+${tagnames},}CXX + +tagnames=${tagnames+${tagnames},}F77 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="src/flac/main.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL ACLOCAL_AMFLAGS CCAS CCASFLAGS FLaC__CPU_IA32_TRUE FLaC__CPU_IA32_FALSE FLaC__CPU_PPC_TRUE FLaC__CPU_PPC_FALSE FLaC__CPU_SPARC_TRUE FLaC__CPU_SPARC_FALSE OBJ_FORMAT MINGW_WINSOCK_LIBS FLaC__SYS_DARWIN_TRUE FLaC__SYS_DARWIN_FALSE FLaC__SYS_LINUX_TRUE FLaC__SYS_LINUX_FALSE FLaC__NO_ASM_TRUE FLaC__NO_ASM_FALSE DEBUG_TRUE DEBUG_FALSE FLaC__SSE_OS_TRUE FLaC__SSE_OS_FALSE FLaC__USE_3DNOW_TRUE FLaC__USE_3DNOW_FALSE FLaC__USE_ALTIVEC_TRUE FLaC__USE_ALTIVEC_FALSE FLAC__TEST_LEVEL FLAC__TEST_WITH_VALGRIND DOXYGEN FLaC__HAS_DOXYGEN_TRUE FLaC__HAS_DOXYGEN_FALSE FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE XMMS_CONFIG XMMS_CFLAGS XMMS_LIBS XMMS_VERSION XMMS_DATA_DIR XMMS_PLUGIN_DIR XMMS_VISUALIZATION_PLUGIN_DIR XMMS_INPUT_PLUGIN_DIR XMMS_OUTPUT_PLUGIN_DIR XMMS_GENERAL_PLUGIN_DIR XMMS_EFFECT_PLUGIN_DIR FLaC__HAS_XMMS_TRUE FLaC__HAS_XMMS_FALSE FLaC__WITH_CPPLIBS_TRUE FLaC__WITH_CPPLIBS_FALSE OGG_CFLAGS OGG_LIBS FLaC__HAS_OGG_TRUE FLaC__HAS_OGG_FALSE LIBICONV LTLIBICONV DOCBOOK_TO_MAN FLaC__HAS_DOCBOOK_TO_MAN_TRUE FLaC__HAS_DOCBOOK_TO_MAN_FALSE NASM FLaC__HAS_NASM_TRUE FLaC__HAS_NASM_FALSE AS GAS FLaC__HAS_AS_TRUE FLaC__HAS_AS_FALSE FLaC__HAS_GAS_TRUE FLaC__HAS_GAS_FALSE FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS +ac_env_CXXCPP_set=${CXXCPP+set} +ac_env_CXXCPP_value=$CXXCPP +ac_cv_env_CXXCPP_set=${CXXCPP+set} +ac_cv_env_CXXCPP_value=$CXXCPP +ac_env_F77_set=${F77+set} +ac_env_F77_value=$F77 +ac_cv_env_F77_set=${F77+set} +ac_cv_env_F77_value=$F77 +ac_env_FFLAGS_set=${FFLAGS+set} +ac_env_FFLAGS_value=$FFLAGS +ac_cv_env_FFLAGS_set=${FFLAGS+set} +ac_cv_env_FFLAGS_value=$FFLAGS + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer + --enable-shared[=PKGS] + build shared libraries [default=yes] + --enable-static[=PKGS] + build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-dependency-tracking Speeds up one-time builds + --enable-dependency-tracking Do not reject slow dependency extractors + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-largefile omit support for large files + --disable-asm-optimizations + Don't use any assembly optimization routines + --enable-debug Turn on debugging + --enable-sse Enable SSE support by asserting that the OS supports + SSE instructions + --disable-3dnow Disable 3DNOW! optimizations + --disable-altivec Disable Altivec optimizations + --disable-thorough-tests + Disable thorough (long) testing, do only basic tests + --enable-exhaustive-tests + Enable exhaustive testing (VERY long) + --enable-valgrind-testing + Run all tests inside Valgrind + --disable-doxygen-docs Disable API documentation building via Doxygen + --enable-local-xmms-plugin + Install XMMS plugin to ~/.xmms/Plugins instead of + system location + --disable-xmms-plugin Do not build XMMS plugin + --disable-cpplibs Do not build libFLAC++ + --disable-ogg Disable ogg support (default: test for libogg) + --disable-oggtest Do not try to compile and run a test Ogg program + --disable-rpath do not hardcode runtime library paths + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-tags[=TAGS] + include additional configurations [automatic] + --with-xmms-prefix=PFX Prefix where XMMS is installed (optional) + --with-xmms-exec-prefix=PFX Exec prefix where XMMS is installed (optional) + --with-ogg=PFX Prefix where libogg is installed (optional) + --with-ogg-libraries=DIR Directory where libogg library is installed (optional) + --with-ogg-includes=DIR Directory where libogg header files are installed (optional) + --with-gnu-ld assume the C compiler uses GNU ld default=no + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright (C) 2003 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + +am__api_version="1.7" +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + + # test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=flac + VERSION=1.2.1 + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. + + + + +# Don't automagically regenerate autoconf/automake generated files unless +# explicitly requested. Eases autobuilding -mdz +echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then + enableval="$enable_maintainer_mode" + USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi; + echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 + + +if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + + +# We need two libtools, one that builds both shared and static, and +# one that builds only static. This is because the resulting libtool +# does not allow us to choose which to build at runtime. +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi; + +# Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi; + +# Check whether --enable-fast-install or --disable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval="$enable_fast_install" + p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi; + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + : > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # (even with -Werror). So we grep stderr for any message + # that says an option was ignored. + if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # 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 +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 $lt_ac_count -gt 10 && 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 + +fi + +SED=$lt_cv_path_SED +echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6 + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + +echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + esac + fi + done + IFS="$lt_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi +echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +echo "${ECHO_T}$lt_cv_path_NM" >&6 +NM="$lt_cv_path_NM" + +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 +echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | 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'. + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | kfreebsd*-gnu | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case "$host_cpu" in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 3665 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +lt_cv_cc_needs_belf=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + +esac + +need_locks="$enable_libtool_lock" + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + : > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # (even with -Werror). So we grep stderr for any message + # that says an option was ignored. + if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6 +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +fi + + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$F77"; then + ac_cv_prog_F77="$F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_F77="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +F77=$ac_cv_prog_F77 +if test -n "$F77"; then + echo "$as_me:$LINENO: result: $F77" >&5 +echo "${ECHO_T}$F77" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$F77" && break + done +fi +if test -z "$F77"; then + ac_ct_F77=$F77 + for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_F77"; then + ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_F77="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_F77=$ac_cv_prog_ac_ct_F77 +if test -n "$ac_ct_F77"; then + echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +echo "${ECHO_T}$ac_ct_F77" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_F77" && break +done + + F77=$ac_ct_F77 +fi + + +# Provide some information about the compiler. +echo "$as_me:5237:" \ + "checking for Fortran 77 compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 +if test "${ac_cv_f77_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FFLAGS+set} +ac_save_FFLAGS=$FFLAGS +FFLAGS= +echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_f77_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + FFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_f77_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_f77_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 +if test "$ac_test_FFLAGS" = set; then + FFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_f77_g = yes; then + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-g -O2" + else + FFLAGS="-g" + fi +else + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-O2" + else + FFLAGS= + fi +fi + +G77=`test $ac_compiler_gnu = yes && echo yes` +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +# find the maximum length of command line arguments +echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 +if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, 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*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for *BSD + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 +else + echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6 +fi + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris* | sysv5*) + symcode='[BDRT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6 +else + echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6 +fi + +echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +if test "${lt_cv_objdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +echo "${ECHO_T}$lt_cv_objdir" >&6 +objdir=$lt_cv_objdir + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + AR=$ac_ct_AR +else + AR="$ac_cv_prog_AR" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +# Check whether --with-pic or --without-pic was given. +if test "${with_pic+set}" = set; then + withval="$with_pic" + pic_mode="$withval" +else + pic_mode=default +fi; +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# +# Check for any special shared library compilation flags. +# +lt_prog_cc_shlib= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + lt_prog_cc_shlib='-belf' + ;; + esac +fi +if test -n "$lt_prog_cc_shlib"; then + { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 +echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} + if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : + else + { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} + lt_cv_prog_cc_can_build_shared=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_prog_compiler_static" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works=yes + fi + else + lt_prog_compiler_static_works=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 + +if test x"$lt_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6335: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6339: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-static' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic='-Kpic' + lt_prog_compiler_static='-dn' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6597: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6601: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 + +if test x"$lt_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6659: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:6663: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag= + enable_shared_with_static_runtimes=no + archive_cmds= + archive_expsym_cmds= + old_archive_From_new_cmds= + old_archive_from_expsyms_cmds= + export_dynamic_flag_spec= + whole_archive_flag_spec= + thread_safe_flag_spec= + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + link_all_deplibs=unknown + hardcode_automatic=no + module_cmds= + module_expsym_cmds= + always_export_symbols=no + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec= + ;; + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + whole_archive_flag_spec= + tmp_addflag=' -fpic -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec=' ' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + ia64*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + *) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld='-rpath $libdir' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6 +test "$ld_shlibs" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +echo "${ECHO_T}$archive_cmds_need_lc" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + 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' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + 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 + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-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='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +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 + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + 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' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # find out which ABI we are using + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) + echo '#line 8044 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + esac + fi + rm -rf conftest* + ;; + esac + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-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='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=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=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + 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=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + 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 + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6 + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# Report which librarie types wil actually be built +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler \ + CC \ + LD \ + lt_prog_compiler_wl \ + lt_prog_compiler_pic \ + lt_prog_compiler_static \ + lt_prog_compiler_no_builtin_flag \ + export_dynamic_flag_spec \ + thread_safe_flag_spec \ + whole_archive_flag_spec \ + enable_shared_with_static_runtimes \ + old_archive_cmds \ + old_archive_from_new_cmds \ + predep_objects \ + postdep_objects \ + predeps \ + postdeps \ + compiler_lib_search_path \ + archive_cmds \ + archive_expsym_cmds \ + postinstall_cmds \ + postuninstall_cmds \ + old_archive_from_expsyms_cmds \ + allow_undefined_flag \ + no_undefined_flag \ + export_symbols_cmds \ + hardcode_libdir_flag_spec \ + hardcode_libdir_flag_spec_ld \ + hardcode_libdir_separator \ + hardcode_automatic \ + module_cmds \ + module_expsym_cmds \ + lt_cv_prog_compiler_c_o \ + exclude_expsyms \ + include_expsyms; do + + case $var in + old_archive_cmds | \ + old_archive_from_new_cmds | \ + archive_cmds | \ + archive_expsym_cmds | \ + module_cmds | \ + module_expsym_cmds | \ + old_archive_from_expsyms_cmds | \ + export_symbols_cmds | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + { echo "$as_me:$LINENO: creating $ofile" >&5 +echo "$as_me: creating $ofile" >&6;} + + cat <<__EOF__ >> "$cfgfile" +#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + +# Check whether --with-tags or --without-tags was given. +if test "${with_tags+set}" = set; then + withval="$with_tags" + tagnames="$withval" +fi; + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + else + { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in + "") ;; + *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +echo "$as_me: error: invalid tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} + { (exit 1); exit 1; }; } + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_automatic_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +# Source file extension for C++ test sources. +ac_ext=cc + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +compiler_CXX=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +else + lt_prog_compiler_no_builtin_flag_CXX= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 +ld_shlibs_CXX=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_CXX=yes + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_CXX=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX=' ' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + archive_cmds_CXX='$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' + fi + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + ld_shlibs_CXX=no + ;; + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + gnu*) + ;; + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_CXX='+b $libdir' + hardcode_libdir_separator_CXX=: + ;; + ia64*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + *) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case "$host_cpu" in + hppa*64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case "$host_cpu" in + ia64*|hppa*64*) + archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + ;; + linux*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # 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 "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # 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 "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + sco*) + archive_cmds_need_lc_CXX=no + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + archive_cmds_need_lc_CXX=no + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; +esac +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 +test "$ld_shlibs_CXX" = no && can_build_shared=no + +GCC_CXX="$GXX" +LD_CXX="$LD" + + +cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$rm -f confest.$objext + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + +lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-static' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + sco*) + case $cc_basename in + CC*) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + *) + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + unixware*) + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11261: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:11265: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 + +if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11323: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:11327: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 +test "$ld_shlibs_CXX" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + 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' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + 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 + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-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='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +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 + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + 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' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # find out which ABI we are using + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) + echo '#line 11838 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + esac + fi + rm -rf conftest* + ;; + esac + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-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='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=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=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + 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=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + 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 + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +echo "${ECHO_T}$hardcode_action_CXX" >&6 + +if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_CXX \ + CC_CXX \ + LD_CXX \ + lt_prog_compiler_wl_CXX \ + lt_prog_compiler_pic_CXX \ + lt_prog_compiler_static_CXX \ + lt_prog_compiler_no_builtin_flag_CXX \ + export_dynamic_flag_spec_CXX \ + thread_safe_flag_spec_CXX \ + whole_archive_flag_spec_CXX \ + enable_shared_with_static_runtimes_CXX \ + old_archive_cmds_CXX \ + old_archive_from_new_cmds_CXX \ + predep_objects_CXX \ + postdep_objects_CXX \ + predeps_CXX \ + postdeps_CXX \ + compiler_lib_search_path_CXX \ + archive_cmds_CXX \ + archive_expsym_cmds_CXX \ + postinstall_cmds_CXX \ + postuninstall_cmds_CXX \ + old_archive_from_expsyms_cmds_CXX \ + allow_undefined_flag_CXX \ + no_undefined_flag_CXX \ + export_symbols_cmds_CXX \ + hardcode_libdir_flag_spec_CXX \ + hardcode_libdir_flag_spec_ld_CXX \ + hardcode_libdir_separator_CXX \ + hardcode_automatic_CXX \ + module_cmds_CXX \ + module_expsym_cmds_CXX \ + lt_cv_prog_compiler_c_o_CXX \ + exclude_expsyms_CXX \ + include_expsyms_CXX; do + + case $var in + old_archive_cmds_CXX | \ + old_archive_from_new_cmds_CXX | \ + archive_cmds_CXX | \ + archive_expsym_cmds_CXX | \ + module_cmds_CXX | \ + module_expsym_cmds_CXX | \ + old_archive_from_expsyms_cmds_CXX | \ + export_symbols_cmds_CXX | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_CXX + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_CXX +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_CXX + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_CXX" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld + + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu + + +archive_cmds_need_lc_F77=no +allow_undefined_flag_F77= +always_export_symbols_F77=no +archive_expsym_cmds_F77= +export_dynamic_flag_spec_F77= +hardcode_direct_F77=no +hardcode_libdir_flag_spec_F77= +hardcode_libdir_flag_spec_ld_F77= +hardcode_libdir_separator_F77= +hardcode_minus_L_F77=no +hardcode_automatic_F77=no +module_cmds_F77= +module_expsym_cmds_F77= +link_all_deplibs_F77=unknown +old_archive_cmds_F77=$old_archive_cmds +no_undefined_flag_F77= +whole_archive_flag_spec_F77= +enable_shared_with_static_runtimes_F77=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +objext_F77=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code=" subroutine t\n return\n end\n" + +# Code to be used in simple link tests +lt_simple_link_test_code=" program t\n end\n" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +compiler_F77=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +test "$ld_shlibs_F77" = no && can_build_shared=no + +GCC_F77="$G77" +LD_F77="$LD" + +lt_prog_compiler_wl_F77= +lt_prog_compiler_pic_F77= +lt_prog_compiler_static_F77= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_static_F77='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_F77='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_F77=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_F77=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_F77='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + else + lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_F77='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_F77='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; + pgcc* | pgf77* | pgf90*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-static' + ;; + ccc*) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_F77='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic_F77='-Kpic' + lt_prog_compiler_static_F77='-dn' + ;; + + solaris*) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_F77='-Qoption ld ';; + *) + lt_prog_compiler_wl_F77='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_F77='-Qoption ld ' + lt_prog_compiler_pic_F77='-PIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_F77='-Kconform_pic' + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + + uts4*) + lt_prog_compiler_pic_F77='-pic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_F77=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_F77"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_F77" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13692: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:13696: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 + +if test x"$lt_prog_compiler_pic_works_F77" = xyes; then + case $lt_prog_compiler_pic_F77 in + "" | " "*) ;; + *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; + esac +else + lt_prog_compiler_pic_F77= + lt_prog_compiler_can_build_shared_F77=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_F77= + ;; + *) + lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_F77=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13754: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:13758: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag_F77= + enable_shared_with_static_runtimes_F77=no + archive_cmds_F77= + archive_expsym_cmds_F77= + old_archive_From_new_cmds_F77= + old_archive_from_expsyms_cmds_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + thread_safe_flag_spec_F77= + hardcode_libdir_flag_spec_F77= + hardcode_libdir_flag_spec_ld_F77= + hardcode_libdir_separator_F77= + hardcode_direct_F77=no + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=unsupported + link_all_deplibs_F77=unknown + hardcode_automatic_F77=no + module_cmds_F77= + module_expsym_cmds_F77= + always_export_symbols_F77=no + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_F77= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_F77=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_F77=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_F77=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_F77='-L$libdir' + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=no + enable_shared_with_static_runtimes_F77=yes + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_F77=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_F77= + ;; + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_F77= + tmp_addflag=' -fpic -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_F77=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + sunos4*) + archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + + if test "$ld_shlibs_F77" = no; then + runpath_var= + hardcode_libdir_flag_spec_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=yes + archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_F77=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_F77='' + hardcode_direct_F77=yes + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_F77=yes + else + # We have old collect2 + hardcode_direct_F77=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_F77=yes + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_libdir_separator_F77= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_F77=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_F77='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_F77="-z nodefs" + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_F77=' ${wl}-bernotok' + allow_undefined_flag_F77=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_F77=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77=' ' + archive_cmds_need_lc_F77=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_F77=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_F77=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_F77=' ' + allow_undefined_flag_F77=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_F77='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_F77=no + hardcode_direct_F77=no + hardcode_automatic_F77=yes + hardcode_shlibpath_var_F77=unsupported + whole_archive_flag_spec_F77='' + link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + freebsd1*) + ld_shlibs_F77=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + ia64*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + *) + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + link_all_deplibs_F77=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + newsos6) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_shlibpath_var_F77=no + ;; + + openbsd*) + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + ;; + *) + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + allow_undefined_flag_F77=unsupported + archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_F77='-rpath $libdir' + fi + hardcode_libdir_separator_F77=: + ;; + + sco3.2v5*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_shlibpath_var_F77=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_F77=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_F77='$CC -r -o $output$reload_objs' + hardcode_direct_F77=no + ;; + motorola) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv4.3*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_F77=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag_F77='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv5*) + no_undefined_flag_F77=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec_F77= + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + *) + ld_shlibs_F77=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +echo "${ECHO_T}$ld_shlibs_F77" >&6 +test "$ld_shlibs_F77" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_F77" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_F77=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_F77 in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_F77 + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_F77 + allow_undefined_flag_F77= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_F77=no + else + archive_cmds_need_lc_F77=yes + fi + allow_undefined_flag_F77=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + 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' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + 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 + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-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='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +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 + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + 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' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # find out which ABI we are using + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) + echo '#line 15119 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + esac + fi + rm -rf conftest* + ;; + esac + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-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='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=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=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + 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=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + 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 + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_F77= +if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_F77" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && + test "$hardcode_minus_L_F77" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_F77=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_F77=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_F77=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +echo "${ECHO_T}$hardcode_action_F77" >&6 + +if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_F77 \ + CC_F77 \ + LD_F77 \ + lt_prog_compiler_wl_F77 \ + lt_prog_compiler_pic_F77 \ + lt_prog_compiler_static_F77 \ + lt_prog_compiler_no_builtin_flag_F77 \ + export_dynamic_flag_spec_F77 \ + thread_safe_flag_spec_F77 \ + whole_archive_flag_spec_F77 \ + enable_shared_with_static_runtimes_F77 \ + old_archive_cmds_F77 \ + old_archive_from_new_cmds_F77 \ + predep_objects_F77 \ + postdep_objects_F77 \ + predeps_F77 \ + postdeps_F77 \ + compiler_lib_search_path_F77 \ + archive_cmds_F77 \ + archive_expsym_cmds_F77 \ + postinstall_cmds_F77 \ + postuninstall_cmds_F77 \ + old_archive_from_expsyms_cmds_F77 \ + allow_undefined_flag_F77 \ + no_undefined_flag_F77 \ + export_symbols_cmds_F77 \ + hardcode_libdir_flag_spec_F77 \ + hardcode_libdir_flag_spec_ld_F77 \ + hardcode_libdir_separator_F77 \ + hardcode_automatic_F77 \ + module_cmds_F77 \ + module_expsym_cmds_F77 \ + lt_cv_prog_compiler_c_o_F77 \ + exclude_expsyms_F77 \ + include_expsyms_F77; do + + case $var in + old_archive_cmds_F77 | \ + old_archive_from_new_cmds_F77 | \ + archive_cmds_F77 | \ + archive_expsym_cmds_F77 | \ + module_cmds_F77 | \ + module_expsym_cmds_F77 | \ + old_archive_from_expsyms_cmds_F77 | \ + export_symbols_cmds_F77 | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_F77 + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_F77 + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_F77 + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_F77 + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_F77 + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_F77 +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_F77 + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_F77 +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_F77 +archive_expsym_cmds=$lt_archive_expsym_cmds_F77 +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_F77 +module_expsym_cmds=$lt_module_expsym_cmds_F77 + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_F77 + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_F77 + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_F77 + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_F77 + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_F77 + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_F77 + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_F77 + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_F77 + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_F77 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_F77 + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_F77" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_F77 + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_F77 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_F77 + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_F77 + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + + + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +objext_GCJ=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + +old_archive_cmds_GCJ=$old_archive_cmds + + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + +echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15892: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:15896: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl_GCJ= +lt_prog_compiler_pic_GCJ= +lt_prog_compiler_static_GCJ= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_static_GCJ='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_GCJ=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_GCJ=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_GCJ='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + else + lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + pgcc* | pgf77* | pgf90*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-static' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic_GCJ='-Kpic' + lt_prog_compiler_static_GCJ='-dn' + ;; + + solaris*) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_GCJ='-Qoption ld ';; + *) + lt_prog_compiler_wl_GCJ='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_GCJ='-Qoption ld ' + lt_prog_compiler_pic_GCJ='-PIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_GCJ='-Kconform_pic' + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16154: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:16158: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 + +if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in + "" | " "*) ;; + *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; + esac +else + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_can_build_shared_GCJ=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= + ;; + *) + lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16216: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:16220: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag_GCJ= + enable_shared_with_static_runtimes_GCJ=no + archive_cmds_GCJ= + archive_expsym_cmds_GCJ= + old_archive_From_new_cmds_GCJ= + old_archive_from_expsyms_cmds_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + thread_safe_flag_spec_GCJ= + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ= + hardcode_libdir_separator_GCJ= + hardcode_direct_GCJ=no + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=unsupported + link_all_deplibs_GCJ=unknown + hardcode_automatic_GCJ=no + module_cmds_GCJ= + module_expsym_cmds_GCJ= + always_export_symbols_GCJ=no + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_GCJ= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_GCJ=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_GCJ=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_GCJ=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_GCJ='-L$libdir' + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_GCJ=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_GCJ= + ;; + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_GCJ= + tmp_addflag=' -fpic -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + + if test "$ld_shlibs_GCJ" = no; then + runpath_var= + hardcode_libdir_flag_spec_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=yes + archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_GCJ='' + hardcode_direct_GCJ=yes + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_GCJ=yes + else + # We have old collect2 + hardcode_direct_GCJ=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_GCJ=yes + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_GCJ=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_GCJ='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_GCJ=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ=' ' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_GCJ=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_GCJ=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_GCJ=' ' + allow_undefined_flag_GCJ=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_GCJ=no + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='' + link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + freebsd1*) + ld_shlibs_GCJ=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + ia64*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + *) + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + link_all_deplibs_GCJ=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + newsos6) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_shlibpath_var_GCJ=no + ;; + + openbsd*) + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + ;; + *) + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + allow_undefined_flag_GCJ=unsupported + archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_GCJ='-rpath $libdir' + fi + hardcode_libdir_separator_GCJ=: + ;; + + sco3.2v5*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_shlibpath_var_GCJ=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_GCJ=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_GCJ='$CC -r -o $output$reload_objs' + hardcode_direct_GCJ=no + ;; + motorola) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4.3*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_GCJ=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag_GCJ='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv5*) + no_undefined_flag_GCJ=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec_GCJ= + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + *) + ld_shlibs_GCJ=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +echo "${ECHO_T}$ld_shlibs_GCJ" >&6 +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_GCJ" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_GCJ=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_GCJ + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ + allow_undefined_flag_GCJ= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + 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' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + 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 + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-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='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +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 + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + 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' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # find out which ABI we are using + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) + echo '#line 17601 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + esac + fi + rm -rf conftest* + ;; + esac + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-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='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=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=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + 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=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + 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 + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || \ + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_GCJ" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +echo "${ECHO_T}$hardcode_action_GCJ" >&6 + +if test "$hardcode_action_GCJ" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_GCJ \ + CC_GCJ \ + LD_GCJ \ + lt_prog_compiler_wl_GCJ \ + lt_prog_compiler_pic_GCJ \ + lt_prog_compiler_static_GCJ \ + lt_prog_compiler_no_builtin_flag_GCJ \ + export_dynamic_flag_spec_GCJ \ + thread_safe_flag_spec_GCJ \ + whole_archive_flag_spec_GCJ \ + enable_shared_with_static_runtimes_GCJ \ + old_archive_cmds_GCJ \ + old_archive_from_new_cmds_GCJ \ + predep_objects_GCJ \ + postdep_objects_GCJ \ + predeps_GCJ \ + postdeps_GCJ \ + compiler_lib_search_path_GCJ \ + archive_cmds_GCJ \ + archive_expsym_cmds_GCJ \ + postinstall_cmds_GCJ \ + postuninstall_cmds_GCJ \ + old_archive_from_expsyms_cmds_GCJ \ + allow_undefined_flag_GCJ \ + no_undefined_flag_GCJ \ + export_symbols_cmds_GCJ \ + hardcode_libdir_flag_spec_GCJ \ + hardcode_libdir_flag_spec_ld_GCJ \ + hardcode_libdir_separator_GCJ \ + hardcode_automatic_GCJ \ + module_cmds_GCJ \ + module_expsym_cmds_GCJ \ + lt_cv_prog_compiler_c_o_GCJ \ + exclude_expsyms_GCJ \ + include_expsyms_GCJ; do + + case $var in + old_archive_cmds_GCJ | \ + old_archive_from_new_cmds_GCJ | \ + archive_cmds_GCJ | \ + archive_expsym_cmds_GCJ | \ + module_cmds_GCJ | \ + module_expsym_cmds_GCJ | \ + old_archive_from_expsyms_cmds_GCJ | \ + export_symbols_cmds_GCJ | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_GCJ + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_GCJ + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_GCJ + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_GCJ + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_GCJ +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_GCJ + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_GCJ +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_GCJ +archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_GCJ +module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_GCJ + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_GCJ + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_GCJ + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_GCJ + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_GCJ + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_GCJ + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_GCJ + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_GCJ + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_GCJ" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_GCJ + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_GCJ + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_GCJ + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_GCJ + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + RC) + + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +compiler_RC=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + +lt_cv_prog_compiler_c_o_RC=yes + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_RC \ + CC_RC \ + LD_RC \ + lt_prog_compiler_wl_RC \ + lt_prog_compiler_pic_RC \ + lt_prog_compiler_static_RC \ + lt_prog_compiler_no_builtin_flag_RC \ + export_dynamic_flag_spec_RC \ + thread_safe_flag_spec_RC \ + whole_archive_flag_spec_RC \ + enable_shared_with_static_runtimes_RC \ + old_archive_cmds_RC \ + old_archive_from_new_cmds_RC \ + predep_objects_RC \ + postdep_objects_RC \ + predeps_RC \ + postdeps_RC \ + compiler_lib_search_path_RC \ + archive_cmds_RC \ + archive_expsym_cmds_RC \ + postinstall_cmds_RC \ + postuninstall_cmds_RC \ + old_archive_from_expsyms_cmds_RC \ + allow_undefined_flag_RC \ + no_undefined_flag_RC \ + export_symbols_cmds_RC \ + hardcode_libdir_flag_spec_RC \ + hardcode_libdir_flag_spec_ld_RC \ + hardcode_libdir_separator_RC \ + hardcode_automatic_RC \ + module_cmds_RC \ + module_expsym_cmds_RC \ + lt_cv_prog_compiler_c_o_RC \ + exclude_expsyms_RC \ + include_expsyms_RC; do + + case $var in + old_archive_cmds_RC | \ + old_archive_from_new_cmds_RC | \ + archive_cmds_RC | \ + archive_expsym_cmds_RC | \ + module_cmds_RC | \ + module_expsym_cmds_RC | \ + old_archive_from_expsyms_cmds_RC | \ + export_symbols_cmds_RC | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_RC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_RC + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_RC +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_RC + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_RC + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_RC + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_RC + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_RC" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + ;; + + *) + { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +echo "$as_me: error: Unsupported tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +echo "$as_me: error: unable to update list of available tagged configurations." >&2;} + { (exit 1); exit 1; }; } + fi +fi + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + + + + + + + + + + + + + + + + + + + +sed -e 's/^build_old_libs=yes/build_old_libs=no/' libtool > libtool-disable-static +chmod +x libtool-disable-static + +ACLOCAL_AMFLAGS="-I m4" + + +# By default we simply use the C compiler to build assembly code. + +: ${CCAS='$(CC)'} +# Set ASFLAGS if not already set. +: ${CCASFLAGS='$(CFLAGS)'} + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CXX" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + : > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # (even with -Werror). So we grep stderr for any message + # that says an option was ignored. + if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +# Check whether --enable-largefile or --disable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval="$enable_largefile" + +fi; +if test "$enable_largefile" != no; then + + echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 +echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_largefile_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_largefile_CC=' -n32'; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_file_offset_bits+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_file_offset_bits=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_file_offset_bits=64; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 +echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 +if test "$ac_cv_sys_file_offset_bits" != no; then + +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF + +fi +rm -f conftest* + echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 +echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_large_files+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_large_files=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_large_files=1; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +echo "${ECHO_T}$ac_cv_sys_large_files" >&6 +if test "$ac_cv_sys_large_files" != no; then + +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF + +fi +rm -f conftest* +fi + +echo "$as_me:$LINENO: checking for _LARGEFILE_SOURCE value needed for large files" >&5 +echo $ECHO_N "checking for _LARGEFILE_SOURCE value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_largefile_source+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_largefile_source=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +return !fseeko; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _LARGEFILE_SOURCE 1 +#include +int +main () +{ +return !fseeko; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_largefile_source=1; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_source" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_source" >&6 +if test "$ac_cv_sys_largefile_source" != no; then + +cat >>confdefs.h <<_ACEOF +#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source +_ACEOF + +fi +rm -f conftest* + +# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug +# in glibc 2.1.3, but that breaks too many other things. +# If you want fseeko and ftello with glibc, upgrade to a fixed glibc. +echo "$as_me:$LINENO: checking for fseeko" >&5 +echo $ECHO_N "checking for fseeko... $ECHO_C" >&6 +if test "${ac_cv_func_fseeko+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +return fseeko && fseeko (stdin, 0, 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_fseeko=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_fseeko=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_fseeko" >&5 +echo "${ECHO_T}$ac_cv_func_fseeko" >&6 +if test $ac_cv_func_fseeko = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_FSEEKO 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking for void*" >&5 +echo $ECHO_N "checking for void*... $ECHO_C" >&6 +if test "${ac_cv_type_voidp+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((void* *) 0) + return 0; +if (sizeof (void*)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_voidp=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_voidp=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_voidp" >&5 +echo "${ECHO_T}$ac_cv_type_voidp" >&6 + +echo "$as_me:$LINENO: checking size of void*" >&5 +echo $ECHO_N "checking size of void*... $ECHO_C" >&6 +if test "${ac_cv_sizeof_voidp+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_voidp" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (void*))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (void*))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (void*))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (void*))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (void*))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_voidp=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (void*), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (void*), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (void*)); } +unsigned long ulongval () { return (long) (sizeof (void*)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (void*))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (void*)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (void*)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_voidp=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (void*), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (void*), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_voidp=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_voidp" >&5 +echo "${ECHO_T}$ac_cv_sizeof_voidp" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_VOIDP $ac_cv_sizeof_voidp +_ACEOF + + + +#@@@ new name is AC_CONFIG_HEADERS + ac_config_headers="$ac_config_headers config.h" + + +echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 +if test "${ac_cv_c_bigendian+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # See if sys/param.h defines the BYTE_ORDER macro. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include + +int +main () +{ +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN + bogus endian macros +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # It does; now see whether it defined to BIG_ENDIAN or not. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_bigendian=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +# It does not; compile a test program. +if test "$cross_compiling" = yes; then + # try to guess the endianness by grepping values into an object file + ac_cv_c_bigendian=unknown + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } +short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } +int +main () +{ + _ascii (); _ebcdic (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then + ac_cv_c_bigendian=yes +fi +if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +int +main () +{ + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long l; + char c[sizeof (long)]; + } u; + u.l = 1; + exit (u.c[sizeof (long) - 1] == 1); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_bigendian=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6 +case $ac_cv_c_bigendian in + yes) + +cat >>confdefs.h <<\_ACEOF +#define WORDS_BIGENDIAN 1 +_ACEOF + ;; + no) + ;; + *) + { { echo "$as_me:$LINENO: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +echo "$as_me: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} + { (exit 1); exit 1; }; } ;; +esac + + +echo "$as_me:$LINENO: checking for socklen_t" >&5 +echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 +if test "${ac_cv_type_socklen_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((socklen_t *) 0) + return 0; +if (sizeof (socklen_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_socklen_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_socklen_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5 +echo "${ECHO_T}$ac_cv_type_socklen_t" >&6 +if test $ac_cv_type_socklen_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_SOCKLEN_T 1 +_ACEOF + + +fi + + + +for ac_func in getopt_long +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +case "$host_cpu" in + i*86) + cpu_ia32=true + cat >>confdefs.h <<\_ACEOF +#define FLAC__CPU_IA32 1 +_ACEOF + + + + ;; + powerpc) + cpu_ppc=true + cat >>confdefs.h <<\_ACEOF +#define FLAC__CPU_PPC 1 +_ACEOF + + + + ;; + sparc) + cpu_sparc=true + cat >>confdefs.h <<\_ACEOF +#define FLAC__CPU_SPARC 1 +_ACEOF + + + + ;; +esac + + +if test "x$cpu_ia32" = xtrue; then + FLaC__CPU_IA32_TRUE= + FLaC__CPU_IA32_FALSE='#' +else + FLaC__CPU_IA32_TRUE='#' + FLaC__CPU_IA32_FALSE= +fi + + + +if test "x$cpu_ppc" = xtrue; then + FLaC__CPU_PPC_TRUE= + FLaC__CPU_PPC_FALSE='#' +else + FLaC__CPU_PPC_TRUE='#' + FLaC__CPU_PPC_FALSE= +fi + + + +if test "x$cpu_sparc" = xtrue; then + FLaC__CPU_SPARC_TRUE= + FLaC__CPU_SPARC_FALSE='#' +else + FLaC__CPU_SPARC_TRUE='#' + FLaC__CPU_SPARC_FALSE= +fi + + +case "$host" in + i386-*-openbsd3.[0-3]) OBJ_FORMAT=aoutb ;; + *-*-cygwin|*mingw*) OBJ_FORMAT=win32 ;; + *-*-darwin*) OBJ_FORMAT=macho ;; + *) OBJ_FORMAT=elf ;; +esac + + +# only needed because of ntohl() usage, can get rid of after that's gone: +case "$host" in + *-*-cygwin|*mingw*) MINGW_WINSOCK_LIBS=-lwsock32 ;; + *) MINGW_WINSOCK_LIBS= ;; +esac + + +case "$host" in + *-pc-linux-gnu) + sys_linux=true + cat >>confdefs.h <<\_ACEOF +#define FLAC__SYS_LINUX 1 +_ACEOF + + + + ;; + *-*-darwin*) + sys_darwin=true + cat >>confdefs.h <<\_ACEOF +#define FLAC__SYS_DARWIN 1 +_ACEOF + + + + ;; +esac + + +if test "x$sys_darwin" = xtrue; then + FLaC__SYS_DARWIN_TRUE= + FLaC__SYS_DARWIN_FALSE='#' +else + FLaC__SYS_DARWIN_TRUE='#' + FLaC__SYS_DARWIN_FALSE= +fi + + + +if test "x$sys_linux" = xtrue; then + FLaC__SYS_LINUX_TRUE= + FLaC__SYS_LINUX_FALSE='#' +else + FLaC__SYS_LINUX_TRUE='#' + FLaC__SYS_LINUX_FALSE= +fi + + +if test "x$cpu_ia32" = xtrue ; then +cat >>confdefs.h <<\_ACEOF +#define FLAC__ALIGN_MALLOC_DATA 1 +_ACEOF + + + +fi + +# Check whether --enable-asm-optimizations or --disable-asm-optimizations was given. +if test "${enable_asm_optimizations+set}" = set; then + enableval="$enable_asm_optimizations" + asm_opt=no +else + asm_opt=yes +fi; + + +if test "x$asm_opt" = xno; then + FLaC__NO_ASM_TRUE= + FLaC__NO_ASM_FALSE='#' +else + FLaC__NO_ASM_TRUE='#' + FLaC__NO_ASM_FALSE= +fi + +if test "x$asm_opt" = xno ; then +cat >>confdefs.h <<\_ACEOF +#define FLAC__NO_ASM 1 +_ACEOF + + + +fi + +# Check whether --enable-debug or --disable-debug was given. +if test "${enable_debug+set}" = set; then + enableval="$enable_debug" + case "${enableval}" in + yes) debug=true ;; + no) debug=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-debug" >&5 +echo "$as_me: error: bad value ${enableval} for --enable-debug" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + debug=false +fi; + + +if test "x$debug" = xtrue; then + DEBUG_TRUE= + DEBUG_FALSE='#' +else + DEBUG_TRUE='#' + DEBUG_FALSE= +fi + + +# Check whether --enable-sse or --disable-sse was given. +if test "${enable_sse+set}" = set; then + enableval="$enable_sse" + case "${enableval}" in + yes) sse_os=true ;; + no) sse_os=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-sse" >&5 +echo "$as_me: error: bad value ${enableval} for --enable-sse" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + sse_os=false +fi; + + +if test "x$sse_os" = xtrue; then + FLaC__SSE_OS_TRUE= + FLaC__SSE_OS_FALSE='#' +else + FLaC__SSE_OS_TRUE='#' + FLaC__SSE_OS_FALSE= +fi + +if test "x$sse_os" = xtrue ; then +cat >>confdefs.h <<\_ACEOF +#define FLAC__SSE_OS 1 +_ACEOF + + + +fi + +# Check whether --enable-3dnow or --disable-3dnow was given. +if test "${enable_3dnow+set}" = set; then + enableval="$enable_3dnow" + case "${enableval}" in + yes) use_3dnow=true ;; + no) use_3dnow=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-3dnow" >&5 +echo "$as_me: error: bad value ${enableval} for --enable-3dnow" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + use_3dnow=true +fi; + + +if test "x$use_3dnow" = xtrue; then + FLaC__USE_3DNOW_TRUE= + FLaC__USE_3DNOW_FALSE='#' +else + FLaC__USE_3DNOW_TRUE='#' + FLaC__USE_3DNOW_FALSE= +fi + +if test "x$use_3dnow" = xtrue ; then +cat >>confdefs.h <<\_ACEOF +#define FLAC__USE_3DNOW 1 +_ACEOF + + + +fi + +# Check whether --enable-altivec or --disable-altivec was given. +if test "${enable_altivec+set}" = set; then + enableval="$enable_altivec" + case "${enableval}" in + yes) use_altivec=true ;; + no) use_altivec=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-altivec" >&5 +echo "$as_me: error: bad value ${enableval} for --enable-altivec" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + use_altivec=true +fi; + + +if test "x$use_altivec" = xtrue; then + FLaC__USE_ALTIVEC_TRUE= + FLaC__USE_ALTIVEC_FALSE='#' +else + FLaC__USE_ALTIVEC_TRUE='#' + FLaC__USE_ALTIVEC_FALSE= +fi + +if test "x$use_altivec" = xtrue ; then +cat >>confdefs.h <<\_ACEOF +#define FLAC__USE_ALTIVEC 1 +_ACEOF + + + +fi + +# Check whether --enable-thorough-tests or --disable-thorough-tests was given. +if test "${enable_thorough_tests+set}" = set; then + enableval="$enable_thorough_tests" + case "${enableval}" in + yes) thorough_tests=true ;; + no) thorough_tests=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-thorough-tests" >&5 +echo "$as_me: error: bad value ${enableval} for --enable-thorough-tests" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + thorough_tests=true +fi; +# Check whether --enable-exhaustive-tests or --disable-exhaustive-tests was given. +if test "${enable_exhaustive_tests+set}" = set; then + enableval="$enable_exhaustive_tests" + case "${enableval}" in + yes) exhaustive_tests=true ;; + no) exhaustive_tests=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-exhaustive-tests" >&5 +echo "$as_me: error: bad value ${enableval} for --enable-exhaustive-tests" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + exhaustive_tests=false +fi; +if test "x$thorough_tests" = xfalse ; then +FLAC__TEST_LEVEL=0 +elif test "x$exhaustive_tests" = xfalse ; then +FLAC__TEST_LEVEL=1 +else +FLAC__TEST_LEVEL=2 +fi + + +# Check whether --enable-valgrind-testing or --disable-valgrind-testing was given. +if test "${enable_valgrind_testing+set}" = set; then + enableval="$enable_valgrind_testing" + case "${enableval}" in + yes) FLAC__TEST_WITH_VALGRIND=yes ;; + no) FLAC__TEST_WITH_VALGRIND=no ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-valgrind-testing" >&5 +echo "$as_me: error: bad value ${enableval} for --enable-valgrind-testing" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + FLAC__TEST_WITH_VALGRIND=no +fi; + + +# Check whether --enable-doxygen-docs or --disable-doxygen-docs was given. +if test "${enable_doxygen_docs+set}" = set; then + enableval="$enable_doxygen_docs" + case "${enableval}" in + yes) enable_doxygen_docs=true ;; + no) enable_doxygen_docs=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-doxygen-docs" >&5 +echo "$as_me: error: bad value ${enableval} for --enable-doxygen-docs" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + enable_doxygen_docs=true +fi; +if test "x$enable_doxygen_docs" != xfalse ; then + for ac_prog in doxygen +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_DOXYGEN+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$DOXYGEN"; then + ac_cv_prog_DOXYGEN="$DOXYGEN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DOXYGEN="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +DOXYGEN=$ac_cv_prog_DOXYGEN +if test -n "$DOXYGEN"; then + echo "$as_me:$LINENO: result: $DOXYGEN" >&5 +echo "${ECHO_T}$DOXYGEN" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$DOXYGEN" && break +done + +fi + + +if test -n "$DOXYGEN"; then + FLaC__HAS_DOXYGEN_TRUE= + FLaC__HAS_DOXYGEN_FALSE='#' +else + FLaC__HAS_DOXYGEN_TRUE='#' + FLaC__HAS_DOXYGEN_FALSE= +fi + + +# Check whether --enable-local-xmms-plugin or --disable-local-xmms-plugin was given. +if test "${enable_local_xmms_plugin+set}" = set; then + enableval="$enable_local_xmms_plugin" + case "${enableval}" in + yes) install_xmms_plugin_locally=true ;; + no) install_xmms_plugin_locally=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-local-xmms-plugin" >&5 +echo "$as_me: error: bad value ${enableval} for --enable-local-xmms-plugin" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + install_xmms_plugin_locally=false +fi; + + +if test "x$install_xmms_plugin_locally" = xtrue; then + FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE= + FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE='#' +else + FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE='#' + FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE= +fi + + +# Check whether --enable-xmms-plugin or --disable-xmms-plugin was given. +if test "${enable_xmms_plugin+set}" = set; then + enableval="$enable_xmms_plugin" + case "${enableval}" in + yes) enable_xmms_plugin=true ;; + no) enable_xmms_plugin=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-xmms-plugin" >&5 +echo "$as_me: error: bad value ${enableval} for --enable-xmms-plugin" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + enable_xmms_plugin=true +fi; +if test "x$enable_xmms_plugin" != xfalse ; then + + +# Check whether --with-xmms-prefix or --without-xmms-prefix was given. +if test "${with_xmms_prefix+set}" = set; then + withval="$with_xmms_prefix" + xmms_config_prefix="$withval" +else + xmms_config_prefix="" +fi; + +# Check whether --with-xmms-exec-prefix or --without-xmms-exec-prefix was given. +if test "${with_xmms_exec_prefix+set}" = set; then + withval="$with_xmms_exec_prefix" + xmms_config_exec_prefix="$withval" +else + xmms_config_exec_prefix="" +fi; + +if test x$xmms_config_exec_prefix != x; then + xmms_config_args="$xmms_config_args --exec-prefix=$xmms_config_exec_prefix" + if test x${XMMS_CONFIG+set} != xset; then + XMMS_CONFIG=$xmms_config_exec_prefix/bin/xmms-config + fi +fi + +if test x$xmms_config_prefix != x; then + xmms_config_args="$xmms_config_args --prefix=$xmms_config_prefix" + if test x${XMMS_CONFIG+set} != xset; then + XMMS_CONFIG=$xmms_config_prefix/bin/xmms-config + fi +fi + +# Extract the first word of "xmms-config", so it can be a program name with args. +set dummy xmms-config; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_XMMS_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $XMMS_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_XMMS_CONFIG="$XMMS_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_XMMS_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_XMMS_CONFIG" && ac_cv_path_XMMS_CONFIG="no" + ;; +esac +fi +XMMS_CONFIG=$ac_cv_path_XMMS_CONFIG + +if test -n "$XMMS_CONFIG"; then + echo "$as_me:$LINENO: result: $XMMS_CONFIG" >&5 +echo "${ECHO_T}$XMMS_CONFIG" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +min_xmms_version=0.9.5.1 + +if test "$XMMS_CONFIG" = "no"; then + no_xmms=yes +else + XMMS_CFLAGS=`$XMMS_CONFIG $xmms_config_args --cflags` + XMMS_LIBS=`$XMMS_CONFIG $xmms_config_args --libs` + XMMS_VERSION=`$XMMS_CONFIG $xmms_config_args --version` + XMMS_DATA_DIR=`$XMMS_CONFIG $xmms_config_args --data-dir` + XMMS_PLUGIN_DIR=`$XMMS_CONFIG $xmms_config_args --plugin-dir` + XMMS_VISUALIZATION_PLUGIN_DIR=`$XMMS_CONFIG $xmms_config_args \ + --visualization-plugin-dir` + XMMS_INPUT_PLUGIN_DIR=`$XMMS_CONFIG $xmms_config_args --input-plugin-dir` + XMMS_OUTPUT_PLUGIN_DIR=`$XMMS_CONFIG $xmms_config_args --output-plugin-dir` + XMMS_EFFECT_PLUGIN_DIR=`$XMMS_CONFIG $xmms_config_args --effect-plugin-dir` + XMMS_GENERAL_PLUGIN_DIR=`$XMMS_CONFIG $xmms_config_args --general-plugin-dir` + + + +# Determine which version number is greater. Prints 2 to stdout if +# the second number is greater, 1 if the first number is greater, +# 0 if the numbers are equal. + +# Written 15 December 1999 by Ben Gertzfield +# Revised 15 December 1999 by Jim Monty + + for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + + xmms_got_version=` $AWK ' \ +BEGIN { \ + print vercmp(ARGV[1], ARGV[2]); \ +} \ + \ +function vercmp(ver1, ver2, ver1arr, ver2arr, \ + ver1len, ver2len, \ + ver1int, ver2int, len, i, p) { \ + \ + ver1len = split(ver1, ver1arr, /\./); \ + ver2len = split(ver2, ver2arr, /\./); \ + \ + len = ver1len > ver2len ? ver1len : ver2len; \ + \ + for (i = 1; i <= len; i++) { \ + p = 1000 ^ (len - i); \ + ver1int += ver1arr[i] * p; \ + ver2int += ver2arr[i] * p; \ + } \ + \ + if (ver1int < ver2int) \ + return 2; \ + else if (ver1int > ver2int) \ + return 1; \ + else \ + return 0; \ +}' $XMMS_VERSION $min_xmms_version` + + if test $xmms_got_version -eq 2; then # failure + no_xmms=version + else # success! + : + fi + +fi + +echo "$as_me:$LINENO: checking for XMMS - version >= $min_xmms_version" >&5 +echo $ECHO_N "checking for XMMS - version >= $min_xmms_version... $ECHO_C" >&6 + +if test "x$no_xmms" = x; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + : +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + + if test "$XMMS_CONFIG" = "no" ; then + echo "*** The xmms-config script installed by XMMS could not be found." + echo "*** If XMMS was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the XMMS_CONFIG environment variable to the" + echo "*** full path to xmms-config." + else + if test "$no_xmms" = "version"; then + echo "*** An old version of XMMS, $XMMS_VERSION, was found." + echo "*** You need a version of XMMS newer than $min_xmms_version." + echo "*** The latest version of XMMS is always available from" + echo "*** http://www.xmms.org/" + echo "***" + + echo "*** If you have already installed a sufficiently new version, this error" + echo "*** probably means that the wrong copy of the xmms-config shell script is" + echo "*** being found. The easiest way to fix this is to remove the old version" + echo "*** of XMMS, but you can also set the XMMS_CONFIG environment to point to the" + echo "*** correct copy of xmms-config. (In this case, you will have to" + echo "*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf" + echo "*** so that the correct libraries are found at run-time)" + fi + fi + XMMS_CFLAGS="" + XMMS_LIBS="" + { echo "$as_me:$LINENO: WARNING: *** XMMS >= 0.9.5.1 not installed - XMMS support will not be built" >&5 +echo "$as_me: WARNING: *** XMMS >= 0.9.5.1 not installed - XMMS support will not be built" >&2;} +fi + + + + + + + + + + + +fi + + +if test -n "$XMMS_INPUT_PLUGIN_DIR"; then + FLaC__HAS_XMMS_TRUE= + FLaC__HAS_XMMS_FALSE='#' +else + FLaC__HAS_XMMS_TRUE='#' + FLaC__HAS_XMMS_FALSE= +fi + + +# Check whether --enable-cpplibs or --disable-cpplibs was given. +if test "${enable_cpplibs+set}" = set; then + enableval="$enable_cpplibs" + case "${enableval}" in + yes) disable_cpplibs=false ;; + no) disable_cpplibs=true ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-cpplibs" >&5 +echo "$as_me: error: bad value ${enableval} for --enable-cpplibs" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + disable_cpplibs=false +fi; + + +if test "x$disable_cpplibs" != xtrue; then + FLaC__WITH_CPPLIBS_TRUE= + FLaC__WITH_CPPLIBS_FALSE='#' +else + FLaC__WITH_CPPLIBS_TRUE='#' + FLaC__WITH_CPPLIBS_FALSE= +fi + + +# Check whether --enable-ogg or --disable-ogg was given. +if test "${enable_ogg+set}" = set; then + enableval="$enable_ogg" + want_ogg=$enableval +else + want_ogg=yes +fi; + +if test "x$want_ogg" != "xno"; then + +# Check whether --with-ogg or --without-ogg was given. +if test "${with_ogg+set}" = set; then + withval="$with_ogg" + ogg_prefix="$withval" +else + ogg_prefix="" +fi; + +# Check whether --with-ogg-libraries or --without-ogg-libraries was given. +if test "${with_ogg_libraries+set}" = set; then + withval="$with_ogg_libraries" + ogg_libraries="$withval" +else + ogg_libraries="" +fi; + +# Check whether --with-ogg-includes or --without-ogg-includes was given. +if test "${with_ogg_includes+set}" = set; then + withval="$with_ogg_includes" + ogg_includes="$withval" +else + ogg_includes="" +fi; +# Check whether --enable-oggtest or --disable-oggtest was given. +if test "${enable_oggtest+set}" = set; then + enableval="$enable_oggtest" + +else + enable_oggtest=yes +fi; + + if test "x$ogg_libraries" != "x" ; then + OGG_LIBS="-L$ogg_libraries" + elif test "x$ogg_prefix" != "x" ; then + OGG_LIBS="-L$ogg_prefix/lib" + elif test "x$prefix" != "xNONE" ; then + OGG_LIBS="-L$prefix/lib" + fi + + OGG_LIBS="$OGG_LIBS -logg" + + if test "x$ogg_includes" != "x" ; then + OGG_CFLAGS="-I$ogg_includes" + elif test "x$ogg_prefix" != "x" ; then + OGG_CFLAGS="-I$ogg_prefix/include" + elif test "x$prefix" != "xNONE"; then + OGG_CFLAGS="-I$prefix/include" + fi + + echo "$as_me:$LINENO: checking for Ogg" >&5 +echo $ECHO_N "checking for Ogg... $ECHO_C" >&6 + no_ogg="" + + + if test "x$enable_oggtest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $OGG_CFLAGS" + LIBS="$LIBS $OGG_LIBS" + rm -f conf.oggtest + if test "$cross_compiling" = yes; then + echo $ac_n "cross compiling; assumed OK... $ac_c" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +#include +#include + +int main () +{ + system("touch conf.oggtest"); + return 0; +} + + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +no_ogg=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + + if test "x$no_ogg" = "x" ; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + have_ogg=yes + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + if test -f conf.oggtest ; then + : + else + echo "*** Could not run Ogg test program, checking why..." + CFLAGS="$CFLAGS $OGG_CFLAGS" + LIBS="$LIBS $OGG_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include + +int +main () +{ + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding Ogg or finding the wrong" + echo "*** version of Ogg. If it is not finding Ogg, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means Ogg was incorrectly installed" + echo "*** or that you have moved Ogg since it was installed." +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + OGG_CFLAGS="" + OGG_LIBS="" + { echo "$as_me:$LINENO: WARNING: *** Ogg development enviroment not installed - Ogg support will not be built" >&5 +echo "$as_me: WARNING: *** Ogg development enviroment not installed - Ogg support will not be built" >&2;} + fi + + + rm -f conf.oggtest + +fi + + + +if test "x$have_ogg" = xyes; then + FLaC__HAS_OGG_TRUE= + FLaC__HAS_OGG_FALSE='#' +else + FLaC__HAS_OGG_TRUE='#' + FLaC__HAS_OGG_FALSE= +fi + +if test "x$have_ogg" = xyes ; then +cat >>confdefs.h <<\_ACEOF +#define FLAC__HAS_OGG 1 +_ACEOF + + + +fi + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${acl_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$acl_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${acl_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + echo "$as_me:$LINENO: checking for shared library run path origin" >&5 +echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 +if test "${acl_cv_rpath+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + +fi +echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 +echo "${ECHO_T}$acl_cv_rpath" >&6 + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath or --disable-rpath was given. +if test "${enable_rpath+set}" = set; then + enableval="$enable_rpath" + : +else + enable_rpath=yes +fi; + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then + withval="$with_libiconv_prefix" + + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi; + LIBICONV= + LTLIBICONV= + INCICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + echo "$as_me:$LINENO: checking for iconv" >&5 +echo $ECHO_N "checking for iconv... $ECHO_C" >&6 +if test "${am_cv_func_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 +echo "${ECHO_T}$am_cv_func_iconv" >&6 + if test "$am_cv_func_iconv" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ICONV 1 +_ACEOF + + fi + if test "$am_cv_lib_iconv" = yes; then + echo "$as_me:$LINENO: checking how to link with libiconv" >&5 +echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBICONV" >&5 +echo "${ECHO_T}$LIBICONV" >&6 + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + if test "$am_cv_func_iconv" = yes; then + echo "$as_me:$LINENO: checking for iconv declaration" >&5 +echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6 + if test "${am_cv_proto_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_proto_iconv_arg1="" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_proto_iconv_arg1="const" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" +fi + + am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + echo "$as_me:$LINENO: result: ${ac_t:- + }$am_cv_proto_iconv" >&5 +echo "${ECHO_T}${ac_t:- + }$am_cv_proto_iconv" >&6 + +cat >>confdefs.h <<_ACEOF +#define ICONV_CONST $am_cv_proto_iconv_arg1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 +if test "${am_cv_langinfo_codeset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +char* cs = nl_langinfo(CODESET); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_langinfo_codeset=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 + if test $am_cv_langinfo_codeset = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LANGINFO_CODESET 1 +_ACEOF + + fi + + +for ac_prog in docbook-to-man docbook2man +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_DOCBOOK_TO_MAN+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$DOCBOOK_TO_MAN"; then + ac_cv_prog_DOCBOOK_TO_MAN="$DOCBOOK_TO_MAN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DOCBOOK_TO_MAN="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +DOCBOOK_TO_MAN=$ac_cv_prog_DOCBOOK_TO_MAN +if test -n "$DOCBOOK_TO_MAN"; then + echo "$as_me:$LINENO: result: $DOCBOOK_TO_MAN" >&5 +echo "${ECHO_T}$DOCBOOK_TO_MAN" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$DOCBOOK_TO_MAN" && break +done + + + +if test -n "$DOCBOOK_TO_MAN"; then + FLaC__HAS_DOCBOOK_TO_MAN_TRUE= + FLaC__HAS_DOCBOOK_TO_MAN_FALSE='#' +else + FLaC__HAS_DOCBOOK_TO_MAN_TRUE='#' + FLaC__HAS_DOCBOOK_TO_MAN_FALSE= +fi + +if test -n "$DOCBOOK_TO_MAN" ; then +cat >>confdefs.h <<\_ACEOF +#define FLAC__HAS_DOCBOOK_TO_MAN 1 +_ACEOF + + + +fi + +# only matters for x86 +for ac_prog in nasm +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_NASM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NASM"; then + ac_cv_prog_NASM="$NASM" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NASM="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +NASM=$ac_cv_prog_NASM +if test -n "$NASM"; then + echo "$as_me:$LINENO: result: $NASM" >&5 +echo "${ECHO_T}$NASM" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$NASM" && break +done + + + +if test -n "$NASM"; then + FLaC__HAS_NASM_TRUE= + FLaC__HAS_NASM_FALSE='#' +else + FLaC__HAS_NASM_TRUE='#' + FLaC__HAS_NASM_FALSE= +fi + +if test -n "$NASM" ; then +cat >>confdefs.h <<\_ACEOF +#define FLAC__HAS_NASM 1 +_ACEOF + + + +fi + +# only matters for PowerPC +for ac_prog in as +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AS="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + echo "$as_me:$LINENO: result: $AS" >&5 +echo "${ECHO_T}$AS" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AS" && break +done +test -n "$AS" || AS="as" + +for ac_prog in gas +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_GAS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$GAS"; then + ac_cv_prog_GAS="$GAS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_GAS="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +GAS=$ac_cv_prog_GAS +if test -n "$GAS"; then + echo "$as_me:$LINENO: result: $GAS" >&5 +echo "${ECHO_T}$GAS" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$GAS" && break +done +test -n "$GAS" || GAS="gas" + + +# try -v (apple as) and --version (gas) at the same time +test "$AS" = "as" && as --version -v < /dev/null 2>&1 | grep Apple >/dev/null || AS=gas + + + +if test "$AS" = "as"; then + FLaC__HAS_AS_TRUE= + FLaC__HAS_AS_FALSE='#' +else + FLaC__HAS_AS_TRUE='#' + FLaC__HAS_AS_FALSE= +fi + + + +if test "$AS" = "gas"; then + FLaC__HAS_GAS_TRUE= + FLaC__HAS_GAS_FALSE='#' +else + FLaC__HAS_GAS_TRUE='#' + FLaC__HAS_GAS_FALSE= +fi + +if test "$AS" = "as" ; then +cat >>confdefs.h <<\_ACEOF +#define FLAC__HAS_AS 1 +_ACEOF + + + +fi +if test "$AS" = "gas" ; then +# funniest. macro. ever. +cat >>confdefs.h <<\_ACEOF +#define FLAC__HAS_GAS 1 +_ACEOF + + + +fi + +CPPFLAGS='-I$(top_builddir) -I$(srcdir)/include -I$(top_srcdir)/include'" $CPPFLAGS" +if test "x$debug" = xtrue; then + CPPFLAGS="-DDEBUG $CPPFLAGS" + CFLAGS="-g $CFLAGS" +else + CPPFLAGS="-DNDEBUG $CPPFLAGS" + if test "x$GCC" = xyes; then + CPPFLAGS="-DFLaC__INLINE=__inline__ $CPPFLAGS" + CFLAGS="-O3 -funroll-loops -finline-functions -Wall -W -Winline $CFLAGS" + fi +fi + +#@@@ + + +if test "yes" = "no"; then + FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE= + FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE='#' +else + FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE='#' + FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE= +fi + + + +if test "yes" = "no"; then + FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE= + FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE='#' +else + FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE='#' + FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE= +fi + + + ac_config_files="$ac_config_files Makefile src/Makefile src/libFLAC/Makefile src/libFLAC/flac.pc src/libFLAC/ia32/Makefile src/libFLAC/ppc/Makefile src/libFLAC/ppc/as/Makefile src/libFLAC/ppc/gas/Makefile src/libFLAC/include/Makefile src/libFLAC/include/private/Makefile src/libFLAC/include/protected/Makefile src/libFLAC++/Makefile src/libFLAC++/flac++.pc src/flac/Makefile src/metaflac/Makefile src/monkeys_audio_utilities/Makefile src/monkeys_audio_utilities/flac_mac/Makefile src/monkeys_audio_utilities/flac_ren/Makefile src/plugin_common/Makefile src/plugin_winamp2/Makefile src/plugin_winamp2/include/Makefile src/plugin_winamp2/include/winamp2/Makefile src/plugin_xmms/Makefile src/share/Makefile src/share/getopt/Makefile src/share/grabbag/Makefile src/share/replaygain_analysis/Makefile src/share/replaygain_synthesis/Makefile src/share/replaygain_synthesis/include/Makefile src/share/replaygain_synthesis/include/private/Makefile src/share/utf8/Makefile src/test_grabbag/Makefile src/test_grabbag/cuesheet/Makefile src/test_grabbag/picture/Makefile src/test_libs_common/Makefile src/test_libFLAC/Makefile src/test_libFLAC++/Makefile src/test_seeking/Makefile src/test_streams/Makefile examples/Makefile examples/c/Makefile examples/c/decode/Makefile examples/c/decode/file/Makefile examples/c/encode/Makefile examples/c/encode/file/Makefile examples/cpp/Makefile examples/cpp/decode/Makefile examples/cpp/decode/file/Makefile examples/cpp/encode/Makefile examples/cpp/encode/file/Makefile include/Makefile include/FLAC/Makefile include/FLAC++/Makefile include/share/Makefile include/share/grabbag/Makefile include/test_libs_common/Makefile doc/Makefile doc/html/Makefile doc/html/images/Makefile doc/html/images/hw/Makefile doc/html/ru/Makefile m4/Makefile man/Makefile test/Makefile test/cuesheets/Makefile test/flac-to-flac-metadata-test-files/Makefile test/metaflac-test-files/Makefile test/pictures/Makefile build/Makefile obj/Makefile obj/debug/Makefile obj/debug/bin/Makefile obj/debug/lib/Makefile obj/release/Makefile obj/release/bin/Makefile obj/release/lib/Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__CPU_IA32_TRUE}" && test -z "${FLaC__CPU_IA32_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__CPU_IA32\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__CPU_IA32\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__CPU_PPC_TRUE}" && test -z "${FLaC__CPU_PPC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__CPU_PPC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__CPU_PPC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__CPU_SPARC_TRUE}" && test -z "${FLaC__CPU_SPARC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__CPU_SPARC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__CPU_SPARC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__SYS_DARWIN_TRUE}" && test -z "${FLaC__SYS_DARWIN_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__SYS_DARWIN\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__SYS_DARWIN\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__SYS_LINUX_TRUE}" && test -z "${FLaC__SYS_LINUX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__SYS_LINUX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__SYS_LINUX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__NO_ASM_TRUE}" && test -z "${FLaC__NO_ASM_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__NO_ASM\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__NO_ASM\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${DEBUG_TRUE}" && test -z "${DEBUG_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"DEBUG\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"DEBUG\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__SSE_OS_TRUE}" && test -z "${FLaC__SSE_OS_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__SSE_OS\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__SSE_OS\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__USE_3DNOW_TRUE}" && test -z "${FLaC__USE_3DNOW_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__USE_3DNOW\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__USE_3DNOW\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__USE_ALTIVEC_TRUE}" && test -z "${FLaC__USE_ALTIVEC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__USE_ALTIVEC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__USE_ALTIVEC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__HAS_DOXYGEN_TRUE}" && test -z "${FLaC__HAS_DOXYGEN_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__HAS_DOXYGEN\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__HAS_DOXYGEN\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE}" && test -z "${FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__INSTALL_XMMS_PLUGIN_LOCALLY\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__INSTALL_XMMS_PLUGIN_LOCALLY\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__HAS_XMMS_TRUE}" && test -z "${FLaC__HAS_XMMS_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__HAS_XMMS\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__HAS_XMMS\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__WITH_CPPLIBS_TRUE}" && test -z "${FLaC__WITH_CPPLIBS_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__WITH_CPPLIBS\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__WITH_CPPLIBS\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__HAS_OGG_TRUE}" && test -z "${FLaC__HAS_OGG_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__HAS_OGG\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__HAS_OGG\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__HAS_DOCBOOK_TO_MAN_TRUE}" && test -z "${FLaC__HAS_DOCBOOK_TO_MAN_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__HAS_DOCBOOK_TO_MAN\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__HAS_DOCBOOK_TO_MAN\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__HAS_NASM_TRUE}" && test -z "${FLaC__HAS_NASM_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__HAS_NASM\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__HAS_NASM\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__HAS_AS_TRUE}" && test -z "${FLaC__HAS_AS_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__HAS_AS\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__HAS_AS\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__HAS_GAS_TRUE}" && test -z "${FLaC__HAS_GAS_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__HAS_GAS\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__HAS_GAS\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE}" && test -z "${FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__HAS_AS__TEMPORARILY_DISABLED\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__HAS_AS__TEMPORARILY_DISABLED\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE}" && test -z "${FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"FLaC__HAS_GAS__TEMPORARILY_DISABLED\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"FLaC__HAS_GAS__TEMPORARILY_DISABLED\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/libFLAC/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/libFLAC/Makefile" ;; + "src/libFLAC/flac.pc" ) CONFIG_FILES="$CONFIG_FILES src/libFLAC/flac.pc" ;; + "src/libFLAC/ia32/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/libFLAC/ia32/Makefile" ;; + "src/libFLAC/ppc/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/libFLAC/ppc/Makefile" ;; + "src/libFLAC/ppc/as/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/libFLAC/ppc/as/Makefile" ;; + "src/libFLAC/ppc/gas/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/libFLAC/ppc/gas/Makefile" ;; + "src/libFLAC/include/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/libFLAC/include/Makefile" ;; + "src/libFLAC/include/private/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/libFLAC/include/private/Makefile" ;; + "src/libFLAC/include/protected/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/libFLAC/include/protected/Makefile" ;; + "src/libFLAC++/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/libFLAC++/Makefile" ;; + "src/libFLAC++/flac++.pc" ) CONFIG_FILES="$CONFIG_FILES src/libFLAC++/flac++.pc" ;; + "src/flac/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/flac/Makefile" ;; + "src/metaflac/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/metaflac/Makefile" ;; + "src/monkeys_audio_utilities/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/monkeys_audio_utilities/Makefile" ;; + "src/monkeys_audio_utilities/flac_mac/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/monkeys_audio_utilities/flac_mac/Makefile" ;; + "src/monkeys_audio_utilities/flac_ren/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/monkeys_audio_utilities/flac_ren/Makefile" ;; + "src/plugin_common/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/plugin_common/Makefile" ;; + "src/plugin_winamp2/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/plugin_winamp2/Makefile" ;; + "src/plugin_winamp2/include/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/plugin_winamp2/include/Makefile" ;; + "src/plugin_winamp2/include/winamp2/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/plugin_winamp2/include/winamp2/Makefile" ;; + "src/plugin_xmms/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/plugin_xmms/Makefile" ;; + "src/share/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/share/Makefile" ;; + "src/share/getopt/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/share/getopt/Makefile" ;; + "src/share/grabbag/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/share/grabbag/Makefile" ;; + "src/share/replaygain_analysis/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/share/replaygain_analysis/Makefile" ;; + "src/share/replaygain_synthesis/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/share/replaygain_synthesis/Makefile" ;; + "src/share/replaygain_synthesis/include/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/share/replaygain_synthesis/include/Makefile" ;; + "src/share/replaygain_synthesis/include/private/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/share/replaygain_synthesis/include/private/Makefile" ;; + "src/share/utf8/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/share/utf8/Makefile" ;; + "src/test_grabbag/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/test_grabbag/Makefile" ;; + "src/test_grabbag/cuesheet/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/test_grabbag/cuesheet/Makefile" ;; + "src/test_grabbag/picture/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/test_grabbag/picture/Makefile" ;; + "src/test_libs_common/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/test_libs_common/Makefile" ;; + "src/test_libFLAC/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/test_libFLAC/Makefile" ;; + "src/test_libFLAC++/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/test_libFLAC++/Makefile" ;; + "src/test_seeking/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/test_seeking/Makefile" ;; + "src/test_streams/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/test_streams/Makefile" ;; + "examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; + "examples/c/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/c/Makefile" ;; + "examples/c/decode/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/c/decode/Makefile" ;; + "examples/c/decode/file/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/c/decode/file/Makefile" ;; + "examples/c/encode/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/c/encode/Makefile" ;; + "examples/c/encode/file/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/c/encode/file/Makefile" ;; + "examples/cpp/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/cpp/Makefile" ;; + "examples/cpp/decode/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/cpp/decode/Makefile" ;; + "examples/cpp/decode/file/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/cpp/decode/file/Makefile" ;; + "examples/cpp/encode/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/cpp/encode/Makefile" ;; + "examples/cpp/encode/file/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/cpp/encode/file/Makefile" ;; + "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; + "include/FLAC/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/FLAC/Makefile" ;; + "include/FLAC++/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/FLAC++/Makefile" ;; + "include/share/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/share/Makefile" ;; + "include/share/grabbag/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/share/grabbag/Makefile" ;; + "include/test_libs_common/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/test_libs_common/Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "doc/html/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/html/Makefile" ;; + "doc/html/images/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/html/images/Makefile" ;; + "doc/html/images/hw/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/html/images/hw/Makefile" ;; + "doc/html/ru/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/html/ru/Makefile" ;; + "m4/Makefile" ) CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; + "man/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; + "test/Makefile" ) CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; + "test/cuesheets/Makefile" ) CONFIG_FILES="$CONFIG_FILES test/cuesheets/Makefile" ;; + "test/flac-to-flac-metadata-test-files/Makefile" ) CONFIG_FILES="$CONFIG_FILES test/flac-to-flac-metadata-test-files/Makefile" ;; + "test/metaflac-test-files/Makefile" ) CONFIG_FILES="$CONFIG_FILES test/metaflac-test-files/Makefile" ;; + "test/pictures/Makefile" ) CONFIG_FILES="$CONFIG_FILES test/pictures/Makefile" ;; + "build/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/Makefile" ;; + "obj/Makefile" ) CONFIG_FILES="$CONFIG_FILES obj/Makefile" ;; + "obj/debug/Makefile" ) CONFIG_FILES="$CONFIG_FILES obj/debug/Makefile" ;; + "obj/debug/bin/Makefile" ) CONFIG_FILES="$CONFIG_FILES obj/debug/bin/Makefile" ;; + "obj/debug/lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES obj/debug/lib/Makefile" ;; + "obj/release/Makefile" ) CONFIG_FILES="$CONFIG_FILES obj/release/Makefile" ;; + "obj/release/bin/Makefile" ) CONFIG_FILES="$CONFIG_FILES obj/release/bin/Makefile" ;; + "obj/release/lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES obj/release/lib/Makefile" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@AMTAR@,$AMTAR,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@am__leading_dot@,$am__leading_dot,;t t +s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +s,@MAINT@,$MAINT,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@EGREP@,$EGREP,;t t +s,@LN_S@,$LN_S,;t t +s,@ECHO@,$ECHO,;t t +s,@AR@,$AR,;t t +s,@ac_ct_AR@,$ac_ct_AR,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@CPP@,$CPP,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t +s,@CXXDEPMODE@,$CXXDEPMODE,;t t +s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t +s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t +s,@CXXCPP@,$CXXCPP,;t t +s,@F77@,$F77,;t t +s,@FFLAGS@,$FFLAGS,;t t +s,@ac_ct_F77@,$ac_ct_F77,;t t +s,@LIBTOOL@,$LIBTOOL,;t t +s,@ACLOCAL_AMFLAGS@,$ACLOCAL_AMFLAGS,;t t +s,@CCAS@,$CCAS,;t t +s,@CCASFLAGS@,$CCASFLAGS,;t t +s,@FLaC__CPU_IA32_TRUE@,$FLaC__CPU_IA32_TRUE,;t t +s,@FLaC__CPU_IA32_FALSE@,$FLaC__CPU_IA32_FALSE,;t t +s,@FLaC__CPU_PPC_TRUE@,$FLaC__CPU_PPC_TRUE,;t t +s,@FLaC__CPU_PPC_FALSE@,$FLaC__CPU_PPC_FALSE,;t t +s,@FLaC__CPU_SPARC_TRUE@,$FLaC__CPU_SPARC_TRUE,;t t +s,@FLaC__CPU_SPARC_FALSE@,$FLaC__CPU_SPARC_FALSE,;t t +s,@OBJ_FORMAT@,$OBJ_FORMAT,;t t +s,@MINGW_WINSOCK_LIBS@,$MINGW_WINSOCK_LIBS,;t t +s,@FLaC__SYS_DARWIN_TRUE@,$FLaC__SYS_DARWIN_TRUE,;t t +s,@FLaC__SYS_DARWIN_FALSE@,$FLaC__SYS_DARWIN_FALSE,;t t +s,@FLaC__SYS_LINUX_TRUE@,$FLaC__SYS_LINUX_TRUE,;t t +s,@FLaC__SYS_LINUX_FALSE@,$FLaC__SYS_LINUX_FALSE,;t t +s,@FLaC__NO_ASM_TRUE@,$FLaC__NO_ASM_TRUE,;t t +s,@FLaC__NO_ASM_FALSE@,$FLaC__NO_ASM_FALSE,;t t +s,@DEBUG_TRUE@,$DEBUG_TRUE,;t t +s,@DEBUG_FALSE@,$DEBUG_FALSE,;t t +s,@FLaC__SSE_OS_TRUE@,$FLaC__SSE_OS_TRUE,;t t +s,@FLaC__SSE_OS_FALSE@,$FLaC__SSE_OS_FALSE,;t t +s,@FLaC__USE_3DNOW_TRUE@,$FLaC__USE_3DNOW_TRUE,;t t +s,@FLaC__USE_3DNOW_FALSE@,$FLaC__USE_3DNOW_FALSE,;t t +s,@FLaC__USE_ALTIVEC_TRUE@,$FLaC__USE_ALTIVEC_TRUE,;t t +s,@FLaC__USE_ALTIVEC_FALSE@,$FLaC__USE_ALTIVEC_FALSE,;t t +s,@FLAC__TEST_LEVEL@,$FLAC__TEST_LEVEL,;t t +s,@FLAC__TEST_WITH_VALGRIND@,$FLAC__TEST_WITH_VALGRIND,;t t +s,@DOXYGEN@,$DOXYGEN,;t t +s,@FLaC__HAS_DOXYGEN_TRUE@,$FLaC__HAS_DOXYGEN_TRUE,;t t +s,@FLaC__HAS_DOXYGEN_FALSE@,$FLaC__HAS_DOXYGEN_FALSE,;t t +s,@FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE@,$FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE,;t t +s,@FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE@,$FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE,;t t +s,@XMMS_CONFIG@,$XMMS_CONFIG,;t t +s,@XMMS_CFLAGS@,$XMMS_CFLAGS,;t t +s,@XMMS_LIBS@,$XMMS_LIBS,;t t +s,@XMMS_VERSION@,$XMMS_VERSION,;t t +s,@XMMS_DATA_DIR@,$XMMS_DATA_DIR,;t t +s,@XMMS_PLUGIN_DIR@,$XMMS_PLUGIN_DIR,;t t +s,@XMMS_VISUALIZATION_PLUGIN_DIR@,$XMMS_VISUALIZATION_PLUGIN_DIR,;t t +s,@XMMS_INPUT_PLUGIN_DIR@,$XMMS_INPUT_PLUGIN_DIR,;t t +s,@XMMS_OUTPUT_PLUGIN_DIR@,$XMMS_OUTPUT_PLUGIN_DIR,;t t +s,@XMMS_GENERAL_PLUGIN_DIR@,$XMMS_GENERAL_PLUGIN_DIR,;t t +s,@XMMS_EFFECT_PLUGIN_DIR@,$XMMS_EFFECT_PLUGIN_DIR,;t t +s,@FLaC__HAS_XMMS_TRUE@,$FLaC__HAS_XMMS_TRUE,;t t +s,@FLaC__HAS_XMMS_FALSE@,$FLaC__HAS_XMMS_FALSE,;t t +s,@FLaC__WITH_CPPLIBS_TRUE@,$FLaC__WITH_CPPLIBS_TRUE,;t t +s,@FLaC__WITH_CPPLIBS_FALSE@,$FLaC__WITH_CPPLIBS_FALSE,;t t +s,@OGG_CFLAGS@,$OGG_CFLAGS,;t t +s,@OGG_LIBS@,$OGG_LIBS,;t t +s,@FLaC__HAS_OGG_TRUE@,$FLaC__HAS_OGG_TRUE,;t t +s,@FLaC__HAS_OGG_FALSE@,$FLaC__HAS_OGG_FALSE,;t t +s,@LIBICONV@,$LIBICONV,;t t +s,@LTLIBICONV@,$LTLIBICONV,;t t +s,@DOCBOOK_TO_MAN@,$DOCBOOK_TO_MAN,;t t +s,@FLaC__HAS_DOCBOOK_TO_MAN_TRUE@,$FLaC__HAS_DOCBOOK_TO_MAN_TRUE,;t t +s,@FLaC__HAS_DOCBOOK_TO_MAN_FALSE@,$FLaC__HAS_DOCBOOK_TO_MAN_FALSE,;t t +s,@NASM@,$NASM,;t t +s,@FLaC__HAS_NASM_TRUE@,$FLaC__HAS_NASM_TRUE,;t t +s,@FLaC__HAS_NASM_FALSE@,$FLaC__HAS_NASM_FALSE,;t t +s,@AS@,$AS,;t t +s,@GAS@,$GAS,;t t +s,@FLaC__HAS_AS_TRUE@,$FLaC__HAS_AS_TRUE,;t t +s,@FLaC__HAS_AS_FALSE@,$FLaC__HAS_AS_FALSE,;t t +s,@FLaC__HAS_GAS_TRUE@,$FLaC__HAS_GAS_TRUE,;t t +s,@FLaC__HAS_GAS_FALSE@,$FLaC__HAS_GAS_FALSE,;t t +s,@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@,$FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE,;t t +s,@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@,$FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE,;t t +s,@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@,$FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE,;t t +s,@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@,$FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + diff --git a/3rdparty/libflac/configure.in b/3rdparty/libflac/configure.in new file mode 100644 index 0000000..bfa6d8e --- /dev/null +++ b/3rdparty/libflac/configure.in @@ -0,0 +1,390 @@ +# FLAC - Free Lossless Audio Codec +# Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This file is part the FLAC project. FLAC is comprised of several +# components distributed under difference licenses. The codec libraries +# are distributed under Xiph.Org's BSD-like license (see the file +# COPYING.Xiph in this distribution). All other programs, libraries, and +# plugins are distributed under the GPL (see COPYING.GPL). The documentation +# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the +# FLAC distribution contains at the top the terms under which it may be +# distributed. +# +# Since this particular file is relevant to all components of FLAC, +# it may be distributed under the Xiph.Org license, which is the least +# restrictive of those mentioned above. See the file COPYING.Xiph in this +# distribution. + +# NOTE that for many of the AM_CONDITIONALs we use the prefix FLaC__ +# instead of FLAC__ since autoconf triggers off 'AC_' in strings + +AC_INIT(src/flac/main.c) +AM_INIT_AUTOMAKE(flac, 1.2.1) + +# Don't automagically regenerate autoconf/automake generated files unless +# explicitly requested. Eases autobuilding -mdz +AM_MAINTAINER_MODE + +# We need two libtools, one that builds both shared and static, and +# one that builds only static. This is because the resulting libtool +# does not allow us to choose which to build at runtime. +AM_PROG_LIBTOOL +sed -e 's/^build_old_libs=yes/build_old_libs=no/' libtool > libtool-disable-static +chmod +x libtool-disable-static + +AC_SUBST(ACLOCAL_AMFLAGS, "-I m4") + +AM_PROG_AS +AC_PROG_CXX +AC_PROG_MAKE_SET + +AC_SYS_LARGEFILE +AC_FUNC_FSEEKO + +AC_CHECK_SIZEOF(void*,0) + +#@@@ new name is AC_CONFIG_HEADERS +AM_CONFIG_HEADER(config.h) + +AC_C_BIGENDIAN + +AC_CHECK_TYPES(socklen_t, [], []) + +dnl check for getopt in standard library +dnl AC_CHECK_FUNCS(getopt_long , , [LIBOBJS="$LIBOBJS getopt.o getopt1.o"] ) +AC_CHECK_FUNCS(getopt_long, [], []) + +case "$host_cpu" in + i*86) + cpu_ia32=true + AC_DEFINE(FLAC__CPU_IA32) + AH_TEMPLATE(FLAC__CPU_IA32, [define if building for ia32/i386]) + ;; + powerpc) + cpu_ppc=true + AC_DEFINE(FLAC__CPU_PPC) + AH_TEMPLATE(FLAC__CPU_PPC, [define if building for PowerPC]) + ;; + sparc) + cpu_sparc=true + AC_DEFINE(FLAC__CPU_SPARC) + AH_TEMPLATE(FLAC__CPU_SPARC, [define if building for SPARC]) + ;; +esac +AM_CONDITIONAL(FLaC__CPU_IA32, test "x$cpu_ia32" = xtrue) +AM_CONDITIONAL(FLaC__CPU_PPC, test "x$cpu_ppc" = xtrue) +AM_CONDITIONAL(FLaC__CPU_SPARC, test "x$cpu_sparc" = xtrue) + +case "$host" in + i386-*-openbsd3.[[0-3]]) OBJ_FORMAT=aoutb ;; + *-*-cygwin|*mingw*) OBJ_FORMAT=win32 ;; + *-*-darwin*) OBJ_FORMAT=macho ;; + *) OBJ_FORMAT=elf ;; +esac +AC_SUBST(OBJ_FORMAT) + +# only needed because of ntohl() usage, can get rid of after that's gone: +case "$host" in + *-*-cygwin|*mingw*) MINGW_WINSOCK_LIBS=-lwsock32 ;; + *) MINGW_WINSOCK_LIBS= ;; +esac +AC_SUBST(MINGW_WINSOCK_LIBS) + +case "$host" in + *-pc-linux-gnu) + sys_linux=true + AC_DEFINE(FLAC__SYS_LINUX) + AH_TEMPLATE(FLAC__SYS_LINUX, [define if building for Linux]) + ;; + *-*-darwin*) + sys_darwin=true + AC_DEFINE(FLAC__SYS_DARWIN) + AH_TEMPLATE(FLAC__SYS_DARWIN, [define if building for Darwin / MacOS X]) + ;; +esac +AM_CONDITIONAL(FLaC__SYS_DARWIN, test "x$sys_darwin" = xtrue) +AM_CONDITIONAL(FLaC__SYS_LINUX, test "x$sys_linux" = xtrue) + +if test "x$cpu_ia32" = xtrue ; then +AC_DEFINE(FLAC__ALIGN_MALLOC_DATA) +AH_TEMPLATE(FLAC__ALIGN_MALLOC_DATA, [define to align allocated memory on 32-byte boundaries]) +fi + +AC_ARG_ENABLE(asm-optimizations, AC_HELP_STRING([--disable-asm-optimizations], [Don't use any assembly optimization routines]), asm_opt=no, asm_opt=yes) +AM_CONDITIONAL(FLaC__NO_ASM, test "x$asm_opt" = xno) +if test "x$asm_opt" = xno ; then +AC_DEFINE(FLAC__NO_ASM) +AH_TEMPLATE(FLAC__NO_ASM, [define to disable use of assembly code]) +fi + +AC_ARG_ENABLE(debug, +AC_HELP_STRING([--enable-debug], [Turn on debugging]), +[case "${enableval}" in + yes) debug=true ;; + no) debug=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;; +esac],[debug=false]) +AM_CONDITIONAL(DEBUG, test "x$debug" = xtrue) + +AC_ARG_ENABLE(sse, +AC_HELP_STRING([--enable-sse], [Enable SSE support by asserting that the OS supports SSE instructions]), +[case "${enableval}" in + yes) sse_os=true ;; + no) sse_os=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-sse) ;; +esac],[sse_os=false]) +AM_CONDITIONAL(FLaC__SSE_OS, test "x$sse_os" = xtrue) +if test "x$sse_os" = xtrue ; then +AC_DEFINE(FLAC__SSE_OS) +AH_TEMPLATE(FLAC__SSE_OS, [define if your operating system supports SSE instructions]) +fi + +AC_ARG_ENABLE(3dnow, +AC_HELP_STRING([--disable-3dnow], [Disable 3DNOW! optimizations]), +[case "${enableval}" in + yes) use_3dnow=true ;; + no) use_3dnow=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-3dnow) ;; +esac],[use_3dnow=true]) +AM_CONDITIONAL(FLaC__USE_3DNOW, test "x$use_3dnow" = xtrue) +if test "x$use_3dnow" = xtrue ; then +AC_DEFINE(FLAC__USE_3DNOW) +AH_TEMPLATE(FLAC__USE_3DNOW, [define to enable use of 3Dnow! instructions]) +fi + +AC_ARG_ENABLE(altivec, +AC_HELP_STRING([--disable-altivec], [Disable Altivec optimizations]), +[case "${enableval}" in + yes) use_altivec=true ;; + no) use_altivec=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-altivec) ;; +esac],[use_altivec=true]) +AM_CONDITIONAL(FLaC__USE_ALTIVEC, test "x$use_altivec" = xtrue) +if test "x$use_altivec" = xtrue ; then +AC_DEFINE(FLAC__USE_ALTIVEC) +AH_TEMPLATE(FLAC__USE_ALTIVEC, [define to enable use of Altivec instructions]) +fi + +AC_ARG_ENABLE(thorough-tests, +AC_HELP_STRING([--disable-thorough-tests], [Disable thorough (long) testing, do only basic tests]), +[case "${enableval}" in + yes) thorough_tests=true ;; + no) thorough_tests=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-thorough-tests) ;; +esac],[thorough_tests=true]) +AC_ARG_ENABLE(exhaustive-tests, +AC_HELP_STRING([--enable-exhaustive-tests], [Enable exhaustive testing (VERY long)]), +[case "${enableval}" in + yes) exhaustive_tests=true ;; + no) exhaustive_tests=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-exhaustive-tests) ;; +esac],[exhaustive_tests=false]) +if test "x$thorough_tests" = xfalse ; then +FLAC__TEST_LEVEL=0 +elif test "x$exhaustive_tests" = xfalse ; then +FLAC__TEST_LEVEL=1 +else +FLAC__TEST_LEVEL=2 +fi +AC_SUBST(FLAC__TEST_LEVEL) + +AC_ARG_ENABLE(valgrind-testing, +AC_HELP_STRING([--enable-valgrind-testing], [Run all tests inside Valgrind]), +[case "${enableval}" in + yes) FLAC__TEST_WITH_VALGRIND=yes ;; + no) FLAC__TEST_WITH_VALGRIND=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-valgrind-testing) ;; +esac],[FLAC__TEST_WITH_VALGRIND=no]) +AC_SUBST(FLAC__TEST_WITH_VALGRIND) + +AC_ARG_ENABLE(doxygen-docs, +AC_HELP_STRING([--disable-doxygen-docs], [Disable API documentation building via Doxygen]), +[case "${enableval}" in + yes) enable_doxygen_docs=true ;; + no) enable_doxygen_docs=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-doxygen-docs) ;; +esac],[enable_doxygen_docs=true]) +if test "x$enable_doxygen_docs" != xfalse ; then + AC_CHECK_PROGS(DOXYGEN, doxygen) +fi +AM_CONDITIONAL(FLaC__HAS_DOXYGEN, test -n "$DOXYGEN") + +AC_ARG_ENABLE(local-xmms-plugin, +AC_HELP_STRING([--enable-local-xmms-plugin], [Install XMMS plugin to ~/.xmms/Plugins instead of system location]), +[case "${enableval}" in + yes) install_xmms_plugin_locally=true ;; + no) install_xmms_plugin_locally=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-local-xmms-plugin) ;; +esac],[install_xmms_plugin_locally=false]) +AM_CONDITIONAL(FLaC__INSTALL_XMMS_PLUGIN_LOCALLY, test "x$install_xmms_plugin_locally" = xtrue) + +AC_ARG_ENABLE(xmms-plugin, +AC_HELP_STRING([--disable-xmms-plugin], [Do not build XMMS plugin]), +[case "${enableval}" in + yes) enable_xmms_plugin=true ;; + no) enable_xmms_plugin=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-xmms-plugin) ;; +esac],[enable_xmms_plugin=true]) +if test "x$enable_xmms_plugin" != xfalse ; then + AM_PATH_XMMS(0.9.5.1, , AC_MSG_WARN([*** XMMS >= 0.9.5.1 not installed - XMMS support will not be built])) +fi +AM_CONDITIONAL(FLaC__HAS_XMMS, test -n "$XMMS_INPUT_PLUGIN_DIR") + +dnl build FLAC++ or not +AC_ARG_ENABLE([cpplibs], +AC_HELP_STRING([--disable-cpplibs], [Do not build libFLAC++]), +[case "${enableval}" in + yes) disable_cpplibs=false ;; + no) disable_cpplibs=true ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-cpplibs) ;; +esac], [disable_cpplibs=false]) +AM_CONDITIONAL(FLaC__WITH_CPPLIBS, [test "x$disable_cpplibs" != xtrue]) + +dnl check for ogg library +AC_ARG_ENABLE([ogg], + AC_HELP_STRING([--disable-ogg], [Disable ogg support (default: test for libogg)]), + [ want_ogg=$enableval ], [ want_ogg=yes ] ) + +if test "x$want_ogg" != "xno"; then + XIPH_PATH_OGG(have_ogg=yes, AC_MSG_WARN([*** Ogg development enviroment not installed - Ogg support will not be built])) +fi + +AM_CONDITIONAL(FLaC__HAS_OGG, [test "x$have_ogg" = xyes]) +if test "x$have_ogg" = xyes ; then +AC_DEFINE(FLAC__HAS_OGG) +AH_TEMPLATE(FLAC__HAS_OGG, [define if you have the ogg library]) +fi + +dnl check for i18n(internationalization); these are from libiconv/gettext +AM_ICONV +AM_LANGINFO_CODESET + +AC_CHECK_PROGS(DOCBOOK_TO_MAN, docbook-to-man docbook2man) +AM_CONDITIONAL(FLaC__HAS_DOCBOOK_TO_MAN, test -n "$DOCBOOK_TO_MAN") +if test -n "$DOCBOOK_TO_MAN" ; then +AC_DEFINE(FLAC__HAS_DOCBOOK_TO_MAN) +AH_TEMPLATE(FLAC__HAS_DOCBOOK_TO_MAN, [define if you have docbook-to-man or docbook2man]) +fi + +# only matters for x86 +AC_CHECK_PROGS(NASM, nasm) +AM_CONDITIONAL(FLaC__HAS_NASM, test -n "$NASM") +if test -n "$NASM" ; then +AC_DEFINE(FLAC__HAS_NASM) +AH_TEMPLATE(FLAC__HAS_NASM, [define if you are compiling for x86 and have the NASM assembler]) +fi + +# only matters for PowerPC +AC_CHECK_PROGS(AS, as, as) +AC_CHECK_PROGS(GAS, gas, gas) + +# try -v (apple as) and --version (gas) at the same time +test "$AS" = "as" && as --version -v < /dev/null 2>&1 | grep Apple >/dev/null || AS=gas + +AM_CONDITIONAL(FLaC__HAS_AS, test "$AS" = "as") +AM_CONDITIONAL(FLaC__HAS_GAS, test "$AS" = "gas") +if test "$AS" = "as" ; then +AC_DEFINE(FLAC__HAS_AS) +AH_TEMPLATE(FLAC__HAS_AS, [define if you are compiling for PowerPC and have the 'as' assembler]) +fi +if test "$AS" = "gas" ; then +# funniest. macro. ever. +AC_DEFINE(FLAC__HAS_GAS) +AH_TEMPLATE(FLAC__HAS_GAS, [define if you are compiling for PowerPC and have the 'gas' assembler]) +fi + +CPPFLAGS='-I$(top_builddir) -I$(srcdir)/include -I$(top_srcdir)/include'" $CPPFLAGS" +if test "x$debug" = xtrue; then + CPPFLAGS="-DDEBUG $CPPFLAGS" + CFLAGS="-g $CFLAGS" +else + CPPFLAGS="-DNDEBUG $CPPFLAGS" + if test "x$GCC" = xyes; then + CPPFLAGS="-DFLaC__INLINE=__inline__ $CPPFLAGS" + CFLAGS="-O3 -funroll-loops -finline-functions -Wall -W -Winline $CFLAGS" + fi +fi + +#@@@ +AM_CONDITIONAL(FLaC__HAS_AS__TEMPORARILY_DISABLED, test "yes" = "no") +AM_CONDITIONAL(FLaC__HAS_GAS__TEMPORARILY_DISABLED, test "yes" = "no") + +AC_CONFIG_FILES([ \ + Makefile \ + src/Makefile \ + src/libFLAC/Makefile \ + src/libFLAC/flac.pc \ + src/libFLAC/ia32/Makefile \ + src/libFLAC/ppc/Makefile \ + src/libFLAC/ppc/as/Makefile \ + src/libFLAC/ppc/gas/Makefile \ + src/libFLAC/include/Makefile \ + src/libFLAC/include/private/Makefile \ + src/libFLAC/include/protected/Makefile \ + src/libFLAC++/Makefile \ + src/libFLAC++/flac++.pc \ + src/flac/Makefile \ + src/metaflac/Makefile \ + src/monkeys_audio_utilities/Makefile \ + src/monkeys_audio_utilities/flac_mac/Makefile \ + src/monkeys_audio_utilities/flac_ren/Makefile \ + src/plugin_common/Makefile \ + src/plugin_winamp2/Makefile \ + src/plugin_winamp2/include/Makefile \ + src/plugin_winamp2/include/winamp2/Makefile \ + src/plugin_xmms/Makefile \ + src/share/Makefile \ + src/share/getopt/Makefile \ + src/share/grabbag/Makefile \ + src/share/replaygain_analysis/Makefile \ + src/share/replaygain_synthesis/Makefile \ + src/share/replaygain_synthesis/include/Makefile \ + src/share/replaygain_synthesis/include/private/Makefile \ + src/share/utf8/Makefile \ + src/test_grabbag/Makefile \ + src/test_grabbag/cuesheet/Makefile \ + src/test_grabbag/picture/Makefile \ + src/test_libs_common/Makefile \ + src/test_libFLAC/Makefile \ + src/test_libFLAC++/Makefile \ + src/test_seeking/Makefile \ + src/test_streams/Makefile \ + examples/Makefile \ + examples/c/Makefile \ + examples/c/decode/Makefile \ + examples/c/decode/file/Makefile \ + examples/c/encode/Makefile \ + examples/c/encode/file/Makefile \ + examples/cpp/Makefile \ + examples/cpp/decode/Makefile \ + examples/cpp/decode/file/Makefile \ + examples/cpp/encode/Makefile \ + examples/cpp/encode/file/Makefile \ + include/Makefile \ + include/FLAC/Makefile \ + include/FLAC++/Makefile \ + include/share/Makefile \ + include/share/grabbag/Makefile \ + include/test_libs_common/Makefile \ + doc/Makefile \ + doc/html/Makefile \ + doc/html/images/Makefile \ + doc/html/images/hw/Makefile \ + doc/html/ru/Makefile \ + m4/Makefile \ + man/Makefile \ + test/Makefile \ + test/cuesheets/Makefile \ + test/flac-to-flac-metadata-test-files/Makefile \ + test/metaflac-test-files/Makefile \ + test/pictures/Makefile \ + build/Makefile \ + obj/Makefile \ + obj/debug/Makefile \ + obj/debug/bin/Makefile \ + obj/debug/lib/Makefile \ + obj/release/Makefile \ + obj/release/bin/Makefile \ + obj/release/lib/Makefile \ +]) +AC_OUTPUT diff --git a/3rdparty/libflac/depcomp b/3rdparty/libflac/depcomp new file mode 100644 index 0000000..edb5d38 --- /dev/null +++ b/3rdparty/libflac/depcomp @@ -0,0 +1,479 @@ +#! /bin/sh + +# depcomp - compile a program generating dependencies as side-effects +# Copyright 1999, 2000, 2003 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi +# `libtool' can also be set to `yes' or `no'. + +if test -z "$depfile"; then + base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` + dir=`echo "$object" | sed 's,/.*$,/,'` + if test "$dir" = "$object"; then + dir= + fi + # FIXME: should be _deps on DOS. + depfile="$dir.deps/$base" +fi + +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + tmpdepfile1="$dir.libs/$base.lo.d" + tmpdepfile2="$dir.libs/$base.d" + "$@" -Wc,-MD + else + tmpdepfile1="$dir$base.o.d" + tmpdepfile2="$dir$base.d" + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + if test -f "$tmpdepfile1"; then + tmpdepfile="$tmpdepfile1" + else + tmpdepfile="$tmpdepfile2" + fi + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 diff --git a/3rdparty/libflac/doc/Doxyfile b/3rdparty/libflac/doc/Doxyfile new file mode 100644 index 0000000..000c2fb --- /dev/null +++ b/3rdparty/libflac/doc/Doxyfile @@ -0,0 +1,1220 @@ +# Doxyfile 1.4.2 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = FLAC + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 1.2.1 + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = doxytmp + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, +# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, +# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, +# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, +# Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# This tag can be used to specify the encoding used in the generated output. +# The encoding is not always determined by the language that is chosen, +# but also whether or not the output is meant for Windows or non-Windows users. +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES +# forces the Windows encoding (this is the default for the Windows binary), +# whereas setting the tag to NO uses a Unix-style encoding (the default for +# all platforms other than Windows). + +USE_WINDOWS_ENCODING = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = NO + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = YES + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = .. + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = YES + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = "assert=\par Assertions:\n" \ + "default=\par Default Value:\n" + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources +# only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = YES + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. + +SHOW_DIRECTORIES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from the +# version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the progam writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = ../include/FLAC \ + ../include/FLAC++ + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = doxygen.footer.html + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = YES + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = YES + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = FLAC__NO_DLL + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = FLAC_API FLACPP_API + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = FLAC.tag + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that a graph may be further truncated if the graph's +# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH +# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), +# the graph is not depth-constrained. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, which results in a white background. +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/3rdparty/libflac/doc/FLAC.tag b/3rdparty/libflac/doc/FLAC.tag new file mode 100644 index 0000000..9d853b9 --- /dev/null +++ b/3rdparty/libflac/doc/FLAC.tag @@ -0,0 +1,12259 @@ + + + + index + + index + cpp_api + intro + getting_started + c_api + porting_guide + embedded_developers + + + decoder.h + /home/jcoalson/flac/build-1.2.1/include/FLAC++/ + decoder_8h + export.h + FLAC/stream_decoder.h + + + encoder.h + /home/jcoalson/flac/build-1.2.1/include/FLAC++/ + encoder_8h + export.h + FLAC/stream_encoder.h + decoder.h + metadata.h + + + callback.h + /home/jcoalson/flac/build-1.2.1/include/FLAC/ + callback_8h + + void * + FLAC__IOHandle + group__flac__callbacks.html + ga0 + + + + size_t(* + FLAC__IOCallback_Read + group__flac__callbacks.html + ga1 + )(void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle) + + + size_t(* + FLAC__IOCallback_Write + group__flac__callbacks.html + ga2 + )(const void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle) + + + int(* + FLAC__IOCallback_Seek + group__flac__callbacks.html + ga3 + )(FLAC__IOHandle handle, FLAC__int64 offset, int whence) + + + FLAC__int64(* + FLAC__IOCallback_Tell + group__flac__callbacks.html + ga4 + )(FLAC__IOHandle handle) + + + int(* + FLAC__IOCallback_Eof + group__flac__callbacks.html + ga5 + )(FLAC__IOHandle handle) + + + int(* + FLAC__IOCallback_Close + group__flac__callbacks.html + ga6 + )(FLAC__IOHandle handle) + + + + export.h + /home/jcoalson/flac/build-1.2.1/include/FLAC/ + export_8h + + #define + FLAC_API + group__flac__export.html + ga1 + + + + #define + FLAC_API_VERSION_CURRENT + group__flac__export.html + ga2 + + + + #define + FLAC_API_VERSION_REVISION + group__flac__export.html + ga3 + + + + #define + FLAC_API_VERSION_AGE + group__flac__export.html + ga4 + + + + int + FLAC_API_SUPPORTS_OGG_FLAC + group__flac__export.html + ga0 + + + + + export.h + /home/jcoalson/flac/build-1.2.1/include/FLAC++/ + +_2export_8h + + #define + FLACPP_API + group__flacpp__export.html + ga0 + + + + #define + FLACPP_API_VERSION_CURRENT + group__flacpp__export.html + ga1 + + + + #define + FLACPP_API_VERSION_REVISION + group__flacpp__export.html + ga2 + + + + #define + FLACPP_API_VERSION_AGE + group__flacpp__export.html + ga3 + + + + + format.h + /home/jcoalson/flac/build-1.2.1/include/FLAC/ + format_8h + export.h + + #define + FLAC__MAX_METADATA_TYPE_CODE + group__flac__format.html + ga89 + + + + #define + FLAC__MIN_BLOCK_SIZE + group__flac__format.html + ga90 + + + + #define + FLAC__MAX_BLOCK_SIZE + group__flac__format.html + ga91 + + + + #define + FLAC__SUBSET_MAX_BLOCK_SIZE_48000HZ + group__flac__format.html + ga92 + + + + #define + FLAC__MAX_CHANNELS + group__flac__format.html + ga93 + + + + #define + FLAC__MIN_BITS_PER_SAMPLE + group__flac__format.html + ga94 + + + + #define + FLAC__MAX_BITS_PER_SAMPLE + group__flac__format.html + ga95 + + + + #define + FLAC__REFERENCE_CODEC_MAX_BITS_PER_SAMPLE + group__flac__format.html + ga96 + + + + #define + FLAC__MAX_SAMPLE_RATE + group__flac__format.html + ga97 + + + + #define + FLAC__MAX_LPC_ORDER + group__flac__format.html + ga98 + + + + #define + FLAC__SUBSET_MAX_LPC_ORDER_48000HZ + group__flac__format.html + ga99 + + + + #define + FLAC__MIN_QLP_COEFF_PRECISION + group__flac__format.html + ga100 + + + + #define + FLAC__MAX_QLP_COEFF_PRECISION + group__flac__format.html + ga101 + + + + #define + FLAC__MAX_FIXED_ORDER + group__flac__format.html + ga102 + + + + #define + FLAC__MAX_RICE_PARTITION_ORDER + group__flac__format.html + ga103 + + + + #define + FLAC__SUBSET_MAX_RICE_PARTITION_ORDER + group__flac__format.html + ga104 + + + + #define + FLAC__STREAM_SYNC_LENGTH + group__flac__format.html + ga105 + + + + #define + FLAC__STREAM_METADATA_STREAMINFO_LENGTH + group__flac__format.html + ga106 + + + + #define + FLAC__STREAM_METADATA_SEEKPOINT_LENGTH + group__flac__format.html + ga107 + + + + #define + FLAC__STREAM_METADATA_HEADER_LENGTH + group__flac__format.html + ga108 + + + + FLAC__EntropyCodingMethodType + ga109 + + + + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE + gga109a100 + + + + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2 + gga109a101 + + + + FLAC__SubframeType + ga110 + + + + FLAC__SUBFRAME_TYPE_CONSTANT + gga110a102 + + + + FLAC__SUBFRAME_TYPE_VERBATIM + gga110a103 + + + + FLAC__SUBFRAME_TYPE_FIXED + gga110a104 + + + + FLAC__SUBFRAME_TYPE_LPC + gga110a105 + + + + FLAC__ChannelAssignment + ga111 + + + + FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT + gga111a106 + + + + FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE + gga111a107 + + + + FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE + gga111a108 + + + + FLAC__CHANNEL_ASSIGNMENT_MID_SIDE + gga111a109 + + + + FLAC__FrameNumberType + ga112 + + + + FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER + gga112a110 + + + + FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER + gga112a111 + + + + FLAC__MetadataType + ga113 + + + + FLAC__METADATA_TYPE_STREAMINFO + gga113a112 + + + + FLAC__METADATA_TYPE_PADDING + gga113a113 + + + + FLAC__METADATA_TYPE_APPLICATION + gga113a114 + + + + FLAC__METADATA_TYPE_SEEKTABLE + gga113a115 + + + + FLAC__METADATA_TYPE_VORBIS_COMMENT + gga113a116 + + + + FLAC__METADATA_TYPE_CUESHEET + gga113a117 + + + + FLAC__METADATA_TYPE_PICTURE + gga113a118 + + + + FLAC__METADATA_TYPE_UNDEFINED + gga113a119 + + + + FLAC__StreamMetadata_Picture_Type + ga114 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_OTHER + gga114a120 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON_STANDARD + gga114a121 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON + gga114a122 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER + gga114a123 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_BACK_COVER + gga114a124 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_LEAFLET_PAGE + gga114a125 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_MEDIA + gga114a126 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_LEAD_ARTIST + gga114a127 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_ARTIST + gga114a128 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_CONDUCTOR + gga114a129 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_BAND + gga114a130 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_COMPOSER + gga114a131 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_LYRICIST + gga114a132 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_RECORDING_LOCATION + gga114a133 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_RECORDING + gga114a134 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_PERFORMANCE + gga114a135 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_VIDEO_SCREEN_CAPTURE + gga114a136 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_FISH + gga114a137 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_ILLUSTRATION + gga114a138 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_BAND_LOGOTYPE + gga114a139 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_PUBLISHER_LOGOTYPE + gga114a140 + + + + FLAC__bool + FLAC__format_sample_rate_is_valid + group__flac__format.html + ga80 + (unsigned sample_rate) + + + FLAC__bool + FLAC__format_sample_rate_is_subset + group__flac__format.html + ga81 + (unsigned sample_rate) + + + FLAC__bool + FLAC__format_vorbiscomment_entry_name_is_legal + group__flac__format.html + ga82 + (const char *name) + + + FLAC__bool + FLAC__format_vorbiscomment_entry_value_is_legal + group__flac__format.html + ga83 + (const FLAC__byte *value, unsigned length) + + + FLAC__bool + FLAC__format_vorbiscomment_entry_is_legal + group__flac__format.html + ga84 + (const FLAC__byte *entry, unsigned length) + + + FLAC__bool + FLAC__format_seektable_is_legal + group__flac__format.html + ga85 + (const FLAC__StreamMetadata_SeekTable *seek_table) + + + unsigned + FLAC__format_seektable_sort + group__flac__format.html + ga86 + (FLAC__StreamMetadata_SeekTable *seek_table) + + + FLAC__bool + FLAC__format_cuesheet_is_legal + group__flac__format.html + ga87 + (const FLAC__StreamMetadata_CueSheet *cue_sheet, FLAC__bool check_cd_da_subset, const char **violation) + + + FLAC__bool + FLAC__format_picture_is_legal + group__flac__format.html + ga88 + (const FLAC__StreamMetadata_Picture *picture, const char **violation) + + + const char * + FLAC__VERSION_STRING + group__flac__format.html + ga0 + + + + const char * + FLAC__VENDOR_STRING + group__flac__format.html + ga1 + + + + const FLAC__byte + FLAC__STREAM_SYNC_STRING + group__flac__format.html + ga2 + [4] + + + const unsigned + FLAC__STREAM_SYNC + group__flac__format.html + ga3 + + + + const unsigned + FLAC__STREAM_SYNC_LEN + group__flac__format.html + ga4 + + + + const char *const + FLAC__EntropyCodingMethodTypeString + group__flac__format.html + ga5 + [] + + + const unsigned + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN + group__flac__format.html + ga6 + + + + const unsigned + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN + group__flac__format.html + ga7 + + + + const unsigned + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN + group__flac__format.html + ga8 + + + + const unsigned + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN + group__flac__format.html + ga9 + + + + const unsigned + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER + group__flac__format.html + ga10 + + + + const unsigned + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_ESCAPE_PARAMETER + group__flac__format.html + ga11 + + + + const unsigned + FLAC__ENTROPY_CODING_METHOD_TYPE_LEN + group__flac__format.html + ga12 + + + + const char *const + FLAC__SubframeTypeString + group__flac__format.html + ga13 + [] + + + const unsigned + FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN + group__flac__format.html + ga14 + + + + const unsigned + FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN + group__flac__format.html + ga15 + + + + const unsigned + FLAC__SUBFRAME_ZERO_PAD_LEN + group__flac__format.html + ga16 + + + + const unsigned + FLAC__SUBFRAME_TYPE_LEN + group__flac__format.html + ga17 + + + + const unsigned + FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN + group__flac__format.html + ga18 + + + + const unsigned + FLAC__SUBFRAME_TYPE_CONSTANT_BYTE_ALIGNED_MASK + group__flac__format.html + ga19 + + + + const unsigned + FLAC__SUBFRAME_TYPE_VERBATIM_BYTE_ALIGNED_MASK + group__flac__format.html + ga20 + + + + const unsigned + FLAC__SUBFRAME_TYPE_FIXED_BYTE_ALIGNED_MASK + group__flac__format.html + ga21 + + + + const unsigned + FLAC__SUBFRAME_TYPE_LPC_BYTE_ALIGNED_MASK + group__flac__format.html + ga22 + + + + const char *const + FLAC__ChannelAssignmentString + group__flac__format.html + ga23 + [] + + + const char *const + FLAC__FrameNumberTypeString + group__flac__format.html + ga24 + [] + + + const unsigned + FLAC__FRAME_HEADER_SYNC + group__flac__format.html + ga25 + + + + const unsigned + FLAC__FRAME_HEADER_SYNC_LEN + group__flac__format.html + ga26 + + + + const unsigned + FLAC__FRAME_HEADER_RESERVED_LEN + group__flac__format.html + ga27 + + + + const unsigned + FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN + group__flac__format.html + ga28 + + + + const unsigned + FLAC__FRAME_HEADER_BLOCK_SIZE_LEN + group__flac__format.html + ga29 + + + + const unsigned + FLAC__FRAME_HEADER_SAMPLE_RATE_LEN + group__flac__format.html + ga30 + + + + const unsigned + FLAC__FRAME_HEADER_CHANNEL_ASSIGNMENT_LEN + group__flac__format.html + ga31 + + + + const unsigned + FLAC__FRAME_HEADER_BITS_PER_SAMPLE_LEN + group__flac__format.html + ga32 + + + + const unsigned + FLAC__FRAME_HEADER_ZERO_PAD_LEN + group__flac__format.html + ga33 + + + + const unsigned + FLAC__FRAME_HEADER_CRC_LEN + group__flac__format.html + ga34 + + + + const unsigned + FLAC__FRAME_FOOTER_CRC_LEN + group__flac__format.html + ga35 + + + + const char *const + FLAC__MetadataTypeString + group__flac__format.html + ga36 + [] + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN + group__flac__format.html + ga37 + + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN + group__flac__format.html + ga38 + + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN + group__flac__format.html + ga39 + + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN + group__flac__format.html + ga40 + + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN + group__flac__format.html + ga41 + + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN + group__flac__format.html + ga42 + + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN + group__flac__format.html + ga43 + + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN + group__flac__format.html + ga44 + + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_MD5SUM_LEN + group__flac__format.html + ga45 + + + + const unsigned + FLAC__STREAM_METADATA_APPLICATION_ID_LEN + group__flac__format.html + ga46 + + + + const unsigned + FLAC__STREAM_METADATA_SEEKPOINT_SAMPLE_NUMBER_LEN + group__flac__format.html + ga47 + + + + const unsigned + FLAC__STREAM_METADATA_SEEKPOINT_STREAM_OFFSET_LEN + group__flac__format.html + ga48 + + + + const unsigned + FLAC__STREAM_METADATA_SEEKPOINT_FRAME_SAMPLES_LEN + group__flac__format.html + ga49 + + + + const FLAC__uint64 + FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER + group__flac__format.html + ga50 + + + + const unsigned + FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN + group__flac__format.html + ga51 + + + + const unsigned + FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN + group__flac__format.html + ga52 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN + group__flac__format.html + ga53 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN + group__flac__format.html + ga54 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN + group__flac__format.html + ga55 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN + group__flac__format.html + ga56 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN + group__flac__format.html + ga57 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN + group__flac__format.html + ga58 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN + group__flac__format.html + ga59 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN + group__flac__format.html + ga60 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN + group__flac__format.html + ga61 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN + group__flac__format.html + ga62 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN + group__flac__format.html + ga63 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN + group__flac__format.html + ga64 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN + group__flac__format.html + ga65 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN + group__flac__format.html + ga66 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN + group__flac__format.html + ga67 + + + + const char *const + FLAC__StreamMetadata_Picture_TypeString + group__flac__format.html + ga68 + [] + + + const unsigned + FLAC__STREAM_METADATA_PICTURE_TYPE_LEN + group__flac__format.html + ga69 + + + + const unsigned + FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN + group__flac__format.html + ga70 + + + + const unsigned + FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN + group__flac__format.html + ga71 + + + + const unsigned + FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN + group__flac__format.html + ga72 + + + + const unsigned + FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN + group__flac__format.html + ga73 + + + + const unsigned + FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN + group__flac__format.html + ga74 + + + + const unsigned + FLAC__STREAM_METADATA_PICTURE_COLORS_LEN + group__flac__format.html + ga75 + + + + const unsigned + FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN + group__flac__format.html + ga76 + + + + const unsigned + FLAC__STREAM_METADATA_IS_LAST_LEN + group__flac__format.html + ga77 + + + + const unsigned + FLAC__STREAM_METADATA_TYPE_LEN + group__flac__format.html + ga78 + + + + const unsigned + FLAC__STREAM_METADATA_LENGTH_LEN + group__flac__format.html + ga79 + + + + + metadata.h + /home/jcoalson/flac/build-1.2.1/include/FLAC/ + metadata_8h + export.h + callback.h + format.h + + FLAC__Metadata_SimpleIterator + FLAC__Metadata_SimpleIterator + group__flac__metadata__level1.html + ga0 + + + + FLAC__Metadata_Chain + FLAC__Metadata_Chain + group__flac__metadata__level2.html + ga0 + + + + FLAC__Metadata_Iterator + FLAC__Metadata_Iterator + group__flac__metadata__level2.html + ga1 + + + + FLAC__Metadata_SimpleIteratorStatus + ga18 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK + gga18a5 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT + gga18a6 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE + gga18a7 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE + gga18a8 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_WRITABLE + gga18a9 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_BAD_METADATA + gga18a10 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR + gga18a11 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR + gga18a12 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR + gga18a13 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_RENAME_ERROR + gga18a14 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_UNLINK_ERROR + gga18a15 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR + gga18a16 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_INTERNAL_ERROR + gga18a17 + + + + FLAC__Metadata_ChainStatus + ga27 + + + + FLAC__METADATA_CHAIN_STATUS_OK + gga27a18 + + + + FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT + gga27a19 + + + + FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE + gga27a20 + + + + FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE + gga27a21 + + + + FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE + gga27a22 + + + + FLAC__METADATA_CHAIN_STATUS_BAD_METADATA + gga27a23 + + + + FLAC__METADATA_CHAIN_STATUS_READ_ERROR + gga27a24 + + + + FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR + gga27a25 + + + + FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR + gga27a26 + + + + FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR + gga27a27 + + + + FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR + gga27a28 + + + + FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR + gga27a29 + + + + FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR + gga27a30 + + + + FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS + gga27a31 + + + + FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH + gga27a32 + + + + FLAC__METADATA_CHAIN_STATUS_WRONG_WRITE_CALL + gga27a33 + + + + FLAC__bool + FLAC__metadata_get_streaminfo + group__flac__metadata__level0.html + ga0 + (const char *filename, FLAC__StreamMetadata *streaminfo) + + + FLAC__bool + FLAC__metadata_get_tags + group__flac__metadata__level0.html + ga1 + (const char *filename, FLAC__StreamMetadata **tags) + + + FLAC__bool + FLAC__metadata_get_cuesheet + group__flac__metadata__level0.html + ga2 + (const char *filename, FLAC__StreamMetadata **cuesheet) + + + FLAC__bool + FLAC__metadata_get_picture + group__flac__metadata__level0.html + ga3 + (const char *filename, FLAC__StreamMetadata **picture, FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors) + + + FLAC__Metadata_SimpleIterator * + FLAC__metadata_simple_iterator_new + group__flac__metadata__level1.html + ga2 + (void) + + + void + FLAC__metadata_simple_iterator_delete + group__flac__metadata__level1.html + ga3 + (FLAC__Metadata_SimpleIterator *iterator) + + + FLAC__Metadata_SimpleIteratorStatus + FLAC__metadata_simple_iterator_status + group__flac__metadata__level1.html + ga4 + (FLAC__Metadata_SimpleIterator *iterator) + + + FLAC__bool + FLAC__metadata_simple_iterator_init + group__flac__metadata__level1.html + ga5 + (FLAC__Metadata_SimpleIterator *iterator, const char *filename, FLAC__bool read_only, FLAC__bool preserve_file_stats) + + + FLAC__bool + FLAC__metadata_simple_iterator_is_writable + group__flac__metadata__level1.html + ga6 + (const FLAC__Metadata_SimpleIterator *iterator) + + + FLAC__bool + FLAC__metadata_simple_iterator_next + group__flac__metadata__level1.html + ga7 + (FLAC__Metadata_SimpleIterator *iterator) + + + FLAC__bool + FLAC__metadata_simple_iterator_prev + group__flac__metadata__level1.html + ga8 + (FLAC__Metadata_SimpleIterator *iterator) + + + FLAC__bool + FLAC__metadata_simple_iterator_is_last + group__flac__metadata__level1.html + ga9 + (const FLAC__Metadata_SimpleIterator *iterator) + + + off_t + FLAC__metadata_simple_iterator_get_block_offset + group__flac__metadata__level1.html + ga10 + (const FLAC__Metadata_SimpleIterator *iterator) + + + FLAC__MetadataType + FLAC__metadata_simple_iterator_get_block_type + group__flac__metadata__level1.html + ga11 + (const FLAC__Metadata_SimpleIterator *iterator) + + + unsigned + FLAC__metadata_simple_iterator_get_block_length + group__flac__metadata__level1.html + ga12 + (const FLAC__Metadata_SimpleIterator *iterator) + + + FLAC__bool + FLAC__metadata_simple_iterator_get_application_id + group__flac__metadata__level1.html + ga13 + (FLAC__Metadata_SimpleIterator *iterator, FLAC__byte *id) + + + FLAC__StreamMetadata * + FLAC__metadata_simple_iterator_get_block + group__flac__metadata__level1.html + ga14 + (FLAC__Metadata_SimpleIterator *iterator) + + + FLAC__bool + FLAC__metadata_simple_iterator_set_block + group__flac__metadata__level1.html + ga15 + (FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding) + + + FLAC__bool + FLAC__metadata_simple_iterator_insert_block_after + group__flac__metadata__level1.html + ga16 + (FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding) + + + FLAC__bool + FLAC__metadata_simple_iterator_delete_block + group__flac__metadata__level1.html + ga17 + (FLAC__Metadata_SimpleIterator *iterator, FLAC__bool use_padding) + + + FLAC__Metadata_Chain * + FLAC__metadata_chain_new + group__flac__metadata__level2.html + ga3 + (void) + + + void + FLAC__metadata_chain_delete + group__flac__metadata__level2.html + ga4 + (FLAC__Metadata_Chain *chain) + + + FLAC__Metadata_ChainStatus + FLAC__metadata_chain_status + group__flac__metadata__level2.html + ga5 + (FLAC__Metadata_Chain *chain) + + + FLAC__bool + FLAC__metadata_chain_read + group__flac__metadata__level2.html + ga6 + (FLAC__Metadata_Chain *chain, const char *filename) + + + FLAC__bool + FLAC__metadata_chain_read_ogg + group__flac__metadata__level2.html + ga7 + (FLAC__Metadata_Chain *chain, const char *filename) + + + FLAC__bool + FLAC__metadata_chain_read_with_callbacks + group__flac__metadata__level2.html + ga8 + (FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks) + + + FLAC__bool + FLAC__metadata_chain_read_ogg_with_callbacks + group__flac__metadata__level2.html + ga9 + (FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks) + + + FLAC__bool + FLAC__metadata_chain_check_if_tempfile_needed + group__flac__metadata__level2.html + ga10 + (FLAC__Metadata_Chain *chain, FLAC__bool use_padding) + + + FLAC__bool + FLAC__metadata_chain_write + group__flac__metadata__level2.html + ga11 + (FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__bool preserve_file_stats) + + + FLAC__bool + FLAC__metadata_chain_write_with_callbacks + group__flac__metadata__level2.html + ga12 + (FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks) + + + FLAC__bool + FLAC__metadata_chain_write_with_callbacks_and_tempfile + group__flac__metadata__level2.html + ga13 + (FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks, FLAC__IOHandle temp_handle, FLAC__IOCallbacks temp_callbacks) + + + void + FLAC__metadata_chain_merge_padding + group__flac__metadata__level2.html + ga14 + (FLAC__Metadata_Chain *chain) + + + void + FLAC__metadata_chain_sort_padding + group__flac__metadata__level2.html + ga15 + (FLAC__Metadata_Chain *chain) + + + FLAC__Metadata_Iterator * + FLAC__metadata_iterator_new + group__flac__metadata__level2.html + ga16 + (void) + + + void + FLAC__metadata_iterator_delete + group__flac__metadata__level2.html + ga17 + (FLAC__Metadata_Iterator *iterator) + + + void + FLAC__metadata_iterator_init + group__flac__metadata__level2.html + ga18 + (FLAC__Metadata_Iterator *iterator, FLAC__Metadata_Chain *chain) + + + FLAC__bool + FLAC__metadata_iterator_next + group__flac__metadata__level2.html + ga19 + (FLAC__Metadata_Iterator *iterator) + + + FLAC__bool + FLAC__metadata_iterator_prev + group__flac__metadata__level2.html + ga20 + (FLAC__Metadata_Iterator *iterator) + + + FLAC__MetadataType + FLAC__metadata_iterator_get_block_type + group__flac__metadata__level2.html + ga21 + (const FLAC__Metadata_Iterator *iterator) + + + FLAC__StreamMetadata * + FLAC__metadata_iterator_get_block + group__flac__metadata__level2.html + ga22 + (FLAC__Metadata_Iterator *iterator) + + + FLAC__bool + FLAC__metadata_iterator_set_block + group__flac__metadata__level2.html + ga23 + (FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block) + + + FLAC__bool + FLAC__metadata_iterator_delete_block + group__flac__metadata__level2.html + ga24 + (FLAC__Metadata_Iterator *iterator, FLAC__bool replace_with_padding) + + + FLAC__bool + FLAC__metadata_iterator_insert_block_before + group__flac__metadata__level2.html + ga25 + (FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block) + + + FLAC__bool + FLAC__metadata_iterator_insert_block_after + group__flac__metadata__level2.html + ga26 + (FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block) + + + FLAC__StreamMetadata * + FLAC__metadata_object_new + group__flac__metadata__object.html + ga0 + (FLAC__MetadataType type) + + + FLAC__StreamMetadata * + FLAC__metadata_object_clone + group__flac__metadata__object.html + ga1 + (const FLAC__StreamMetadata *object) + + + void + FLAC__metadata_object_delete + group__flac__metadata__object.html + ga2 + (FLAC__StreamMetadata *object) + + + FLAC__bool + FLAC__metadata_object_is_equal + group__flac__metadata__object.html + ga3 + (const FLAC__StreamMetadata *block1, const FLAC__StreamMetadata *block2) + + + FLAC__bool + FLAC__metadata_object_application_set_data + group__flac__metadata__object.html + ga4 + (FLAC__StreamMetadata *object, FLAC__byte *data, unsigned length, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_seektable_resize_points + group__flac__metadata__object.html + ga5 + (FLAC__StreamMetadata *object, unsigned new_num_points) + + + void + FLAC__metadata_object_seektable_set_point + group__flac__metadata__object.html + ga6 + (FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point) + + + FLAC__bool + FLAC__metadata_object_seektable_insert_point + group__flac__metadata__object.html + ga7 + (FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point) + + + FLAC__bool + FLAC__metadata_object_seektable_delete_point + group__flac__metadata__object.html + ga8 + (FLAC__StreamMetadata *object, unsigned point_num) + + + FLAC__bool + FLAC__metadata_object_seektable_is_legal + group__flac__metadata__object.html + ga9 + (const FLAC__StreamMetadata *object) + + + FLAC__bool + FLAC__metadata_object_seektable_template_append_placeholders + group__flac__metadata__object.html + ga10 + (FLAC__StreamMetadata *object, unsigned num) + + + FLAC__bool + FLAC__metadata_object_seektable_template_append_point + group__flac__metadata__object.html + ga11 + (FLAC__StreamMetadata *object, FLAC__uint64 sample_number) + + + FLAC__bool + FLAC__metadata_object_seektable_template_append_points + group__flac__metadata__object.html + ga12 + (FLAC__StreamMetadata *object, FLAC__uint64 sample_numbers[], unsigned num) + + + FLAC__bool + FLAC__metadata_object_seektable_template_append_spaced_points + group__flac__metadata__object.html + ga13 + (FLAC__StreamMetadata *object, unsigned num, FLAC__uint64 total_samples) + + + FLAC__bool + FLAC__metadata_object_seektable_template_append_spaced_points_by_samples + group__flac__metadata__object.html + ga14 + (FLAC__StreamMetadata *object, unsigned samples, FLAC__uint64 total_samples) + + + FLAC__bool + FLAC__metadata_object_seektable_template_sort + group__flac__metadata__object.html + ga15 + (FLAC__StreamMetadata *object, FLAC__bool compact) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_set_vendor_string + group__flac__metadata__object.html + ga16 + (FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_resize_comments + group__flac__metadata__object.html + ga17 + (FLAC__StreamMetadata *object, unsigned new_num_comments) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_set_comment + group__flac__metadata__object.html + ga18 + (FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_insert_comment + group__flac__metadata__object.html + ga19 + (FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_append_comment + group__flac__metadata__object.html + ga20 + (FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_replace_comment + group__flac__metadata__object.html + ga21 + (FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool all, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_delete_comment + group__flac__metadata__object.html + ga22 + (FLAC__StreamMetadata *object, unsigned comment_num) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair + group__flac__metadata__object.html + ga23 + (FLAC__StreamMetadata_VorbisComment_Entry *entry, const char *field_name, const char *field_value) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_entry_to_name_value_pair + group__flac__metadata__object.html + ga24 + (const FLAC__StreamMetadata_VorbisComment_Entry entry, char **field_name, char **field_value) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_entry_matches + group__flac__metadata__object.html + ga25 + (const FLAC__StreamMetadata_VorbisComment_Entry entry, const char *field_name, unsigned field_name_length) + + + int + FLAC__metadata_object_vorbiscomment_find_entry_from + group__flac__metadata__object.html + ga26 + (const FLAC__StreamMetadata *object, unsigned offset, const char *field_name) + + + int + FLAC__metadata_object_vorbiscomment_remove_entry_matching + group__flac__metadata__object.html + ga27 + (FLAC__StreamMetadata *object, const char *field_name) + + + int + FLAC__metadata_object_vorbiscomment_remove_entries_matching + group__flac__metadata__object.html + ga28 + (FLAC__StreamMetadata *object, const char *field_name) + + + FLAC__StreamMetadata_CueSheet_Track * + FLAC__metadata_object_cuesheet_track_new + group__flac__metadata__object.html + ga29 + (void) + + + FLAC__StreamMetadata_CueSheet_Track * + FLAC__metadata_object_cuesheet_track_clone + group__flac__metadata__object.html + ga30 + (const FLAC__StreamMetadata_CueSheet_Track *object) + + + void + FLAC__metadata_object_cuesheet_track_delete + group__flac__metadata__object.html + ga31 + (FLAC__StreamMetadata_CueSheet_Track *object) + + + FLAC__bool + FLAC__metadata_object_cuesheet_track_resize_indices + group__flac__metadata__object.html + ga32 + (FLAC__StreamMetadata *object, unsigned track_num, unsigned new_num_indices) + + + FLAC__bool + FLAC__metadata_object_cuesheet_track_insert_index + group__flac__metadata__object.html + ga33 + (FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num, FLAC__StreamMetadata_CueSheet_Index index) + + + FLAC__bool + FLAC__metadata_object_cuesheet_track_insert_blank_index + group__flac__metadata__object.html + ga34 + (FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num) + + + FLAC__bool + FLAC__metadata_object_cuesheet_track_delete_index + group__flac__metadata__object.html + ga35 + (FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num) + + + FLAC__bool + FLAC__metadata_object_cuesheet_resize_tracks + group__flac__metadata__object.html + ga36 + (FLAC__StreamMetadata *object, unsigned new_num_tracks) + + + FLAC__bool + FLAC__metadata_object_cuesheet_insert_track + group__flac__metadata__object.html + ga37 + (FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_cuesheet_insert_blank_track + group__flac__metadata__object.html + ga38 + (FLAC__StreamMetadata *object, unsigned track_num) + + + FLAC__bool + FLAC__metadata_object_cuesheet_delete_track + group__flac__metadata__object.html + ga39 + (FLAC__StreamMetadata *object, unsigned track_num) + + + FLAC__bool + FLAC__metadata_object_cuesheet_is_legal + group__flac__metadata__object.html + ga40 + (const FLAC__StreamMetadata *object, FLAC__bool check_cd_da_subset, const char **violation) + + + FLAC__uint32 + FLAC__metadata_object_cuesheet_calculate_cddb_id + group__flac__metadata__object.html + ga41 + (const FLAC__StreamMetadata *object) + + + FLAC__bool + FLAC__metadata_object_picture_set_mime_type + group__flac__metadata__object.html + ga42 + (FLAC__StreamMetadata *object, char *mime_type, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_picture_set_description + group__flac__metadata__object.html + ga43 + (FLAC__StreamMetadata *object, FLAC__byte *description, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_picture_set_data + group__flac__metadata__object.html + ga44 + (FLAC__StreamMetadata *object, FLAC__byte *data, FLAC__uint32 length, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_picture_is_legal + group__flac__metadata__object.html + ga45 + (const FLAC__StreamMetadata *object, const char **violation) + + + const char *const + FLAC__Metadata_SimpleIteratorStatusString + group__flac__metadata__level1.html + ga1 + [] + + + const char *const + FLAC__Metadata_ChainStatusString + group__flac__metadata__level2.html + ga2 + [] + + + + metadata.h + /home/jcoalson/flac/build-1.2.1/include/FLAC++/ + +_2metadata_8h + export.h + FLAC/metadata.h + + Prototype * + clone + group__flacpp__metadata__object.html + ga0 + (const Prototype *) + + + bool + get_streaminfo + group__flacpp__metadata__level0.html + ga0 + (const char *filename, StreamInfo &streaminfo) + + + bool + get_tags + group__flacpp__metadata__level0.html + ga1 + (const char *filename, VorbisComment *&tags) + + + bool + get_tags + group__flacpp__metadata__level0.html + ga2 + (const char *filename, VorbisComment &tags) + + + bool + get_cuesheet + group__flacpp__metadata__level0.html + ga3 + (const char *filename, CueSheet *&cuesheet) + + + bool + get_cuesheet + group__flacpp__metadata__level0.html + ga4 + (const char *filename, CueSheet &cuesheet) + + + bool + get_picture + group__flacpp__metadata__level0.html + ga5 + (const char *filename, Picture *&picture,::FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors) + + + bool + get_picture + group__flacpp__metadata__level0.html + ga6 + (const char *filename, Picture &picture,::FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors) + + + + stream_decoder.h + /home/jcoalson/flac/build-1.2.1/include/FLAC/ + stream__decoder_8h + export.h + format.h + + FLAC__StreamDecoderReadStatus(* + FLAC__StreamDecoderReadCallback + group__flac__stream__decoder.html + ga8 + )(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data) + + + FLAC__StreamDecoderSeekStatus(* + FLAC__StreamDecoderSeekCallback + group__flac__stream__decoder.html + ga9 + )(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) + + + FLAC__StreamDecoderTellStatus(* + FLAC__StreamDecoderTellCallback + group__flac__stream__decoder.html + ga10 + )(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) + + + FLAC__StreamDecoderLengthStatus(* + FLAC__StreamDecoderLengthCallback + group__flac__stream__decoder.html + ga11 + )(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) + + + FLAC__bool(* + FLAC__StreamDecoderEofCallback + group__flac__stream__decoder.html + ga12 + )(const FLAC__StreamDecoder *decoder, void *client_data) + + + FLAC__StreamDecoderWriteStatus(* + FLAC__StreamDecoderWriteCallback + group__flac__stream__decoder.html + ga13 + )(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data) + + + void(* + FLAC__StreamDecoderMetadataCallback + group__flac__stream__decoder.html + ga14 + )(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) + + + void(* + FLAC__StreamDecoderErrorCallback + group__flac__stream__decoder.html + ga15 + )(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) + + + FLAC__StreamDecoderState + ga50 + + + + FLAC__STREAM_DECODER_SEARCH_FOR_METADATA + gga50a16 + + + + FLAC__STREAM_DECODER_READ_METADATA + gga50a17 + + + + FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC + gga50a18 + + + + FLAC__STREAM_DECODER_READ_FRAME + gga50a19 + + + + FLAC__STREAM_DECODER_END_OF_STREAM + gga50a20 + + + + FLAC__STREAM_DECODER_OGG_ERROR + gga50a21 + + + + FLAC__STREAM_DECODER_SEEK_ERROR + gga50a22 + + + + FLAC__STREAM_DECODER_ABORTED + gga50a23 + + + + FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR + gga50a24 + + + + FLAC__STREAM_DECODER_UNINITIALIZED + gga50a25 + + + + FLAC__StreamDecoderInitStatus + ga51 + + + + FLAC__STREAM_DECODER_INIT_STATUS_OK + gga51a26 + + + + FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER + gga51a27 + + + + FLAC__STREAM_DECODER_INIT_STATUS_INVALID_CALLBACKS + gga51a28 + + + + FLAC__STREAM_DECODER_INIT_STATUS_MEMORY_ALLOCATION_ERROR + gga51a29 + + + + FLAC__STREAM_DECODER_INIT_STATUS_ERROR_OPENING_FILE + gga51a30 + + + + FLAC__STREAM_DECODER_INIT_STATUS_ALREADY_INITIALIZED + gga51a31 + + + + FLAC__StreamDecoderReadStatus + ga52 + + + + FLAC__STREAM_DECODER_READ_STATUS_CONTINUE + gga52a32 + + + + FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM + gga52a33 + + + + FLAC__STREAM_DECODER_READ_STATUS_ABORT + gga52a34 + + + + FLAC__StreamDecoderSeekStatus + ga53 + + + + FLAC__STREAM_DECODER_SEEK_STATUS_OK + gga53a35 + + + + FLAC__STREAM_DECODER_SEEK_STATUS_ERROR + gga53a36 + + + + FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED + gga53a37 + + + + FLAC__StreamDecoderTellStatus + ga54 + + + + FLAC__STREAM_DECODER_TELL_STATUS_OK + gga54a38 + + + + FLAC__STREAM_DECODER_TELL_STATUS_ERROR + gga54a39 + + + + FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED + gga54a40 + + + + FLAC__StreamDecoderLengthStatus + ga55 + + + + FLAC__STREAM_DECODER_LENGTH_STATUS_OK + gga55a41 + + + + FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR + gga55a42 + + + + FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED + gga55a43 + + + + FLAC__StreamDecoderWriteStatus + ga56 + + + + FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE + gga56a44 + + + + FLAC__STREAM_DECODER_WRITE_STATUS_ABORT + gga56a45 + + + + FLAC__StreamDecoderErrorStatus + ga57 + + + + FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC + gga57a46 + + + + FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER + gga57a47 + + + + FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH + gga57a48 + + + + FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM + gga57a49 + + + + FLAC__StreamDecoder * + FLAC__stream_decoder_new + group__flac__stream__decoder.html + ga16 + (void) + + + void + FLAC__stream_decoder_delete + group__flac__stream__decoder.html + ga17 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_set_ogg_serial_number + group__flac__stream__decoder.html + ga18 + (FLAC__StreamDecoder *decoder, long serial_number) + + + FLAC__bool + FLAC__stream_decoder_set_md5_checking + group__flac__stream__decoder.html + ga19 + (FLAC__StreamDecoder *decoder, FLAC__bool value) + + + FLAC__bool + FLAC__stream_decoder_set_metadata_respond + group__flac__stream__decoder.html + ga20 + (FLAC__StreamDecoder *decoder, FLAC__MetadataType type) + + + FLAC__bool + FLAC__stream_decoder_set_metadata_respond_application + group__flac__stream__decoder.html + ga21 + (FLAC__StreamDecoder *decoder, const FLAC__byte id[4]) + + + FLAC__bool + FLAC__stream_decoder_set_metadata_respond_all + group__flac__stream__decoder.html + ga22 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_set_metadata_ignore + group__flac__stream__decoder.html + ga23 + (FLAC__StreamDecoder *decoder, FLAC__MetadataType type) + + + FLAC__bool + FLAC__stream_decoder_set_metadata_ignore_application + group__flac__stream__decoder.html + ga24 + (FLAC__StreamDecoder *decoder, const FLAC__byte id[4]) + + + FLAC__bool + FLAC__stream_decoder_set_metadata_ignore_all + group__flac__stream__decoder.html + ga25 + (FLAC__StreamDecoder *decoder) + + + FLAC__StreamDecoderState + FLAC__stream_decoder_get_state + group__flac__stream__decoder.html + ga26 + (const FLAC__StreamDecoder *decoder) + + + const char * + FLAC__stream_decoder_get_resolved_state_string + group__flac__stream__decoder.html + ga27 + (const FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_get_md5_checking + group__flac__stream__decoder.html + ga28 + (const FLAC__StreamDecoder *decoder) + + + FLAC__uint64 + FLAC__stream_decoder_get_total_samples + group__flac__stream__decoder.html + ga29 + (const FLAC__StreamDecoder *decoder) + + + unsigned + FLAC__stream_decoder_get_channels + group__flac__stream__decoder.html + ga30 + (const FLAC__StreamDecoder *decoder) + + + FLAC__ChannelAssignment + FLAC__stream_decoder_get_channel_assignment + group__flac__stream__decoder.html + ga31 + (const FLAC__StreamDecoder *decoder) + + + unsigned + FLAC__stream_decoder_get_bits_per_sample + group__flac__stream__decoder.html + ga32 + (const FLAC__StreamDecoder *decoder) + + + unsigned + FLAC__stream_decoder_get_sample_rate + group__flac__stream__decoder.html + ga33 + (const FLAC__StreamDecoder *decoder) + + + unsigned + FLAC__stream_decoder_get_blocksize + group__flac__stream__decoder.html + ga34 + (const FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_get_decode_position + group__flac__stream__decoder.html + ga35 + (const FLAC__StreamDecoder *decoder, FLAC__uint64 *position) + + + FLAC__StreamDecoderInitStatus + FLAC__stream_decoder_init_stream + group__flac__stream__decoder.html + ga36 + (FLAC__StreamDecoder *decoder, FLAC__StreamDecoderReadCallback read_callback, FLAC__StreamDecoderSeekCallback seek_callback, FLAC__StreamDecoderTellCallback tell_callback, FLAC__StreamDecoderLengthCallback length_callback, FLAC__StreamDecoderEofCallback eof_callback, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data) + + + FLAC__StreamDecoderInitStatus + FLAC__stream_decoder_init_ogg_stream + group__flac__stream__decoder.html + ga37 + (FLAC__StreamDecoder *decoder, FLAC__StreamDecoderReadCallback read_callback, FLAC__StreamDecoderSeekCallback seek_callback, FLAC__StreamDecoderTellCallback tell_callback, FLAC__StreamDecoderLengthCallback length_callback, FLAC__StreamDecoderEofCallback eof_callback, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data) + + + FLAC__StreamDecoderInitStatus + FLAC__stream_decoder_init_FILE + group__flac__stream__decoder.html + ga38 + (FLAC__StreamDecoder *decoder, FILE *file, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data) + + + FLAC__StreamDecoderInitStatus + FLAC__stream_decoder_init_ogg_FILE + group__flac__stream__decoder.html + ga39 + (FLAC__StreamDecoder *decoder, FILE *file, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data) + + + FLAC__StreamDecoderInitStatus + FLAC__stream_decoder_init_file + group__flac__stream__decoder.html + ga40 + (FLAC__StreamDecoder *decoder, const char *filename, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data) + + + FLAC__StreamDecoderInitStatus + FLAC__stream_decoder_init_ogg_file + group__flac__stream__decoder.html + ga41 + (FLAC__StreamDecoder *decoder, const char *filename, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data) + + + FLAC__bool + FLAC__stream_decoder_finish + group__flac__stream__decoder.html + ga42 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_flush + group__flac__stream__decoder.html + ga43 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_reset + group__flac__stream__decoder.html + ga44 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_process_single + group__flac__stream__decoder.html + ga45 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_process_until_end_of_metadata + group__flac__stream__decoder.html + ga46 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_process_until_end_of_stream + group__flac__stream__decoder.html + ga47 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_skip_single_frame + group__flac__stream__decoder.html + ga48 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_seek_absolute + group__flac__stream__decoder.html + ga49 + (FLAC__StreamDecoder *decoder, FLAC__uint64 sample) + + + const char *const + FLAC__StreamDecoderStateString + group__flac__stream__decoder.html + ga0 + [] + + + const char *const + FLAC__StreamDecoderInitStatusString + group__flac__stream__decoder.html + ga1 + [] + + + const char *const + FLAC__StreamDecoderReadStatusString + group__flac__stream__decoder.html + ga2 + [] + + + const char *const + FLAC__StreamDecoderSeekStatusString + group__flac__stream__decoder.html + ga3 + [] + + + const char *const + FLAC__StreamDecoderTellStatusString + group__flac__stream__decoder.html + ga4 + [] + + + const char *const + FLAC__StreamDecoderLengthStatusString + group__flac__stream__decoder.html + ga5 + [] + + + const char *const + FLAC__StreamDecoderWriteStatusString + group__flac__stream__decoder.html + ga6 + [] + + + const char *const + FLAC__StreamDecoderErrorStatusString + group__flac__stream__decoder.html + ga7 + [] + + + + stream_encoder.h + /home/jcoalson/flac/build-1.2.1/include/FLAC/ + stream__encoder_8h + export.h + format.h + stream_decoder.h + + FLAC__StreamEncoderReadStatus(* + FLAC__StreamEncoderReadCallback + group__flac__stream__encoder.html + ga6 + )(const FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data) + + + FLAC__StreamEncoderWriteStatus(* + FLAC__StreamEncoderWriteCallback + group__flac__stream__encoder.html + ga7 + )(const FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, void *client_data) + + + FLAC__StreamEncoderSeekStatus(* + FLAC__StreamEncoderSeekCallback + group__flac__stream__encoder.html + ga8 + )(const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data) + + + FLAC__StreamEncoderTellStatus(* + FLAC__StreamEncoderTellCallback + group__flac__stream__encoder.html + ga9 + )(const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data) + + + void(* + FLAC__StreamEncoderMetadataCallback + group__flac__stream__encoder.html + ga10 + )(const FLAC__StreamEncoder *encoder, const FLAC__StreamMetadata *metadata, void *client_data) + + + void(* + FLAC__StreamEncoderProgressCallback + group__flac__stream__encoder.html + ga11 + )(const FLAC__StreamEncoder *encoder, FLAC__uint64 bytes_written, FLAC__uint64 samples_written, unsigned frames_written, unsigned total_frames_estimate, void *client_data) + + + FLAC__StreamEncoderState + ga65 + + + + FLAC__STREAM_ENCODER_OK + gga65a12 + + + + FLAC__STREAM_ENCODER_UNINITIALIZED + gga65a13 + + + + FLAC__STREAM_ENCODER_OGG_ERROR + gga65a14 + + + + FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR + gga65a15 + + + + FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA + gga65a16 + + + + FLAC__STREAM_ENCODER_CLIENT_ERROR + gga65a17 + + + + FLAC__STREAM_ENCODER_IO_ERROR + gga65a18 + + + + FLAC__STREAM_ENCODER_FRAMING_ERROR + gga65a19 + + + + FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR + gga65a20 + + + + FLAC__StreamEncoderInitStatus + ga66 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_OK + gga66a21 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR + gga66a22 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_UNSUPPORTED_CONTAINER + gga66a23 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_CALLBACKS + gga66a24 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_NUMBER_OF_CHANNELS + gga66a25 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BITS_PER_SAMPLE + gga66a26 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_SAMPLE_RATE + gga66a27 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BLOCK_SIZE + gga66a28 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_MAX_LPC_ORDER + gga66a29 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_QLP_COEFF_PRECISION + gga66a30 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_BLOCK_SIZE_TOO_SMALL_FOR_LPC_ORDER + gga66a31 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_NOT_STREAMABLE + gga66a32 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA + gga66a33 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_ALREADY_INITIALIZED + gga66a34 + + + + FLAC__StreamEncoderReadStatus + ga67 + + + + FLAC__STREAM_ENCODER_READ_STATUS_CONTINUE + gga67a35 + + + + FLAC__STREAM_ENCODER_READ_STATUS_END_OF_STREAM + gga67a36 + + + + FLAC__STREAM_ENCODER_READ_STATUS_ABORT + gga67a37 + + + + FLAC__STREAM_ENCODER_READ_STATUS_UNSUPPORTED + gga67a38 + + + + FLAC__StreamEncoderWriteStatus + ga68 + + + + FLAC__STREAM_ENCODER_WRITE_STATUS_OK + gga68a39 + + + + FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR + gga68a40 + + + + FLAC__StreamEncoderSeekStatus + ga69 + + + + FLAC__STREAM_ENCODER_SEEK_STATUS_OK + gga69a41 + + + + FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR + gga69a42 + + + + FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED + gga69a43 + + + + FLAC__StreamEncoderTellStatus + ga70 + + + + FLAC__STREAM_ENCODER_TELL_STATUS_OK + gga70a44 + + + + FLAC__STREAM_ENCODER_TELL_STATUS_ERROR + gga70a45 + + + + FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED + gga70a46 + + + + FLAC__StreamEncoder * + FLAC__stream_encoder_new + group__flac__stream__encoder.html + ga12 + (void) + + + void + FLAC__stream_encoder_delete + group__flac__stream__encoder.html + ga13 + (FLAC__StreamEncoder *encoder) + + + FLAC__bool + FLAC__stream_encoder_set_ogg_serial_number + group__flac__stream__encoder.html + ga14 + (FLAC__StreamEncoder *encoder, long serial_number) + + + FLAC__bool + FLAC__stream_encoder_set_verify + group__flac__stream__encoder.html + ga15 + (FLAC__StreamEncoder *encoder, FLAC__bool value) + + + FLAC__bool + FLAC__stream_encoder_set_streamable_subset + group__flac__stream__encoder.html + ga16 + (FLAC__StreamEncoder *encoder, FLAC__bool value) + + + FLAC__bool + FLAC__stream_encoder_set_channels + group__flac__stream__encoder.html + ga17 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_bits_per_sample + group__flac__stream__encoder.html + ga18 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_sample_rate + group__flac__stream__encoder.html + ga19 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_compression_level + group__flac__stream__encoder.html + ga20 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_blocksize + group__flac__stream__encoder.html + ga21 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_do_mid_side_stereo + group__flac__stream__encoder.html + ga22 + (FLAC__StreamEncoder *encoder, FLAC__bool value) + + + FLAC__bool + FLAC__stream_encoder_set_loose_mid_side_stereo + group__flac__stream__encoder.html + ga23 + (FLAC__StreamEncoder *encoder, FLAC__bool value) + + + FLAC__bool + FLAC__stream_encoder_set_apodization + group__flac__stream__encoder.html + ga24 + (FLAC__StreamEncoder *encoder, const char *specification) + + + FLAC__bool + FLAC__stream_encoder_set_max_lpc_order + group__flac__stream__encoder.html + ga25 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_qlp_coeff_precision + group__flac__stream__encoder.html + ga26 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_do_qlp_coeff_prec_search + group__flac__stream__encoder.html + ga27 + (FLAC__StreamEncoder *encoder, FLAC__bool value) + + + FLAC__bool + FLAC__stream_encoder_set_do_escape_coding + group__flac__stream__encoder.html + ga28 + (FLAC__StreamEncoder *encoder, FLAC__bool value) + + + FLAC__bool + FLAC__stream_encoder_set_do_exhaustive_model_search + group__flac__stream__encoder.html + ga29 + (FLAC__StreamEncoder *encoder, FLAC__bool value) + + + FLAC__bool + FLAC__stream_encoder_set_min_residual_partition_order + group__flac__stream__encoder.html + ga30 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_max_residual_partition_order + group__flac__stream__encoder.html + ga31 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_rice_parameter_search_dist + group__flac__stream__encoder.html + ga32 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_total_samples_estimate + group__flac__stream__encoder.html + ga33 + (FLAC__StreamEncoder *encoder, FLAC__uint64 value) + + + FLAC__bool + FLAC__stream_encoder_set_metadata + group__flac__stream__encoder.html + ga34 + (FLAC__StreamEncoder *encoder, FLAC__StreamMetadata **metadata, unsigned num_blocks) + + + FLAC__StreamEncoderState + FLAC__stream_encoder_get_state + group__flac__stream__encoder.html + ga35 + (const FLAC__StreamEncoder *encoder) + + + FLAC__StreamDecoderState + FLAC__stream_encoder_get_verify_decoder_state + group__flac__stream__encoder.html + ga36 + (const FLAC__StreamEncoder *encoder) + + + const char * + FLAC__stream_encoder_get_resolved_state_string + group__flac__stream__encoder.html + ga37 + (const FLAC__StreamEncoder *encoder) + + + void + FLAC__stream_encoder_get_verify_decoder_error_stats + group__flac__stream__encoder.html + ga38 + (const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_sample, unsigned *frame_number, unsigned *channel, unsigned *sample, FLAC__int32 *expected, FLAC__int32 *got) + + + FLAC__bool + FLAC__stream_encoder_get_verify + group__flac__stream__encoder.html + ga39 + (const FLAC__StreamEncoder *encoder) + + + FLAC__bool + FLAC__stream_encoder_get_streamable_subset + group__flac__stream__encoder.html + ga40 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_channels + group__flac__stream__encoder.html + ga41 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_bits_per_sample + group__flac__stream__encoder.html + ga42 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_sample_rate + group__flac__stream__encoder.html + ga43 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_blocksize + group__flac__stream__encoder.html + ga44 + (const FLAC__StreamEncoder *encoder) + + + FLAC__bool + FLAC__stream_encoder_get_do_mid_side_stereo + group__flac__stream__encoder.html + ga45 + (const FLAC__StreamEncoder *encoder) + + + FLAC__bool + FLAC__stream_encoder_get_loose_mid_side_stereo + group__flac__stream__encoder.html + ga46 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_max_lpc_order + group__flac__stream__encoder.html + ga47 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_qlp_coeff_precision + group__flac__stream__encoder.html + ga48 + (const FLAC__StreamEncoder *encoder) + + + FLAC__bool + FLAC__stream_encoder_get_do_qlp_coeff_prec_search + group__flac__stream__encoder.html + ga49 + (const FLAC__StreamEncoder *encoder) + + + FLAC__bool + FLAC__stream_encoder_get_do_escape_coding + group__flac__stream__encoder.html + ga50 + (const FLAC__StreamEncoder *encoder) + + + FLAC__bool + FLAC__stream_encoder_get_do_exhaustive_model_search + group__flac__stream__encoder.html + ga51 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_min_residual_partition_order + group__flac__stream__encoder.html + ga52 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_max_residual_partition_order + group__flac__stream__encoder.html + ga53 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_rice_parameter_search_dist + group__flac__stream__encoder.html + ga54 + (const FLAC__StreamEncoder *encoder) + + + FLAC__uint64 + FLAC__stream_encoder_get_total_samples_estimate + group__flac__stream__encoder.html + ga55 + (const FLAC__StreamEncoder *encoder) + + + FLAC__StreamEncoderInitStatus + FLAC__stream_encoder_init_stream + group__flac__stream__encoder.html + ga56 + (FLAC__StreamEncoder *encoder, FLAC__StreamEncoderWriteCallback write_callback, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderTellCallback tell_callback, FLAC__StreamEncoderMetadataCallback metadata_callback, void *client_data) + + + FLAC__StreamEncoderInitStatus + FLAC__stream_encoder_init_ogg_stream + group__flac__stream__encoder.html + ga57 + (FLAC__StreamEncoder *encoder, FLAC__StreamEncoderReadCallback read_callback, FLAC__StreamEncoderWriteCallback write_callback, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderTellCallback tell_callback, FLAC__StreamEncoderMetadataCallback metadata_callback, void *client_data) + + + FLAC__StreamEncoderInitStatus + FLAC__stream_encoder_init_FILE + group__flac__stream__encoder.html + ga58 + (FLAC__StreamEncoder *encoder, FILE *file, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data) + + + FLAC__StreamEncoderInitStatus + FLAC__stream_encoder_init_ogg_FILE + group__flac__stream__encoder.html + ga59 + (FLAC__StreamEncoder *encoder, FILE *file, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data) + + + FLAC__StreamEncoderInitStatus + FLAC__stream_encoder_init_file + group__flac__stream__encoder.html + ga60 + (FLAC__StreamEncoder *encoder, const char *filename, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data) + + + FLAC__StreamEncoderInitStatus + FLAC__stream_encoder_init_ogg_file + group__flac__stream__encoder.html + ga61 + (FLAC__StreamEncoder *encoder, const char *filename, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data) + + + FLAC__bool + FLAC__stream_encoder_finish + group__flac__stream__encoder.html + ga62 + (FLAC__StreamEncoder *encoder) + + + FLAC__bool + FLAC__stream_encoder_process + group__flac__stream__encoder.html + ga63 + (FLAC__StreamEncoder *encoder, const FLAC__int32 *const buffer[], unsigned samples) + + + FLAC__bool + FLAC__stream_encoder_process_interleaved + group__flac__stream__encoder.html + ga64 + (FLAC__StreamEncoder *encoder, const FLAC__int32 buffer[], unsigned samples) + + + const char *const + FLAC__StreamEncoderStateString + group__flac__stream__encoder.html + ga0 + [] + + + const char *const + FLAC__StreamEncoderInitStatusString + group__flac__stream__encoder.html + ga1 + [] + + + const char *const + FLAC__StreamEncoderReadStatusString + group__flac__stream__encoder.html + ga2 + [] + + + const char *const + FLAC__StreamEncoderWriteStatusString + group__flac__stream__encoder.html + ga3 + [] + + + const char *const + FLAC__StreamEncoderSeekStatusString + group__flac__stream__encoder.html + ga4 + [] + + + const char *const + FLAC__StreamEncoderTellStatusString + group__flac__stream__encoder.html + ga5 + [] + + + + FLAC__EntropyCodingMethod + structFLAC____EntropyCodingMethod.html + + FLAC__EntropyCodingMethodType + type + structFLAC____EntropyCodingMethod.html + FLAC____EntropyCodingMethodo0 + + + + FLAC__EntropyCodingMethod::@0 + data + structFLAC____EntropyCodingMethod.html + FLAC____EntropyCodingMethodo2 + + + + FLAC__EntropyCodingMethod_PartitionedRice + partitioned_rice + unionFLAC____EntropyCodingMethod_1_1@0.html + FLAC____EntropyCodingMethod_1_1@0o0 + + + + + FLAC__EntropyCodingMethod_PartitionedRice + structFLAC____EntropyCodingMethod__PartitionedRice.html + + unsigned + order + structFLAC____EntropyCodingMethod__PartitionedRice.html + FLAC____EntropyCodingMethod__PartitionedRiceo0 + + + + const FLAC__EntropyCodingMethod_PartitionedRiceContents * + contents + structFLAC____EntropyCodingMethod__PartitionedRice.html + FLAC____EntropyCodingMethod__PartitionedRiceo1 + + + + + FLAC__EntropyCodingMethod_PartitionedRiceContents + structFLAC____EntropyCodingMethod__PartitionedRiceContents.html + + unsigned * + parameters + structFLAC____EntropyCodingMethod__PartitionedRiceContents.html + FLAC____EntropyCodingMethod__PartitionedRiceContentso0 + + + + unsigned * + raw_bits + structFLAC____EntropyCodingMethod__PartitionedRiceContents.html + FLAC____EntropyCodingMethod__PartitionedRiceContentso1 + + + + unsigned + capacity_by_order + structFLAC____EntropyCodingMethod__PartitionedRiceContents.html + FLAC____EntropyCodingMethod__PartitionedRiceContentso2 + + + + + FLAC__Frame + structFLAC____Frame.html + + FLAC__FrameHeader + header + structFLAC____Frame.html + FLAC____Frameo0 + + + + FLAC__Subframe + subframes + structFLAC____Frame.html + FLAC____Frameo1 + [FLAC__MAX_CHANNELS] + + + FLAC__FrameFooter + footer + structFLAC____Frame.html + FLAC____Frameo2 + + + + + FLAC__FrameFooter + structFLAC____FrameFooter.html + + FLAC__uint16 + crc + structFLAC____FrameFooter.html + FLAC____FrameFootero0 + + + + + FLAC__FrameHeader + structFLAC____FrameHeader.html + + unsigned + blocksize + structFLAC____FrameHeader.html + FLAC____FrameHeadero0 + + + + unsigned + sample_rate + structFLAC____FrameHeader.html + FLAC____FrameHeadero1 + + + + unsigned + channels + structFLAC____FrameHeader.html + FLAC____FrameHeadero2 + + + + FLAC__ChannelAssignment + channel_assignment + structFLAC____FrameHeader.html + FLAC____FrameHeadero3 + + + + unsigned + bits_per_sample + structFLAC____FrameHeader.html + FLAC____FrameHeadero4 + + + + FLAC__FrameNumberType + number_type + structFLAC____FrameHeader.html + FLAC____FrameHeadero5 + + + + FLAC__FrameHeader::@2 + number + structFLAC____FrameHeader.html + FLAC____FrameHeadero8 + + + + FLAC__uint32 + frame_number + unionFLAC____FrameHeader_1_1@2.html + FLAC____FrameHeader_1_1@2o0 + + + + FLAC__uint64 + sample_number + unionFLAC____FrameHeader_1_1@2.html + FLAC____FrameHeader_1_1@2o1 + + + + FLAC__uint8 + crc + structFLAC____FrameHeader.html + FLAC____FrameHeadero9 + + + + + FLAC__IOCallbacks + structFLAC____IOCallbacks.html + + FLAC__IOCallback_Read + read + structFLAC____IOCallbacks.html + FLAC____IOCallbackso0 + + + + FLAC__IOCallback_Write + write + structFLAC____IOCallbacks.html + FLAC____IOCallbackso1 + + + + FLAC__IOCallback_Seek + seek + structFLAC____IOCallbacks.html + FLAC____IOCallbackso2 + + + + FLAC__IOCallback_Tell + tell + structFLAC____IOCallbacks.html + FLAC____IOCallbackso3 + + + + FLAC__IOCallback_Eof + eof + structFLAC____IOCallbacks.html + FLAC____IOCallbackso4 + + + + FLAC__IOCallback_Close + close + structFLAC____IOCallbacks.html + FLAC____IOCallbackso5 + + + + + FLAC__StreamDecoder + structFLAC____StreamDecoder.html + + FLAC__StreamDecoderProtected * + protected_ + structFLAC____StreamDecoder.html + FLAC____StreamDecodero0 + + + + FLAC__StreamDecoderPrivate * + private_ + structFLAC____StreamDecoder.html + FLAC____StreamDecodero1 + + + + + FLAC__StreamEncoder + structFLAC____StreamEncoder.html + + FLAC__StreamEncoderProtected * + protected_ + structFLAC____StreamEncoder.html + FLAC____StreamEncodero0 + + + + FLAC__StreamEncoderPrivate * + private_ + structFLAC____StreamEncoder.html + FLAC____StreamEncodero1 + + + + + FLAC__StreamMetadata + structFLAC____StreamMetadata.html + + FLAC__MetadataType + type + structFLAC____StreamMetadata.html + FLAC____StreamMetadatao0 + + + + FLAC__bool + is_last + structFLAC____StreamMetadata.html + FLAC____StreamMetadatao1 + + + + unsigned + length + structFLAC____StreamMetadata.html + FLAC____StreamMetadatao2 + + + + FLAC__StreamMetadata::@3 + data + structFLAC____StreamMetadata.html + FLAC____StreamMetadatao11 + + + + FLAC__StreamMetadata_StreamInfo + stream_info + unionFLAC____StreamMetadata_1_1@3.html + FLAC____StreamMetadata_1_1@3o0 + + + + FLAC__StreamMetadata_Padding + padding + unionFLAC____StreamMetadata_1_1@3.html + FLAC____StreamMetadata_1_1@3o1 + + + + FLAC__StreamMetadata_Application + application + unionFLAC____StreamMetadata_1_1@3.html + FLAC____StreamMetadata_1_1@3o2 + + + + FLAC__StreamMetadata_SeekTable + seek_table + unionFLAC____StreamMetadata_1_1@3.html + FLAC____StreamMetadata_1_1@3o3 + + + + FLAC__StreamMetadata_VorbisComment + vorbis_comment + unionFLAC____StreamMetadata_1_1@3.html + FLAC____StreamMetadata_1_1@3o4 + + + + FLAC__StreamMetadata_CueSheet + cue_sheet + unionFLAC____StreamMetadata_1_1@3.html + FLAC____StreamMetadata_1_1@3o5 + + + + FLAC__StreamMetadata_Picture + picture + unionFLAC____StreamMetadata_1_1@3.html + FLAC____StreamMetadata_1_1@3o6 + + + + FLAC__StreamMetadata_Unknown + unknown + unionFLAC____StreamMetadata_1_1@3.html + FLAC____StreamMetadata_1_1@3o7 + + + + + FLAC__StreamMetadata_Application + structFLAC____StreamMetadata__Application.html + + FLAC__byte + id + structFLAC____StreamMetadata__Application.html + FLAC____StreamMetadata__Applicationo0 + [4] + + + FLAC__byte * + data + structFLAC____StreamMetadata__Application.html + FLAC____StreamMetadata__Applicationo1 + + + + + FLAC__StreamMetadata_CueSheet + structFLAC____StreamMetadata__CueSheet.html + + char + media_catalog_number + structFLAC____StreamMetadata__CueSheet.html + FLAC____StreamMetadata__CueSheeto0 + [129] + + + FLAC__uint64 + lead_in + structFLAC____StreamMetadata__CueSheet.html + FLAC____StreamMetadata__CueSheeto1 + + + + FLAC__bool + is_cd + structFLAC____StreamMetadata__CueSheet.html + FLAC____StreamMetadata__CueSheeto2 + + + + unsigned + num_tracks + structFLAC____StreamMetadata__CueSheet.html + FLAC____StreamMetadata__CueSheeto3 + + + + FLAC__StreamMetadata_CueSheet_Track * + tracks + structFLAC____StreamMetadata__CueSheet.html + FLAC____StreamMetadata__CueSheeto4 + + + + + FLAC__StreamMetadata_CueSheet_Index + structFLAC____StreamMetadata__CueSheet__Index.html + + FLAC__uint64 + offset + structFLAC____StreamMetadata__CueSheet__Index.html + FLAC____StreamMetadata__CueSheet__Indexo0 + + + + FLAC__byte + number + structFLAC____StreamMetadata__CueSheet__Index.html + FLAC____StreamMetadata__CueSheet__Indexo1 + + + + + FLAC__StreamMetadata_CueSheet_Track + structFLAC____StreamMetadata__CueSheet__Track.html + + FLAC__uint64 + offset + structFLAC____StreamMetadata__CueSheet__Track.html + FLAC____StreamMetadata__CueSheet__Tracko0 + + + + FLAC__byte + number + structFLAC____StreamMetadata__CueSheet__Track.html + FLAC____StreamMetadata__CueSheet__Tracko1 + + + + char + isrc + structFLAC____StreamMetadata__CueSheet__Track.html + FLAC____StreamMetadata__CueSheet__Tracko2 + [13] + + + unsigned + type + structFLAC____StreamMetadata__CueSheet__Track.html + FLAC____StreamMetadata__CueSheet__Tracko3 + + + + unsigned + pre_emphasis + structFLAC____StreamMetadata__CueSheet__Track.html + FLAC____StreamMetadata__CueSheet__Tracko4 + + + + FLAC__byte + num_indices + structFLAC____StreamMetadata__CueSheet__Track.html + FLAC____StreamMetadata__CueSheet__Tracko5 + + + + FLAC__StreamMetadata_CueSheet_Index * + indices + structFLAC____StreamMetadata__CueSheet__Track.html + FLAC____StreamMetadata__CueSheet__Tracko6 + + + + + FLAC__StreamMetadata_Padding + structFLAC____StreamMetadata__Padding.html + + int + dummy + structFLAC____StreamMetadata__Padding.html + FLAC____StreamMetadata__Paddingo0 + + + + + FLAC__StreamMetadata_Picture + structFLAC____StreamMetadata__Picture.html + + FLAC__StreamMetadata_Picture_Type + type + structFLAC____StreamMetadata__Picture.html + FLAC____StreamMetadata__Pictureo0 + + + + char * + mime_type + structFLAC____StreamMetadata__Picture.html + FLAC____StreamMetadata__Pictureo1 + + + + FLAC__byte * + description + structFLAC____StreamMetadata__Picture.html + FLAC____StreamMetadata__Pictureo2 + + + + FLAC__uint32 + width + structFLAC____StreamMetadata__Picture.html + FLAC____StreamMetadata__Pictureo3 + + + + FLAC__uint32 + height + structFLAC____StreamMetadata__Picture.html + FLAC____StreamMetadata__Pictureo4 + + + + FLAC__uint32 + depth + structFLAC____StreamMetadata__Picture.html + FLAC____StreamMetadata__Pictureo5 + + + + FLAC__uint32 + colors + structFLAC____StreamMetadata__Picture.html + FLAC____StreamMetadata__Pictureo6 + + + + FLAC__uint32 + data_length + structFLAC____StreamMetadata__Picture.html + FLAC____StreamMetadata__Pictureo7 + + + + FLAC__byte * + data + structFLAC____StreamMetadata__Picture.html + FLAC____StreamMetadata__Pictureo8 + + + + + FLAC__StreamMetadata_SeekPoint + structFLAC____StreamMetadata__SeekPoint.html + + FLAC__uint64 + sample_number + structFLAC____StreamMetadata__SeekPoint.html + FLAC____StreamMetadata__SeekPointo0 + + + + FLAC__uint64 + stream_offset + structFLAC____StreamMetadata__SeekPoint.html + FLAC____StreamMetadata__SeekPointo1 + + + + unsigned + frame_samples + structFLAC____StreamMetadata__SeekPoint.html + FLAC____StreamMetadata__SeekPointo2 + + + + + FLAC__StreamMetadata_SeekTable + structFLAC____StreamMetadata__SeekTable.html + + unsigned + num_points + structFLAC____StreamMetadata__SeekTable.html + FLAC____StreamMetadata__SeekTableo0 + + + + FLAC__StreamMetadata_SeekPoint * + points + structFLAC____StreamMetadata__SeekTable.html + FLAC____StreamMetadata__SeekTableo1 + + + + + FLAC__StreamMetadata_StreamInfo + structFLAC____StreamMetadata__StreamInfo.html + + unsigned + min_blocksize + structFLAC____StreamMetadata__StreamInfo.html + FLAC____StreamMetadata__StreamInfoo0 + + + + unsigned + max_blocksize + structFLAC____StreamMetadata__StreamInfo.html + FLAC____StreamMetadata__StreamInfoo1 + + + + unsigned + min_framesize + structFLAC____StreamMetadata__StreamInfo.html + FLAC____StreamMetadata__StreamInfoo2 + + + + unsigned + max_framesize + structFLAC____StreamMetadata__StreamInfo.html + FLAC____StreamMetadata__StreamInfoo3 + + + + unsigned + sample_rate + structFLAC____StreamMetadata__StreamInfo.html + FLAC____StreamMetadata__StreamInfoo4 + + + + unsigned + channels + structFLAC____StreamMetadata__StreamInfo.html + FLAC____StreamMetadata__StreamInfoo5 + + + + unsigned + bits_per_sample + structFLAC____StreamMetadata__StreamInfo.html + FLAC____StreamMetadata__StreamInfoo6 + + + + FLAC__uint64 + total_samples + structFLAC____StreamMetadata__StreamInfo.html + FLAC____StreamMetadata__StreamInfoo7 + + + + FLAC__byte + md5sum + structFLAC____StreamMetadata__StreamInfo.html + FLAC____StreamMetadata__StreamInfoo8 + [16] + + + + FLAC__StreamMetadata_Unknown + structFLAC____StreamMetadata__Unknown.html + + FLAC__byte * + data + structFLAC____StreamMetadata__Unknown.html + FLAC____StreamMetadata__Unknowno0 + + + + + FLAC__StreamMetadata_VorbisComment + structFLAC____StreamMetadata__VorbisComment.html + + FLAC__StreamMetadata_VorbisComment_Entry + vendor_string + structFLAC____StreamMetadata__VorbisComment.html + FLAC____StreamMetadata__VorbisCommento0 + + + + FLAC__uint32 + num_comments + structFLAC____StreamMetadata__VorbisComment.html + FLAC____StreamMetadata__VorbisCommento1 + + + + FLAC__StreamMetadata_VorbisComment_Entry * + comments + structFLAC____StreamMetadata__VorbisComment.html + FLAC____StreamMetadata__VorbisCommento2 + + + + + FLAC__StreamMetadata_VorbisComment_Entry + structFLAC____StreamMetadata__VorbisComment__Entry.html + + FLAC__uint32 + length + structFLAC____StreamMetadata__VorbisComment__Entry.html + FLAC____StreamMetadata__VorbisComment__Entryo0 + + + + FLAC__byte * + entry + structFLAC____StreamMetadata__VorbisComment__Entry.html + FLAC____StreamMetadata__VorbisComment__Entryo1 + + + + + FLAC__Subframe + structFLAC____Subframe.html + + FLAC__SubframeType + type + structFLAC____Subframe.html + FLAC____Subframeo0 + + + + FLAC__Subframe::@1 + data + structFLAC____Subframe.html + FLAC____Subframeo5 + + + + FLAC__Subframe_Constant + constant + unionFLAC____Subframe_1_1@1.html + FLAC____Subframe_1_1@1o0 + + + + FLAC__Subframe_Fixed + fixed + unionFLAC____Subframe_1_1@1.html + FLAC____Subframe_1_1@1o1 + + + + FLAC__Subframe_LPC + lpc + unionFLAC____Subframe_1_1@1.html + FLAC____Subframe_1_1@1o2 + + + + FLAC__Subframe_Verbatim + verbatim + unionFLAC____Subframe_1_1@1.html + FLAC____Subframe_1_1@1o3 + + + + unsigned + wasted_bits + structFLAC____Subframe.html + FLAC____Subframeo6 + + + + + FLAC__Subframe_Constant + structFLAC____Subframe__Constant.html + + FLAC__int32 + value + structFLAC____Subframe__Constant.html + FLAC____Subframe__Constanto0 + + + + + FLAC__Subframe_Fixed + structFLAC____Subframe__Fixed.html + + FLAC__EntropyCodingMethod + entropy_coding_method + structFLAC____Subframe__Fixed.html + FLAC____Subframe__Fixedo0 + + + + unsigned + order + structFLAC____Subframe__Fixed.html + FLAC____Subframe__Fixedo1 + + + + FLAC__int32 + warmup + structFLAC____Subframe__Fixed.html + FLAC____Subframe__Fixedo2 + [FLAC__MAX_FIXED_ORDER] + + + const FLAC__int32 * + residual + structFLAC____Subframe__Fixed.html + FLAC____Subframe__Fixedo3 + + + + + FLAC__Subframe_LPC + structFLAC____Subframe__LPC.html + + FLAC__EntropyCodingMethod + entropy_coding_method + structFLAC____Subframe__LPC.html + FLAC____Subframe__LPCo0 + + + + unsigned + order + structFLAC____Subframe__LPC.html + FLAC____Subframe__LPCo1 + + + + unsigned + qlp_coeff_precision + structFLAC____Subframe__LPC.html + FLAC____Subframe__LPCo2 + + + + int + quantization_level + structFLAC____Subframe__LPC.html + FLAC____Subframe__LPCo3 + + + + FLAC__int32 + qlp_coeff + structFLAC____Subframe__LPC.html + FLAC____Subframe__LPCo4 + [FLAC__MAX_LPC_ORDER] + + + FLAC__int32 + warmup + structFLAC____Subframe__LPC.html + FLAC____Subframe__LPCo5 + [FLAC__MAX_LPC_ORDER] + + + const FLAC__int32 * + residual + structFLAC____Subframe__LPC.html + FLAC____Subframe__LPCo6 + + + + + FLAC__Subframe_Verbatim + structFLAC____Subframe__Verbatim.html + + const FLAC__int32 * + data + structFLAC____Subframe__Verbatim.html + FLAC____Subframe__Verbatimo0 + + + + + porting + Porting Guide for New Versions + group__porting.html + porting_1_1_2_to_1_1_3 + porting_1_1_3_to_1_1_4 + porting_1_1_4_to_1_2_0 + + + porting_1_1_2_to_1_1_3 + Porting from FLAC 1.1.2 to 1.1.3 + group__porting__1__1__2__to__1__1__3.html + + + porting_1_1_3_to_1_1_4 + Porting from FLAC 1.1.3 to 1.1.4 + group__porting__1__1__3__to__1__1__4.html + + + porting_1_1_4_to_1_2_0 + Porting from FLAC 1.1.4 to 1.2.0 + group__porting__1__1__4__to__1__2__0.html + + + flac + FLAC C API + group__flac.html + flac_callbacks + flac_export + flac_format + flac_metadata + flac_decoder + flac_encoder + + + flac_callbacks + FLAC/callback.h: I/O callback structures + group__flac__callbacks.html + FLAC__IOCallbacks + + void * + FLAC__IOHandle + group__flac__callbacks.html + ga0 + + + + size_t(* + FLAC__IOCallback_Read + group__flac__callbacks.html + ga1 + )(void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle) + + + size_t(* + FLAC__IOCallback_Write + group__flac__callbacks.html + ga2 + )(const void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle) + + + int(* + FLAC__IOCallback_Seek + group__flac__callbacks.html + ga3 + )(FLAC__IOHandle handle, FLAC__int64 offset, int whence) + + + FLAC__int64(* + FLAC__IOCallback_Tell + group__flac__callbacks.html + ga4 + )(FLAC__IOHandle handle) + + + int(* + FLAC__IOCallback_Eof + group__flac__callbacks.html + ga5 + )(FLAC__IOHandle handle) + + + int(* + FLAC__IOCallback_Close + group__flac__callbacks.html + ga6 + )(FLAC__IOHandle handle) + + + + flac_export + FLAC/export.h: export symbols + group__flac__export.html + + #define + FLAC_API + group__flac__export.html + ga1 + + + + #define + FLAC_API_VERSION_CURRENT + group__flac__export.html + ga2 + + + + #define + FLAC_API_VERSION_REVISION + group__flac__export.html + ga3 + + + + #define + FLAC_API_VERSION_AGE + group__flac__export.html + ga4 + + + + int + FLAC_API_SUPPORTS_OGG_FLAC + group__flac__export.html + ga0 + + + + + flac_format + FLAC/format.h: format components + group__flac__format.html + FLAC__EntropyCodingMethod_PartitionedRiceContents + FLAC__EntropyCodingMethod_PartitionedRice + FLAC__EntropyCodingMethod + FLAC__Subframe_Constant + FLAC__Subframe_Verbatim + FLAC__Subframe_Fixed + FLAC__Subframe_LPC + FLAC__Subframe + FLAC__FrameHeader + FLAC__FrameFooter + FLAC__Frame + FLAC__StreamMetadata_StreamInfo + FLAC__StreamMetadata_Padding + FLAC__StreamMetadata_Application + FLAC__StreamMetadata_SeekPoint + FLAC__StreamMetadata_SeekTable + FLAC__StreamMetadata_VorbisComment_Entry + FLAC__StreamMetadata_VorbisComment + FLAC__StreamMetadata_CueSheet_Index + FLAC__StreamMetadata_CueSheet_Track + FLAC__StreamMetadata_CueSheet + FLAC__StreamMetadata_Picture + FLAC__StreamMetadata_Unknown + FLAC__StreamMetadata + + #define + FLAC__MAX_METADATA_TYPE_CODE + group__flac__format.html + ga89 + + + + #define + FLAC__MIN_BLOCK_SIZE + group__flac__format.html + ga90 + + + + #define + FLAC__MAX_BLOCK_SIZE + group__flac__format.html + ga91 + + + + #define + FLAC__SUBSET_MAX_BLOCK_SIZE_48000HZ + group__flac__format.html + ga92 + + + + #define + FLAC__MAX_CHANNELS + group__flac__format.html + ga93 + + + + #define + FLAC__MIN_BITS_PER_SAMPLE + group__flac__format.html + ga94 + + + + #define + FLAC__MAX_BITS_PER_SAMPLE + group__flac__format.html + ga95 + + + + #define + FLAC__REFERENCE_CODEC_MAX_BITS_PER_SAMPLE + group__flac__format.html + ga96 + + + + #define + FLAC__MAX_SAMPLE_RATE + group__flac__format.html + ga97 + + + + #define + FLAC__MAX_LPC_ORDER + group__flac__format.html + ga98 + + + + #define + FLAC__SUBSET_MAX_LPC_ORDER_48000HZ + group__flac__format.html + ga99 + + + + #define + FLAC__MIN_QLP_COEFF_PRECISION + group__flac__format.html + ga100 + + + + #define + FLAC__MAX_QLP_COEFF_PRECISION + group__flac__format.html + ga101 + + + + #define + FLAC__MAX_FIXED_ORDER + group__flac__format.html + ga102 + + + + #define + FLAC__MAX_RICE_PARTITION_ORDER + group__flac__format.html + ga103 + + + + #define + FLAC__SUBSET_MAX_RICE_PARTITION_ORDER + group__flac__format.html + ga104 + + + + #define + FLAC__STREAM_SYNC_LENGTH + group__flac__format.html + ga105 + + + + #define + FLAC__STREAM_METADATA_STREAMINFO_LENGTH + group__flac__format.html + ga106 + + + + #define + FLAC__STREAM_METADATA_SEEKPOINT_LENGTH + group__flac__format.html + ga107 + + + + #define + FLAC__STREAM_METADATA_HEADER_LENGTH + group__flac__format.html + ga108 + + + + FLAC__EntropyCodingMethodType + ga109 + + + + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE + gga109a100 + + + + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2 + gga109a101 + + + + FLAC__SubframeType + ga110 + + + + FLAC__SUBFRAME_TYPE_CONSTANT + gga110a102 + + + + FLAC__SUBFRAME_TYPE_VERBATIM + gga110a103 + + + + FLAC__SUBFRAME_TYPE_FIXED + gga110a104 + + + + FLAC__SUBFRAME_TYPE_LPC + gga110a105 + + + + FLAC__ChannelAssignment + ga111 + + + + FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT + gga111a106 + + + + FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE + gga111a107 + + + + FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE + gga111a108 + + + + FLAC__CHANNEL_ASSIGNMENT_MID_SIDE + gga111a109 + + + + FLAC__FrameNumberType + ga112 + + + + FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER + gga112a110 + + + + FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER + gga112a111 + + + + FLAC__MetadataType + ga113 + + + + FLAC__METADATA_TYPE_STREAMINFO + gga113a112 + + + + FLAC__METADATA_TYPE_PADDING + gga113a113 + + + + FLAC__METADATA_TYPE_APPLICATION + gga113a114 + + + + FLAC__METADATA_TYPE_SEEKTABLE + gga113a115 + + + + FLAC__METADATA_TYPE_VORBIS_COMMENT + gga113a116 + + + + FLAC__METADATA_TYPE_CUESHEET + gga113a117 + + + + FLAC__METADATA_TYPE_PICTURE + gga113a118 + + + + FLAC__METADATA_TYPE_UNDEFINED + gga113a119 + + + + FLAC__StreamMetadata_Picture_Type + ga114 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_OTHER + gga114a120 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON_STANDARD + gga114a121 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON + gga114a122 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER + gga114a123 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_BACK_COVER + gga114a124 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_LEAFLET_PAGE + gga114a125 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_MEDIA + gga114a126 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_LEAD_ARTIST + gga114a127 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_ARTIST + gga114a128 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_CONDUCTOR + gga114a129 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_BAND + gga114a130 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_COMPOSER + gga114a131 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_LYRICIST + gga114a132 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_RECORDING_LOCATION + gga114a133 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_RECORDING + gga114a134 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_PERFORMANCE + gga114a135 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_VIDEO_SCREEN_CAPTURE + gga114a136 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_FISH + gga114a137 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_ILLUSTRATION + gga114a138 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_BAND_LOGOTYPE + gga114a139 + + + + FLAC__STREAM_METADATA_PICTURE_TYPE_PUBLISHER_LOGOTYPE + gga114a140 + + + + FLAC__bool + FLAC__format_sample_rate_is_valid + group__flac__format.html + ga80 + (unsigned sample_rate) + + + FLAC__bool + FLAC__format_sample_rate_is_subset + group__flac__format.html + ga81 + (unsigned sample_rate) + + + FLAC__bool + FLAC__format_vorbiscomment_entry_name_is_legal + group__flac__format.html + ga82 + (const char *name) + + + FLAC__bool + FLAC__format_vorbiscomment_entry_value_is_legal + group__flac__format.html + ga83 + (const FLAC__byte *value, unsigned length) + + + FLAC__bool + FLAC__format_vorbiscomment_entry_is_legal + group__flac__format.html + ga84 + (const FLAC__byte *entry, unsigned length) + + + FLAC__bool + FLAC__format_seektable_is_legal + group__flac__format.html + ga85 + (const FLAC__StreamMetadata_SeekTable *seek_table) + + + unsigned + FLAC__format_seektable_sort + group__flac__format.html + ga86 + (FLAC__StreamMetadata_SeekTable *seek_table) + + + FLAC__bool + FLAC__format_cuesheet_is_legal + group__flac__format.html + ga87 + (const FLAC__StreamMetadata_CueSheet *cue_sheet, FLAC__bool check_cd_da_subset, const char **violation) + + + FLAC__bool + FLAC__format_picture_is_legal + group__flac__format.html + ga88 + (const FLAC__StreamMetadata_Picture *picture, const char **violation) + + + const char * + FLAC__VERSION_STRING + group__flac__format.html + ga0 + + + + const char * + FLAC__VENDOR_STRING + group__flac__format.html + ga1 + + + + const FLAC__byte + FLAC__STREAM_SYNC_STRING + group__flac__format.html + ga2 + [4] + + + const unsigned + FLAC__STREAM_SYNC + group__flac__format.html + ga3 + + + + const unsigned + FLAC__STREAM_SYNC_LEN + group__flac__format.html + ga4 + + + + const char *const + FLAC__EntropyCodingMethodTypeString + group__flac__format.html + ga5 + [] + + + const unsigned + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN + group__flac__format.html + ga6 + + + + const unsigned + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN + group__flac__format.html + ga7 + + + + const unsigned + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN + group__flac__format.html + ga8 + + + + const unsigned + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN + group__flac__format.html + ga9 + + + + const unsigned + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER + group__flac__format.html + ga10 + + + + const unsigned + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_ESCAPE_PARAMETER + group__flac__format.html + ga11 + + + + const unsigned + FLAC__ENTROPY_CODING_METHOD_TYPE_LEN + group__flac__format.html + ga12 + + + + const char *const + FLAC__SubframeTypeString + group__flac__format.html + ga13 + [] + + + const unsigned + FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN + group__flac__format.html + ga14 + + + + const unsigned + FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN + group__flac__format.html + ga15 + + + + const unsigned + FLAC__SUBFRAME_ZERO_PAD_LEN + group__flac__format.html + ga16 + + + + const unsigned + FLAC__SUBFRAME_TYPE_LEN + group__flac__format.html + ga17 + + + + const unsigned + FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN + group__flac__format.html + ga18 + + + + const unsigned + FLAC__SUBFRAME_TYPE_CONSTANT_BYTE_ALIGNED_MASK + group__flac__format.html + ga19 + + + + const unsigned + FLAC__SUBFRAME_TYPE_VERBATIM_BYTE_ALIGNED_MASK + group__flac__format.html + ga20 + + + + const unsigned + FLAC__SUBFRAME_TYPE_FIXED_BYTE_ALIGNED_MASK + group__flac__format.html + ga21 + + + + const unsigned + FLAC__SUBFRAME_TYPE_LPC_BYTE_ALIGNED_MASK + group__flac__format.html + ga22 + + + + const char *const + FLAC__ChannelAssignmentString + group__flac__format.html + ga23 + [] + + + const char *const + FLAC__FrameNumberTypeString + group__flac__format.html + ga24 + [] + + + const unsigned + FLAC__FRAME_HEADER_SYNC + group__flac__format.html + ga25 + + + + const unsigned + FLAC__FRAME_HEADER_SYNC_LEN + group__flac__format.html + ga26 + + + + const unsigned + FLAC__FRAME_HEADER_RESERVED_LEN + group__flac__format.html + ga27 + + + + const unsigned + FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN + group__flac__format.html + ga28 + + + + const unsigned + FLAC__FRAME_HEADER_BLOCK_SIZE_LEN + group__flac__format.html + ga29 + + + + const unsigned + FLAC__FRAME_HEADER_SAMPLE_RATE_LEN + group__flac__format.html + ga30 + + + + const unsigned + FLAC__FRAME_HEADER_CHANNEL_ASSIGNMENT_LEN + group__flac__format.html + ga31 + + + + const unsigned + FLAC__FRAME_HEADER_BITS_PER_SAMPLE_LEN + group__flac__format.html + ga32 + + + + const unsigned + FLAC__FRAME_HEADER_ZERO_PAD_LEN + group__flac__format.html + ga33 + + + + const unsigned + FLAC__FRAME_HEADER_CRC_LEN + group__flac__format.html + ga34 + + + + const unsigned + FLAC__FRAME_FOOTER_CRC_LEN + group__flac__format.html + ga35 + + + + const char *const + FLAC__MetadataTypeString + group__flac__format.html + ga36 + [] + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN + group__flac__format.html + ga37 + + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN + group__flac__format.html + ga38 + + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN + group__flac__format.html + ga39 + + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN + group__flac__format.html + ga40 + + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN + group__flac__format.html + ga41 + + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN + group__flac__format.html + ga42 + + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN + group__flac__format.html + ga43 + + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN + group__flac__format.html + ga44 + + + + const unsigned + FLAC__STREAM_METADATA_STREAMINFO_MD5SUM_LEN + group__flac__format.html + ga45 + + + + const unsigned + FLAC__STREAM_METADATA_APPLICATION_ID_LEN + group__flac__format.html + ga46 + + + + const unsigned + FLAC__STREAM_METADATA_SEEKPOINT_SAMPLE_NUMBER_LEN + group__flac__format.html + ga47 + + + + const unsigned + FLAC__STREAM_METADATA_SEEKPOINT_STREAM_OFFSET_LEN + group__flac__format.html + ga48 + + + + const unsigned + FLAC__STREAM_METADATA_SEEKPOINT_FRAME_SAMPLES_LEN + group__flac__format.html + ga49 + + + + const FLAC__uint64 + FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER + group__flac__format.html + ga50 + + + + const unsigned + FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN + group__flac__format.html + ga51 + + + + const unsigned + FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN + group__flac__format.html + ga52 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN + group__flac__format.html + ga53 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN + group__flac__format.html + ga54 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN + group__flac__format.html + ga55 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN + group__flac__format.html + ga56 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN + group__flac__format.html + ga57 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN + group__flac__format.html + ga58 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN + group__flac__format.html + ga59 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN + group__flac__format.html + ga60 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN + group__flac__format.html + ga61 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN + group__flac__format.html + ga62 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN + group__flac__format.html + ga63 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN + group__flac__format.html + ga64 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN + group__flac__format.html + ga65 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN + group__flac__format.html + ga66 + + + + const unsigned + FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN + group__flac__format.html + ga67 + + + + const char *const + FLAC__StreamMetadata_Picture_TypeString + group__flac__format.html + ga68 + [] + + + const unsigned + FLAC__STREAM_METADATA_PICTURE_TYPE_LEN + group__flac__format.html + ga69 + + + + const unsigned + FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN + group__flac__format.html + ga70 + + + + const unsigned + FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN + group__flac__format.html + ga71 + + + + const unsigned + FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN + group__flac__format.html + ga72 + + + + const unsigned + FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN + group__flac__format.html + ga73 + + + + const unsigned + FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN + group__flac__format.html + ga74 + + + + const unsigned + FLAC__STREAM_METADATA_PICTURE_COLORS_LEN + group__flac__format.html + ga75 + + + + const unsigned + FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN + group__flac__format.html + ga76 + + + + const unsigned + FLAC__STREAM_METADATA_IS_LAST_LEN + group__flac__format.html + ga77 + + + + const unsigned + FLAC__STREAM_METADATA_TYPE_LEN + group__flac__format.html + ga78 + + + + const unsigned + FLAC__STREAM_METADATA_LENGTH_LEN + group__flac__format.html + ga79 + + + + + flac_metadata + FLAC/metadata.h: metadata interfaces + group__flac__metadata.html + flac_metadata_level0 + flac_metadata_level1 + flac_metadata_level2 + flac_metadata_object + + + flac_metadata_level0 + FLAC/metadata.h: metadata level 0 interface + group__flac__metadata__level0.html + + FLAC__bool + FLAC__metadata_get_streaminfo + group__flac__metadata__level0.html + ga0 + (const char *filename, FLAC__StreamMetadata *streaminfo) + + + FLAC__bool + FLAC__metadata_get_tags + group__flac__metadata__level0.html + ga1 + (const char *filename, FLAC__StreamMetadata **tags) + + + FLAC__bool + FLAC__metadata_get_cuesheet + group__flac__metadata__level0.html + ga2 + (const char *filename, FLAC__StreamMetadata **cuesheet) + + + FLAC__bool + FLAC__metadata_get_picture + group__flac__metadata__level0.html + ga3 + (const char *filename, FLAC__StreamMetadata **picture, FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors) + + + + flac_metadata_level1 + FLAC/metadata.h: metadata level 1 interface + group__flac__metadata__level1.html + + FLAC__Metadata_SimpleIterator + FLAC__Metadata_SimpleIterator + group__flac__metadata__level1.html + ga0 + + + + FLAC__Metadata_SimpleIteratorStatus + ga18 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK + gga18a5 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT + gga18a6 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE + gga18a7 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE + gga18a8 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_WRITABLE + gga18a9 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_BAD_METADATA + gga18a10 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR + gga18a11 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR + gga18a12 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR + gga18a13 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_RENAME_ERROR + gga18a14 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_UNLINK_ERROR + gga18a15 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR + gga18a16 + + + + FLAC__METADATA_SIMPLE_ITERATOR_STATUS_INTERNAL_ERROR + gga18a17 + + + + FLAC__Metadata_SimpleIterator * + FLAC__metadata_simple_iterator_new + group__flac__metadata__level1.html + ga2 + (void) + + + void + FLAC__metadata_simple_iterator_delete + group__flac__metadata__level1.html + ga3 + (FLAC__Metadata_SimpleIterator *iterator) + + + FLAC__Metadata_SimpleIteratorStatus + FLAC__metadata_simple_iterator_status + group__flac__metadata__level1.html + ga4 + (FLAC__Metadata_SimpleIterator *iterator) + + + FLAC__bool + FLAC__metadata_simple_iterator_init + group__flac__metadata__level1.html + ga5 + (FLAC__Metadata_SimpleIterator *iterator, const char *filename, FLAC__bool read_only, FLAC__bool preserve_file_stats) + + + FLAC__bool + FLAC__metadata_simple_iterator_is_writable + group__flac__metadata__level1.html + ga6 + (const FLAC__Metadata_SimpleIterator *iterator) + + + FLAC__bool + FLAC__metadata_simple_iterator_next + group__flac__metadata__level1.html + ga7 + (FLAC__Metadata_SimpleIterator *iterator) + + + FLAC__bool + FLAC__metadata_simple_iterator_prev + group__flac__metadata__level1.html + ga8 + (FLAC__Metadata_SimpleIterator *iterator) + + + FLAC__bool + FLAC__metadata_simple_iterator_is_last + group__flac__metadata__level1.html + ga9 + (const FLAC__Metadata_SimpleIterator *iterator) + + + off_t + FLAC__metadata_simple_iterator_get_block_offset + group__flac__metadata__level1.html + ga10 + (const FLAC__Metadata_SimpleIterator *iterator) + + + FLAC__MetadataType + FLAC__metadata_simple_iterator_get_block_type + group__flac__metadata__level1.html + ga11 + (const FLAC__Metadata_SimpleIterator *iterator) + + + unsigned + FLAC__metadata_simple_iterator_get_block_length + group__flac__metadata__level1.html + ga12 + (const FLAC__Metadata_SimpleIterator *iterator) + + + FLAC__bool + FLAC__metadata_simple_iterator_get_application_id + group__flac__metadata__level1.html + ga13 + (FLAC__Metadata_SimpleIterator *iterator, FLAC__byte *id) + + + FLAC__StreamMetadata * + FLAC__metadata_simple_iterator_get_block + group__flac__metadata__level1.html + ga14 + (FLAC__Metadata_SimpleIterator *iterator) + + + FLAC__bool + FLAC__metadata_simple_iterator_set_block + group__flac__metadata__level1.html + ga15 + (FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding) + + + FLAC__bool + FLAC__metadata_simple_iterator_insert_block_after + group__flac__metadata__level1.html + ga16 + (FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding) + + + FLAC__bool + FLAC__metadata_simple_iterator_delete_block + group__flac__metadata__level1.html + ga17 + (FLAC__Metadata_SimpleIterator *iterator, FLAC__bool use_padding) + + + const char *const + FLAC__Metadata_SimpleIteratorStatusString + group__flac__metadata__level1.html + ga1 + [] + + + + flac_metadata_level2 + FLAC/metadata.h: metadata level 2 interface + group__flac__metadata__level2.html + + FLAC__Metadata_Chain + FLAC__Metadata_Chain + group__flac__metadata__level2.html + ga0 + + + + FLAC__Metadata_Iterator + FLAC__Metadata_Iterator + group__flac__metadata__level2.html + ga1 + + + + FLAC__Metadata_ChainStatus + ga27 + + + + FLAC__METADATA_CHAIN_STATUS_OK + gga27a18 + + + + FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT + gga27a19 + + + + FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE + gga27a20 + + + + FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE + gga27a21 + + + + FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE + gga27a22 + + + + FLAC__METADATA_CHAIN_STATUS_BAD_METADATA + gga27a23 + + + + FLAC__METADATA_CHAIN_STATUS_READ_ERROR + gga27a24 + + + + FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR + gga27a25 + + + + FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR + gga27a26 + + + + FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR + gga27a27 + + + + FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR + gga27a28 + + + + FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR + gga27a29 + + + + FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR + gga27a30 + + + + FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS + gga27a31 + + + + FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH + gga27a32 + + + + FLAC__METADATA_CHAIN_STATUS_WRONG_WRITE_CALL + gga27a33 + + + + FLAC__Metadata_Chain * + FLAC__metadata_chain_new + group__flac__metadata__level2.html + ga3 + (void) + + + void + FLAC__metadata_chain_delete + group__flac__metadata__level2.html + ga4 + (FLAC__Metadata_Chain *chain) + + + FLAC__Metadata_ChainStatus + FLAC__metadata_chain_status + group__flac__metadata__level2.html + ga5 + (FLAC__Metadata_Chain *chain) + + + FLAC__bool + FLAC__metadata_chain_read + group__flac__metadata__level2.html + ga6 + (FLAC__Metadata_Chain *chain, const char *filename) + + + FLAC__bool + FLAC__metadata_chain_read_ogg + group__flac__metadata__level2.html + ga7 + (FLAC__Metadata_Chain *chain, const char *filename) + + + FLAC__bool + FLAC__metadata_chain_read_with_callbacks + group__flac__metadata__level2.html + ga8 + (FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks) + + + FLAC__bool + FLAC__metadata_chain_read_ogg_with_callbacks + group__flac__metadata__level2.html + ga9 + (FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks) + + + FLAC__bool + FLAC__metadata_chain_check_if_tempfile_needed + group__flac__metadata__level2.html + ga10 + (FLAC__Metadata_Chain *chain, FLAC__bool use_padding) + + + FLAC__bool + FLAC__metadata_chain_write + group__flac__metadata__level2.html + ga11 + (FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__bool preserve_file_stats) + + + FLAC__bool + FLAC__metadata_chain_write_with_callbacks + group__flac__metadata__level2.html + ga12 + (FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks) + + + FLAC__bool + FLAC__metadata_chain_write_with_callbacks_and_tempfile + group__flac__metadata__level2.html + ga13 + (FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks, FLAC__IOHandle temp_handle, FLAC__IOCallbacks temp_callbacks) + + + void + FLAC__metadata_chain_merge_padding + group__flac__metadata__level2.html + ga14 + (FLAC__Metadata_Chain *chain) + + + void + FLAC__metadata_chain_sort_padding + group__flac__metadata__level2.html + ga15 + (FLAC__Metadata_Chain *chain) + + + FLAC__Metadata_Iterator * + FLAC__metadata_iterator_new + group__flac__metadata__level2.html + ga16 + (void) + + + void + FLAC__metadata_iterator_delete + group__flac__metadata__level2.html + ga17 + (FLAC__Metadata_Iterator *iterator) + + + void + FLAC__metadata_iterator_init + group__flac__metadata__level2.html + ga18 + (FLAC__Metadata_Iterator *iterator, FLAC__Metadata_Chain *chain) + + + FLAC__bool + FLAC__metadata_iterator_next + group__flac__metadata__level2.html + ga19 + (FLAC__Metadata_Iterator *iterator) + + + FLAC__bool + FLAC__metadata_iterator_prev + group__flac__metadata__level2.html + ga20 + (FLAC__Metadata_Iterator *iterator) + + + FLAC__MetadataType + FLAC__metadata_iterator_get_block_type + group__flac__metadata__level2.html + ga21 + (const FLAC__Metadata_Iterator *iterator) + + + FLAC__StreamMetadata * + FLAC__metadata_iterator_get_block + group__flac__metadata__level2.html + ga22 + (FLAC__Metadata_Iterator *iterator) + + + FLAC__bool + FLAC__metadata_iterator_set_block + group__flac__metadata__level2.html + ga23 + (FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block) + + + FLAC__bool + FLAC__metadata_iterator_delete_block + group__flac__metadata__level2.html + ga24 + (FLAC__Metadata_Iterator *iterator, FLAC__bool replace_with_padding) + + + FLAC__bool + FLAC__metadata_iterator_insert_block_before + group__flac__metadata__level2.html + ga25 + (FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block) + + + FLAC__bool + FLAC__metadata_iterator_insert_block_after + group__flac__metadata__level2.html + ga26 + (FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block) + + + const char *const + FLAC__Metadata_ChainStatusString + group__flac__metadata__level2.html + ga2 + [] + + + + flac_metadata_object + FLAC/metadata.h: metadata object methods + group__flac__metadata__object.html + + FLAC__StreamMetadata * + FLAC__metadata_object_new + group__flac__metadata__object.html + ga0 + (FLAC__MetadataType type) + + + FLAC__StreamMetadata * + FLAC__metadata_object_clone + group__flac__metadata__object.html + ga1 + (const FLAC__StreamMetadata *object) + + + void + FLAC__metadata_object_delete + group__flac__metadata__object.html + ga2 + (FLAC__StreamMetadata *object) + + + FLAC__bool + FLAC__metadata_object_is_equal + group__flac__metadata__object.html + ga3 + (const FLAC__StreamMetadata *block1, const FLAC__StreamMetadata *block2) + + + FLAC__bool + FLAC__metadata_object_application_set_data + group__flac__metadata__object.html + ga4 + (FLAC__StreamMetadata *object, FLAC__byte *data, unsigned length, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_seektable_resize_points + group__flac__metadata__object.html + ga5 + (FLAC__StreamMetadata *object, unsigned new_num_points) + + + void + FLAC__metadata_object_seektable_set_point + group__flac__metadata__object.html + ga6 + (FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point) + + + FLAC__bool + FLAC__metadata_object_seektable_insert_point + group__flac__metadata__object.html + ga7 + (FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point) + + + FLAC__bool + FLAC__metadata_object_seektable_delete_point + group__flac__metadata__object.html + ga8 + (FLAC__StreamMetadata *object, unsigned point_num) + + + FLAC__bool + FLAC__metadata_object_seektable_is_legal + group__flac__metadata__object.html + ga9 + (const FLAC__StreamMetadata *object) + + + FLAC__bool + FLAC__metadata_object_seektable_template_append_placeholders + group__flac__metadata__object.html + ga10 + (FLAC__StreamMetadata *object, unsigned num) + + + FLAC__bool + FLAC__metadata_object_seektable_template_append_point + group__flac__metadata__object.html + ga11 + (FLAC__StreamMetadata *object, FLAC__uint64 sample_number) + + + FLAC__bool + FLAC__metadata_object_seektable_template_append_points + group__flac__metadata__object.html + ga12 + (FLAC__StreamMetadata *object, FLAC__uint64 sample_numbers[], unsigned num) + + + FLAC__bool + FLAC__metadata_object_seektable_template_append_spaced_points + group__flac__metadata__object.html + ga13 + (FLAC__StreamMetadata *object, unsigned num, FLAC__uint64 total_samples) + + + FLAC__bool + FLAC__metadata_object_seektable_template_append_spaced_points_by_samples + group__flac__metadata__object.html + ga14 + (FLAC__StreamMetadata *object, unsigned samples, FLAC__uint64 total_samples) + + + FLAC__bool + FLAC__metadata_object_seektable_template_sort + group__flac__metadata__object.html + ga15 + (FLAC__StreamMetadata *object, FLAC__bool compact) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_set_vendor_string + group__flac__metadata__object.html + ga16 + (FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_resize_comments + group__flac__metadata__object.html + ga17 + (FLAC__StreamMetadata *object, unsigned new_num_comments) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_set_comment + group__flac__metadata__object.html + ga18 + (FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_insert_comment + group__flac__metadata__object.html + ga19 + (FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_append_comment + group__flac__metadata__object.html + ga20 + (FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_replace_comment + group__flac__metadata__object.html + ga21 + (FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool all, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_delete_comment + group__flac__metadata__object.html + ga22 + (FLAC__StreamMetadata *object, unsigned comment_num) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair + group__flac__metadata__object.html + ga23 + (FLAC__StreamMetadata_VorbisComment_Entry *entry, const char *field_name, const char *field_value) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_entry_to_name_value_pair + group__flac__metadata__object.html + ga24 + (const FLAC__StreamMetadata_VorbisComment_Entry entry, char **field_name, char **field_value) + + + FLAC__bool + FLAC__metadata_object_vorbiscomment_entry_matches + group__flac__metadata__object.html + ga25 + (const FLAC__StreamMetadata_VorbisComment_Entry entry, const char *field_name, unsigned field_name_length) + + + int + FLAC__metadata_object_vorbiscomment_find_entry_from + group__flac__metadata__object.html + ga26 + (const FLAC__StreamMetadata *object, unsigned offset, const char *field_name) + + + int + FLAC__metadata_object_vorbiscomment_remove_entry_matching + group__flac__metadata__object.html + ga27 + (FLAC__StreamMetadata *object, const char *field_name) + + + int + FLAC__metadata_object_vorbiscomment_remove_entries_matching + group__flac__metadata__object.html + ga28 + (FLAC__StreamMetadata *object, const char *field_name) + + + FLAC__StreamMetadata_CueSheet_Track * + FLAC__metadata_object_cuesheet_track_new + group__flac__metadata__object.html + ga29 + (void) + + + FLAC__StreamMetadata_CueSheet_Track * + FLAC__metadata_object_cuesheet_track_clone + group__flac__metadata__object.html + ga30 + (const FLAC__StreamMetadata_CueSheet_Track *object) + + + void + FLAC__metadata_object_cuesheet_track_delete + group__flac__metadata__object.html + ga31 + (FLAC__StreamMetadata_CueSheet_Track *object) + + + FLAC__bool + FLAC__metadata_object_cuesheet_track_resize_indices + group__flac__metadata__object.html + ga32 + (FLAC__StreamMetadata *object, unsigned track_num, unsigned new_num_indices) + + + FLAC__bool + FLAC__metadata_object_cuesheet_track_insert_index + group__flac__metadata__object.html + ga33 + (FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num, FLAC__StreamMetadata_CueSheet_Index index) + + + FLAC__bool + FLAC__metadata_object_cuesheet_track_insert_blank_index + group__flac__metadata__object.html + ga34 + (FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num) + + + FLAC__bool + FLAC__metadata_object_cuesheet_track_delete_index + group__flac__metadata__object.html + ga35 + (FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num) + + + FLAC__bool + FLAC__metadata_object_cuesheet_resize_tracks + group__flac__metadata__object.html + ga36 + (FLAC__StreamMetadata *object, unsigned new_num_tracks) + + + FLAC__bool + FLAC__metadata_object_cuesheet_insert_track + group__flac__metadata__object.html + ga37 + (FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_cuesheet_insert_blank_track + group__flac__metadata__object.html + ga38 + (FLAC__StreamMetadata *object, unsigned track_num) + + + FLAC__bool + FLAC__metadata_object_cuesheet_delete_track + group__flac__metadata__object.html + ga39 + (FLAC__StreamMetadata *object, unsigned track_num) + + + FLAC__bool + FLAC__metadata_object_cuesheet_is_legal + group__flac__metadata__object.html + ga40 + (const FLAC__StreamMetadata *object, FLAC__bool check_cd_da_subset, const char **violation) + + + FLAC__uint32 + FLAC__metadata_object_cuesheet_calculate_cddb_id + group__flac__metadata__object.html + ga41 + (const FLAC__StreamMetadata *object) + + + FLAC__bool + FLAC__metadata_object_picture_set_mime_type + group__flac__metadata__object.html + ga42 + (FLAC__StreamMetadata *object, char *mime_type, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_picture_set_description + group__flac__metadata__object.html + ga43 + (FLAC__StreamMetadata *object, FLAC__byte *description, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_picture_set_data + group__flac__metadata__object.html + ga44 + (FLAC__StreamMetadata *object, FLAC__byte *data, FLAC__uint32 length, FLAC__bool copy) + + + FLAC__bool + FLAC__metadata_object_picture_is_legal + group__flac__metadata__object.html + ga45 + (const FLAC__StreamMetadata *object, const char **violation) + + + + flac_decoder + FLAC/_decoder.h: decoder interfaces + group__flac__decoder.html + flac_stream_decoder + + + flac_stream_decoder + FLAC/stream_decoder.h: stream decoder interface + group__flac__stream__decoder.html + FLAC__StreamDecoder + + FLAC__StreamDecoderReadStatus(* + FLAC__StreamDecoderReadCallback + group__flac__stream__decoder.html + ga8 + )(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data) + + + FLAC__StreamDecoderSeekStatus(* + FLAC__StreamDecoderSeekCallback + group__flac__stream__decoder.html + ga9 + )(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) + + + FLAC__StreamDecoderTellStatus(* + FLAC__StreamDecoderTellCallback + group__flac__stream__decoder.html + ga10 + )(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) + + + FLAC__StreamDecoderLengthStatus(* + FLAC__StreamDecoderLengthCallback + group__flac__stream__decoder.html + ga11 + )(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) + + + FLAC__bool(* + FLAC__StreamDecoderEofCallback + group__flac__stream__decoder.html + ga12 + )(const FLAC__StreamDecoder *decoder, void *client_data) + + + FLAC__StreamDecoderWriteStatus(* + FLAC__StreamDecoderWriteCallback + group__flac__stream__decoder.html + ga13 + )(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data) + + + void(* + FLAC__StreamDecoderMetadataCallback + group__flac__stream__decoder.html + ga14 + )(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) + + + void(* + FLAC__StreamDecoderErrorCallback + group__flac__stream__decoder.html + ga15 + )(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) + + + FLAC__StreamDecoderState + ga50 + + + + FLAC__STREAM_DECODER_SEARCH_FOR_METADATA + gga50a16 + + + + FLAC__STREAM_DECODER_READ_METADATA + gga50a17 + + + + FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC + gga50a18 + + + + FLAC__STREAM_DECODER_READ_FRAME + gga50a19 + + + + FLAC__STREAM_DECODER_END_OF_STREAM + gga50a20 + + + + FLAC__STREAM_DECODER_OGG_ERROR + gga50a21 + + + + FLAC__STREAM_DECODER_SEEK_ERROR + gga50a22 + + + + FLAC__STREAM_DECODER_ABORTED + gga50a23 + + + + FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR + gga50a24 + + + + FLAC__STREAM_DECODER_UNINITIALIZED + gga50a25 + + + + FLAC__StreamDecoderInitStatus + ga51 + + + + FLAC__STREAM_DECODER_INIT_STATUS_OK + gga51a26 + + + + FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER + gga51a27 + + + + FLAC__STREAM_DECODER_INIT_STATUS_INVALID_CALLBACKS + gga51a28 + + + + FLAC__STREAM_DECODER_INIT_STATUS_MEMORY_ALLOCATION_ERROR + gga51a29 + + + + FLAC__STREAM_DECODER_INIT_STATUS_ERROR_OPENING_FILE + gga51a30 + + + + FLAC__STREAM_DECODER_INIT_STATUS_ALREADY_INITIALIZED + gga51a31 + + + + FLAC__StreamDecoderReadStatus + ga52 + + + + FLAC__STREAM_DECODER_READ_STATUS_CONTINUE + gga52a32 + + + + FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM + gga52a33 + + + + FLAC__STREAM_DECODER_READ_STATUS_ABORT + gga52a34 + + + + FLAC__StreamDecoderSeekStatus + ga53 + + + + FLAC__STREAM_DECODER_SEEK_STATUS_OK + gga53a35 + + + + FLAC__STREAM_DECODER_SEEK_STATUS_ERROR + gga53a36 + + + + FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED + gga53a37 + + + + FLAC__StreamDecoderTellStatus + ga54 + + + + FLAC__STREAM_DECODER_TELL_STATUS_OK + gga54a38 + + + + FLAC__STREAM_DECODER_TELL_STATUS_ERROR + gga54a39 + + + + FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED + gga54a40 + + + + FLAC__StreamDecoderLengthStatus + ga55 + + + + FLAC__STREAM_DECODER_LENGTH_STATUS_OK + gga55a41 + + + + FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR + gga55a42 + + + + FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED + gga55a43 + + + + FLAC__StreamDecoderWriteStatus + ga56 + + + + FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE + gga56a44 + + + + FLAC__STREAM_DECODER_WRITE_STATUS_ABORT + gga56a45 + + + + FLAC__StreamDecoderErrorStatus + ga57 + + + + FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC + gga57a46 + + + + FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER + gga57a47 + + + + FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH + gga57a48 + + + + FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM + gga57a49 + + + + FLAC__StreamDecoder * + FLAC__stream_decoder_new + group__flac__stream__decoder.html + ga16 + (void) + + + void + FLAC__stream_decoder_delete + group__flac__stream__decoder.html + ga17 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_set_ogg_serial_number + group__flac__stream__decoder.html + ga18 + (FLAC__StreamDecoder *decoder, long serial_number) + + + FLAC__bool + FLAC__stream_decoder_set_md5_checking + group__flac__stream__decoder.html + ga19 + (FLAC__StreamDecoder *decoder, FLAC__bool value) + + + FLAC__bool + FLAC__stream_decoder_set_metadata_respond + group__flac__stream__decoder.html + ga20 + (FLAC__StreamDecoder *decoder, FLAC__MetadataType type) + + + FLAC__bool + FLAC__stream_decoder_set_metadata_respond_application + group__flac__stream__decoder.html + ga21 + (FLAC__StreamDecoder *decoder, const FLAC__byte id[4]) + + + FLAC__bool + FLAC__stream_decoder_set_metadata_respond_all + group__flac__stream__decoder.html + ga22 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_set_metadata_ignore + group__flac__stream__decoder.html + ga23 + (FLAC__StreamDecoder *decoder, FLAC__MetadataType type) + + + FLAC__bool + FLAC__stream_decoder_set_metadata_ignore_application + group__flac__stream__decoder.html + ga24 + (FLAC__StreamDecoder *decoder, const FLAC__byte id[4]) + + + FLAC__bool + FLAC__stream_decoder_set_metadata_ignore_all + group__flac__stream__decoder.html + ga25 + (FLAC__StreamDecoder *decoder) + + + FLAC__StreamDecoderState + FLAC__stream_decoder_get_state + group__flac__stream__decoder.html + ga26 + (const FLAC__StreamDecoder *decoder) + + + const char * + FLAC__stream_decoder_get_resolved_state_string + group__flac__stream__decoder.html + ga27 + (const FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_get_md5_checking + group__flac__stream__decoder.html + ga28 + (const FLAC__StreamDecoder *decoder) + + + FLAC__uint64 + FLAC__stream_decoder_get_total_samples + group__flac__stream__decoder.html + ga29 + (const FLAC__StreamDecoder *decoder) + + + unsigned + FLAC__stream_decoder_get_channels + group__flac__stream__decoder.html + ga30 + (const FLAC__StreamDecoder *decoder) + + + FLAC__ChannelAssignment + FLAC__stream_decoder_get_channel_assignment + group__flac__stream__decoder.html + ga31 + (const FLAC__StreamDecoder *decoder) + + + unsigned + FLAC__stream_decoder_get_bits_per_sample + group__flac__stream__decoder.html + ga32 + (const FLAC__StreamDecoder *decoder) + + + unsigned + FLAC__stream_decoder_get_sample_rate + group__flac__stream__decoder.html + ga33 + (const FLAC__StreamDecoder *decoder) + + + unsigned + FLAC__stream_decoder_get_blocksize + group__flac__stream__decoder.html + ga34 + (const FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_get_decode_position + group__flac__stream__decoder.html + ga35 + (const FLAC__StreamDecoder *decoder, FLAC__uint64 *position) + + + FLAC__StreamDecoderInitStatus + FLAC__stream_decoder_init_stream + group__flac__stream__decoder.html + ga36 + (FLAC__StreamDecoder *decoder, FLAC__StreamDecoderReadCallback read_callback, FLAC__StreamDecoderSeekCallback seek_callback, FLAC__StreamDecoderTellCallback tell_callback, FLAC__StreamDecoderLengthCallback length_callback, FLAC__StreamDecoderEofCallback eof_callback, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data) + + + FLAC__StreamDecoderInitStatus + FLAC__stream_decoder_init_ogg_stream + group__flac__stream__decoder.html + ga37 + (FLAC__StreamDecoder *decoder, FLAC__StreamDecoderReadCallback read_callback, FLAC__StreamDecoderSeekCallback seek_callback, FLAC__StreamDecoderTellCallback tell_callback, FLAC__StreamDecoderLengthCallback length_callback, FLAC__StreamDecoderEofCallback eof_callback, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data) + + + FLAC__StreamDecoderInitStatus + FLAC__stream_decoder_init_FILE + group__flac__stream__decoder.html + ga38 + (FLAC__StreamDecoder *decoder, FILE *file, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data) + + + FLAC__StreamDecoderInitStatus + FLAC__stream_decoder_init_ogg_FILE + group__flac__stream__decoder.html + ga39 + (FLAC__StreamDecoder *decoder, FILE *file, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data) + + + FLAC__StreamDecoderInitStatus + FLAC__stream_decoder_init_file + group__flac__stream__decoder.html + ga40 + (FLAC__StreamDecoder *decoder, const char *filename, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data) + + + FLAC__StreamDecoderInitStatus + FLAC__stream_decoder_init_ogg_file + group__flac__stream__decoder.html + ga41 + (FLAC__StreamDecoder *decoder, const char *filename, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data) + + + FLAC__bool + FLAC__stream_decoder_finish + group__flac__stream__decoder.html + ga42 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_flush + group__flac__stream__decoder.html + ga43 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_reset + group__flac__stream__decoder.html + ga44 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_process_single + group__flac__stream__decoder.html + ga45 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_process_until_end_of_metadata + group__flac__stream__decoder.html + ga46 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_process_until_end_of_stream + group__flac__stream__decoder.html + ga47 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_skip_single_frame + group__flac__stream__decoder.html + ga48 + (FLAC__StreamDecoder *decoder) + + + FLAC__bool + FLAC__stream_decoder_seek_absolute + group__flac__stream__decoder.html + ga49 + (FLAC__StreamDecoder *decoder, FLAC__uint64 sample) + + + const char *const + FLAC__StreamDecoderStateString + group__flac__stream__decoder.html + ga0 + [] + + + const char *const + FLAC__StreamDecoderInitStatusString + group__flac__stream__decoder.html + ga1 + [] + + + const char *const + FLAC__StreamDecoderReadStatusString + group__flac__stream__decoder.html + ga2 + [] + + + const char *const + FLAC__StreamDecoderSeekStatusString + group__flac__stream__decoder.html + ga3 + [] + + + const char *const + FLAC__StreamDecoderTellStatusString + group__flac__stream__decoder.html + ga4 + [] + + + const char *const + FLAC__StreamDecoderLengthStatusString + group__flac__stream__decoder.html + ga5 + [] + + + const char *const + FLAC__StreamDecoderWriteStatusString + group__flac__stream__decoder.html + ga6 + [] + + + const char *const + FLAC__StreamDecoderErrorStatusString + group__flac__stream__decoder.html + ga7 + [] + + + + flac_encoder + FLAC/_encoder.h: encoder interfaces + group__flac__encoder.html + flac_stream_encoder + + + flac_stream_encoder + FLAC/stream_encoder.h: stream encoder interface + group__flac__stream__encoder.html + FLAC__StreamEncoder + + FLAC__StreamEncoderReadStatus(* + FLAC__StreamEncoderReadCallback + group__flac__stream__encoder.html + ga6 + )(const FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data) + + + FLAC__StreamEncoderWriteStatus(* + FLAC__StreamEncoderWriteCallback + group__flac__stream__encoder.html + ga7 + )(const FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, void *client_data) + + + FLAC__StreamEncoderSeekStatus(* + FLAC__StreamEncoderSeekCallback + group__flac__stream__encoder.html + ga8 + )(const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data) + + + FLAC__StreamEncoderTellStatus(* + FLAC__StreamEncoderTellCallback + group__flac__stream__encoder.html + ga9 + )(const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data) + + + void(* + FLAC__StreamEncoderMetadataCallback + group__flac__stream__encoder.html + ga10 + )(const FLAC__StreamEncoder *encoder, const FLAC__StreamMetadata *metadata, void *client_data) + + + void(* + FLAC__StreamEncoderProgressCallback + group__flac__stream__encoder.html + ga11 + )(const FLAC__StreamEncoder *encoder, FLAC__uint64 bytes_written, FLAC__uint64 samples_written, unsigned frames_written, unsigned total_frames_estimate, void *client_data) + + + FLAC__StreamEncoderState + ga65 + + + + FLAC__STREAM_ENCODER_OK + gga65a12 + + + + FLAC__STREAM_ENCODER_UNINITIALIZED + gga65a13 + + + + FLAC__STREAM_ENCODER_OGG_ERROR + gga65a14 + + + + FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR + gga65a15 + + + + FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA + gga65a16 + + + + FLAC__STREAM_ENCODER_CLIENT_ERROR + gga65a17 + + + + FLAC__STREAM_ENCODER_IO_ERROR + gga65a18 + + + + FLAC__STREAM_ENCODER_FRAMING_ERROR + gga65a19 + + + + FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR + gga65a20 + + + + FLAC__StreamEncoderInitStatus + ga66 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_OK + gga66a21 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR + gga66a22 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_UNSUPPORTED_CONTAINER + gga66a23 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_CALLBACKS + gga66a24 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_NUMBER_OF_CHANNELS + gga66a25 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BITS_PER_SAMPLE + gga66a26 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_SAMPLE_RATE + gga66a27 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BLOCK_SIZE + gga66a28 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_MAX_LPC_ORDER + gga66a29 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_QLP_COEFF_PRECISION + gga66a30 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_BLOCK_SIZE_TOO_SMALL_FOR_LPC_ORDER + gga66a31 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_NOT_STREAMABLE + gga66a32 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA + gga66a33 + + + + FLAC__STREAM_ENCODER_INIT_STATUS_ALREADY_INITIALIZED + gga66a34 + + + + FLAC__StreamEncoderReadStatus + ga67 + + + + FLAC__STREAM_ENCODER_READ_STATUS_CONTINUE + gga67a35 + + + + FLAC__STREAM_ENCODER_READ_STATUS_END_OF_STREAM + gga67a36 + + + + FLAC__STREAM_ENCODER_READ_STATUS_ABORT + gga67a37 + + + + FLAC__STREAM_ENCODER_READ_STATUS_UNSUPPORTED + gga67a38 + + + + FLAC__StreamEncoderWriteStatus + ga68 + + + + FLAC__STREAM_ENCODER_WRITE_STATUS_OK + gga68a39 + + + + FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR + gga68a40 + + + + FLAC__StreamEncoderSeekStatus + ga69 + + + + FLAC__STREAM_ENCODER_SEEK_STATUS_OK + gga69a41 + + + + FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR + gga69a42 + + + + FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED + gga69a43 + + + + FLAC__StreamEncoderTellStatus + ga70 + + + + FLAC__STREAM_ENCODER_TELL_STATUS_OK + gga70a44 + + + + FLAC__STREAM_ENCODER_TELL_STATUS_ERROR + gga70a45 + + + + FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED + gga70a46 + + + + FLAC__StreamEncoder * + FLAC__stream_encoder_new + group__flac__stream__encoder.html + ga12 + (void) + + + void + FLAC__stream_encoder_delete + group__flac__stream__encoder.html + ga13 + (FLAC__StreamEncoder *encoder) + + + FLAC__bool + FLAC__stream_encoder_set_ogg_serial_number + group__flac__stream__encoder.html + ga14 + (FLAC__StreamEncoder *encoder, long serial_number) + + + FLAC__bool + FLAC__stream_encoder_set_verify + group__flac__stream__encoder.html + ga15 + (FLAC__StreamEncoder *encoder, FLAC__bool value) + + + FLAC__bool + FLAC__stream_encoder_set_streamable_subset + group__flac__stream__encoder.html + ga16 + (FLAC__StreamEncoder *encoder, FLAC__bool value) + + + FLAC__bool + FLAC__stream_encoder_set_channels + group__flac__stream__encoder.html + ga17 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_bits_per_sample + group__flac__stream__encoder.html + ga18 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_sample_rate + group__flac__stream__encoder.html + ga19 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_compression_level + group__flac__stream__encoder.html + ga20 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_blocksize + group__flac__stream__encoder.html + ga21 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_do_mid_side_stereo + group__flac__stream__encoder.html + ga22 + (FLAC__StreamEncoder *encoder, FLAC__bool value) + + + FLAC__bool + FLAC__stream_encoder_set_loose_mid_side_stereo + group__flac__stream__encoder.html + ga23 + (FLAC__StreamEncoder *encoder, FLAC__bool value) + + + FLAC__bool + FLAC__stream_encoder_set_apodization + group__flac__stream__encoder.html + ga24 + (FLAC__StreamEncoder *encoder, const char *specification) + + + FLAC__bool + FLAC__stream_encoder_set_max_lpc_order + group__flac__stream__encoder.html + ga25 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_qlp_coeff_precision + group__flac__stream__encoder.html + ga26 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_do_qlp_coeff_prec_search + group__flac__stream__encoder.html + ga27 + (FLAC__StreamEncoder *encoder, FLAC__bool value) + + + FLAC__bool + FLAC__stream_encoder_set_do_escape_coding + group__flac__stream__encoder.html + ga28 + (FLAC__StreamEncoder *encoder, FLAC__bool value) + + + FLAC__bool + FLAC__stream_encoder_set_do_exhaustive_model_search + group__flac__stream__encoder.html + ga29 + (FLAC__StreamEncoder *encoder, FLAC__bool value) + + + FLAC__bool + FLAC__stream_encoder_set_min_residual_partition_order + group__flac__stream__encoder.html + ga30 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_max_residual_partition_order + group__flac__stream__encoder.html + ga31 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_rice_parameter_search_dist + group__flac__stream__encoder.html + ga32 + (FLAC__StreamEncoder *encoder, unsigned value) + + + FLAC__bool + FLAC__stream_encoder_set_total_samples_estimate + group__flac__stream__encoder.html + ga33 + (FLAC__StreamEncoder *encoder, FLAC__uint64 value) + + + FLAC__bool + FLAC__stream_encoder_set_metadata + group__flac__stream__encoder.html + ga34 + (FLAC__StreamEncoder *encoder, FLAC__StreamMetadata **metadata, unsigned num_blocks) + + + FLAC__StreamEncoderState + FLAC__stream_encoder_get_state + group__flac__stream__encoder.html + ga35 + (const FLAC__StreamEncoder *encoder) + + + FLAC__StreamDecoderState + FLAC__stream_encoder_get_verify_decoder_state + group__flac__stream__encoder.html + ga36 + (const FLAC__StreamEncoder *encoder) + + + const char * + FLAC__stream_encoder_get_resolved_state_string + group__flac__stream__encoder.html + ga37 + (const FLAC__StreamEncoder *encoder) + + + void + FLAC__stream_encoder_get_verify_decoder_error_stats + group__flac__stream__encoder.html + ga38 + (const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_sample, unsigned *frame_number, unsigned *channel, unsigned *sample, FLAC__int32 *expected, FLAC__int32 *got) + + + FLAC__bool + FLAC__stream_encoder_get_verify + group__flac__stream__encoder.html + ga39 + (const FLAC__StreamEncoder *encoder) + + + FLAC__bool + FLAC__stream_encoder_get_streamable_subset + group__flac__stream__encoder.html + ga40 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_channels + group__flac__stream__encoder.html + ga41 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_bits_per_sample + group__flac__stream__encoder.html + ga42 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_sample_rate + group__flac__stream__encoder.html + ga43 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_blocksize + group__flac__stream__encoder.html + ga44 + (const FLAC__StreamEncoder *encoder) + + + FLAC__bool + FLAC__stream_encoder_get_do_mid_side_stereo + group__flac__stream__encoder.html + ga45 + (const FLAC__StreamEncoder *encoder) + + + FLAC__bool + FLAC__stream_encoder_get_loose_mid_side_stereo + group__flac__stream__encoder.html + ga46 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_max_lpc_order + group__flac__stream__encoder.html + ga47 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_qlp_coeff_precision + group__flac__stream__encoder.html + ga48 + (const FLAC__StreamEncoder *encoder) + + + FLAC__bool + FLAC__stream_encoder_get_do_qlp_coeff_prec_search + group__flac__stream__encoder.html + ga49 + (const FLAC__StreamEncoder *encoder) + + + FLAC__bool + FLAC__stream_encoder_get_do_escape_coding + group__flac__stream__encoder.html + ga50 + (const FLAC__StreamEncoder *encoder) + + + FLAC__bool + FLAC__stream_encoder_get_do_exhaustive_model_search + group__flac__stream__encoder.html + ga51 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_min_residual_partition_order + group__flac__stream__encoder.html + ga52 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_max_residual_partition_order + group__flac__stream__encoder.html + ga53 + (const FLAC__StreamEncoder *encoder) + + + unsigned + FLAC__stream_encoder_get_rice_parameter_search_dist + group__flac__stream__encoder.html + ga54 + (const FLAC__StreamEncoder *encoder) + + + FLAC__uint64 + FLAC__stream_encoder_get_total_samples_estimate + group__flac__stream__encoder.html + ga55 + (const FLAC__StreamEncoder *encoder) + + + FLAC__StreamEncoderInitStatus + FLAC__stream_encoder_init_stream + group__flac__stream__encoder.html + ga56 + (FLAC__StreamEncoder *encoder, FLAC__StreamEncoderWriteCallback write_callback, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderTellCallback tell_callback, FLAC__StreamEncoderMetadataCallback metadata_callback, void *client_data) + + + FLAC__StreamEncoderInitStatus + FLAC__stream_encoder_init_ogg_stream + group__flac__stream__encoder.html + ga57 + (FLAC__StreamEncoder *encoder, FLAC__StreamEncoderReadCallback read_callback, FLAC__StreamEncoderWriteCallback write_callback, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderTellCallback tell_callback, FLAC__StreamEncoderMetadataCallback metadata_callback, void *client_data) + + + FLAC__StreamEncoderInitStatus + FLAC__stream_encoder_init_FILE + group__flac__stream__encoder.html + ga58 + (FLAC__StreamEncoder *encoder, FILE *file, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data) + + + FLAC__StreamEncoderInitStatus + FLAC__stream_encoder_init_ogg_FILE + group__flac__stream__encoder.html + ga59 + (FLAC__StreamEncoder *encoder, FILE *file, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data) + + + FLAC__StreamEncoderInitStatus + FLAC__stream_encoder_init_file + group__flac__stream__encoder.html + ga60 + (FLAC__StreamEncoder *encoder, const char *filename, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data) + + + FLAC__StreamEncoderInitStatus + FLAC__stream_encoder_init_ogg_file + group__flac__stream__encoder.html + ga61 + (FLAC__StreamEncoder *encoder, const char *filename, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data) + + + FLAC__bool + FLAC__stream_encoder_finish + group__flac__stream__encoder.html + ga62 + (FLAC__StreamEncoder *encoder) + + + FLAC__bool + FLAC__stream_encoder_process + group__flac__stream__encoder.html + ga63 + (FLAC__StreamEncoder *encoder, const FLAC__int32 *const buffer[], unsigned samples) + + + FLAC__bool + FLAC__stream_encoder_process_interleaved + group__flac__stream__encoder.html + ga64 + (FLAC__StreamEncoder *encoder, const FLAC__int32 buffer[], unsigned samples) + + + const char *const + FLAC__StreamEncoderStateString + group__flac__stream__encoder.html + ga0 + [] + + + const char *const + FLAC__StreamEncoderInitStatusString + group__flac__stream__encoder.html + ga1 + [] + + + const char *const + FLAC__StreamEncoderReadStatusString + group__flac__stream__encoder.html + ga2 + [] + + + const char *const + FLAC__StreamEncoderWriteStatusString + group__flac__stream__encoder.html + ga3 + [] + + + const char *const + FLAC__StreamEncoderSeekStatusString + group__flac__stream__encoder.html + ga4 + [] + + + const char *const + FLAC__StreamEncoderTellStatusString + group__flac__stream__encoder.html + ga5 + [] + + + + flacpp + FLAC C++ API + group__flacpp.html + flacpp_decoder + flacpp_encoder + flacpp_export + flacpp_metadata + + + flacpp_decoder + FLAC++/decoder.h: decoder classes + group__flacpp__decoder.html + FLAC::Decoder::Stream + FLAC::Decoder::File + + + flacpp_encoder + FLAC++/encoder.h: encoder classes + group__flacpp__encoder.html + FLAC::Encoder::Stream + FLAC::Encoder::File + + + flacpp_export + FLAC++/export.h: export symbols + group__flacpp__export.html + + #define + FLACPP_API + group__flacpp__export.html + ga0 + + + + #define + FLACPP_API_VERSION_CURRENT + group__flacpp__export.html + ga1 + + + + #define + FLACPP_API_VERSION_REVISION + group__flacpp__export.html + ga2 + + + + #define + FLACPP_API_VERSION_AGE + group__flacpp__export.html + ga3 + + + + + flacpp_metadata + FLAC++/metadata.h: metadata interfaces + group__flacpp__metadata.html + flacpp_metadata_object + flacpp_metadata_level0 + flacpp_metadata_level1 + flacpp_metadata_level2 + + + flacpp_metadata_object + FLAC++/metadata.h: metadata object classes + group__flacpp__metadata__object.html + FLAC::Metadata::Prototype + FLAC::Metadata::StreamInfo + FLAC::Metadata::Padding + FLAC::Metadata::Application + FLAC::Metadata::SeekTable + FLAC::Metadata::VorbisComment + FLAC::Metadata::CueSheet + FLAC::Metadata::Picture + FLAC::Metadata::Unknown + + Prototype * + clone + group__flacpp__metadata__object.html + ga0 + (const Prototype *) + + + bool + operator== + group__flacpp__metadata__object.html + ga1 + (const Prototype &) const + + + bool + operator== + group__flacpp__metadata__object.html + ga2 + (const ::FLAC__StreamMetadata &) const + + + bool + operator== + group__flacpp__metadata__object.html + ga3 + (const ::FLAC__StreamMetadata *) const + + + bool + operator!= + group__flacpp__metadata__object.html + ga4 + (const Prototype &) const + + + bool + operator!= + group__flacpp__metadata__object.html + ga5 + (const ::FLAC__StreamMetadata &) const + + + bool + operator!= + group__flacpp__metadata__object.html + ga6 + (const ::FLAC__StreamMetadata *) const + + + bool + is_valid + group__flacpp__metadata__object.html + ga7 + () const + + + + operator const ::FLAC__StreamMetadata * + group__flacpp__metadata__object.html + ga8 + () const + + + + flacpp_metadata_level0 + FLAC++/metadata.h: metadata level 0 interface + group__flacpp__metadata__level0.html + + bool + get_streaminfo + group__flacpp__metadata__level0.html + ga0 + (const char *filename, StreamInfo &streaminfo) + + + bool + get_tags + group__flacpp__metadata__level0.html + ga1 + (const char *filename, VorbisComment *&tags) + + + bool + get_tags + group__flacpp__metadata__level0.html + ga2 + (const char *filename, VorbisComment &tags) + + + bool + get_cuesheet + group__flacpp__metadata__level0.html + ga3 + (const char *filename, CueSheet *&cuesheet) + + + bool + get_cuesheet + group__flacpp__metadata__level0.html + ga4 + (const char *filename, CueSheet &cuesheet) + + + bool + get_picture + group__flacpp__metadata__level0.html + ga5 + (const char *filename, Picture *&picture,::FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors) + + + bool + get_picture + group__flacpp__metadata__level0.html + ga6 + (const char *filename, Picture &picture,::FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors) + + + + flacpp_metadata_level1 + FLAC++/metadata.h: metadata level 1 interface + group__flacpp__metadata__level1.html + FLAC::Metadata::SimpleIterator + + + flacpp_metadata_level2 + FLAC++/metadata.h: metadata level 2 interface + group__flacpp__metadata__level2.html + FLAC::Metadata::Chain + FLAC::Metadata::Iterator + + + include/FLAC/ + /home/jcoalson/flac/build-1.2.1/include/FLAC/ + dir_000002.html + all.h + assert.h + callback.h + export.h + format.h + metadata.h + ordinals.h + stream_decoder.h + stream_encoder.h + + + include/FLAC++/ + /home/jcoalson/flac/build-1.2.1/include/FLAC++/ + dir_000001.html + all.h + decoder.h + encoder.h + export.h + metadata.h + + + include/ + /home/jcoalson/flac/build-1.2.1/include/ + dir_000000.html + include/FLAC/ + include/FLAC++/ + + + FLAC::Decoder::Stream + classFLAC_1_1Decoder_1_1Stream.html + + virtual bool + is_valid + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama2 + () const + + + + operator bool + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama3 + () const + + + virtual bool + set_ogg_serial_number + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama4 + (long value) + + + virtual bool + set_md5_checking + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama5 + (bool value) + + + virtual bool + set_metadata_respond + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama6 + (::FLAC__MetadataType type) + + + virtual bool + set_metadata_respond_application + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama7 + (const FLAC__byte id[4]) + + + virtual bool + set_metadata_respond_all + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama8 + () + + + virtual bool + set_metadata_ignore + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama9 + (::FLAC__MetadataType type) + + + virtual bool + set_metadata_ignore_application + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama10 + (const FLAC__byte id[4]) + + + virtual bool + set_metadata_ignore_all + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama11 + () + + + State + get_state + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama12 + () const + + + virtual bool + get_md5_checking + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama13 + () const + + + virtual FLAC__uint64 + get_total_samples + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama14 + () const + + + virtual unsigned + get_channels + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama15 + () const + + + virtual ::FLAC__ChannelAssignment + get_channel_assignment + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama16 + () const + + + virtual unsigned + get_bits_per_sample + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama17 + () const + + + virtual unsigned + get_sample_rate + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama18 + () const + + + virtual unsigned + get_blocksize + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama19 + () const + + + virtual bool + get_decode_position + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama20 + (FLAC__uint64 *position) const + + + virtual ::FLAC__StreamDecoderInitStatus + init + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama21 + () + + + virtual ::FLAC__StreamDecoderInitStatus + init_ogg + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama22 + () + + + virtual bool + finish + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama23 + () + + + virtual bool + flush + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama24 + () + + + virtual bool + reset + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama25 + () + + + virtual bool + process_single + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama26 + () + + + virtual bool + process_until_end_of_metadata + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama27 + () + + + virtual bool + process_until_end_of_stream + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama28 + () + + + virtual bool + skip_single_frame + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama29 + () + + + virtual bool + seek_absolute + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama30 + (FLAC__uint64 sample) + + + virtual ::FLAC__StreamDecoderReadStatus + read_callback + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamb0 + (FLAC__byte buffer[], size_t *bytes)=0 + + + virtual ::FLAC__StreamDecoderSeekStatus + seek_callback + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamb1 + (FLAC__uint64 absolute_byte_offset) + + + virtual ::FLAC__StreamDecoderTellStatus + tell_callback + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamb2 + (FLAC__uint64 *absolute_byte_offset) + + + virtual ::FLAC__StreamDecoderLengthStatus + length_callback + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamb3 + (FLAC__uint64 *stream_length) + + + virtual bool + eof_callback + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamb4 + () + + + virtual ::FLAC__StreamDecoderWriteStatus + write_callback + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamb5 + (const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[])=0 + + + virtual void + metadata_callback + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamb6 + (const ::FLAC__StreamMetadata *metadata) + + + virtual void + error_callback + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamb7 + (::FLAC__StreamDecoderErrorStatus status)=0 + + + ::FLAC__StreamDecoderReadStatus + read_callback_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamf0 + (const ::FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data) + + + ::FLAC__StreamDecoderSeekStatus + seek_callback_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamf1 + (const ::FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) + + + ::FLAC__StreamDecoderTellStatus + tell_callback_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamf2 + (const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) + + + ::FLAC__StreamDecoderLengthStatus + length_callback_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamf3 + (const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) + + + static FLAC__bool + eof_callback_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamf4 + (const ::FLAC__StreamDecoder *decoder, void *client_data) + + + ::FLAC__StreamDecoderWriteStatus + write_callback_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamf5 + (const ::FLAC__StreamDecoder *decoder, const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data) + + + static void + metadata_callback_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamf6 + (const ::FLAC__StreamDecoder *decoder, const ::FLAC__StreamMetadata *metadata, void *client_data) + + + static void + error_callback_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamf7 + (const ::FLAC__StreamDecoder *decoder,::FLAC__StreamDecoderErrorStatus status, void *client_data) + + + ::FLAC__StreamDecoder * + decoder_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamp0 + + + FLAC::Decoder::Stream::State + + + FLAC::Decoder::Stream::State + classFLAC_1_1Decoder_1_1Stream_1_1State.html + + + State + classFLAC_1_1Decoder_1_1Stream_1_1State.html + FLAC_1_1Decoder_1_1Stream_1_1Statea0 + (::FLAC__StreamDecoderState state) + + + + operator::FLAC__StreamDecoderState + classFLAC_1_1Decoder_1_1Stream_1_1State.html + FLAC_1_1Decoder_1_1Stream_1_1Statea1 + () const + + + const char * + as_cstring + classFLAC_1_1Decoder_1_1Stream_1_1State.html + FLAC_1_1Decoder_1_1Stream_1_1Statea2 + () const + + + const char * + resolved_as_cstring + classFLAC_1_1Decoder_1_1Stream_1_1State.html + FLAC_1_1Decoder_1_1Stream_1_1Statea3 + (const Stream &decoder) const + + + ::FLAC__StreamDecoderState + state_ + classFLAC_1_1Decoder_1_1Stream_1_1State.html + FLAC_1_1Decoder_1_1Stream_1_1Statep0 + + + + + FLAC::Decoder::File + classFLAC_1_1Decoder_1_1File.html + FLAC::Decoder::Stream + + virtual ::FLAC__StreamDecoderInitStatus + init + classFLAC_1_1Decoder_1_1File.html + FLAC_1_1Decoder_1_1Filea2 + (FILE *file) + + + virtual ::FLAC__StreamDecoderInitStatus + init + classFLAC_1_1Decoder_1_1File.html + FLAC_1_1Decoder_1_1Filea3 + (const char *filename) + + + virtual ::FLAC__StreamDecoderInitStatus + init + classFLAC_1_1Decoder_1_1File.html + FLAC_1_1Decoder_1_1Filea4 + (const std::string &filename) + + + virtual ::FLAC__StreamDecoderInitStatus + init_ogg + classFLAC_1_1Decoder_1_1File.html + FLAC_1_1Decoder_1_1Filea5 + (FILE *file) + + + virtual ::FLAC__StreamDecoderInitStatus + init_ogg + classFLAC_1_1Decoder_1_1File.html + FLAC_1_1Decoder_1_1Filea6 + (const char *filename) + + + virtual ::FLAC__StreamDecoderInitStatus + init_ogg + classFLAC_1_1Decoder_1_1File.html + FLAC_1_1Decoder_1_1Filea7 + (const std::string &filename) + + + virtual bool + is_valid + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama2 + () const + + + + operator bool + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama3 + () const + + + virtual bool + set_ogg_serial_number + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama4 + (long value) + + + virtual bool + set_md5_checking + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama5 + (bool value) + + + virtual bool + set_metadata_respond + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama6 + (::FLAC__MetadataType type) + + + virtual bool + set_metadata_respond_application + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama7 + (const FLAC__byte id[4]) + + + virtual bool + set_metadata_respond_all + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama8 + () + + + virtual bool + set_metadata_ignore + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama9 + (::FLAC__MetadataType type) + + + virtual bool + set_metadata_ignore_application + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama10 + (const FLAC__byte id[4]) + + + virtual bool + set_metadata_ignore_all + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama11 + () + + + State + get_state + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama12 + () const + + + virtual bool + get_md5_checking + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama13 + () const + + + virtual FLAC__uint64 + get_total_samples + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama14 + () const + + + virtual unsigned + get_channels + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama15 + () const + + + virtual ::FLAC__ChannelAssignment + get_channel_assignment + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama16 + () const + + + virtual unsigned + get_bits_per_sample + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama17 + () const + + + virtual unsigned + get_sample_rate + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama18 + () const + + + virtual unsigned + get_blocksize + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama19 + () const + + + virtual bool + get_decode_position + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama20 + (FLAC__uint64 *position) const + + + virtual ::FLAC__StreamDecoderInitStatus + init + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama21 + () + + + virtual ::FLAC__StreamDecoderInitStatus + init_ogg + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama22 + () + + + virtual bool + finish + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama23 + () + + + virtual bool + flush + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama24 + () + + + virtual bool + reset + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama25 + () + + + virtual bool + process_single + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama26 + () + + + virtual bool + process_until_end_of_metadata + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama27 + () + + + virtual bool + process_until_end_of_stream + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama28 + () + + + virtual bool + skip_single_frame + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama29 + () + + + virtual bool + seek_absolute + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streama30 + (FLAC__uint64 sample) + + + virtual ::FLAC__StreamDecoderReadStatus + read_callback + classFLAC_1_1Decoder_1_1File.html + FLAC_1_1Decoder_1_1Fileb0 + (FLAC__byte buffer[], size_t *bytes) + + + virtual ::FLAC__StreamDecoderSeekStatus + seek_callback + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamb1 + (FLAC__uint64 absolute_byte_offset) + + + virtual ::FLAC__StreamDecoderTellStatus + tell_callback + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamb2 + (FLAC__uint64 *absolute_byte_offset) + + + virtual ::FLAC__StreamDecoderLengthStatus + length_callback + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamb3 + (FLAC__uint64 *stream_length) + + + virtual bool + eof_callback + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamb4 + () + + + virtual ::FLAC__StreamDecoderWriteStatus + write_callback + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamb5 + (const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[])=0 + + + virtual void + metadata_callback + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamb6 + (const ::FLAC__StreamMetadata *metadata) + + + virtual void + error_callback + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamb7 + (::FLAC__StreamDecoderErrorStatus status)=0 + + + ::FLAC__StreamDecoderReadStatus + read_callback_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamf0 + (const ::FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data) + + + ::FLAC__StreamDecoderSeekStatus + seek_callback_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamf1 + (const ::FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) + + + ::FLAC__StreamDecoderTellStatus + tell_callback_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamf2 + (const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) + + + ::FLAC__StreamDecoderLengthStatus + length_callback_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamf3 + (const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) + + + static FLAC__bool + eof_callback_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamf4 + (const ::FLAC__StreamDecoder *decoder, void *client_data) + + + ::FLAC__StreamDecoderWriteStatus + write_callback_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamf5 + (const ::FLAC__StreamDecoder *decoder, const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data) + + + static void + metadata_callback_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamf6 + (const ::FLAC__StreamDecoder *decoder, const ::FLAC__StreamMetadata *metadata, void *client_data) + + + static void + error_callback_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamf7 + (const ::FLAC__StreamDecoder *decoder,::FLAC__StreamDecoderErrorStatus status, void *client_data) + + + ::FLAC__StreamDecoder * + decoder_ + classFLAC_1_1Decoder_1_1Stream.html + FLAC_1_1Decoder_1_1Streamp0 + + + + + FLAC::Encoder::Stream + classFLAC_1_1Encoder_1_1Stream.html + + virtual bool + is_valid + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama2 + () const + + + + operator bool + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama3 + () const + + + virtual bool + set_ogg_serial_number + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama4 + (long value) + + + virtual bool + set_verify + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama5 + (bool value) + + + virtual bool + set_streamable_subset + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama6 + (bool value) + + + virtual bool + set_channels + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama7 + (unsigned value) + + + virtual bool + set_bits_per_sample + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama8 + (unsigned value) + + + virtual bool + set_sample_rate + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama9 + (unsigned value) + + + virtual bool + set_compression_level + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama10 + (unsigned value) + + + virtual bool + set_blocksize + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama11 + (unsigned value) + + + virtual bool + set_do_mid_side_stereo + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama12 + (bool value) + + + virtual bool + set_loose_mid_side_stereo + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama13 + (bool value) + + + virtual bool + set_apodization + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama14 + (const char *specification) + + + virtual bool + set_max_lpc_order + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama15 + (unsigned value) + + + virtual bool + set_qlp_coeff_precision + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama16 + (unsigned value) + + + virtual bool + set_do_qlp_coeff_prec_search + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama17 + (bool value) + + + virtual bool + set_do_escape_coding + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama18 + (bool value) + + + virtual bool + set_do_exhaustive_model_search + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama19 + (bool value) + + + virtual bool + set_min_residual_partition_order + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama20 + (unsigned value) + + + virtual bool + set_max_residual_partition_order + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama21 + (unsigned value) + + + virtual bool + set_rice_parameter_search_dist + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama22 + (unsigned value) + + + virtual bool + set_total_samples_estimate + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama23 + (FLAC__uint64 value) + + + virtual bool + set_metadata + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama24 + (::FLAC__StreamMetadata **metadata, unsigned num_blocks) + + + virtual bool + set_metadata + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama25 + (FLAC::Metadata::Prototype **metadata, unsigned num_blocks) + + + State + get_state + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama26 + () const + + + virtual Decoder::Stream::State + get_verify_decoder_state + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama27 + () const + + + virtual void + get_verify_decoder_error_stats + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama28 + (FLAC__uint64 *absolute_sample, unsigned *frame_number, unsigned *channel, unsigned *sample, FLAC__int32 *expected, FLAC__int32 *got) + + + virtual bool + get_verify + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama29 + () const + + + virtual bool + get_streamable_subset + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama30 + () const + + + virtual bool + get_do_mid_side_stereo + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama31 + () const + + + virtual bool + get_loose_mid_side_stereo + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama32 + () const + + + virtual unsigned + get_channels + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama33 + () const + + + virtual unsigned + get_bits_per_sample + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama34 + () const + + + virtual unsigned + get_sample_rate + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama35 + () const + + + virtual unsigned + get_blocksize + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama36 + () const + + + virtual unsigned + get_max_lpc_order + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama37 + () const + + + virtual unsigned + get_qlp_coeff_precision + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama38 + () const + + + virtual bool + get_do_qlp_coeff_prec_search + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama39 + () const + + + virtual bool + get_do_escape_coding + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama40 + () const + + + virtual bool + get_do_exhaustive_model_search + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama41 + () const + + + virtual unsigned + get_min_residual_partition_order + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama42 + () const + + + virtual unsigned + get_max_residual_partition_order + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama43 + () const + + + virtual unsigned + get_rice_parameter_search_dist + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama44 + () const + + + virtual FLAC__uint64 + get_total_samples_estimate + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama45 + () const + + + virtual ::FLAC__StreamEncoderInitStatus + init + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama46 + () + + + virtual ::FLAC__StreamEncoderInitStatus + init_ogg + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama47 + () + + + virtual bool + finish + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama48 + () + + + virtual bool + process + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama49 + (const FLAC__int32 *const buffer[], unsigned samples) + + + virtual bool + process_interleaved + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama50 + (const FLAC__int32 buffer[], unsigned samples) + + + virtual ::FLAC__StreamEncoderReadStatus + read_callback + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamb0 + (FLAC__byte buffer[], size_t *bytes) + + + virtual ::FLAC__StreamEncoderWriteStatus + write_callback + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamb1 + (const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame)=0 + + + virtual ::FLAC__StreamEncoderSeekStatus + seek_callback + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamb2 + (FLAC__uint64 absolute_byte_offset) + + + virtual ::FLAC__StreamEncoderTellStatus + tell_callback + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamb3 + (FLAC__uint64 *absolute_byte_offset) + + + virtual void + metadata_callback + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamb4 + (const ::FLAC__StreamMetadata *metadata) + + + ::FLAC__StreamEncoderReadStatus + read_callback_ + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamf0 + (const ::FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data) + + + ::FLAC__StreamEncoderWriteStatus + write_callback_ + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamf1 + (const ::FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, void *client_data) + + + ::FLAC__StreamEncoderSeekStatus + seek_callback_ + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamf2 + (const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data) + + + ::FLAC__StreamEncoderTellStatus + tell_callback_ + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamf3 + (const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data) + + + static void + metadata_callback_ + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamf4 + (const ::FLAC__StreamEncoder *encoder, const ::FLAC__StreamMetadata *metadata, void *client_data) + + + ::FLAC__StreamEncoder * + encoder_ + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamp0 + + + FLAC::Encoder::Stream::State + + + FLAC::Encoder::Stream::State + classFLAC_1_1Encoder_1_1Stream_1_1State.html + + + State + classFLAC_1_1Encoder_1_1Stream_1_1State.html + FLAC_1_1Encoder_1_1Stream_1_1Statea0 + (::FLAC__StreamEncoderState state) + + + + operator::FLAC__StreamEncoderState + classFLAC_1_1Encoder_1_1Stream_1_1State.html + FLAC_1_1Encoder_1_1Stream_1_1Statea1 + () const + + + const char * + as_cstring + classFLAC_1_1Encoder_1_1Stream_1_1State.html + FLAC_1_1Encoder_1_1Stream_1_1Statea2 + () const + + + const char * + resolved_as_cstring + classFLAC_1_1Encoder_1_1Stream_1_1State.html + FLAC_1_1Encoder_1_1Stream_1_1Statea3 + (const Stream &encoder) const + + + ::FLAC__StreamEncoderState + state_ + classFLAC_1_1Encoder_1_1Stream_1_1State.html + FLAC_1_1Encoder_1_1Stream_1_1Statep0 + + + + + FLAC::Encoder::File + classFLAC_1_1Encoder_1_1File.html + FLAC::Encoder::Stream + + virtual ::FLAC__StreamEncoderInitStatus + init + classFLAC_1_1Encoder_1_1File.html + FLAC_1_1Encoder_1_1Filea2 + (FILE *file) + + + virtual ::FLAC__StreamEncoderInitStatus + init + classFLAC_1_1Encoder_1_1File.html + FLAC_1_1Encoder_1_1Filea3 + (const char *filename) + + + virtual ::FLAC__StreamEncoderInitStatus + init + classFLAC_1_1Encoder_1_1File.html + FLAC_1_1Encoder_1_1Filea4 + (const std::string &filename) + + + virtual ::FLAC__StreamEncoderInitStatus + init_ogg + classFLAC_1_1Encoder_1_1File.html + FLAC_1_1Encoder_1_1Filea5 + (FILE *file) + + + virtual ::FLAC__StreamEncoderInitStatus + init_ogg + classFLAC_1_1Encoder_1_1File.html + FLAC_1_1Encoder_1_1Filea6 + (const char *filename) + + + virtual ::FLAC__StreamEncoderInitStatus + init_ogg + classFLAC_1_1Encoder_1_1File.html + FLAC_1_1Encoder_1_1Filea7 + (const std::string &filename) + + + virtual bool + is_valid + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama2 + () const + + + + operator bool + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama3 + () const + + + virtual bool + set_ogg_serial_number + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama4 + (long value) + + + virtual bool + set_verify + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama5 + (bool value) + + + virtual bool + set_streamable_subset + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama6 + (bool value) + + + virtual bool + set_channels + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama7 + (unsigned value) + + + virtual bool + set_bits_per_sample + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama8 + (unsigned value) + + + virtual bool + set_sample_rate + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama9 + (unsigned value) + + + virtual bool + set_compression_level + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama10 + (unsigned value) + + + virtual bool + set_blocksize + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama11 + (unsigned value) + + + virtual bool + set_do_mid_side_stereo + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama12 + (bool value) + + + virtual bool + set_loose_mid_side_stereo + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama13 + (bool value) + + + virtual bool + set_apodization + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama14 + (const char *specification) + + + virtual bool + set_max_lpc_order + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama15 + (unsigned value) + + + virtual bool + set_qlp_coeff_precision + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama16 + (unsigned value) + + + virtual bool + set_do_qlp_coeff_prec_search + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama17 + (bool value) + + + virtual bool + set_do_escape_coding + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama18 + (bool value) + + + virtual bool + set_do_exhaustive_model_search + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama19 + (bool value) + + + virtual bool + set_min_residual_partition_order + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama20 + (unsigned value) + + + virtual bool + set_max_residual_partition_order + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama21 + (unsigned value) + + + virtual bool + set_rice_parameter_search_dist + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama22 + (unsigned value) + + + virtual bool + set_total_samples_estimate + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama23 + (FLAC__uint64 value) + + + virtual bool + set_metadata + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama24 + (::FLAC__StreamMetadata **metadata, unsigned num_blocks) + + + virtual bool + set_metadata + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama25 + (FLAC::Metadata::Prototype **metadata, unsigned num_blocks) + + + State + get_state + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama26 + () const + + + virtual Decoder::Stream::State + get_verify_decoder_state + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama27 + () const + + + virtual void + get_verify_decoder_error_stats + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama28 + (FLAC__uint64 *absolute_sample, unsigned *frame_number, unsigned *channel, unsigned *sample, FLAC__int32 *expected, FLAC__int32 *got) + + + virtual bool + get_verify + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama29 + () const + + + virtual bool + get_streamable_subset + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama30 + () const + + + virtual bool + get_do_mid_side_stereo + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama31 + () const + + + virtual bool + get_loose_mid_side_stereo + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama32 + () const + + + virtual unsigned + get_channels + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama33 + () const + + + virtual unsigned + get_bits_per_sample + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama34 + () const + + + virtual unsigned + get_sample_rate + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama35 + () const + + + virtual unsigned + get_blocksize + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama36 + () const + + + virtual unsigned + get_max_lpc_order + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama37 + () const + + + virtual unsigned + get_qlp_coeff_precision + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama38 + () const + + + virtual bool + get_do_qlp_coeff_prec_search + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama39 + () const + + + virtual bool + get_do_escape_coding + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama40 + () const + + + virtual bool + get_do_exhaustive_model_search + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama41 + () const + + + virtual unsigned + get_min_residual_partition_order + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama42 + () const + + + virtual unsigned + get_max_residual_partition_order + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama43 + () const + + + virtual unsigned + get_rice_parameter_search_dist + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama44 + () const + + + virtual FLAC__uint64 + get_total_samples_estimate + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama45 + () const + + + virtual ::FLAC__StreamEncoderInitStatus + init + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama46 + () + + + virtual ::FLAC__StreamEncoderInitStatus + init_ogg + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama47 + () + + + virtual bool + finish + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama48 + () + + + virtual bool + process + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama49 + (const FLAC__int32 *const buffer[], unsigned samples) + + + virtual bool + process_interleaved + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streama50 + (const FLAC__int32 buffer[], unsigned samples) + + + virtual void + progress_callback + classFLAC_1_1Encoder_1_1File.html + FLAC_1_1Encoder_1_1Fileb0 + (FLAC__uint64 bytes_written, FLAC__uint64 samples_written, unsigned frames_written, unsigned total_frames_estimate) + + + virtual ::FLAC__StreamEncoderWriteStatus + write_callback + classFLAC_1_1Encoder_1_1File.html + FLAC_1_1Encoder_1_1Fileb1 + (const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame) + + + virtual ::FLAC__StreamEncoderReadStatus + read_callback + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamb0 + (FLAC__byte buffer[], size_t *bytes) + + + virtual ::FLAC__StreamEncoderSeekStatus + seek_callback + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamb2 + (FLAC__uint64 absolute_byte_offset) + + + virtual ::FLAC__StreamEncoderTellStatus + tell_callback + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamb3 + (FLAC__uint64 *absolute_byte_offset) + + + virtual void + metadata_callback + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamb4 + (const ::FLAC__StreamMetadata *metadata) + + + ::FLAC__StreamEncoderReadStatus + read_callback_ + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamf0 + (const ::FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data) + + + ::FLAC__StreamEncoderWriteStatus + write_callback_ + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamf1 + (const ::FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, void *client_data) + + + ::FLAC__StreamEncoderSeekStatus + seek_callback_ + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamf2 + (const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data) + + + ::FLAC__StreamEncoderTellStatus + tell_callback_ + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamf3 + (const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data) + + + static void + metadata_callback_ + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamf4 + (const ::FLAC__StreamEncoder *encoder, const ::FLAC__StreamMetadata *metadata, void *client_data) + + + ::FLAC__StreamEncoder * + encoder_ + classFLAC_1_1Encoder_1_1Stream.html + FLAC_1_1Encoder_1_1Streamp0 + + + + + FLAC::Metadata::Prototype + classFLAC_1_1Metadata_1_1Prototype.html + + virtual + ~Prototype + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1Prototypea0 + () + + + bool + operator== + group__flacpp__metadata__object.html + ga1 + (const Prototype &) const + + + bool + operator== + group__flacpp__metadata__object.html + ga2 + (const ::FLAC__StreamMetadata &) const + + + bool + operator== + group__flacpp__metadata__object.html + ga3 + (const ::FLAC__StreamMetadata *) const + + + bool + operator!= + group__flacpp__metadata__object.html + ga4 + (const Prototype &) const + + + bool + operator!= + group__flacpp__metadata__object.html + ga5 + (const ::FLAC__StreamMetadata &) const + + + bool + operator!= + group__flacpp__metadata__object.html + ga6 + (const ::FLAC__StreamMetadata *) const + + + bool + is_valid + group__flacpp__metadata__object.html + ga7 + () const + + + bool + get_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta27 + () const + + + ::FLAC__MetadataType + get_type + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta28 + () const + + + unsigned + get_length + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta29 + () const + + + void + set_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta30 + (bool) + + + + operator const ::FLAC__StreamMetadata * + group__flacpp__metadata__object.html + ga8 + () const + + + + Prototype + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1Prototypeb0 + (const Prototype &) + + + + Prototype + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1Prototypeb1 + (const ::FLAC__StreamMetadata &) + + + + Prototype + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1Prototypeb2 + (const ::FLAC__StreamMetadata *) + + + + Prototype + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1Prototypeb3 + (::FLAC__StreamMetadata *object, bool copy) + + + Prototype & + operator= + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1Prototypeb4 + (const Prototype &) + + + Prototype & + operator= + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1Prototypeb5 + (const ::FLAC__StreamMetadata &) + + + Prototype & + operator= + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1Prototypeb6 + (const ::FLAC__StreamMetadata *) + + + Prototype & + assign_object + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb0 + (::FLAC__StreamMetadata *object, bool copy) + + + virtual void + clear + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb1 + () + + + ::FLAC__StreamMetadata * + object_ + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentp0 + + + + friend class + SimpleIterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn0 + + + + friend class + Iterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn1 + + + + + FLAC::Metadata::StreamInfo + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC::Metadata::Prototype + + + StreamInfo + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa1 + (const StreamInfo &object) + + + + StreamInfo + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa2 + (const ::FLAC__StreamMetadata &object) + + + + StreamInfo + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa3 + (const ::FLAC__StreamMetadata *object) + + + + StreamInfo + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa4 + (::FLAC__StreamMetadata *object, bool copy) + + + StreamInfo & + operator= + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa6 + (const StreamInfo &object) + + + StreamInfo & + operator= + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa7 + (const ::FLAC__StreamMetadata &object) + + + StreamInfo & + operator= + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa8 + (const ::FLAC__StreamMetadata *object) + + + StreamInfo & + assign + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa9 + (::FLAC__StreamMetadata *object, bool copy) + + + bool + operator== + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa10 + (const StreamInfo &object) const + + + bool + operator== + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa11 + (const ::FLAC__StreamMetadata &object) const + + + bool + operator== + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa12 + (const ::FLAC__StreamMetadata *object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa13 + (const StreamInfo &object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa14 + (const ::FLAC__StreamMetadata &object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa15 + (const ::FLAC__StreamMetadata *object) const + + + unsigned + get_min_blocksize + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa16 + () const + + + unsigned + get_max_blocksize + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa17 + () const + + + unsigned + get_min_framesize + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa18 + () const + + + unsigned + get_max_framesize + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa19 + () const + + + unsigned + get_sample_rate + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa20 + () const + + + unsigned + get_channels + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa21 + () const + + + unsigned + get_bits_per_sample + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa22 + () const + + + FLAC__uint64 + get_total_samples + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa23 + () const + + + const FLAC__byte * + get_md5sum + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa24 + () const + + + void + set_min_blocksize + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa25 + (unsigned value) + + + void + set_max_blocksize + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa26 + (unsigned value) + + + void + set_min_framesize + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa27 + (unsigned value) + + + void + set_max_framesize + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa28 + (unsigned value) + + + void + set_sample_rate + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa29 + (unsigned value) + + + void + set_channels + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa30 + (unsigned value) + + + void + set_bits_per_sample + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa31 + (unsigned value) + + + void + set_total_samples + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa32 + (FLAC__uint64 value) + + + void + set_md5sum + classFLAC_1_1Metadata_1_1StreamInfo.html + FLAC_1_1Metadata_1_1StreamInfoa33 + (const FLAC__byte value[16]) + + + bool + operator== + group__flacpp__metadata__object.html + ga1 + (const Prototype &) const + + + bool + operator!= + group__flacpp__metadata__object.html + ga4 + (const Prototype &) const + + + bool + is_valid + group__flacpp__metadata__object.html + ga7 + () const + + + bool + get_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta27 + () const + + + ::FLAC__MetadataType + get_type + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta28 + () const + + + unsigned + get_length + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta29 + () const + + + void + set_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta30 + (bool) + + + + operator const ::FLAC__StreamMetadata * + group__flacpp__metadata__object.html + ga8 + () const + + + Prototype & + assign_object + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb0 + (::FLAC__StreamMetadata *object, bool copy) + + + virtual void + clear + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb1 + () + + + ::FLAC__StreamMetadata * + object_ + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentp0 + + + + friend class + SimpleIterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn0 + + + + friend class + Iterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn1 + + + + + FLAC::Metadata::Padding + classFLAC_1_1Metadata_1_1Padding.html + FLAC::Metadata::Prototype + + + Padding + classFLAC_1_1Metadata_1_1Padding.html + FLAC_1_1Metadata_1_1Paddinga1 + (const Padding &object) + + + + Padding + classFLAC_1_1Metadata_1_1Padding.html + FLAC_1_1Metadata_1_1Paddinga2 + (const ::FLAC__StreamMetadata &object) + + + + Padding + classFLAC_1_1Metadata_1_1Padding.html + FLAC_1_1Metadata_1_1Paddinga3 + (const ::FLAC__StreamMetadata *object) + + + + Padding + classFLAC_1_1Metadata_1_1Padding.html + FLAC_1_1Metadata_1_1Paddinga4 + (::FLAC__StreamMetadata *object, bool copy) + + + Padding & + operator= + classFLAC_1_1Metadata_1_1Padding.html + FLAC_1_1Metadata_1_1Paddinga6 + (const Padding &object) + + + Padding & + operator= + classFLAC_1_1Metadata_1_1Padding.html + FLAC_1_1Metadata_1_1Paddinga7 + (const ::FLAC__StreamMetadata &object) + + + Padding & + operator= + classFLAC_1_1Metadata_1_1Padding.html + FLAC_1_1Metadata_1_1Paddinga8 + (const ::FLAC__StreamMetadata *object) + + + Padding & + assign + classFLAC_1_1Metadata_1_1Padding.html + FLAC_1_1Metadata_1_1Paddinga9 + (::FLAC__StreamMetadata *object, bool copy) + + + bool + operator== + classFLAC_1_1Metadata_1_1Padding.html + FLAC_1_1Metadata_1_1Paddinga10 + (const Padding &object) const + + + bool + operator== + classFLAC_1_1Metadata_1_1Padding.html + FLAC_1_1Metadata_1_1Paddinga11 + (const ::FLAC__StreamMetadata &object) const + + + bool + operator== + classFLAC_1_1Metadata_1_1Padding.html + FLAC_1_1Metadata_1_1Paddinga12 + (const ::FLAC__StreamMetadata *object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1Padding.html + FLAC_1_1Metadata_1_1Paddinga13 + (const Padding &object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1Padding.html + FLAC_1_1Metadata_1_1Paddinga14 + (const ::FLAC__StreamMetadata &object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1Padding.html + FLAC_1_1Metadata_1_1Paddinga15 + (const ::FLAC__StreamMetadata *object) const + + + void + set_length + classFLAC_1_1Metadata_1_1Padding.html + FLAC_1_1Metadata_1_1Paddinga16 + (unsigned length) + + + bool + operator== + group__flacpp__metadata__object.html + ga1 + (const Prototype &) const + + + bool + operator!= + group__flacpp__metadata__object.html + ga4 + (const Prototype &) const + + + bool + is_valid + group__flacpp__metadata__object.html + ga7 + () const + + + bool + get_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta27 + () const + + + ::FLAC__MetadataType + get_type + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta28 + () const + + + unsigned + get_length + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta29 + () const + + + void + set_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta30 + (bool) + + + + operator const ::FLAC__StreamMetadata * + group__flacpp__metadata__object.html + ga8 + () const + + + Prototype & + assign_object + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb0 + (::FLAC__StreamMetadata *object, bool copy) + + + virtual void + clear + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb1 + () + + + ::FLAC__StreamMetadata * + object_ + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentp0 + + + + friend class + SimpleIterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn0 + + + + friend class + Iterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn1 + + + + + FLAC::Metadata::Application + classFLAC_1_1Metadata_1_1Application.html + FLAC::Metadata::Prototype + + + Application + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa1 + (const Application &object) + + + + Application + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa2 + (const ::FLAC__StreamMetadata &object) + + + + Application + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa3 + (const ::FLAC__StreamMetadata *object) + + + + Application + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa4 + (::FLAC__StreamMetadata *object, bool copy) + + + Application & + operator= + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa6 + (const Application &object) + + + Application & + operator= + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa7 + (const ::FLAC__StreamMetadata &object) + + + Application & + operator= + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa8 + (const ::FLAC__StreamMetadata *object) + + + Application & + assign + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa9 + (::FLAC__StreamMetadata *object, bool copy) + + + bool + operator== + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa10 + (const Application &object) const + + + bool + operator== + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa11 + (const ::FLAC__StreamMetadata &object) const + + + bool + operator== + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa12 + (const ::FLAC__StreamMetadata *object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa13 + (const Application &object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa14 + (const ::FLAC__StreamMetadata &object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa15 + (const ::FLAC__StreamMetadata *object) const + + + const FLAC__byte * + get_id + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa16 + () const + + + const FLAC__byte * + get_data + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa17 + () const + + + void + set_id + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa18 + (const FLAC__byte value[4]) + + + bool + set_data + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa19 + (const FLAC__byte *data, unsigned length) + + + bool + set_data + classFLAC_1_1Metadata_1_1Application.html + FLAC_1_1Metadata_1_1Applicationa20 + (FLAC__byte *data, unsigned length, bool copy) + + + bool + operator== + group__flacpp__metadata__object.html + ga1 + (const Prototype &) const + + + bool + operator!= + group__flacpp__metadata__object.html + ga4 + (const Prototype &) const + + + bool + is_valid + group__flacpp__metadata__object.html + ga7 + () const + + + bool + get_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta27 + () const + + + ::FLAC__MetadataType + get_type + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta28 + () const + + + unsigned + get_length + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta29 + () const + + + void + set_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta30 + (bool) + + + + operator const ::FLAC__StreamMetadata * + group__flacpp__metadata__object.html + ga8 + () const + + + Prototype & + assign_object + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb0 + (::FLAC__StreamMetadata *object, bool copy) + + + virtual void + clear + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb1 + () + + + ::FLAC__StreamMetadata * + object_ + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentp0 + + + + friend class + SimpleIterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn0 + + + + friend class + Iterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn1 + + + + + FLAC::Metadata::SeekTable + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC::Metadata::Prototype + + + SeekTable + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea1 + (const SeekTable &object) + + + + SeekTable + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea2 + (const ::FLAC__StreamMetadata &object) + + + + SeekTable + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea3 + (const ::FLAC__StreamMetadata *object) + + + + SeekTable + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea4 + (::FLAC__StreamMetadata *object, bool copy) + + + SeekTable & + operator= + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea6 + (const SeekTable &object) + + + SeekTable & + operator= + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea7 + (const ::FLAC__StreamMetadata &object) + + + SeekTable & + operator= + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea8 + (const ::FLAC__StreamMetadata *object) + + + SeekTable & + assign + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea9 + (::FLAC__StreamMetadata *object, bool copy) + + + bool + operator== + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea10 + (const SeekTable &object) const + + + bool + operator== + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea11 + (const ::FLAC__StreamMetadata &object) const + + + bool + operator== + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea12 + (const ::FLAC__StreamMetadata *object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea13 + (const SeekTable &object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea14 + (const ::FLAC__StreamMetadata &object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea15 + (const ::FLAC__StreamMetadata *object) const + + + unsigned + get_num_points + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea16 + () const + + + ::FLAC__StreamMetadata_SeekPoint + get_point + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea17 + (unsigned index) const + + + void + set_point + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea18 + (unsigned index, const ::FLAC__StreamMetadata_SeekPoint &point) + + + bool + insert_point + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea19 + (unsigned index, const ::FLAC__StreamMetadata_SeekPoint &point) + + + bool + delete_point + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea20 + (unsigned index) + + + bool + is_legal + classFLAC_1_1Metadata_1_1SeekTable.html + FLAC_1_1Metadata_1_1SeekTablea21 + () const + + + bool + operator== + group__flacpp__metadata__object.html + ga1 + (const Prototype &) const + + + bool + operator!= + group__flacpp__metadata__object.html + ga4 + (const Prototype &) const + + + bool + is_valid + group__flacpp__metadata__object.html + ga7 + () const + + + bool + get_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta27 + () const + + + ::FLAC__MetadataType + get_type + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta28 + () const + + + unsigned + get_length + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta29 + () const + + + void + set_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta30 + (bool) + + + + operator const ::FLAC__StreamMetadata * + group__flacpp__metadata__object.html + ga8 + () const + + + Prototype & + assign_object + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb0 + (::FLAC__StreamMetadata *object, bool copy) + + + virtual void + clear + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb1 + () + + + ::FLAC__StreamMetadata * + object_ + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentp0 + + + + friend class + SimpleIterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn0 + + + + friend class + Iterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn1 + + + + + FLAC::Metadata::VorbisComment + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC::Metadata::Prototype + + + VorbisComment + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta1 + (const VorbisComment &object) + + + + VorbisComment + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta2 + (const ::FLAC__StreamMetadata &object) + + + + VorbisComment + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta3 + (const ::FLAC__StreamMetadata *object) + + + + VorbisComment + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta4 + (::FLAC__StreamMetadata *object, bool copy) + + + VorbisComment & + operator= + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta6 + (const VorbisComment &object) + + + VorbisComment & + operator= + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta7 + (const ::FLAC__StreamMetadata &object) + + + VorbisComment & + operator= + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta8 + (const ::FLAC__StreamMetadata *object) + + + VorbisComment & + assign + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta9 + (::FLAC__StreamMetadata *object, bool copy) + + + bool + operator== + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta10 + (const VorbisComment &object) const + + + bool + operator== + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta11 + (const ::FLAC__StreamMetadata &object) const + + + bool + operator== + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta12 + (const ::FLAC__StreamMetadata *object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta13 + (const VorbisComment &object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta14 + (const ::FLAC__StreamMetadata &object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta15 + (const ::FLAC__StreamMetadata *object) const + + + unsigned + get_num_comments + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta16 + () const + + + const FLAC__byte * + get_vendor_string + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta17 + () const + + + Entry + get_comment + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta18 + (unsigned index) const + + + bool + set_vendor_string + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta19 + (const FLAC__byte *string) + + + bool + set_comment + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta20 + (unsigned index, const Entry &entry) + + + bool + insert_comment + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta21 + (unsigned index, const Entry &entry) + + + bool + append_comment + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta22 + (const Entry &entry) + + + bool + delete_comment + classFLAC_1_1Metadata_1_1VorbisComment.html + FLAC_1_1Metadata_1_1VorbisCommenta23 + (unsigned index) + + + bool + operator== + group__flacpp__metadata__object.html + ga1 + (const Prototype &) const + + + bool + operator!= + group__flacpp__metadata__object.html + ga4 + (const Prototype &) const + + + bool + is_valid + group__flacpp__metadata__object.html + ga7 + () const + + + bool + get_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta27 + () const + + + ::FLAC__MetadataType + get_type + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta28 + () const + + + unsigned + get_length + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta29 + () const + + + void + set_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta30 + (bool) + + + + operator const ::FLAC__StreamMetadata * + group__flacpp__metadata__object.html + ga8 + () const + + + Prototype & + assign_object + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb0 + (::FLAC__StreamMetadata *object, bool copy) + + + virtual void + clear + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb1 + () + + + ::FLAC__StreamMetadata * + object_ + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentp0 + + + + friend class + SimpleIterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn0 + + + + friend class + Iterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn1 + + + FLAC::Metadata::VorbisComment::Entry + + + FLAC::Metadata::VorbisComment::Entry + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + + + Entry + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya1 + (const char *field, unsigned field_length) + + + + Entry + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya2 + (const char *field) + + + + Entry + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya3 + (const char *field_name, const char *field_value, unsigned field_value_length) + + + + Entry + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya4 + (const char *field_name, const char *field_value) + + + + Entry + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya5 + (const Entry &entry) + + + Entry & + operator= + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya6 + (const Entry &entry) + + + virtual bool + is_valid + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya8 + () const + + + unsigned + get_field_length + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya9 + () const + + + unsigned + get_field_name_length + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya10 + () const + + + unsigned + get_field_value_length + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya11 + () const + + + ::FLAC__StreamMetadata_VorbisComment_Entry + get_entry + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya12 + () const + + + const char * + get_field + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya13 + () const + + + const char * + get_field_name + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya14 + () const + + + const char * + get_field_value + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya15 + () const + + + bool + set_field + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya16 + (const char *field, unsigned field_length) + + + bool + set_field + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya17 + (const char *field) + + + bool + set_field_name + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya18 + (const char *field_name) + + + bool + set_field_value + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya19 + (const char *field_value, unsigned field_value_length) + + + bool + set_field_value + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entrya20 + (const char *field_value) + + + bool + is_valid_ + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entryp0 + + + + ::FLAC__StreamMetadata_VorbisComment_Entry + entry_ + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entryp1 + + + + char * + field_name_ + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entryp2 + + + + unsigned + field_name_length_ + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entryp3 + + + + char * + field_value_ + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entryp4 + + + + unsigned + field_value_length_ + classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html + FLAC_1_1Metadata_1_1VorbisComment_1_1Entryp5 + + + + + FLAC::Metadata::CueSheet + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC::Metadata::Prototype + + + CueSheet + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta1 + (const CueSheet &object) + + + + CueSheet + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta2 + (const ::FLAC__StreamMetadata &object) + + + + CueSheet + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta3 + (const ::FLAC__StreamMetadata *object) + + + + CueSheet + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta4 + (::FLAC__StreamMetadata *object, bool copy) + + + CueSheet & + operator= + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta6 + (const CueSheet &object) + + + CueSheet & + operator= + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta7 + (const ::FLAC__StreamMetadata &object) + + + CueSheet & + operator= + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta8 + (const ::FLAC__StreamMetadata *object) + + + CueSheet & + assign + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta9 + (::FLAC__StreamMetadata *object, bool copy) + + + bool + operator== + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta10 + (const CueSheet &object) const + + + bool + operator== + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta11 + (const ::FLAC__StreamMetadata &object) const + + + bool + operator== + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta12 + (const ::FLAC__StreamMetadata *object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta13 + (const CueSheet &object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta14 + (const ::FLAC__StreamMetadata &object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta15 + (const ::FLAC__StreamMetadata *object) const + + + const char * + get_media_catalog_number + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta16 + () const + + + FLAC__uint64 + get_lead_in + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta17 + () const + + + bool + get_is_cd + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta18 + () const + + + unsigned + get_num_tracks + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta19 + () const + + + Track + get_track + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta20 + (unsigned i) const + + + void + set_media_catalog_number + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta21 + (const char value[128]) + + + void + set_lead_in + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta22 + (FLAC__uint64 value) + + + void + set_is_cd + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta23 + (bool value) + + + void + set_index + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta24 + (unsigned track_num, unsigned index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index) + + + bool + insert_index + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta25 + (unsigned track_num, unsigned index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index) + + + bool + delete_index + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta26 + (unsigned track_num, unsigned index_num) + + + bool + set_track + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta27 + (unsigned i, const Track &track) + + + bool + insert_track + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta28 + (unsigned i, const Track &track) + + + bool + delete_track + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta29 + (unsigned i) + + + bool + is_legal + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta30 + (bool check_cd_da_subset=false, const char **violation=0) const + + + FLAC__uint32 + calculate_cddb_id + classFLAC_1_1Metadata_1_1CueSheet.html + FLAC_1_1Metadata_1_1CueSheeta31 + () const + + + bool + operator== + group__flacpp__metadata__object.html + ga1 + (const Prototype &) const + + + bool + operator!= + group__flacpp__metadata__object.html + ga4 + (const Prototype &) const + + + bool + is_valid + group__flacpp__metadata__object.html + ga7 + () const + + + bool + get_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta27 + () const + + + ::FLAC__MetadataType + get_type + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta28 + () const + + + unsigned + get_length + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta29 + () const + + + void + set_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta30 + (bool) + + + + operator const ::FLAC__StreamMetadata * + group__flacpp__metadata__object.html + ga8 + () const + + + Prototype & + assign_object + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb0 + (::FLAC__StreamMetadata *object, bool copy) + + + virtual void + clear + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb1 + () + + + ::FLAC__StreamMetadata * + object_ + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentp0 + + + + friend class + SimpleIterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn0 + + + + friend class + Iterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn1 + + + FLAC::Metadata::CueSheet::Track + + + FLAC::Metadata::CueSheet::Track + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + + + Track + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka1 + (const ::FLAC__StreamMetadata_CueSheet_Track *track) + + + + Track + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka2 + (const Track &track) + + + Track & + operator= + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka3 + (const Track &track) + + + virtual bool + is_valid + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka5 + () const + + + FLAC__uint64 + get_offset + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka6 + () const + + + FLAC__byte + get_number + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka7 + () const + + + const char * + get_isrc + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka8 + () const + + + unsigned + get_type + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka9 + () const + + + bool + get_pre_emphasis + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka10 + () const + + + FLAC__byte + get_num_indices + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka11 + () const + + + ::FLAC__StreamMetadata_CueSheet_Index + get_index + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka12 + (unsigned i) const + + + const ::FLAC__StreamMetadata_CueSheet_Track * + get_track + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka13 + () const + + + void + set_offset + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka14 + (FLAC__uint64 value) + + + void + set_number + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka15 + (FLAC__byte value) + + + void + set_isrc + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka16 + (const char value[12]) + + + void + set_type + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka17 + (unsigned value) + + + void + set_pre_emphasis + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka18 + (bool value) + + + void + set_index + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Tracka19 + (unsigned i, const ::FLAC__StreamMetadata_CueSheet_Index &index) + + + ::FLAC__StreamMetadata_CueSheet_Track * + object_ + classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html + FLAC_1_1Metadata_1_1CueSheet_1_1Trackp0 + + + + + FLAC::Metadata::Picture + classFLAC_1_1Metadata_1_1Picture.html + FLAC::Metadata::Prototype + + + Picture + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea1 + (const Picture &object) + + + + Picture + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea2 + (const ::FLAC__StreamMetadata &object) + + + + Picture + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea3 + (const ::FLAC__StreamMetadata *object) + + + + Picture + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea4 + (::FLAC__StreamMetadata *object, bool copy) + + + Picture & + operator= + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea6 + (const Picture &object) + + + Picture & + operator= + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea7 + (const ::FLAC__StreamMetadata &object) + + + Picture & + operator= + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea8 + (const ::FLAC__StreamMetadata *object) + + + Picture & + assign + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea9 + (::FLAC__StreamMetadata *object, bool copy) + + + bool + operator== + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea10 + (const Picture &object) const + + + bool + operator== + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea11 + (const ::FLAC__StreamMetadata &object) const + + + bool + operator== + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea12 + (const ::FLAC__StreamMetadata *object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea13 + (const Picture &object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea14 + (const ::FLAC__StreamMetadata &object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea15 + (const ::FLAC__StreamMetadata *object) const + + + ::FLAC__StreamMetadata_Picture_Type + get_type + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea16 + () const + + + const char * + get_mime_type + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea17 + () const + + + const FLAC__byte * + get_description + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea18 + () const + + + FLAC__uint32 + get_width + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea19 + () const + + + FLAC__uint32 + get_height + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea20 + () const + + + FLAC__uint32 + get_depth + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea21 + () const + + + FLAC__uint32 + get_colors + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea22 + () const + + + FLAC__uint32 + get_data_length + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea23 + () const + + + const FLAC__byte * + get_data + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea24 + () const + + + void + set_type + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea25 + (::FLAC__StreamMetadata_Picture_Type type) + + + bool + set_mime_type + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea26 + (const char *string) + + + bool + set_description + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea27 + (const FLAC__byte *string) + + + void + set_width + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea28 + (FLAC__uint32 value) const + + + void + set_height + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea29 + (FLAC__uint32 value) const + + + void + set_depth + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea30 + (FLAC__uint32 value) const + + + void + set_colors + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea31 + (FLAC__uint32 value) const + + + bool + set_data + classFLAC_1_1Metadata_1_1Picture.html + FLAC_1_1Metadata_1_1Picturea32 + (const FLAC__byte *data, FLAC__uint32 data_length) + + + bool + operator== + group__flacpp__metadata__object.html + ga1 + (const Prototype &) const + + + bool + operator!= + group__flacpp__metadata__object.html + ga4 + (const Prototype &) const + + + bool + is_valid + group__flacpp__metadata__object.html + ga7 + () const + + + bool + get_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta27 + () const + + + unsigned + get_length + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta29 + () const + + + void + set_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta30 + (bool) + + + + operator const ::FLAC__StreamMetadata * + group__flacpp__metadata__object.html + ga8 + () const + + + Prototype & + assign_object + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb0 + (::FLAC__StreamMetadata *object, bool copy) + + + virtual void + clear + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb1 + () + + + ::FLAC__StreamMetadata * + object_ + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentp0 + + + + friend class + SimpleIterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn0 + + + + friend class + Iterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn1 + + + + + FLAC::Metadata::Unknown + classFLAC_1_1Metadata_1_1Unknown.html + FLAC::Metadata::Prototype + + + Unknown + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna1 + (const Unknown &object) + + + + Unknown + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna2 + (const ::FLAC__StreamMetadata &object) + + + + Unknown + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna3 + (const ::FLAC__StreamMetadata *object) + + + + Unknown + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna4 + (::FLAC__StreamMetadata *object, bool copy) + + + Unknown & + operator= + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna6 + (const Unknown &object) + + + Unknown & + operator= + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna7 + (const ::FLAC__StreamMetadata &object) + + + Unknown & + operator= + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna8 + (const ::FLAC__StreamMetadata *object) + + + Unknown & + assign + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna9 + (::FLAC__StreamMetadata *object, bool copy) + + + bool + operator== + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna10 + (const Unknown &object) const + + + bool + operator== + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna11 + (const ::FLAC__StreamMetadata &object) const + + + bool + operator== + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna12 + (const ::FLAC__StreamMetadata *object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna13 + (const Unknown &object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna14 + (const ::FLAC__StreamMetadata &object) const + + + bool + operator!= + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna15 + (const ::FLAC__StreamMetadata *object) const + + + const FLAC__byte * + get_data + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna16 + () const + + + bool + set_data + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna17 + (const FLAC__byte *data, unsigned length) + + + bool + set_data + classFLAC_1_1Metadata_1_1Unknown.html + FLAC_1_1Metadata_1_1Unknowna18 + (FLAC__byte *data, unsigned length, bool copy) + + + bool + operator== + group__flacpp__metadata__object.html + ga1 + (const Prototype &) const + + + bool + operator!= + group__flacpp__metadata__object.html + ga4 + (const Prototype &) const + + + bool + is_valid + group__flacpp__metadata__object.html + ga7 + () const + + + bool + get_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta27 + () const + + + ::FLAC__MetadataType + get_type + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta28 + () const + + + unsigned + get_length + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta29 + () const + + + void + set_is_last + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommenta30 + (bool) + + + + operator const ::FLAC__StreamMetadata * + group__flacpp__metadata__object.html + ga8 + () const + + + Prototype & + assign_object + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb0 + (::FLAC__StreamMetadata *object, bool copy) + + + virtual void + clear + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentb1 + () + + + ::FLAC__StreamMetadata * + object_ + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentp0 + + + + friend class + SimpleIterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn0 + + + + friend class + Iterator + classFLAC_1_1Metadata_1_1Prototype.html + FLAC_1_1Metadata_1_1VorbisCommentn1 + + + + + FLAC::Metadata::SimpleIterator + classFLAC_1_1Metadata_1_1SimpleIterator.html + + bool + is_valid + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratora2 + () const + + + bool + init + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratora3 + (const char *filename, bool read_only, bool preserve_file_stats) + + + Status + status + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratora4 + () + + + bool + is_writable + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratora5 + () const + + + bool + next + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratora6 + () + + + bool + prev + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratora7 + () + + + bool + is_last + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratora8 + () const + + + off_t + get_block_offset + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratora9 + () const + + + ::FLAC__MetadataType + get_block_type + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratora10 + () const + + + unsigned + get_block_length + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratora11 + () const + + + bool + get_application_id + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratora12 + (FLAC__byte *id) + + + Prototype * + get_block + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratora13 + () + + + bool + set_block + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratora14 + (Prototype *block, bool use_padding=true) + + + bool + insert_block_after + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratora15 + (Prototype *block, bool use_padding=true) + + + bool + delete_block + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratora16 + (bool use_padding=true) + + + void + clear + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratorb0 + () + + + ::FLAC__Metadata_SimpleIterator * + iterator_ + classFLAC_1_1Metadata_1_1SimpleIterator.html + FLAC_1_1Metadata_1_1SimpleIteratorp0 + + + FLAC::Metadata::SimpleIterator::Status + + + FLAC::Metadata::SimpleIterator::Status + classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status.html + + + Status + classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status.html + FLAC_1_1Metadata_1_1SimpleIterator_1_1Statusa0 + (::FLAC__Metadata_SimpleIteratorStatus status) + + + + operator::FLAC__Metadata_SimpleIteratorStatus + classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status.html + FLAC_1_1Metadata_1_1SimpleIterator_1_1Statusa1 + () const + + + const char * + as_cstring + classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status.html + FLAC_1_1Metadata_1_1SimpleIterator_1_1Statusa2 + () const + + + ::FLAC__Metadata_SimpleIteratorStatus + status_ + classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status.html + FLAC_1_1Metadata_1_1SimpleIterator_1_1Statusp0 + + + + + FLAC::Metadata::Chain + classFLAC_1_1Metadata_1_1Chain.html + + bool + is_valid + classFLAC_1_1Metadata_1_1Chain.html + FLAC_1_1Metadata_1_1Chaina2 + () const + + + Status + status + classFLAC_1_1Metadata_1_1Chain.html + FLAC_1_1Metadata_1_1Chaina3 + () + + + bool + read + classFLAC_1_1Metadata_1_1Chain.html + FLAC_1_1Metadata_1_1Chaina4 + (const char *filename, bool is_ogg=false) + + + bool + read + classFLAC_1_1Metadata_1_1Chain.html + FLAC_1_1Metadata_1_1Chaina5 + (FLAC__IOHandle handle, FLAC__IOCallbacks callbacks, bool is_ogg=false) + + + bool + check_if_tempfile_needed + classFLAC_1_1Metadata_1_1Chain.html + FLAC_1_1Metadata_1_1Chaina6 + (bool use_padding) + + + bool + write + classFLAC_1_1Metadata_1_1Chain.html + FLAC_1_1Metadata_1_1Chaina7 + (bool use_padding=true, bool preserve_file_stats=false) + + + bool + write + classFLAC_1_1Metadata_1_1Chain.html + FLAC_1_1Metadata_1_1Chaina8 + (bool use_padding,::FLAC__IOHandle handle,::FLAC__IOCallbacks callbacks) + + + bool + write + classFLAC_1_1Metadata_1_1Chain.html + FLAC_1_1Metadata_1_1Chaina9 + (bool use_padding,::FLAC__IOHandle handle,::FLAC__IOCallbacks callbacks,::FLAC__IOHandle temp_handle,::FLAC__IOCallbacks temp_callbacks) + + + void + merge_padding + classFLAC_1_1Metadata_1_1Chain.html + FLAC_1_1Metadata_1_1Chaina10 + () + + + void + sort_padding + classFLAC_1_1Metadata_1_1Chain.html + FLAC_1_1Metadata_1_1Chaina11 + () + + + virtual void + clear + classFLAC_1_1Metadata_1_1Chain.html + FLAC_1_1Metadata_1_1Chainb0 + () + + + ::FLAC__Metadata_Chain * + chain_ + classFLAC_1_1Metadata_1_1Chain.html + FLAC_1_1Metadata_1_1Chainp0 + + + + friend class + Iterator + classFLAC_1_1Metadata_1_1Chain.html + FLAC_1_1Metadata_1_1Chainn0 + + + FLAC::Metadata::Chain::Status + + + FLAC::Metadata::Chain::Status + classFLAC_1_1Metadata_1_1Chain_1_1Status.html + + + Status + classFLAC_1_1Metadata_1_1Chain_1_1Status.html + FLAC_1_1Metadata_1_1Chain_1_1Statusa0 + (::FLAC__Metadata_ChainStatus status) + + + + operator::FLAC__Metadata_ChainStatus + classFLAC_1_1Metadata_1_1Chain_1_1Status.html + FLAC_1_1Metadata_1_1Chain_1_1Statusa1 + () const + + + const char * + as_cstring + classFLAC_1_1Metadata_1_1Chain_1_1Status.html + FLAC_1_1Metadata_1_1Chain_1_1Statusa2 + () const + + + ::FLAC__Metadata_ChainStatus + status_ + classFLAC_1_1Metadata_1_1Chain_1_1Status.html + FLAC_1_1Metadata_1_1Chain_1_1Statusp0 + + + + + FLAC::Metadata::Iterator + classFLAC_1_1Metadata_1_1Iterator.html + + bool + is_valid + classFLAC_1_1Metadata_1_1Iterator.html + FLAC_1_1Metadata_1_1Iteratora2 + () const + + + void + init + classFLAC_1_1Metadata_1_1Iterator.html + FLAC_1_1Metadata_1_1Iteratora3 + (Chain &chain) + + + bool + next + classFLAC_1_1Metadata_1_1Iterator.html + FLAC_1_1Metadata_1_1Iteratora4 + () + + + bool + prev + classFLAC_1_1Metadata_1_1Iterator.html + FLAC_1_1Metadata_1_1Iteratora5 + () + + + ::FLAC__MetadataType + get_block_type + classFLAC_1_1Metadata_1_1Iterator.html + FLAC_1_1Metadata_1_1Iteratora6 + () const + + + Prototype * + get_block + classFLAC_1_1Metadata_1_1Iterator.html + FLAC_1_1Metadata_1_1Iteratora7 + () + + + bool + set_block + classFLAC_1_1Metadata_1_1Iterator.html + FLAC_1_1Metadata_1_1Iteratora8 + (Prototype *block) + + + bool + delete_block + classFLAC_1_1Metadata_1_1Iterator.html + FLAC_1_1Metadata_1_1Iteratora9 + (bool replace_with_padding) + + + bool + insert_block_before + classFLAC_1_1Metadata_1_1Iterator.html + FLAC_1_1Metadata_1_1Iteratora10 + (Prototype *block) + + + bool + insert_block_after + classFLAC_1_1Metadata_1_1Iterator.html + FLAC_1_1Metadata_1_1Iteratora11 + (Prototype *block) + + + virtual void + clear + classFLAC_1_1Metadata_1_1Iterator.html + FLAC_1_1Metadata_1_1Iteratorb0 + () + + + ::FLAC__Metadata_Iterator * + iterator_ + classFLAC_1_1Metadata_1_1Iterator.html + FLAC_1_1Metadata_1_1Iteratorp0 + + + + diff --git a/3rdparty/libflac/doc/Makefile.am b/3rdparty/libflac/doc/Makefile.am new file mode 100644 index 0000000..19a9db0 --- /dev/null +++ b/3rdparty/libflac/doc/Makefile.am @@ -0,0 +1,43 @@ +# flac - Command-line FLAC encoder/decoder +# Copyright (C) 2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +AUTOMAKE_OPTIONS = foreign + +SUBDIRS = . html + +if FLaC__HAS_DOXYGEN +FLAC.tag: Doxyfile + doxygen Doxyfile + rm -rf html/api + mv doxytmp/html html/api + rm -rf doxytmp +else +FLAC.tag: + echo "*** Warning: Doxygen not found; documentation will not be built." + touch $@ + mkdir -p html/api +endif + +docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION) + +doc_DATA = \ + FLAC.tag + +EXTRA_DIST = Doxyfile Makefile.lite doxygen.footer.html doxygen.header.html $(doc_DATA) + +maintainer-clean-local: + rm -rf FLAC.tag html/api doxytmp diff --git a/3rdparty/libflac/doc/Makefile.in b/3rdparty/libflac/doc/Makefile.in new file mode 100644 index 0000000..fe851fa --- /dev/null +++ b/3rdparty/libflac/doc/Makefile.in @@ -0,0 +1,566 @@ +# Makefile.in generated by automake 1.7.9 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# flac - Command-line FLAC encoder/decoder +# Copyright (C) 2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_FALSE = @DEBUG_FALSE@ +DEBUG_TRUE = @DEBUG_TRUE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLAC__TEST_LEVEL = @FLAC__TEST_LEVEL@ +FLAC__TEST_WITH_VALGRIND = @FLAC__TEST_WITH_VALGRIND@ +FLaC__CPU_IA32_FALSE = @FLaC__CPU_IA32_FALSE@ +FLaC__CPU_IA32_TRUE = @FLaC__CPU_IA32_TRUE@ +FLaC__CPU_PPC_FALSE = @FLaC__CPU_PPC_FALSE@ +FLaC__CPU_PPC_TRUE = @FLaC__CPU_PPC_TRUE@ +FLaC__CPU_SPARC_FALSE = @FLaC__CPU_SPARC_FALSE@ +FLaC__CPU_SPARC_TRUE = @FLaC__CPU_SPARC_TRUE@ +FLaC__HAS_AS_FALSE = @FLaC__HAS_AS_FALSE@ +FLaC__HAS_AS_TRUE = @FLaC__HAS_AS_TRUE@ +FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@ +FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@ +FLaC__HAS_DOCBOOK_TO_MAN_FALSE = @FLaC__HAS_DOCBOOK_TO_MAN_FALSE@ +FLaC__HAS_DOCBOOK_TO_MAN_TRUE = @FLaC__HAS_DOCBOOK_TO_MAN_TRUE@ +FLaC__HAS_DOXYGEN_FALSE = @FLaC__HAS_DOXYGEN_FALSE@ +FLaC__HAS_DOXYGEN_TRUE = @FLaC__HAS_DOXYGEN_TRUE@ +FLaC__HAS_GAS_FALSE = @FLaC__HAS_GAS_FALSE@ +FLaC__HAS_GAS_TRUE = @FLaC__HAS_GAS_TRUE@ +FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@ +FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@ +FLaC__HAS_NASM_FALSE = @FLaC__HAS_NASM_FALSE@ +FLaC__HAS_NASM_TRUE = @FLaC__HAS_NASM_TRUE@ +FLaC__HAS_OGG_FALSE = @FLaC__HAS_OGG_FALSE@ +FLaC__HAS_OGG_TRUE = @FLaC__HAS_OGG_TRUE@ +FLaC__HAS_XMMS_FALSE = @FLaC__HAS_XMMS_FALSE@ +FLaC__HAS_XMMS_TRUE = @FLaC__HAS_XMMS_TRUE@ +FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE@ +FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE@ +FLaC__NO_ASM_FALSE = @FLaC__NO_ASM_FALSE@ +FLaC__NO_ASM_TRUE = @FLaC__NO_ASM_TRUE@ +FLaC__SSE_OS_FALSE = @FLaC__SSE_OS_FALSE@ +FLaC__SSE_OS_TRUE = @FLaC__SSE_OS_TRUE@ +FLaC__SYS_DARWIN_FALSE = @FLaC__SYS_DARWIN_FALSE@ +FLaC__SYS_DARWIN_TRUE = @FLaC__SYS_DARWIN_TRUE@ +FLaC__SYS_LINUX_FALSE = @FLaC__SYS_LINUX_FALSE@ +FLaC__SYS_LINUX_TRUE = @FLaC__SYS_LINUX_TRUE@ +FLaC__USE_3DNOW_FALSE = @FLaC__USE_3DNOW_FALSE@ +FLaC__USE_3DNOW_TRUE = @FLaC__USE_3DNOW_TRUE@ +FLaC__USE_ALTIVEC_FALSE = @FLaC__USE_ALTIVEC_FALSE@ +FLaC__USE_ALTIVEC_TRUE = @FLaC__USE_ALTIVEC_TRUE@ +FLaC__WITH_CPPLIBS_FALSE = @FLaC__WITH_CPPLIBS_FALSE@ +FLaC__WITH_CPPLIBS_TRUE = @FLaC__WITH_CPPLIBS_TRUE@ +GAS = @GAS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +MINGW_WINSOCK_LIBS = @MINGW_WINSOCK_LIBS@ +NASM = @NASM@ +OBJEXT = @OBJEXT@ +OBJ_FORMAT = @OBJ_FORMAT@ +OGG_CFLAGS = @OGG_CFLAGS@ +OGG_LIBS = @OGG_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XMMS_CFLAGS = @XMMS_CFLAGS@ +XMMS_CONFIG = @XMMS_CONFIG@ +XMMS_DATA_DIR = @XMMS_DATA_DIR@ +XMMS_EFFECT_PLUGIN_DIR = @XMMS_EFFECT_PLUGIN_DIR@ +XMMS_GENERAL_PLUGIN_DIR = @XMMS_GENERAL_PLUGIN_DIR@ +XMMS_INPUT_PLUGIN_DIR = @XMMS_INPUT_PLUGIN_DIR@ +XMMS_LIBS = @XMMS_LIBS@ +XMMS_OUTPUT_PLUGIN_DIR = @XMMS_OUTPUT_PLUGIN_DIR@ +XMMS_PLUGIN_DIR = @XMMS_PLUGIN_DIR@ +XMMS_VERSION = @XMMS_VERSION@ +XMMS_VISUALIZATION_PLUGIN_DIR = @XMMS_VISUALIZATION_PLUGIN_DIR@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +AUTOMAKE_OPTIONS = foreign + +SUBDIRS = . html + +docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION) + +doc_DATA = \ + FLAC.tag + + +EXTRA_DIST = Doxyfile Makefile.lite doxygen.footer.html doxygen.header.html $(doc_DATA) +subdir = doc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DATA = $(doc_DATA) + + +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive +DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +DIST_SUBDIRS = $(SUBDIRS) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +docDATA_INSTALL = $(INSTALL_DATA) +install-docDATA: $(doc_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(docdir) + @list='$(doc_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f"; \ + $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f; \ + done + +uninstall-docDATA: + @$(NORMAL_UNINSTALL) + @list='$(doc_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(docdir)/$$f"; \ + rm -f $(DESTDIR)$(docdir)/$$f; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if (etags --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + else \ + include_option=--include; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) +installdirs: installdirs-recursive +installdirs-am: + $(mkinstalldirs) $(DESTDIR)$(docdir) + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: install-docDATA + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic \ + maintainer-clean-local + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-docDATA uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive distclean distclean-generic distclean-libtool \ + distclean-recursive distclean-tags distdir dvi dvi-am \ + dvi-recursive info info-am info-recursive install install-am \ + install-data install-data-am install-data-recursive \ + install-docDATA install-exec install-exec-am \ + install-exec-recursive install-info install-info-am \ + install-info-recursive install-man install-recursive \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am installdirs-recursive maintainer-clean \ + maintainer-clean-generic maintainer-clean-local \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive pdf pdf-am \ + pdf-recursive ps ps-am ps-recursive tags tags-recursive \ + uninstall uninstall-am uninstall-docDATA uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + + +@FLaC__HAS_DOXYGEN_TRUE@FLAC.tag: Doxyfile +@FLaC__HAS_DOXYGEN_TRUE@ doxygen Doxyfile +@FLaC__HAS_DOXYGEN_TRUE@ rm -rf html/api +@FLaC__HAS_DOXYGEN_TRUE@ mv doxytmp/html html/api +@FLaC__HAS_DOXYGEN_TRUE@ rm -rf doxytmp +@FLaC__HAS_DOXYGEN_FALSE@FLAC.tag: +@FLaC__HAS_DOXYGEN_FALSE@ echo "*** Warning: Doxygen not found; documentation will not be built." +@FLaC__HAS_DOXYGEN_FALSE@ touch $@ +@FLaC__HAS_DOXYGEN_FALSE@ mkdir -p html/api + +maintainer-clean-local: + rm -rf FLAC.tag html/api doxytmp +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/3rdparty/libflac/doc/Makefile.lite b/3rdparty/libflac/doc/Makefile.lite new file mode 100644 index 0000000..d53375a --- /dev/null +++ b/3rdparty/libflac/doc/Makefile.lite @@ -0,0 +1,28 @@ +# flac - Command-line FLAC encoder/decoder +# Copyright (C) 2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +topdir = .. + +FLAC.tag: Doxyfile + rm -rf doxytmp + doxygen Doxyfile + rm -rf html/api + mv doxytmp/html html/api + rm -rf doxytmp + +clean: + rm -rf FLAC.tag html/api doxytmp diff --git a/3rdparty/libflac/doc/doxygen.footer.html b/3rdparty/libflac/doc/doxygen.footer.html new file mode 100644 index 0000000..bee40c3 --- /dev/null +++ b/3rdparty/libflac/doc/doxygen.footer.html @@ -0,0 +1,23 @@ + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/doxygen.header.html b/3rdparty/libflac/doc/doxygen.header.html new file mode 100644 index 0000000..c1ee98f --- /dev/null +++ b/3rdparty/libflac/doc/doxygen.header.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/3rdparty/libflac/doc/html/Makefile.am b/3rdparty/libflac/doc/html/Makefile.am new file mode 100644 index 0000000..2879c31 --- /dev/null +++ b/3rdparty/libflac/doc/html/Makefile.am @@ -0,0 +1,80 @@ +# FLAC - Free Lossless Audio Codec +# Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This file is part the FLAC project. FLAC is comprised of several +# components distributed under difference licenses. The codec libraries +# are distributed under Xiph.Org's BSD-like license (see the file +# COPYING.Xiph in this distribution). All other programs, libraries, and +# plugins are distributed under the GPL (see COPYING.GPL). The documentation +# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the +# FLAC distribution contains at the top the terms under which it may be +# distributed. +# +# Since this particular file is relevant to all components of FLAC, +# it may be distributed under the Xiph.Org license, which is the least +# restrictive of those mentioned above. See the file COPYING.Xiph in this +# distribution. + +AUTOMAKE_OPTIONS = foreign + +SUBDIRS = ru images + +docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)/html + +doc_DATA = \ + changelog.html \ + comparison.html \ + comparison__chopin_prelude_24.html \ + comparison__dream_theater_600.html \ + comparison__eddie_warner_titus.html \ + comparison__fanfare_de_l_eventail_de_jeanne.html \ + comparison__gloria_estefan_conga.html \ + comparison__hand_in_my_pocket.html \ + comparison__l_sub_raga_sivapriya.html \ + comparison__laetatus_sum.html \ + comparison__mummified_in_barbed_wire.html \ + comparison__prokofiev_pcon3_3.html \ + comparison__ravel_sq4_4.html \ + comparison__scarlatti_k42.html \ + comparison__tool_forty_six_and_2.html \ + comparison__white_room.html \ + comparison_all_cpudectime.html \ + comparison_all_cpuenctime.html \ + comparison_all_procdectime.html \ + comparison_all_procenctime.html \ + comparison_all_ratio.html \ + developers.html \ + documentation.html \ + documentation_bugs.html \ + documentation_example_code.html \ + documentation_format_overview.html \ + documentation_tasks.html \ + documentation_tools.html \ + documentation_tools_flac.html \ + documentation_tools_metaflac.html \ + documentation_tools_plugins.html \ + download.html \ + faq.html \ + favicon.ico \ + features.html \ + flac.css \ + format.html \ + id.html \ + index.html \ + itunes.html \ + license.html \ + links.html \ + news.html \ + ogg_mapping.html + +EXTRA_DIST = $(doc_DATA) api + +# The install targets don't copy whole directories so we have to +# handle 'api/' specially: +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(docdir)/api + (cd api && $(INSTALL_DATA) * $(DESTDIR)$(docdir)/api) +uninstall-local: + rm -rf $(DESTDIR)$(docdir)/api +maintainer-clean-local: + rm -rf api diff --git a/3rdparty/libflac/doc/html/Makefile.in b/3rdparty/libflac/doc/html/Makefile.in new file mode 100644 index 0000000..fbdb57e --- /dev/null +++ b/3rdparty/libflac/doc/html/Makefile.in @@ -0,0 +1,607 @@ +# Makefile.in generated by automake 1.7.9 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# FLAC - Free Lossless Audio Codec +# Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This file is part the FLAC project. FLAC is comprised of several +# components distributed under difference licenses. The codec libraries +# are distributed under Xiph.Org's BSD-like license (see the file +# COPYING.Xiph in this distribution). All other programs, libraries, and +# plugins are distributed under the GPL (see COPYING.GPL). The documentation +# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the +# FLAC distribution contains at the top the terms under which it may be +# distributed. +# +# Since this particular file is relevant to all components of FLAC, +# it may be distributed under the Xiph.Org license, which is the least +# restrictive of those mentioned above. See the file COPYING.Xiph in this +# distribution. + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_FALSE = @DEBUG_FALSE@ +DEBUG_TRUE = @DEBUG_TRUE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLAC__TEST_LEVEL = @FLAC__TEST_LEVEL@ +FLAC__TEST_WITH_VALGRIND = @FLAC__TEST_WITH_VALGRIND@ +FLaC__CPU_IA32_FALSE = @FLaC__CPU_IA32_FALSE@ +FLaC__CPU_IA32_TRUE = @FLaC__CPU_IA32_TRUE@ +FLaC__CPU_PPC_FALSE = @FLaC__CPU_PPC_FALSE@ +FLaC__CPU_PPC_TRUE = @FLaC__CPU_PPC_TRUE@ +FLaC__CPU_SPARC_FALSE = @FLaC__CPU_SPARC_FALSE@ +FLaC__CPU_SPARC_TRUE = @FLaC__CPU_SPARC_TRUE@ +FLaC__HAS_AS_FALSE = @FLaC__HAS_AS_FALSE@ +FLaC__HAS_AS_TRUE = @FLaC__HAS_AS_TRUE@ +FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@ +FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@ +FLaC__HAS_DOCBOOK_TO_MAN_FALSE = @FLaC__HAS_DOCBOOK_TO_MAN_FALSE@ +FLaC__HAS_DOCBOOK_TO_MAN_TRUE = @FLaC__HAS_DOCBOOK_TO_MAN_TRUE@ +FLaC__HAS_DOXYGEN_FALSE = @FLaC__HAS_DOXYGEN_FALSE@ +FLaC__HAS_DOXYGEN_TRUE = @FLaC__HAS_DOXYGEN_TRUE@ +FLaC__HAS_GAS_FALSE = @FLaC__HAS_GAS_FALSE@ +FLaC__HAS_GAS_TRUE = @FLaC__HAS_GAS_TRUE@ +FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@ +FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@ +FLaC__HAS_NASM_FALSE = @FLaC__HAS_NASM_FALSE@ +FLaC__HAS_NASM_TRUE = @FLaC__HAS_NASM_TRUE@ +FLaC__HAS_OGG_FALSE = @FLaC__HAS_OGG_FALSE@ +FLaC__HAS_OGG_TRUE = @FLaC__HAS_OGG_TRUE@ +FLaC__HAS_XMMS_FALSE = @FLaC__HAS_XMMS_FALSE@ +FLaC__HAS_XMMS_TRUE = @FLaC__HAS_XMMS_TRUE@ +FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE@ +FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE@ +FLaC__NO_ASM_FALSE = @FLaC__NO_ASM_FALSE@ +FLaC__NO_ASM_TRUE = @FLaC__NO_ASM_TRUE@ +FLaC__SSE_OS_FALSE = @FLaC__SSE_OS_FALSE@ +FLaC__SSE_OS_TRUE = @FLaC__SSE_OS_TRUE@ +FLaC__SYS_DARWIN_FALSE = @FLaC__SYS_DARWIN_FALSE@ +FLaC__SYS_DARWIN_TRUE = @FLaC__SYS_DARWIN_TRUE@ +FLaC__SYS_LINUX_FALSE = @FLaC__SYS_LINUX_FALSE@ +FLaC__SYS_LINUX_TRUE = @FLaC__SYS_LINUX_TRUE@ +FLaC__USE_3DNOW_FALSE = @FLaC__USE_3DNOW_FALSE@ +FLaC__USE_3DNOW_TRUE = @FLaC__USE_3DNOW_TRUE@ +FLaC__USE_ALTIVEC_FALSE = @FLaC__USE_ALTIVEC_FALSE@ +FLaC__USE_ALTIVEC_TRUE = @FLaC__USE_ALTIVEC_TRUE@ +FLaC__WITH_CPPLIBS_FALSE = @FLaC__WITH_CPPLIBS_FALSE@ +FLaC__WITH_CPPLIBS_TRUE = @FLaC__WITH_CPPLIBS_TRUE@ +GAS = @GAS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +MINGW_WINSOCK_LIBS = @MINGW_WINSOCK_LIBS@ +NASM = @NASM@ +OBJEXT = @OBJEXT@ +OBJ_FORMAT = @OBJ_FORMAT@ +OGG_CFLAGS = @OGG_CFLAGS@ +OGG_LIBS = @OGG_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XMMS_CFLAGS = @XMMS_CFLAGS@ +XMMS_CONFIG = @XMMS_CONFIG@ +XMMS_DATA_DIR = @XMMS_DATA_DIR@ +XMMS_EFFECT_PLUGIN_DIR = @XMMS_EFFECT_PLUGIN_DIR@ +XMMS_GENERAL_PLUGIN_DIR = @XMMS_GENERAL_PLUGIN_DIR@ +XMMS_INPUT_PLUGIN_DIR = @XMMS_INPUT_PLUGIN_DIR@ +XMMS_LIBS = @XMMS_LIBS@ +XMMS_OUTPUT_PLUGIN_DIR = @XMMS_OUTPUT_PLUGIN_DIR@ +XMMS_PLUGIN_DIR = @XMMS_PLUGIN_DIR@ +XMMS_VERSION = @XMMS_VERSION@ +XMMS_VISUALIZATION_PLUGIN_DIR = @XMMS_VISUALIZATION_PLUGIN_DIR@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +AUTOMAKE_OPTIONS = foreign + +SUBDIRS = ru images + +docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)/html + +doc_DATA = \ + changelog.html \ + comparison.html \ + comparison__chopin_prelude_24.html \ + comparison__dream_theater_600.html \ + comparison__eddie_warner_titus.html \ + comparison__fanfare_de_l_eventail_de_jeanne.html \ + comparison__gloria_estefan_conga.html \ + comparison__hand_in_my_pocket.html \ + comparison__l_sub_raga_sivapriya.html \ + comparison__laetatus_sum.html \ + comparison__mummified_in_barbed_wire.html \ + comparison__prokofiev_pcon3_3.html \ + comparison__ravel_sq4_4.html \ + comparison__scarlatti_k42.html \ + comparison__tool_forty_six_and_2.html \ + comparison__white_room.html \ + comparison_all_cpudectime.html \ + comparison_all_cpuenctime.html \ + comparison_all_procdectime.html \ + comparison_all_procenctime.html \ + comparison_all_ratio.html \ + developers.html \ + documentation.html \ + documentation_bugs.html \ + documentation_example_code.html \ + documentation_format_overview.html \ + documentation_tasks.html \ + documentation_tools.html \ + documentation_tools_flac.html \ + documentation_tools_metaflac.html \ + documentation_tools_plugins.html \ + download.html \ + faq.html \ + favicon.ico \ + features.html \ + flac.css \ + format.html \ + id.html \ + index.html \ + itunes.html \ + license.html \ + links.html \ + news.html \ + ogg_mapping.html + + +EXTRA_DIST = $(doc_DATA) api +subdir = doc/html +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DATA = $(doc_DATA) + + +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive +DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +DIST_SUBDIRS = $(SUBDIRS) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/html/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +docDATA_INSTALL = $(INSTALL_DATA) +install-docDATA: $(doc_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(docdir) + @list='$(doc_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f"; \ + $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f; \ + done + +uninstall-docDATA: + @$(NORMAL_UNINSTALL) + @list='$(doc_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(docdir)/$$f"; \ + rm -f $(DESTDIR)$(docdir)/$$f; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if (etags --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + else \ + include_option=--include; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) +installdirs: installdirs-recursive +installdirs-am: + $(mkinstalldirs) $(DESTDIR)$(docdir) + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: install-data-local install-docDATA + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic \ + maintainer-clean-local + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-docDATA uninstall-info-am uninstall-local + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive distclean distclean-generic distclean-libtool \ + distclean-recursive distclean-tags distdir dvi dvi-am \ + dvi-recursive info info-am info-recursive install install-am \ + install-data install-data-am install-data-local \ + install-data-recursive install-docDATA install-exec \ + install-exec-am install-exec-recursive install-info \ + install-info-am install-info-recursive install-man \ + install-recursive install-strip installcheck installcheck-am \ + installdirs installdirs-am installdirs-recursive \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-local maintainer-clean-recursive mostlyclean \ + mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ + pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ + tags-recursive uninstall uninstall-am uninstall-docDATA \ + uninstall-info-am uninstall-info-recursive uninstall-local \ + uninstall-recursive + + +# The install targets don't copy whole directories so we have to +# handle 'api/' specially: +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(docdir)/api + (cd api && $(INSTALL_DATA) * $(DESTDIR)$(docdir)/api) +uninstall-local: + rm -rf $(DESTDIR)$(docdir)/api +maintainer-clean-local: + rm -rf api +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/3rdparty/libflac/doc/html/api/+_2all_8h-source.html b/3rdparty/libflac/doc/html/api/+_2all_8h-source.html new file mode 100644 index 0000000..18e1fdc --- /dev/null +++ b/3rdparty/libflac/doc/html/api/+_2all_8h-source.html @@ -0,0 +1,73 @@ + + +FLAC: include/FLAC++/all.h Source File + + + +
+ +

all.h

00001 /* libFLAC++ - Free Lossless Audio Codec library
+00002  * Copyright (C) 2002,2003,2004,2005,2006,2007  Josh Coalson
+00003  *
+00004  * Redistribution and use in source and binary forms, with or without
+00005  * modification, are permitted provided that the following conditions
+00006  * are met:
+00007  *
+00008  * - Redistributions of source code must retain the above copyright
+00009  * notice, this list of conditions and the following disclaimer.
+00010  *
+00011  * - Redistributions in binary form must reproduce the above copyright
+00012  * notice, this list of conditions and the following disclaimer in the
+00013  * documentation and/or other materials provided with the distribution.
+00014  *
+00015  * - Neither the name of the Xiph.org Foundation nor the names of its
+00016  * contributors may be used to endorse or promote products derived from
+00017  * this software without specific prior written permission.
+00018  *
+00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+00020  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+00022  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+00023  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+00024  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+00025  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+00026  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+00027  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00028  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00029  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00030  */
+00031 
+00032 #ifndef FLACPP__ALL_H
+00033 #define FLACPP__ALL_H
+00034 
+00035 #include "export.h"
+00036 
+00037 #include "encoder.h"
+00038 #include "decoder.h"
+00039 #include "metadata.h"
+00040 
+00048 #endif
+
+
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/+_2export_8h-source.html b/3rdparty/libflac/doc/html/api/+_2export_8h-source.html new file mode 100644 index 0000000..0a572f9 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/+_2export_8h-source.html @@ -0,0 +1,89 @@ + + +FLAC: include/FLAC++/export.h Source File + + + + + +

export.h

Go to the documentation of this file.
00001 /* libFLAC++ - Free Lossless Audio Codec library
+00002  * Copyright (C) 2002,2003,2004,2005,2006,2007  Josh Coalson
+00003  *
+00004  * Redistribution and use in source and binary forms, with or without
+00005  * modification, are permitted provided that the following conditions
+00006  * are met:
+00007  *
+00008  * - Redistributions of source code must retain the above copyright
+00009  * notice, this list of conditions and the following disclaimer.
+00010  *
+00011  * - Redistributions in binary form must reproduce the above copyright
+00012  * notice, this list of conditions and the following disclaimer in the
+00013  * documentation and/or other materials provided with the distribution.
+00014  *
+00015  * - Neither the name of the Xiph.org Foundation nor the names of its
+00016  * contributors may be used to endorse or promote products derived from
+00017  * this software without specific prior written permission.
+00018  *
+00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+00020  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+00022  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+00023  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+00024  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+00025  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+00026  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+00027  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00028  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00029  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00030  */
+00031 
+00032 #ifndef FLACPP__EXPORT_H
+00033 #define FLACPP__EXPORT_H
+00034 
+00058 #if defined(FLAC__NO_DLL) || !defined(_MSC_VER)
+00059 #define FLACPP_API
+00060 
+00061 #else
+00062 
+00063 #ifdef FLACPP_API_EXPORTS
+00064 #define FLACPP_API  _declspec(dllexport)
+00065 #else
+00066 #define FLACPP_API  _declspec(dllimport)
+00067 
+00068 #endif
+00069 #endif
+00070 
+00071 /* These #defines will mirror the libtool-based library version number, see
+00072  * http://www.gnu.org/software/libtool/manual.html#Libtool-versioning
+00073  */
+00074 #define FLACPP_API_VERSION_CURRENT 8
+00075 #define FLACPP_API_VERSION_REVISION 0
+00076 #define FLACPP_API_VERSION_AGE 2
+00077 
+00078 /* \} */
+00079 
+00080 #endif
+
+
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/+_2export_8h.html b/3rdparty/libflac/doc/html/api/+_2export_8h.html new file mode 100644 index 0000000..c3a482c --- /dev/null +++ b/3rdparty/libflac/doc/html/api/+_2export_8h.html @@ -0,0 +1,55 @@ + + +FLAC: include/FLAC++/export.h File Reference + + + + + +

export.h File Reference


Detailed Description

+This module contains #defines and symbols for exporting function calls, and providing version information and compiled-in features. +

+See the export module. +

+ +

+Go to the source code of this file. + + + + + + + + + + +

Defines

+#define FLACPP_API
+#define FLACPP_API_VERSION_CURRENT   8
+#define FLACPP_API_VERSION_REVISION   0
+#define FLACPP_API_VERSION_AGE   2
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/+_2metadata_8h-source.html b/3rdparty/libflac/doc/html/api/+_2metadata_8h-source.html new file mode 100644 index 0000000..a2b69d7 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/+_2metadata_8h-source.html @@ -0,0 +1,751 @@ + + +FLAC: include/FLAC++/metadata.h Source File + + + + + +

metadata.h

Go to the documentation of this file.
00001 /* libFLAC++ - Free Lossless Audio Codec library
+00002  * Copyright (C) 2002,2003,2004,2005,2006,2007  Josh Coalson
+00003  *
+00004  * Redistribution and use in source and binary forms, with or without
+00005  * modification, are permitted provided that the following conditions
+00006  * are met:
+00007  *
+00008  * - Redistributions of source code must retain the above copyright
+00009  * notice, this list of conditions and the following disclaimer.
+00010  *
+00011  * - Redistributions in binary form must reproduce the above copyright
+00012  * notice, this list of conditions and the following disclaimer in the
+00013  * documentation and/or other materials provided with the distribution.
+00014  *
+00015  * - Neither the name of the Xiph.org Foundation nor the names of its
+00016  * contributors may be used to endorse or promote products derived from
+00017  * this software without specific prior written permission.
+00018  *
+00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+00020  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+00022  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+00023  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+00024  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+00025  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+00026  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+00027  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00028  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00029  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00030  */
+00031 
+00032 #ifndef FLACPP__METADATA_H
+00033 #define FLACPP__METADATA_H
+00034 
+00035 #include "export.h"
+00036 
+00037 #include "FLAC/metadata.h"
+00038 
+00039 // ===============================================================
+00040 //
+00041 //  Full documentation for the metadata interface can be found
+00042 //  in the C layer in include/FLAC/metadata.h
+00043 //
+00044 // ===============================================================
+00045 
+00074 namespace FLAC {
+00075     namespace Metadata {
+00076 
+00077         // ============================================================
+00078         //
+00079         //  Metadata objects
+00080         //
+00081         // ============================================================
+00082 
+00108         class FLACPP_API Prototype {
+00109         protected:
+00111 
+00114             Prototype(const Prototype &);
+00115             Prototype(const ::FLAC__StreamMetadata &);
+00116             Prototype(const ::FLAC__StreamMetadata *);
+00118 
+00129             Prototype(::FLAC__StreamMetadata *object, bool copy);
+00130 
+00132 
+00133             Prototype &operator=(const Prototype &);
+00134             Prototype &operator=(const ::FLAC__StreamMetadata &);
+00135             Prototype &operator=(const ::FLAC__StreamMetadata *);
+00137 
+00141             Prototype &assign_object(::FLAC__StreamMetadata *object, bool copy);
+00142 
+00145             virtual void clear();
+00146 
+00147             ::FLAC__StreamMetadata *object_;
+00148         public:
+00151             virtual ~Prototype();
+00152 
+00154 
+00156             inline bool operator==(const Prototype &) const;
+00157             inline bool operator==(const ::FLAC__StreamMetadata &) const;
+00158             inline bool operator==(const ::FLAC__StreamMetadata *) const;
+00160 
+00162 
+00163             inline bool operator!=(const Prototype &) const;
+00164             inline bool operator!=(const ::FLAC__StreamMetadata &) const;
+00165             inline bool operator!=(const ::FLAC__StreamMetadata *) const;
+00167 
+00168             friend class SimpleIterator;
+00169             friend class Iterator;
+00170 
+00175             inline bool is_valid() const;
+00176 
+00183             bool get_is_last() const;
+00184 
+00190 			::FLAC__MetadataType get_type() const;
+00191 
+00201             unsigned get_length() const;
+00202 
+00209             void set_is_last(bool);
+00210 
+00218             inline operator const ::FLAC__StreamMetadata *() const;
+00219         private:
+00221             Prototype();
+00222 
+00223             // These are used only by Iterator
+00224             bool is_reference_;
+00225             inline void set_reference(bool x) { is_reference_ = x; }
+00226         };
+00227 
+00228 #ifdef _MSC_VER
+00229 // warning C4800: 'int' : forcing to bool 'true' or 'false' (performance warning)
+00230 #pragma warning ( disable : 4800 )
+00231 #endif
+00232 
+00233         inline bool Prototype::operator==(const Prototype &object) const
+00234         { return (bool)::FLAC__metadata_object_is_equal(object_, object.object_); }
+00235 
+00236         inline bool Prototype::operator==(const ::FLAC__StreamMetadata &object) const
+00237         { return (bool)::FLAC__metadata_object_is_equal(object_, &object); }
+00238 
+00239         inline bool Prototype::operator==(const ::FLAC__StreamMetadata *object) const
+00240         { return (bool)::FLAC__metadata_object_is_equal(object_, object); }
+00241 
+00242 #ifdef _MSC_VER
+00243 // @@@ how to re-enable?  the following doesn't work
+00244 // #pragma warning ( enable : 4800 )
+00245 #endif
+00246 
+00247         inline bool Prototype::operator!=(const Prototype &object) const
+00248         { return !operator==(object); }
+00249 
+00250         inline bool Prototype::operator!=(const ::FLAC__StreamMetadata &object) const
+00251         { return !operator==(object); }
+00252 
+00253         inline bool Prototype::operator!=(const ::FLAC__StreamMetadata *object) const
+00254         { return !operator==(object); }
+00255 
+00256         inline bool Prototype::is_valid() const
+00257         { return 0 != object_; }
+00258 
+00259         inline Prototype::operator const ::FLAC__StreamMetadata *() const
+00260         { return object_; }
+00261 
+00263         FLACPP_API Prototype *clone(const Prototype *);
+00264 
+00265 
+00270         class FLACPP_API StreamInfo : public Prototype {
+00271         public:
+00272             StreamInfo();
+00273 
+00275 
+00278             inline StreamInfo(const StreamInfo &object): Prototype(object) { }
+00279             inline StreamInfo(const ::FLAC__StreamMetadata &object): Prototype(object) { }
+00280             inline StreamInfo(const ::FLAC__StreamMetadata *object): Prototype(object) { }
+00282 
+00286             inline StreamInfo(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
+00287 
+00288             ~StreamInfo();
+00289 
+00291 
+00292             inline StreamInfo &operator=(const StreamInfo &object) { Prototype::operator=(object); return *this; }
+00293             inline StreamInfo &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
+00294             inline StreamInfo &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
+00296 
+00300             inline StreamInfo &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
+00301 
+00303 
+00304             inline bool operator==(const StreamInfo &object) const { return Prototype::operator==(object); }
+00305             inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
+00306             inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
+00308 
+00310 
+00311             inline bool operator!=(const StreamInfo &object) const { return Prototype::operator!=(object); }
+00312             inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
+00313             inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
+00315 
+00317 
+00318             unsigned get_min_blocksize() const;
+00319             unsigned get_max_blocksize() const;
+00320             unsigned get_min_framesize() const;
+00321             unsigned get_max_framesize() const;
+00322             unsigned get_sample_rate() const;
+00323             unsigned get_channels() const;
+00324             unsigned get_bits_per_sample() const;
+00325             FLAC__uint64 get_total_samples() const;
+00326             const FLAC__byte *get_md5sum() const;
+00327 
+00328             void set_min_blocksize(unsigned value);
+00329             void set_max_blocksize(unsigned value);
+00330             void set_min_framesize(unsigned value);
+00331             void set_max_framesize(unsigned value);
+00332             void set_sample_rate(unsigned value);
+00333             void set_channels(unsigned value);
+00334             void set_bits_per_sample(unsigned value);
+00335             void set_total_samples(FLAC__uint64 value);
+00336             void set_md5sum(const FLAC__byte value[16]);
+00338         };
+00339 
+00344         class FLACPP_API Padding : public Prototype {
+00345         public:
+00346             Padding();
+00347 
+00349 
+00352             inline Padding(const Padding &object): Prototype(object) { }
+00353             inline Padding(const ::FLAC__StreamMetadata &object): Prototype(object) { }
+00354             inline Padding(const ::FLAC__StreamMetadata *object): Prototype(object) { }
+00356 
+00360             inline Padding(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
+00361 
+00362             ~Padding();
+00363 
+00365 
+00366             inline Padding &operator=(const Padding &object) { Prototype::operator=(object); return *this; }
+00367             inline Padding &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
+00368             inline Padding &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
+00370 
+00374             inline Padding &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
+00375 
+00377 
+00378             inline bool operator==(const Padding &object) const { return Prototype::operator==(object); }
+00379             inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
+00380             inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
+00382 
+00384 
+00385             inline bool operator!=(const Padding &object) const { return Prototype::operator!=(object); }
+00386             inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
+00387             inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
+00389 
+00390             void set_length(unsigned length);
+00391         };
+00392 
+00397         class FLACPP_API Application : public Prototype {
+00398         public:
+00399             Application();
+00400             //
+00402 
+00405             inline Application(const Application &object): Prototype(object) { }
+00406             inline Application(const ::FLAC__StreamMetadata &object): Prototype(object) { }
+00407             inline Application(const ::FLAC__StreamMetadata *object): Prototype(object) { }
+00409 
+00413             inline Application(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
+00414 
+00415             ~Application();
+00416 
+00418 
+00419             inline Application &operator=(const Application &object) { Prototype::operator=(object); return *this; }
+00420             inline Application &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
+00421             inline Application &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
+00423 
+00427             inline Application &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
+00428 
+00430 
+00431             inline bool operator==(const Application &object) const { return Prototype::operator==(object); }
+00432             inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
+00433             inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
+00435 
+00437 
+00438             inline bool operator!=(const Application &object) const { return Prototype::operator!=(object); }
+00439             inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
+00440             inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
+00442 
+00443             const FLAC__byte *get_id() const;
+00444             const FLAC__byte *get_data() const;
+00445 
+00446             void set_id(const FLAC__byte value[4]);
+00448             bool set_data(const FLAC__byte *data, unsigned length);
+00449             bool set_data(FLAC__byte *data, unsigned length, bool copy);
+00450         };
+00451 
+00456         class FLACPP_API SeekTable : public Prototype {
+00457         public:
+00458             SeekTable();
+00459 
+00461 
+00464             inline SeekTable(const SeekTable &object): Prototype(object) { }
+00465             inline SeekTable(const ::FLAC__StreamMetadata &object): Prototype(object) { }
+00466             inline SeekTable(const ::FLAC__StreamMetadata *object): Prototype(object) { }
+00468 
+00472             inline SeekTable(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
+00473 
+00474             ~SeekTable();
+00475 
+00477 
+00478             inline SeekTable &operator=(const SeekTable &object) { Prototype::operator=(object); return *this; }
+00479             inline SeekTable &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
+00480             inline SeekTable &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
+00482 
+00486             inline SeekTable &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
+00487 
+00489 
+00490             inline bool operator==(const SeekTable &object) const { return Prototype::operator==(object); }
+00491             inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
+00492             inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
+00494 
+00496 
+00497             inline bool operator!=(const SeekTable &object) const { return Prototype::operator!=(object); }
+00498             inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
+00499             inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
+00501 
+00502             unsigned get_num_points() const;
+00503             ::FLAC__StreamMetadata_SeekPoint get_point(unsigned index) const;
+00504 
+00506             void set_point(unsigned index, const ::FLAC__StreamMetadata_SeekPoint &point);
+00507 
+00509             bool insert_point(unsigned index, const ::FLAC__StreamMetadata_SeekPoint &point);
+00510 
+00512             bool delete_point(unsigned index);
+00513 
+00515             bool is_legal() const;
+00516         };
+00517 
+00522         class FLACPP_API VorbisComment : public Prototype {
+00523         public:
+00553             class FLACPP_API Entry {
+00554             public:
+00555                 Entry();
+00556 
+00557                 Entry(const char *field, unsigned field_length);
+00558                 Entry(const char *field); // assumes \a field is NUL-terminated
+00559 
+00560                 Entry(const char *field_name, const char *field_value, unsigned field_value_length);
+00561                 Entry(const char *field_name, const char *field_value); // assumes \a field_value is NUL-terminated
+00562 
+00563                 Entry(const Entry &entry);
+00564 
+00565                 Entry &operator=(const Entry &entry);
+00566 
+00567                 virtual ~Entry();
+00568 
+00569                 virtual bool is_valid() const; 
+00570 
+00571                 unsigned get_field_length() const;
+00572                 unsigned get_field_name_length() const;
+00573                 unsigned get_field_value_length() const;
+00574 
+00575                 ::FLAC__StreamMetadata_VorbisComment_Entry get_entry() const;
+00576                 const char *get_field() const;
+00577                 const char *get_field_name() const;
+00578                 const char *get_field_value() const;
+00579 
+00580                 bool set_field(const char *field, unsigned field_length);
+00581                 bool set_field(const char *field); // assumes \a field is NUL-terminated
+00582                 bool set_field_name(const char *field_name);
+00583                 bool set_field_value(const char *field_value, unsigned field_value_length);
+00584                 bool set_field_value(const char *field_value); // assumes \a field_value is NUL-terminated
+00585             protected:
+00586                 bool is_valid_;
+00587                 ::FLAC__StreamMetadata_VorbisComment_Entry entry_;
+00588                 char *field_name_;
+00589                 unsigned field_name_length_;
+00590                 char *field_value_;
+00591                 unsigned field_value_length_;
+00592             private:
+00593                 void zero();
+00594                 void clear();
+00595                 void clear_entry();
+00596                 void clear_field_name();
+00597                 void clear_field_value();
+00598                 void construct(const char *field, unsigned field_length);
+00599                 void construct(const char *field); // assumes \a field is NUL-terminated
+00600                 void construct(const char *field_name, const char *field_value, unsigned field_value_length);
+00601                 void construct(const char *field_name, const char *field_value); // assumes \a field_value is NUL-terminated
+00602                 void compose_field();
+00603                 void parse_field();
+00604             };
+00605 
+00606             VorbisComment();
+00607 
+00609 
+00612             inline VorbisComment(const VorbisComment &object): Prototype(object) { }
+00613             inline VorbisComment(const ::FLAC__StreamMetadata &object): Prototype(object) { }
+00614             inline VorbisComment(const ::FLAC__StreamMetadata *object): Prototype(object) { }
+00616 
+00620             inline VorbisComment(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
+00621 
+00622             ~VorbisComment();
+00623 
+00625 
+00626             inline VorbisComment &operator=(const VorbisComment &object) { Prototype::operator=(object); return *this; }
+00627             inline VorbisComment &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
+00628             inline VorbisComment &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
+00630 
+00634             inline VorbisComment &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
+00635 
+00637 
+00638             inline bool operator==(const VorbisComment &object) const { return Prototype::operator==(object); }
+00639             inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
+00640             inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
+00642 
+00644 
+00645             inline bool operator!=(const VorbisComment &object) const { return Prototype::operator!=(object); }
+00646             inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
+00647             inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
+00649 
+00650             unsigned get_num_comments() const;
+00651             const FLAC__byte *get_vendor_string() const; // NUL-terminated UTF-8 string
+00652             Entry get_comment(unsigned index) const;
+00653 
+00655             bool set_vendor_string(const FLAC__byte *string); // NUL-terminated UTF-8 string
+00656 
+00658             bool set_comment(unsigned index, const Entry &entry);
+00659 
+00661             bool insert_comment(unsigned index, const Entry &entry);
+00662 
+00664             bool append_comment(const Entry &entry);
+00665 
+00667             bool delete_comment(unsigned index);
+00668         };
+00669 
+00674         class FLACPP_API CueSheet : public Prototype {
+00675         public:
+00682             class FLACPP_API Track {
+00683             protected:
+00684                 ::FLAC__StreamMetadata_CueSheet_Track *object_;
+00685             public:
+00686                 Track();
+00687                 Track(const ::FLAC__StreamMetadata_CueSheet_Track *track);
+00688                 Track(const Track &track);
+00689                 Track &operator=(const Track &track);
+00690 
+00691                 virtual ~Track();
+00692 
+00693                 virtual bool is_valid() const; 
+00694 
+00695 
+00696                 inline FLAC__uint64 get_offset() const { return object_->offset; }
+00697                 inline FLAC__byte get_number() const { return object_->number; }
+00698                 inline const char *get_isrc() const { return object_->isrc; }
+00699                 inline unsigned get_type() const { return object_->type; }
+00700                 inline bool get_pre_emphasis() const { return object_->pre_emphasis; }
+00701 
+00702                 inline FLAC__byte get_num_indices() const { return object_->num_indices; }
+00703                 ::FLAC__StreamMetadata_CueSheet_Index get_index(unsigned i) const;
+00704 
+00705                 inline const ::FLAC__StreamMetadata_CueSheet_Track *get_track() const { return object_; }
+00706 
+00707                 inline void set_offset(FLAC__uint64 value) { object_->offset = value; }
+00708                 inline void set_number(FLAC__byte value) { object_->number = value; }
+00709                 void set_isrc(const char value[12]);
+00710                 void set_type(unsigned value);
+00711                 inline void set_pre_emphasis(bool value) { object_->pre_emphasis = value? 1 : 0; }
+00712 
+00713                 void set_index(unsigned i, const ::FLAC__StreamMetadata_CueSheet_Index &index);
+00714                 //@@@ It's awkward but to insert/delete index points
+00715                 //@@@ you must use the routines in the CueSheet class.
+00716             };
+00717 
+00718             CueSheet();
+00719 
+00721 
+00724             inline CueSheet(const CueSheet &object): Prototype(object) { }
+00725             inline CueSheet(const ::FLAC__StreamMetadata &object): Prototype(object) { }
+00726             inline CueSheet(const ::FLAC__StreamMetadata *object): Prototype(object) { }
+00728 
+00732             inline CueSheet(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
+00733 
+00734             ~CueSheet();
+00735 
+00737 
+00738             inline CueSheet &operator=(const CueSheet &object) { Prototype::operator=(object); return *this; }
+00739             inline CueSheet &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
+00740             inline CueSheet &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
+00742 
+00746             inline CueSheet &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
+00747 
+00749 
+00750             inline bool operator==(const CueSheet &object) const { return Prototype::operator==(object); }
+00751             inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
+00752             inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
+00754 
+00756 
+00757             inline bool operator!=(const CueSheet &object) const { return Prototype::operator!=(object); }
+00758             inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
+00759             inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
+00761 
+00762             const char *get_media_catalog_number() const;
+00763             FLAC__uint64 get_lead_in() const;
+00764             bool get_is_cd() const;
+00765 
+00766             unsigned get_num_tracks() const;
+00767             Track get_track(unsigned i) const;
+00768 
+00769             void set_media_catalog_number(const char value[128]);
+00770             void set_lead_in(FLAC__uint64 value);
+00771             void set_is_cd(bool value);
+00772 
+00773             void set_index(unsigned track_num, unsigned index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index);
+00774 
+00776             bool insert_index(unsigned track_num, unsigned index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index);
+00777 
+00779             bool delete_index(unsigned track_num, unsigned index_num);
+00780 
+00782             bool set_track(unsigned i, const Track &track);
+00783 
+00785             bool insert_track(unsigned i, const Track &track);
+00786 
+00788             bool delete_track(unsigned i);
+00789 
+00791             bool is_legal(bool check_cd_da_subset = false, const char **violation = 0) const;
+00792 
+00794             FLAC__uint32 calculate_cddb_id() const;
+00795         };
+00796 
+00801         class FLACPP_API Picture : public Prototype {
+00802         public:
+00803             Picture();
+00804 
+00806 
+00809             inline Picture(const Picture &object): Prototype(object) { }
+00810             inline Picture(const ::FLAC__StreamMetadata &object): Prototype(object) { }
+00811             inline Picture(const ::FLAC__StreamMetadata *object): Prototype(object) { }
+00813 
+00817             inline Picture(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
+00818 
+00819             ~Picture();
+00820 
+00822 
+00823             inline Picture &operator=(const Picture &object) { Prototype::operator=(object); return *this; }
+00824             inline Picture &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
+00825             inline Picture &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
+00827 
+00831             inline Picture &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
+00832 
+00834 
+00835             inline bool operator==(const Picture &object) const { return Prototype::operator==(object); }
+00836             inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
+00837             inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
+00839 
+00841 
+00842             inline bool operator!=(const Picture &object) const { return Prototype::operator!=(object); }
+00843             inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
+00844             inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
+00846 
+00847 			::FLAC__StreamMetadata_Picture_Type get_type() const;
+00848             const char *get_mime_type() const; // NUL-terminated printable ASCII string
+00849             const FLAC__byte *get_description() const; // NUL-terminated UTF-8 string
+00850             FLAC__uint32 get_width() const;
+00851             FLAC__uint32 get_height() const;
+00852             FLAC__uint32 get_depth() const;
+00853             FLAC__uint32 get_colors() const; 
+00854             FLAC__uint32 get_data_length() const;
+00855             const FLAC__byte *get_data() const;
+00856 
+00857             void set_type(::FLAC__StreamMetadata_Picture_Type type);
+00858 
+00860             bool set_mime_type(const char *string); // NUL-terminated printable ASCII string
+00861 
+00863             bool set_description(const FLAC__byte *string); // NUL-terminated UTF-8 string
+00864 
+00865             void set_width(FLAC__uint32 value) const;
+00866             void set_height(FLAC__uint32 value) const;
+00867             void set_depth(FLAC__uint32 value) const;
+00868             void set_colors(FLAC__uint32 value) const; 
+00869 
+00871             bool set_data(const FLAC__byte *data, FLAC__uint32 data_length);
+00872         };
+00873 
+00880         class FLACPP_API Unknown : public Prototype {
+00881         public:
+00882             Unknown();
+00883             //
+00885 
+00888             inline Unknown(const Unknown &object): Prototype(object) { }
+00889             inline Unknown(const ::FLAC__StreamMetadata &object): Prototype(object) { }
+00890             inline Unknown(const ::FLAC__StreamMetadata *object): Prototype(object) { }
+00892 
+00896             inline Unknown(::FLAC__StreamMetadata *object, bool copy): Prototype(object, copy) { }
+00897 
+00898             ~Unknown();
+00899 
+00901 
+00902             inline Unknown &operator=(const Unknown &object) { Prototype::operator=(object); return *this; }
+00903             inline Unknown &operator=(const ::FLAC__StreamMetadata &object) { Prototype::operator=(object); return *this; }
+00904             inline Unknown &operator=(const ::FLAC__StreamMetadata *object) { Prototype::operator=(object); return *this; }
+00906 
+00910             inline Unknown &assign(::FLAC__StreamMetadata *object, bool copy) { Prototype::assign_object(object, copy); return *this; }
+00911 
+00913 
+00914             inline bool operator==(const Unknown &object) const { return Prototype::operator==(object); }
+00915             inline bool operator==(const ::FLAC__StreamMetadata &object) const { return Prototype::operator==(object); }
+00916             inline bool operator==(const ::FLAC__StreamMetadata *object) const { return Prototype::operator==(object); }
+00918 
+00920 
+00921             inline bool operator!=(const Unknown &object) const { return Prototype::operator!=(object); }
+00922             inline bool operator!=(const ::FLAC__StreamMetadata &object) const { return Prototype::operator!=(object); }
+00923             inline bool operator!=(const ::FLAC__StreamMetadata *object) const { return Prototype::operator!=(object); }
+00925 
+00926             const FLAC__byte *get_data() const;
+00927 
+00929             bool set_data(const FLAC__byte *data, unsigned length);
+00930             bool set_data(FLAC__byte *data, unsigned length, bool copy);
+00931         };
+00932 
+00933         /* \} */
+00934 
+00935 
+00948         FLACPP_API bool get_streaminfo(const char *filename, StreamInfo &streaminfo); 
+00949 
+00950         FLACPP_API bool get_tags(const char *filename, VorbisComment *&tags); 
+00951         FLACPP_API bool get_tags(const char *filename, VorbisComment &tags); 
+00952 
+00953         FLACPP_API bool get_cuesheet(const char *filename, CueSheet *&cuesheet); 
+00954         FLACPP_API bool get_cuesheet(const char *filename, CueSheet &cuesheet); 
+00955 
+00956         FLACPP_API bool get_picture(const char *filename, Picture *&picture, ::FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors); 
+00957         FLACPP_API bool get_picture(const char *filename, Picture &picture, ::FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors); 
+00958 
+00959         /* \} */
+00960 
+00961 
+00996         class FLACPP_API SimpleIterator {
+00997         public:
+01000             class FLACPP_API Status {
+01001             public:
+01002                 inline Status(::FLAC__Metadata_SimpleIteratorStatus status): status_(status) { }
+01003                 inline operator ::FLAC__Metadata_SimpleIteratorStatus() const { return status_; }
+01004                 inline const char *as_cstring() const { return ::FLAC__Metadata_SimpleIteratorStatusString[status_]; }
+01005             protected:
+01006 				::FLAC__Metadata_SimpleIteratorStatus status_;
+01007             };
+01008 
+01009             SimpleIterator();
+01010             virtual ~SimpleIterator();
+01011 
+01012             bool is_valid() const; 
+01013 
+01014             bool init(const char *filename, bool read_only, bool preserve_file_stats); 
+01015 
+01016             Status status();                                                    
+01017             bool is_writable() const;                                           
+01018 
+01019             bool next();                                                        
+01020             bool prev();                                                        
+01021             bool is_last() const;                                               
+01022 
+01023             off_t get_block_offset() const;                                     
+01024 			::FLAC__MetadataType get_block_type() const;                        
+01025             unsigned get_block_length() const;                                  
+01026             bool get_application_id(FLAC__byte *id);                            
+01027             Prototype *get_block();                                             
+01028             bool set_block(Prototype *block, bool use_padding = true);          
+01029             bool insert_block_after(Prototype *block, bool use_padding = true); 
+01030             bool delete_block(bool use_padding = true);                         
+01031 
+01032         protected:
+01033 			::FLAC__Metadata_SimpleIterator *iterator_;
+01034             void clear();
+01035         };
+01036 
+01037         /* \} */
+01038 
+01039 
+01082         class FLACPP_API Chain {
+01083         public:
+01086             class FLACPP_API Status {
+01087             public:
+01088                 inline Status(::FLAC__Metadata_ChainStatus status): status_(status) { }
+01089                 inline operator ::FLAC__Metadata_ChainStatus() const { return status_; }
+01090                 inline const char *as_cstring() const { return ::FLAC__Metadata_ChainStatusString[status_]; }
+01091             protected:
+01092 				::FLAC__Metadata_ChainStatus status_;
+01093             };
+01094 
+01095             Chain();
+01096             virtual ~Chain();
+01097 
+01098             friend class Iterator;
+01099 
+01100             bool is_valid() const; 
+01101 
+01102             Status status();                                                
+01103 
+01104             bool read(const char *filename, bool is_ogg = false);                                
+01105             bool read(FLAC__IOHandle handle, FLAC__IOCallbacks callbacks, bool is_ogg = false);  
+01106 
+01107             bool check_if_tempfile_needed(bool use_padding);                
+01108 
+01109             bool write(bool use_padding = true, bool preserve_file_stats = false); 
+01110             bool write(bool use_padding, ::FLAC__IOHandle handle, ::FLAC__IOCallbacks callbacks); 
+01111             bool write(bool use_padding, ::FLAC__IOHandle handle, ::FLAC__IOCallbacks callbacks, ::FLAC__IOHandle temp_handle, ::FLAC__IOCallbacks temp_callbacks); 
+01112 
+01113             void merge_padding();                                           
+01114             void sort_padding();                                            
+01115 
+01116         protected:
+01117 			::FLAC__Metadata_Chain *chain_;
+01118             virtual void clear();
+01119         };
+01120 
+01126         class FLACPP_API Iterator {
+01127         public:
+01128             Iterator();
+01129             virtual ~Iterator();
+01130 
+01131             bool is_valid() const; 
+01132 
+01133 
+01134             void init(Chain &chain);                       
+01135 
+01136             bool next();                                   
+01137             bool prev();                                   
+01138 
+01139 			::FLAC__MetadataType get_block_type() const;   
+01140             Prototype *get_block();                        
+01141             bool set_block(Prototype *block);              
+01142             bool delete_block(bool replace_with_padding);  
+01143             bool insert_block_before(Prototype *block);    
+01144             bool insert_block_after(Prototype *block);     
+01145 
+01146         protected:
+01147 			::FLAC__Metadata_Iterator *iterator_;
+01148             virtual void clear();
+01149         };
+01150 
+01151         /* \} */
+01152 
+01153     }
+01154 }
+01155 
+01156 #endif
+
+
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/+_2metadata_8h.html b/3rdparty/libflac/doc/html/api/+_2metadata_8h.html new file mode 100644 index 0000000..5e794ad --- /dev/null +++ b/3rdparty/libflac/doc/html/api/+_2metadata_8h.html @@ -0,0 +1,66 @@ + + +FLAC: include/FLAC++/metadata.h File Reference + + + + + +

metadata.h File Reference


Detailed Description

+This module provides classes for creating and manipulating FLAC metadata blocks in memory, and three progressively more powerful interfaces for traversing and editing metadata in FLAC files. +

+See the detailed documentation for each interface in the metadata module. +

+#include "export.h"
+#include "FLAC/metadata.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + +

Namespaces

namespace  FLAC
namespace  FLAC::Metadata

Functions

Prototype * clone (const Prototype *)
bool get_streaminfo (const char *filename, StreamInfo &streaminfo)
bool get_tags (const char *filename, VorbisComment *&tags)
bool get_tags (const char *filename, VorbisComment &tags)
bool get_cuesheet (const char *filename, CueSheet *&cuesheet)
bool get_cuesheet (const char *filename, CueSheet &cuesheet)
bool get_picture (const char *filename, Picture *&picture,::FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors)
bool get_picture (const char *filename, Picture &picture,::FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors)
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/all_8h-source.html b/3rdparty/libflac/doc/html/api/all_8h-source.html new file mode 100644 index 0000000..ae702f6 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/all_8h-source.html @@ -0,0 +1,77 @@ + + +FLAC: include/FLAC/all.h Source File + + + + + +

all.h

00001 /* libFLAC - Free Lossless Audio Codec library
+00002  * Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
+00003  *
+00004  * Redistribution and use in source and binary forms, with or without
+00005  * modification, are permitted provided that the following conditions
+00006  * are met:
+00007  *
+00008  * - Redistributions of source code must retain the above copyright
+00009  * notice, this list of conditions and the following disclaimer.
+00010  *
+00011  * - Redistributions in binary form must reproduce the above copyright
+00012  * notice, this list of conditions and the following disclaimer in the
+00013  * documentation and/or other materials provided with the distribution.
+00014  *
+00015  * - Neither the name of the Xiph.org Foundation nor the names of its
+00016  * contributors may be used to endorse or promote products derived from
+00017  * this software without specific prior written permission.
+00018  *
+00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+00020  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+00022  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+00023  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+00024  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+00025  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+00026  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+00027  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00028  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00029  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00030  */
+00031 
+00032 #ifndef FLAC__ALL_H
+00033 #define FLAC__ALL_H
+00034 
+00035 #include "export.h"
+00036 
+00037 #include "assert.h"
+00038 #include "callback.h"
+00039 #include "format.h"
+00040 #include "metadata.h"
+00041 #include "ordinals.h"
+00042 #include "stream_decoder.h"
+00043 #include "stream_encoder.h"
+00044 
+00370 #endif
+
+
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/annotated.html b/3rdparty/libflac/doc/html/api/annotated.html new file mode 100644 index 0000000..aa1ef0d --- /dev/null +++ b/3rdparty/libflac/doc/html/api/annotated.html @@ -0,0 +1,81 @@ + + +FLAC: Class List + + + + +

FLAC Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC::Metadata::Application
FLAC::Metadata::Chain
FLAC::Metadata::Chain::Status
FLAC::Metadata::CueSheet
FLAC::Metadata::CueSheet::Track
FLAC::Decoder::FileThis class wraps the FLAC__StreamDecoder. If you are not decoding from a file, you may need to use FLAC::Decoder::Stream
FLAC::Encoder::FileThis class wraps the FLAC__StreamEncoder. If you are not encoding to a file, you may need to use FLAC::Encoder::Stream
FLAC__EntropyCodingMethod
FLAC__EntropyCodingMethod_PartitionedRice
FLAC__EntropyCodingMethod_PartitionedRiceContents
FLAC__Frame
FLAC__FrameFooter
FLAC__FrameHeader
FLAC__IOCallbacks
FLAC__StreamDecoder
FLAC__StreamEncoder
FLAC__StreamMetadata
FLAC__StreamMetadata_Application
FLAC__StreamMetadata_CueSheet
FLAC__StreamMetadata_CueSheet_Index
FLAC__StreamMetadata_CueSheet_Track
FLAC__StreamMetadata_Padding
FLAC__StreamMetadata_Picture
FLAC__StreamMetadata_SeekPoint
FLAC__StreamMetadata_SeekTable
FLAC__StreamMetadata_StreamInfo
FLAC__StreamMetadata_Unknown
FLAC__StreamMetadata_VorbisComment
FLAC__StreamMetadata_VorbisComment_Entry
FLAC__Subframe
FLAC__Subframe_Constant
FLAC__Subframe_Fixed
FLAC__Subframe_LPC
FLAC__Subframe_Verbatim
FLAC::Metadata::Iterator
FLAC::Metadata::Padding
FLAC::Metadata::Picture
FLAC::Metadata::Prototype
FLAC::Metadata::SeekTable
FLAC::Metadata::SimpleIterator
FLAC::Metadata::SimpleIterator::Status
FLAC::Decoder::StreamThis class wraps the FLAC__StreamDecoder. If you are decoding from a file, FLAC::Decoder::File may be more convenient
FLAC::Encoder::StreamThis class wraps the FLAC__StreamEncoder. If you are encoding to a file, FLAC::Encoder::File may be more convenient
FLAC::Decoder::Stream::State
FLAC::Encoder::Stream::State
FLAC::Metadata::StreamInfo
FLAC::Metadata::Unknown
FLAC::Metadata::VorbisComment
FLAC::Metadata::VorbisComment::Entry
+ +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/assert_8h-source.html b/3rdparty/libflac/doc/html/api/assert_8h-source.html new file mode 100644 index 0000000..b90131d --- /dev/null +++ b/3rdparty/libflac/doc/html/api/assert_8h-source.html @@ -0,0 +1,77 @@ + + +FLAC: include/FLAC/assert.h Source File + + + + + +

assert.h

00001 /* libFLAC - Free Lossless Audio Codec library
+00002  * Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
+00003  *
+00004  * Redistribution and use in source and binary forms, with or without
+00005  * modification, are permitted provided that the following conditions
+00006  * are met:
+00007  *
+00008  * - Redistributions of source code must retain the above copyright
+00009  * notice, this list of conditions and the following disclaimer.
+00010  *
+00011  * - Redistributions in binary form must reproduce the above copyright
+00012  * notice, this list of conditions and the following disclaimer in the
+00013  * documentation and/or other materials provided with the distribution.
+00014  *
+00015  * - Neither the name of the Xiph.org Foundation nor the names of its
+00016  * contributors may be used to endorse or promote products derived from
+00017  * this software without specific prior written permission.
+00018  *
+00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+00020  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+00022  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+00023  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+00024  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+00025  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+00026  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+00027  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00028  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00029  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00030  */
+00031 
+00032 #ifndef FLAC__ASSERT_H
+00033 #define FLAC__ASSERT_H
+00034 
+00035 /* we need this since some compilers (like MSVC) leave assert()s on release code (and we don't want to use their ASSERT) */
+00036 #ifdef DEBUG
+00037 #include <assert.h>
+00038 #define FLAC__ASSERT(x) assert(x)
+00039 #define FLAC__ASSERT_DECLARATION(x) x
+00040 #else
+00041 #define FLAC__ASSERT(x)
+00042 #define FLAC__ASSERT_DECLARATION(x)
+00043 #endif
+00044 
+00045 #endif
+
+
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/callback_8h-source.html b/3rdparty/libflac/doc/html/api/callback_8h-source.html new file mode 100644 index 0000000..2e0e9f1 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/callback_8h-source.html @@ -0,0 +1,103 @@ + + +FLAC: include/FLAC/callback.h Source File + + + + + +

callback.h

Go to the documentation of this file.
00001 /* libFLAC - Free Lossless Audio Codec library
+00002  * Copyright (C) 2004,2005,2006,2007  Josh Coalson
+00003  *
+00004  * Redistribution and use in source and binary forms, with or without
+00005  * modification, are permitted provided that the following conditions
+00006  * are met:
+00007  *
+00008  * - Redistributions of source code must retain the above copyright
+00009  * notice, this list of conditions and the following disclaimer.
+00010  *
+00011  * - Redistributions in binary form must reproduce the above copyright
+00012  * notice, this list of conditions and the following disclaimer in the
+00013  * documentation and/or other materials provided with the distribution.
+00014  *
+00015  * - Neither the name of the Xiph.org Foundation nor the names of its
+00016  * contributors may be used to endorse or promote products derived from
+00017  * this software without specific prior written permission.
+00018  *
+00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+00020  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+00022  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+00023  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+00024  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+00025  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+00026  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+00027  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00028  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00029  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00030  */
+00031 
+00032 #ifndef FLAC__CALLBACK_H
+00033 #define FLAC__CALLBACK_H
+00034 
+00035 #include "ordinals.h"
+00036 #include <stdlib.h> /* for size_t */
+00037 
+00081 #ifdef __cplusplus
+00082 extern "C" {
+00083 #endif
+00084 
+00088 typedef void* FLAC__IOHandle;
+00089 
+00101 typedef size_t (*FLAC__IOCallback_Read) (void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle);
+00102 
+00114 typedef size_t (*FLAC__IOCallback_Write) (const void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle);
+00115 
+00127 typedef int (*FLAC__IOCallback_Seek) (FLAC__IOHandle handle, FLAC__int64 offset, int whence);
+00128 
+00138 typedef FLAC__int64 (*FLAC__IOCallback_Tell) (FLAC__IOHandle handle);
+00139 
+00149 typedef int (*FLAC__IOCallback_Eof) (FLAC__IOHandle handle);
+00150 
+00159 typedef int (*FLAC__IOCallback_Close) (FLAC__IOHandle handle);
+00160 
+00169 typedef struct {
+00170     FLAC__IOCallback_Read read;
+00171     FLAC__IOCallback_Write write;
+00172     FLAC__IOCallback_Seek seek;
+00173     FLAC__IOCallback_Tell tell;
+00174     FLAC__IOCallback_Eof eof;
+00175     FLAC__IOCallback_Close close;
+00176 } FLAC__IOCallbacks;
+00177 
+00178 /* \} */
+00179 
+00180 #ifdef __cplusplus
+00181 }
+00182 #endif
+00183 
+00184 #endif
+
+
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/callback_8h.html b/3rdparty/libflac/doc/html/api/callback_8h.html new file mode 100644 index 0000000..bc25367 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/callback_8h.html @@ -0,0 +1,59 @@ + + +FLAC: include/FLAC/callback.h File Reference + + + + + +

callback.h File Reference


Detailed Description

+This module defines the structures for describing I/O callbacks to the other FLAC interfaces. +

+See the detailed documentation for callbacks in the callbacks module. +

+#include "ordinals.h"
+#include <stdlib.h>
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + +

Typedefs

typedef void * FLAC__IOHandle
typedef size_t(* FLAC__IOCallback_Read )(void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle)
typedef size_t(* FLAC__IOCallback_Write )(const void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle)
typedef int(* FLAC__IOCallback_Seek )(FLAC__IOHandle handle, FLAC__int64 offset, int whence)
typedef FLAC__int64(* FLAC__IOCallback_Tell )(FLAC__IOHandle handle)
typedef int(* FLAC__IOCallback_Eof )(FLAC__IOHandle handle)
typedef int(* FLAC__IOCallback_Close )(FLAC__IOHandle handle)
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1File-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1File-members.html new file mode 100644 index 0000000..32c8b05 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1File-members.html @@ -0,0 +1,87 @@ + + +FLAC: Member List + + + + +

FLAC::Decoder::File Member List

This is the complete list of members for FLAC::Decoder::File, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
decoder_ (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected]
eof_callback()FLAC::Decoder::Stream [protected, virtual]
eof_callback_(const ::FLAC__StreamDecoder *decoder, void *client_data) (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected, static]
error_callback(::FLAC__StreamDecoderErrorStatus status)=0FLAC::Decoder::Stream [protected, pure virtual]
error_callback_(const ::FLAC__StreamDecoder *decoder,::FLAC__StreamDecoderErrorStatus status, void *client_data) (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected, static]
File() (defined in FLAC::Decoder::File)FLAC::Decoder::File
finish()FLAC::Decoder::Stream [virtual]
flush()FLAC::Decoder::Stream [virtual]
get_bits_per_sample() const FLAC::Decoder::Stream [virtual]
get_blocksize() const FLAC::Decoder::Stream [virtual]
get_channel_assignment() const FLAC::Decoder::Stream [virtual]
get_channels() const FLAC::Decoder::Stream [virtual]
get_decode_position(FLAC__uint64 *position) const FLAC::Decoder::Stream [virtual]
get_md5_checking() const FLAC::Decoder::Stream [virtual]
get_sample_rate() const FLAC::Decoder::Stream [virtual]
get_state() const FLAC::Decoder::Stream
get_total_samples() const FLAC::Decoder::Stream [virtual]
init(FILE *file)FLAC::Decoder::File
init(const char *filename)FLAC::Decoder::File [virtual]
init(const std::string &filename)FLAC::Decoder::File [virtual]
FLAC::Decoder::Stream::init()FLAC::Decoder::Stream
init_ogg(FILE *file)FLAC::Decoder::File [virtual]
init_ogg(const char *filename)FLAC::Decoder::File [virtual]
init_ogg(const std::string &filename)FLAC::Decoder::File [virtual]
FLAC::Decoder::Stream::init_ogg()FLAC::Decoder::Stream [virtual]
is_valid() const FLAC::Decoder::Stream [virtual]
length_callback(FLAC__uint64 *stream_length)FLAC::Decoder::Stream [protected, virtual]
length_callback_(const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected, static]
metadata_callback(const ::FLAC__StreamMetadata *metadata)FLAC::Decoder::Stream [protected, virtual]
metadata_callback_(const ::FLAC__StreamDecoder *decoder, const ::FLAC__StreamMetadata *metadata, void *client_data) (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected, static]
operator bool() const FLAC::Decoder::Stream [inline]
process_single()FLAC::Decoder::Stream [virtual]
process_until_end_of_metadata()FLAC::Decoder::Stream [virtual]
process_until_end_of_stream()FLAC::Decoder::Stream [virtual]
read_callback(FLAC__byte buffer[], size_t *bytes)FLAC::Decoder::File [protected, virtual]
read_callback_(const ::FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data) (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected, static]
reset()FLAC::Decoder::Stream [virtual]
seek_absolute(FLAC__uint64 sample)FLAC::Decoder::Stream [virtual]
seek_callback(FLAC__uint64 absolute_byte_offset)FLAC::Decoder::Stream [protected, virtual]
seek_callback_(const ::FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected, static]
set_md5_checking(bool value)FLAC::Decoder::Stream [virtual]
set_metadata_ignore(::FLAC__MetadataType type)FLAC::Decoder::Stream [virtual]
set_metadata_ignore_all()FLAC::Decoder::Stream [virtual]
set_metadata_ignore_application(const FLAC__byte id[4])FLAC::Decoder::Stream [virtual]
set_metadata_respond(::FLAC__MetadataType type)FLAC::Decoder::Stream [virtual]
set_metadata_respond_all()FLAC::Decoder::Stream [virtual]
set_metadata_respond_application(const FLAC__byte id[4])FLAC::Decoder::Stream [virtual]
set_ogg_serial_number(long value)FLAC::Decoder::Stream [virtual]
skip_single_frame()FLAC::Decoder::Stream [virtual]
Stream() (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream
tell_callback(FLAC__uint64 *absolute_byte_offset)FLAC::Decoder::Stream [protected, virtual]
tell_callback_(const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected, static]
write_callback(const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[])=0FLAC::Decoder::Stream [protected, pure virtual]
write_callback_(const ::FLAC__StreamDecoder *decoder, const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data) (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected, static]
~File() (defined in FLAC::Decoder::File)FLAC::Decoder::File [virtual]
~Stream() (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [virtual]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1File.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1File.html new file mode 100644 index 0000000..aba329f --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1File.html @@ -0,0 +1,1457 @@ + + +FLAC: FLAC::Decoder::File Class Reference + + + + + +

FLAC::Decoder::File Class Reference
+ +[FLAC++/decoder.h: decoder classes] +

#include <decoder.h> +

+

Inheritance diagram for FLAC::Decoder::File: +

+ +FLAC::Decoder::Stream + +List of all members.

Detailed Description

+This class wraps the FLAC__StreamDecoder. If you are not decoding from a file, you may need to use FLAC::Decoder::Stream. +

+The usage of this class is similar to FLAC__StreamDecoder, except instead of providing callbacks to FLAC__stream_decoder_init*_FILE() or FLAC__stream_decoder_init*_file(), you will inherit from this class and override the virtual callback functions with your own implementations, then call init() or init_off(). The rest of the calls work the same as in the C layer.

+Only the write, and error callbacks from FLAC::Decoder::Stream are mandatory. The others are optional; this class provides full working implementations for all other callbacks and supports seeking. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual ::FLAC__StreamDecoderInitStatus init (FILE *file)
virtual ::FLAC__StreamDecoderInitStatus init (const char *filename)
virtual ::FLAC__StreamDecoderInitStatus init (const std::string &filename)
virtual ::FLAC__StreamDecoderInitStatus init_ogg (FILE *file)
virtual ::FLAC__StreamDecoderInitStatus init_ogg (const char *filename)
virtual ::FLAC__StreamDecoderInitStatus init_ogg (const std::string &filename)
virtual bool is_valid () const
 operator bool () const
virtual bool set_ogg_serial_number (long value)
virtual bool set_md5_checking (bool value)
virtual bool set_metadata_respond (::FLAC__MetadataType type)
virtual bool set_metadata_respond_application (const FLAC__byte id[4])
virtual bool set_metadata_respond_all ()
virtual bool set_metadata_ignore (::FLAC__MetadataType type)
virtual bool set_metadata_ignore_application (const FLAC__byte id[4])
virtual bool set_metadata_ignore_all ()
State get_state () const
virtual bool get_md5_checking () const
virtual FLAC__uint64 get_total_samples () const
virtual unsigned get_channels () const
virtual ::FLAC__ChannelAssignment get_channel_assignment () const
virtual unsigned get_bits_per_sample () const
virtual unsigned get_sample_rate () const
virtual unsigned get_blocksize () const
virtual bool get_decode_position (FLAC__uint64 *position) const
virtual ::FLAC__StreamDecoderInitStatus init ()
virtual ::FLAC__StreamDecoderInitStatus init_ogg ()
virtual bool finish ()
virtual bool flush ()
virtual bool reset ()
virtual bool process_single ()
virtual bool process_until_end_of_metadata ()
virtual bool process_until_end_of_stream ()
virtual bool skip_single_frame ()
virtual bool seek_absolute (FLAC__uint64 sample)

Protected Member Functions

virtual ::FLAC__StreamDecoderReadStatus read_callback (FLAC__byte buffer[], size_t *bytes)
virtual ::FLAC__StreamDecoderSeekStatus seek_callback (FLAC__uint64 absolute_byte_offset)
virtual ::FLAC__StreamDecoderTellStatus tell_callback (FLAC__uint64 *absolute_byte_offset)
virtual ::FLAC__StreamDecoderLengthStatus length_callback (FLAC__uint64 *stream_length)
virtual bool eof_callback ()
virtual ::FLAC__StreamDecoderWriteStatus write_callback (const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[])=0
virtual void metadata_callback (const ::FLAC__StreamMetadata *metadata)
virtual void error_callback (::FLAC__StreamDecoderErrorStatus status)=0

Static Protected Member Functions

+::FLAC__StreamDecoderReadStatus read_callback_ (const ::FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
+::FLAC__StreamDecoderSeekStatus seek_callback_ (const ::FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data)
+::FLAC__StreamDecoderTellStatus tell_callback_ (const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
+::FLAC__StreamDecoderLengthStatus length_callback_ (const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data)
+static FLAC__bool eof_callback_ (const ::FLAC__StreamDecoder *decoder, void *client_data)
+::FLAC__StreamDecoderWriteStatus write_callback_ (const ::FLAC__StreamDecoder *decoder, const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data)
+static void metadata_callback_ (const ::FLAC__StreamDecoder *decoder, const ::FLAC__StreamMetadata *metadata, void *client_data)
+static void error_callback_ (const ::FLAC__StreamDecoder *decoder,::FLAC__StreamDecoderErrorStatus status, void *client_data)

Protected Attributes

+::FLAC__StreamDecoderdecoder_
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamDecoderInitStatus FLAC::Decoder::File::init FILE *  file  ) 
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_init_FILE(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamDecoderInitStatus FLAC::Decoder::File::init const char *  filename  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_init_file(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamDecoderInitStatus FLAC::Decoder::File::init const std::string &  filename  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_init_file(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamDecoderInitStatus FLAC::Decoder::File::init_ogg FILE *  file  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_init_ogg_FILE(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamDecoderInitStatus FLAC::Decoder::File::init_ogg const char *  filename  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_init_ogg_file(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamDecoderInitStatus FLAC::Decoder::File::init_ogg const std::string &  filename  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_init_ogg_file(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ::FLAC__StreamDecoderReadStatus FLAC::Decoder::File::read_callback FLAC__byte  buffer[],
size_t *  bytes
[protected, virtual]
+
+ + + + + +
+   + + +

+see FLAC__StreamDecoderReadCallback +

+ +

+Implements FLAC::Decoder::Stream.

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::is_valid  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+Call after construction to check the that the object was created successfully. If not, use get_state() to find out why not.

+

+ + + + +
+ + + + + + + + +
FLAC::Decoder::Stream::operator bool  )  const [inline, inherited]
+
+ + + + + +
+   + + +

+See is_valid(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Decoder::Stream::set_ogg_serial_number long  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_set_ogg_serial_number(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Decoder::Stream::set_md5_checking bool  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_set_md5_checking(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Decoder::Stream::set_metadata_respond ::FLAC__MetadataType  type  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_set_metadata_respond(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Decoder::Stream::set_metadata_respond_application const FLAC__byte  id[4]  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_set_metadata_respond_application(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::set_metadata_respond_all  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_set_metadata_respond_all(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Decoder::Stream::set_metadata_ignore ::FLAC__MetadataType  type  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_set_metadata_ignore(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Decoder::Stream::set_metadata_ignore_application const FLAC__byte  id[4]  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_set_metadata_ignore_application(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::set_metadata_ignore_all  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_set_metadata_ignore_all(). +

+

+

+ + + + +
+ + + + + + + + +
State FLAC::Decoder::Stream::get_state  )  const [inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_state(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::get_md5_checking  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_md5_checking(). +

+

+

+ + + + +
+ + + + + + + + +
virtual FLAC__uint64 FLAC::Decoder::Stream::get_total_samples  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_total_samples(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Decoder::Stream::get_channels  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_channels(). +

+

+

+ + + + +
+ + + + + + + + +
virtual ::FLAC__ChannelAssignment FLAC::Decoder::Stream::get_channel_assignment  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_channel_assignment(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Decoder::Stream::get_bits_per_sample  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_bits_per_sample(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Decoder::Stream::get_sample_rate  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_sample_rate(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Decoder::Stream::get_blocksize  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_blocksize(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Decoder::Stream::get_decode_position FLAC__uint64 *  position  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_decode_position(). +

+

+

+ + + + +
+ + + + + + + + +
virtual ::FLAC__StreamDecoderInitStatus FLAC::Decoder::Stream::init  )  [inherited]
+
+ + + + + +
+   + + +

+Seek FLAC__stream_decoder_init_stream(). +

+

+

+ + + + +
+ + + + + + + + +
virtual ::FLAC__StreamDecoderInitStatus FLAC::Decoder::Stream::init_ogg  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+Seek FLAC__stream_decoder_init_ogg_stream(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::finish  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_finish(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::flush  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_flush(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::reset  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_reset(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::process_single  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_process_single(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::process_until_end_of_metadata  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_process_until_end_of_metadata(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::process_until_end_of_stream  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_process_until_end_of_stream(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::skip_single_frame  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_skip_single_frame(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Decoder::Stream::seek_absolute FLAC__uint64  sample  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_seek_absolute(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamDecoderSeekStatus FLAC::Decoder::Stream::seek_callback FLAC__uint64  absolute_byte_offset  )  [protected, virtual, inherited]
+
+ + + + + +
+   + + +

+see FLAC__StreamDecoderSeekCallback +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamDecoderTellStatus FLAC::Decoder::Stream::tell_callback FLAC__uint64 *  absolute_byte_offset  )  [protected, virtual, inherited]
+
+ + + + + +
+   + + +

+see FLAC__StreamDecoderTellCallback +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamDecoderLengthStatus FLAC::Decoder::Stream::length_callback FLAC__uint64 *  stream_length  )  [protected, virtual, inherited]
+
+ + + + + +
+   + + +

+see FLAC__StreamDecoderLengthCallback +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::eof_callback  )  [protected, virtual, inherited]
+
+ + + + + +
+   + + +

+see FLAC__StreamDecoderEofCallback +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ::FLAC__StreamDecoderWriteStatus FLAC::Decoder::Stream::write_callback const ::FLAC__Frame frame,
const FLAC__int32 *const   buffer[]
[protected, pure virtual, inherited]
+
+ + + + + +
+   + + +

+see FLAC__StreamDecoderWriteCallback +

+

+

+ + + + +
+ + + + + + + + + +
virtual void FLAC::Decoder::Stream::metadata_callback const ::FLAC__StreamMetadata metadata  )  [protected, virtual, inherited]
+
+ + + + + +
+   + + +

+see FLAC__StreamDecoderMetadataCallback +

+

+

+ + + + +
+ + + + + + + + + +
virtual void FLAC::Decoder::Stream::error_callback ::FLAC__StreamDecoderErrorStatus  status  )  [protected, pure virtual, inherited]
+
+ + + + + +
+   + + +

+see FLAC__StreamDecoderErrorCallback +

+

+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1File.png b/3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1File.png new file mode 100644 index 0000000000000000000000000000000000000000..70f662bbd1038c1b08c5e0efd1ce76e6e124416f GIT binary patch literal 488 zcmVP)q3eF0000OP)t-s|Ns90 z00960z@MLBkN^MxkN^Mxkifved&2+Z00001bW%=J06^y0W&i*Ien~_@RCt{2l}m2K zFbIa@P1nE;@CmB+LbJ;Kk5Kb)OcF=Rs8*FqW;6i?{N*>cG|TrO`&_>A7@MRwNQ_7< znLHRtLNwPbq=?$tBRM1!$qEaP&5cwFbc4igA?2crF{>lXYHQg9d$|O3B(Z+7zLNAQ z-W;oAtzh=h%7h%|v?sYHYs~@ZRrFT&xAI9-7^RX*9!RmO9QgseBnqRfan$6~O zUz1KboLy&5dlGj^wiD9(R7!fE&S$5KWmmFV%N$8VY?3BPNaOyc?%3;A*PoI;*5{Gd z_4PQ?6VGmvCTWr;X_6-C-;;2V!2*MHPtv=jGJcCe6N!?!W~qhR9`Zl}|E8oXVA))k z1c&^B1lz(?gcSi`&N8U2VEGjZ{I{gylVqtn)S7O~NpXFf6YNM;6WBN!(5l+rCsj@1 z-Yco(fwWa!ljIj9*AX=>J59@u)J~*Nif4D8)1K7VWIIWEpJd{4pE_q3Cf+-{-`XTi el8}b|OZ@ + +FLAC: Member List + + + + +

FLAC::Decoder::Stream Member List

This is the complete list of members for FLAC::Decoder::Stream, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
decoder_ (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected]
eof_callback()FLAC::Decoder::Stream [protected, virtual]
eof_callback_(const ::FLAC__StreamDecoder *decoder, void *client_data) (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected, static]
error_callback(::FLAC__StreamDecoderErrorStatus status)=0FLAC::Decoder::Stream [protected, pure virtual]
error_callback_(const ::FLAC__StreamDecoder *decoder,::FLAC__StreamDecoderErrorStatus status, void *client_data) (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected, static]
finish()FLAC::Decoder::Stream [virtual]
flush()FLAC::Decoder::Stream [virtual]
get_bits_per_sample() const FLAC::Decoder::Stream [virtual]
get_blocksize() const FLAC::Decoder::Stream [virtual]
get_channel_assignment() const FLAC::Decoder::Stream [virtual]
get_channels() const FLAC::Decoder::Stream [virtual]
get_decode_position(FLAC__uint64 *position) const FLAC::Decoder::Stream [virtual]
get_md5_checking() const FLAC::Decoder::Stream [virtual]
get_sample_rate() const FLAC::Decoder::Stream [virtual]
get_state() const FLAC::Decoder::Stream
get_total_samples() const FLAC::Decoder::Stream [virtual]
init()FLAC::Decoder::Stream
init_ogg()FLAC::Decoder::Stream [virtual]
is_valid() const FLAC::Decoder::Stream [virtual]
length_callback(FLAC__uint64 *stream_length)FLAC::Decoder::Stream [protected, virtual]
length_callback_(const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected, static]
metadata_callback(const ::FLAC__StreamMetadata *metadata)FLAC::Decoder::Stream [protected, virtual]
metadata_callback_(const ::FLAC__StreamDecoder *decoder, const ::FLAC__StreamMetadata *metadata, void *client_data) (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected, static]
operator bool() const FLAC::Decoder::Stream [inline]
process_single()FLAC::Decoder::Stream [virtual]
process_until_end_of_metadata()FLAC::Decoder::Stream [virtual]
process_until_end_of_stream()FLAC::Decoder::Stream [virtual]
read_callback(FLAC__byte buffer[], size_t *bytes)=0FLAC::Decoder::Stream [protected, pure virtual]
read_callback_(const ::FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data) (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected, static]
reset()FLAC::Decoder::Stream [virtual]
seek_absolute(FLAC__uint64 sample)FLAC::Decoder::Stream [virtual]
seek_callback(FLAC__uint64 absolute_byte_offset)FLAC::Decoder::Stream [protected, virtual]
seek_callback_(const ::FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected, static]
set_md5_checking(bool value)FLAC::Decoder::Stream [virtual]
set_metadata_ignore(::FLAC__MetadataType type)FLAC::Decoder::Stream [virtual]
set_metadata_ignore_all()FLAC::Decoder::Stream [virtual]
set_metadata_ignore_application(const FLAC__byte id[4])FLAC::Decoder::Stream [virtual]
set_metadata_respond(::FLAC__MetadataType type)FLAC::Decoder::Stream [virtual]
set_metadata_respond_all()FLAC::Decoder::Stream [virtual]
set_metadata_respond_application(const FLAC__byte id[4])FLAC::Decoder::Stream [virtual]
set_ogg_serial_number(long value)FLAC::Decoder::Stream [virtual]
skip_single_frame()FLAC::Decoder::Stream [virtual]
Stream() (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream
tell_callback(FLAC__uint64 *absolute_byte_offset)FLAC::Decoder::Stream [protected, virtual]
tell_callback_(const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected, static]
write_callback(const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[])=0FLAC::Decoder::Stream [protected, pure virtual]
write_callback_(const ::FLAC__StreamDecoder *decoder, const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data) (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [protected, static]
~Stream() (defined in FLAC::Decoder::Stream)FLAC::Decoder::Stream [virtual]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1Stream.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1Stream.html new file mode 100644 index 0000000..3120144 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1Stream.html @@ -0,0 +1,1268 @@ + + +FLAC: FLAC::Decoder::Stream Class Reference + + + + + +

FLAC::Decoder::Stream Class Reference
+ +[FLAC++/decoder.h: decoder classes] +

#include <decoder.h> +

+

Inheritance diagram for FLAC::Decoder::Stream: +

+ +FLAC::Decoder::File + +List of all members.

Detailed Description

+This class wraps the FLAC__StreamDecoder. If you are decoding from a file, FLAC::Decoder::File may be more convenient. +

+The usage of this class is similar to FLAC__StreamDecoder, except instead of providing callbacks to FLAC__stream_decoder_init*_stream(), you will inherit from this class and override the virtual callback functions with your own implementations, then call init() or init_ogg(). The rest of the calls work the same as in the C layer.

+Only the read, write, and error callbacks are mandatory. The others are optional; this class provides default implementations that do nothing. In order for seeking to work you must overide seek_callback(), tell_callback(), length_callback(), and eof_callback(). +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual bool is_valid () const
 operator bool () const
virtual bool set_ogg_serial_number (long value)
virtual bool set_md5_checking (bool value)
virtual bool set_metadata_respond (::FLAC__MetadataType type)
virtual bool set_metadata_respond_application (const FLAC__byte id[4])
virtual bool set_metadata_respond_all ()
virtual bool set_metadata_ignore (::FLAC__MetadataType type)
virtual bool set_metadata_ignore_application (const FLAC__byte id[4])
virtual bool set_metadata_ignore_all ()
State get_state () const
virtual bool get_md5_checking () const
virtual FLAC__uint64 get_total_samples () const
virtual unsigned get_channels () const
virtual ::FLAC__ChannelAssignment get_channel_assignment () const
virtual unsigned get_bits_per_sample () const
virtual unsigned get_sample_rate () const
virtual unsigned get_blocksize () const
virtual bool get_decode_position (FLAC__uint64 *position) const
virtual ::FLAC__StreamDecoderInitStatus init ()
virtual ::FLAC__StreamDecoderInitStatus init_ogg ()
virtual bool finish ()
virtual bool flush ()
virtual bool reset ()
virtual bool process_single ()
virtual bool process_until_end_of_metadata ()
virtual bool process_until_end_of_stream ()
virtual bool skip_single_frame ()
virtual bool seek_absolute (FLAC__uint64 sample)

Protected Member Functions

virtual ::FLAC__StreamDecoderReadStatus read_callback (FLAC__byte buffer[], size_t *bytes)=0
virtual ::FLAC__StreamDecoderSeekStatus seek_callback (FLAC__uint64 absolute_byte_offset)
virtual ::FLAC__StreamDecoderTellStatus tell_callback (FLAC__uint64 *absolute_byte_offset)
virtual ::FLAC__StreamDecoderLengthStatus length_callback (FLAC__uint64 *stream_length)
virtual bool eof_callback ()
virtual ::FLAC__StreamDecoderWriteStatus write_callback (const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[])=0
virtual void metadata_callback (const ::FLAC__StreamMetadata *metadata)
virtual void error_callback (::FLAC__StreamDecoderErrorStatus status)=0

Static Protected Member Functions

+::FLAC__StreamDecoderReadStatus read_callback_ (const ::FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
+::FLAC__StreamDecoderSeekStatus seek_callback_ (const ::FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data)
+::FLAC__StreamDecoderTellStatus tell_callback_ (const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
+::FLAC__StreamDecoderLengthStatus length_callback_ (const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data)
+static FLAC__bool eof_callback_ (const ::FLAC__StreamDecoder *decoder, void *client_data)
+::FLAC__StreamDecoderWriteStatus write_callback_ (const ::FLAC__StreamDecoder *decoder, const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data)
+static void metadata_callback_ (const ::FLAC__StreamDecoder *decoder, const ::FLAC__StreamMetadata *metadata, void *client_data)
+static void error_callback_ (const ::FLAC__StreamDecoder *decoder,::FLAC__StreamDecoderErrorStatus status, void *client_data)

Protected Attributes

+::FLAC__StreamDecoderdecoder_

Classes

class  State
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::is_valid  )  const [virtual]
+
+ + + + + +
+   + + +

+Call after construction to check the that the object was created successfully. If not, use get_state() to find out why not.

+

+ + + + +
+ + + + + + + + +
FLAC::Decoder::Stream::operator bool  )  const [inline]
+
+ + + + + +
+   + + +

+See is_valid(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Decoder::Stream::set_ogg_serial_number long  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_set_ogg_serial_number(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Decoder::Stream::set_md5_checking bool  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_set_md5_checking(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Decoder::Stream::set_metadata_respond ::FLAC__MetadataType  type  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_set_metadata_respond(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Decoder::Stream::set_metadata_respond_application const FLAC__byte  id[4]  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_set_metadata_respond_application(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::set_metadata_respond_all  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_set_metadata_respond_all(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Decoder::Stream::set_metadata_ignore ::FLAC__MetadataType  type  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_set_metadata_ignore(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Decoder::Stream::set_metadata_ignore_application const FLAC__byte  id[4]  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_set_metadata_ignore_application(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::set_metadata_ignore_all  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_set_metadata_ignore_all(). +

+

+

+ + + + +
+ + + + + + + + +
State FLAC::Decoder::Stream::get_state  )  const
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_state(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::get_md5_checking  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_md5_checking(). +

+

+

+ + + + +
+ + + + + + + + +
virtual FLAC__uint64 FLAC::Decoder::Stream::get_total_samples  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_total_samples(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Decoder::Stream::get_channels  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_channels(). +

+

+

+ + + + +
+ + + + + + + + +
virtual ::FLAC__ChannelAssignment FLAC::Decoder::Stream::get_channel_assignment  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_channel_assignment(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Decoder::Stream::get_bits_per_sample  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_bits_per_sample(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Decoder::Stream::get_sample_rate  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_sample_rate(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Decoder::Stream::get_blocksize  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_blocksize(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Decoder::Stream::get_decode_position FLAC__uint64 *  position  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_get_decode_position(). +

+

+

+ + + + +
+ + + + + + + + +
virtual ::FLAC__StreamDecoderInitStatus FLAC::Decoder::Stream::init  ) 
+
+ + + + + +
+   + + +

+Seek FLAC__stream_decoder_init_stream(). +

+

+

+ + + + +
+ + + + + + + + +
virtual ::FLAC__StreamDecoderInitStatus FLAC::Decoder::Stream::init_ogg  )  [virtual]
+
+ + + + + +
+   + + +

+Seek FLAC__stream_decoder_init_ogg_stream(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::finish  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_finish(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::flush  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_flush(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::reset  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_reset(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::process_single  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_process_single(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::process_until_end_of_metadata  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_process_until_end_of_metadata(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::process_until_end_of_stream  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_process_until_end_of_stream(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::skip_single_frame  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_skip_single_frame(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Decoder::Stream::seek_absolute FLAC__uint64  sample  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_decoder_seek_absolute(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ::FLAC__StreamDecoderReadStatus FLAC::Decoder::Stream::read_callback FLAC__byte  buffer[],
size_t *  bytes
[protected, pure virtual]
+
+ + + + + +
+   + + +

+see FLAC__StreamDecoderReadCallback +

+ +

+Implemented in FLAC::Decoder::File.

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamDecoderSeekStatus FLAC::Decoder::Stream::seek_callback FLAC__uint64  absolute_byte_offset  )  [protected, virtual]
+
+ + + + + +
+   + + +

+see FLAC__StreamDecoderSeekCallback +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamDecoderTellStatus FLAC::Decoder::Stream::tell_callback FLAC__uint64 *  absolute_byte_offset  )  [protected, virtual]
+
+ + + + + +
+   + + +

+see FLAC__StreamDecoderTellCallback +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamDecoderLengthStatus FLAC::Decoder::Stream::length_callback FLAC__uint64 *  stream_length  )  [protected, virtual]
+
+ + + + + +
+   + + +

+see FLAC__StreamDecoderLengthCallback +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Decoder::Stream::eof_callback  )  [protected, virtual]
+
+ + + + + +
+   + + +

+see FLAC__StreamDecoderEofCallback +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ::FLAC__StreamDecoderWriteStatus FLAC::Decoder::Stream::write_callback const ::FLAC__Frame frame,
const FLAC__int32 *const   buffer[]
[protected, pure virtual]
+
+ + + + + +
+   + + +

+see FLAC__StreamDecoderWriteCallback +

+

+

+ + + + +
+ + + + + + + + + +
virtual void FLAC::Decoder::Stream::metadata_callback const ::FLAC__StreamMetadata metadata  )  [protected, virtual]
+
+ + + + + +
+   + + +

+see FLAC__StreamDecoderMetadataCallback +

+

+

+ + + + +
+ + + + + + + + + +
virtual void FLAC::Decoder::Stream::error_callback ::FLAC__StreamDecoderErrorStatus  status  )  [protected, pure virtual]
+
+ + + + + +
+   + + +

+see FLAC__StreamDecoderErrorCallback +

+

+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1Stream.png b/3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1Stream.png new file mode 100644 index 0000000000000000000000000000000000000000..09301c67686871cafc3f996ac408dd784240fb2d GIT binary patch literal 499 zcmVq3eF0000OP)t-s|Ns90 z00960z@MLBkN^MxkN^Mxkifved&2+Z00001bW%=J06^y0W&i*IiAh93RCt{2mQ9Mo zFbsvQ&8%hJAUQ#qxlm!C_dmi|PySI72U6-q2CUG?isY})vS}LPAmhMcj7`!TBubqp zjr2wl>==1pSuI9X_DC5LnDvPb_r;Br5`2L~Z6b%Hi(-Idi%Mx)1m$!Z@Sa4t0=|-Q zS8tBs2$>l2(9#^q^=V7WnyfT9V9v%|O8Hyqpvkooq!c@n&w`^5Vwc3Om1XQTC=`(U6QSYah_5N=jph2n5?VP*+`Qo4Y5g@B>Zv=drMuh=OEn!Nnfw~ zkzTLo?MQdryGfd)Nt&cdnxubE`nh1g7iu2idmUqw^e!p=5ne?HfA%}m?3L*U6SnL6Oz=4OA?j@h&hX-l#0b?B*CQ&0ZA~yTtp7b$|R|(eV=4QDw@RF z(SVjkd7o4?6=ET!*pX^BYts0Hly!Jb>qgVMA+;Upll< pxsLbt?o*qjNmA04x6~DT`~jmZ4(T&N;=KR>002ovPDHLkV1f + +FLAC: Member List + + + + +

FLAC::Decoder::Stream::State Member List

This is the complete list of members for FLAC::Decoder::Stream::State, including all inherited members.

+ + + + + +
as_cstring() const (defined in FLAC::Decoder::Stream::State)FLAC::Decoder::Stream::State [inline]
operator::FLAC__StreamDecoderState() const (defined in FLAC::Decoder::Stream::State)FLAC::Decoder::Stream::State [inline]
resolved_as_cstring(const Stream &decoder) const (defined in FLAC::Decoder::Stream::State)FLAC::Decoder::Stream::State [inline]
State(::FLAC__StreamDecoderState state) (defined in FLAC::Decoder::Stream::State)FLAC::Decoder::Stream::State [inline]
state_ (defined in FLAC::Decoder::Stream::State)FLAC::Decoder::Stream::State [protected]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1Stream_1_1State.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1Stream_1_1State.html new file mode 100644 index 0000000..30d6235 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Decoder_1_1Stream_1_1State.html @@ -0,0 +1,59 @@ + + +FLAC: FLAC::Decoder::Stream::State Class Reference + + + + + +

FLAC::Decoder::Stream::State Class Reference

#include <decoder.h> +

+List of all members.


Detailed Description

+This class is a wrapper around FLAC__StreamDecoderState. +

+ + + + + + + + + + + + + + +

Public Member Functions

State (::FLAC__StreamDecoderState state)
operator::FLAC__StreamDecoderState () const
+const char * as_cstring () const
+const char * resolved_as_cstring (const Stream &decoder) const

Protected Attributes

+::FLAC__StreamDecoderState state_
+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1File-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1File-members.html new file mode 100644 index 0000000..7eabeab --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1File-members.html @@ -0,0 +1,102 @@ + + +FLAC: Member List + + + + +

FLAC::Encoder::File Member List

This is the complete list of members for FLAC::Encoder::File, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
encoder_ (defined in FLAC::Encoder::Stream)FLAC::Encoder::Stream [protected]
File() (defined in FLAC::Encoder::File)FLAC::Encoder::File
finish()FLAC::Encoder::Stream [virtual]
get_bits_per_sample() const FLAC::Encoder::Stream [virtual]
get_blocksize() const FLAC::Encoder::Stream [virtual]
get_channels() const FLAC::Encoder::Stream [virtual]
get_do_escape_coding() const FLAC::Encoder::Stream [virtual]
get_do_exhaustive_model_search() const FLAC::Encoder::Stream [virtual]
get_do_mid_side_stereo() const FLAC::Encoder::Stream [virtual]
get_do_qlp_coeff_prec_search() const FLAC::Encoder::Stream [virtual]
get_loose_mid_side_stereo() const FLAC::Encoder::Stream [virtual]
get_max_lpc_order() const FLAC::Encoder::Stream [virtual]
get_max_residual_partition_order() const FLAC::Encoder::Stream [virtual]
get_min_residual_partition_order() const FLAC::Encoder::Stream [virtual]
get_qlp_coeff_precision() const FLAC::Encoder::Stream [virtual]
get_rice_parameter_search_dist() const FLAC::Encoder::Stream [virtual]
get_sample_rate() const FLAC::Encoder::Stream [virtual]
get_state() const FLAC::Encoder::Stream
get_streamable_subset() const FLAC::Encoder::Stream [virtual]
get_total_samples_estimate() const FLAC::Encoder::Stream [virtual]
get_verify() const FLAC::Encoder::Stream [virtual]
get_verify_decoder_error_stats(FLAC__uint64 *absolute_sample, unsigned *frame_number, unsigned *channel, unsigned *sample, FLAC__int32 *expected, FLAC__int32 *got)FLAC::Encoder::Stream [virtual]
get_verify_decoder_state() const FLAC::Encoder::Stream [virtual]
init(FILE *file)FLAC::Encoder::File
init(const char *filename)FLAC::Encoder::File [virtual]
init(const std::string &filename)FLAC::Encoder::File [virtual]
FLAC::Encoder::Stream::init()FLAC::Encoder::Stream
init_ogg(FILE *file)FLAC::Encoder::File [virtual]
init_ogg(const char *filename)FLAC::Encoder::File [virtual]
init_ogg(const std::string &filename)FLAC::Encoder::File [virtual]
FLAC::Encoder::Stream::init_ogg()FLAC::Encoder::Stream [virtual]
is_valid() const FLAC::Encoder::Stream [virtual]
metadata_callback(const ::FLAC__StreamMetadata *metadata)FLAC::Encoder::Stream [protected, virtual]
metadata_callback_(const ::FLAC__StreamEncoder *encoder, const ::FLAC__StreamMetadata *metadata, void *client_data) (defined in FLAC::Encoder::Stream)FLAC::Encoder::Stream [protected, static]
operator bool() const FLAC::Encoder::Stream [inline]
process(const FLAC__int32 *const buffer[], unsigned samples)FLAC::Encoder::Stream [virtual]
process_interleaved(const FLAC__int32 buffer[], unsigned samples)FLAC::Encoder::Stream [virtual]
progress_callback(FLAC__uint64 bytes_written, FLAC__uint64 samples_written, unsigned frames_written, unsigned total_frames_estimate)FLAC::Encoder::File [protected, virtual]
read_callback(FLAC__byte buffer[], size_t *bytes)FLAC::Encoder::Stream [protected, virtual]
read_callback_(const ::FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data) (defined in FLAC::Encoder::Stream)FLAC::Encoder::Stream [protected, static]
seek_callback(FLAC__uint64 absolute_byte_offset)FLAC::Encoder::Stream [protected, virtual]
seek_callback_(const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data) (defined in FLAC::Encoder::Stream)FLAC::Encoder::Stream [protected, static]
set_apodization(const char *specification)FLAC::Encoder::Stream [virtual]
set_bits_per_sample(unsigned value)FLAC::Encoder::Stream [virtual]
set_blocksize(unsigned value)FLAC::Encoder::Stream [virtual]
set_channels(unsigned value)FLAC::Encoder::Stream [virtual]
set_compression_level(unsigned value)FLAC::Encoder::Stream [virtual]
set_do_escape_coding(bool value)FLAC::Encoder::Stream [virtual]
set_do_exhaustive_model_search(bool value)FLAC::Encoder::Stream [virtual]
set_do_mid_side_stereo(bool value)FLAC::Encoder::Stream [virtual]
set_do_qlp_coeff_prec_search(bool value)FLAC::Encoder::Stream [virtual]
set_loose_mid_side_stereo(bool value)FLAC::Encoder::Stream [virtual]
set_max_lpc_order(unsigned value)FLAC::Encoder::Stream [virtual]
set_max_residual_partition_order(unsigned value)FLAC::Encoder::Stream [virtual]
set_metadata(::FLAC__StreamMetadata **metadata, unsigned num_blocks)FLAC::Encoder::Stream [virtual]
set_metadata(FLAC::Metadata::Prototype **metadata, unsigned num_blocks)FLAC::Encoder::Stream [virtual]
set_min_residual_partition_order(unsigned value)FLAC::Encoder::Stream [virtual]
set_ogg_serial_number(long value)FLAC::Encoder::Stream [virtual]
set_qlp_coeff_precision(unsigned value)FLAC::Encoder::Stream [virtual]
set_rice_parameter_search_dist(unsigned value)FLAC::Encoder::Stream [virtual]
set_sample_rate(unsigned value)FLAC::Encoder::Stream [virtual]
set_streamable_subset(bool value)FLAC::Encoder::Stream [virtual]
set_total_samples_estimate(FLAC__uint64 value)FLAC::Encoder::Stream [virtual]
set_verify(bool value)FLAC::Encoder::Stream [virtual]
Stream() (defined in FLAC::Encoder::Stream)FLAC::Encoder::Stream
tell_callback(FLAC__uint64 *absolute_byte_offset)FLAC::Encoder::Stream [protected, virtual]
tell_callback_(const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data) (defined in FLAC::Encoder::Stream)FLAC::Encoder::Stream [protected, static]
write_callback(const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame)FLAC::Encoder::File [protected, virtual]
write_callback_(const ::FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, void *client_data) (defined in FLAC::Encoder::Stream)FLAC::Encoder::Stream [protected, static]
~File() (defined in FLAC::Encoder::File)FLAC::Encoder::File [virtual]
~Stream() (defined in FLAC::Encoder::Stream)FLAC::Encoder::Stream [virtual]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1File.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1File.html new file mode 100644 index 0000000..7bc52ae --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1File.html @@ -0,0 +1,2124 @@ + + +FLAC: FLAC::Encoder::File Class Reference + + + + + +

FLAC::Encoder::File Class Reference
+ +[FLAC++/encoder.h: encoder classes] +

#include <encoder.h> +

+

Inheritance diagram for FLAC::Encoder::File: +

+ +FLAC::Encoder::Stream + +List of all members.

Detailed Description

+This class wraps the FLAC__StreamEncoder. If you are not encoding to a file, you may need to use FLAC::Encoder::Stream. +

+The usage of this class is similar to FLAC__StreamEncoder, except instead of providing callbacks to FLAC__stream_encoder_init*_FILE() or FLAC__stream_encoder_init*_file(), you will inherit from this class and override the virtual callback functions with your own implementations, then call init() or init_ogg(). The rest of the calls work the same as in the C layer.

+There are no mandatory callbacks; all the callbacks from FLAC::Encoder::Stream are implemented here fully and support full post-encode STREAMINFO and SEEKTABLE updating. There is only an optional progress callback which you may override to get periodic reports on the progress of the encode. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual ::FLAC__StreamEncoderInitStatus init (FILE *file)
virtual ::FLAC__StreamEncoderInitStatus init (const char *filename)
virtual ::FLAC__StreamEncoderInitStatus init (const std::string &filename)
virtual ::FLAC__StreamEncoderInitStatus init_ogg (FILE *file)
virtual ::FLAC__StreamEncoderInitStatus init_ogg (const char *filename)
virtual ::FLAC__StreamEncoderInitStatus init_ogg (const std::string &filename)
virtual bool is_valid () const
 operator bool () const
virtual bool set_ogg_serial_number (long value)
virtual bool set_verify (bool value)
virtual bool set_streamable_subset (bool value)
virtual bool set_channels (unsigned value)
virtual bool set_bits_per_sample (unsigned value)
virtual bool set_sample_rate (unsigned value)
virtual bool set_compression_level (unsigned value)
virtual bool set_blocksize (unsigned value)
virtual bool set_do_mid_side_stereo (bool value)
virtual bool set_loose_mid_side_stereo (bool value)
virtual bool set_apodization (const char *specification)
virtual bool set_max_lpc_order (unsigned value)
virtual bool set_qlp_coeff_precision (unsigned value)
virtual bool set_do_qlp_coeff_prec_search (bool value)
virtual bool set_do_escape_coding (bool value)
virtual bool set_do_exhaustive_model_search (bool value)
virtual bool set_min_residual_partition_order (unsigned value)
virtual bool set_max_residual_partition_order (unsigned value)
virtual bool set_rice_parameter_search_dist (unsigned value)
virtual bool set_total_samples_estimate (FLAC__uint64 value)
virtual bool set_metadata (::FLAC__StreamMetadata **metadata, unsigned num_blocks)
virtual bool set_metadata (FLAC::Metadata::Prototype **metadata, unsigned num_blocks)
State get_state () const
virtual Decoder::Stream::State get_verify_decoder_state () const
virtual void get_verify_decoder_error_stats (FLAC__uint64 *absolute_sample, unsigned *frame_number, unsigned *channel, unsigned *sample, FLAC__int32 *expected, FLAC__int32 *got)
virtual bool get_verify () const
virtual bool get_streamable_subset () const
virtual bool get_do_mid_side_stereo () const
virtual bool get_loose_mid_side_stereo () const
virtual unsigned get_channels () const
virtual unsigned get_bits_per_sample () const
virtual unsigned get_sample_rate () const
virtual unsigned get_blocksize () const
virtual unsigned get_max_lpc_order () const
virtual unsigned get_qlp_coeff_precision () const
virtual bool get_do_qlp_coeff_prec_search () const
virtual bool get_do_escape_coding () const
virtual bool get_do_exhaustive_model_search () const
virtual unsigned get_min_residual_partition_order () const
virtual unsigned get_max_residual_partition_order () const
virtual unsigned get_rice_parameter_search_dist () const
virtual FLAC__uint64 get_total_samples_estimate () const
virtual ::FLAC__StreamEncoderInitStatus init ()
virtual ::FLAC__StreamEncoderInitStatus init_ogg ()
virtual bool finish ()
virtual bool process (const FLAC__int32 *const buffer[], unsigned samples)
virtual bool process_interleaved (const FLAC__int32 buffer[], unsigned samples)

Protected Member Functions

virtual void progress_callback (FLAC__uint64 bytes_written, FLAC__uint64 samples_written, unsigned frames_written, unsigned total_frames_estimate)
virtual ::FLAC__StreamEncoderWriteStatus write_callback (const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame)
virtual ::FLAC__StreamEncoderReadStatus read_callback (FLAC__byte buffer[], size_t *bytes)
virtual ::FLAC__StreamEncoderSeekStatus seek_callback (FLAC__uint64 absolute_byte_offset)
virtual ::FLAC__StreamEncoderTellStatus tell_callback (FLAC__uint64 *absolute_byte_offset)
virtual void metadata_callback (const ::FLAC__StreamMetadata *metadata)

Static Protected Member Functions

+::FLAC__StreamEncoderReadStatus read_callback_ (const ::FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
+::FLAC__StreamEncoderWriteStatus write_callback_ (const ::FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, void *client_data)
+::FLAC__StreamEncoderSeekStatus seek_callback_ (const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data)
+::FLAC__StreamEncoderTellStatus tell_callback_ (const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
+static void metadata_callback_ (const ::FLAC__StreamEncoder *encoder, const ::FLAC__StreamMetadata *metadata, void *client_data)

Protected Attributes

+::FLAC__StreamEncoderencoder_
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamEncoderInitStatus FLAC::Encoder::File::init FILE *  file  ) 
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_init_FILE(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamEncoderInitStatus FLAC::Encoder::File::init const char *  filename  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_init_file(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamEncoderInitStatus FLAC::Encoder::File::init const std::string &  filename  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_init_file(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamEncoderInitStatus FLAC::Encoder::File::init_ogg FILE *  file  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_init_ogg_FILE(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamEncoderInitStatus FLAC::Encoder::File::init_ogg const char *  filename  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_init_ogg_file(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamEncoderInitStatus FLAC::Encoder::File::init_ogg const std::string &  filename  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_init_ogg_file(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void FLAC::Encoder::File::progress_callback FLAC__uint64  bytes_written,
FLAC__uint64  samples_written,
unsigned  frames_written,
unsigned  total_frames_estimate
[protected, virtual]
+
+ + + + + +
+   + + +

+See FLAC__StreamEncoderProgressCallback. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ::FLAC__StreamEncoderWriteStatus FLAC::Encoder::File::write_callback const FLAC__byte  buffer[],
size_t  bytes,
unsigned  samples,
unsigned  current_frame
[protected, virtual]
+
+ + + + + +
+   + + +

+This is a dummy implementation to satisfy the pure virtual in Stream that is actually supplied internally by the C layer. +

+ +

+Implements FLAC::Encoder::Stream.

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::is_valid  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+Call after construction to check the that the object was created successfully. If not, use get_state() to find out why not.

+

+ + + + +
+ + + + + + + + +
FLAC::Encoder::Stream::operator bool  )  const [inline, inherited]
+
+ + + + + +
+   + + +

+See is_valid(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_ogg_serial_number long  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_ogg_serial_number(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_verify bool  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_verify(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_streamable_subset bool  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_streamable_subset(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_channels unsigned  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_channels(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_bits_per_sample unsigned  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_bits_per_sample(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_sample_rate unsigned  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_sample_rate(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_compression_level unsigned  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_compression_level(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_blocksize unsigned  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_blocksize(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_do_mid_side_stereo bool  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_do_mid_side_stereo(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_loose_mid_side_stereo bool  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_loose_mid_side_stereo(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_apodization const char *  specification  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_apodization(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_max_lpc_order unsigned  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_max_lpc_order(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_qlp_coeff_precision unsigned  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_qlp_coeff_precision(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_do_qlp_coeff_prec_search bool  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_do_qlp_coeff_prec_search(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_do_escape_coding bool  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_do_escape_coding(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_do_exhaustive_model_search bool  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_do_exhaustive_model_search(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_min_residual_partition_order unsigned  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_min_residual_partition_order(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_max_residual_partition_order unsigned  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_max_residual_partition_order(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_rice_parameter_search_dist unsigned  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_rice_parameter_search_dist(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_total_samples_estimate FLAC__uint64  value  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_total_samples_estimate(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_metadata ::FLAC__StreamMetadata **  metadata,
unsigned  num_blocks
[virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_metadata(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_metadata FLAC::Metadata::Prototype **  metadata,
unsigned  num_blocks
[virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_metadata(). +

+

+

+ + + + +
+ + + + + + + + +
State FLAC::Encoder::Stream::get_state  )  const [inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_state(). +

+

+

+ + + + +
+ + + + + + + + +
virtual Decoder::Stream::State FLAC::Encoder::Stream::get_verify_decoder_state  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_verify_decoder_state(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void FLAC::Encoder::Stream::get_verify_decoder_error_stats FLAC__uint64 *  absolute_sample,
unsigned *  frame_number,
unsigned *  channel,
unsigned *  sample,
FLAC__int32 *  expected,
FLAC__int32 *  got
[virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_verify_decoder_error_stats(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::get_verify  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_verify(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::get_streamable_subset  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_streamable_subset(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::get_do_mid_side_stereo  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_do_mid_side_stereo(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::get_loose_mid_side_stereo  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_loose_mid_side_stereo(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_channels  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_channels(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_bits_per_sample  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_bits_per_sample(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_sample_rate  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_sample_rate(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_blocksize  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_blocksize(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_max_lpc_order  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_max_lpc_order(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_qlp_coeff_precision  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_qlp_coeff_precision(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::get_do_qlp_coeff_prec_search  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_do_qlp_coeff_prec_search(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::get_do_escape_coding  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_do_escape_coding(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::get_do_exhaustive_model_search  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_do_exhaustive_model_search(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_min_residual_partition_order  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_min_residual_partition_order(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_max_residual_partition_order  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_max_residual_partition_order(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_rice_parameter_search_dist  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_rice_parameter_search_dist(). +

+

+

+ + + + +
+ + + + + + + + +
virtual FLAC__uint64 FLAC::Encoder::Stream::get_total_samples_estimate  )  const [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_total_samples_estimate(). +

+

+

+ + + + +
+ + + + + + + + +
virtual ::FLAC__StreamEncoderInitStatus FLAC::Encoder::Stream::init  )  [inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_init_stream(). +

+

+

+ + + + +
+ + + + + + + + +
virtual ::FLAC__StreamEncoderInitStatus FLAC::Encoder::Stream::init_ogg  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_init_ogg_stream(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::finish  )  [virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_finish(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool FLAC::Encoder::Stream::process const FLAC__int32 *const   buffer[],
unsigned  samples
[virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_process(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool FLAC::Encoder::Stream::process_interleaved const FLAC__int32  buffer[],
unsigned  samples
[virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_process_interleaved(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ::FLAC__StreamEncoderReadStatus FLAC::Encoder::Stream::read_callback FLAC__byte  buffer[],
size_t *  bytes
[protected, virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__StreamEncoderReadCallback. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamEncoderSeekStatus FLAC::Encoder::Stream::seek_callback FLAC__uint64  absolute_byte_offset  )  [protected, virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__StreamEncoderSeekCallback. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamEncoderTellStatus FLAC::Encoder::Stream::tell_callback FLAC__uint64 *  absolute_byte_offset  )  [protected, virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__StreamEncoderTellCallback. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void FLAC::Encoder::Stream::metadata_callback const ::FLAC__StreamMetadata metadata  )  [protected, virtual, inherited]
+
+ + + + + +
+   + + +

+See FLAC__StreamEncoderMetadataCallback. +

+

+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1File.png b/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1File.png new file mode 100644 index 0000000000000000000000000000000000000000..3e45088003cfcf1c18e98b8933743d5a8fef7955 GIT binary patch literal 492 zcmeAS@N?(olHy`uVBq!ia0vp^6M#5?g&9b)G(5BiQW60^A+G=b{|7Sv|35H)ega4Z z7#}!rp!(4NCqOP^NswPKgTu2MX+U<9r;B4q#hkZOz4MMJ@U$IXmi-Nm{!g#V(D{~ z>v(hA#+JoQq4S5Fi|VX+zpi|B!zFANV{F`2iWi4nZuF4n+^X%UW|YdD^r`O|@3!-D zLVL2WG;eZ~n)!!8ZF-x*PvzfL+4BS0rd_fU20ID{5B9^vs;)=GK=VZ?Tm`%x_5Q z9 z-l1yWG_f_>$^jYQ*c7hsoKmJ$w!wL6wy*EHKz6C=%Vu@xYfmt>D#=}))W7T7>5UHh fe6zk<|6)qq$X4~M_a!GVY8X6S{an^LB{Ts5_W#ST literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream-members.html new file mode 100644 index 0000000..6fb8cb9 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream-members.html @@ -0,0 +1,93 @@ + + +FLAC: Member List + + + + +

FLAC::Encoder::Stream Member List

This is the complete list of members for FLAC::Encoder::Stream, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
encoder_ (defined in FLAC::Encoder::Stream)FLAC::Encoder::Stream [protected]
finish()FLAC::Encoder::Stream [virtual]
get_bits_per_sample() const FLAC::Encoder::Stream [virtual]
get_blocksize() const FLAC::Encoder::Stream [virtual]
get_channels() const FLAC::Encoder::Stream [virtual]
get_do_escape_coding() const FLAC::Encoder::Stream [virtual]
get_do_exhaustive_model_search() const FLAC::Encoder::Stream [virtual]
get_do_mid_side_stereo() const FLAC::Encoder::Stream [virtual]
get_do_qlp_coeff_prec_search() const FLAC::Encoder::Stream [virtual]
get_loose_mid_side_stereo() const FLAC::Encoder::Stream [virtual]
get_max_lpc_order() const FLAC::Encoder::Stream [virtual]
get_max_residual_partition_order() const FLAC::Encoder::Stream [virtual]
get_min_residual_partition_order() const FLAC::Encoder::Stream [virtual]
get_qlp_coeff_precision() const FLAC::Encoder::Stream [virtual]
get_rice_parameter_search_dist() const FLAC::Encoder::Stream [virtual]
get_sample_rate() const FLAC::Encoder::Stream [virtual]
get_state() const FLAC::Encoder::Stream
get_streamable_subset() const FLAC::Encoder::Stream [virtual]
get_total_samples_estimate() const FLAC::Encoder::Stream [virtual]
get_verify() const FLAC::Encoder::Stream [virtual]
get_verify_decoder_error_stats(FLAC__uint64 *absolute_sample, unsigned *frame_number, unsigned *channel, unsigned *sample, FLAC__int32 *expected, FLAC__int32 *got)FLAC::Encoder::Stream [virtual]
get_verify_decoder_state() const FLAC::Encoder::Stream [virtual]
init()FLAC::Encoder::Stream
init_ogg()FLAC::Encoder::Stream [virtual]
is_valid() const FLAC::Encoder::Stream [virtual]
metadata_callback(const ::FLAC__StreamMetadata *metadata)FLAC::Encoder::Stream [protected, virtual]
metadata_callback_(const ::FLAC__StreamEncoder *encoder, const ::FLAC__StreamMetadata *metadata, void *client_data) (defined in FLAC::Encoder::Stream)FLAC::Encoder::Stream [protected, static]
operator bool() const FLAC::Encoder::Stream [inline]
process(const FLAC__int32 *const buffer[], unsigned samples)FLAC::Encoder::Stream [virtual]
process_interleaved(const FLAC__int32 buffer[], unsigned samples)FLAC::Encoder::Stream [virtual]
read_callback(FLAC__byte buffer[], size_t *bytes)FLAC::Encoder::Stream [protected, virtual]
read_callback_(const ::FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data) (defined in FLAC::Encoder::Stream)FLAC::Encoder::Stream [protected, static]
seek_callback(FLAC__uint64 absolute_byte_offset)FLAC::Encoder::Stream [protected, virtual]
seek_callback_(const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data) (defined in FLAC::Encoder::Stream)FLAC::Encoder::Stream [protected, static]
set_apodization(const char *specification)FLAC::Encoder::Stream [virtual]
set_bits_per_sample(unsigned value)FLAC::Encoder::Stream [virtual]
set_blocksize(unsigned value)FLAC::Encoder::Stream [virtual]
set_channels(unsigned value)FLAC::Encoder::Stream [virtual]
set_compression_level(unsigned value)FLAC::Encoder::Stream [virtual]
set_do_escape_coding(bool value)FLAC::Encoder::Stream [virtual]
set_do_exhaustive_model_search(bool value)FLAC::Encoder::Stream [virtual]
set_do_mid_side_stereo(bool value)FLAC::Encoder::Stream [virtual]
set_do_qlp_coeff_prec_search(bool value)FLAC::Encoder::Stream [virtual]
set_loose_mid_side_stereo(bool value)FLAC::Encoder::Stream [virtual]
set_max_lpc_order(unsigned value)FLAC::Encoder::Stream [virtual]
set_max_residual_partition_order(unsigned value)FLAC::Encoder::Stream [virtual]
set_metadata(::FLAC__StreamMetadata **metadata, unsigned num_blocks)FLAC::Encoder::Stream [virtual]
set_metadata(FLAC::Metadata::Prototype **metadata, unsigned num_blocks)FLAC::Encoder::Stream [virtual]
set_min_residual_partition_order(unsigned value)FLAC::Encoder::Stream [virtual]
set_ogg_serial_number(long value)FLAC::Encoder::Stream [virtual]
set_qlp_coeff_precision(unsigned value)FLAC::Encoder::Stream [virtual]
set_rice_parameter_search_dist(unsigned value)FLAC::Encoder::Stream [virtual]
set_sample_rate(unsigned value)FLAC::Encoder::Stream [virtual]
set_streamable_subset(bool value)FLAC::Encoder::Stream [virtual]
set_total_samples_estimate(FLAC__uint64 value)FLAC::Encoder::Stream [virtual]
set_verify(bool value)FLAC::Encoder::Stream [virtual]
Stream() (defined in FLAC::Encoder::Stream)FLAC::Encoder::Stream
tell_callback(FLAC__uint64 *absolute_byte_offset)FLAC::Encoder::Stream [protected, virtual]
tell_callback_(const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data) (defined in FLAC::Encoder::Stream)FLAC::Encoder::Stream [protected, static]
write_callback(const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame)=0FLAC::Encoder::Stream [protected, pure virtual]
write_callback_(const ::FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, void *client_data) (defined in FLAC::Encoder::Stream)FLAC::Encoder::Stream [protected, static]
~Stream() (defined in FLAC::Encoder::Stream)FLAC::Encoder::Stream [virtual]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream.html new file mode 100644 index 0000000..1896399 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream.html @@ -0,0 +1,1882 @@ + + +FLAC: FLAC::Encoder::Stream Class Reference + + + + + +

FLAC::Encoder::Stream Class Reference
+ +[FLAC++/encoder.h: encoder classes] +

#include <encoder.h> +

+

Inheritance diagram for FLAC::Encoder::Stream: +

+ +FLAC::Encoder::File + +List of all members.

Detailed Description

+This class wraps the FLAC__StreamEncoder. If you are encoding to a file, FLAC::Encoder::File may be more convenient. +

+The usage of this class is similar to FLAC__StreamEncoder, except instead of providing callbacks to FLAC__stream_encoder_init*_stream(), you will inherit from this class and override the virtual callback functions with your own implementations, then call init() or init_ogg(). The rest of the calls work the same as in the C layer.

+Only the write callback is mandatory. The others are optional; this class provides default implementations that do nothing. In order for some STREAMINFO and SEEKTABLE data to be written properly, you must overide seek_callback() and tell_callback(); see FLAC__stream_encoder_init_stream() as to why. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual bool is_valid () const
 operator bool () const
virtual bool set_ogg_serial_number (long value)
virtual bool set_verify (bool value)
virtual bool set_streamable_subset (bool value)
virtual bool set_channels (unsigned value)
virtual bool set_bits_per_sample (unsigned value)
virtual bool set_sample_rate (unsigned value)
virtual bool set_compression_level (unsigned value)
virtual bool set_blocksize (unsigned value)
virtual bool set_do_mid_side_stereo (bool value)
virtual bool set_loose_mid_side_stereo (bool value)
virtual bool set_apodization (const char *specification)
virtual bool set_max_lpc_order (unsigned value)
virtual bool set_qlp_coeff_precision (unsigned value)
virtual bool set_do_qlp_coeff_prec_search (bool value)
virtual bool set_do_escape_coding (bool value)
virtual bool set_do_exhaustive_model_search (bool value)
virtual bool set_min_residual_partition_order (unsigned value)
virtual bool set_max_residual_partition_order (unsigned value)
virtual bool set_rice_parameter_search_dist (unsigned value)
virtual bool set_total_samples_estimate (FLAC__uint64 value)
virtual bool set_metadata (::FLAC__StreamMetadata **metadata, unsigned num_blocks)
virtual bool set_metadata (FLAC::Metadata::Prototype **metadata, unsigned num_blocks)
State get_state () const
virtual Decoder::Stream::State get_verify_decoder_state () const
virtual void get_verify_decoder_error_stats (FLAC__uint64 *absolute_sample, unsigned *frame_number, unsigned *channel, unsigned *sample, FLAC__int32 *expected, FLAC__int32 *got)
virtual bool get_verify () const
virtual bool get_streamable_subset () const
virtual bool get_do_mid_side_stereo () const
virtual bool get_loose_mid_side_stereo () const
virtual unsigned get_channels () const
virtual unsigned get_bits_per_sample () const
virtual unsigned get_sample_rate () const
virtual unsigned get_blocksize () const
virtual unsigned get_max_lpc_order () const
virtual unsigned get_qlp_coeff_precision () const
virtual bool get_do_qlp_coeff_prec_search () const
virtual bool get_do_escape_coding () const
virtual bool get_do_exhaustive_model_search () const
virtual unsigned get_min_residual_partition_order () const
virtual unsigned get_max_residual_partition_order () const
virtual unsigned get_rice_parameter_search_dist () const
virtual FLAC__uint64 get_total_samples_estimate () const
virtual ::FLAC__StreamEncoderInitStatus init ()
virtual ::FLAC__StreamEncoderInitStatus init_ogg ()
virtual bool finish ()
virtual bool process (const FLAC__int32 *const buffer[], unsigned samples)
virtual bool process_interleaved (const FLAC__int32 buffer[], unsigned samples)

Protected Member Functions

virtual ::FLAC__StreamEncoderReadStatus read_callback (FLAC__byte buffer[], size_t *bytes)
virtual ::FLAC__StreamEncoderWriteStatus write_callback (const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame)=0
virtual ::FLAC__StreamEncoderSeekStatus seek_callback (FLAC__uint64 absolute_byte_offset)
virtual ::FLAC__StreamEncoderTellStatus tell_callback (FLAC__uint64 *absolute_byte_offset)
virtual void metadata_callback (const ::FLAC__StreamMetadata *metadata)

Static Protected Member Functions

+::FLAC__StreamEncoderReadStatus read_callback_ (const ::FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
+::FLAC__StreamEncoderWriteStatus write_callback_ (const ::FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, void *client_data)
+::FLAC__StreamEncoderSeekStatus seek_callback_ (const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data)
+::FLAC__StreamEncoderTellStatus tell_callback_ (const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
+static void metadata_callback_ (const ::FLAC__StreamEncoder *encoder, const ::FLAC__StreamMetadata *metadata, void *client_data)

Protected Attributes

+::FLAC__StreamEncoderencoder_

Classes

class  State
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::is_valid  )  const [virtual]
+
+ + + + + +
+   + + +

+Call after construction to check the that the object was created successfully. If not, use get_state() to find out why not.

+

+ + + + +
+ + + + + + + + +
FLAC::Encoder::Stream::operator bool  )  const [inline]
+
+ + + + + +
+   + + +

+See is_valid(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_ogg_serial_number long  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_ogg_serial_number(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_verify bool  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_verify(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_streamable_subset bool  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_streamable_subset(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_channels unsigned  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_channels(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_bits_per_sample unsigned  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_bits_per_sample(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_sample_rate unsigned  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_sample_rate(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_compression_level unsigned  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_compression_level(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_blocksize unsigned  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_blocksize(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_do_mid_side_stereo bool  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_do_mid_side_stereo(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_loose_mid_side_stereo bool  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_loose_mid_side_stereo(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_apodization const char *  specification  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_apodization(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_max_lpc_order unsigned  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_max_lpc_order(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_qlp_coeff_precision unsigned  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_qlp_coeff_precision(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_do_qlp_coeff_prec_search bool  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_do_qlp_coeff_prec_search(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_do_escape_coding bool  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_do_escape_coding(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_do_exhaustive_model_search bool  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_do_exhaustive_model_search(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_min_residual_partition_order unsigned  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_min_residual_partition_order(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_max_residual_partition_order unsigned  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_max_residual_partition_order(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_rice_parameter_search_dist unsigned  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_rice_parameter_search_dist(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_total_samples_estimate FLAC__uint64  value  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_total_samples_estimate(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_metadata ::FLAC__StreamMetadata **  metadata,
unsigned  num_blocks
[virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_metadata(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool FLAC::Encoder::Stream::set_metadata FLAC::Metadata::Prototype **  metadata,
unsigned  num_blocks
[virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_set_metadata(). +

+

+

+ + + + +
+ + + + + + + + +
State FLAC::Encoder::Stream::get_state  )  const
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_state(). +

+

+

+ + + + +
+ + + + + + + + +
virtual Decoder::Stream::State FLAC::Encoder::Stream::get_verify_decoder_state  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_verify_decoder_state(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void FLAC::Encoder::Stream::get_verify_decoder_error_stats FLAC__uint64 *  absolute_sample,
unsigned *  frame_number,
unsigned *  channel,
unsigned *  sample,
FLAC__int32 *  expected,
FLAC__int32 *  got
[virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_verify_decoder_error_stats(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::get_verify  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_verify(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::get_streamable_subset  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_streamable_subset(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::get_do_mid_side_stereo  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_do_mid_side_stereo(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::get_loose_mid_side_stereo  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_loose_mid_side_stereo(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_channels  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_channels(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_bits_per_sample  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_bits_per_sample(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_sample_rate  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_sample_rate(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_blocksize  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_blocksize(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_max_lpc_order  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_max_lpc_order(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_qlp_coeff_precision  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_qlp_coeff_precision(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::get_do_qlp_coeff_prec_search  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_do_qlp_coeff_prec_search(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::get_do_escape_coding  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_do_escape_coding(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::get_do_exhaustive_model_search  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_do_exhaustive_model_search(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_min_residual_partition_order  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_min_residual_partition_order(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_max_residual_partition_order  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_max_residual_partition_order(). +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned FLAC::Encoder::Stream::get_rice_parameter_search_dist  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_rice_parameter_search_dist(). +

+

+

+ + + + +
+ + + + + + + + +
virtual FLAC__uint64 FLAC::Encoder::Stream::get_total_samples_estimate  )  const [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_get_total_samples_estimate(). +

+

+

+ + + + +
+ + + + + + + + +
virtual ::FLAC__StreamEncoderInitStatus FLAC::Encoder::Stream::init  ) 
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_init_stream(). +

+

+

+ + + + +
+ + + + + + + + +
virtual ::FLAC__StreamEncoderInitStatus FLAC::Encoder::Stream::init_ogg  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_init_ogg_stream(). +

+

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Encoder::Stream::finish  )  [virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_finish(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool FLAC::Encoder::Stream::process const FLAC__int32 *const   buffer[],
unsigned  samples
[virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_process(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool FLAC::Encoder::Stream::process_interleaved const FLAC__int32  buffer[],
unsigned  samples
[virtual]
+
+ + + + + +
+   + + +

+See FLAC__stream_encoder_process_interleaved(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ::FLAC__StreamEncoderReadStatus FLAC::Encoder::Stream::read_callback FLAC__byte  buffer[],
size_t *  bytes
[protected, virtual]
+
+ + + + + +
+   + + +

+See FLAC__StreamEncoderReadCallback. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ::FLAC__StreamEncoderWriteStatus FLAC::Encoder::Stream::write_callback const FLAC__byte  buffer[],
size_t  bytes,
unsigned  samples,
unsigned  current_frame
[protected, pure virtual]
+
+ + + + + +
+   + + +

+See FLAC__StreamEncoderWriteCallback. +

+ +

+Implemented in FLAC::Encoder::File.

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamEncoderSeekStatus FLAC::Encoder::Stream::seek_callback FLAC__uint64  absolute_byte_offset  )  [protected, virtual]
+
+ + + + + +
+   + + +

+See FLAC__StreamEncoderSeekCallback. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ::FLAC__StreamEncoderTellStatus FLAC::Encoder::Stream::tell_callback FLAC__uint64 *  absolute_byte_offset  )  [protected, virtual]
+
+ + + + + +
+   + + +

+See FLAC__StreamEncoderTellCallback. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void FLAC::Encoder::Stream::metadata_callback const ::FLAC__StreamMetadata metadata  )  [protected, virtual]
+
+ + + + + +
+   + + +

+See FLAC__StreamEncoderMetadataCallback. +

+

+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream.png b/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream.png new file mode 100644 index 0000000000000000000000000000000000000000..4ec3a53e596245f95b14a733167bdbd5f9663f7a GIT binary patch literal 502 zcmV8} zAq#VKG(kXbJ}NVgF8)I={#qx+Ml1GzS9j5zG@u z(b9)DuuM7PbiIL6AhLsTdJ4>jqdHC?$kF_AQhYne06HMr7S9pEwh^HRfj$yyS9+Pq zln431VO-I?y{+>OAQp{UP}E2xT{?g+NdxH8BkM7lI->~8r8OX5G&ZU%cs~N6vy)>G zrWRmH55^g3?N!(Cq)`XL5y-y3XrB^D8ueY%v)-h(u3-gQVH@=3pk+TtGxk`M^*YeU z^KPK$^KmoK{kpb68?-?iv_Tv6Z$RG@_A?RVzK$jKxj}yb@qf5SkV#NSX5@WnqKhY6 zRQVMs#FvQQIPI^kK%IX93MHB-@b#P{4cHH=nAC>I)Oxw z8kB`lDQqxM+`0m#j1n;C-+=UdDUGZvBM@2bSD>VGF6~lmvO~FRRZU5w1~e{BHIcoj sK-8$~+EK(Fb?rslpf?B2{2a~LFLav>P6P3-k^lez07*qoM6N<$f~8^EumAu6 literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State-members.html new file mode 100644 index 0000000..42926ab --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State-members.html @@ -0,0 +1,36 @@ + + +FLAC: Member List + + + + +

FLAC::Encoder::Stream::State Member List

This is the complete list of members for FLAC::Encoder::Stream::State, including all inherited members.

+ + + + + +
as_cstring() const (defined in FLAC::Encoder::Stream::State)FLAC::Encoder::Stream::State [inline]
operator::FLAC__StreamEncoderState() const (defined in FLAC::Encoder::Stream::State)FLAC::Encoder::Stream::State [inline]
resolved_as_cstring(const Stream &encoder) const (defined in FLAC::Encoder::Stream::State)FLAC::Encoder::Stream::State [inline]
State(::FLAC__StreamEncoderState state) (defined in FLAC::Encoder::Stream::State)FLAC::Encoder::Stream::State [inline]
state_ (defined in FLAC::Encoder::Stream::State)FLAC::Encoder::Stream::State [protected]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State.html new file mode 100644 index 0000000..fabc05b --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State.html @@ -0,0 +1,59 @@ + + +FLAC: FLAC::Encoder::Stream::State Class Reference + + + + + +

FLAC::Encoder::Stream::State Class Reference

#include <encoder.h> +

+List of all members.


Detailed Description

+This class is a wrapper around FLAC__StreamEncoderState. +

+ + + + + + + + + + + + + + +

Public Member Functions

State (::FLAC__StreamEncoderState state)
operator::FLAC__StreamEncoderState () const
+const char * as_cstring () const
+const char * resolved_as_cstring (const Stream &encoder) const

Protected Attributes

+::FLAC__StreamEncoderState state_
+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Application-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Application-members.html new file mode 100644 index 0000000..73c86dc --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Application-members.html @@ -0,0 +1,71 @@ + + +FLAC: Member List + + + + +

FLAC::Metadata::Application Member List

This is the complete list of members for FLAC::Metadata::Application, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Application() (defined in FLAC::Metadata::Application)FLAC::Metadata::Application
Application(const Application &object)FLAC::Metadata::Application [inline]
Application(const ::FLAC__StreamMetadata &object) (defined in FLAC::Metadata::Application)FLAC::Metadata::Application [inline]
Application(const ::FLAC__StreamMetadata *object) (defined in FLAC::Metadata::Application)FLAC::Metadata::Application [inline]
Application(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Application [inline]
assign(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Application [inline]
assign_object(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
clear()FLAC::Metadata::Prototype [protected, virtual]
get_data() const (defined in FLAC::Metadata::Application)FLAC::Metadata::Application
get_id() const (defined in FLAC::Metadata::Application)FLAC::Metadata::Application
get_is_last() const FLAC::Metadata::Prototype
get_length() const FLAC::Metadata::Prototype
get_type() const FLAC::Metadata::Prototype
is_valid() const FLAC::Metadata::Prototype [inline]
Iterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
object_ (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
operator const ::FLAC__StreamMetadata *() const FLAC::Metadata::Prototype [inline]
operator!=(const Application &object) const FLAC::Metadata::Application [inline]
operator!=(const ::FLAC__StreamMetadata &object) const (defined in FLAC::Metadata::Application)FLAC::Metadata::Application [inline]
operator!=(const ::FLAC__StreamMetadata *object) const (defined in FLAC::Metadata::Application)FLAC::Metadata::Application [inline]
FLAC::Metadata::Prototype::operator!=(const Prototype &) const FLAC::Metadata::Prototype [inline]
operator=(const Application &object)FLAC::Metadata::Application [inline]
operator=(const ::FLAC__StreamMetadata &object) (defined in FLAC::Metadata::Application)FLAC::Metadata::Application [inline]
operator=(const ::FLAC__StreamMetadata *object) (defined in FLAC::Metadata::Application)FLAC::Metadata::Application [inline]
FLAC::Metadata::Prototype::operator=(const Prototype &)FLAC::Metadata::Prototype [protected]
operator==(const Application &object) const FLAC::Metadata::Application [inline]
operator==(const ::FLAC__StreamMetadata &object) const (defined in FLAC::Metadata::Application)FLAC::Metadata::Application [inline]
operator==(const ::FLAC__StreamMetadata *object) const (defined in FLAC::Metadata::Application)FLAC::Metadata::Application [inline]
FLAC::Metadata::Prototype::operator==(const Prototype &) const FLAC::Metadata::Prototype [inline]
Prototype(const Prototype &)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata &) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata *) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
set_data(const FLAC__byte *data, unsigned length)FLAC::Metadata::Application
set_data(FLAC__byte *data, unsigned length, bool copy) (defined in FLAC::Metadata::Application)FLAC::Metadata::Application
set_id(const FLAC__byte value[4]) (defined in FLAC::Metadata::Application)FLAC::Metadata::Application
set_is_last(bool)FLAC::Metadata::Prototype
SimpleIterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
~Application() (defined in FLAC::Metadata::Application)FLAC::Metadata::Application
~Prototype()FLAC::Metadata::Prototype [virtual]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Application.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Application.html new file mode 100644 index 0000000..1149c1b --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Application.html @@ -0,0 +1,548 @@ + + +FLAC: FLAC::Metadata::Application Class Reference + + + + + +

FLAC::Metadata::Application Class Reference
+ +[FLAC++/metadata.h: metadata object classes] +

#include <metadata.h> +

+

Inheritance diagram for FLAC::Metadata::Application: +

+ +FLAC::Metadata::Prototype + +List of all members.

Detailed Description

+APPLICATION metadata block. See the overview for more, and the format specification. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 Application (const Application &object)
Application (const ::FLAC__StreamMetadata &object)
Application (const ::FLAC__StreamMetadata *object)
 Application (::FLAC__StreamMetadata *object, bool copy)
Applicationoperator= (const Application &object)
+Applicationoperator= (const ::FLAC__StreamMetadata &object)
+Applicationoperator= (const ::FLAC__StreamMetadata *object)
Applicationassign (::FLAC__StreamMetadata *object, bool copy)
bool operator== (const Application &object) const
+bool operator== (const ::FLAC__StreamMetadata &object) const
+bool operator== (const ::FLAC__StreamMetadata *object) const
bool operator!= (const Application &object) const
+bool operator!= (const ::FLAC__StreamMetadata &object) const
+bool operator!= (const ::FLAC__StreamMetadata *object) const
+const FLAC__byte * get_id () const
+const FLAC__byte * get_data () const
+void set_id (const FLAC__byte value[4])
bool set_data (const FLAC__byte *data, unsigned length)
+bool set_data (FLAC__byte *data, unsigned length, bool copy)
bool operator== (const Prototype &) const
bool operator!= (const Prototype &) const
bool is_valid () const
bool get_is_last () const
::FLAC__MetadataType get_type () const
unsigned get_length () const
void set_is_last (bool)
 operator const ::FLAC__StreamMetadata * () const

Protected Member Functions

Prototypeassign_object (::FLAC__StreamMetadata *object, bool copy)
virtual void clear ()

Protected Attributes

+::FLAC__StreamMetadataobject_

Friends

+class SimpleIterator
+class Iterator
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
FLAC::Metadata::Application::Application const Application object  )  [inline]
+
+ + + + + +
+   + + +

+Constructs a copy of the given object. This form always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC::Metadata::Application::Application ::FLAC__StreamMetadata object,
bool  copy
[inline]
+
+ + + + + +
+   + + +

+Constructs an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
Application& FLAC::Metadata::Application::operator= const Application object  )  [inline]
+
+ + + + + +
+   + + +

+Assign from another object. Always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Application& FLAC::Metadata::Application::assign ::FLAC__StreamMetadata object,
bool  copy
[inline]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype::assign_object(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Application::operator== const Application object  )  const [inline]
+
+ + + + + +
+   + + +

+Check for equality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Application::operator!= const Application object  )  const [inline]
+
+ + + + + +
+   + + +

+Check for inequality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::Application::set_data const FLAC__byte *  data,
unsigned  length
+
+ + + + + +
+   + + +

+This form always copies data. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Prototype& FLAC::Metadata::Prototype::assign_object ::FLAC__StreamMetadata object,
bool  copy
[protected, inherited]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + +
virtual void FLAC::Metadata::Prototype::clear  )  [protected, virtual, inherited]
+
+ + + + + +
+   + + +

+Deletes the underlying FLAC__StreamMetadata object.

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::Prototype::get_is_last  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns true if this block is the last block in a stream, else false.

+

Assertions:
+
+

+ + + + +
+ + + + + + + + +
::FLAC__MetadataType FLAC::Metadata::Prototype::get_type  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns the type of the block.

+

Assertions:
+ +

+Reimplemented in FLAC::Metadata::Picture.

+

+ + + + +
+ + + + + + + + +
unsigned FLAC::Metadata::Prototype::get_length  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns the stream length of the metadata block.

+

Note:
The length does not include the metadata block header, per spec.
+
Assertions:
+
+

+ + + + +
+ + + + + + + + + +
void FLAC::Metadata::Prototype::set_is_last bool   )  [inherited]
+
+ + + + + +
+   + + +

+Sets the "is_last" flag for the block. When using the iterators it is not necessary to set this flag; they will do it for you.

+

Assertions:
+
+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Application.png b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Application.png new file mode 100644 index 0000000000000000000000000000000000000000..279ea6a08fc42e4cf8a1bfaaf0804f6665f3b230 GIT binary patch literal 576 zcmV-G0>Axx_lX^i&CHS^ zU?C<-JU+GZ%3P#oyT`_}ikJ;V)~!Qq*gSwO_KwvoSSJ;CIj}jGoy@vgMLi;k4x8~Y zw`?bfz}%-=c5JhwXZWkFZHx851G{31S5$~4j4SpncDpU!vDwUZL$haKiyXylu>!1X zd#oV+8tVnwLMid|Smd_*-ochzmIhVV_5gdQwow3YFP1GUyIQ+z@lFuPP{Jv+D@u3U z34b5CY2K${We7Gd=GoY8OzcSPpg;5n#^n*?|Hi&u&xE~RFDJsDs}m-6VkdTDCw5{d z_SLXFWGplyuQah^v5A?IuWW&XD4ud`ExTbKR~?~aiy@J@LS)@K#?svb`e-X`Q94$$ zV4YOlH`F)75}TXEPW0NgSdS;LZbVfGVYtIe zDCx%3Z;N+qGBbP&F~y5{*$iuJ;$ti=<>-R-D8fJdHp3cA-$aW(pyFAh>e?3UL2Wy% z|LPF>mRyUQ#T9!e5M(GVo3;~DicZ+DzZ#L=k@7XLKb$$SV>+rpwIG}T O0000 + +FLAC: Member List + + + + +

FLAC::Metadata::Chain Member List

This is the complete list of members for FLAC::Metadata::Chain, including all inherited members.

+ + + + + + + + + + + + + + + +
Chain() (defined in FLAC::Metadata::Chain)FLAC::Metadata::Chain
chain_ (defined in FLAC::Metadata::Chain)FLAC::Metadata::Chain [protected]
check_if_tempfile_needed(bool use_padding)FLAC::Metadata::Chain
clear() (defined in FLAC::Metadata::Chain)FLAC::Metadata::Chain [protected, virtual]
is_valid() const FLAC::Metadata::Chain
Iterator (defined in FLAC::Metadata::Chain)FLAC::Metadata::Chain [friend]
merge_padding()FLAC::Metadata::Chain
read(const char *filename, bool is_ogg=false)FLAC::Metadata::Chain
read(FLAC__IOHandle handle, FLAC__IOCallbacks callbacks, bool is_ogg=false)FLAC::Metadata::Chain
sort_padding()FLAC::Metadata::Chain
status()FLAC::Metadata::Chain
write(bool use_padding=true, bool preserve_file_stats=false)FLAC::Metadata::Chain
write(bool use_padding,::FLAC__IOHandle handle,::FLAC__IOCallbacks callbacks)FLAC::Metadata::Chain
write(bool use_padding,::FLAC__IOHandle handle,::FLAC__IOCallbacks callbacks,::FLAC__IOHandle temp_handle,::FLAC__IOCallbacks temp_callbacks)FLAC::Metadata::Chain
~Chain() (defined in FLAC::Metadata::Chain)FLAC::Metadata::Chain [virtual]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Chain.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Chain.html new file mode 100644 index 0000000..e465127 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Chain.html @@ -0,0 +1,453 @@ + + +FLAC: FLAC::Metadata::Chain Class Reference + + + + + +

FLAC::Metadata::Chain Class Reference
+ +[FLAC++/metadata.h: metadata level 2 interface] +

#include <metadata.h> +

+List of all members.


Detailed Description

+This class is a wrapper around the FLAC__metadata_chain structures and methods; see the usage guide and FLAC__Metadata_Chain. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

bool is_valid () const
Status status ()
bool read (const char *filename, bool is_ogg=false)
bool read (FLAC__IOHandle handle, FLAC__IOCallbacks callbacks, bool is_ogg=false)
bool check_if_tempfile_needed (bool use_padding)
bool write (bool use_padding=true, bool preserve_file_stats=false)
bool write (bool use_padding,::FLAC__IOHandle handle,::FLAC__IOCallbacks callbacks)
bool write (bool use_padding,::FLAC__IOHandle handle,::FLAC__IOCallbacks callbacks,::FLAC__IOHandle temp_handle,::FLAC__IOCallbacks temp_callbacks)
void merge_padding ()
void sort_padding ()

Protected Member Functions

+virtual void clear ()

Protected Attributes

+::FLAC__Metadata_Chainchain_

Friends

+class Iterator

Classes

class  Status
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::Chain::is_valid  )  const
+
+ + + + + +
+   + + +

+Returns true iff object was properly constructed. +

+

+

+ + + + +
+ + + + + + + + +
Status FLAC::Metadata::Chain::status  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_chain_status(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::Chain::read const char *  filename,
bool  is_ogg = false
+
+ + + + + +
+   + + +

+See FLAC__metadata_chain_read(), FLAC__metadata_chain_read_ogg(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::Chain::read FLAC__IOHandle  handle,
FLAC__IOCallbacks  callbacks,
bool  is_ogg = false
+
+ + + + + +
+   + + +

+See FLAC__metadata_chain_read_with_callbacks(), FLAC__metadata_chain_read_ogg_with_callbacks(). +

+

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Chain::check_if_tempfile_needed bool  use_padding  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_chain_check_if_tempfile_needed(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::Chain::write bool  use_padding = true,
bool  preserve_file_stats = false
+
+ + + + + +
+   + + +

+See FLAC__metadata_chain_write(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::Chain::write bool  use_padding,
::FLAC__IOHandle  handle,
::FLAC__IOCallbacks  callbacks
+
+ + + + + +
+   + + +

+See FLAC__metadata_chain_write_with_callbacks(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::Chain::write bool  use_padding,
::FLAC__IOHandle  handle,
::FLAC__IOCallbacks  callbacks,
::FLAC__IOHandle  temp_handle,
::FLAC__IOCallbacks  temp_callbacks
+
+ + + + + +
+   + + +

+See FLAC__metadata_chain_write_with_callbacks_and_tempfile(). +

+

+

+ + + + +
+ + + + + + + + +
void FLAC::Metadata::Chain::merge_padding  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_chain_merge_padding(). +

+

+

+ + + + +
+ + + + + + + + +
void FLAC::Metadata::Chain::sort_padding  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_chain_sort_padding(). +

+

+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status-members.html new file mode 100644 index 0000000..25b96eb --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status-members.html @@ -0,0 +1,35 @@ + + +FLAC: Member List + + + + +

FLAC::Metadata::Chain::Status Member List

This is the complete list of members for FLAC::Metadata::Chain::Status, including all inherited members.

+ + + + +
as_cstring() const (defined in FLAC::Metadata::Chain::Status)FLAC::Metadata::Chain::Status [inline]
operator::FLAC__Metadata_ChainStatus() const (defined in FLAC::Metadata::Chain::Status)FLAC::Metadata::Chain::Status [inline]
Status(::FLAC__Metadata_ChainStatus status) (defined in FLAC::Metadata::Chain::Status)FLAC::Metadata::Chain::Status [inline]
status_ (defined in FLAC::Metadata::Chain::Status)FLAC::Metadata::Chain::Status [protected]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status.html new file mode 100644 index 0000000..4c220ef --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status.html @@ -0,0 +1,56 @@ + + +FLAC: FLAC::Metadata::Chain::Status Class Reference + + + + + +

FLAC::Metadata::Chain::Status Class Reference

#include <metadata.h> +

+List of all members.


Detailed Description

+This class is a wrapper around FLAC__Metadata_ChainStatus. +

+ + + + + + + + + + + + +

Public Member Functions

Status (::FLAC__Metadata_ChainStatus status)
operator::FLAC__Metadata_ChainStatus () const
+const char * as_cstring () const

Protected Attributes

+::FLAC__Metadata_ChainStatus status_
+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet-members.html new file mode 100644 index 0000000..ece7bdf --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet-members.html @@ -0,0 +1,82 @@ + + +FLAC: Member List + + + + +

FLAC::Metadata::CueSheet Member List

This is the complete list of members for FLAC::Metadata::CueSheet, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::CueSheet [inline]
assign_object(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
calculate_cddb_id() const FLAC::Metadata::CueSheet
clear()FLAC::Metadata::Prototype [protected, virtual]
CueSheet() (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet
CueSheet(const CueSheet &object)FLAC::Metadata::CueSheet [inline]
CueSheet(const ::FLAC__StreamMetadata &object) (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet [inline]
CueSheet(const ::FLAC__StreamMetadata *object) (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet [inline]
CueSheet(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::CueSheet [inline]
delete_index(unsigned track_num, unsigned index_num)FLAC::Metadata::CueSheet
delete_track(unsigned i)FLAC::Metadata::CueSheet
get_is_cd() const (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet
get_is_last() const FLAC::Metadata::Prototype
get_lead_in() const (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet
get_length() const FLAC::Metadata::Prototype
get_media_catalog_number() const (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet
get_num_tracks() const (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet
get_track(unsigned i) const (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet
get_type() const FLAC::Metadata::Prototype
insert_index(unsigned track_num, unsigned index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index)FLAC::Metadata::CueSheet
insert_track(unsigned i, const Track &track)FLAC::Metadata::CueSheet
is_legal(bool check_cd_da_subset=false, const char **violation=0) const FLAC::Metadata::CueSheet
is_valid() const FLAC::Metadata::Prototype [inline]
Iterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
object_ (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
operator const ::FLAC__StreamMetadata *() const FLAC::Metadata::Prototype [inline]
operator!=(const CueSheet &object) const FLAC::Metadata::CueSheet [inline]
operator!=(const ::FLAC__StreamMetadata &object) const (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet [inline]
operator!=(const ::FLAC__StreamMetadata *object) const (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet [inline]
FLAC::Metadata::Prototype::operator!=(const Prototype &) const FLAC::Metadata::Prototype [inline]
operator=(const CueSheet &object)FLAC::Metadata::CueSheet [inline]
operator=(const ::FLAC__StreamMetadata &object) (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet [inline]
operator=(const ::FLAC__StreamMetadata *object) (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet [inline]
FLAC::Metadata::Prototype::operator=(const Prototype &)FLAC::Metadata::Prototype [protected]
operator==(const CueSheet &object) const FLAC::Metadata::CueSheet [inline]
operator==(const ::FLAC__StreamMetadata &object) const (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet [inline]
operator==(const ::FLAC__StreamMetadata *object) const (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet [inline]
FLAC::Metadata::Prototype::operator==(const Prototype &) const FLAC::Metadata::Prototype [inline]
Prototype(const Prototype &)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata &) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata *) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
set_index(unsigned track_num, unsigned index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index) (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet
set_is_cd(bool value) (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet
set_is_last(bool)FLAC::Metadata::Prototype
set_lead_in(FLAC__uint64 value) (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet
set_media_catalog_number(const char value[128]) (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet
set_track(unsigned i, const Track &track)FLAC::Metadata::CueSheet
SimpleIterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
~CueSheet() (defined in FLAC::Metadata::CueSheet)FLAC::Metadata::CueSheet
~Prototype()FLAC::Metadata::Prototype [virtual]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet.html new file mode 100644 index 0000000..d7498bb --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet.html @@ -0,0 +1,799 @@ + + +FLAC: FLAC::Metadata::CueSheet Class Reference + + + + + +

FLAC::Metadata::CueSheet Class Reference
+ +[FLAC++/metadata.h: metadata object classes] +

#include <metadata.h> +

+

Inheritance diagram for FLAC::Metadata::CueSheet: +

+ +FLAC::Metadata::Prototype + +List of all members.

Detailed Description

+CUESHEET metadata block. See the overview for more, and the format specification. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CueSheet (const CueSheet &object)
CueSheet (const ::FLAC__StreamMetadata &object)
CueSheet (const ::FLAC__StreamMetadata *object)
 CueSheet (::FLAC__StreamMetadata *object, bool copy)
CueSheetoperator= (const CueSheet &object)
+CueSheetoperator= (const ::FLAC__StreamMetadata &object)
+CueSheetoperator= (const ::FLAC__StreamMetadata *object)
CueSheetassign (::FLAC__StreamMetadata *object, bool copy)
bool operator== (const CueSheet &object) const
+bool operator== (const ::FLAC__StreamMetadata &object) const
+bool operator== (const ::FLAC__StreamMetadata *object) const
bool operator!= (const CueSheet &object) const
+bool operator!= (const ::FLAC__StreamMetadata &object) const
+bool operator!= (const ::FLAC__StreamMetadata *object) const
+const char * get_media_catalog_number () const
+FLAC__uint64 get_lead_in () const
+bool get_is_cd () const
+unsigned get_num_tracks () const
+Track get_track (unsigned i) const
+void set_media_catalog_number (const char value[128])
+void set_lead_in (FLAC__uint64 value)
+void set_is_cd (bool value)
+void set_index (unsigned track_num, unsigned index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index)
bool insert_index (unsigned track_num, unsigned index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index)
bool delete_index (unsigned track_num, unsigned index_num)
bool set_track (unsigned i, const Track &track)
bool insert_track (unsigned i, const Track &track)
bool delete_track (unsigned i)
bool is_legal (bool check_cd_da_subset=false, const char **violation=0) const
FLAC__uint32 calculate_cddb_id () const
bool operator== (const Prototype &) const
bool operator!= (const Prototype &) const
bool is_valid () const
bool get_is_last () const
::FLAC__MetadataType get_type () const
unsigned get_length () const
void set_is_last (bool)
 operator const ::FLAC__StreamMetadata * () const

Protected Member Functions

Prototypeassign_object (::FLAC__StreamMetadata *object, bool copy)
virtual void clear ()

Protected Attributes

+::FLAC__StreamMetadataobject_

Friends

+class SimpleIterator
+class Iterator

Classes

class  Track
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
FLAC::Metadata::CueSheet::CueSheet const CueSheet object  )  [inline]
+
+ + + + + +
+   + + +

+Constructs a copy of the given object. This form always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC::Metadata::CueSheet::CueSheet ::FLAC__StreamMetadata object,
bool  copy
[inline]
+
+ + + + + +
+   + + +

+Constructs an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
CueSheet& FLAC::Metadata::CueSheet::operator= const CueSheet object  )  [inline]
+
+ + + + + +
+   + + +

+Assign from another object. Always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
CueSheet& FLAC::Metadata::CueSheet::assign ::FLAC__StreamMetadata object,
bool  copy
[inline]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype::assign_object(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::CueSheet::operator== const CueSheet object  )  const [inline]
+
+ + + + + +
+   + + +

+Check for equality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::CueSheet::operator!= const CueSheet object  )  const [inline]
+
+ + + + + +
+   + + +

+Check for inequality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::CueSheet::insert_index unsigned  track_num,
unsigned  index_num,
const ::FLAC__StreamMetadata_CueSheet_Index index
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_cuesheet_track_insert_index(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::CueSheet::delete_index unsigned  track_num,
unsigned  index_num
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_cuesheet_track_delete_index(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::CueSheet::set_track unsigned  i,
const Track track
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_cuesheet_set_track(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::CueSheet::insert_track unsigned  i,
const Track track
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_cuesheet_insert_track(). +

+

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::CueSheet::delete_track unsigned  i  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_cuesheet_delete_track(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::CueSheet::is_legal bool  check_cd_da_subset = false,
const char **  violation = 0
const
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_cuesheet_is_legal(). +

+

+

+ + + + +
+ + + + + + + + +
FLAC__uint32 FLAC::Metadata::CueSheet::calculate_cddb_id  )  const
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_cuesheet_calculate_cddb_id(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Prototype& FLAC::Metadata::Prototype::assign_object ::FLAC__StreamMetadata object,
bool  copy
[protected, inherited]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + +
virtual void FLAC::Metadata::Prototype::clear  )  [protected, virtual, inherited]
+
+ + + + + +
+   + + +

+Deletes the underlying FLAC__StreamMetadata object.

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::Prototype::get_is_last  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns true if this block is the last block in a stream, else false.

+

Assertions:
+
+

+ + + + +
+ + + + + + + + +
::FLAC__MetadataType FLAC::Metadata::Prototype::get_type  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns the type of the block.

+

Assertions:
+ +

+Reimplemented in FLAC::Metadata::Picture.

+

+ + + + +
+ + + + + + + + +
unsigned FLAC::Metadata::Prototype::get_length  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns the stream length of the metadata block.

+

Note:
The length does not include the metadata block header, per spec.
+
Assertions:
+
+

+ + + + +
+ + + + + + + + + +
void FLAC::Metadata::Prototype::set_is_last bool   )  [inherited]
+
+ + + + + +
+   + + +

+Sets the "is_last" flag for the block. When using the iterators it is not necessary to set this flag; they will do it for you.

+

Assertions:
+
+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet.png b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet.png new file mode 100644 index 0000000000000000000000000000000000000000..60f511ee09fd4e04b17a6f3fa5b4dd9fe4b9eec8 GIT binary patch literal 562 zcmV-20?qx2P)08|Xy*^l3X&U7+>Gp%!GUaI$`c$hDl)VuFC$5jx|)!r zAmjID^BvL}DDOtrywJz!=Up+Kkx#B-> zZF)HuA!#|%3$YTJ+D5KKKH;bPaJxKi`g_Qi>lu*O>*WN2aG&RSlRGRZo45J;yL0GU+Dd+J?e&GH*$EE|%&NA6e- z?dU3(d05$!rCDU8TIrT5bO0H8H|vgM8#`NN4VvXLBh6u$jpm3FvS7%B?3Ed*hARH( z*QK35tS*5>%>%eJ>x_gc)rO1>P)6X%OD|8ye1(jPL&D6t>}5tX$%oEJ^BVNMv~)|H zl78f*YQ;gdP$Yh=R%VRioAsGK$c_A0$n`(n59v-ThV$m`J^%m!07*qoM6N<$f--OY AcmMzZ literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track-members.html new file mode 100644 index 0000000..ff68487 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track-members.html @@ -0,0 +1,52 @@ + + +FLAC: Member List + + + + +

FLAC::Metadata::CueSheet::Track Member List

This is the complete list of members for FLAC::Metadata::CueSheet::Track, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
get_index(unsigned i) const (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track
get_isrc() const (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track [inline]
get_num_indices() const (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track [inline]
get_number() const (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track [inline]
get_offset() const (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track [inline]
get_pre_emphasis() const (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track [inline]
get_track() const (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track [inline]
get_type() const (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track [inline]
is_valid() const FLAC::Metadata::CueSheet::Track [virtual]
object_ (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track [protected]
operator=(const Track &track) (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track
set_index(unsigned i, const ::FLAC__StreamMetadata_CueSheet_Index &index) (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track
set_isrc(const char value[12]) (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track
set_number(FLAC__byte value) (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track [inline]
set_offset(FLAC__uint64 value) (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track [inline]
set_pre_emphasis(bool value) (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track [inline]
set_type(unsigned value) (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track
Track() (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track
Track(const ::FLAC__StreamMetadata_CueSheet_Track *track) (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track
Track(const Track &track) (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track
~Track() (defined in FLAC::Metadata::CueSheet::Track)FLAC::Metadata::CueSheet::Track [virtual]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html new file mode 100644 index 0000000..f83be3a --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html @@ -0,0 +1,131 @@ + + +FLAC: FLAC::Metadata::CueSheet::Track Class Reference + + + + + +

FLAC::Metadata::CueSheet::Track Class Reference

#include <metadata.h> +

+List of all members.


Detailed Description

+Convenience class for encapsulating a cue sheet track.

+Always check is_valid() after the constructor or operator= to make sure memory was properly allocated. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Track (const ::FLAC__StreamMetadata_CueSheet_Track *track)
Track (const Track &track)
+Trackoperator= (const Track &track)
virtual bool is_valid () const
+FLAC__uint64 get_offset () const
+FLAC__byte get_number () const
+const char * get_isrc () const
+unsigned get_type () const
+bool get_pre_emphasis () const
+FLAC__byte get_num_indices () const
+::FLAC__StreamMetadata_CueSheet_Index get_index (unsigned i) const
+const ::FLAC__StreamMetadata_CueSheet_Trackget_track () const
+void set_offset (FLAC__uint64 value)
+void set_number (FLAC__byte value)
+void set_isrc (const char value[12])
+void set_type (unsigned value)
+void set_pre_emphasis (bool value)
+void set_index (unsigned i, const ::FLAC__StreamMetadata_CueSheet_Index &index)

Protected Attributes

+::FLAC__StreamMetadata_CueSheet_Trackobject_
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Metadata::CueSheet::Track::is_valid  )  const [virtual]
+
+ + + + + +
+   + + +

+Returns true iff object was properly constructed. +

+

+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Iterator-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Iterator-members.html new file mode 100644 index 0000000..e7de519 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Iterator-members.html @@ -0,0 +1,45 @@ + + +FLAC: Member List + + + + +

FLAC::Metadata::Iterator Member List

This is the complete list of members for FLAC::Metadata::Iterator, including all inherited members.

+ + + + + + + + + + + + + + +
clear() (defined in FLAC::Metadata::Iterator)FLAC::Metadata::Iterator [protected, virtual]
delete_block(bool replace_with_padding)FLAC::Metadata::Iterator
get_block()FLAC::Metadata::Iterator
get_block_type() const FLAC::Metadata::Iterator
init(Chain &chain)FLAC::Metadata::Iterator
insert_block_after(Prototype *block)FLAC::Metadata::Iterator
insert_block_before(Prototype *block)FLAC::Metadata::Iterator
is_valid() const FLAC::Metadata::Iterator
Iterator() (defined in FLAC::Metadata::Iterator)FLAC::Metadata::Iterator
iterator_ (defined in FLAC::Metadata::Iterator)FLAC::Metadata::Iterator [protected]
next()FLAC::Metadata::Iterator
prev()FLAC::Metadata::Iterator
set_block(Prototype *block)FLAC::Metadata::Iterator
~Iterator() (defined in FLAC::Metadata::Iterator)FLAC::Metadata::Iterator [virtual]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Iterator.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Iterator.html new file mode 100644 index 0000000..1e7141b --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Iterator.html @@ -0,0 +1,370 @@ + + +FLAC: FLAC::Metadata::Iterator Class Reference + + + + + +

FLAC::Metadata::Iterator Class Reference
+ +[FLAC++/metadata.h: metadata level 2 interface] +

#include <metadata.h> +

+List of all members.


Detailed Description

+This class is a wrapper around the FLAC__metadata_iterator structures and methods; see the usage guide and FLAC__Metadata_Iterator. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

bool is_valid () const
void init (Chain &chain)
bool next ()
bool prev ()
::FLAC__MetadataType get_block_type () const
Prototypeget_block ()
bool set_block (Prototype *block)
bool delete_block (bool replace_with_padding)
bool insert_block_before (Prototype *block)
bool insert_block_after (Prototype *block)

Protected Member Functions

+virtual void clear ()

Protected Attributes

+::FLAC__Metadata_Iteratoriterator_
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::Iterator::is_valid  )  const
+
+ + + + + +
+   + + +

+Returns true iff object was properly constructed. +

+

+

+ + + + +
+ + + + + + + + + +
void FLAC::Metadata::Iterator::init Chain chain  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_iterator_init(). +

+

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::Iterator::next  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_iterator_next(). +

+

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::Iterator::prev  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_iterator_prev(). +

+

+

+ + + + +
+ + + + + + + + +
::FLAC__MetadataType FLAC::Metadata::Iterator::get_block_type  )  const
+
+ + + + + +
+   + + +

+See FLAC__metadata_iterator_get_block_type(). +

+

+

+ + + + +
+ + + + + + + + +
Prototype* FLAC::Metadata::Iterator::get_block  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_iterator_get_block(). +

+

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Iterator::set_block Prototype block  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_iterator_set_block(). +

+

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Iterator::delete_block bool  replace_with_padding  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_iterator_delete_block(). +

+

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Iterator::insert_block_before Prototype block  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_iterator_insert_block_before(). +

+

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Iterator::insert_block_after Prototype block  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_iterator_insert_block_after(). +

+

+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Padding-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Padding-members.html new file mode 100644 index 0000000..7da9562 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Padding-members.html @@ -0,0 +1,67 @@ + + +FLAC: Member List + + + + +

FLAC::Metadata::Padding Member List

This is the complete list of members for FLAC::Metadata::Padding, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Padding [inline]
assign_object(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
clear()FLAC::Metadata::Prototype [protected, virtual]
get_is_last() const FLAC::Metadata::Prototype
get_length() const FLAC::Metadata::Prototype
get_type() const FLAC::Metadata::Prototype
is_valid() const FLAC::Metadata::Prototype [inline]
Iterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
object_ (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
operator const ::FLAC__StreamMetadata *() const FLAC::Metadata::Prototype [inline]
operator!=(const Padding &object) const FLAC::Metadata::Padding [inline]
operator!=(const ::FLAC__StreamMetadata &object) const (defined in FLAC::Metadata::Padding)FLAC::Metadata::Padding [inline]
operator!=(const ::FLAC__StreamMetadata *object) const (defined in FLAC::Metadata::Padding)FLAC::Metadata::Padding [inline]
FLAC::Metadata::Prototype::operator!=(const Prototype &) const FLAC::Metadata::Prototype [inline]
operator=(const Padding &object)FLAC::Metadata::Padding [inline]
operator=(const ::FLAC__StreamMetadata &object) (defined in FLAC::Metadata::Padding)FLAC::Metadata::Padding [inline]
operator=(const ::FLAC__StreamMetadata *object) (defined in FLAC::Metadata::Padding)FLAC::Metadata::Padding [inline]
FLAC::Metadata::Prototype::operator=(const Prototype &)FLAC::Metadata::Prototype [protected]
operator==(const Padding &object) const FLAC::Metadata::Padding [inline]
operator==(const ::FLAC__StreamMetadata &object) const (defined in FLAC::Metadata::Padding)FLAC::Metadata::Padding [inline]
operator==(const ::FLAC__StreamMetadata *object) const (defined in FLAC::Metadata::Padding)FLAC::Metadata::Padding [inline]
FLAC::Metadata::Prototype::operator==(const Prototype &) const FLAC::Metadata::Prototype [inline]
Padding() (defined in FLAC::Metadata::Padding)FLAC::Metadata::Padding
Padding(const Padding &object)FLAC::Metadata::Padding [inline]
Padding(const ::FLAC__StreamMetadata &object) (defined in FLAC::Metadata::Padding)FLAC::Metadata::Padding [inline]
Padding(const ::FLAC__StreamMetadata *object) (defined in FLAC::Metadata::Padding)FLAC::Metadata::Padding [inline]
Padding(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Padding [inline]
Prototype(const Prototype &)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata &) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata *) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
set_is_last(bool)FLAC::Metadata::Prototype
set_length(unsigned length) (defined in FLAC::Metadata::Padding)FLAC::Metadata::Padding
SimpleIterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
~Padding() (defined in FLAC::Metadata::Padding)FLAC::Metadata::Padding
~Prototype()FLAC::Metadata::Prototype [virtual]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Padding.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Padding.html new file mode 100644 index 0000000..92c19ec --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Padding.html @@ -0,0 +1,498 @@ + + +FLAC: FLAC::Metadata::Padding Class Reference + + + + + +

FLAC::Metadata::Padding Class Reference
+ +[FLAC++/metadata.h: metadata object classes] +

#include <metadata.h> +

+

Inheritance diagram for FLAC::Metadata::Padding: +

+ +FLAC::Metadata::Prototype + +List of all members.

Detailed Description

+PADDING metadata block. See the overview for more, and the format specification. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 Padding (const Padding &object)
Padding (const ::FLAC__StreamMetadata &object)
Padding (const ::FLAC__StreamMetadata *object)
 Padding (::FLAC__StreamMetadata *object, bool copy)
Paddingoperator= (const Padding &object)
+Paddingoperator= (const ::FLAC__StreamMetadata &object)
+Paddingoperator= (const ::FLAC__StreamMetadata *object)
Paddingassign (::FLAC__StreamMetadata *object, bool copy)
bool operator== (const Padding &object) const
+bool operator== (const ::FLAC__StreamMetadata &object) const
+bool operator== (const ::FLAC__StreamMetadata *object) const
bool operator!= (const Padding &object) const
+bool operator!= (const ::FLAC__StreamMetadata &object) const
+bool operator!= (const ::FLAC__StreamMetadata *object) const
+void set_length (unsigned length)
bool operator== (const Prototype &) const
bool operator!= (const Prototype &) const
bool is_valid () const
bool get_is_last () const
::FLAC__MetadataType get_type () const
unsigned get_length () const
void set_is_last (bool)
 operator const ::FLAC__StreamMetadata * () const

Protected Member Functions

Prototypeassign_object (::FLAC__StreamMetadata *object, bool copy)
virtual void clear ()

Protected Attributes

+::FLAC__StreamMetadataobject_

Friends

+class SimpleIterator
+class Iterator
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
FLAC::Metadata::Padding::Padding const Padding object  )  [inline]
+
+ + + + + +
+   + + +

+Constructs a copy of the given object. This form always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC::Metadata::Padding::Padding ::FLAC__StreamMetadata object,
bool  copy
[inline]
+
+ + + + + +
+   + + +

+Constructs an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
Padding& FLAC::Metadata::Padding::operator= const Padding object  )  [inline]
+
+ + + + + +
+   + + +

+Assign from another object. Always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Padding& FLAC::Metadata::Padding::assign ::FLAC__StreamMetadata object,
bool  copy
[inline]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype::assign_object(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Padding::operator== const Padding object  )  const [inline]
+
+ + + + + +
+   + + +

+Check for equality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Padding::operator!= const Padding object  )  const [inline]
+
+ + + + + +
+   + + +

+Check for inequality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Prototype& FLAC::Metadata::Prototype::assign_object ::FLAC__StreamMetadata object,
bool  copy
[protected, inherited]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + +
virtual void FLAC::Metadata::Prototype::clear  )  [protected, virtual, inherited]
+
+ + + + + +
+   + + +

+Deletes the underlying FLAC__StreamMetadata object.

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::Prototype::get_is_last  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns true if this block is the last block in a stream, else false.

+

Assertions:
+
+

+ + + + +
+ + + + + + + + +
::FLAC__MetadataType FLAC::Metadata::Prototype::get_type  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns the type of the block.

+

Assertions:
+ +

+Reimplemented in FLAC::Metadata::Picture.

+

+ + + + +
+ + + + + + + + +
unsigned FLAC::Metadata::Prototype::get_length  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns the stream length of the metadata block.

+

Note:
The length does not include the metadata block header, per spec.
+
Assertions:
+
+

+ + + + +
+ + + + + + + + + +
void FLAC::Metadata::Prototype::set_is_last bool   )  [inherited]
+
+ + + + + +
+   + + +

+Sets the "is_last" flag for the block. When using the iterators it is not necessary to set this flag; they will do it for you.

+

Assertions:
+
+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Padding.png b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Padding.png new file mode 100644 index 0000000000000000000000000000000000000000..eb4dbf6c681fc9ec2f676f0ea300d9468993a39b GIT binary patch literal 562 zcmeAS@N?(olHy`uVBq!ia0vp^i-9JG z3ycpOI8c4){}UjWu_VYZn8D%MjWi(pgr|#RNX4ADQ@x9t4S3q#`d*usm*96HQ~!$S zcYCL=EZP$!(^mPNzM^JfKkd&#cFw2D)qAFXSFQ9(G1|nO@LYSIm4f${;N>gC8Nw4Q zU8HgyQ+9hSSUTO~^UjWvc-NpW4#Fp6r8kwwzjO%azQnhYEoFN1_L61FU90^ThowX) z?yGydwa0_^#)NL4Z>gb-CeItCCq}0yxR;eJWj!Uq^72-f_(Tnljch7jr<8-bH?%gy z%}`(RK@zch2<_`CkJQlW`2t_}?PncjEm3i}}Pm0y1 zpv9{=c4lNXy9 z@vYh?%(nPXRGhXe_sa2yT9zopr0FNj1?EnA( literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Picture-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Picture-members.html new file mode 100644 index 0000000..4692b1f --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Picture-members.html @@ -0,0 +1,82 @@ + + +FLAC: Member List + + + + +

FLAC::Metadata::Picture Member List

This is the complete list of members for FLAC::Metadata::Picture, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Picture [inline]
assign_object(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
clear()FLAC::Metadata::Prototype [protected, virtual]
get_colors() const FLAC::Metadata::Picture
get_data() const (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture
get_data_length() const (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture
get_depth() const (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture
get_description() const (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture
get_height() const (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture
get_is_last() const FLAC::Metadata::Prototype
get_length() const FLAC::Metadata::Prototype
get_mime_type() const (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture
get_type() const FLAC::Metadata::Picture
get_width() const (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture
is_valid() const FLAC::Metadata::Prototype [inline]
Iterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
object_ (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
operator const ::FLAC__StreamMetadata *() const FLAC::Metadata::Prototype [inline]
operator!=(const Picture &object) const FLAC::Metadata::Picture [inline]
operator!=(const ::FLAC__StreamMetadata &object) const (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture [inline]
operator!=(const ::FLAC__StreamMetadata *object) const (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture [inline]
FLAC::Metadata::Prototype::operator!=(const Prototype &) const FLAC::Metadata::Prototype [inline]
operator=(const Picture &object)FLAC::Metadata::Picture [inline]
operator=(const ::FLAC__StreamMetadata &object) (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture [inline]
operator=(const ::FLAC__StreamMetadata *object) (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture [inline]
FLAC::Metadata::Prototype::operator=(const Prototype &)FLAC::Metadata::Prototype [protected]
operator==(const Picture &object) const FLAC::Metadata::Picture [inline]
operator==(const ::FLAC__StreamMetadata &object) const (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture [inline]
operator==(const ::FLAC__StreamMetadata *object) const (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture [inline]
FLAC::Metadata::Prototype::operator==(const Prototype &) const FLAC::Metadata::Prototype [inline]
Picture() (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture
Picture(const Picture &object)FLAC::Metadata::Picture [inline]
Picture(const ::FLAC__StreamMetadata &object) (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture [inline]
Picture(const ::FLAC__StreamMetadata *object) (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture [inline]
Picture(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Picture [inline]
Prototype(const Prototype &)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata &) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata *) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
set_colors(FLAC__uint32 value) const FLAC::Metadata::Picture
set_data(const FLAC__byte *data, FLAC__uint32 data_length)FLAC::Metadata::Picture
set_depth(FLAC__uint32 value) const (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture
set_description(const FLAC__byte *string)FLAC::Metadata::Picture
set_height(FLAC__uint32 value) const (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture
set_is_last(bool)FLAC::Metadata::Prototype
set_mime_type(const char *string)FLAC::Metadata::Picture
set_type(::FLAC__StreamMetadata_Picture_Type type) (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture
set_width(FLAC__uint32 value) const (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture
SimpleIterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
~Picture() (defined in FLAC::Metadata::Picture)FLAC::Metadata::Picture
~Prototype()FLAC::Metadata::Prototype [virtual]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Picture.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Picture.html new file mode 100644 index 0000000..84bd56c --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Picture.html @@ -0,0 +1,696 @@ + + +FLAC: FLAC::Metadata::Picture Class Reference + + + + + +

FLAC::Metadata::Picture Class Reference
+ +[FLAC++/metadata.h: metadata object classes] +

#include <metadata.h> +

+

Inheritance diagram for FLAC::Metadata::Picture: +

+ +FLAC::Metadata::Prototype + +List of all members.

Detailed Description

+PICTURE metadata block. See the overview for more, and the format specification. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 Picture (const Picture &object)
Picture (const ::FLAC__StreamMetadata &object)
Picture (const ::FLAC__StreamMetadata *object)
 Picture (::FLAC__StreamMetadata *object, bool copy)
Pictureoperator= (const Picture &object)
+Pictureoperator= (const ::FLAC__StreamMetadata &object)
+Pictureoperator= (const ::FLAC__StreamMetadata *object)
Pictureassign (::FLAC__StreamMetadata *object, bool copy)
bool operator== (const Picture &object) const
+bool operator== (const ::FLAC__StreamMetadata &object) const
+bool operator== (const ::FLAC__StreamMetadata *object) const
bool operator!= (const Picture &object) const
+bool operator!= (const ::FLAC__StreamMetadata &object) const
+bool operator!= (const ::FLAC__StreamMetadata *object) const
::FLAC__StreamMetadata_Picture_Type get_type () const
+const char * get_mime_type () const
+const FLAC__byte * get_description () const
+FLAC__uint32 get_width () const
+FLAC__uint32 get_height () const
+FLAC__uint32 get_depth () const
FLAC__uint32 get_colors () const
+FLAC__uint32 get_data_length () const
+const FLAC__byte * get_data () const
+void set_type (::FLAC__StreamMetadata_Picture_Type type)
bool set_mime_type (const char *string)
bool set_description (const FLAC__byte *string)
+void set_width (FLAC__uint32 value) const
+void set_height (FLAC__uint32 value) const
+void set_depth (FLAC__uint32 value) const
void set_colors (FLAC__uint32 value) const
bool set_data (const FLAC__byte *data, FLAC__uint32 data_length)
bool operator== (const Prototype &) const
bool operator!= (const Prototype &) const
bool is_valid () const
bool get_is_last () const
unsigned get_length () const
void set_is_last (bool)
 operator const ::FLAC__StreamMetadata * () const

Protected Member Functions

Prototypeassign_object (::FLAC__StreamMetadata *object, bool copy)
virtual void clear ()

Protected Attributes

+::FLAC__StreamMetadataobject_

Friends

+class SimpleIterator
+class Iterator
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
FLAC::Metadata::Picture::Picture const Picture object  )  [inline]
+
+ + + + + +
+   + + +

+Constructs a copy of the given object. This form always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC::Metadata::Picture::Picture ::FLAC__StreamMetadata object,
bool  copy
[inline]
+
+ + + + + +
+   + + +

+Constructs an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
Picture& FLAC::Metadata::Picture::operator= const Picture object  )  [inline]
+
+ + + + + +
+   + + +

+Assign from another object. Always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Picture& FLAC::Metadata::Picture::assign ::FLAC__StreamMetadata object,
bool  copy
[inline]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype::assign_object(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Picture::operator== const Picture object  )  const [inline]
+
+ + + + + +
+   + + +

+Check for equality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Picture::operator!= const Picture object  )  const [inline]
+
+ + + + + +
+   + + +

+Check for inequality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + +
::FLAC__StreamMetadata_Picture_Type FLAC::Metadata::Picture::get_type  )  const
+
+ + + + + +
+   + + +

+Returns the type of the block.

+

Assertions:
+ +

+Reimplemented from FLAC::Metadata::Prototype.

+

+ + + + +
+ + + + + + + + +
FLAC__uint32 FLAC::Metadata::Picture::get_colors  )  const
+
+ + + + + +
+   + + +

+a return value of 0 means true-color, i.e. 2^depth colors +

+

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Picture::set_mime_type const char *  string  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_picture_set_mime_type(). +

+

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Picture::set_description const FLAC__byte *  string  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_picture_set_description(). +

+

+

+ + + + +
+ + + + + + + + + +
void FLAC::Metadata::Picture::set_colors FLAC__uint32  value  )  const
+
+ + + + + +
+   + + +

+a value of 0 means true-color, i.e. 2^depth colors +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::Picture::set_data const FLAC__byte *  data,
FLAC__uint32  data_length
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_picture_set_data(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Prototype& FLAC::Metadata::Prototype::assign_object ::FLAC__StreamMetadata object,
bool  copy
[protected, inherited]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + +
virtual void FLAC::Metadata::Prototype::clear  )  [protected, virtual, inherited]
+
+ + + + + +
+   + + +

+Deletes the underlying FLAC__StreamMetadata object.

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::Prototype::get_is_last  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns true if this block is the last block in a stream, else false.

+

Assertions:
+
+

+ + + + +
+ + + + + + + + +
unsigned FLAC::Metadata::Prototype::get_length  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns the stream length of the metadata block.

+

Note:
The length does not include the metadata block header, per spec.
+
Assertions:
+
+

+ + + + +
+ + + + + + + + + +
void FLAC::Metadata::Prototype::set_is_last bool   )  [inherited]
+
+ + + + + +
+   + + +

+Sets the "is_last" flag for the block. When using the iterators it is not necessary to set this flag; they will do it for you.

+

Assertions:
+
+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Picture.png b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Picture.png new file mode 100644 index 0000000000000000000000000000000000000000..c24908cfa7b8d8fc9bb61fd6426eb6e4ac478384 GIT binary patch literal 550 zcmV+>0@?kEP)b&*4tNYA;6?74>I(<2*pci)k%^+-d0+K4N3HzAvT zq@)R*NK?&3-;gQ7e7o(l%t$-1BR4gE^QjD(UeSaQeQW<$agm#S62M@ ztA&?y5|XAPU5J^;v=(wE@(F*sch}qP%)dlFzFq+N_ISJi@=)pi6gVQQUjUk=E*lJ08CksY9@0aG1T0wD6olP3 zqz8miJ$#0&9s;fa`GP8?YB2cKkUd~~hgsHyv;%jf9m#Iqjn1;_caP8cDZ>v6q#X%J zgNg+Ahjsypc!2~@+>yNsO6cRhiI*B&L==441#5?D?!#X)_O oXKbqGN5$u@g + +FLAC: Member List + + + + +

FLAC::Metadata::Prototype Member List

This is the complete list of members for FLAC::Metadata::Prototype, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
assign_object(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
clear()FLAC::Metadata::Prototype [protected, virtual]
get_is_last() const FLAC::Metadata::Prototype
get_length() const FLAC::Metadata::Prototype
get_type() const FLAC::Metadata::Prototype
is_valid() const FLAC::Metadata::Prototype [inline]
Iterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
object_ (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
operator const ::FLAC__StreamMetadata *() const FLAC::Metadata::Prototype [inline]
operator!=(const Prototype &) const FLAC::Metadata::Prototype [inline]
operator!=(const ::FLAC__StreamMetadata &) const (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [inline]
operator!=(const ::FLAC__StreamMetadata *) const (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [inline]
operator=(const Prototype &)FLAC::Metadata::Prototype [protected]
operator=(const ::FLAC__StreamMetadata &) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
operator=(const ::FLAC__StreamMetadata *) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
operator==(const Prototype &) const FLAC::Metadata::Prototype [inline]
operator==(const ::FLAC__StreamMetadata &) const (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [inline]
operator==(const ::FLAC__StreamMetadata *) const (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [inline]
Prototype(const Prototype &)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata &) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata *) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
set_is_last(bool)FLAC::Metadata::Prototype
SimpleIterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
~Prototype()FLAC::Metadata::Prototype [virtual]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Prototype.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Prototype.html new file mode 100644 index 0000000..529e26c --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Prototype.html @@ -0,0 +1,435 @@ + + +FLAC: FLAC::Metadata::Prototype Class Reference + + + + + +

FLAC::Metadata::Prototype Class Reference
+ +[FLAC++/metadata.h: metadata object classes] +

#include <metadata.h> +

+

Inheritance diagram for FLAC::Metadata::Prototype: +

+ +FLAC::Metadata::Application +FLAC::Metadata::CueSheet +FLAC::Metadata::Padding +FLAC::Metadata::Picture +FLAC::Metadata::SeekTable +FLAC::Metadata::StreamInfo +FLAC::Metadata::Unknown +FLAC::Metadata::VorbisComment + +List of all members.

Detailed Description

+Base class for all metadata block types. See the overview for more. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual ~Prototype ()
bool operator== (const Prototype &) const
+bool operator== (const ::FLAC__StreamMetadata &) const
+bool operator== (const ::FLAC__StreamMetadata *) const
bool operator!= (const Prototype &) const
+bool operator!= (const ::FLAC__StreamMetadata &) const
+bool operator!= (const ::FLAC__StreamMetadata *) const
bool is_valid () const
bool get_is_last () const
::FLAC__MetadataType get_type () const
unsigned get_length () const
void set_is_last (bool)
 operator const ::FLAC__StreamMetadata * () const

Protected Member Functions

 Prototype (const Prototype &)
Prototype (const ::FLAC__StreamMetadata &)
Prototype (const ::FLAC__StreamMetadata *)
 Prototype (::FLAC__StreamMetadata *object, bool copy)
Prototypeoperator= (const Prototype &)
+Prototypeoperator= (const ::FLAC__StreamMetadata &)
+Prototypeoperator= (const ::FLAC__StreamMetadata *)
Prototypeassign_object (::FLAC__StreamMetadata *object, bool copy)
virtual void clear ()

Protected Attributes

+::FLAC__StreamMetadataobject_

Friends

+class SimpleIterator
+class Iterator
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
FLAC::Metadata::Prototype::Prototype const Prototype  )  [protected]
+
+ + + + + +
+   + + +

+Constructs a copy of the given object. This form always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC::Metadata::Prototype::Prototype ::FLAC__StreamMetadata object,
bool  copy
[protected]
+
+ + + + + +
+   + + +

+Constructs an object with copy control. When copy is true, behaves identically to FLAC::Metadata::Prototype::Prototype(const ::FLAC__StreamMetadata *object). When copy is false, the instance takes ownership of the pointer and the FLAC__StreamMetadata object will be freed by the destructor.

+

Assertions:
 object != NULL 
+
+
+

+ + + + +
+ + + + + + + + +
virtual FLAC::Metadata::Prototype::~Prototype  )  [virtual]
+
+ + + + + +
+   + + +

+Deletes the underlying FLAC__StreamMetadata object.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
Prototype& FLAC::Metadata::Prototype::operator= const Prototype  )  [protected]
+
+ + + + + +
+   + + +

+Assign from another object. Always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Prototype& FLAC::Metadata::Prototype::assign_object ::FLAC__StreamMetadata object,
bool  copy
[protected]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + +
virtual void FLAC::Metadata::Prototype::clear  )  [protected, virtual]
+
+ + + + + +
+   + + +

+Deletes the underlying FLAC__StreamMetadata object.

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::Prototype::get_is_last  )  const
+
+ + + + + +
+   + + +

+Returns true if this block is the last block in a stream, else false.

+

Assertions:
+
+

+ + + + +
+ + + + + + + + +
::FLAC__MetadataType FLAC::Metadata::Prototype::get_type  )  const
+
+ + + + + +
+   + + +

+Returns the type of the block.

+

Assertions:
+ +

+Reimplemented in FLAC::Metadata::Picture.

+

+ + + + +
+ + + + + + + + +
unsigned FLAC::Metadata::Prototype::get_length  )  const
+
+ + + + + +
+   + + +

+Returns the stream length of the metadata block.

+

Note:
The length does not include the metadata block header, per spec.
+
Assertions:
+
+

+ + + + +
+ + + + + + + + + +
void FLAC::Metadata::Prototype::set_is_last bool   ) 
+
+ + + + + +
+   + + +

+Sets the "is_last" flag for the block. When using the iterators it is not necessary to set this flag; they will do it for you.

+

Assertions:
+
+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Prototype.png b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Prototype.png new file mode 100644 index 0000000000000000000000000000000000000000..87f95a1f2ddfb1baf0bb768f9c093357500657b4 GIT binary patch literal 2712 zcmc&$X;f2L5=I@H5yt`SjshYaacG_dXq83Q&^92l`)D)*2`Cy6Az*?TNC=>|$fAT+ z9t1TKO+W^PMA?@BaRJ7#3N~RA#AkvriO9Z1(}6$ptA9;<`o}%D>fUp!PSscS)y+8K z>%K)pPeV;jZHvcYSAR9Nb&zTe{B48kB%iS1vTD;g;vL|oR4P@XQpsmBPyDKq))t@7 zPkgF;r&8CQ_xJr-?MLxIxSE=Vg@^0GfCPs84n799UGIvw+S}|idZA#qELG$9-N}^8 zxr@8nX%&wkq5=C8?rr$#NQGeezx)Sc#?#?CMpMQ@b5D9Nyg3VSYSP+@s~>@wKP;t@ z&vV8^}(Wl8H`0($l6CNvH^}Bf}uiySNQ#7h~NcX?6lT##0={HgyJ%VPh=t z9<|=icZ$us#w%1$x>=ZMVX6Ji&L`n5(^|)1FB-AtGzCcM0mWk-QlOakOAyqjIHLSd zVk`=6p$Yn8T_Y2V-0Vd=Ehn$;MT*mw-GM~;td=qNT)i?IvELIVnPg!EH|Fzd7CyT` zaT&y=S;VLy0vtlfD*Hp3NT!%Q}wctU*cO)vBy)Kf*s0lVz>Naxr9<{j?8 z`!tgAtEXUbWAhHGTq8F>T>wy&NJ#CzW`tqkUmaL7`^lgu(xY@YhhXqr@yyY4uEB96TbfCNP&7X9IJp=i&77kg-=CCzqu|PiliX5vz`d=;sZr^D z&#ViFYs+k%oXQY0mP;j$x9B7-V=;H>b#{(y*3YI>^Q5)KLm#hRg$uU!+OalWBIkJn zAWDh_IW3h1|CnQB#;-f8s4o4bvDXMuK@Po4Rh(`PXseM)ftl22+M-E|FDp96%-MJ_ zEYP1Z{J5&LHuHx4FtP+VI$ZT-850Sj9MFrv((zl?_g#z;Y@(ZhexFM6Br}){G`aRt z3uWUew#kQX2{%O}&QqBmEsn;JpU$`S- z_p0+~T6tY0=5`uBA?h&)>3A6G^nnwcWmW>D4;)~VDeO<}bZaa>WCDiZ^=g2++(+vSp) z4bfhGwuTXVT8V?1@~}MN6*ezT8@GnDwg~;##VEUfVR=GZqH&(h%JhPI0TU?&@L_OrS1#pT zt{35WHyY&^XmCI0`_Lz02Exel;B|KWxhu7o$hO{)Zx>?o_?Mb5eza-+UtM6b%yN=1 zTy$$uqD$E-ZZg!w#9_f&BQxgi;sH*SM0K2`HN|c324(Di4ha=h<5`Zo`__L!i~oI9zax?c^i9qRv?Af$iqa=#Vm< zh#AQ%CX-`4U|&Jd82193Ml46ceKCn=NEfhu&pKppLI(Z!g%nFAm_e1jX7mukEO&$1 z9ARVPw`<*f4cIN?nT0fFjd)v zsHGY>(p~#8$6`SsE||jSa#+!F-R=l--K8SZcgq^{->*4ag+CM_vNbdyWqfrORaL+} zZ1B$a$6j8Kd6T8ea(cOwiV6vop;oz(U{p8DA$vNk&sHpP?z0x(JQ!E}!<2kd?gQ)N z3_9+>`9g-_q9nZLKvuA}RjEm5BQrX06v?&88bgTMo#4+tunyhilKQy+8SQ z>*7+n6QUXy_X(_>hLOV0;QZ9YE&+1xZIoT1V6c3)kv*xl5(N3oz18Pc3Z)1$WymJ! wrdwVc$YY4;6lh^}%C03%@c@`qetMsRk~(ypB%8IVzL9DkZoaOZpH5u*9eZjGoB#j- literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SeekTable-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SeekTable-members.html new file mode 100644 index 0000000..8b9f28f --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SeekTable-members.html @@ -0,0 +1,72 @@ + + +FLAC: Member List + + + + +

FLAC::Metadata::SeekTable Member List

This is the complete list of members for FLAC::Metadata::SeekTable, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::SeekTable [inline]
assign_object(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
clear()FLAC::Metadata::Prototype [protected, virtual]
delete_point(unsigned index)FLAC::Metadata::SeekTable
get_is_last() const FLAC::Metadata::Prototype
get_length() const FLAC::Metadata::Prototype
get_num_points() const (defined in FLAC::Metadata::SeekTable)FLAC::Metadata::SeekTable
get_point(unsigned index) const (defined in FLAC::Metadata::SeekTable)FLAC::Metadata::SeekTable
get_type() const FLAC::Metadata::Prototype
insert_point(unsigned index, const ::FLAC__StreamMetadata_SeekPoint &point)FLAC::Metadata::SeekTable
is_legal() const FLAC::Metadata::SeekTable
is_valid() const FLAC::Metadata::Prototype [inline]
Iterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
object_ (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
operator const ::FLAC__StreamMetadata *() const FLAC::Metadata::Prototype [inline]
operator!=(const SeekTable &object) const FLAC::Metadata::SeekTable [inline]
operator!=(const ::FLAC__StreamMetadata &object) const (defined in FLAC::Metadata::SeekTable)FLAC::Metadata::SeekTable [inline]
operator!=(const ::FLAC__StreamMetadata *object) const (defined in FLAC::Metadata::SeekTable)FLAC::Metadata::SeekTable [inline]
FLAC::Metadata::Prototype::operator!=(const Prototype &) const FLAC::Metadata::Prototype [inline]
operator=(const SeekTable &object)FLAC::Metadata::SeekTable [inline]
operator=(const ::FLAC__StreamMetadata &object) (defined in FLAC::Metadata::SeekTable)FLAC::Metadata::SeekTable [inline]
operator=(const ::FLAC__StreamMetadata *object) (defined in FLAC::Metadata::SeekTable)FLAC::Metadata::SeekTable [inline]
FLAC::Metadata::Prototype::operator=(const Prototype &)FLAC::Metadata::Prototype [protected]
operator==(const SeekTable &object) const FLAC::Metadata::SeekTable [inline]
operator==(const ::FLAC__StreamMetadata &object) const (defined in FLAC::Metadata::SeekTable)FLAC::Metadata::SeekTable [inline]
operator==(const ::FLAC__StreamMetadata *object) const (defined in FLAC::Metadata::SeekTable)FLAC::Metadata::SeekTable [inline]
FLAC::Metadata::Prototype::operator==(const Prototype &) const FLAC::Metadata::Prototype [inline]
Prototype(const Prototype &)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata &) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata *) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
SeekTable() (defined in FLAC::Metadata::SeekTable)FLAC::Metadata::SeekTable
SeekTable(const SeekTable &object)FLAC::Metadata::SeekTable [inline]
SeekTable(const ::FLAC__StreamMetadata &object) (defined in FLAC::Metadata::SeekTable)FLAC::Metadata::SeekTable [inline]
SeekTable(const ::FLAC__StreamMetadata *object) (defined in FLAC::Metadata::SeekTable)FLAC::Metadata::SeekTable [inline]
SeekTable(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::SeekTable [inline]
set_is_last(bool)FLAC::Metadata::Prototype
set_point(unsigned index, const ::FLAC__StreamMetadata_SeekPoint &point)FLAC::Metadata::SeekTable
SimpleIterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
~Prototype()FLAC::Metadata::Prototype [virtual]
~SeekTable() (defined in FLAC::Metadata::SeekTable)FLAC::Metadata::SeekTable
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SeekTable.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SeekTable.html new file mode 100644 index 0000000..18d3a6b --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SeekTable.html @@ -0,0 +1,646 @@ + + +FLAC: FLAC::Metadata::SeekTable Class Reference + + + + + +

FLAC::Metadata::SeekTable Class Reference
+ +[FLAC++/metadata.h: metadata object classes] +

#include <metadata.h> +

+

Inheritance diagram for FLAC::Metadata::SeekTable: +

+ +FLAC::Metadata::Prototype + +List of all members.

Detailed Description

+SEEKTABLE metadata block. See the overview for more, and the format specification. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 SeekTable (const SeekTable &object)
SeekTable (const ::FLAC__StreamMetadata &object)
SeekTable (const ::FLAC__StreamMetadata *object)
 SeekTable (::FLAC__StreamMetadata *object, bool copy)
SeekTableoperator= (const SeekTable &object)
+SeekTableoperator= (const ::FLAC__StreamMetadata &object)
+SeekTableoperator= (const ::FLAC__StreamMetadata *object)
SeekTableassign (::FLAC__StreamMetadata *object, bool copy)
bool operator== (const SeekTable &object) const
+bool operator== (const ::FLAC__StreamMetadata &object) const
+bool operator== (const ::FLAC__StreamMetadata *object) const
bool operator!= (const SeekTable &object) const
+bool operator!= (const ::FLAC__StreamMetadata &object) const
+bool operator!= (const ::FLAC__StreamMetadata *object) const
+unsigned get_num_points () const
+::FLAC__StreamMetadata_SeekPoint get_point (unsigned index) const
void set_point (unsigned index, const ::FLAC__StreamMetadata_SeekPoint &point)
bool insert_point (unsigned index, const ::FLAC__StreamMetadata_SeekPoint &point)
bool delete_point (unsigned index)
bool is_legal () const
bool operator== (const Prototype &) const
bool operator!= (const Prototype &) const
bool is_valid () const
bool get_is_last () const
::FLAC__MetadataType get_type () const
unsigned get_length () const
void set_is_last (bool)
 operator const ::FLAC__StreamMetadata * () const

Protected Member Functions

Prototypeassign_object (::FLAC__StreamMetadata *object, bool copy)
virtual void clear ()

Protected Attributes

+::FLAC__StreamMetadataobject_

Friends

+class SimpleIterator
+class Iterator
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
FLAC::Metadata::SeekTable::SeekTable const SeekTable object  )  [inline]
+
+ + + + + +
+   + + +

+Constructs a copy of the given object. This form always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC::Metadata::SeekTable::SeekTable ::FLAC__StreamMetadata object,
bool  copy
[inline]
+
+ + + + + +
+   + + +

+Constructs an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
SeekTable& FLAC::Metadata::SeekTable::operator= const SeekTable object  )  [inline]
+
+ + + + + +
+   + + +

+Assign from another object. Always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
SeekTable& FLAC::Metadata::SeekTable::assign ::FLAC__StreamMetadata object,
bool  copy
[inline]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype::assign_object(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::SeekTable::operator== const SeekTable object  )  const [inline]
+
+ + + + + +
+   + + +

+Check for equality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::SeekTable::operator!= const SeekTable object  )  const [inline]
+
+ + + + + +
+   + + +

+Check for inequality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void FLAC::Metadata::SeekTable::set_point unsigned  index,
const ::FLAC__StreamMetadata_SeekPoint point
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_seektable_set_point(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::SeekTable::insert_point unsigned  index,
const ::FLAC__StreamMetadata_SeekPoint point
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_seektable_insert_point(). +

+

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::SeekTable::delete_point unsigned  index  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_seektable_delete_point(). +

+

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::SeekTable::is_legal  )  const
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_seektable_is_legal(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Prototype& FLAC::Metadata::Prototype::assign_object ::FLAC__StreamMetadata object,
bool  copy
[protected, inherited]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + +
virtual void FLAC::Metadata::Prototype::clear  )  [protected, virtual, inherited]
+
+ + + + + +
+   + + +

+Deletes the underlying FLAC__StreamMetadata object.

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::Prototype::get_is_last  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns true if this block is the last block in a stream, else false.

+

Assertions:
+
+

+ + + + +
+ + + + + + + + +
::FLAC__MetadataType FLAC::Metadata::Prototype::get_type  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns the type of the block.

+

Assertions:
+ +

+Reimplemented in FLAC::Metadata::Picture.

+

+ + + + +
+ + + + + + + + +
unsigned FLAC::Metadata::Prototype::get_length  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns the stream length of the metadata block.

+

Note:
The length does not include the metadata block header, per spec.
+
Assertions:
+
+

+ + + + +
+ + + + + + + + + +
void FLAC::Metadata::Prototype::set_is_last bool   )  [inherited]
+
+ + + + + +
+   + + +

+Sets the "is_last" flag for the block. When using the iterators it is not necessary to set this flag; they will do it for you.

+

Assertions:
+
+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SeekTable.png b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SeekTable.png new file mode 100644 index 0000000000000000000000000000000000000000..93ed4d25840e98ff6f2c5249ba0fe20be064d732 GIT binary patch literal 577 zcmV-H0>1r;P)?jUk_`)NjSw07>oUuh2&}5M};1PS8p-9@Ht8M=9-VnQUARnRIjA(~8bryrvO$P0q{yVItE&ZYJsMTy{7uzUmE4^15?p)WRaU9Wf)?p+$4DUz~0Jz)aL#hbx*x;bYbVv|8a2idK}Z*4~~yZZF?6J@yox>TwYi zd%8ip>7=J#I$la!b9Ca1PP}6J)nsMq2jSBPN9}p~SFZ`3(95AC{-VDCdb~5oZDPGL P00000NkvXXu0mjf2-gz1 literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SimpleIterator-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SimpleIterator-members.html new file mode 100644 index 0000000..0afce06 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SimpleIterator-members.html @@ -0,0 +1,50 @@ + + +FLAC: Member List + + + + +

FLAC::Metadata::SimpleIterator Member List

This is the complete list of members for FLAC::Metadata::SimpleIterator, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
clear() (defined in FLAC::Metadata::SimpleIterator)FLAC::Metadata::SimpleIterator [protected]
delete_block(bool use_padding=true)FLAC::Metadata::SimpleIterator
get_application_id(FLAC__byte *id)FLAC::Metadata::SimpleIterator
get_block()FLAC::Metadata::SimpleIterator
get_block_length() const FLAC::Metadata::SimpleIterator
get_block_offset() const FLAC::Metadata::SimpleIterator
get_block_type() const FLAC::Metadata::SimpleIterator
init(const char *filename, bool read_only, bool preserve_file_stats)FLAC::Metadata::SimpleIterator
insert_block_after(Prototype *block, bool use_padding=true)FLAC::Metadata::SimpleIterator
is_last() const FLAC::Metadata::SimpleIterator
is_valid() const FLAC::Metadata::SimpleIterator
is_writable() const FLAC::Metadata::SimpleIterator
iterator_ (defined in FLAC::Metadata::SimpleIterator)FLAC::Metadata::SimpleIterator [protected]
next()FLAC::Metadata::SimpleIterator
prev()FLAC::Metadata::SimpleIterator
set_block(Prototype *block, bool use_padding=true)FLAC::Metadata::SimpleIterator
SimpleIterator() (defined in FLAC::Metadata::SimpleIterator)FLAC::Metadata::SimpleIterator
status()FLAC::Metadata::SimpleIterator
~SimpleIterator() (defined in FLAC::Metadata::SimpleIterator)FLAC::Metadata::SimpleIterator [virtual]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SimpleIterator.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SimpleIterator.html new file mode 100644 index 0000000..7fac6d2 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SimpleIterator.html @@ -0,0 +1,561 @@ + + +FLAC: FLAC::Metadata::SimpleIterator Class Reference + + + + + +

FLAC::Metadata::SimpleIterator Class Reference
+ +[FLAC++/metadata.h: metadata level 1 interface] +

#include <metadata.h> +

+List of all members.


Detailed Description

+This class is a wrapper around the FLAC__metadata_simple_iterator structures and methods; see the usage guide and FLAC__Metadata_SimpleIterator. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

bool is_valid () const
bool init (const char *filename, bool read_only, bool preserve_file_stats)
Status status ()
bool is_writable () const
bool next ()
bool prev ()
bool is_last () const
off_t get_block_offset () const
::FLAC__MetadataType get_block_type () const
unsigned get_block_length () const
bool get_application_id (FLAC__byte *id)
Prototypeget_block ()
bool set_block (Prototype *block, bool use_padding=true)
bool insert_block_after (Prototype *block, bool use_padding=true)
bool delete_block (bool use_padding=true)

Protected Member Functions

+void clear ()

Protected Attributes

+::FLAC__Metadata_SimpleIteratoriterator_

Classes

class  Status
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::SimpleIterator::is_valid  )  const
+
+ + + + + +
+   + + +

+Returns true iff object was properly constructed. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::SimpleIterator::init const char *  filename,
bool  read_only,
bool  preserve_file_stats
+
+ + + + + +
+   + + +

+See FLAC__metadata_simple_iterator_init(). +

+

+

+ + + + +
+ + + + + + + + +
Status FLAC::Metadata::SimpleIterator::status  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_simple_iterator_status(). +

+

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::SimpleIterator::is_writable  )  const
+
+ + + + + +
+   + + +

+See FLAC__metadata_simple_iterator_is_writable(). +

+

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::SimpleIterator::next  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_simple_iterator_next(). +

+

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::SimpleIterator::prev  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_simple_iterator_prev(). +

+

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::SimpleIterator::is_last  )  const
+
+ + + + + +
+   + + +

+See FLAC__metadata_simple_iterator_is_last(). +

+

+

+ + + + +
+ + + + + + + + +
off_t FLAC::Metadata::SimpleIterator::get_block_offset  )  const
+
+ + + + + +
+   + + +

+See FLAC__metadata_simple_iterator_get_block_offset(). +

+

+

+ + + + +
+ + + + + + + + +
::FLAC__MetadataType FLAC::Metadata::SimpleIterator::get_block_type  )  const
+
+ + + + + +
+   + + +

+See FLAC__metadata_simple_iterator_get_block_type(). +

+

+

+ + + + +
+ + + + + + + + +
unsigned FLAC::Metadata::SimpleIterator::get_block_length  )  const
+
+ + + + + +
+   + + +

+See FLAC__metadata_simple_iterator_get_block_length(). +

+

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::SimpleIterator::get_application_id FLAC__byte *  id  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_simple_iterator_get_application_id(). +

+

+

+ + + + +
+ + + + + + + + +
Prototype* FLAC::Metadata::SimpleIterator::get_block  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_simple_iterator_get_block(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::SimpleIterator::set_block Prototype block,
bool  use_padding = true
+
+ + + + + +
+   + + +

+See FLAC__metadata_simple_iterator_set_block(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::SimpleIterator::insert_block_after Prototype block,
bool  use_padding = true
+
+ + + + + +
+   + + +

+See FLAC__metadata_simple_iterator_insert_block_after(). +

+

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::SimpleIterator::delete_block bool  use_padding = true  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_simple_iterator_delete_block(). +

+

+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status-members.html new file mode 100644 index 0000000..8aee35f --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status-members.html @@ -0,0 +1,35 @@ + + +FLAC: Member List + + + + +

FLAC::Metadata::SimpleIterator::Status Member List

This is the complete list of members for FLAC::Metadata::SimpleIterator::Status, including all inherited members.

+ + + + +
as_cstring() const (defined in FLAC::Metadata::SimpleIterator::Status)FLAC::Metadata::SimpleIterator::Status [inline]
operator::FLAC__Metadata_SimpleIteratorStatus() const (defined in FLAC::Metadata::SimpleIterator::Status)FLAC::Metadata::SimpleIterator::Status [inline]
Status(::FLAC__Metadata_SimpleIteratorStatus status) (defined in FLAC::Metadata::SimpleIterator::Status)FLAC::Metadata::SimpleIterator::Status [inline]
status_ (defined in FLAC::Metadata::SimpleIterator::Status)FLAC::Metadata::SimpleIterator::Status [protected]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status.html new file mode 100644 index 0000000..4e36167 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status.html @@ -0,0 +1,56 @@ + + +FLAC: FLAC::Metadata::SimpleIterator::Status Class Reference + + + + + +

FLAC::Metadata::SimpleIterator::Status Class Reference

#include <metadata.h> +

+List of all members.


Detailed Description

+This class is a wrapper around FLAC__Metadata_SimpleIteratorStatus. +

+ + + + + + + + + + + + +

Public Member Functions

Status (::FLAC__Metadata_SimpleIteratorStatus status)
operator::FLAC__Metadata_SimpleIteratorStatus () const
+const char * as_cstring () const

Protected Attributes

+::FLAC__Metadata_SimpleIteratorStatus status_
+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1StreamInfo-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1StreamInfo-members.html new file mode 100644 index 0000000..7c76a5f --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1StreamInfo-members.html @@ -0,0 +1,84 @@ + + +FLAC: Member List + + + + +

FLAC::Metadata::StreamInfo Member List

This is the complete list of members for FLAC::Metadata::StreamInfo, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::StreamInfo [inline]
assign_object(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
clear()FLAC::Metadata::Prototype [protected, virtual]
get_bits_per_sample() const (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
get_channels() const (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
get_is_last() const FLAC::Metadata::Prototype
get_length() const FLAC::Metadata::Prototype
get_max_blocksize() const (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
get_max_framesize() const (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
get_md5sum() const (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
get_min_blocksize() const FLAC::Metadata::StreamInfo
get_min_framesize() const (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
get_sample_rate() const (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
get_total_samples() const (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
get_type() const FLAC::Metadata::Prototype
is_valid() const FLAC::Metadata::Prototype [inline]
Iterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
object_ (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
operator const ::FLAC__StreamMetadata *() const FLAC::Metadata::Prototype [inline]
operator!=(const StreamInfo &object) const FLAC::Metadata::StreamInfo [inline]
operator!=(const ::FLAC__StreamMetadata &object) const (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo [inline]
operator!=(const ::FLAC__StreamMetadata *object) const (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo [inline]
FLAC::Metadata::Prototype::operator!=(const Prototype &) const FLAC::Metadata::Prototype [inline]
operator=(const StreamInfo &object)FLAC::Metadata::StreamInfo [inline]
operator=(const ::FLAC__StreamMetadata &object) (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo [inline]
operator=(const ::FLAC__StreamMetadata *object) (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo [inline]
FLAC::Metadata::Prototype::operator=(const Prototype &)FLAC::Metadata::Prototype [protected]
operator==(const StreamInfo &object) const FLAC::Metadata::StreamInfo [inline]
operator==(const ::FLAC__StreamMetadata &object) const (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo [inline]
operator==(const ::FLAC__StreamMetadata *object) const (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo [inline]
FLAC::Metadata::Prototype::operator==(const Prototype &) const FLAC::Metadata::Prototype [inline]
Prototype(const Prototype &)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata &) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata *) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
set_bits_per_sample(unsigned value) (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
set_channels(unsigned value) (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
set_is_last(bool)FLAC::Metadata::Prototype
set_max_blocksize(unsigned value) (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
set_max_framesize(unsigned value) (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
set_md5sum(const FLAC__byte value[16]) (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
set_min_blocksize(unsigned value) (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
set_min_framesize(unsigned value) (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
set_sample_rate(unsigned value) (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
set_total_samples(FLAC__uint64 value) (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
SimpleIterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
StreamInfo() (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
StreamInfo(const StreamInfo &object)FLAC::Metadata::StreamInfo [inline]
StreamInfo(const ::FLAC__StreamMetadata &object) (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo [inline]
StreamInfo(const ::FLAC__StreamMetadata *object) (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo [inline]
StreamInfo(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::StreamInfo [inline]
~Prototype()FLAC::Metadata::Prototype [virtual]
~StreamInfo() (defined in FLAC::Metadata::StreamInfo)FLAC::Metadata::StreamInfo
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1StreamInfo.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1StreamInfo.html new file mode 100644 index 0000000..351897e --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1StreamInfo.html @@ -0,0 +1,575 @@ + + +FLAC: FLAC::Metadata::StreamInfo Class Reference + + + + + +

FLAC::Metadata::StreamInfo Class Reference
+ +[FLAC++/metadata.h: metadata object classes] +

#include <metadata.h> +

+

Inheritance diagram for FLAC::Metadata::StreamInfo: +

+ +FLAC::Metadata::Prototype + +List of all members.

Detailed Description

+STREAMINFO metadata block. See the overview for more, and the format specification. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 StreamInfo (const StreamInfo &object)
StreamInfo (const ::FLAC__StreamMetadata &object)
StreamInfo (const ::FLAC__StreamMetadata *object)
 StreamInfo (::FLAC__StreamMetadata *object, bool copy)
StreamInfooperator= (const StreamInfo &object)
+StreamInfooperator= (const ::FLAC__StreamMetadata &object)
+StreamInfooperator= (const ::FLAC__StreamMetadata *object)
StreamInfoassign (::FLAC__StreamMetadata *object, bool copy)
bool operator== (const StreamInfo &object) const
+bool operator== (const ::FLAC__StreamMetadata &object) const
+bool operator== (const ::FLAC__StreamMetadata *object) const
bool operator!= (const StreamInfo &object) const
+bool operator!= (const ::FLAC__StreamMetadata &object) const
+bool operator!= (const ::FLAC__StreamMetadata *object) const
unsigned get_min_blocksize () const
+unsigned get_max_blocksize () const
+unsigned get_min_framesize () const
+unsigned get_max_framesize () const
+unsigned get_sample_rate () const
+unsigned get_channels () const
+unsigned get_bits_per_sample () const
+FLAC__uint64 get_total_samples () const
+const FLAC__byte * get_md5sum () const
+void set_min_blocksize (unsigned value)
+void set_max_blocksize (unsigned value)
+void set_min_framesize (unsigned value)
+void set_max_framesize (unsigned value)
+void set_sample_rate (unsigned value)
+void set_channels (unsigned value)
+void set_bits_per_sample (unsigned value)
+void set_total_samples (FLAC__uint64 value)
+void set_md5sum (const FLAC__byte value[16])
bool operator== (const Prototype &) const
bool operator!= (const Prototype &) const
bool is_valid () const
bool get_is_last () const
::FLAC__MetadataType get_type () const
unsigned get_length () const
void set_is_last (bool)
 operator const ::FLAC__StreamMetadata * () const

Protected Member Functions

Prototypeassign_object (::FLAC__StreamMetadata *object, bool copy)
virtual void clear ()

Protected Attributes

+::FLAC__StreamMetadataobject_

Friends

+class SimpleIterator
+class Iterator
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
FLAC::Metadata::StreamInfo::StreamInfo const StreamInfo object  )  [inline]
+
+ + + + + +
+   + + +

+Constructs a copy of the given object. This form always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC::Metadata::StreamInfo::StreamInfo ::FLAC__StreamMetadata object,
bool  copy
[inline]
+
+ + + + + +
+   + + +

+Constructs an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
StreamInfo& FLAC::Metadata::StreamInfo::operator= const StreamInfo object  )  [inline]
+
+ + + + + +
+   + + +

+Assign from another object. Always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
StreamInfo& FLAC::Metadata::StreamInfo::assign ::FLAC__StreamMetadata object,
bool  copy
[inline]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype::assign_object(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::StreamInfo::operator== const StreamInfo object  )  const [inline]
+
+ + + + + +
+   + + +

+Check for equality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::StreamInfo::operator!= const StreamInfo object  )  const [inline]
+
+ + + + + +
+   + + +

+Check for inequality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + +
unsigned FLAC::Metadata::StreamInfo::get_min_blocksize  )  const
+
+ + + + + +
+   + + +

+See format specification.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Prototype& FLAC::Metadata::Prototype::assign_object ::FLAC__StreamMetadata object,
bool  copy
[protected, inherited]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + +
virtual void FLAC::Metadata::Prototype::clear  )  [protected, virtual, inherited]
+
+ + + + + +
+   + + +

+Deletes the underlying FLAC__StreamMetadata object.

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::Prototype::get_is_last  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns true if this block is the last block in a stream, else false.

+

Assertions:
+
+

+ + + + +
+ + + + + + + + +
::FLAC__MetadataType FLAC::Metadata::Prototype::get_type  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns the type of the block.

+

Assertions:
+ +

+Reimplemented in FLAC::Metadata::Picture.

+

+ + + + +
+ + + + + + + + +
unsigned FLAC::Metadata::Prototype::get_length  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns the stream length of the metadata block.

+

Note:
The length does not include the metadata block header, per spec.
+
Assertions:
+
+

+ + + + +
+ + + + + + + + + +
void FLAC::Metadata::Prototype::set_is_last bool   )  [inherited]
+
+ + + + + +
+   + + +

+Sets the "is_last" flag for the block. When using the iterators it is not necessary to set this flag; they will do it for you.

+

Assertions:
+
+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1StreamInfo.png b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1StreamInfo.png new file mode 100644 index 0000000000000000000000000000000000000000..49d1e5dc5aed9ff84514a60bae5ef95a69454069 GIT binary patch literal 575 zcmV-F0>J%=P)04J#03uTr2AEEvxhDn-69aNb)c zorqTbGtujY^$OOj~-Y`8+`lccoTrNGuxGtL{{yupsfQ@(x=asia+Y zv6Gx3-X<{Vq}0yB!iFxd)KM+$pf(Xc_?;xLG*H_}jaY+j;Yx%k-YR@RibPT$y>!GI zRDG+CN@j^bBAOkw8kKInmQtezS|;VZ-lOjF>bJML;+$Qs#E;6}TmV`FRdstU+2pHI zFFe`R!0#L7qCJXQ+YBmAq4sT2XHn<;xqseHPx$^Z_3ivR)bsiDGSpY9fkj=^MP1ZI zUDQSWw^W?aV1o&_TGWZu!mn0jCZZtNf_-sn*41Z-M)z-+sbK{WOY!w`mnuHDsHKZF zQDecVdQy&7>mUZPup-CkD#A!D+QnMr0CzT#b-e`xWVcwbh%4Hpq`dZ23)`ui z3LkvEz!u%kff7fQU93*GaK#lR9u+ch6MI#$^XYhMWp^zsJ<50q96M zuN@U0Q1yc1kKjI=zNow`SPkeaYqrte%4z@-HPyi3ZBZ9>7In&>`wMmSIexAQu4DiJ N002ovPDHLkV1k=A49EZg literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Unknown-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Unknown-members.html new file mode 100644 index 0000000..a1f06d9 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Unknown-members.html @@ -0,0 +1,69 @@ + + +FLAC: Member List + + + + +

FLAC::Metadata::Unknown Member List

This is the complete list of members for FLAC::Metadata::Unknown, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assign(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Unknown [inline]
assign_object(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
clear()FLAC::Metadata::Prototype [protected, virtual]
get_data() const (defined in FLAC::Metadata::Unknown)FLAC::Metadata::Unknown
get_is_last() const FLAC::Metadata::Prototype
get_length() const FLAC::Metadata::Prototype
get_type() const FLAC::Metadata::Prototype
is_valid() const FLAC::Metadata::Prototype [inline]
Iterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
object_ (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
operator const ::FLAC__StreamMetadata *() const FLAC::Metadata::Prototype [inline]
operator!=(const Unknown &object) const FLAC::Metadata::Unknown [inline]
operator!=(const ::FLAC__StreamMetadata &object) const (defined in FLAC::Metadata::Unknown)FLAC::Metadata::Unknown [inline]
operator!=(const ::FLAC__StreamMetadata *object) const (defined in FLAC::Metadata::Unknown)FLAC::Metadata::Unknown [inline]
FLAC::Metadata::Prototype::operator!=(const Prototype &) const FLAC::Metadata::Prototype [inline]
operator=(const Unknown &object)FLAC::Metadata::Unknown [inline]
operator=(const ::FLAC__StreamMetadata &object) (defined in FLAC::Metadata::Unknown)FLAC::Metadata::Unknown [inline]
operator=(const ::FLAC__StreamMetadata *object) (defined in FLAC::Metadata::Unknown)FLAC::Metadata::Unknown [inline]
FLAC::Metadata::Prototype::operator=(const Prototype &)FLAC::Metadata::Prototype [protected]
operator==(const Unknown &object) const FLAC::Metadata::Unknown [inline]
operator==(const ::FLAC__StreamMetadata &object) const (defined in FLAC::Metadata::Unknown)FLAC::Metadata::Unknown [inline]
operator==(const ::FLAC__StreamMetadata *object) const (defined in FLAC::Metadata::Unknown)FLAC::Metadata::Unknown [inline]
FLAC::Metadata::Prototype::operator==(const Prototype &) const FLAC::Metadata::Prototype [inline]
Prototype(const Prototype &)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata &) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata *) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
set_data(const FLAC__byte *data, unsigned length)FLAC::Metadata::Unknown
set_data(FLAC__byte *data, unsigned length, bool copy) (defined in FLAC::Metadata::Unknown)FLAC::Metadata::Unknown
set_is_last(bool)FLAC::Metadata::Prototype
SimpleIterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
Unknown() (defined in FLAC::Metadata::Unknown)FLAC::Metadata::Unknown
Unknown(const Unknown &object)FLAC::Metadata::Unknown [inline]
Unknown(const ::FLAC__StreamMetadata &object) (defined in FLAC::Metadata::Unknown)FLAC::Metadata::Unknown [inline]
Unknown(const ::FLAC__StreamMetadata *object) (defined in FLAC::Metadata::Unknown)FLAC::Metadata::Unknown [inline]
Unknown(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Unknown [inline]
~Prototype()FLAC::Metadata::Prototype [virtual]
~Unknown() (defined in FLAC::Metadata::Unknown)FLAC::Metadata::Unknown
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Unknown.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Unknown.html new file mode 100644 index 0000000..4d03f29 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Unknown.html @@ -0,0 +1,542 @@ + + +FLAC: FLAC::Metadata::Unknown Class Reference + + + + + +

FLAC::Metadata::Unknown Class Reference
+ +[FLAC++/metadata.h: metadata object classes] +

#include <metadata.h> +

+

Inheritance diagram for FLAC::Metadata::Unknown: +

+ +FLAC::Metadata::Prototype + +List of all members.

Detailed Description

+Opaque metadata block for storing unknown types. This should not be used unless you know what you are doing; it is currently used only internally to support forward compatibility of metadata blocks. See the overview for more, +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 Unknown (const Unknown &object)
Unknown (const ::FLAC__StreamMetadata &object)
Unknown (const ::FLAC__StreamMetadata *object)
 Unknown (::FLAC__StreamMetadata *object, bool copy)
Unknownoperator= (const Unknown &object)
+Unknownoperator= (const ::FLAC__StreamMetadata &object)
+Unknownoperator= (const ::FLAC__StreamMetadata *object)
Unknownassign (::FLAC__StreamMetadata *object, bool copy)
bool operator== (const Unknown &object) const
+bool operator== (const ::FLAC__StreamMetadata &object) const
+bool operator== (const ::FLAC__StreamMetadata *object) const
bool operator!= (const Unknown &object) const
+bool operator!= (const ::FLAC__StreamMetadata &object) const
+bool operator!= (const ::FLAC__StreamMetadata *object) const
+const FLAC__byte * get_data () const
bool set_data (const FLAC__byte *data, unsigned length)
+bool set_data (FLAC__byte *data, unsigned length, bool copy)
bool operator== (const Prototype &) const
bool operator!= (const Prototype &) const
bool is_valid () const
bool get_is_last () const
::FLAC__MetadataType get_type () const
unsigned get_length () const
void set_is_last (bool)
 operator const ::FLAC__StreamMetadata * () const

Protected Member Functions

Prototypeassign_object (::FLAC__StreamMetadata *object, bool copy)
virtual void clear ()

Protected Attributes

+::FLAC__StreamMetadataobject_

Friends

+class SimpleIterator
+class Iterator
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
FLAC::Metadata::Unknown::Unknown const Unknown object  )  [inline]
+
+ + + + + +
+   + + +

+Constructs a copy of the given object. This form always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC::Metadata::Unknown::Unknown ::FLAC__StreamMetadata object,
bool  copy
[inline]
+
+ + + + + +
+   + + +

+Constructs an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
Unknown& FLAC::Metadata::Unknown::operator= const Unknown object  )  [inline]
+
+ + + + + +
+   + + +

+Assign from another object. Always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Unknown& FLAC::Metadata::Unknown::assign ::FLAC__StreamMetadata object,
bool  copy
[inline]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype::assign_object(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Unknown::operator== const Unknown object  )  const [inline]
+
+ + + + + +
+   + + +

+Check for equality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Unknown::operator!= const Unknown object  )  const [inline]
+
+ + + + + +
+   + + +

+Check for inequality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::Unknown::set_data const FLAC__byte *  data,
unsigned  length
+
+ + + + + +
+   + + +

+This form always copies data. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Prototype& FLAC::Metadata::Prototype::assign_object ::FLAC__StreamMetadata object,
bool  copy
[protected, inherited]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + +
virtual void FLAC::Metadata::Prototype::clear  )  [protected, virtual, inherited]
+
+ + + + + +
+   + + +

+Deletes the underlying FLAC__StreamMetadata object.

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::Prototype::get_is_last  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns true if this block is the last block in a stream, else false.

+

Assertions:
+
+

+ + + + +
+ + + + + + + + +
::FLAC__MetadataType FLAC::Metadata::Prototype::get_type  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns the type of the block.

+

Assertions:
+ +

+Reimplemented in FLAC::Metadata::Picture.

+

+ + + + +
+ + + + + + + + +
unsigned FLAC::Metadata::Prototype::get_length  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns the stream length of the metadata block.

+

Note:
The length does not include the metadata block header, per spec.
+
Assertions:
+
+

+ + + + +
+ + + + + + + + + +
void FLAC::Metadata::Prototype::set_is_last bool   )  [inherited]
+
+ + + + + +
+   + + +

+Sets the "is_last" flag for the block. When using the iterators it is not necessary to set this flag; they will do it for you.

+

Assertions:
+
+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Unknown.png b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1Unknown.png new file mode 100644 index 0000000000000000000000000000000000000000..8f545100e7201db67e9cf9ca1de089860bbcd82e GIT binary patch literal 552 zcmV+@0@wYCP)-g}Tc9k5FEAOruCsjjJ}29R>fv_=|yzrhLpEZ{>ZPJQi{?vJ!FC zCpDE=CCBY1>y48x59iwT25{63E8^I2{YF60!in@EiVNU_e`{f+Eez9vuRtjO|iOJxpK!} zA9eURCn0${G8!=xnZ`oSME=5`?z7|ZbmU(m_s<(3ANzg-&PGa~9PJOPAZ|BV>)gXHknINO;UIB3>g~$IFNrYdIqO``VR|mZLi5yM!JmTDlD0aWJhI qi!q)8q!=gU)Ul8YIRQEUPxlM(!y^r137@3^0000 + +FLAC: Member List + + + + +

FLAC::Metadata::VorbisComment Member List

This is the complete list of members for FLAC::Metadata::VorbisComment, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
append_comment(const Entry &entry)FLAC::Metadata::VorbisComment
assign(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::VorbisComment [inline]
assign_object(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
clear()FLAC::Metadata::Prototype [protected, virtual]
delete_comment(unsigned index)FLAC::Metadata::VorbisComment
get_comment(unsigned index) const (defined in FLAC::Metadata::VorbisComment)FLAC::Metadata::VorbisComment
get_is_last() const FLAC::Metadata::Prototype
get_length() const FLAC::Metadata::Prototype
get_num_comments() const (defined in FLAC::Metadata::VorbisComment)FLAC::Metadata::VorbisComment
get_type() const FLAC::Metadata::Prototype
get_vendor_string() const (defined in FLAC::Metadata::VorbisComment)FLAC::Metadata::VorbisComment
insert_comment(unsigned index, const Entry &entry)FLAC::Metadata::VorbisComment
is_valid() const FLAC::Metadata::Prototype [inline]
Iterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
object_ (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
operator const ::FLAC__StreamMetadata *() const FLAC::Metadata::Prototype [inline]
operator!=(const VorbisComment &object) const FLAC::Metadata::VorbisComment [inline]
operator!=(const ::FLAC__StreamMetadata &object) const (defined in FLAC::Metadata::VorbisComment)FLAC::Metadata::VorbisComment [inline]
operator!=(const ::FLAC__StreamMetadata *object) const (defined in FLAC::Metadata::VorbisComment)FLAC::Metadata::VorbisComment [inline]
FLAC::Metadata::Prototype::operator!=(const Prototype &) const FLAC::Metadata::Prototype [inline]
operator=(const VorbisComment &object)FLAC::Metadata::VorbisComment [inline]
operator=(const ::FLAC__StreamMetadata &object) (defined in FLAC::Metadata::VorbisComment)FLAC::Metadata::VorbisComment [inline]
operator=(const ::FLAC__StreamMetadata *object) (defined in FLAC::Metadata::VorbisComment)FLAC::Metadata::VorbisComment [inline]
FLAC::Metadata::Prototype::operator=(const Prototype &)FLAC::Metadata::Prototype [protected]
operator==(const VorbisComment &object) const FLAC::Metadata::VorbisComment [inline]
operator==(const ::FLAC__StreamMetadata &object) const (defined in FLAC::Metadata::VorbisComment)FLAC::Metadata::VorbisComment [inline]
operator==(const ::FLAC__StreamMetadata *object) const (defined in FLAC::Metadata::VorbisComment)FLAC::Metadata::VorbisComment [inline]
FLAC::Metadata::Prototype::operator==(const Prototype &) const FLAC::Metadata::Prototype [inline]
Prototype(const Prototype &)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata &) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(const ::FLAC__StreamMetadata *) (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [protected]
Prototype(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::Prototype [protected]
set_comment(unsigned index, const Entry &entry)FLAC::Metadata::VorbisComment
set_is_last(bool)FLAC::Metadata::Prototype
set_vendor_string(const FLAC__byte *string)FLAC::Metadata::VorbisComment
SimpleIterator (defined in FLAC::Metadata::Prototype)FLAC::Metadata::Prototype [friend]
VorbisComment() (defined in FLAC::Metadata::VorbisComment)FLAC::Metadata::VorbisComment
VorbisComment(const VorbisComment &object)FLAC::Metadata::VorbisComment [inline]
VorbisComment(const ::FLAC__StreamMetadata &object) (defined in FLAC::Metadata::VorbisComment)FLAC::Metadata::VorbisComment [inline]
VorbisComment(const ::FLAC__StreamMetadata *object) (defined in FLAC::Metadata::VorbisComment)FLAC::Metadata::VorbisComment [inline]
VorbisComment(::FLAC__StreamMetadata *object, bool copy)FLAC::Metadata::VorbisComment [inline]
~Prototype()FLAC::Metadata::Prototype [virtual]
~VorbisComment() (defined in FLAC::Metadata::VorbisComment)FLAC::Metadata::VorbisComment
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1VorbisComment.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1VorbisComment.html new file mode 100644 index 0000000..3b156fe --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1VorbisComment.html @@ -0,0 +1,685 @@ + + +FLAC: FLAC::Metadata::VorbisComment Class Reference + + + + + +

FLAC::Metadata::VorbisComment Class Reference
+ +[FLAC++/metadata.h: metadata object classes] +

#include <metadata.h> +

+

Inheritance diagram for FLAC::Metadata::VorbisComment: +

+ +FLAC::Metadata::Prototype + +List of all members.

Detailed Description

+VORBIS_COMMENT metadata block. See the overview for more, and the format specification. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 VorbisComment (const VorbisComment &object)
VorbisComment (const ::FLAC__StreamMetadata &object)
VorbisComment (const ::FLAC__StreamMetadata *object)
 VorbisComment (::FLAC__StreamMetadata *object, bool copy)
VorbisCommentoperator= (const VorbisComment &object)
+VorbisCommentoperator= (const ::FLAC__StreamMetadata &object)
+VorbisCommentoperator= (const ::FLAC__StreamMetadata *object)
VorbisCommentassign (::FLAC__StreamMetadata *object, bool copy)
bool operator== (const VorbisComment &object) const
+bool operator== (const ::FLAC__StreamMetadata &object) const
+bool operator== (const ::FLAC__StreamMetadata *object) const
bool operator!= (const VorbisComment &object) const
+bool operator!= (const ::FLAC__StreamMetadata &object) const
+bool operator!= (const ::FLAC__StreamMetadata *object) const
+unsigned get_num_comments () const
+const FLAC__byte * get_vendor_string () const
+Entry get_comment (unsigned index) const
bool set_vendor_string (const FLAC__byte *string)
bool set_comment (unsigned index, const Entry &entry)
bool insert_comment (unsigned index, const Entry &entry)
bool append_comment (const Entry &entry)
bool delete_comment (unsigned index)
bool operator== (const Prototype &) const
bool operator!= (const Prototype &) const
bool is_valid () const
bool get_is_last () const
::FLAC__MetadataType get_type () const
unsigned get_length () const
void set_is_last (bool)
 operator const ::FLAC__StreamMetadata * () const

Protected Member Functions

Prototypeassign_object (::FLAC__StreamMetadata *object, bool copy)
virtual void clear ()

Protected Attributes

+::FLAC__StreamMetadataobject_

Friends

+class SimpleIterator
+class Iterator

Classes

class  Entry
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
FLAC::Metadata::VorbisComment::VorbisComment const VorbisComment object  )  [inline]
+
+ + + + + +
+   + + +

+Constructs a copy of the given object. This form always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC::Metadata::VorbisComment::VorbisComment ::FLAC__StreamMetadata object,
bool  copy
[inline]
+
+ + + + + +
+   + + +

+Constructs an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
VorbisComment& FLAC::Metadata::VorbisComment::operator= const VorbisComment object  )  [inline]
+
+ + + + + +
+   + + +

+Assign from another object. Always performs a deep copy.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
VorbisComment& FLAC::Metadata::VorbisComment::assign ::FLAC__StreamMetadata object,
bool  copy
[inline]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype::assign_object(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::VorbisComment::operator== const VorbisComment object  )  const [inline]
+
+ + + + + +
+   + + +

+Check for equality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::VorbisComment::operator!= const VorbisComment object  )  const [inline]
+
+ + + + + +
+   + + +

+Check for inequality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::VorbisComment::set_vendor_string const FLAC__byte *  string  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_vorbiscomment_set_vendor_string(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::VorbisComment::set_comment unsigned  index,
const Entry entry
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_vorbiscomment_set_comment(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::VorbisComment::insert_comment unsigned  index,
const Entry entry
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_vorbiscomment_insert_comment(). +

+

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::VorbisComment::append_comment const Entry entry  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_vorbiscomment_append_comment(). +

+

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::VorbisComment::delete_comment unsigned  index  ) 
+
+ + + + + +
+   + + +

+See FLAC__metadata_object_vorbiscomment_delete_comment(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Prototype& FLAC::Metadata::Prototype::assign_object ::FLAC__StreamMetadata object,
bool  copy
[protected, inherited]
+
+ + + + + +
+   + + +

+Assigns an object with copy control. See Prototype(::FLAC__StreamMetadata *object, bool copy).

+

+ + + + +
+ + + + + + + + +
virtual void FLAC::Metadata::Prototype::clear  )  [protected, virtual, inherited]
+
+ + + + + +
+   + + +

+Deletes the underlying FLAC__StreamMetadata object.

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::Prototype::get_is_last  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns true if this block is the last block in a stream, else false.

+

Assertions:
+
+

+ + + + +
+ + + + + + + + +
::FLAC__MetadataType FLAC::Metadata::Prototype::get_type  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns the type of the block.

+

Assertions:
+ +

+Reimplemented in FLAC::Metadata::Picture.

+

+ + + + +
+ + + + + + + + +
unsigned FLAC::Metadata::Prototype::get_length  )  const [inherited]
+
+ + + + + +
+   + + +

+Returns the stream length of the metadata block.

+

Note:
The length does not include the metadata block header, per spec.
+
Assertions:
+
+

+ + + + +
+ + + + + + + + + +
void FLAC::Metadata::Prototype::set_is_last bool   )  [inherited]
+
+ + + + + +
+   + + +

+Sets the "is_last" flag for the block. When using the iterators it is not necessary to set this flag; they will do it for you.

+

Assertions:
+
+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1VorbisComment.png b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1VorbisComment.png new file mode 100644 index 0000000000000000000000000000000000000000..264144a25f7501e2cea747c6e5ad198ac94e14b4 GIT binary patch literal 618 zcmV-w0+s!VP)NO zAPhiZ(>2l!-~^raLRsbhN2tCSY{za|C*$!T$Fh(S4}j>wz;y*=Bei&eBwP_rS5D>;dQnz&8mWZ)|`Xv zE%zV|cKYi7f-7H=gBf}4i+C^t-@sUv!8jY^9shlvmfQ0oXJmZbufe$AZ|*dQbc z78A(zONP0sxy$gG%Aov!6q%DPlW7{eNq7a&FnS*&FPZdp()k@DYA|^t<9KQerdm7H zOZ@uL4aWpAK-5rBzt^K@XiCNiqU>QC?k--aGNw<|@jMS>X(~LC9CQ*O)7-9yS{Z&; z9YdoQj1(;C%FuJO9ogvUiZ}{)?141}z&OmHF&;S4c07*qoM6N<$ Ef={UyU;qFB literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry-members.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry-members.html new file mode 100644 index 0000000..6060dc5 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry-members.html @@ -0,0 +1,58 @@ + + +FLAC: Member List + + + + +

FLAC::Metadata::VorbisComment::Entry Member List

This is the complete list of members for FLAC::Metadata::VorbisComment::Entry, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Entry() (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
Entry(const char *field, unsigned field_length) (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
Entry(const char *field) (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
Entry(const char *field_name, const char *field_value, unsigned field_value_length) (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
Entry(const char *field_name, const char *field_value) (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
Entry(const Entry &entry) (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
entry_ (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry [protected]
field_name_ (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry [protected]
field_name_length_ (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry [protected]
field_value_ (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry [protected]
field_value_length_ (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry [protected]
get_entry() const (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
get_field() const (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
get_field_length() const (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
get_field_name() const (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
get_field_name_length() const (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
get_field_value() const (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
get_field_value_length() const (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
is_valid() const FLAC::Metadata::VorbisComment::Entry [virtual]
is_valid_ (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry [protected]
operator=(const Entry &entry) (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
set_field(const char *field, unsigned field_length) (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
set_field(const char *field) (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
set_field_name(const char *field_name) (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
set_field_value(const char *field_value, unsigned field_value_length) (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
set_field_value(const char *field_value) (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry
~Entry() (defined in FLAC::Metadata::VorbisComment::Entry)FLAC::Metadata::VorbisComment::Entry [virtual]
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html new file mode 100644 index 0000000..c1f0fd5 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html @@ -0,0 +1,152 @@ + + +FLAC: FLAC::Metadata::VorbisComment::Entry Class Reference + + + + + +

FLAC::Metadata::VorbisComment::Entry Class Reference

#include <metadata.h> +

+List of all members.


Detailed Description

+Convenience class for encapsulating Vorbis comment entries. An entry is a vendor string or a comment field. In the case of a vendor string, the field name is undefined; only the field value is relevant.

+A field as used in the methods refers to an entire 'NAME=VALUE' string; for convenience the string is NUL-terminated. A length field is required in the unlikely event that the value contains contain embedded NULs.

+A field_name is what is on the left side of the first '=' in the field. By definition it is ASCII and so is NUL-terminated and does not require a length to describe it. field_name is undefined for a vendor string entry.

+A field_value is what is on the right side of the first '=' in the field. By definition, this may contain embedded NULs and so a field_value_length is required to describe it. However in practice, embedded NULs are not known to be used, so it is generally safe to treat field values as NUL- terminated UTF-8 strings.

+Always check is_valid() after the constructor or operator= to make sure memory was properly allocated and that the Entry conforms to the Vorbis comment specification. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Entry (const char *field, unsigned field_length)
Entry (const char *field)
Entry (const char *field_name, const char *field_value, unsigned field_value_length)
Entry (const char *field_name, const char *field_value)
Entry (const Entry &entry)
+Entryoperator= (const Entry &entry)
virtual bool is_valid () const
+unsigned get_field_length () const
+unsigned get_field_name_length () const
+unsigned get_field_value_length () const
+::FLAC__StreamMetadata_VorbisComment_Entry get_entry () const
+const char * get_field () const
+const char * get_field_name () const
+const char * get_field_value () const
+bool set_field (const char *field, unsigned field_length)
+bool set_field (const char *field)
+bool set_field_name (const char *field_name)
+bool set_field_value (const char *field_value, unsigned field_value_length)
+bool set_field_value (const char *field_value)

Protected Attributes

+bool is_valid_
+::FLAC__StreamMetadata_VorbisComment_Entry entry_
+char * field_name_
+unsigned field_name_length_
+char * field_value_
+unsigned field_value_length_
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual bool FLAC::Metadata::VorbisComment::Entry::is_valid  )  const [virtual]
+
+ + + + + +
+   + + +

+Returns true iff object was properly constructed. +

+

+


The documentation for this class was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/classes.html b/3rdparty/libflac/doc/html/api/classes.html new file mode 100644 index 0000000..4c5f43c --- /dev/null +++ b/3rdparty/libflac/doc/html/api/classes.html @@ -0,0 +1,41 @@ + + +FLAC: Alphabetical List + + + + +

FLAC Class Index

A | C | F | I | P | S | U | V

+ +
  A  
+
FLAC__EntropyCodingMethod_PartitionedRiceContents   FLAC__StreamMetadata_Padding   FLAC__Subframe_LPC   SimpleIterator::Status (FLAC::Metadata)   
Application (FLAC::Metadata)   FLAC__Frame   FLAC__StreamMetadata_Picture   FLAC__Subframe_Verbatim   Stream (FLAC::Decoder)   
  C  
+
FLAC__FrameFooter   FLAC__StreamMetadata_SeekPoint   
  I  
+
Stream (FLAC::Encoder)   
Chain (FLAC::Metadata)   FLAC__FrameHeader   FLAC__StreamMetadata_SeekTable   Iterator (FLAC::Metadata)   Stream::State (FLAC::Decoder)   
Chain::Status (FLAC::Metadata)   FLAC__IOCallbacks   FLAC__StreamMetadata_StreamInfo   
  P  
+
Stream::State (FLAC::Encoder)   
CueSheet (FLAC::Metadata)   FLAC__StreamDecoder   FLAC__StreamMetadata_Unknown   Padding (FLAC::Metadata)   StreamInfo (FLAC::Metadata)   
CueSheet::Track (FLAC::Metadata)   FLAC__StreamEncoder   FLAC__StreamMetadata_VorbisComment   Picture (FLAC::Metadata)   
  U  
+
  F  
+
FLAC__StreamMetadata   FLAC__StreamMetadata_VorbisComment_Entry   Prototype (FLAC::Metadata)   Unknown (FLAC::Metadata)   
File (FLAC::Decoder)   FLAC__StreamMetadata_Application   FLAC__Subframe   
  S  
+
  V  
+
File (FLAC::Encoder)   FLAC__StreamMetadata_CueSheet   FLAC__Subframe_Constant   SeekTable (FLAC::Metadata)   VorbisComment (FLAC::Metadata)   
FLAC__EntropyCodingMethod   FLAC__StreamMetadata_CueSheet_Index   FLAC__Subframe_Fixed   SimpleIterator (FLAC::Metadata)   VorbisComment::Entry (FLAC::Metadata)   
FLAC__EntropyCodingMethod_PartitionedRice   FLAC__StreamMetadata_CueSheet_Track   

A | C | F | I | P | S | U | V

+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/decoder_8h-source.html b/3rdparty/libflac/doc/html/api/decoder_8h-source.html new file mode 100644 index 0000000..ed13935 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/decoder_8h-source.html @@ -0,0 +1,190 @@ + + +FLAC: include/FLAC++/decoder.h Source File + + + + + +

decoder.h

Go to the documentation of this file.
00001 /* libFLAC++ - Free Lossless Audio Codec library
+00002  * Copyright (C) 2002,2003,2004,2005,2006,2007  Josh Coalson
+00003  *
+00004  * Redistribution and use in source and binary forms, with or without
+00005  * modification, are permitted provided that the following conditions
+00006  * are met:
+00007  *
+00008  * - Redistributions of source code must retain the above copyright
+00009  * notice, this list of conditions and the following disclaimer.
+00010  *
+00011  * - Redistributions in binary form must reproduce the above copyright
+00012  * notice, this list of conditions and the following disclaimer in the
+00013  * documentation and/or other materials provided with the distribution.
+00014  *
+00015  * - Neither the name of the Xiph.org Foundation nor the names of its
+00016  * contributors may be used to endorse or promote products derived from
+00017  * this software without specific prior written permission.
+00018  *
+00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+00020  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+00022  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+00023  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+00024  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+00025  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+00026  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+00027  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00028  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00029  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00030  */
+00031 
+00032 #ifndef FLACPP__DECODER_H
+00033 #define FLACPP__DECODER_H
+00034 
+00035 #include "export.h"
+00036 
+00037 #include <string>
+00038 #include "FLAC/stream_decoder.h"
+00039 
+00040 
+00077 namespace FLAC {
+00078     namespace Decoder {
+00079 
+00099         class FLACPP_API Stream {
+00100         public:
+00103             class FLACPP_API State {
+00104             public:
+00105                 inline State(::FLAC__StreamDecoderState state): state_(state) { }
+00106                 inline operator ::FLAC__StreamDecoderState() const { return state_; }
+00107                 inline const char *as_cstring() const { return ::FLAC__StreamDecoderStateString[state_]; }
+00108                 inline const char *resolved_as_cstring(const Stream &decoder) const { return ::FLAC__stream_decoder_get_resolved_state_string(decoder.decoder_); }
+00109             protected:
+00110 				::FLAC__StreamDecoderState state_;
+00111             };
+00112 
+00113             Stream();
+00114             virtual ~Stream();
+00115 
+00117 
+00120             virtual bool is_valid() const;
+00121             inline operator bool() const { return is_valid(); } 
+00122 
+00123 
+00124             virtual bool set_ogg_serial_number(long value);                        
+00125             virtual bool set_md5_checking(bool value);                             
+00126             virtual bool set_metadata_respond(::FLAC__MetadataType type);          
+00127             virtual bool set_metadata_respond_application(const FLAC__byte id[4]); 
+00128             virtual bool set_metadata_respond_all();                               
+00129             virtual bool set_metadata_ignore(::FLAC__MetadataType type);           
+00130             virtual bool set_metadata_ignore_application(const FLAC__byte id[4]);  
+00131             virtual bool set_metadata_ignore_all();                                
+00132 
+00133             /* get_state() is not virtual since we want subclasses to be able to return their own state */
+00134             State get_state() const;                                          
+00135             virtual bool get_md5_checking() const;                            
+00136             virtual FLAC__uint64 get_total_samples() const;                   
+00137             virtual unsigned get_channels() const;                            
+00138             virtual ::FLAC__ChannelAssignment get_channel_assignment() const; 
+00139             virtual unsigned get_bits_per_sample() const;                     
+00140             virtual unsigned get_sample_rate() const;                         
+00141             virtual unsigned get_blocksize() const;                           
+00142             virtual bool get_decode_position(FLAC__uint64 *position) const;   
+00143 
+00144             virtual ::FLAC__StreamDecoderInitStatus init();      
+00145             virtual ::FLAC__StreamDecoderInitStatus init_ogg();  
+00146 
+00147             virtual bool finish(); 
+00148 
+00149             virtual bool flush(); 
+00150             virtual bool reset(); 
+00151 
+00152             virtual bool process_single();                
+00153             virtual bool process_until_end_of_metadata(); 
+00154             virtual bool process_until_end_of_stream();   
+00155             virtual bool skip_single_frame();             
+00156 
+00157             virtual bool seek_absolute(FLAC__uint64 sample); 
+00158         protected:
+00160             virtual ::FLAC__StreamDecoderReadStatus read_callback(FLAC__byte buffer[], size_t *bytes) = 0;
+00161 
+00163             virtual ::FLAC__StreamDecoderSeekStatus seek_callback(FLAC__uint64 absolute_byte_offset);
+00164 
+00166             virtual ::FLAC__StreamDecoderTellStatus tell_callback(FLAC__uint64 *absolute_byte_offset);
+00167 
+00169             virtual ::FLAC__StreamDecoderLengthStatus length_callback(FLAC__uint64 *stream_length);
+00170 
+00172             virtual bool eof_callback();
+00173 
+00175             virtual ::FLAC__StreamDecoderWriteStatus write_callback(const ::FLAC__Frame *frame, const FLAC__int32 * const buffer[]) = 0;
+00176 
+00178             virtual void metadata_callback(const ::FLAC__StreamMetadata *metadata);
+00179 
+00181             virtual void error_callback(::FLAC__StreamDecoderErrorStatus status) = 0;
+00182 
+00183 #if (defined _MSC_VER) || (defined __BORLANDC__) || (defined __GNUG__ && (__GNUG__ < 2 || (__GNUG__ == 2 && __GNUC_MINOR__ < 96))) || (defined __SUNPRO_CC)
+00184             // lame hack: some MSVC/GCC versions can't see a protected decoder_ from nested State::resolved_as_cstring()
+00185             friend State;
+00186 #endif
+00187             ::FLAC__StreamDecoder *decoder_;
+00188 
+00189             static ::FLAC__StreamDecoderReadStatus read_callback_(const ::FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data);
+00190             static ::FLAC__StreamDecoderSeekStatus seek_callback_(const ::FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data);
+00191             static ::FLAC__StreamDecoderTellStatus tell_callback_(const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data);
+00192             static ::FLAC__StreamDecoderLengthStatus length_callback_(const ::FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data);
+00193             static FLAC__bool eof_callback_(const ::FLAC__StreamDecoder *decoder, void *client_data);
+00194             static ::FLAC__StreamDecoderWriteStatus write_callback_(const ::FLAC__StreamDecoder *decoder, const ::FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
+00195             static void metadata_callback_(const ::FLAC__StreamDecoder *decoder, const ::FLAC__StreamMetadata *metadata, void *client_data);
+00196             static void error_callback_(const ::FLAC__StreamDecoder *decoder, ::FLAC__StreamDecoderErrorStatus status, void *client_data);
+00197         private:
+00198             // Private and undefined so you can't use them:
+00199             Stream(const Stream &);
+00200             void operator=(const Stream &);
+00201         };
+00202 
+00222         class FLACPP_API File: public Stream {
+00223         public:
+00224             File();
+00225             virtual ~File();
+00226 
+00227             virtual ::FLAC__StreamDecoderInitStatus init(FILE *file);                      
+00228             virtual ::FLAC__StreamDecoderInitStatus init(const char *filename);            
+00229             virtual ::FLAC__StreamDecoderInitStatus init(const std::string &filename);     
+00230             virtual ::FLAC__StreamDecoderInitStatus init_ogg(FILE *file);                  
+00231             virtual ::FLAC__StreamDecoderInitStatus init_ogg(const char *filename);        
+00232             virtual ::FLAC__StreamDecoderInitStatus init_ogg(const std::string &filename); 
+00233         protected:
+00234             // this is a dummy implementation to satisfy the pure virtual in Stream that is actually supplied internally by the C layer
+00235             virtual ::FLAC__StreamDecoderReadStatus read_callback(FLAC__byte buffer[], size_t *bytes);
+00236         private:
+00237             // Private and undefined so you can't use them:
+00238             File(const File &);
+00239             void operator=(const File &);
+00240         };
+00241 
+00242     }
+00243 }
+00244 
+00245 #endif
+
+
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/decoder_8h.html b/3rdparty/libflac/doc/html/api/decoder_8h.html new file mode 100644 index 0000000..2953a88 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/decoder_8h.html @@ -0,0 +1,50 @@ + + +FLAC: include/FLAC++/decoder.h File Reference + + + + + +

decoder.h File Reference


Detailed Description

+This module contains the classes which implement the various decoders. +

+See the detailed documentation in the decoder module. +

+#include "export.h"
+#include <string>
+#include "FLAC/stream_decoder.h"
+ +

+Go to the source code of this file. + + + + + + +

Namespaces

namespace  FLAC
namespace  FLAC::Decoder
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/dir_000000.html b/3rdparty/libflac/doc/html/api/dir_000000.html new file mode 100644 index 0000000..c885b66 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/dir_000000.html @@ -0,0 +1,42 @@ + + +FLAC: include/ Directory Reference + + + + + +

include Directory Reference

+

+ + + + + + + +

Directories

directory  FLAC
directory  FLAC++
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/dir_000001.html b/3rdparty/libflac/doc/html/api/dir_000001.html new file mode 100644 index 0000000..ffcd7fe --- /dev/null +++ b/3rdparty/libflac/doc/html/api/dir_000001.html @@ -0,0 +1,48 @@ + + +FLAC: include/FLAC++/ Directory Reference + + + + + +

FLAC++ Directory Reference

+

+ + + + + + + + + + + + + +

Files

file  all.h [code]
file  decoder.h [code]
file  encoder.h [code]
file  export.h [code]
file  metadata.h [code]
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/dir_000002.html b/3rdparty/libflac/doc/html/api/dir_000002.html new file mode 100644 index 0000000..3f2d665 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/dir_000002.html @@ -0,0 +1,56 @@ + + +FLAC: include/FLAC/ Directory Reference + + + + + +

FLAC Directory Reference

+

+ + + + + + + + + + + + + + + + + + + + + +

Files

file  all.h [code]
file  assert.h [code]
file  callback.h [code]
file  export.h [code]
file  format.h [code]
file  metadata.h [code]
file  ordinals.h [code]
file  stream_decoder.h [code]
file  stream_encoder.h [code]
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/dirs.html b/3rdparty/libflac/doc/html/api/dirs.html new file mode 100644 index 0000000..7da060c --- /dev/null +++ b/3rdparty/libflac/doc/html/api/dirs.html @@ -0,0 +1,37 @@ + + +FLAC: Directory Hierarchy + + + + +

FLAC Directories

This directory hierarchy is sorted roughly, but not completely, alphabetically: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/doxygen.css b/3rdparty/libflac/doc/html/api/doxygen.css new file mode 100644 index 0000000..decae9e --- /dev/null +++ b/3rdparty/libflac/doc/html/api/doxygen.css @@ -0,0 +1,309 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #eeeeff; + border: 1px solid #b0b0b0; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #eeeeff; + border: 1px solid #b0b0b0; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #eeeeff; + border: 1px solid #b0b0b0; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: Fixed, monospace; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } +TD.md { background-color: #F4F4FB; font-weight: bold; } +TD.mdPrefix { + background-color: #F4F4FB; + color: #606060; + font-size: 80%; +} +TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; } +TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; } +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #eeeeff; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #eeeeff; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdTable { + border: 1px solid #868686; + background-color: #F4F4FB; +} +.mdRow { + padding: 8px 10px; +} +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #eeeeff; +} +TD.tiny { font-size: 75%; +} +a { + color: #252E78; +} +a:visited { + color: #3D2185; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #b0b0b0; +} +TH.dirtab { background: #eeeeff; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} diff --git a/3rdparty/libflac/doc/html/api/doxygen.png b/3rdparty/libflac/doc/html/api/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..f0a274bbaffdd67f6d784c894d9cf28729db0e14 GIT binary patch literal 1281 zcmaJ>ZA?>F7(Vx-ms?uoS`b@hdRtpo6o^%HU>M$hfGrBvQnk$LE?p^P!kn&ikhyq! zX~V@&tPF5Qt@V?oTL96Bi%aRiwbe1)9DWQI#?)=HxS7QSw`J`5fAJ*eJbB;uNuKA& zdERDo*{Y<(If(#(B$Lr#;nB(8Y#ia=ZCeW?JfPLuQY`=@cW$k}Rivq|vbxGrRq1Tl9;+(gNt?}UtVKM2`T5t1jLzuL@0UIs`S#vlhl4)^ zLgSYrPj@$+`|j?eSbXTmiHGkWxV8V}BzNR?pl9k_s4pDu9vd5a_UzZEPk)}Ad{AV_ zzddrjrh4=Imr`E06;LY{)YYt?o}L~H@7C}F^WB!Ra=v`Q0bj{>5&$66CWF>mf6vjP z2N>RRY6ZYa=K`76>+|_)Xdwko+7wv}7cN|btOhWb(*{sta~6b?S8Omrxw}!4`NhGr zZVpNqpu1@BE`QGWNTpEpcJVW5izu~2B^GlM?1(OPg)zwW;QcP@Ltcclm>XbJL9C|j z=9!2?ua=uIlf0%AndzHsRC}IyTL$EhAee(fdKB`?27KeS^2M8M_7b~PiCFO&r5LC7 z7gl1*a<8;SjNaw#h=843_AV9iZbWQOAp5YOC^&_F*9K0> zB|6%IDb?aM#3viTxkLU4aXg&@+CkNTOnQ1iMP*^?b|^lJy$4C)Zk4isV!|RZ*XhXh zw8q3$=*0LeGC!XI_Wc?dkT~3+*Gu%%yIqP+Wr3H$=&ROMQU6q}Ag^P~>c5vAEO;a- z_dK-3PPeKar%)6$j~vI2#*-YH!1h6HYVtwCX5_wM`iF#UKz&&@9Oo5w3%XGYrX zW>dY~)SG-((Yim%`InwgTvyRC?e=Wh^8KCao!R6Eg&TpVWUY1sN~4G}V?nFnEGo-; zHZ_$eW9-GnC%^WS9b z@p;-$oH#MtC0v>Q$HX%4^JdFdO$0cbv-W)Q TtK}Eh@>>I#ipmV1>S*>q-hkC} literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/api/encoder_8h-source.html b/3rdparty/libflac/doc/html/api/encoder_8h-source.html new file mode 100644 index 0000000..25fc881 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/encoder_8h-source.html @@ -0,0 +1,203 @@ + + +FLAC: include/FLAC++/encoder.h Source File + + + + + +

encoder.h

Go to the documentation of this file.
00001 /* libFLAC++ - Free Lossless Audio Codec library
+00002  * Copyright (C) 2002,2003,2004,2005,2006,2007  Josh Coalson
+00003  *
+00004  * Redistribution and use in source and binary forms, with or without
+00005  * modification, are permitted provided that the following conditions
+00006  * are met:
+00007  *
+00008  * - Redistributions of source code must retain the above copyright
+00009  * notice, this list of conditions and the following disclaimer.
+00010  *
+00011  * - Redistributions in binary form must reproduce the above copyright
+00012  * notice, this list of conditions and the following disclaimer in the
+00013  * documentation and/or other materials provided with the distribution.
+00014  *
+00015  * - Neither the name of the Xiph.org Foundation nor the names of its
+00016  * contributors may be used to endorse or promote products derived from
+00017  * this software without specific prior written permission.
+00018  *
+00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+00020  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+00022  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+00023  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+00024  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+00025  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+00026  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+00027  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00028  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00029  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00030  */
+00031 
+00032 #ifndef FLACPP__ENCODER_H
+00033 #define FLACPP__ENCODER_H
+00034 
+00035 #include "export.h"
+00036 
+00037 #include "FLAC/stream_encoder.h"
+00038 #include "decoder.h"
+00039 #include "metadata.h"
+00040 
+00041 
+00078 namespace FLAC {
+00079     namespace Encoder {
+00080 
+00101         class FLACPP_API Stream {
+00102         public:
+00105             class FLACPP_API State {
+00106             public:
+00107                 inline State(::FLAC__StreamEncoderState state): state_(state) { }
+00108                 inline operator ::FLAC__StreamEncoderState() const { return state_; }
+00109                 inline const char *as_cstring() const { return ::FLAC__StreamEncoderStateString[state_]; }
+00110                 inline const char *resolved_as_cstring(const Stream &encoder) const { return ::FLAC__stream_encoder_get_resolved_state_string(encoder.encoder_); }
+00111             protected:
+00112 				::FLAC__StreamEncoderState state_;
+00113             };
+00114 
+00115             Stream();
+00116             virtual ~Stream();
+00117 
+00119 
+00123             virtual bool is_valid() const;
+00124             inline operator bool() const { return is_valid(); } 
+00125 
+00126 
+00127             virtual bool set_ogg_serial_number(long value);                 
+00128             virtual bool set_verify(bool value);                            
+00129             virtual bool set_streamable_subset(bool value);                 
+00130             virtual bool set_channels(unsigned value);                      
+00131             virtual bool set_bits_per_sample(unsigned value);               
+00132             virtual bool set_sample_rate(unsigned value);                   
+00133             virtual bool set_compression_level(unsigned value);             
+00134             virtual bool set_blocksize(unsigned value);                     
+00135             virtual bool set_do_mid_side_stereo(bool value);                
+00136             virtual bool set_loose_mid_side_stereo(bool value);             
+00137             virtual bool set_apodization(const char *specification);        
+00138             virtual bool set_max_lpc_order(unsigned value);                 
+00139             virtual bool set_qlp_coeff_precision(unsigned value);           
+00140             virtual bool set_do_qlp_coeff_prec_search(bool value);          
+00141             virtual bool set_do_escape_coding(bool value);                  
+00142             virtual bool set_do_exhaustive_model_search(bool value);        
+00143             virtual bool set_min_residual_partition_order(unsigned value);  
+00144             virtual bool set_max_residual_partition_order(unsigned value);  
+00145             virtual bool set_rice_parameter_search_dist(unsigned value);    
+00146             virtual bool set_total_samples_estimate(FLAC__uint64 value);    
+00147             virtual bool set_metadata(::FLAC__StreamMetadata **metadata, unsigned num_blocks);    
+00148             virtual bool set_metadata(FLAC::Metadata::Prototype **metadata, unsigned num_blocks); 
+00149 
+00150             /* get_state() is not virtual since we want subclasses to be able to return their own state */
+00151             State get_state() const;                                   
+00152             virtual Decoder::Stream::State get_verify_decoder_state() const; 
+00153             virtual void get_verify_decoder_error_stats(FLAC__uint64 *absolute_sample, unsigned *frame_number, unsigned *channel, unsigned *sample, FLAC__int32 *expected, FLAC__int32 *got); 
+00154             virtual bool     get_verify() const;                       
+00155             virtual bool     get_streamable_subset() const;            
+00156             virtual bool     get_do_mid_side_stereo() const;           
+00157             virtual bool     get_loose_mid_side_stereo() const;        
+00158             virtual unsigned get_channels() const;                     
+00159             virtual unsigned get_bits_per_sample() const;              
+00160             virtual unsigned get_sample_rate() const;                  
+00161             virtual unsigned get_blocksize() const;                    
+00162             virtual unsigned get_max_lpc_order() const;                
+00163             virtual unsigned get_qlp_coeff_precision() const;          
+00164             virtual bool     get_do_qlp_coeff_prec_search() const;     
+00165             virtual bool     get_do_escape_coding() const;             
+00166             virtual bool     get_do_exhaustive_model_search() const;   
+00167             virtual unsigned get_min_residual_partition_order() const; 
+00168             virtual unsigned get_max_residual_partition_order() const; 
+00169             virtual unsigned get_rice_parameter_search_dist() const;   
+00170             virtual FLAC__uint64 get_total_samples_estimate() const;   
+00171 
+00172             virtual ::FLAC__StreamEncoderInitStatus init();            
+00173             virtual ::FLAC__StreamEncoderInitStatus init_ogg();        
+00174 
+00175             virtual bool finish(); 
+00176 
+00177             virtual bool process(const FLAC__int32 * const buffer[], unsigned samples);     
+00178             virtual bool process_interleaved(const FLAC__int32 buffer[], unsigned samples); 
+00179         protected:
+00181             virtual ::FLAC__StreamEncoderReadStatus read_callback(FLAC__byte buffer[], size_t *bytes);
+00182 
+00184             virtual ::FLAC__StreamEncoderWriteStatus write_callback(const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame) = 0;
+00185 
+00187             virtual ::FLAC__StreamEncoderSeekStatus seek_callback(FLAC__uint64 absolute_byte_offset);
+00188 
+00190             virtual ::FLAC__StreamEncoderTellStatus tell_callback(FLAC__uint64 *absolute_byte_offset);
+00191 
+00193             virtual void metadata_callback(const ::FLAC__StreamMetadata *metadata);
+00194 
+00195 #if (defined _MSC_VER) || (defined __BORLANDC__) || (defined __GNUG__ && (__GNUG__ < 2 || (__GNUG__ == 2 && __GNUC_MINOR__ < 96))) || (defined __SUNPRO_CC)
+00196             // lame hack: some MSVC/GCC versions can't see a protected encoder_ from nested State::resolved_as_cstring()
+00197             friend State;
+00198 #endif
+00199             ::FLAC__StreamEncoder *encoder_;
+00200 
+00201             static ::FLAC__StreamEncoderReadStatus read_callback_(const ::FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data);
+00202             static ::FLAC__StreamEncoderWriteStatus write_callback_(const ::FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, void *client_data);
+00203             static ::FLAC__StreamEncoderSeekStatus seek_callback_(const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data);
+00204             static ::FLAC__StreamEncoderTellStatus tell_callback_(const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data);
+00205             static void metadata_callback_(const ::FLAC__StreamEncoder *encoder, const ::FLAC__StreamMetadata *metadata, void *client_data);
+00206         private:
+00207             // Private and undefined so you can't use them:
+00208             Stream(const Stream &);
+00209             void operator=(const Stream &);
+00210         };
+00211 
+00232         class FLACPP_API File: public Stream {
+00233         public:
+00234             File();
+00235             virtual ~File();
+00236 
+00237             virtual ::FLAC__StreamEncoderInitStatus init(FILE *file);                      
+00238             virtual ::FLAC__StreamEncoderInitStatus init(const char *filename);            
+00239             virtual ::FLAC__StreamEncoderInitStatus init(const std::string &filename);     
+00240             virtual ::FLAC__StreamEncoderInitStatus init_ogg(FILE *file);                  
+00241             virtual ::FLAC__StreamEncoderInitStatus init_ogg(const char *filename);        
+00242             virtual ::FLAC__StreamEncoderInitStatus init_ogg(const std::string &filename); 
+00243         protected:
+00245             virtual void progress_callback(FLAC__uint64 bytes_written, FLAC__uint64 samples_written, unsigned frames_written, unsigned total_frames_estimate);
+00246 
+00248             virtual ::FLAC__StreamEncoderWriteStatus write_callback(const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame);
+00249         private:
+00250             static void progress_callback_(const ::FLAC__StreamEncoder *encoder, FLAC__uint64 bytes_written, FLAC__uint64 samples_written, unsigned frames_written, unsigned total_frames_estimate, void *client_data);
+00251 
+00252             // Private and undefined so you can't use them:
+00253             File(const Stream &);
+00254             void operator=(const Stream &);
+00255         };
+00256 
+00257     }
+00258 }
+00259 
+00260 #endif
+
+
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/encoder_8h.html b/3rdparty/libflac/doc/html/api/encoder_8h.html new file mode 100644 index 0000000..aa045cb --- /dev/null +++ b/3rdparty/libflac/doc/html/api/encoder_8h.html @@ -0,0 +1,51 @@ + + +FLAC: include/FLAC++/encoder.h File Reference + + + + + +

encoder.h File Reference


Detailed Description

+This module contains the classes which implement the various encoders. +

+See the detailed documentation in the encoder module. +

+#include "export.h"
+#include "FLAC/stream_encoder.h"
+#include "decoder.h"
+#include "metadata.h"
+ +

+Go to the source code of this file. + + + + + + +

Namespaces

namespace  FLAC
namespace  FLAC::Encoder
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/export_8h-source.html b/3rdparty/libflac/doc/html/api/export_8h-source.html new file mode 100644 index 0000000..28e5985 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/export_8h-source.html @@ -0,0 +1,95 @@ + + +FLAC: include/FLAC/export.h Source File + + + + + +

export.h

Go to the documentation of this file.
00001 /* libFLAC - Free Lossless Audio Codec library
+00002  * Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
+00003  *
+00004  * Redistribution and use in source and binary forms, with or without
+00005  * modification, are permitted provided that the following conditions
+00006  * are met:
+00007  *
+00008  * - Redistributions of source code must retain the above copyright
+00009  * notice, this list of conditions and the following disclaimer.
+00010  *
+00011  * - Redistributions in binary form must reproduce the above copyright
+00012  * notice, this list of conditions and the following disclaimer in the
+00013  * documentation and/or other materials provided with the distribution.
+00014  *
+00015  * - Neither the name of the Xiph.org Foundation nor the names of its
+00016  * contributors may be used to endorse or promote products derived from
+00017  * this software without specific prior written permission.
+00018  *
+00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+00020  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+00022  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+00023  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+00024  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+00025  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+00026  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+00027  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00028  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00029  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00030  */
+00031 
+00032 #ifndef FLAC__EXPORT_H
+00033 #define FLAC__EXPORT_H
+00034 
+00058 #if defined(FLAC__NO_DLL) || !defined(_MSC_VER)
+00059 #define FLAC_API
+00060 
+00061 #else
+00062 
+00063 #ifdef FLAC_API_EXPORTS
+00064 #define FLAC_API    _declspec(dllexport)
+00065 #else
+00066 #define FLAC_API    _declspec(dllimport)
+00067 
+00068 #endif
+00069 #endif
+00070 
+00074 #define FLAC_API_VERSION_CURRENT 10
+00075 #define FLAC_API_VERSION_REVISION 0 
+00076 #define FLAC_API_VERSION_AGE 2 
+00078 #ifdef __cplusplus
+00079 extern "C" {
+00080 #endif
+00081 
+00083 extern FLAC_API int FLAC_API_SUPPORTS_OGG_FLAC;
+00084 
+00085 #ifdef __cplusplus
+00086 }
+00087 #endif
+00088 
+00089 /* \} */
+00090 
+00091 #endif
+
+
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/export_8h.html b/3rdparty/libflac/doc/html/api/export_8h.html new file mode 100644 index 0000000..13c12d5 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/export_8h.html @@ -0,0 +1,55 @@ + + +FLAC: include/FLAC/export.h File Reference + + + + + +

export.h File Reference


Detailed Description

+This module contains #defines and symbols for exporting function calls, and providing version information and compiled-in features. +

+See the export module. +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + +

Defines

+#define FLAC_API
#define FLAC_API_VERSION_CURRENT   10
#define FLAC_API_VERSION_REVISION   0
#define FLAC_API_VERSION_AGE   2

Variables

int FLAC_API_SUPPORTS_OGG_FLAC
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/files.html b/3rdparty/libflac/doc/html/api/files.html new file mode 100644 index 0000000..75a4738 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/files.html @@ -0,0 +1,46 @@ + + +FLAC: File Index + + + + +

FLAC File List

Here is a list of all documented files with brief descriptions: + + + + + + + + + + + + + + +
include/FLAC++/all.h [code]
include/FLAC++/decoder.h [code]This module contains the classes which implement the various decoders
include/FLAC++/encoder.h [code]This module contains the classes which implement the various encoders
include/FLAC++/export.h [code]This module contains #defines and symbols for exporting function calls, and providing version information and compiled-in features
include/FLAC++/metadata.h [code]This module provides classes for creating and manipulating FLAC metadata blocks in memory, and three progressively more powerful interfaces for traversing and editing metadata in FLAC files
include/FLAC/all.h [code]
include/FLAC/assert.h [code]
include/FLAC/callback.h [code]This module defines the structures for describing I/O callbacks to the other FLAC interfaces
include/FLAC/export.h [code]This module contains #defines and symbols for exporting function calls, and providing version information and compiled-in features
include/FLAC/format.h [code]This module contains structure definitions for the representation of FLAC format components in memory. These are the basic structures used by the rest of the interfaces
include/FLAC/metadata.h [code]This module provides functions for creating and manipulating FLAC metadata blocks in memory, and three progressively more powerful interfaces for traversing and editing metadata in FLAC files
include/FLAC/ordinals.h [code]
include/FLAC/stream_decoder.h [code]This module contains the functions which implement the stream decoder
include/FLAC/stream_encoder.h [code]This module contains the functions which implement the stream encoder
+ +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/format_8h-source.html b/3rdparty/libflac/doc/html/api/format_8h-source.html new file mode 100644 index 0000000..f99cf93 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/format_8h-source.html @@ -0,0 +1,521 @@ + + +FLAC: include/FLAC/format.h Source File + + + + + +

format.h

Go to the documentation of this file.
00001 /* libFLAC - Free Lossless Audio Codec library
+00002  * Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
+00003  *
+00004  * Redistribution and use in source and binary forms, with or without
+00005  * modification, are permitted provided that the following conditions
+00006  * are met:
+00007  *
+00008  * - Redistributions of source code must retain the above copyright
+00009  * notice, this list of conditions and the following disclaimer.
+00010  *
+00011  * - Redistributions in binary form must reproduce the above copyright
+00012  * notice, this list of conditions and the following disclaimer in the
+00013  * documentation and/or other materials provided with the distribution.
+00014  *
+00015  * - Neither the name of the Xiph.org Foundation nor the names of its
+00016  * contributors may be used to endorse or promote products derived from
+00017  * this software without specific prior written permission.
+00018  *
+00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+00020  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+00022  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+00023  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+00024  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+00025  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+00026  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+00027  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00028  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00029  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00030  */
+00031 
+00032 #ifndef FLAC__FORMAT_H
+00033 #define FLAC__FORMAT_H
+00034 
+00035 #include "export.h"
+00036 #include "ordinals.h"
+00037 
+00038 #ifdef __cplusplus
+00039 extern "C" {
+00040 #endif
+00041 
+00086 /*
+00087     Most of the values described in this file are defined by the FLAC
+00088     format specification.  There is nothing to tune here.
+00089 */
+00090 
+00092 #define FLAC__MAX_METADATA_TYPE_CODE (126u)
+00093 
+00095 #define FLAC__MIN_BLOCK_SIZE (16u)
+00096 
+00098 #define FLAC__MAX_BLOCK_SIZE (65535u)
+00099 
+00102 #define FLAC__SUBSET_MAX_BLOCK_SIZE_48000HZ (4608u)
+00103 
+00105 #define FLAC__MAX_CHANNELS (8u)
+00106 
+00108 #define FLAC__MIN_BITS_PER_SAMPLE (4u)
+00109 
+00111 #define FLAC__MAX_BITS_PER_SAMPLE (32u)
+00112 
+00121 #define FLAC__REFERENCE_CODEC_MAX_BITS_PER_SAMPLE (24u)
+00122 
+00127 #define FLAC__MAX_SAMPLE_RATE (655350u)
+00128 
+00130 #define FLAC__MAX_LPC_ORDER (32u)
+00131 
+00134 #define FLAC__SUBSET_MAX_LPC_ORDER_48000HZ (12u)
+00135 
+00139 #define FLAC__MIN_QLP_COEFF_PRECISION (5u)
+00140 
+00144 #define FLAC__MAX_QLP_COEFF_PRECISION (15u)
+00145 
+00147 #define FLAC__MAX_FIXED_ORDER (4u)
+00148 
+00150 #define FLAC__MAX_RICE_PARTITION_ORDER (15u)
+00151 
+00153 #define FLAC__SUBSET_MAX_RICE_PARTITION_ORDER (8u)
+00154 
+00161 extern FLAC_API const char *FLAC__VERSION_STRING;
+00162 
+00167 extern FLAC_API const char *FLAC__VENDOR_STRING;
+00168 
+00170 extern FLAC_API const FLAC__byte FLAC__STREAM_SYNC_STRING[4]; /* = "fLaC" */
+00171 
+00175 extern FLAC_API const unsigned FLAC__STREAM_SYNC; /* = 0x664C6143 */
+00176 
+00178 extern FLAC_API const unsigned FLAC__STREAM_SYNC_LEN; /* = 32 bits */
+00179 
+00181 #define FLAC__STREAM_SYNC_LENGTH (4u)
+00182 
+00183 
+00184 /*****************************************************************************
+00185  *
+00186  * Subframe structures
+00187  *
+00188  *****************************************************************************/
+00189 
+00190 /*****************************************************************************/
+00191 
+00193 typedef enum {
+00194     FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE = 0,
+00198     FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2 = 1
+00201 } FLAC__EntropyCodingMethodType;
+00202 
+00208 extern FLAC_API const char * const FLAC__EntropyCodingMethodTypeString[];
+00209 
+00210 
+00213 typedef struct {
+00214 
+00215     unsigned *parameters;
+00218     unsigned *raw_bits;
+00223     unsigned capacity_by_order;
+00228 } FLAC__EntropyCodingMethod_PartitionedRiceContents;
+00229 
+00232 typedef struct {
+00233 
+00234     unsigned order;
+00237     const FLAC__EntropyCodingMethod_PartitionedRiceContents *contents;
+00240 } FLAC__EntropyCodingMethod_PartitionedRice;
+00241 
+00242 extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN; 
+00243 extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN; 
+00244 extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN; 
+00245 extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN; 
+00247 extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER;
+00249 extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_ESCAPE_PARAMETER;
+00254 typedef struct {
+00255     FLAC__EntropyCodingMethodType type;
+00256     union {
+00257         FLAC__EntropyCodingMethod_PartitionedRice partitioned_rice;
+00258     } data;
+00259 } FLAC__EntropyCodingMethod;
+00260 
+00261 extern FLAC_API const unsigned FLAC__ENTROPY_CODING_METHOD_TYPE_LEN; 
+00263 /*****************************************************************************/
+00264 
+00266 typedef enum {
+00267     FLAC__SUBFRAME_TYPE_CONSTANT = 0, 
+00268     FLAC__SUBFRAME_TYPE_VERBATIM = 1, 
+00269     FLAC__SUBFRAME_TYPE_FIXED = 2, 
+00270     FLAC__SUBFRAME_TYPE_LPC = 3 
+00271 } FLAC__SubframeType;
+00272 
+00278 extern FLAC_API const char * const FLAC__SubframeTypeString[];
+00279 
+00280 
+00283 typedef struct {
+00284     FLAC__int32 value; 
+00285 } FLAC__Subframe_Constant;
+00286 
+00287 
+00290 typedef struct {
+00291     const FLAC__int32 *data; 
+00292 } FLAC__Subframe_Verbatim;
+00293 
+00294 
+00297 typedef struct {
+00298     FLAC__EntropyCodingMethod entropy_coding_method;
+00301     unsigned order;
+00304     FLAC__int32 warmup[FLAC__MAX_FIXED_ORDER];
+00307     const FLAC__int32 *residual;
+00309 } FLAC__Subframe_Fixed;
+00310 
+00311 
+00314 typedef struct {
+00315     FLAC__EntropyCodingMethod entropy_coding_method;
+00318     unsigned order;
+00321     unsigned qlp_coeff_precision;
+00324     int quantization_level;
+00327     FLAC__int32 qlp_coeff[FLAC__MAX_LPC_ORDER];
+00330     FLAC__int32 warmup[FLAC__MAX_LPC_ORDER];
+00333     const FLAC__int32 *residual;
+00335 } FLAC__Subframe_LPC;
+00336 
+00337 extern FLAC_API const unsigned FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN; 
+00338 extern FLAC_API const unsigned FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN; 
+00343 typedef struct {
+00344     FLAC__SubframeType type;
+00345     union {
+00346         FLAC__Subframe_Constant constant;
+00347         FLAC__Subframe_Fixed fixed;
+00348         FLAC__Subframe_LPC lpc;
+00349         FLAC__Subframe_Verbatim verbatim;
+00350     } data;
+00351     unsigned wasted_bits;
+00352 } FLAC__Subframe;
+00353 
+00361 extern FLAC_API const unsigned FLAC__SUBFRAME_ZERO_PAD_LEN;
+00362 extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_LEN; 
+00363 extern FLAC_API const unsigned FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN; 
+00365 extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_CONSTANT_BYTE_ALIGNED_MASK; 
+00366 extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_VERBATIM_BYTE_ALIGNED_MASK; 
+00367 extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_FIXED_BYTE_ALIGNED_MASK; 
+00368 extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_LPC_BYTE_ALIGNED_MASK; 
+00370 /*****************************************************************************/
+00371 
+00372 
+00373 /*****************************************************************************
+00374  *
+00375  * Frame structures
+00376  *
+00377  *****************************************************************************/
+00378 
+00380 typedef enum {
+00381     FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT = 0, 
+00382     FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE = 1, 
+00383     FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE = 2, 
+00384     FLAC__CHANNEL_ASSIGNMENT_MID_SIDE = 3 
+00385 } FLAC__ChannelAssignment;
+00386 
+00392 extern FLAC_API const char * const FLAC__ChannelAssignmentString[];
+00393 
+00395 typedef enum {
+00396     FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER, 
+00397     FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER 
+00398 } FLAC__FrameNumberType;
+00399 
+00405 extern FLAC_API const char * const FLAC__FrameNumberTypeString[];
+00406 
+00407 
+00410 typedef struct {
+00411     unsigned blocksize;
+00414     unsigned sample_rate;
+00417     unsigned channels;
+00420     FLAC__ChannelAssignment channel_assignment;
+00423     unsigned bits_per_sample;
+00426     FLAC__FrameNumberType number_type;
+00431     union {
+00432         FLAC__uint32 frame_number;
+00433         FLAC__uint64 sample_number;
+00434     } number;
+00438     FLAC__uint8 crc;
+00443 } FLAC__FrameHeader;
+00444 
+00445 extern FLAC_API const unsigned FLAC__FRAME_HEADER_SYNC; 
+00446 extern FLAC_API const unsigned FLAC__FRAME_HEADER_SYNC_LEN; 
+00447 extern FLAC_API const unsigned FLAC__FRAME_HEADER_RESERVED_LEN; 
+00448 extern FLAC_API const unsigned FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN; 
+00449 extern FLAC_API const unsigned FLAC__FRAME_HEADER_BLOCK_SIZE_LEN; 
+00450 extern FLAC_API const unsigned FLAC__FRAME_HEADER_SAMPLE_RATE_LEN; 
+00451 extern FLAC_API const unsigned FLAC__FRAME_HEADER_CHANNEL_ASSIGNMENT_LEN; 
+00452 extern FLAC_API const unsigned FLAC__FRAME_HEADER_BITS_PER_SAMPLE_LEN; 
+00453 extern FLAC_API const unsigned FLAC__FRAME_HEADER_ZERO_PAD_LEN; 
+00454 extern FLAC_API const unsigned FLAC__FRAME_HEADER_CRC_LEN; 
+00459 typedef struct {
+00460     FLAC__uint16 crc;
+00465 } FLAC__FrameFooter;
+00466 
+00467 extern FLAC_API const unsigned FLAC__FRAME_FOOTER_CRC_LEN; 
+00472 typedef struct {
+00473     FLAC__FrameHeader header;
+00474     FLAC__Subframe subframes[FLAC__MAX_CHANNELS];
+00475     FLAC__FrameFooter footer;
+00476 } FLAC__Frame;
+00477 
+00478 /*****************************************************************************/
+00479 
+00480 
+00481 /*****************************************************************************
+00482  *
+00483  * Meta-data structures
+00484  *
+00485  *****************************************************************************/
+00486 
+00488 typedef enum {
+00489 
+00490     FLAC__METADATA_TYPE_STREAMINFO = 0,
+00493     FLAC__METADATA_TYPE_PADDING = 1,
+00496     FLAC__METADATA_TYPE_APPLICATION = 2,
+00499     FLAC__METADATA_TYPE_SEEKTABLE = 3,
+00502     FLAC__METADATA_TYPE_VORBIS_COMMENT = 4,
+00505     FLAC__METADATA_TYPE_CUESHEET = 5,
+00508     FLAC__METADATA_TYPE_PICTURE = 6,
+00511     FLAC__METADATA_TYPE_UNDEFINED = 7
+00514 } FLAC__MetadataType;
+00515 
+00521 extern FLAC_API const char * const FLAC__MetadataTypeString[];
+00522 
+00523 
+00526 typedef struct {
+00527     unsigned min_blocksize, max_blocksize;
+00528     unsigned min_framesize, max_framesize;
+00529     unsigned sample_rate;
+00530     unsigned channels;
+00531     unsigned bits_per_sample;
+00532     FLAC__uint64 total_samples;
+00533     FLAC__byte md5sum[16];
+00534 } FLAC__StreamMetadata_StreamInfo;
+00535 
+00536 extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN; 
+00537 extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN; 
+00538 extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN; 
+00539 extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN; 
+00540 extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN; 
+00541 extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN; 
+00542 extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN; 
+00543 extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN; 
+00544 extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MD5SUM_LEN; 
+00547 #define FLAC__STREAM_METADATA_STREAMINFO_LENGTH (34u)
+00548 
+00551 typedef struct {
+00552     int dummy;
+00557 } FLAC__StreamMetadata_Padding;
+00558 
+00559 
+00562 typedef struct {
+00563     FLAC__byte id[4];
+00564     FLAC__byte *data;
+00565 } FLAC__StreamMetadata_Application;
+00566 
+00567 extern FLAC_API const unsigned FLAC__STREAM_METADATA_APPLICATION_ID_LEN; 
+00571 typedef struct {
+00572     FLAC__uint64 sample_number;
+00575     FLAC__uint64 stream_offset;
+00579     unsigned frame_samples;
+00581 } FLAC__StreamMetadata_SeekPoint;
+00582 
+00583 extern FLAC_API const unsigned FLAC__STREAM_METADATA_SEEKPOINT_SAMPLE_NUMBER_LEN; 
+00584 extern FLAC_API const unsigned FLAC__STREAM_METADATA_SEEKPOINT_STREAM_OFFSET_LEN; 
+00585 extern FLAC_API const unsigned FLAC__STREAM_METADATA_SEEKPOINT_FRAME_SAMPLES_LEN; 
+00588 #define FLAC__STREAM_METADATA_SEEKPOINT_LENGTH (18u)
+00589 
+00594 extern FLAC_API const FLAC__uint64 FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER;
+00595 
+00596 
+00609 typedef struct {
+00610     unsigned num_points;
+00611     FLAC__StreamMetadata_SeekPoint *points;
+00612 } FLAC__StreamMetadata_SeekTable;
+00613 
+00614 
+00621 typedef struct {
+00622     FLAC__uint32 length;
+00623     FLAC__byte *entry;
+00624 } FLAC__StreamMetadata_VorbisComment_Entry;
+00625 
+00626 extern FLAC_API const unsigned FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN; 
+00631 typedef struct {
+00632     FLAC__StreamMetadata_VorbisComment_Entry vendor_string;
+00633     FLAC__uint32 num_comments;
+00634     FLAC__StreamMetadata_VorbisComment_Entry *comments;
+00635 } FLAC__StreamMetadata_VorbisComment;
+00636 
+00637 extern FLAC_API const unsigned FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN; 
+00644 typedef struct {
+00645     FLAC__uint64 offset;
+00650     FLAC__byte number;
+00652 } FLAC__StreamMetadata_CueSheet_Index;
+00653 
+00654 extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN; 
+00655 extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN; 
+00656 extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN; 
+00663 typedef struct {
+00664     FLAC__uint64 offset;
+00667     FLAC__byte number;
+00670     char isrc[13];
+00673     unsigned type:1;
+00676     unsigned pre_emphasis:1;
+00679     FLAC__byte num_indices;
+00682     FLAC__StreamMetadata_CueSheet_Index *indices;
+00685 } FLAC__StreamMetadata_CueSheet_Track;
+00686 
+00687 extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN; 
+00688 extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN; 
+00689 extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN; 
+00690 extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN; 
+00691 extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN; 
+00692 extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN; 
+00693 extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN; 
+00700 typedef struct {
+00701     char media_catalog_number[129];
+00707     FLAC__uint64 lead_in;
+00710     FLAC__bool is_cd;
+00713     unsigned num_tracks;
+00716     FLAC__StreamMetadata_CueSheet_Track *tracks;
+00719 } FLAC__StreamMetadata_CueSheet;
+00720 
+00721 extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN; 
+00722 extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN; 
+00723 extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN; 
+00724 extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN; 
+00725 extern FLAC_API const unsigned FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN; 
+00729 typedef enum {
+00730     FLAC__STREAM_METADATA_PICTURE_TYPE_OTHER = 0, 
+00731     FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON_STANDARD = 1, 
+00732     FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON = 2, 
+00733     FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER = 3, 
+00734     FLAC__STREAM_METADATA_PICTURE_TYPE_BACK_COVER = 4, 
+00735     FLAC__STREAM_METADATA_PICTURE_TYPE_LEAFLET_PAGE = 5, 
+00736     FLAC__STREAM_METADATA_PICTURE_TYPE_MEDIA = 6, 
+00737     FLAC__STREAM_METADATA_PICTURE_TYPE_LEAD_ARTIST = 7, 
+00738     FLAC__STREAM_METADATA_PICTURE_TYPE_ARTIST = 8, 
+00739     FLAC__STREAM_METADATA_PICTURE_TYPE_CONDUCTOR = 9, 
+00740     FLAC__STREAM_METADATA_PICTURE_TYPE_BAND = 10, 
+00741     FLAC__STREAM_METADATA_PICTURE_TYPE_COMPOSER = 11, 
+00742     FLAC__STREAM_METADATA_PICTURE_TYPE_LYRICIST = 12, 
+00743     FLAC__STREAM_METADATA_PICTURE_TYPE_RECORDING_LOCATION = 13, 
+00744     FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_RECORDING = 14, 
+00745     FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_PERFORMANCE = 15, 
+00746     FLAC__STREAM_METADATA_PICTURE_TYPE_VIDEO_SCREEN_CAPTURE = 16, 
+00747     FLAC__STREAM_METADATA_PICTURE_TYPE_FISH = 17, 
+00748     FLAC__STREAM_METADATA_PICTURE_TYPE_ILLUSTRATION = 18, 
+00749     FLAC__STREAM_METADATA_PICTURE_TYPE_BAND_LOGOTYPE = 19, 
+00750     FLAC__STREAM_METADATA_PICTURE_TYPE_PUBLISHER_LOGOTYPE = 20, 
+00751     FLAC__STREAM_METADATA_PICTURE_TYPE_UNDEFINED
+00752 } FLAC__StreamMetadata_Picture_Type;
+00753 
+00760 extern FLAC_API const char * const FLAC__StreamMetadata_Picture_TypeString[];
+00761 
+00766 typedef struct {
+00767     FLAC__StreamMetadata_Picture_Type type;
+00770     char *mime_type;
+00781     FLAC__byte *description;
+00788     FLAC__uint32 width;
+00791     FLAC__uint32 height;
+00794     FLAC__uint32 depth;
+00797     FLAC__uint32 colors;
+00802     FLAC__uint32 data_length;
+00805     FLAC__byte *data;
+00808 } FLAC__StreamMetadata_Picture;
+00809 
+00810 extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_TYPE_LEN; 
+00811 extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN; 
+00812 extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN; 
+00813 extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN; 
+00814 extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN; 
+00815 extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN; 
+00816 extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_COLORS_LEN; 
+00817 extern FLAC_API const unsigned FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN; 
+00824 typedef struct {
+00825     FLAC__byte *data;
+00826 } FLAC__StreamMetadata_Unknown;
+00827 
+00828 
+00831 typedef struct {
+00832     FLAC__MetadataType type;
+00837     FLAC__bool is_last;
+00840     unsigned length;
+00843     union {
+00844         FLAC__StreamMetadata_StreamInfo stream_info;
+00845         FLAC__StreamMetadata_Padding padding;
+00846         FLAC__StreamMetadata_Application application;
+00847         FLAC__StreamMetadata_SeekTable seek_table;
+00848         FLAC__StreamMetadata_VorbisComment vorbis_comment;
+00849         FLAC__StreamMetadata_CueSheet cue_sheet;
+00850         FLAC__StreamMetadata_Picture picture;
+00851         FLAC__StreamMetadata_Unknown unknown;
+00852     } data;
+00855 } FLAC__StreamMetadata;
+00856 
+00857 extern FLAC_API const unsigned FLAC__STREAM_METADATA_IS_LAST_LEN; 
+00858 extern FLAC_API const unsigned FLAC__STREAM_METADATA_TYPE_LEN; 
+00859 extern FLAC_API const unsigned FLAC__STREAM_METADATA_LENGTH_LEN; 
+00862 #define FLAC__STREAM_METADATA_HEADER_LENGTH (4u)
+00863 
+00864 /*****************************************************************************/
+00865 
+00866 
+00867 /*****************************************************************************
+00868  *
+00869  * Utility functions
+00870  *
+00871  *****************************************************************************/
+00872 
+00880 FLAC_API FLAC__bool FLAC__format_sample_rate_is_valid(unsigned sample_rate);
+00881 
+00891 FLAC_API FLAC__bool FLAC__format_sample_rate_is_subset(unsigned sample_rate);
+00892 
+00905 FLAC_API FLAC__bool FLAC__format_vorbiscomment_entry_name_is_legal(const char *name);
+00906 
+00921 FLAC_API FLAC__bool FLAC__format_vorbiscomment_entry_value_is_legal(const FLAC__byte *value, unsigned length);
+00922 
+00938 FLAC_API FLAC__bool FLAC__format_vorbiscomment_entry_is_legal(const FLAC__byte *entry, unsigned length);
+00939 
+00950 FLAC_API FLAC__bool FLAC__format_seektable_is_legal(const FLAC__StreamMetadata_SeekTable *seek_table);
+00951 
+00964 FLAC_API unsigned FLAC__format_seektable_sort(FLAC__StreamMetadata_SeekTable *seek_table);
+00965 
+00984 FLAC_API FLAC__bool FLAC__format_cuesheet_is_legal(const FLAC__StreamMetadata_CueSheet *cue_sheet, FLAC__bool check_cd_da_subset, const char **violation);
+00985 
+01002 FLAC_API FLAC__bool FLAC__format_picture_is_legal(const FLAC__StreamMetadata_Picture *picture, const char **violation);
+01003 
+01004 /* \} */
+01005 
+01006 #ifdef __cplusplus
+01007 }
+01008 #endif
+01009 
+01010 #endif
+
+
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/format_8h.html b/3rdparty/libflac/doc/html/api/format_8h.html new file mode 100644 index 0000000..de6f818 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/format_8h.html @@ -0,0 +1,330 @@ + + +FLAC: include/FLAC/format.h File Reference + + + + + +

format.h File Reference


Detailed Description

+This module contains structure definitions for the representation of FLAC format components in memory. These are the basic structures used by the rest of the interfaces. +

+See the detailed documentation in the format module. +

+#include "export.h"
+#include "ordinals.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define FLAC__MAX_METADATA_TYPE_CODE   (126u)
#define FLAC__MIN_BLOCK_SIZE   (16u)
#define FLAC__MAX_BLOCK_SIZE   (65535u)
#define FLAC__SUBSET_MAX_BLOCK_SIZE_48000HZ   (4608u)
#define FLAC__MAX_CHANNELS   (8u)
#define FLAC__MIN_BITS_PER_SAMPLE   (4u)
#define FLAC__MAX_BITS_PER_SAMPLE   (32u)
#define FLAC__REFERENCE_CODEC_MAX_BITS_PER_SAMPLE   (24u)
#define FLAC__MAX_SAMPLE_RATE   (655350u)
#define FLAC__MAX_LPC_ORDER   (32u)
#define FLAC__SUBSET_MAX_LPC_ORDER_48000HZ   (12u)
#define FLAC__MIN_QLP_COEFF_PRECISION   (5u)
#define FLAC__MAX_QLP_COEFF_PRECISION   (15u)
#define FLAC__MAX_FIXED_ORDER   (4u)
#define FLAC__MAX_RICE_PARTITION_ORDER   (15u)
#define FLAC__SUBSET_MAX_RICE_PARTITION_ORDER   (8u)
#define FLAC__STREAM_SYNC_LENGTH   (4u)
#define FLAC__STREAM_METADATA_STREAMINFO_LENGTH   (34u)
#define FLAC__STREAM_METADATA_SEEKPOINT_LENGTH   (18u)
#define FLAC__STREAM_METADATA_HEADER_LENGTH   (4u)

Enumerations

enum  FLAC__EntropyCodingMethodType { FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE = 0, +FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2 = 1 + }
enum  FLAC__SubframeType { FLAC__SUBFRAME_TYPE_CONSTANT = 0, +FLAC__SUBFRAME_TYPE_VERBATIM = 1, +FLAC__SUBFRAME_TYPE_FIXED = 2, +FLAC__SUBFRAME_TYPE_LPC = 3 + }
enum  FLAC__ChannelAssignment { FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT = 0, +FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE = 1, +FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE = 2, +FLAC__CHANNEL_ASSIGNMENT_MID_SIDE = 3 + }
enum  FLAC__FrameNumberType { FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER, +FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER + }
enum  FLAC__MetadataType {
+  FLAC__METADATA_TYPE_STREAMINFO = 0, +FLAC__METADATA_TYPE_PADDING = 1, +FLAC__METADATA_TYPE_APPLICATION = 2, +FLAC__METADATA_TYPE_SEEKTABLE = 3, +
+  FLAC__METADATA_TYPE_VORBIS_COMMENT = 4, +FLAC__METADATA_TYPE_CUESHEET = 5, +FLAC__METADATA_TYPE_PICTURE = 6, +FLAC__METADATA_TYPE_UNDEFINED = 7 +
+ }
enum  FLAC__StreamMetadata_Picture_Type {
+  FLAC__STREAM_METADATA_PICTURE_TYPE_OTHER = 0, +FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON_STANDARD = 1, +FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON = 2, +FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER = 3, +
+  FLAC__STREAM_METADATA_PICTURE_TYPE_BACK_COVER = 4, +FLAC__STREAM_METADATA_PICTURE_TYPE_LEAFLET_PAGE = 5, +FLAC__STREAM_METADATA_PICTURE_TYPE_MEDIA = 6, +FLAC__STREAM_METADATA_PICTURE_TYPE_LEAD_ARTIST = 7, +
+  FLAC__STREAM_METADATA_PICTURE_TYPE_ARTIST = 8, +FLAC__STREAM_METADATA_PICTURE_TYPE_CONDUCTOR = 9, +FLAC__STREAM_METADATA_PICTURE_TYPE_BAND = 10, +FLAC__STREAM_METADATA_PICTURE_TYPE_COMPOSER = 11, +
+  FLAC__STREAM_METADATA_PICTURE_TYPE_LYRICIST = 12, +FLAC__STREAM_METADATA_PICTURE_TYPE_RECORDING_LOCATION = 13, +FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_RECORDING = 14, +FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_PERFORMANCE = 15, +
+  FLAC__STREAM_METADATA_PICTURE_TYPE_VIDEO_SCREEN_CAPTURE = 16, +FLAC__STREAM_METADATA_PICTURE_TYPE_FISH = 17, +FLAC__STREAM_METADATA_PICTURE_TYPE_ILLUSTRATION = 18, +FLAC__STREAM_METADATA_PICTURE_TYPE_BAND_LOGOTYPE = 19, +
+  FLAC__STREAM_METADATA_PICTURE_TYPE_PUBLISHER_LOGOTYPE = 20, +FLAC__STREAM_METADATA_PICTURE_TYPE_UNDEFINED +
+ }

Functions

FLAC__bool FLAC__format_sample_rate_is_valid (unsigned sample_rate)
FLAC__bool FLAC__format_sample_rate_is_subset (unsigned sample_rate)
FLAC__bool FLAC__format_vorbiscomment_entry_name_is_legal (const char *name)
FLAC__bool FLAC__format_vorbiscomment_entry_value_is_legal (const FLAC__byte *value, unsigned length)
FLAC__bool FLAC__format_vorbiscomment_entry_is_legal (const FLAC__byte *entry, unsigned length)
FLAC__bool FLAC__format_seektable_is_legal (const FLAC__StreamMetadata_SeekTable *seek_table)
unsigned FLAC__format_seektable_sort (FLAC__StreamMetadata_SeekTable *seek_table)
FLAC__bool FLAC__format_cuesheet_is_legal (const FLAC__StreamMetadata_CueSheet *cue_sheet, FLAC__bool check_cd_da_subset, const char **violation)
FLAC__bool FLAC__format_picture_is_legal (const FLAC__StreamMetadata_Picture *picture, const char **violation)

Variables

const char * FLAC__VERSION_STRING
const char * FLAC__VENDOR_STRING
const FLAC__byte FLAC__STREAM_SYNC_STRING [4]
const unsigned FLAC__STREAM_SYNC
const unsigned FLAC__STREAM_SYNC_LEN
const char *const FLAC__EntropyCodingMethodTypeString []
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_ESCAPE_PARAMETER
const unsigned FLAC__ENTROPY_CODING_METHOD_TYPE_LEN
const char *const FLAC__SubframeTypeString []
const unsigned FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN
const unsigned FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN
const unsigned FLAC__SUBFRAME_ZERO_PAD_LEN
const unsigned FLAC__SUBFRAME_TYPE_LEN
const unsigned FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN
const unsigned FLAC__SUBFRAME_TYPE_CONSTANT_BYTE_ALIGNED_MASK
const unsigned FLAC__SUBFRAME_TYPE_VERBATIM_BYTE_ALIGNED_MASK
const unsigned FLAC__SUBFRAME_TYPE_FIXED_BYTE_ALIGNED_MASK
const unsigned FLAC__SUBFRAME_TYPE_LPC_BYTE_ALIGNED_MASK
const char *const FLAC__ChannelAssignmentString []
const char *const FLAC__FrameNumberTypeString []
const unsigned FLAC__FRAME_HEADER_SYNC
const unsigned FLAC__FRAME_HEADER_SYNC_LEN
const unsigned FLAC__FRAME_HEADER_RESERVED_LEN
const unsigned FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN
const unsigned FLAC__FRAME_HEADER_BLOCK_SIZE_LEN
const unsigned FLAC__FRAME_HEADER_SAMPLE_RATE_LEN
const unsigned FLAC__FRAME_HEADER_CHANNEL_ASSIGNMENT_LEN
const unsigned FLAC__FRAME_HEADER_BITS_PER_SAMPLE_LEN
const unsigned FLAC__FRAME_HEADER_ZERO_PAD_LEN
const unsigned FLAC__FRAME_HEADER_CRC_LEN
const unsigned FLAC__FRAME_FOOTER_CRC_LEN
const char *const FLAC__MetadataTypeString []
const unsigned FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN
const unsigned FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN
const unsigned FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN
const unsigned FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN
const unsigned FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN
const unsigned FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN
const unsigned FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN
const unsigned FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN
const unsigned FLAC__STREAM_METADATA_STREAMINFO_MD5SUM_LEN
const unsigned FLAC__STREAM_METADATA_APPLICATION_ID_LEN
const unsigned FLAC__STREAM_METADATA_SEEKPOINT_SAMPLE_NUMBER_LEN
const unsigned FLAC__STREAM_METADATA_SEEKPOINT_STREAM_OFFSET_LEN
const unsigned FLAC__STREAM_METADATA_SEEKPOINT_FRAME_SAMPLES_LEN
const FLAC__uint64 FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER
const unsigned FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN
const unsigned FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN
const char *const FLAC__StreamMetadata_Picture_TypeString []
const unsigned FLAC__STREAM_METADATA_PICTURE_TYPE_LEN
const unsigned FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN
const unsigned FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN
const unsigned FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN
const unsigned FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN
const unsigned FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN
const unsigned FLAC__STREAM_METADATA_PICTURE_COLORS_LEN
const unsigned FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN
const unsigned FLAC__STREAM_METADATA_IS_LAST_LEN
const unsigned FLAC__STREAM_METADATA_TYPE_LEN
const unsigned FLAC__STREAM_METADATA_LENGTH_LEN
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/functions.html b/3rdparty/libflac/doc/html/api/functions.html new file mode 100644 index 0000000..cb836c7 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/functions.html @@ -0,0 +1,260 @@ + + +FLAC: Class Members + + + + + +
a | b | c | d | e | f | g | h | i | l | m | n | o | p | q | r | s | t | u | v | w | ~
+ +

+Here is a list of all documented class members with links to the class documentation for each member: +

+

- a -

+

- b -

+

- c -

+

- d -

+

- e -

+

- f -

+

- g -

+

- h -

+

- i -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- q -

+

- r -

+

- s -

+

- t -

+

- u -

+

- v -

+

- w -

+

- ~ -

+ +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/functions_func.html b/3rdparty/libflac/doc/html/api/functions_func.html new file mode 100644 index 0000000..be8af99 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/functions_func.html @@ -0,0 +1,210 @@ + + +FLAC: Class Members - Functions + + + + + +
a | c | d | e | f | g | i | l | m | n | o | p | r | s | t | u | v | w | ~
+ +

+ +

+

- a -

+

- c -

+

- d -

+

- e -

+

- f -

+

- g -

+

- i -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+

- u -

+

- v -

+

- w -

+

- ~ -

+ +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/functions_vars.html b/3rdparty/libflac/doc/html/api/functions_vars.html new file mode 100644 index 0000000..3cffbe1 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/functions_vars.html @@ -0,0 +1,117 @@ + + +FLAC: Class Members - Variables + + + + + +
b | c | d | e | f | h | i | l | m | n | o | p | q | r | s | t | v | w
+ +

+ +

+

- b -

+

- c -

+

- d -

+

- e -

+

- f -

+

- h -

+

- i -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- q -

+

- r -

+

- s -

+

- t -

+

- v -

+

- w -

+ +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/globals.html b/3rdparty/libflac/doc/html/api/globals.html new file mode 100644 index 0000000..7f7618b --- /dev/null +++ b/3rdparty/libflac/doc/html/api/globals.html @@ -0,0 +1,39 @@ + + +FLAC: Class Members + + + + + +
c | f | g
+ +

+Here is a list of all documented file members with links to the documentation: +

+

- c -

+ +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/globals_0x66.html b/3rdparty/libflac/doc/html/api/globals_0x66.html new file mode 100644 index 0000000..41eb2a2 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/globals_0x66.html @@ -0,0 +1,529 @@ + + +FLAC: Class Members + + + + + +
c | f | g
+ +

+Here is a list of all documented file members with links to the documentation: +

+

- f -

+ +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/globals_0x67.html b/3rdparty/libflac/doc/html/api/globals_0x67.html new file mode 100644 index 0000000..adb814e --- /dev/null +++ b/3rdparty/libflac/doc/html/api/globals_0x67.html @@ -0,0 +1,42 @@ + + +FLAC: Class Members + + + + + +
c | f | g
+ +

+Here is a list of all documented file members with links to the documentation: +

+

- g -

+ +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/globals_defs.html b/3rdparty/libflac/doc/html/api/globals_defs.html new file mode 100644 index 0000000..e91b4b2 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/globals_defs.html @@ -0,0 +1,58 @@ + + +FLAC: Class Members + + + + + + +

+

+ +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/globals_enum.html b/3rdparty/libflac/doc/html/api/globals_enum.html new file mode 100644 index 0000000..06514cf --- /dev/null +++ b/3rdparty/libflac/doc/html/api/globals_enum.html @@ -0,0 +1,57 @@ + + +FLAC: Class Members + + + + + + +

+

+ +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/globals_eval.html b/3rdparty/libflac/doc/html/api/globals_eval.html new file mode 100644 index 0000000..403ccf4 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/globals_eval.html @@ -0,0 +1,177 @@ + + +FLAC: Class Members + + + + + + + +

+ +

+

- f -

+ +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/globals_func.html b/3rdparty/libflac/doc/html/api/globals_func.html new file mode 100644 index 0000000..1519792 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/globals_func.html @@ -0,0 +1,233 @@ + + +FLAC: Class Members + + + + + +
c | f | g
+ +

+ +

+

- c -

+

- f -

+

- g -

+ +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/globals_type.html b/3rdparty/libflac/doc/html/api/globals_type.html new file mode 100644 index 0000000..df3aac9 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/globals_type.html @@ -0,0 +1,59 @@ + + +FLAC: Class Members + + + + + + +

+

+ +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/globals_vars.html b/3rdparty/libflac/doc/html/api/globals_vars.html new file mode 100644 index 0000000..d9ec289 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/globals_vars.html @@ -0,0 +1,135 @@ + + +FLAC: Class Members + + + + + + + +

+ +

+

- f -

    +
  • FLAC__ChannelAssignmentString +: format.h
  • FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_ESCAPE_PARAMETER +: format.h
  • FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN +: format.h
  • FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER +: format.h
  • FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN +: format.h
  • FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN +: format.h
  • FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN +: format.h
  • FLAC__ENTROPY_CODING_METHOD_TYPE_LEN +: format.h
  • FLAC__EntropyCodingMethodTypeString +: format.h
  • FLAC__FRAME_FOOTER_CRC_LEN +: format.h
  • FLAC__FRAME_HEADER_BITS_PER_SAMPLE_LEN +: format.h
  • FLAC__FRAME_HEADER_BLOCK_SIZE_LEN +: format.h
  • FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN +: format.h
  • FLAC__FRAME_HEADER_CHANNEL_ASSIGNMENT_LEN +: format.h
  • FLAC__FRAME_HEADER_CRC_LEN +: format.h
  • FLAC__FRAME_HEADER_RESERVED_LEN +: format.h
  • FLAC__FRAME_HEADER_SAMPLE_RATE_LEN +: format.h
  • FLAC__FRAME_HEADER_SYNC +: format.h
  • FLAC__FRAME_HEADER_SYNC_LEN +: format.h
  • FLAC__FRAME_HEADER_ZERO_PAD_LEN +: format.h
  • FLAC__FrameNumberTypeString +: format.h
  • FLAC__Metadata_ChainStatusString +: metadata.h
  • FLAC__Metadata_SimpleIteratorStatusString +: metadata.h
  • FLAC__MetadataTypeString +: format.h
  • FLAC__STREAM_METADATA_APPLICATION_ID_LEN +: format.h
  • FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN +: format.h
  • FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN +: format.h
  • FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN +: format.h
  • FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN +: format.h
  • FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN +: format.h
  • FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN +: format.h
  • FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN +: format.h
  • FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN +: format.h
  • FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN +: format.h
  • FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN +: format.h
  • FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN +: format.h
  • FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN +: format.h
  • FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN +: format.h
  • FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN +: format.h
  • FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN +: format.h
  • FLAC__STREAM_METADATA_IS_LAST_LEN +: format.h
  • FLAC__STREAM_METADATA_LENGTH_LEN +: format.h
  • FLAC__STREAM_METADATA_PICTURE_COLORS_LEN +: format.h
  • FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN +: format.h
  • FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN +: format.h
  • FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN +: format.h
  • FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN +: format.h
  • FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN +: format.h
  • FLAC__STREAM_METADATA_PICTURE_TYPE_LEN +: format.h
  • FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN +: format.h
  • FLAC__STREAM_METADATA_SEEKPOINT_FRAME_SAMPLES_LEN +: format.h
  • FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER +: format.h
  • FLAC__STREAM_METADATA_SEEKPOINT_SAMPLE_NUMBER_LEN +: format.h
  • FLAC__STREAM_METADATA_SEEKPOINT_STREAM_OFFSET_LEN +: format.h
  • FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN +: format.h
  • FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN +: format.h
  • FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN +: format.h
  • FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN +: format.h
  • FLAC__STREAM_METADATA_STREAMINFO_MD5SUM_LEN +: format.h
  • FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN +: format.h
  • FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN +: format.h
  • FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN +: format.h
  • FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN +: format.h
  • FLAC__STREAM_METADATA_TYPE_LEN +: format.h
  • FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN +: format.h
  • FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN +: format.h
  • FLAC__STREAM_SYNC +: format.h
  • FLAC__STREAM_SYNC_LEN +: format.h
  • FLAC__STREAM_SYNC_STRING +: format.h
  • FLAC__StreamDecoderErrorStatusString +: stream_decoder.h
  • FLAC__StreamDecoderInitStatusString +: stream_decoder.h
  • FLAC__StreamDecoderLengthStatusString +: stream_decoder.h
  • FLAC__StreamDecoderReadStatusString +: stream_decoder.h
  • FLAC__StreamDecoderSeekStatusString +: stream_decoder.h
  • FLAC__StreamDecoderStateString +: stream_decoder.h
  • FLAC__StreamDecoderTellStatusString +: stream_decoder.h
  • FLAC__StreamDecoderWriteStatusString +: stream_decoder.h
  • FLAC__StreamEncoderInitStatusString +: stream_encoder.h
  • FLAC__StreamEncoderReadStatusString +: stream_encoder.h
  • FLAC__StreamEncoderSeekStatusString +: stream_encoder.h
  • FLAC__StreamEncoderStateString +: stream_encoder.h
  • FLAC__StreamEncoderTellStatusString +: stream_encoder.h
  • FLAC__StreamEncoderWriteStatusString +: stream_encoder.h
  • FLAC__StreamMetadata_Picture_TypeString +: format.h
  • FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN +: format.h
  • FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN +: format.h
  • FLAC__SUBFRAME_TYPE_CONSTANT_BYTE_ALIGNED_MASK +: format.h
  • FLAC__SUBFRAME_TYPE_FIXED_BYTE_ALIGNED_MASK +: format.h
  • FLAC__SUBFRAME_TYPE_LEN +: format.h
  • FLAC__SUBFRAME_TYPE_LPC_BYTE_ALIGNED_MASK +: format.h
  • FLAC__SUBFRAME_TYPE_VERBATIM_BYTE_ALIGNED_MASK +: format.h
  • FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN +: format.h
  • FLAC__SUBFRAME_ZERO_PAD_LEN +: format.h
  • FLAC__SubframeTypeString +: format.h
  • FLAC__VENDOR_STRING +: format.h
  • FLAC__VERSION_STRING +: format.h
  • FLAC_API_SUPPORTS_OGG_FLAC +: export.h
+ +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flac.html b/3rdparty/libflac/doc/html/api/group__flac.html new file mode 100644 index 0000000..b09a069 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flac.html @@ -0,0 +1,50 @@ + + +FLAC: FLAC C API + + + + +

FLAC C API


Detailed Description

+The FLAC C API is the interface to libFLAC, a set of structures describing the components of FLAC streams, and functions for encoding and decoding streams, as well as manipulating FLAC metadata in files.

+You should start with the format components as all other modules are dependent on it. +

+ + + + + + + + + + + + + + + +

Modules

 FLAC/callback.h: I/O callback structures
 FLAC/export.h: export symbols
 FLAC/format.h: format components
 FLAC/metadata.h: metadata interfaces
 FLAC/_decoder.h: decoder interfaces
 FLAC/_encoder.h: encoder interfaces
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flac__callbacks.html b/3rdparty/libflac/doc/html/api/group__flac__callbacks.html new file mode 100644 index 0000000..e5355f4 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flac__callbacks.html @@ -0,0 +1,299 @@ + + +FLAC: FLAC/callback.h: I/O callback structures + + + + +

FLAC/callback.h: I/O callback structures
+ +[FLAC C API] +


Detailed Description

+This module defines the structures for describing I/O callbacks to the other FLAC interfaces. +

+The purpose of the I/O callback functions is to create a common way for the metadata interfaces to handle I/O.

+Originally the metadata interfaces required filenames as the way of specifying FLAC files to operate on. This is problematic in some environments so there is an additional option to specify a set of callbacks for doing I/O on the FLAC file, instead of the filename.

+In addition to the callbacks, a FLAC__IOHandle type is defined as an opaque structure for a data source.

+The callback function prototypes are similar (but not identical) to the stdio functions fread, fwrite, fseek, ftell, feof, and fclose. If you use stdio streams to implement the callbacks, you can pass fread, fwrite, and fclose anywhere a FLAC__IOCallback_Read, FLAC__IOCallback_Write, or FLAC__IOCallback_Close is required, and a FILE* anywhere a FLAC__IOHandle is required.

Warning:
You generally CANNOT directly use fseek or ftell for FLAC__IOCallback_Seek or FLAC__IOCallback_Tell since on most systems these use 32-bit offsets and FLAC requires 64-bit offsets to deal with large files. You will have to find an equivalent function (e.g. ftello), or write a wrapper. The same is true for feof() since this is usually implemented as a macro, not as a function whose address can be taken.
+ +

+ + + + + + + + + + + + + + + + + + + + +

Classes

struct  FLAC__IOCallbacks

Typedefs

typedef void * FLAC__IOHandle
typedef size_t(* FLAC__IOCallback_Read )(void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle)
typedef size_t(* FLAC__IOCallback_Write )(const void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle)
typedef int(* FLAC__IOCallback_Seek )(FLAC__IOHandle handle, FLAC__int64 offset, int whence)
typedef FLAC__int64(* FLAC__IOCallback_Tell )(FLAC__IOHandle handle)
typedef int(* FLAC__IOCallback_Eof )(FLAC__IOHandle handle)
typedef int(* FLAC__IOCallback_Close )(FLAC__IOHandle handle)
+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef void* FLAC__IOHandle
+
+ + + + + +
+   + + +

+This is the opaque handle type used by the callbacks. Typically this is a FILE* or address of a file descriptor.

+

+ + + + +
+ + + + +
typedef size_t(* FLAC__IOCallback_Read)(void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle)
+
+ + + + + +
+   + + +

+Signature for the read callback. The signature and semantics match POSIX fread() implementations and can generally be used interchangeably.

+

Parameters:
+ + + + + +
ptr The address of the read buffer.
size The size of the records to be read.
nmemb The number of records to be read.
handle The handle to the data source.
+
+
Return values:
+ + +
size_t The number of records read.
+
+
+

+ + + + +
+ + + + +
typedef size_t(* FLAC__IOCallback_Write)(const void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle)
+
+ + + + + +
+   + + +

+Signature for the write callback. The signature and semantics match POSIX fwrite() implementations and can generally be used interchangeably.

+

Parameters:
+ + + + + +
ptr The address of the write buffer.
size The size of the records to be written.
nmemb The number of records to be written.
handle The handle to the data source.
+
+
Return values:
+ + +
size_t The number of records written.
+
+
+

+ + + + +
+ + + + +
typedef int(* FLAC__IOCallback_Seek)(FLAC__IOHandle handle, FLAC__int64 offset, int whence)
+
+ + + + + +
+   + + +

+Signature for the seek callback. The signature and semantics mostly match POSIX fseek() WITH ONE IMPORTANT EXCEPTION: the offset is a 64-bit type whereas fseek() is generally 'long' and 32-bits wide.

+

Parameters:
+ + + + +
handle The handle to the data source.
offset The new position, relative to whence
whence SEEK_SET, SEEK_CUR, or SEEK_END
+
+
Return values:
+ + +
int 0 on success, -1 on error.
+
+
+

+ + + + +
+ + + + +
typedef FLAC__int64(* FLAC__IOCallback_Tell)(FLAC__IOHandle handle)
+
+ + + + + +
+   + + +

+Signature for the tell callback. The signature and semantics mostly match POSIX ftell() WITH ONE IMPORTANT EXCEPTION: the offset is a 64-bit type whereas ftell() is generally 'long' and 32-bits wide.

+

Parameters:
+ + +
handle The handle to the data source.
+
+
Return values:
+ + +
FLAC__int64 The current position on success, -1 on error.
+
+
+

+ + + + +
+ + + + +
typedef int(* FLAC__IOCallback_Eof)(FLAC__IOHandle handle)
+
+ + + + + +
+   + + +

+Signature for the EOF callback. The signature and semantics mostly match POSIX feof() but WATCHOUT: on many systems, feof() is a macro, so in this case a wrapper function must be provided instead.

+

Parameters:
+ + +
handle The handle to the data source.
+
+
Return values:
+ + +
int 0 if not at end of file, nonzero if at end of file.
+
+
+

+ + + + +
+ + + + +
typedef int(* FLAC__IOCallback_Close)(FLAC__IOHandle handle)
+
+ + + + + +
+   + + +

+Signature for the close callback. The signature and semantics match POSIX fclose() implementations and can generally be used interchangeably.

+

Parameters:
+ + +
handle The handle to the data source.
+
+
Return values:
+ + +
int 0 on success, EOF on error.
+
+
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flac__decoder.html b/3rdparty/libflac/doc/html/api/group__flac__decoder.html new file mode 100644 index 0000000..0b93cec --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flac__decoder.html @@ -0,0 +1,44 @@ + + +FLAC: FLAC/_decoder.h: decoder interfaces + + + + +

FLAC/_decoder.h: decoder interfaces
+ +[FLAC C API] +


Detailed Description

+This module describes the decoder layers provided by libFLAC. +

+The stream decoder can be used to decode complete streams either from the client via callbacks, or directly from a file, depending on how it is initialized. When decoding via callbacks, the client provides callbacks for reading FLAC data and writing decoded samples, and handling metadata and errors. If the client also supplies seek-related callback, the decoder function for sample-accurate seeking within the FLAC input is also available. When decoding from a file, the client needs only supply a filename or open FILE* and write/metadata/error callbacks; the rest of the callbacks are supplied internally. For more info see the stream decoder module. +

+ + + + + +

Modules

 FLAC/stream_decoder.h: stream decoder interface
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flac__encoder.html b/3rdparty/libflac/doc/html/api/group__flac__encoder.html new file mode 100644 index 0000000..5e813f3 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flac__encoder.html @@ -0,0 +1,44 @@ + + +FLAC: FLAC/_encoder.h: encoder interfaces + + + + +

FLAC/_encoder.h: encoder interfaces
+ +[FLAC C API] +


Detailed Description

+This module describes the encoder layers provided by libFLAC. +

+The stream encoder can be used to encode complete streams either to the client via callbacks, or directly to a file, depending on how it is initialized. When encoding via callbacks, the client provides a write callback which will be called whenever FLAC data is ready to be written. If the client also supplies a seek callback, the encoder will also automatically handle the writing back of metadata discovered while encoding, like stream info, seek points offsets, etc. When encoding to a file, the client needs only supply a filename or open FILE* and an optional progress callback for periodic notification of progress; the write and seek callbacks are supplied internally. For more info see the stream encoder module. +

+ + + + + +

Modules

 FLAC/stream_encoder.h: stream encoder interface
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flac__export.html b/3rdparty/libflac/doc/html/api/group__flac__export.html new file mode 100644 index 0000000..248c862 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flac__export.html @@ -0,0 +1,148 @@ + + +FLAC: FLAC/export.h: export symbols + + + + +

FLAC/export.h: export symbols
+ +[FLAC C API] +


Detailed Description

+This module contains #defines and symbols for exporting function calls, and providing version information and compiled-in features. +

+If you are compiling with MSVC and will link to the static library (libFLAC.lib) you should define FLAC__NO_DLL in your project to make sure the symbols are exported properly. +

+ + + + + + + + + + + + + + +

Defines

+#define FLAC_API
#define FLAC_API_VERSION_CURRENT   10
#define FLAC_API_VERSION_REVISION   0
#define FLAC_API_VERSION_AGE   2

Variables

int FLAC_API_SUPPORTS_OGG_FLAC
+


Define Documentation

+

+ + + + +
+ + + + +
#define FLAC_API_VERSION_CURRENT   10
+
+ + + + + +
+   + + +

+These #defines will mirror the libtool-based library version number, see http://www.gnu.org/software/libtool/manual.html#Libtool-versioning

+

+ + + + +
+ + + + +
#define FLAC_API_VERSION_REVISION   0
+
+ + + + + +
+   + + +

+see above

+

+ + + + +
+ + + + +
#define FLAC_API_VERSION_AGE   2
+
+ + + + + +
+   + + +

+see above

+


Variable Documentation

+

+ + + + +
+ + + + +
int FLAC_API_SUPPORTS_OGG_FLAC
+
+ + + + + +
+   + + +

+1 if the library has been compiled with support for Ogg FLAC, else 0.

+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flac__format.html b/3rdparty/libflac/doc/html/api/group__flac__format.html new file mode 100644 index 0000000..4d85015 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flac__format.html @@ -0,0 +1,3353 @@ + + +FLAC: FLAC/format.h: format components + + + + +

FLAC/format.h: format components
+ +[FLAC C API] +


Detailed Description

+This module contains structure definitions for the representation of FLAC format components in memory. These are the basic structures used by the rest of the interfaces. +

+First, you should be familiar with the FLAC format. Many of the values here follow directly from the specification. As a user of libFLAC, the interesting parts really are the structures that describe the frame header and metadata blocks.

+The format structures here are very primitive, designed to store information in an efficient way. Reading information from the structures is easy but creating or modifying them directly is more complex. For the most part, as a user of a library, editing is not necessary; however, for metadata blocks it is, so there are convenience functions provided in the metadata module to simplify the manipulation of metadata blocks.

+

Note:
It's not the best convention, but symbols ending in _LEN are in bits and _LENGTH are in bytes. _LENGTH symbols are #defines instead of global variables because they are usually used when declaring byte arrays and some compilers require compile-time knowledge of array sizes when declared on the stack.
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

struct  FLAC__EntropyCodingMethod_PartitionedRiceContents
struct  FLAC__EntropyCodingMethod_PartitionedRice
struct  FLAC__EntropyCodingMethod
struct  FLAC__Subframe_Constant
struct  FLAC__Subframe_Verbatim
struct  FLAC__Subframe_Fixed
struct  FLAC__Subframe_LPC
struct  FLAC__Subframe
struct  FLAC__FrameHeader
struct  FLAC__FrameFooter
struct  FLAC__Frame
struct  FLAC__StreamMetadata_StreamInfo
struct  FLAC__StreamMetadata_Padding
struct  FLAC__StreamMetadata_Application
struct  FLAC__StreamMetadata_SeekPoint
struct  FLAC__StreamMetadata_SeekTable
struct  FLAC__StreamMetadata_VorbisComment_Entry
struct  FLAC__StreamMetadata_VorbisComment
struct  FLAC__StreamMetadata_CueSheet_Index
struct  FLAC__StreamMetadata_CueSheet_Track
struct  FLAC__StreamMetadata_CueSheet
struct  FLAC__StreamMetadata_Picture
struct  FLAC__StreamMetadata_Unknown
struct  FLAC__StreamMetadata

Defines

#define FLAC__MAX_METADATA_TYPE_CODE   (126u)
#define FLAC__MIN_BLOCK_SIZE   (16u)
#define FLAC__MAX_BLOCK_SIZE   (65535u)
#define FLAC__SUBSET_MAX_BLOCK_SIZE_48000HZ   (4608u)
#define FLAC__MAX_CHANNELS   (8u)
#define FLAC__MIN_BITS_PER_SAMPLE   (4u)
#define FLAC__MAX_BITS_PER_SAMPLE   (32u)
#define FLAC__REFERENCE_CODEC_MAX_BITS_PER_SAMPLE   (24u)
#define FLAC__MAX_SAMPLE_RATE   (655350u)
#define FLAC__MAX_LPC_ORDER   (32u)
#define FLAC__SUBSET_MAX_LPC_ORDER_48000HZ   (12u)
#define FLAC__MIN_QLP_COEFF_PRECISION   (5u)
#define FLAC__MAX_QLP_COEFF_PRECISION   (15u)
#define FLAC__MAX_FIXED_ORDER   (4u)
#define FLAC__MAX_RICE_PARTITION_ORDER   (15u)
#define FLAC__SUBSET_MAX_RICE_PARTITION_ORDER   (8u)
#define FLAC__STREAM_SYNC_LENGTH   (4u)
#define FLAC__STREAM_METADATA_STREAMINFO_LENGTH   (34u)
#define FLAC__STREAM_METADATA_SEEKPOINT_LENGTH   (18u)
#define FLAC__STREAM_METADATA_HEADER_LENGTH   (4u)

Enumerations

enum  FLAC__EntropyCodingMethodType { FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE = 0, +FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2 = 1 + }
enum  FLAC__SubframeType { FLAC__SUBFRAME_TYPE_CONSTANT = 0, +FLAC__SUBFRAME_TYPE_VERBATIM = 1, +FLAC__SUBFRAME_TYPE_FIXED = 2, +FLAC__SUBFRAME_TYPE_LPC = 3 + }
enum  FLAC__ChannelAssignment { FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT = 0, +FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE = 1, +FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE = 2, +FLAC__CHANNEL_ASSIGNMENT_MID_SIDE = 3 + }
enum  FLAC__FrameNumberType { FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER, +FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER + }
enum  FLAC__MetadataType {
+  FLAC__METADATA_TYPE_STREAMINFO = 0, +FLAC__METADATA_TYPE_PADDING = 1, +FLAC__METADATA_TYPE_APPLICATION = 2, +FLAC__METADATA_TYPE_SEEKTABLE = 3, +
+  FLAC__METADATA_TYPE_VORBIS_COMMENT = 4, +FLAC__METADATA_TYPE_CUESHEET = 5, +FLAC__METADATA_TYPE_PICTURE = 6, +FLAC__METADATA_TYPE_UNDEFINED = 7 +
+ }
enum  FLAC__StreamMetadata_Picture_Type {
+  FLAC__STREAM_METADATA_PICTURE_TYPE_OTHER = 0, +FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON_STANDARD = 1, +FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON = 2, +FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER = 3, +
+  FLAC__STREAM_METADATA_PICTURE_TYPE_BACK_COVER = 4, +FLAC__STREAM_METADATA_PICTURE_TYPE_LEAFLET_PAGE = 5, +FLAC__STREAM_METADATA_PICTURE_TYPE_MEDIA = 6, +FLAC__STREAM_METADATA_PICTURE_TYPE_LEAD_ARTIST = 7, +
+  FLAC__STREAM_METADATA_PICTURE_TYPE_ARTIST = 8, +FLAC__STREAM_METADATA_PICTURE_TYPE_CONDUCTOR = 9, +FLAC__STREAM_METADATA_PICTURE_TYPE_BAND = 10, +FLAC__STREAM_METADATA_PICTURE_TYPE_COMPOSER = 11, +
+  FLAC__STREAM_METADATA_PICTURE_TYPE_LYRICIST = 12, +FLAC__STREAM_METADATA_PICTURE_TYPE_RECORDING_LOCATION = 13, +FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_RECORDING = 14, +FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_PERFORMANCE = 15, +
+  FLAC__STREAM_METADATA_PICTURE_TYPE_VIDEO_SCREEN_CAPTURE = 16, +FLAC__STREAM_METADATA_PICTURE_TYPE_FISH = 17, +FLAC__STREAM_METADATA_PICTURE_TYPE_ILLUSTRATION = 18, +FLAC__STREAM_METADATA_PICTURE_TYPE_BAND_LOGOTYPE = 19, +
+  FLAC__STREAM_METADATA_PICTURE_TYPE_PUBLISHER_LOGOTYPE = 20, +FLAC__STREAM_METADATA_PICTURE_TYPE_UNDEFINED +
+ }

Functions

FLAC__bool FLAC__format_sample_rate_is_valid (unsigned sample_rate)
FLAC__bool FLAC__format_sample_rate_is_subset (unsigned sample_rate)
FLAC__bool FLAC__format_vorbiscomment_entry_name_is_legal (const char *name)
FLAC__bool FLAC__format_vorbiscomment_entry_value_is_legal (const FLAC__byte *value, unsigned length)
FLAC__bool FLAC__format_vorbiscomment_entry_is_legal (const FLAC__byte *entry, unsigned length)
FLAC__bool FLAC__format_seektable_is_legal (const FLAC__StreamMetadata_SeekTable *seek_table)
unsigned FLAC__format_seektable_sort (FLAC__StreamMetadata_SeekTable *seek_table)
FLAC__bool FLAC__format_cuesheet_is_legal (const FLAC__StreamMetadata_CueSheet *cue_sheet, FLAC__bool check_cd_da_subset, const char **violation)
FLAC__bool FLAC__format_picture_is_legal (const FLAC__StreamMetadata_Picture *picture, const char **violation)

Variables

const char * FLAC__VERSION_STRING
const char * FLAC__VENDOR_STRING
const FLAC__byte FLAC__STREAM_SYNC_STRING [4]
const unsigned FLAC__STREAM_SYNC
const unsigned FLAC__STREAM_SYNC_LEN
const char *const FLAC__EntropyCodingMethodTypeString []
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_ESCAPE_PARAMETER
const unsigned FLAC__ENTROPY_CODING_METHOD_TYPE_LEN
const char *const FLAC__SubframeTypeString []
const unsigned FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN
const unsigned FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN
const unsigned FLAC__SUBFRAME_ZERO_PAD_LEN
const unsigned FLAC__SUBFRAME_TYPE_LEN
const unsigned FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN
const unsigned FLAC__SUBFRAME_TYPE_CONSTANT_BYTE_ALIGNED_MASK
const unsigned FLAC__SUBFRAME_TYPE_VERBATIM_BYTE_ALIGNED_MASK
const unsigned FLAC__SUBFRAME_TYPE_FIXED_BYTE_ALIGNED_MASK
const unsigned FLAC__SUBFRAME_TYPE_LPC_BYTE_ALIGNED_MASK
const char *const FLAC__ChannelAssignmentString []
const char *const FLAC__FrameNumberTypeString []
const unsigned FLAC__FRAME_HEADER_SYNC
const unsigned FLAC__FRAME_HEADER_SYNC_LEN
const unsigned FLAC__FRAME_HEADER_RESERVED_LEN
const unsigned FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN
const unsigned FLAC__FRAME_HEADER_BLOCK_SIZE_LEN
const unsigned FLAC__FRAME_HEADER_SAMPLE_RATE_LEN
const unsigned FLAC__FRAME_HEADER_CHANNEL_ASSIGNMENT_LEN
const unsigned FLAC__FRAME_HEADER_BITS_PER_SAMPLE_LEN
const unsigned FLAC__FRAME_HEADER_ZERO_PAD_LEN
const unsigned FLAC__FRAME_HEADER_CRC_LEN
const unsigned FLAC__FRAME_FOOTER_CRC_LEN
const char *const FLAC__MetadataTypeString []
const unsigned FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN
const unsigned FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN
const unsigned FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN
const unsigned FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN
const unsigned FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN
const unsigned FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN
const unsigned FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN
const unsigned FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN
const unsigned FLAC__STREAM_METADATA_STREAMINFO_MD5SUM_LEN
const unsigned FLAC__STREAM_METADATA_APPLICATION_ID_LEN
const unsigned FLAC__STREAM_METADATA_SEEKPOINT_SAMPLE_NUMBER_LEN
const unsigned FLAC__STREAM_METADATA_SEEKPOINT_STREAM_OFFSET_LEN
const unsigned FLAC__STREAM_METADATA_SEEKPOINT_FRAME_SAMPLES_LEN
const FLAC__uint64 FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER
const unsigned FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN
const unsigned FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN
const unsigned FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN
const char *const FLAC__StreamMetadata_Picture_TypeString []
const unsigned FLAC__STREAM_METADATA_PICTURE_TYPE_LEN
const unsigned FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN
const unsigned FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN
const unsigned FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN
const unsigned FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN
const unsigned FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN
const unsigned FLAC__STREAM_METADATA_PICTURE_COLORS_LEN
const unsigned FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN
const unsigned FLAC__STREAM_METADATA_IS_LAST_LEN
const unsigned FLAC__STREAM_METADATA_TYPE_LEN
const unsigned FLAC__STREAM_METADATA_LENGTH_LEN
+


Define Documentation

+

+ + + + +
+ + + + +
#define FLAC__MAX_METADATA_TYPE_CODE   (126u)
+
+ + + + + +
+   + + +

+The largest legal metadata type code.

+

+ + + + +
+ + + + +
#define FLAC__MIN_BLOCK_SIZE   (16u)
+
+ + + + + +
+   + + +

+The minimum block size, in samples, permitted by the format.

+

+ + + + +
+ + + + +
#define FLAC__MAX_BLOCK_SIZE   (65535u)
+
+ + + + + +
+   + + +

+The maximum block size, in samples, permitted by the format.

+

+ + + + +
+ + + + +
#define FLAC__SUBSET_MAX_BLOCK_SIZE_48000HZ   (4608u)
+
+ + + + + +
+   + + +

+The maximum block size, in samples, permitted by the FLAC subset for sample rates up to 48kHz.

+

+ + + + +
+ + + + +
#define FLAC__MAX_CHANNELS   (8u)
+
+ + + + + +
+   + + +

+The maximum number of channels permitted by the format.

+

+ + + + +
+ + + + +
#define FLAC__MIN_BITS_PER_SAMPLE   (4u)
+
+ + + + + +
+   + + +

+The minimum sample resolution permitted by the format.

+

+ + + + +
+ + + + +
#define FLAC__MAX_BITS_PER_SAMPLE   (32u)
+
+ + + + + +
+   + + +

+The maximum sample resolution permitted by the format.

+

+ + + + +
+ + + + +
#define FLAC__REFERENCE_CODEC_MAX_BITS_PER_SAMPLE   (24u)
+
+ + + + + +
+   + + +

+The maximum sample resolution permitted by libFLAC.

+

Warning:
FLAC__MAX_BITS_PER_SAMPLE is the limit of the FLAC format. However, the reference encoder/decoder is currently limited to 24 bits because of prevalent 32-bit math, so make sure and use this value when appropriate.
+
+

+ + + + +
+ + + + +
#define FLAC__MAX_SAMPLE_RATE   (655350u)
+
+ + + + + +
+   + + +

+The maximum sample rate permitted by the format. The value is ((2 ^ 16) - 1) * 10; see FLAC format as to why.

+

+ + + + +
+ + + + +
#define FLAC__MAX_LPC_ORDER   (32u)
+
+ + + + + +
+   + + +

+The maximum LPC order permitted by the format.

+

+ + + + +
+ + + + +
#define FLAC__SUBSET_MAX_LPC_ORDER_48000HZ   (12u)
+
+ + + + + +
+   + + +

+The maximum LPC order permitted by the FLAC subset for sample rates up to 48kHz.

+

+ + + + +
+ + + + +
#define FLAC__MIN_QLP_COEFF_PRECISION   (5u)
+
+ + + + + +
+   + + +

+The minimum quantized linear predictor coefficient precision permitted by the format.

+

+ + + + +
+ + + + +
#define FLAC__MAX_QLP_COEFF_PRECISION   (15u)
+
+ + + + + +
+   + + +

+The maximum quantized linear predictor coefficient precision permitted by the format.

+

+ + + + +
+ + + + +
#define FLAC__MAX_FIXED_ORDER   (4u)
+
+ + + + + +
+   + + +

+The maximum order of the fixed predictors permitted by the format.

+

+ + + + +
+ + + + +
#define FLAC__MAX_RICE_PARTITION_ORDER   (15u)
+
+ + + + + +
+   + + +

+The maximum Rice partition order permitted by the format.

+

+ + + + +
+ + + + +
#define FLAC__SUBSET_MAX_RICE_PARTITION_ORDER   (8u)
+
+ + + + + +
+   + + +

+The maximum Rice partition order permitted by the FLAC Subset.

+

+ + + + +
+ + + + +
#define FLAC__STREAM_SYNC_LENGTH   (4u)
+
+ + + + + +
+   + + +

+The length of the FLAC signature in bytes.

+

+ + + + +
+ + + + +
#define FLAC__STREAM_METADATA_STREAMINFO_LENGTH   (34u)
+
+ + + + + +
+   + + +

+The total stream length of the STREAMINFO block in bytes.

+

+ + + + +
+ + + + +
#define FLAC__STREAM_METADATA_SEEKPOINT_LENGTH   (18u)
+
+ + + + + +
+   + + +

+The total stream length of a seek point in bytes.

+

+ + + + +
+ + + + +
#define FLAC__STREAM_METADATA_HEADER_LENGTH   (4u)
+
+ + + + + +
+   + + +

+The total stream length of a metadata block header in bytes.

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum FLAC__EntropyCodingMethodType
+
+ + + + + +
+   + + +

+An enumeration of the available entropy coding methods.

Enumeration values:
+ + + +
FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE  +Residual is coded by partitioning into contexts, each with it's own 4-bit Rice parameter.
FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2  +Residual is coded by partitioning into contexts, each with it's own 5-bit Rice parameter.
+
+
+

+ + + + +
+ + + + +
enum FLAC__SubframeType
+
+ + + + + +
+   + + +

+An enumeration of the available subframe types.

Enumeration values:
+ + + + + +
FLAC__SUBFRAME_TYPE_CONSTANT  +constant signal
FLAC__SUBFRAME_TYPE_VERBATIM  +uncompressed signal
FLAC__SUBFRAME_TYPE_FIXED  +fixed polynomial prediction
FLAC__SUBFRAME_TYPE_LPC  +linear prediction
+
+
+

+ + + + +
+ + + + +
enum FLAC__ChannelAssignment
+
+ + + + + +
+   + + +

+An enumeration of the available channel assignments.

Enumeration values:
+ + + + + +
FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT  +independent channels
FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE  +left+side stereo
FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE  +right+side stereo
FLAC__CHANNEL_ASSIGNMENT_MID_SIDE  +mid+side stereo
+
+
+

+ + + + +
+ + + + +
enum FLAC__FrameNumberType
+
+ + + + + +
+   + + +

+An enumeration of the possible frame numbering methods.

Enumeration values:
+ + + +
FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER  +number contains the frame number
FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER  +number contains the sample number of first sample in frame
+
+
+

+ + + + +
+ + + + +
enum FLAC__MetadataType
+
+ + + + + +
+   + + +

+An enumeration of the available metadata block types.

Enumeration values:
+ + + + + + + + + +
FLAC__METADATA_TYPE_STREAMINFO  +STREAMINFO block
FLAC__METADATA_TYPE_PADDING  +PADDING block
FLAC__METADATA_TYPE_APPLICATION  +APPLICATION block
FLAC__METADATA_TYPE_SEEKTABLE  +SEEKTABLE block
FLAC__METADATA_TYPE_VORBIS_COMMENT  +VORBISCOMMENT block (a.k.a. FLAC tags)
FLAC__METADATA_TYPE_CUESHEET  +CUESHEET block
FLAC__METADATA_TYPE_PICTURE  +PICTURE block
FLAC__METADATA_TYPE_UNDEFINED  +marker to denote beginning of undefined type range; this number will increase as new metadata types are added
+
+
+

+ + + + +
+ + + + +
enum FLAC__StreamMetadata_Picture_Type
+
+ + + + + +
+   + + +

+An enumeration of the PICTURE types (see FLAC__StreamMetadataPicture and id3 v2.4 APIC tag).

Enumeration values:
+ + + + + + + + + + + + + + + + + + + + + + +
FLAC__STREAM_METADATA_PICTURE_TYPE_OTHER  +Other
FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON_STANDARD  +32x32 pixels 'file icon' (PNG only)
FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON  +Other file icon
FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER  +Cover (front)
FLAC__STREAM_METADATA_PICTURE_TYPE_BACK_COVER  +Cover (back)
FLAC__STREAM_METADATA_PICTURE_TYPE_LEAFLET_PAGE  +Leaflet page
FLAC__STREAM_METADATA_PICTURE_TYPE_MEDIA  +Media (e.g. label side of CD)
FLAC__STREAM_METADATA_PICTURE_TYPE_LEAD_ARTIST  +Lead artist/lead performer/soloist
FLAC__STREAM_METADATA_PICTURE_TYPE_ARTIST  +Artist/performer
FLAC__STREAM_METADATA_PICTURE_TYPE_CONDUCTOR  +Conductor
FLAC__STREAM_METADATA_PICTURE_TYPE_BAND  +Band/Orchestra
FLAC__STREAM_METADATA_PICTURE_TYPE_COMPOSER  +Composer
FLAC__STREAM_METADATA_PICTURE_TYPE_LYRICIST  +Lyricist/text writer
FLAC__STREAM_METADATA_PICTURE_TYPE_RECORDING_LOCATION  +Recording Location
FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_RECORDING  +During recording
FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_PERFORMANCE  +During performance
FLAC__STREAM_METADATA_PICTURE_TYPE_VIDEO_SCREEN_CAPTURE  +Movie/video screen capture
FLAC__STREAM_METADATA_PICTURE_TYPE_FISH  +A bright coloured fish
FLAC__STREAM_METADATA_PICTURE_TYPE_ILLUSTRATION  +Illustration
FLAC__STREAM_METADATA_PICTURE_TYPE_BAND_LOGOTYPE  +Band/artist logotype
FLAC__STREAM_METADATA_PICTURE_TYPE_PUBLISHER_LOGOTYPE  +Publisher/Studio logotype
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__format_sample_rate_is_valid unsigned  sample_rate  ) 
+
+ + + + + +
+   + + +

+Tests that a sample rate is valid for FLAC.

+

Parameters:
+ + +
sample_rate The sample rate to test for compliance.
+
+
Return values:
+ + +
FLAC__bool true if the given sample rate conforms to the specification, else false.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__format_sample_rate_is_subset unsigned  sample_rate  ) 
+
+ + + + + +
+   + + +

+Tests that a sample rate is valid for the FLAC subset. The subset rules for valid sample rates are slightly more complex since the rate has to be expressible completely in the frame header.

+

Parameters:
+ + +
sample_rate The sample rate to test for compliance.
+
+
Return values:
+ + +
FLAC__bool true if the given sample rate conforms to the specification for the subset, else false.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__format_vorbiscomment_entry_name_is_legal const char *  name  ) 
+
+ + + + + +
+   + + +

+Check a Vorbis comment entry name to see if it conforms to the Vorbis comment specification.

+Vorbis comment names must be composed only of characters from [0x20-0x3C,0x3E-0x7D].

+

Parameters:
+ + +
name A NUL-terminated string to be checked.
+
+
Assertions:
 name != NULL 
+
+
Return values:
+ + +
FLAC__bool false if entry name is illegal, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__format_vorbiscomment_entry_value_is_legal const FLAC__byte *  value,
unsigned  length
+
+ + + + + +
+   + + +

+Check a Vorbis comment entry value to see if it conforms to the Vorbis comment specification.

+Vorbis comment values must be valid UTF-8 sequences.

+

Parameters:
+ + + +
value A string to be checked.
length A the length of value in bytes. May be (unsigned)(-1) to indicate that value is a plain UTF-8 NUL-terminated string.
+
+
Assertions:
 value != NULL 
+
+
Return values:
+ + +
FLAC__bool false if entry name is illegal, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__format_vorbiscomment_entry_is_legal const FLAC__byte *  entry,
unsigned  length
+
+ + + + + +
+   + + +

+Check a Vorbis comment entry to see if it conforms to the Vorbis comment specification.

+Vorbis comment entries must be of the form 'name=value', and 'name' and 'value' must be legal according to FLAC__format_vorbiscomment_entry_name_is_legal() and FLAC__format_vorbiscomment_entry_value_is_legal() respectively.

+

Parameters:
+ + + +
entry An entry to be checked.
length The length of entry in bytes.
+
+
Assertions:
 value != NULL 
+
+
Return values:
+ + +
FLAC__bool false if entry name is illegal, else true.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__format_seektable_is_legal const FLAC__StreamMetadata_SeekTable seek_table  ) 
+
+ + + + + +
+   + + +

+Check a seek table to see if it conforms to the FLAC specification. See the format specification for limits on the contents of the seek table.

+

Parameters:
+ + +
seek_table A pointer to a seek table to be checked.
+
+
Assertions:
 seek_table != NULL 
+
+
Return values:
+ + +
FLAC__bool false if seek table is illegal, else true.
+
+
+

+ + + + +
+ + + + + + + + + +
unsigned FLAC__format_seektable_sort FLAC__StreamMetadata_SeekTable seek_table  ) 
+
+ + + + + +
+   + + +

+Sort a seek table's seek points according to the format specification. This includes a "unique-ification" step to remove duplicates, i.e. seek points with identical sample_number values. Duplicate seek points are converted into placeholder points and sorted to the end of the table.

+

Parameters:
+ + +
seek_table A pointer to a seek table to be sorted.
+
+
Assertions:
 seek_table != NULL 
+
+
Return values:
+ + +
unsigned The number of duplicate seek points converted into placeholders.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__format_cuesheet_is_legal const FLAC__StreamMetadata_CueSheet cue_sheet,
FLAC__bool  check_cd_da_subset,
const char **  violation
+
+ + + + + +
+   + + +

+Check a cue sheet to see if it conforms to the FLAC specification. See the format specification for limits on the contents of the cue sheet.

+

Parameters:
+ + + + +
cue_sheet A pointer to an existing cue sheet to be checked.
check_cd_da_subset If true, check CUESHEET against more stringent requirements for a CD-DA (audio) disc.
violation Address of a pointer to a string. If there is a violation, a pointer to a string explanation of the violation will be returned here. violation may be NULL if you don't need the returned string. Do not free the returned string; it will always point to static data.
+
+
Assertions:
 cue_sheet != NULL 
+
+
Return values:
+ + +
FLAC__bool false if cue sheet is illegal, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__format_picture_is_legal const FLAC__StreamMetadata_Picture picture,
const char **  violation
+
+ + + + + +
+   + + +

+Check picture data to see if it conforms to the FLAC specification. See the format specification for limits on the contents of the PICTURE block.

+

Parameters:
+ + + +
picture A pointer to existing picture data to be checked.
violation Address of a pointer to a string. If there is a violation, a pointer to a string explanation of the violation will be returned here. violation may be NULL if you don't need the returned string. Do not free the returned string; it will always point to static data.
+
+
Assertions:
 picture != NULL 
+
+
Return values:
+ + +
FLAC__bool false if picture data is illegal, else true.
+
+
+


Variable Documentation

+

+ + + + +
+ + + + +
const char* FLAC__VERSION_STRING
+
+ + + + + +
+   + + +

+The version string of the release, stamped onto the libraries and binaries.

+

Note:
This does not correspond to the shared library version number, which is used to determine binary compatibility.
+
+

+ + + + +
+ + + + +
const char* FLAC__VENDOR_STRING
+
+ + + + + +
+   + + +

+The vendor string inserted by the encoder into the VORBIS_COMMENT block. This is a NUL-terminated ASCII string; when inserted into the VORBIS_COMMENT the trailing null is stripped.

+

+ + + + +
+ + + + +
const FLAC__byte FLAC__STREAM_SYNC_STRING[4]
+
+ + + + + +
+   + + +

+The byte string representation of the beginning of a FLAC stream.

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_SYNC
+
+ + + + + +
+   + + +

+The 32-bit integer big-endian representation of the beginning of a FLAC stream.

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_SYNC_LEN
+
+ + + + + +
+   + + +

+The length of the FLAC signature in bits.

+

+ + + + +
+ + + + +
const char* const FLAC__EntropyCodingMethodTypeString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__EntropyCodingMethodType to a C string.

+Using a FLAC__EntropyCodingMethodType as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN
+
+ + + + + +
+   + + +

+== 4 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN
+
+ + + + + +
+   + + +

+== 4 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN
+
+ + + + + +
+   + + +

+== 5 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN
+
+ + + + + +
+   + + +

+== 5 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER
+
+ + + + + +
+   + + +

+== (1<<FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN)-1

+

+ + + + +
+ + + + +
const unsigned FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_ESCAPE_PARAMETER
+
+ + + + + +
+   + + +

+== (1<<FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN)-1

+

+ + + + +
+ + + + +
const unsigned FLAC__ENTROPY_CODING_METHOD_TYPE_LEN
+
+ + + + + +
+   + + +

+== 2 (bits)

+

+ + + + +
+ + + + +
const char* const FLAC__SubframeTypeString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__SubframeType to a C string.

+Using a FLAC__SubframeType as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const unsigned FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN
+
+ + + + + +
+   + + +

+== 4 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN
+
+ + + + + +
+   + + +

+== 5 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__SUBFRAME_ZERO_PAD_LEN
+
+ + + + + +
+   + + +

+== 1 (bit)

+This used to be a zero-padding bit (hence the name FLAC__SUBFRAME_ZERO_PAD_LEN) but is now a reserved bit. It still has a mandatory value of 0 but in the future may take on the value 0 or 1 to mean something else.

+

+ + + + +
+ + + + +
const unsigned FLAC__SUBFRAME_TYPE_LEN
+
+ + + + + +
+   + + +

+== 6 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN
+
+ + + + + +
+   + + +

+== 1 (bit)

+

+ + + + +
+ + + + +
const unsigned FLAC__SUBFRAME_TYPE_CONSTANT_BYTE_ALIGNED_MASK
+
+ + + + + +
+   + + +

+= 0x00

+

+ + + + +
+ + + + +
const unsigned FLAC__SUBFRAME_TYPE_VERBATIM_BYTE_ALIGNED_MASK
+
+ + + + + +
+   + + +

+= 0x02

+

+ + + + +
+ + + + +
const unsigned FLAC__SUBFRAME_TYPE_FIXED_BYTE_ALIGNED_MASK
+
+ + + + + +
+   + + +

+= 0x10

+

+ + + + +
+ + + + +
const unsigned FLAC__SUBFRAME_TYPE_LPC_BYTE_ALIGNED_MASK
+
+ + + + + +
+   + + +

+= 0x40

+

+ + + + +
+ + + + +
const char* const FLAC__ChannelAssignmentString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__ChannelAssignment to a C string.

+Using a FLAC__ChannelAssignment as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const char* const FLAC__FrameNumberTypeString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__FrameNumberType to a C string.

+Using a FLAC__FrameNumberType as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const unsigned FLAC__FRAME_HEADER_SYNC
+
+ + + + + +
+   + + +

+== 0x3ffe; the frame header sync code

+

+ + + + +
+ + + + +
const unsigned FLAC__FRAME_HEADER_SYNC_LEN
+
+ + + + + +
+   + + +

+== 14 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__FRAME_HEADER_RESERVED_LEN
+
+ + + + + +
+   + + +

+== 1 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN
+
+ + + + + +
+   + + +

+== 1 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__FRAME_HEADER_BLOCK_SIZE_LEN
+
+ + + + + +
+   + + +

+== 4 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__FRAME_HEADER_SAMPLE_RATE_LEN
+
+ + + + + +
+   + + +

+== 4 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__FRAME_HEADER_CHANNEL_ASSIGNMENT_LEN
+
+ + + + + +
+   + + +

+== 4 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__FRAME_HEADER_BITS_PER_SAMPLE_LEN
+
+ + + + + +
+   + + +

+== 3 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__FRAME_HEADER_ZERO_PAD_LEN
+
+ + + + + +
+   + + +

+== 1 (bit)

+

+ + + + +
+ + + + +
const unsigned FLAC__FRAME_HEADER_CRC_LEN
+
+ + + + + +
+   + + +

+== 8 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__FRAME_FOOTER_CRC_LEN
+
+ + + + + +
+   + + +

+== 16 (bits)

+

+ + + + +
+ + + + +
const char* const FLAC__MetadataTypeString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__MetadataType to a C string.

+Using a FLAC__MetadataType as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN
+
+ + + + + +
+   + + +

+== 16 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN
+
+ + + + + +
+   + + +

+== 16 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN
+
+ + + + + +
+   + + +

+== 24 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN
+
+ + + + + +
+   + + +

+== 24 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN
+
+ + + + + +
+   + + +

+== 20 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN
+
+ + + + + +
+   + + +

+== 3 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN
+
+ + + + + +
+   + + +

+== 5 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN
+
+ + + + + +
+   + + +

+== 36 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_STREAMINFO_MD5SUM_LEN
+
+ + + + + +
+   + + +

+== 128 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_APPLICATION_ID_LEN
+
+ + + + + +
+   + + +

+== 32 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_SEEKPOINT_SAMPLE_NUMBER_LEN
+
+ + + + + +
+   + + +

+== 64 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_SEEKPOINT_STREAM_OFFSET_LEN
+
+ + + + + +
+   + + +

+== 64 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_SEEKPOINT_FRAME_SAMPLES_LEN
+
+ + + + + +
+   + + +

+== 16 (bits)

+

+ + + + +
+ + + + +
const FLAC__uint64 FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER
+
+ + + + + +
+   + + +

+The value used in the sample_number field of FLAC__StreamMetadataSeekPoint used to indicate a placeholder point (== 0xffffffffffffffff).

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN
+
+ + + + + +
+   + + +

+== 32 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN
+
+ + + + + +
+   + + +

+== 32 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN
+
+ + + + + +
+   + + +

+== 64 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN
+
+ + + + + +
+   + + +

+== 8 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN
+
+ + + + + +
+   + + +

+== 3*8 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN
+
+ + + + + +
+   + + +

+== 64 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN
+
+ + + + + +
+   + + +

+== 8 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN
+
+ + + + + +
+   + + +

+== 12*8 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN
+
+ + + + + +
+   + + +

+== 1 (bit)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN
+
+ + + + + +
+   + + +

+== 1 (bit)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN
+
+ + + + + +
+   + + +

+== 6+13*8 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN
+
+ + + + + +
+   + + +

+== 8 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN
+
+ + + + + +
+   + + +

+== 128*8 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN
+
+ + + + + +
+   + + +

+== 64 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN
+
+ + + + + +
+   + + +

+== 1 (bit)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN
+
+ + + + + +
+   + + +

+== 7+258*8 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN
+
+ + + + + +
+   + + +

+== 8 (bits)

+

+ + + + +
+ + + + +
const char* const FLAC__StreamMetadata_Picture_TypeString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__StreamMetadata_Picture_Type to a C string.

+Using a FLAC__StreamMetadata_Picture_Type as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_PICTURE_TYPE_LEN
+
+ + + + + +
+   + + +

+== 32 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN
+
+ + + + + +
+   + + +

+== 32 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN
+
+ + + + + +
+   + + +

+== 32 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN
+
+ + + + + +
+   + + +

+== 32 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN
+
+ + + + + +
+   + + +

+== 32 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN
+
+ + + + + +
+   + + +

+== 32 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_PICTURE_COLORS_LEN
+
+ + + + + +
+   + + +

+== 32 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN
+
+ + + + + +
+   + + +

+== 32 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_IS_LAST_LEN
+
+ + + + + +
+   + + +

+== 1 (bit)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_TYPE_LEN
+
+ + + + + +
+   + + +

+== 7 (bits)

+

+ + + + +
+ + + + +
const unsigned FLAC__STREAM_METADATA_LENGTH_LEN
+
+ + + + + +
+   + + +

+== 24 (bits)

+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flac__metadata.html b/3rdparty/libflac/doc/html/api/group__flac__metadata.html new file mode 100644 index 0000000..b162b75 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flac__metadata.html @@ -0,0 +1,60 @@ + + +FLAC: FLAC/metadata.h: metadata interfaces + + + + +

FLAC/metadata.h: metadata interfaces
+ +[FLAC C API] +


Detailed Description

+This module provides functions for creating and manipulating FLAC metadata blocks in memory, and three progressively more powerful interfaces for traversing and editing metadata in native FLAC files. Note that currently only the Chain interface (level 2) supports Ogg FLAC files, and it is read-only i.e. no writing back changed metadata to file. +

+There are three metadata interfaces of increasing complexity:

+Level 0: Read-only access to the STREAMINFO, VORBIS_COMMENT, CUESHEET, and PICTURE blocks.

+Level 1: Read-write access to all metadata blocks. This level is write- efficient in most cases (more on this below), and uses less memory than level 2.

+Level 2: Read-write access to all metadata blocks. This level is write- efficient in all cases, but uses more memory since all metadata for the whole file is read into memory and manipulated before writing out again.

+What do we mean by efficient? Since FLAC metadata appears at the beginning of the file, when writing metadata back to a FLAC file it is possible to grow or shrink the metadata such that the entire file must be rewritten. However, if the size remains the same during changes or PADDING blocks are utilized, only the metadata needs to be overwritten, which is much faster.

+Efficient means the whole file is rewritten at most one time, and only when necessary. Level 1 is not efficient only in the case that you cause more than one metadata block to grow or shrink beyond what can be accomodated by padding. In this case you should probably use level 2, which allows you to edit all the metadata for a file in memory and write it out all at once.

+All levels know how to skip over and not disturb an ID3v2 tag at the front of the file.

+All levels access files via their filenames. In addition, level 2 has additional alternative read and write functions that take an I/O handle and callbacks, for situations where access by filename is not possible.

+In addition to the three interfaces, this module defines functions for creating and manipulating various metadata objects in memory. As we see from the Format module, FLAC metadata blocks in memory are very primitive structures for storing information in an efficient way. Reading information from the structures is easy but creating or modifying them directly is more complex. The metadata object routines here facilitate this by taking care of the consistency and memory management drudgery.

+Unless you will be using the level 1 or 2 interfaces to modify existing metadata however, you will not probably not need these.

+From a dependency standpoint, none of the encoders or decoders require the metadata module. This is so that embedded users can strip out the metadata module from libFLAC to reduce the size and complexity. +

+ + + + + + + + + + + +

Modules

 FLAC/metadata.h: metadata level 0 interface
 FLAC/metadata.h: metadata level 1 interface
 FLAC/metadata.h: metadata level 2 interface
 FLAC/metadata.h: metadata object methods
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flac__metadata__level0.html b/3rdparty/libflac/doc/html/api/group__flac__metadata__level0.html new file mode 100644 index 0000000..f08bb52 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flac__metadata__level0.html @@ -0,0 +1,308 @@ + + +FLAC: FLAC/metadata.h: metadata level 0 interface + + + + +

FLAC/metadata.h: metadata level 0 interface
+ +[FLAC/metadata.h: metadata interfaces] +


Detailed Description

+The level 0 interface consists of individual routines to read the STREAMINFO, VORBIS_COMMENT, CUESHEET, and PICTURE blocks, requiring only a filename. +

+They try to skip any ID3v2 tag at the head of the file. +

+ + + + + + + + + + + +

Functions

FLAC__bool FLAC__metadata_get_streaminfo (const char *filename, FLAC__StreamMetadata *streaminfo)
FLAC__bool FLAC__metadata_get_tags (const char *filename, FLAC__StreamMetadata **tags)
FLAC__bool FLAC__metadata_get_cuesheet (const char *filename, FLAC__StreamMetadata **cuesheet)
FLAC__bool FLAC__metadata_get_picture (const char *filename, FLAC__StreamMetadata **picture, FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors)
+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_get_streaminfo const char *  filename,
FLAC__StreamMetadata streaminfo
+
+ + + + + +
+   + + +

+Read the STREAMINFO metadata block of the given FLAC file. This function will try to skip any ID3v2 tag at the head of the file.

+

Parameters:
+ + + +
filename The path to the FLAC file to read.
streaminfo A pointer to space for the STREAMINFO block. Since FLAC__StreamMetadata is a simple structure with no memory allocation involved, you pass the address of an existing structure. It need not be initialized.
+
+
Assertions:
 filename != NULL 
+
 streaminfo != NULL 
+
+
Return values:
+ + +
FLAC__bool true if a valid STREAMINFO block was read from filename. Returns false if there was a memory allocation error, a file decoder error, or the file contained no STREAMINFO block. (A memory allocation error is possible because this function must set up a file decoder.)
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_get_tags const char *  filename,
FLAC__StreamMetadata **  tags
+
+ + + + + +
+   + + +

+Read the VORBIS_COMMENT metadata block of the given FLAC file. This function will try to skip any ID3v2 tag at the head of the file.

+

Parameters:
+ + + +
filename The path to the FLAC file to read.
tags The address where the returned pointer will be stored. The tags object must be deleted by the caller using FLAC__metadata_object_delete().
+
+
Assertions:
 filename != NULL 
+
 tags != NULL 
+
+
Return values:
+ + +
FLAC__bool true if a valid VORBIS_COMMENT block was read from filename, and *tags will be set to the address of the metadata structure. Returns false if there was a memory allocation error, a file decoder error, or the file contained no VORBIS_COMMENT block, and *tags will be set to NULL.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_get_cuesheet const char *  filename,
FLAC__StreamMetadata **  cuesheet
+
+ + + + + +
+   + + +

+Read the CUESHEET metadata block of the given FLAC file. This function will try to skip any ID3v2 tag at the head of the file.

+

Parameters:
+ + + +
filename The path to the FLAC file to read.
cuesheet The address where the returned pointer will be stored. The cuesheet object must be deleted by the caller using FLAC__metadata_object_delete().
+
+
Assertions:
 filename != NULL 
+
 cuesheet != NULL 
+
+
Return values:
+ + +
FLAC__bool true if a valid CUESHEET block was read from filename, and *cuesheet will be set to the address of the metadata structure. Returns false if there was a memory allocation error, a file decoder error, or the file contained no CUESHEET block, and *cuesheet will be set to NULL.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_get_picture const char *  filename,
FLAC__StreamMetadata **  picture,
FLAC__StreamMetadata_Picture_Type  type,
const char *  mime_type,
const FLAC__byte *  description,
unsigned  max_width,
unsigned  max_height,
unsigned  max_depth,
unsigned  max_colors
+
+ + + + + +
+   + + +

+Read a PICTURE metadata block of the given FLAC file. This function will try to skip any ID3v2 tag at the head of the file. Since there can be more than one PICTURE block in a file, this function takes a number of parameters that act as constraints to the search. The PICTURE block with the largest area matching all the constraints will be returned, or *picture will be set to NULL if there was no such block.

+

Parameters:
+ + + + + + + + + + +
filename The path to the FLAC file to read.
picture The address where the returned pointer will be stored. The picture object must be deleted by the caller using FLAC__metadata_object_delete().
type The desired picture type. Use -1 to mean "any type".
mime_type The desired MIME type, e.g. "image/jpeg". The string will be matched exactly. Use NULL to mean "any MIME type".
description The desired description. The string will be matched exactly. Use NULL to mean "any description".
max_width The maximum width in pixels desired. Use (unsigned)(-1) to mean "any width".
max_height The maximum height in pixels desired. Use (unsigned)(-1) to mean "any height".
max_depth The maximum color depth in bits-per-pixel desired. Use (unsigned)(-1) to mean "any depth".
max_colors The maximum number of colors desired. Use (unsigned)(-1) to mean "any number of colors".
+
+
Assertions:
 filename != NULL 
+
 picture != NULL 
+
+
Return values:
+ + +
FLAC__bool true if a valid PICTURE block was read from filename, and *picture will be set to the address of the metadata structure. Returns false if there was a memory allocation error, a file decoder error, or the file contained no PICTURE block, and *picture will be set to NULL.
+
+
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flac__metadata__level1.html b/3rdparty/libflac/doc/html/api/group__flac__metadata__level1.html new file mode 100644 index 0000000..7b30bb4 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flac__metadata__level1.html @@ -0,0 +1,950 @@ + + +FLAC: FLAC/metadata.h: metadata level 1 interface + + + + +

FLAC/metadata.h: metadata level 1 interface
+ +[FLAC/metadata.h: metadata interfaces] +


Detailed Description

+The level 1 interface provides read-write access to FLAC file metadata and operates directly on the FLAC file. +

+The general usage of this interface is:

+

+

+

Note:
The FLAC file remains open the whole time between FLAC__metadata_simple_iterator_init() and FLAC__metadata_simple_iterator_delete(), so make sure you are not altering the file during this time.

+Do not modify the is_last, length, or type fields of returned FLAC__StreamMetadata objects. These are managed automatically.

+If any of the modification functions (FLAC__metadata_simple_iterator_set_block(), FLAC__metadata_simple_iterator_delete_block(), FLAC__metadata_simple_iterator_insert_block_after(), etc.) return false, you should delete the iterator as it may no longer be valid.

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef FLAC__Metadata_SimpleIterator FLAC__Metadata_SimpleIterator

Enumerations

enum  FLAC__Metadata_SimpleIteratorStatus {
+  FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK = 0, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE, +
+  FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_WRITABLE, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_BAD_METADATA, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR, +
+  FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_RENAME_ERROR, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_UNLINK_ERROR, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR, +
+  FLAC__METADATA_SIMPLE_ITERATOR_STATUS_INTERNAL_ERROR +
+ }

Functions

FLAC__Metadata_SimpleIteratorFLAC__metadata_simple_iterator_new (void)
void FLAC__metadata_simple_iterator_delete (FLAC__Metadata_SimpleIterator *iterator)
FLAC__Metadata_SimpleIteratorStatus FLAC__metadata_simple_iterator_status (FLAC__Metadata_SimpleIterator *iterator)
FLAC__bool FLAC__metadata_simple_iterator_init (FLAC__Metadata_SimpleIterator *iterator, const char *filename, FLAC__bool read_only, FLAC__bool preserve_file_stats)
FLAC__bool FLAC__metadata_simple_iterator_is_writable (const FLAC__Metadata_SimpleIterator *iterator)
FLAC__bool FLAC__metadata_simple_iterator_next (FLAC__Metadata_SimpleIterator *iterator)
FLAC__bool FLAC__metadata_simple_iterator_prev (FLAC__Metadata_SimpleIterator *iterator)
FLAC__bool FLAC__metadata_simple_iterator_is_last (const FLAC__Metadata_SimpleIterator *iterator)
off_t FLAC__metadata_simple_iterator_get_block_offset (const FLAC__Metadata_SimpleIterator *iterator)
FLAC__MetadataType FLAC__metadata_simple_iterator_get_block_type (const FLAC__Metadata_SimpleIterator *iterator)
unsigned FLAC__metadata_simple_iterator_get_block_length (const FLAC__Metadata_SimpleIterator *iterator)
FLAC__bool FLAC__metadata_simple_iterator_get_application_id (FLAC__Metadata_SimpleIterator *iterator, FLAC__byte *id)
FLAC__StreamMetadataFLAC__metadata_simple_iterator_get_block (FLAC__Metadata_SimpleIterator *iterator)
FLAC__bool FLAC__metadata_simple_iterator_set_block (FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding)
FLAC__bool FLAC__metadata_simple_iterator_insert_block_after (FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding)
FLAC__bool FLAC__metadata_simple_iterator_delete_block (FLAC__Metadata_SimpleIterator *iterator, FLAC__bool use_padding)

Variables

const char *const FLAC__Metadata_SimpleIteratorStatusString []
+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef struct FLAC__Metadata_SimpleIterator FLAC__Metadata_SimpleIterator
+
+ + + + + +
+   + + +

+The opaque structure definition for the level 1 iterator type. See the metadata level 1 module for a detailed description.

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum FLAC__Metadata_SimpleIteratorStatus
+
+ + + + + +
+   + + +

+Status type for FLAC__Metadata_SimpleIterator.

+The iterator's current status can be obtained by calling FLAC__metadata_simple_iterator_status().

Enumeration values:
+ + + + + + + + + + + + + + +
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK  +The iterator is in the normal OK state
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT  +The data passed into a function violated the function's usage criteria
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE  +The iterator could not open the target file
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE  +The iterator could not find the FLAC signature at the start of the file
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_WRITABLE  +The iterator tried to write to a file that was not writable
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_BAD_METADATA  +The iterator encountered input that does not conform to the FLAC metadata specification
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR  +The iterator encountered an error while reading the FLAC file
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR  +The iterator encountered an error while seeking in the FLAC file
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR  +The iterator encountered an error while writing the FLAC file
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_RENAME_ERROR  +The iterator encountered an error renaming the FLAC file
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_UNLINK_ERROR  +The iterator encountered an error removing the temporary file
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR  +Memory allocation failed
FLAC__METADATA_SIMPLE_ITERATOR_STATUS_INTERNAL_ERROR  +The caller violated an assertion or an unexpected error occurred
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
FLAC__Metadata_SimpleIterator* FLAC__metadata_simple_iterator_new void   ) 
+
+ + + + + +
+   + + +

+Create a new iterator instance.

+

Return values:
+ + +
FLAC__Metadata_SimpleIterator* NULL if there was an error allocating memory, else the new instance.
+
+
+

+ + + + +
+ + + + + + + + + +
void FLAC__metadata_simple_iterator_delete FLAC__Metadata_SimpleIterator iterator  ) 
+
+ + + + + +
+   + + +

+Free an iterator instance. Deletes the object pointed to by iterator.

+

Parameters:
+ + +
iterator A pointer to an existing iterator.
+
+
Assertions:
 iterator != NULL 
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__Metadata_SimpleIteratorStatus FLAC__metadata_simple_iterator_status FLAC__Metadata_SimpleIterator iterator  ) 
+
+ + + + + +
+   + + +

+Get the current status of the iterator. Call this after a function returns false to get the reason for the error. Also resets the status to FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK.

+

Parameters:
+ + +
iterator A pointer to an existing iterator.
+
+
Assertions:
 iterator != NULL 
+
+
Return values:
+ + +
FLAC__Metadata_SimpleIteratorStatus The current status of the iterator.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_simple_iterator_init FLAC__Metadata_SimpleIterator iterator,
const char *  filename,
FLAC__bool  read_only,
FLAC__bool  preserve_file_stats
+
+ + + + + +
+   + + +

+Initialize the iterator to point to the first metadata block in the given FLAC file.

+

Parameters:
+ + + + + +
iterator A pointer to an existing iterator.
filename The path to the FLAC file.
read_only If true, the FLAC file will be opened in read-only mode; if false, the FLAC file will be opened for edit even if no edits are performed.
preserve_file_stats If true, the owner and modification time will be preserved even if the FLAC file is written to.
+
+
Assertions:
 iterator != NULL 
+
 filename != NULL 
+
+
Return values:
+ + +
FLAC__bool false if a memory allocation error occurs, the file can't be opened, or another error occurs, else true.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__metadata_simple_iterator_is_writable const FLAC__Metadata_SimpleIterator iterator  ) 
+
+ + + + + +
+   + + +

+Returns true if the FLAC file is writable. If false, calls to FLAC__metadata_simple_iterator_set_block() and FLAC__metadata_simple_iterator_insert_block_after() will fail.

+

Parameters:
+ + +
iterator A pointer to an existing iterator.
+
+
Assertions:
 iterator != NULL 
+
+
Return values:
+ + +
FLAC__bool See above.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__metadata_simple_iterator_next FLAC__Metadata_SimpleIterator iterator  ) 
+
+ + + + + +
+   + + +

+Moves the iterator forward one metadata block, returning false if already at the end.

+

Parameters:
+ + +
iterator A pointer to an existing initialized iterator.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_simple_iterator_init()
+
Return values:
+ + +
FLAC__bool false if already at the last metadata block of the chain, else true.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__metadata_simple_iterator_prev FLAC__Metadata_SimpleIterator iterator  ) 
+
+ + + + + +
+   + + +

+Moves the iterator backward one metadata block, returning false if already at the beginning.

+

Parameters:
+ + +
iterator A pointer to an existing initialized iterator.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_simple_iterator_init()
+
Return values:
+ + +
FLAC__bool false if already at the first metadata block of the chain, else true.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__metadata_simple_iterator_is_last const FLAC__Metadata_SimpleIterator iterator  ) 
+
+ + + + + +
+   + + +

+Returns a flag telling if the current metadata block is the last.

+

Parameters:
+ + +
iterator A pointer to an existing initialized iterator.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_simple_iterator_init()
+
Return values:
+ + +
FLAC__bool true if the current metadata block is the last in the file, else false.
+
+
+

+ + + + +
+ + + + + + + + + +
off_t FLAC__metadata_simple_iterator_get_block_offset const FLAC__Metadata_SimpleIterator iterator  ) 
+
+ + + + + +
+   + + +

+Get the offset of the metadata block at the current position. This avoids reading the actual block data which can save time for large blocks.

+

Parameters:
+ + +
iterator A pointer to an existing initialized iterator.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_simple_iterator_init()
+
Return values:
+ + +
off_t The offset of the metadata block at the current iterator position. This is the byte offset relative to the beginning of the file of the current metadata block's header.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__MetadataType FLAC__metadata_simple_iterator_get_block_type const FLAC__Metadata_SimpleIterator iterator  ) 
+
+ + + + + +
+   + + +

+Get the type of the metadata block at the current position. This avoids reading the actual block data which can save time for large blocks.

+

Parameters:
+ + +
iterator A pointer to an existing initialized iterator.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_simple_iterator_init()
+
Return values:
+ + +
FLAC__MetadataType The type of the metadata block at the current iterator position.
+
+
+

+ + + + +
+ + + + + + + + + +
unsigned FLAC__metadata_simple_iterator_get_block_length const FLAC__Metadata_SimpleIterator iterator  ) 
+
+ + + + + +
+   + + +

+Get the length of the metadata block at the current position. This avoids reading the actual block data which can save time for large blocks.

+

Parameters:
+ + +
iterator A pointer to an existing initialized iterator.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_simple_iterator_init()
+
Return values:
+ + +
unsigned The length of the metadata block at the current iterator position. The is same length as that in the metadata block header, i.e. the length of the metadata body that follows the header.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_simple_iterator_get_application_id FLAC__Metadata_SimpleIterator iterator,
FLAC__byte *  id
+
+ + + + + +
+   + + +

+Get the application ID of the APPLICATION block at the current position. This avoids reading the actual block data which can save time for large blocks.

+

Parameters:
+ + + +
iterator A pointer to an existing initialized iterator.
id A pointer to a buffer of at least 4 bytes where the ID will be stored.
+
+
Assertions:
 iterator != NULL 
+
 id != NULL 
+
iterator has been successfully initialized with FLAC__metadata_simple_iterator_init()
+
Return values:
+ + +
FLAC__bool true if the ID was successfully read, else false, in which case you should check FLAC__metadata_simple_iterator_status() to find out why. If the status is FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT, then the current metadata block is not an APPLICATION block. Otherwise if the status is FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR or FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR, an I/O error occurred and the iterator can no longer be used.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__StreamMetadata* FLAC__metadata_simple_iterator_get_block FLAC__Metadata_SimpleIterator iterator  ) 
+
+ + + + + +
+   + + +

+Get the metadata block at the current position. You can modify the block but must use FLAC__metadata_simple_iterator_set_block() to write it back to the FLAC file.

+You must call FLAC__metadata_object_delete() on the returned object when you are finished with it.

+

Parameters:
+ + +
iterator A pointer to an existing initialized iterator.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_simple_iterator_init()
+
Return values:
+ + +
FLAC__StreamMetadata* The current metadata block, or NULL if there was a memory allocation error.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_simple_iterator_set_block FLAC__Metadata_SimpleIterator iterator,
FLAC__StreamMetadata block,
FLAC__bool  use_padding
+
+ + + + + +
+   + + +

+Write a block back to the FLAC file. This function tries to be as efficient as possible; how the block is actually written is shown by the following:

+Existing block is a STREAMINFO block and the new block is a STREAMINFO block: the new block is written in place. Make sure you know what you're doing when changing the values of a STREAMINFO block.

+Existing block is a STREAMINFO block and the new block is a not a STREAMINFO block: this is an error since the first block must be a STREAMINFO block. Returns false without altering the file.

+Existing block is not a STREAMINFO block and the new block is a STREAMINFO block: this is an error since there may be only one STREAMINFO block. Returns false without altering the file.

+Existing block and new block are the same length: the existing block will be replaced by the new block, written in place.

+Existing block is longer than new block: if use_padding is true, the existing block will be overwritten in place with the new block followed by a PADDING block, if possible, to make the total size the same as the existing block. Remember that a padding block requires at least four bytes so if the difference in size between the new block and existing block is less than that, the entire file will have to be rewritten, using the new block's exact size. If use_padding is false, the entire file will be rewritten, replacing the existing block by the new block.

+Existing block is shorter than new block: if use_padding is true, the function will try and expand the new block into the following PADDING block, if it exists and doing so won't shrink the PADDING block to less than 4 bytes. If there is no following PADDING block, or it will shrink to less than 4 bytes, or use_padding is false, the entire file is rewritten, replacing the existing block with the new block. Note that in this case any following PADDING block is preserved as is.

+After writing the block, the iterator will remain in the same place, i.e. pointing to the new block.

+

Parameters:
+ + + + +
iterator A pointer to an existing initialized iterator.
block The block to set.
use_padding See above.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_simple_iterator_init()
 block != NULL 
+
+
Return values:
+ + +
FLAC__bool true if successful, else false.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_simple_iterator_insert_block_after FLAC__Metadata_SimpleIterator iterator,
FLAC__StreamMetadata block,
FLAC__bool  use_padding
+
+ + + + + +
+   + + +

+This is similar to FLAC__metadata_simple_iterator_set_block() except that instead of writing over an existing block, it appends a block after the existing block. use_padding is again used to tell the function to try an expand into following padding in an attempt to avoid rewriting the entire file.

+This function will fail and return false if given a STREAMINFO block.

+After writing the block, the iterator will be pointing to the new block.

+

Parameters:
+ + + + +
iterator A pointer to an existing initialized iterator.
block The block to set.
use_padding See above.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_simple_iterator_init()
 block != NULL 
+
+
Return values:
+ + +
FLAC__bool true if successful, else false.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_simple_iterator_delete_block FLAC__Metadata_SimpleIterator iterator,
FLAC__bool  use_padding
+
+ + + + + +
+   + + +

+Deletes the block at the current position. This will cause the entire FLAC file to be rewritten, unless use_padding is true, in which case the block will be replaced by an equal-sized PADDING block. The iterator will be left pointing to the block before the one just deleted.

+You may not delete the STREAMINFO block.

+

Parameters:
+ + + +
iterator A pointer to an existing initialized iterator.
use_padding See above.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_simple_iterator_init()
+
Return values:
+ + +
FLAC__bool true if successful, else false.
+
+
+


Variable Documentation

+

+ + + + +
+ + + + +
const char* const FLAC__Metadata_SimpleIteratorStatusString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__Metadata_SimpleIteratorStatus to a C string.

+Using a FLAC__Metadata_SimpleIteratorStatus as the index to this array will give the string equivalent. The contents should not be modified.

+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flac__metadata__level2.html b/3rdparty/libflac/doc/html/api/group__flac__metadata__level2.html new file mode 100644 index 0000000..8320052 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flac__metadata__level2.html @@ -0,0 +1,1428 @@ + + +FLAC: FLAC/metadata.h: metadata level 2 interface + + + + +

FLAC/metadata.h: metadata level 2 interface
+ +[FLAC/metadata.h: metadata interfaces] +


Detailed Description

+The level 2 interface provides read-write access to FLAC file metadata; all metadata is read into memory, operated on in memory, and then written to file, which is more efficient than level 1 when editing multiple blocks. +

+Currently Ogg FLAC is supported for read only, via FLAC__metadata_chain_read_ogg() but a subsequent FLAC__metadata_chain_write() will fail.

+The general usage of this interface is:

+

+

+

Note:
Even though the FLAC file is not open while the chain is being manipulated, you must not alter the file externally during this time. The chain assumes the FLAC file will not change between the time of FLAC__metadata_chain_read()/FLAC__metadata_chain_read_ogg() and FLAC__metadata_chain_write().

+Do not modify the is_last, length, or type fields of returned FLAC__StreamMetadata objects. These are managed automatically.

+The metadata objects returned by FLAC__metadata_iterator_get_block() are owned by the chain; do not FLAC__metadata_object_delete() them. In the same way, blocks passed to FLAC__metadata_iterator_set_block() become owned by the chain and they will be deleted when the chain is deleted.

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef FLAC__Metadata_Chain FLAC__Metadata_Chain
typedef FLAC__Metadata_Iterator FLAC__Metadata_Iterator

Enumerations

enum  FLAC__Metadata_ChainStatus {
+  FLAC__METADATA_CHAIN_STATUS_OK = 0, +FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT, +FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE, +FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE, +
+  FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE, +FLAC__METADATA_CHAIN_STATUS_BAD_METADATA, +FLAC__METADATA_CHAIN_STATUS_READ_ERROR, +FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR, +
+  FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR, +FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR, +FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR, +FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR, +
+  FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR, +FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS, +FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH, +FLAC__METADATA_CHAIN_STATUS_WRONG_WRITE_CALL +
+ }

Functions

FLAC__Metadata_ChainFLAC__metadata_chain_new (void)
void FLAC__metadata_chain_delete (FLAC__Metadata_Chain *chain)
FLAC__Metadata_ChainStatus FLAC__metadata_chain_status (FLAC__Metadata_Chain *chain)
FLAC__bool FLAC__metadata_chain_read (FLAC__Metadata_Chain *chain, const char *filename)
FLAC__bool FLAC__metadata_chain_read_ogg (FLAC__Metadata_Chain *chain, const char *filename)
FLAC__bool FLAC__metadata_chain_read_with_callbacks (FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks)
FLAC__bool FLAC__metadata_chain_read_ogg_with_callbacks (FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks)
FLAC__bool FLAC__metadata_chain_check_if_tempfile_needed (FLAC__Metadata_Chain *chain, FLAC__bool use_padding)
FLAC__bool FLAC__metadata_chain_write (FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__bool preserve_file_stats)
FLAC__bool FLAC__metadata_chain_write_with_callbacks (FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks)
FLAC__bool FLAC__metadata_chain_write_with_callbacks_and_tempfile (FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks, FLAC__IOHandle temp_handle, FLAC__IOCallbacks temp_callbacks)
void FLAC__metadata_chain_merge_padding (FLAC__Metadata_Chain *chain)
void FLAC__metadata_chain_sort_padding (FLAC__Metadata_Chain *chain)
FLAC__Metadata_IteratorFLAC__metadata_iterator_new (void)
void FLAC__metadata_iterator_delete (FLAC__Metadata_Iterator *iterator)
void FLAC__metadata_iterator_init (FLAC__Metadata_Iterator *iterator, FLAC__Metadata_Chain *chain)
FLAC__bool FLAC__metadata_iterator_next (FLAC__Metadata_Iterator *iterator)
FLAC__bool FLAC__metadata_iterator_prev (FLAC__Metadata_Iterator *iterator)
FLAC__MetadataType FLAC__metadata_iterator_get_block_type (const FLAC__Metadata_Iterator *iterator)
FLAC__StreamMetadataFLAC__metadata_iterator_get_block (FLAC__Metadata_Iterator *iterator)
FLAC__bool FLAC__metadata_iterator_set_block (FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block)
FLAC__bool FLAC__metadata_iterator_delete_block (FLAC__Metadata_Iterator *iterator, FLAC__bool replace_with_padding)
FLAC__bool FLAC__metadata_iterator_insert_block_before (FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block)
FLAC__bool FLAC__metadata_iterator_insert_block_after (FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block)

Variables

const char *const FLAC__Metadata_ChainStatusString []
+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef struct FLAC__Metadata_Chain FLAC__Metadata_Chain
+
+ + + + + +
+   + + +

+The opaque structure definition for the level 2 chain type.

+

+ + + + +
+ + + + +
typedef struct FLAC__Metadata_Iterator FLAC__Metadata_Iterator
+
+ + + + + +
+   + + +

+The opaque structure definition for the level 2 iterator type.

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum FLAC__Metadata_ChainStatus
+
+ + + + + +
+   + + +

+

Enumeration values:
+ + + + + + + + + + + + + + + + + +
FLAC__METADATA_CHAIN_STATUS_OK  +The chain is in the normal OK state
FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT  +The data passed into a function violated the function's usage criteria
FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE  +The chain could not open the target file
FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE  +The chain could not find the FLAC signature at the start of the file
FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE  +The chain tried to write to a file that was not writable
FLAC__METADATA_CHAIN_STATUS_BAD_METADATA  +The chain encountered input that does not conform to the FLAC metadata specification
FLAC__METADATA_CHAIN_STATUS_READ_ERROR  +The chain encountered an error while reading the FLAC file
FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR  +The chain encountered an error while seeking in the FLAC file
FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR  +The chain encountered an error while writing the FLAC file
FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR  +The chain encountered an error renaming the FLAC file
FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR  +The chain encountered an error removing the temporary file
FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR  +Memory allocation failed
FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR  +The caller violated an assertion or an unexpected error occurred
FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS  +One or more of the required callbacks was NULL
FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH  +FLAC__metadata_chain_write() was called on a chain read by FLAC__metadata_chain_read_with_callbacks()/FLAC__metadata_chain_read_ogg_with_callbacks(), or FLAC__metadata_chain_write_with_callbacks()/FLAC__metadata_chain_write_with_callbacks_and_tempfile() was called on a chain read by FLAC__metadata_chain_read()/FLAC__metadata_chain_read_ogg(). Matching read/write methods must always be used.
FLAC__METADATA_CHAIN_STATUS_WRONG_WRITE_CALL  +FLAC__metadata_chain_write_with_callbacks() was called when the chain write requires a tempfile; use FLAC__metadata_chain_write_with_callbacks_and_tempfile() instead. Or, FLAC__metadata_chain_write_with_callbacks_and_tempfile() was called when the chain write does not require a tempfile; use FLAC__metadata_chain_write_with_callbacks() instead. Always check FLAC__metadata_chain_check_if_tempfile_needed() before writing via callbacks.
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
FLAC__Metadata_Chain* FLAC__metadata_chain_new void   ) 
+
+ + + + + +
+   + + +

+Create a new chain instance.

+

Return values:
+ + +
FLAC__Metadata_Chain* NULL if there was an error allocating memory, else the new instance.
+
+
+

+ + + + +
+ + + + + + + + + +
void FLAC__metadata_chain_delete FLAC__Metadata_Chain chain  ) 
+
+ + + + + +
+   + + +

+Free a chain instance. Deletes the object pointed to by chain.

+

Parameters:
+ + +
chain A pointer to an existing chain.
+
+
Assertions:
 chain != NULL 
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__Metadata_ChainStatus FLAC__metadata_chain_status FLAC__Metadata_Chain chain  ) 
+
+ + + + + +
+   + + +

+Get the current status of the chain. Call this after a function returns false to get the reason for the error. Also resets the status to FLAC__METADATA_CHAIN_STATUS_OK.

+

Parameters:
+ + +
chain A pointer to an existing chain.
+
+
Assertions:
 chain != NULL 
+
+
Return values:
+ + +
FLAC__Metadata_ChainStatus The current status of the chain.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_chain_read FLAC__Metadata_Chain chain,
const char *  filename
+
+ + + + + +
+   + + +

+Read all metadata from a FLAC file into the chain.

+

Parameters:
+ + + +
chain A pointer to an existing chain.
filename The path to the FLAC file to read.
+
+
Assertions:
 chain != NULL 
+
 filename != NULL 
+
+
Return values:
+ + +
FLAC__bool true if a valid list of metadata blocks was read from filename, else false. On failure, check the status with FLAC__metadata_chain_status().
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_chain_read_ogg FLAC__Metadata_Chain chain,
const char *  filename
+
+ + + + + +
+   + + +

+Read all metadata from an Ogg FLAC file into the chain.

+

Note:
Ogg FLAC metadata data writing is not supported yet and FLAC__metadata_chain_write() will fail.
+
Parameters:
+ + + +
chain A pointer to an existing chain.
filename The path to the Ogg FLAC file to read.
+
+
Assertions:
 chain != NULL 
+
 filename != NULL 
+
+
Return values:
+ + +
FLAC__bool true if a valid list of metadata blocks was read from filename, else false. On failure, check the status with FLAC__metadata_chain_status().
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_chain_read_with_callbacks FLAC__Metadata_Chain chain,
FLAC__IOHandle  handle,
FLAC__IOCallbacks  callbacks
+
+ + + + + +
+   + + +

+Read all metadata from a FLAC stream into the chain via I/O callbacks.

+The handle need only be open for reading, but must be seekable. The equivalent minimum stdio fopen() file mode is "r" (or "rb" for Windows).

+

Parameters:
+ + + + +
chain A pointer to an existing chain.
handle The I/O handle of the FLAC stream to read. The handle will NOT be closed after the metadata is read; that is the duty of the caller.
callbacks A set of callbacks to use for I/O. The mandatory callbacks are read, seek, and tell.
+
+
Assertions:
 chain != NULL 
+
+
Return values:
+ + +
FLAC__bool true if a valid list of metadata blocks was read from handle, else false. On failure, check the status with FLAC__metadata_chain_status().
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_chain_read_ogg_with_callbacks FLAC__Metadata_Chain chain,
FLAC__IOHandle  handle,
FLAC__IOCallbacks  callbacks
+
+ + + + + +
+   + + +

+Read all metadata from an Ogg FLAC stream into the chain via I/O callbacks.

+The handle need only be open for reading, but must be seekable. The equivalent minimum stdio fopen() file mode is "r" (or "rb" for Windows).

+

Note:
Ogg FLAC metadata data writing is not supported yet and FLAC__metadata_chain_write() will fail.
+
Parameters:
+ + + + +
chain A pointer to an existing chain.
handle The I/O handle of the Ogg FLAC stream to read. The handle will NOT be closed after the metadata is read; that is the duty of the caller.
callbacks A set of callbacks to use for I/O. The mandatory callbacks are read, seek, and tell.
+
+
Assertions:
 chain != NULL 
+
+
Return values:
+ + +
FLAC__bool true if a valid list of metadata blocks was read from handle, else false. On failure, check the status with FLAC__metadata_chain_status().
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_chain_check_if_tempfile_needed FLAC__Metadata_Chain chain,
FLAC__bool  use_padding
+
+ + + + + +
+   + + +

+Checks if writing the given chain would require the use of a temporary file, or if it could be written in place.

+Under certain conditions, padding can be utilized so that writing edited metadata back to the FLAC file does not require rewriting the entire file. If rewriting is required, then a temporary workfile is required. When writing metadata using callbacks, you must check this function to know whether to call FLAC__metadata_chain_write_with_callbacks() or FLAC__metadata_chain_write_with_callbacks_and_tempfile(). When writing with FLAC__metadata_chain_write(), the temporary file is handled internally.

+

Parameters:
+ + + +
chain A pointer to an existing chain.
use_padding Whether or not padding will be allowed to be used during the write. The value of use_padding given here must match the value later passed to FLAC__metadata_chain_write_with_callbacks() or FLAC__metadata_chain_write_with_callbacks_with_tempfile().
+
+
Assertions:
 chain != NULL 
+
+
Return values:
+ + +
FLAC__bool true if writing the current chain would require a tempfile, or false if metadata can be written in place.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_chain_write FLAC__Metadata_Chain chain,
FLAC__bool  use_padding,
FLAC__bool  preserve_file_stats
+
+ + + + + +
+   + + +

+Write all metadata out to the FLAC file. This function tries to be as efficient as possible; how the metadata is actually written is shown by the following:

+If the current chain is the same size as the existing metadata, the new data is written in place.

+If the current chain is longer than the existing metadata, and use_padding is true, and the last block is a PADDING block of sufficient length, the function will truncate the final padding block so that the overall size of the metadata is the same as the existing metadata, and then just rewrite the metadata. Otherwise, if not all of the above conditions are met, the entire FLAC file must be rewritten. If you want to use padding this way it is a good idea to call FLAC__metadata_chain_sort_padding() first so that you have the maximum amount of padding to work with, unless you need to preserve ordering of the PADDING blocks for some reason.

+If the current chain is shorter than the existing metadata, and use_padding is true, and the final block is a PADDING block, the padding is extended to make the overall size the same as the existing data. If use_padding is true and the last block is not a PADDING block, a new PADDING block is added to the end of the new data to make it the same size as the existing data (if possible, see the note to FLAC__metadata_simple_iterator_set_block() about the four byte limit) and the new data is written in place. If none of the above apply or use_padding is false, the entire FLAC file is rewritten.

+If preserve_file_stats is true, the owner and modification time will be preserved even if the FLAC file is written.

+For this write function to be used, the chain must have been read with FLAC__metadata_chain_read()/FLAC__metadata_chain_read_ogg(), not FLAC__metadata_chain_read_with_callbacks()/FLAC__metadata_chain_read_ogg_with_callbacks().

+

Parameters:
+ + + + +
chain A pointer to an existing chain.
use_padding See above.
preserve_file_stats See above.
+
+
Assertions:
 chain != NULL 
+
+
Return values:
+ + +
FLAC__bool true if the write succeeded, else false. On failure, check the status with FLAC__metadata_chain_status().
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_chain_write_with_callbacks FLAC__Metadata_Chain chain,
FLAC__bool  use_padding,
FLAC__IOHandle  handle,
FLAC__IOCallbacks  callbacks
+
+ + + + + +
+   + + +

+Write all metadata out to a FLAC stream via callbacks.

+(See FLAC__metadata_chain_write() for the details on how padding is used to write metadata in place if possible.)

+The handle must be open for updating and be seekable. The equivalent minimum stdio fopen() file mode is "r+" (or "r+b" for Windows).

+For this write function to be used, the chain must have been read with FLAC__metadata_chain_read_with_callbacks()/FLAC__metadata_chain_read_ogg_with_callbacks(), not FLAC__metadata_chain_read()/FLAC__metadata_chain_read_ogg(). Also, FLAC__metadata_chain_check_if_tempfile_needed() must have returned false.

+

Parameters:
+ + + + + +
chain A pointer to an existing chain.
use_padding See FLAC__metadata_chain_write()
handle The I/O handle of the FLAC stream to write. The handle will NOT be closed after the metadata is written; that is the duty of the caller.
callbacks A set of callbacks to use for I/O. The mandatory callbacks are write and seek.
+
+
Assertions:
 chain != NULL 
+
+
Return values:
+ + +
FLAC__bool true if the write succeeded, else false. On failure, check the status with FLAC__metadata_chain_status().
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_chain_write_with_callbacks_and_tempfile FLAC__Metadata_Chain chain,
FLAC__bool  use_padding,
FLAC__IOHandle  handle,
FLAC__IOCallbacks  callbacks,
FLAC__IOHandle  temp_handle,
FLAC__IOCallbacks  temp_callbacks
+
+ + + + + +
+   + + +

+Write all metadata out to a FLAC stream via callbacks.

+(See FLAC__metadata_chain_write() for the details on how padding is used to write metadata in place if possible.)

+This version of the write-with-callbacks function must be used when FLAC__metadata_chain_check_if_tempfile_needed() returns true. In this function, you must supply an I/O handle corresponding to the FLAC file to edit, and a temporary handle to which the new FLAC file will be written. It is the caller's job to move this temporary FLAC file on top of the original FLAC file to complete the metadata edit.

+The handle must be open for reading and be seekable. The equivalent minimum stdio fopen() file mode is "r" (or "rb" for Windows).

+The temp_handle must be open for writing. The equivalent minimum stdio fopen() file mode is "w" (or "wb" for Windows). It should be an empty stream, or at least positioned at the start-of-file (in which case it is the caller's duty to truncate it on return).

+For this write function to be used, the chain must have been read with FLAC__metadata_chain_read_with_callbacks()/FLAC__metadata_chain_read_ogg_with_callbacks(), not FLAC__metadata_chain_read()/FLAC__metadata_chain_read_ogg(). Also, FLAC__metadata_chain_check_if_tempfile_needed() must have returned true.

+

Parameters:
+ + + + + + + +
chain A pointer to an existing chain.
use_padding See FLAC__metadata_chain_write()
handle The I/O handle of the original FLAC stream to read. The handle will NOT be closed after the metadata is written; that is the duty of the caller.
callbacks A set of callbacks to use for I/O on handle. The mandatory callbacks are read, seek, and eof.
temp_handle The I/O handle of the FLAC stream to write. The handle will NOT be closed after the metadata is written; that is the duty of the caller.
temp_callbacks A set of callbacks to use for I/O on temp_handle. The only mandatory callback is write.
+
+
Assertions:
 chain != NULL 
+
+
Return values:
+ + +
FLAC__bool true if the write succeeded, else false. On failure, check the status with FLAC__metadata_chain_status().
+
+
+

+ + + + +
+ + + + + + + + + +
void FLAC__metadata_chain_merge_padding FLAC__Metadata_Chain chain  ) 
+
+ + + + + +
+   + + +

+Merge adjacent PADDING blocks into a single block.

+

Note:
This function does not write to the FLAC file, it only modifies the chain.
+
Warning:
Any iterator on the current chain will become invalid after this call. You should delete the iterator and get a new one.
+
Parameters:
+ + +
chain A pointer to an existing chain.
+
+
Assertions:
 chain != NULL 
+
+
+

+ + + + +
+ + + + + + + + + +
void FLAC__metadata_chain_sort_padding FLAC__Metadata_Chain chain  ) 
+
+ + + + + +
+   + + +

+This function will move all PADDING blocks to the end on the metadata, then merge them into a single block.

+

Note:
This function does not write to the FLAC file, it only modifies the chain.
+
Warning:
Any iterator on the current chain will become invalid after this call. You should delete the iterator and get a new one.
+
Parameters:
+ + +
chain A pointer to an existing chain.
+
+
Assertions:
 chain != NULL 
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__Metadata_Iterator* FLAC__metadata_iterator_new void   ) 
+
+ + + + + +
+   + + +

+Create a new iterator instance.

+

Return values:
+ + +
FLAC__Metadata_Iterator* NULL if there was an error allocating memory, else the new instance.
+
+
+

+ + + + +
+ + + + + + + + + +
void FLAC__metadata_iterator_delete FLAC__Metadata_Iterator iterator  ) 
+
+ + + + + +
+   + + +

+Free an iterator instance. Deletes the object pointed to by iterator.

+

Parameters:
+ + +
iterator A pointer to an existing iterator.
+
+
Assertions:
 iterator != NULL 
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void FLAC__metadata_iterator_init FLAC__Metadata_Iterator iterator,
FLAC__Metadata_Chain chain
+
+ + + + + +
+   + + +

+Initialize the iterator to point to the first metadata block in the given chain.

+

Parameters:
+ + + +
iterator A pointer to an existing iterator.
chain A pointer to an existing and initialized (read) chain.
+
+
Assertions:
 iterator != NULL 
+
 chain != NULL 
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__metadata_iterator_next FLAC__Metadata_Iterator iterator  ) 
+
+ + + + + +
+   + + +

+Moves the iterator forward one metadata block, returning false if already at the end.

+

Parameters:
+ + +
iterator A pointer to an existing initialized iterator.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_iterator_init()
+
Return values:
+ + +
FLAC__bool false if already at the last metadata block of the chain, else true.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__metadata_iterator_prev FLAC__Metadata_Iterator iterator  ) 
+
+ + + + + +
+   + + +

+Moves the iterator backward one metadata block, returning false if already at the beginning.

+

Parameters:
+ + +
iterator A pointer to an existing initialized iterator.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_iterator_init()
+
Return values:
+ + +
FLAC__bool false if already at the first metadata block of the chain, else true.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__MetadataType FLAC__metadata_iterator_get_block_type const FLAC__Metadata_Iterator iterator  ) 
+
+ + + + + +
+   + + +

+Get the type of the metadata block at the current position.

+

Parameters:
+ + +
iterator A pointer to an existing initialized iterator.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_iterator_init()
+
Return values:
+ + +
FLAC__MetadataType The type of the metadata block at the current iterator position.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__StreamMetadata* FLAC__metadata_iterator_get_block FLAC__Metadata_Iterator iterator  ) 
+
+ + + + + +
+   + + +

+Get the metadata block at the current position. You can modify the block in place but must write the chain before the changes are reflected to the FLAC file. You do not need to call FLAC__metadata_iterator_set_block() to reflect the changes; the pointer returned by FLAC__metadata_iterator_get_block() points directly into the chain.

+

Warning:
Do not call FLAC__metadata_object_delete() on the returned object; to delete a block use FLAC__metadata_iterator_delete_block().
+
Parameters:
+ + +
iterator A pointer to an existing initialized iterator.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_iterator_init()
+
Return values:
+ + +
FLAC__StreamMetadata* The current metadata block.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_iterator_set_block FLAC__Metadata_Iterator iterator,
FLAC__StreamMetadata block
+
+ + + + + +
+   + + +

+Set the metadata block at the current position, replacing the existing block. The new block passed in becomes owned by the chain and it will be deleted when the chain is deleted.

+

Parameters:
+ + + +
iterator A pointer to an existing initialized iterator.
block A pointer to a metadata block.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_iterator_init()
 block != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the conditions in the above description are not met, or a memory allocation error occurs, otherwise true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_iterator_delete_block FLAC__Metadata_Iterator iterator,
FLAC__bool  replace_with_padding
+
+ + + + + +
+   + + +

+Removes the current block from the chain. If replace_with_padding is true, the block will instead be replaced with a padding block of equal size. You can not delete the STREAMINFO block. The iterator will be left pointing to the block before the one just "deleted", even if replace_with_padding is true.

+

Parameters:
+ + + +
iterator A pointer to an existing initialized iterator.
replace_with_padding See above.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_iterator_init()
+
Return values:
+ + +
FLAC__bool false if the conditions in the above description are not met, otherwise true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_iterator_insert_block_before FLAC__Metadata_Iterator iterator,
FLAC__StreamMetadata block
+
+ + + + + +
+   + + +

+Insert a new block before the current block. You cannot insert a block before the first STREAMINFO block. You cannot insert a STREAMINFO block as there can be only one, the one that already exists at the head when you read in a chain. The chain takes ownership of the new block and it will be deleted when the chain is deleted. The iterator will be left pointing to the new block.

+

Parameters:
+ + + +
iterator A pointer to an existing initialized iterator.
block A pointer to a metadata block to insert.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_iterator_init()
+
Return values:
+ + +
FLAC__bool false if the conditions in the above description are not met, or a memory allocation error occurs, otherwise true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_iterator_insert_block_after FLAC__Metadata_Iterator iterator,
FLAC__StreamMetadata block
+
+ + + + + +
+   + + +

+Insert a new block after the current block. You cannot insert a STREAMINFO block as there can be only one, the one that already exists at the head when you read in a chain. The chain takes ownership of the new block and it will be deleted when the chain is deleted. The iterator will be left pointing to the new block.

+

Parameters:
+ + + +
iterator A pointer to an existing initialized iterator.
block A pointer to a metadata block to insert.
+
+
Assertions:
 iterator != NULL 
+
iterator has been successfully initialized with FLAC__metadata_iterator_init()
+
Return values:
+ + +
FLAC__bool false if the conditions in the above description are not met, or a memory allocation error occurs, otherwise true.
+
+
+


Variable Documentation

+

+ + + + +
+ + + + +
const char* const FLAC__Metadata_ChainStatusString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__Metadata_ChainStatus to a C string.

+Using a FLAC__Metadata_ChainStatus as the index to this array will give the string equivalent. The contents should not be modified.

+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flac__metadata__object.html b/3rdparty/libflac/doc/html/api/group__flac__metadata__object.html new file mode 100644 index 0000000..d46077a --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flac__metadata__object.html @@ -0,0 +1,2741 @@ + + +FLAC: FLAC/metadata.h: metadata object methods + + + + +

FLAC/metadata.h: metadata object methods
+ +[FLAC/metadata.h: metadata interfaces] +


Detailed Description

+This module contains methods for manipulating FLAC metadata objects. +

+Since many are variable length we have to be careful about the memory management. We decree that all pointers to data in the object are owned by the object and memory-managed by the object.

+Use the FLAC__metadata_object_new() and FLAC__metadata_object_delete() functions to create all instances. When using the FLAC__metadata_object_set_*() functions to set pointers to data, set copy to true to have the function make it's own copy of the data, or to false to give the object ownership of your data. In the latter case your pointer must be freeable by free() and will be free()d when the object is FLAC__metadata_object_delete()d. It is legal to pass a null pointer as the data pointer to a FLAC__metadata_object_set_*() function as long as the length argument is 0 and the copy argument is false.

+The FLAC__metadata_object_new() and FLAC__metadata_object_clone() function will return NULL in the case of a memory allocation error, otherwise a new object. The FLAC__metadata_object_set_*() functions return false in the case of a memory allocation error.

+We don't have the convenience of C++ here, so note that the library relies on you to keep the types straight. In other words, if you pass, for example, a FLAC__StreamMetadata* that represents a STREAMINFO block to FLAC__metadata_object_application_set_data(), you will get an assertion failure.

+For convenience the FLAC__metadata_object_vorbiscomment_*() functions maintain a trailing NUL on each Vorbis comment entry. This is not counted toward the length or stored in the stream, but it can make working with plain comments (those that don't contain embedded-NULs in the value) easier. Entries passed into these functions have trailing NULs added if missing, and returned entries are guaranteed to have a trailing NUL.

+The FLAC__metadata_object_vorbiscomment_*() functions that take a Vorbis comment entry/name/value will first validate that it complies with the Vorbis comment specification and return false if it does not.

+There is no need to recalculate the length field on metadata blocks you have modified. They will be calculated automatically before they are written back to a file. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

FLAC__StreamMetadataFLAC__metadata_object_new (FLAC__MetadataType type)
FLAC__StreamMetadataFLAC__metadata_object_clone (const FLAC__StreamMetadata *object)
void FLAC__metadata_object_delete (FLAC__StreamMetadata *object)
FLAC__bool FLAC__metadata_object_is_equal (const FLAC__StreamMetadata *block1, const FLAC__StreamMetadata *block2)
FLAC__bool FLAC__metadata_object_application_set_data (FLAC__StreamMetadata *object, FLAC__byte *data, unsigned length, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_seektable_resize_points (FLAC__StreamMetadata *object, unsigned new_num_points)
void FLAC__metadata_object_seektable_set_point (FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point)
FLAC__bool FLAC__metadata_object_seektable_insert_point (FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point)
FLAC__bool FLAC__metadata_object_seektable_delete_point (FLAC__StreamMetadata *object, unsigned point_num)
FLAC__bool FLAC__metadata_object_seektable_is_legal (const FLAC__StreamMetadata *object)
FLAC__bool FLAC__metadata_object_seektable_template_append_placeholders (FLAC__StreamMetadata *object, unsigned num)
FLAC__bool FLAC__metadata_object_seektable_template_append_point (FLAC__StreamMetadata *object, FLAC__uint64 sample_number)
FLAC__bool FLAC__metadata_object_seektable_template_append_points (FLAC__StreamMetadata *object, FLAC__uint64 sample_numbers[], unsigned num)
FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points (FLAC__StreamMetadata *object, unsigned num, FLAC__uint64 total_samples)
FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points_by_samples (FLAC__StreamMetadata *object, unsigned samples, FLAC__uint64 total_samples)
FLAC__bool FLAC__metadata_object_seektable_template_sort (FLAC__StreamMetadata *object, FLAC__bool compact)
FLAC__bool FLAC__metadata_object_vorbiscomment_set_vendor_string (FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_vorbiscomment_resize_comments (FLAC__StreamMetadata *object, unsigned new_num_comments)
FLAC__bool FLAC__metadata_object_vorbiscomment_set_comment (FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_vorbiscomment_insert_comment (FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_vorbiscomment_append_comment (FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_vorbiscomment_replace_comment (FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool all, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_vorbiscomment_delete_comment (FLAC__StreamMetadata *object, unsigned comment_num)
FLAC__bool FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair (FLAC__StreamMetadata_VorbisComment_Entry *entry, const char *field_name, const char *field_value)
FLAC__bool FLAC__metadata_object_vorbiscomment_entry_to_name_value_pair (const FLAC__StreamMetadata_VorbisComment_Entry entry, char **field_name, char **field_value)
FLAC__bool FLAC__metadata_object_vorbiscomment_entry_matches (const FLAC__StreamMetadata_VorbisComment_Entry entry, const char *field_name, unsigned field_name_length)
int FLAC__metadata_object_vorbiscomment_find_entry_from (const FLAC__StreamMetadata *object, unsigned offset, const char *field_name)
int FLAC__metadata_object_vorbiscomment_remove_entry_matching (FLAC__StreamMetadata *object, const char *field_name)
int FLAC__metadata_object_vorbiscomment_remove_entries_matching (FLAC__StreamMetadata *object, const char *field_name)
FLAC__StreamMetadata_CueSheet_TrackFLAC__metadata_object_cuesheet_track_new (void)
FLAC__StreamMetadata_CueSheet_TrackFLAC__metadata_object_cuesheet_track_clone (const FLAC__StreamMetadata_CueSheet_Track *object)
void FLAC__metadata_object_cuesheet_track_delete (FLAC__StreamMetadata_CueSheet_Track *object)
FLAC__bool FLAC__metadata_object_cuesheet_track_resize_indices (FLAC__StreamMetadata *object, unsigned track_num, unsigned new_num_indices)
FLAC__bool FLAC__metadata_object_cuesheet_track_insert_index (FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num, FLAC__StreamMetadata_CueSheet_Index index)
FLAC__bool FLAC__metadata_object_cuesheet_track_insert_blank_index (FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num)
FLAC__bool FLAC__metadata_object_cuesheet_track_delete_index (FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num)
FLAC__bool FLAC__metadata_object_cuesheet_resize_tracks (FLAC__StreamMetadata *object, unsigned new_num_tracks)
FLAC__bool FLAC__metadata_object_cuesheet_insert_track (FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_cuesheet_insert_blank_track (FLAC__StreamMetadata *object, unsigned track_num)
FLAC__bool FLAC__metadata_object_cuesheet_delete_track (FLAC__StreamMetadata *object, unsigned track_num)
FLAC__bool FLAC__metadata_object_cuesheet_is_legal (const FLAC__StreamMetadata *object, FLAC__bool check_cd_da_subset, const char **violation)
FLAC__uint32 FLAC__metadata_object_cuesheet_calculate_cddb_id (const FLAC__StreamMetadata *object)
FLAC__bool FLAC__metadata_object_picture_set_mime_type (FLAC__StreamMetadata *object, char *mime_type, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_picture_set_description (FLAC__StreamMetadata *object, FLAC__byte *description, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_picture_set_data (FLAC__StreamMetadata *object, FLAC__byte *data, FLAC__uint32 length, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_picture_is_legal (const FLAC__StreamMetadata *object, const char **violation)
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
FLAC__StreamMetadata* FLAC__metadata_object_new FLAC__MetadataType  type  ) 
+
+ + + + + +
+   + + +

+Create a new metadata object instance of the given type.

+The object will be "empty"; i.e. values and data pointers will be 0, with the exception of FLAC__METADATA_TYPE_VORBIS_COMMENT, which will have the vendor string set (but zero comments).

+Do not pass in a value greater than or equal to FLAC__METADATA_TYPE_UNDEFINED unless you really know what you're doing.

+

Parameters:
+ + +
type Type of object to create
+
+
Return values:
+ + +
FLAC__StreamMetadata* NULL if there was an error allocating memory or the type code is greater than FLAC__MAX_METADATA_TYPE_CODE, else the new instance.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__StreamMetadata* FLAC__metadata_object_clone const FLAC__StreamMetadata object  ) 
+
+ + + + + +
+   + + +

+Create a copy of an existing metadata object.

+The copy is a "deep" copy, i.e. dynamically allocated data within the object is also copied. The caller takes ownership of the new block and is responsible for freeing it with FLAC__metadata_object_delete().

+

Parameters:
+ + +
object Pointer to object to copy.
+
+
Assertions:
 object != NULL 
+
+
Return values:
+ + +
FLAC__StreamMetadata* NULL if there was an error allocating memory, else the new instance.
+
+
+

+ + + + +
+ + + + + + + + + +
void FLAC__metadata_object_delete FLAC__StreamMetadata object  ) 
+
+ + + + + +
+   + + +

+Free a metadata object. Deletes the object pointed to by object.

+The delete is a "deep" delete, i.e. dynamically allocated data within the object is also deleted.

+

Parameters:
+ + +
object A pointer to an existing object.
+
+
Assertions:
 object != NULL 
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_is_equal const FLAC__StreamMetadata block1,
const FLAC__StreamMetadata block2
+
+ + + + + +
+   + + +

+Compares two metadata objects.

+The compare is "deep", i.e. dynamically allocated data within the object is also compared.

+

Parameters:
+ + + +
block1 A pointer to an existing object.
block2 A pointer to an existing object.
+
+
Assertions:
 block1 != NULL 
+
 block2 != NULL 
+
+
Return values:
+ + +
FLAC__bool true if objects are identical, else false.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_application_set_data FLAC__StreamMetadata object,
FLAC__byte *  data,
unsigned  length,
FLAC__bool  copy
+
+ + + + + +
+   + + +

+Sets the application data of an APPLICATION block.

+If copy is true, a copy of the data is stored; otherwise, the object takes ownership of the pointer. The existing data will be freed if this function is successful, otherwise the original data will remain if copy is true and malloc() fails.

+

Note:
It is safe to pass a const pointer to data if copy is true.
+
Parameters:
+ + + + + +
object A pointer to an existing APPLICATION object.
data A pointer to the data to set.
length The length of data in bytes.
copy See above.
+
+
Assertions:
 object != NULL 
+
 (data != NULL && length > 0) ||
+ (data == NULL && length == 0 && copy == false) 
+
+
Return values:
+ + +
FLAC__bool false if copy is true and malloc() fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_seektable_resize_points FLAC__StreamMetadata object,
unsigned  new_num_points
+
+ + + + + +
+   + + +

+Resize the seekpoint array.

+If the size shrinks, elements will truncated; if it grows, new placeholder points will be added to the end.

+

Parameters:
+ + + +
object A pointer to an existing SEEKTABLE object.
new_num_points The desired length of the array; may be 0.
+
+
Assertions:
 object != NULL 
+
 (object->data.seek_table.points == NULL && object->data.seek_table.num_points == 0) ||
+ (object->data.seek_table.points != NULL && object->data.seek_table.num_points > 0) 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation error, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void FLAC__metadata_object_seektable_set_point FLAC__StreamMetadata object,
unsigned  point_num,
FLAC__StreamMetadata_SeekPoint  point
+
+ + + + + +
+   + + +

+Set a seekpoint in a seektable.

+

Parameters:
+ + + + +
object A pointer to an existing SEEKTABLE object.
point_num Index into seekpoint array to set.
point The point to set.
+
+
Assertions:
 object != NULL 
+
 object->data.seek_table.num_points > point_num 
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_seektable_insert_point FLAC__StreamMetadata object,
unsigned  point_num,
FLAC__StreamMetadata_SeekPoint  point
+
+ + + + + +
+   + + +

+Insert a seekpoint into a seektable.

+

Parameters:
+ + + + +
object A pointer to an existing SEEKTABLE object.
point_num Index into seekpoint array to set.
point The point to set.
+
+
Assertions:
 object != NULL 
+
 object->data.seek_table.num_points >= point_num 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation error, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_seektable_delete_point FLAC__StreamMetadata object,
unsigned  point_num
+
+ + + + + +
+   + + +

+Delete a seekpoint from a seektable.

+

Parameters:
+ + + +
object A pointer to an existing SEEKTABLE object.
point_num Index into seekpoint array to set.
+
+
Assertions:
 object != NULL 
+
 object->data.seek_table.num_points > point_num 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation error, else true.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__metadata_object_seektable_is_legal const FLAC__StreamMetadata object  ) 
+
+ + + + + +
+   + + +

+Check a seektable to see if it conforms to the FLAC specification. See the format specification for limits on the contents of the seektable.

+

Parameters:
+ + +
object A pointer to an existing SEEKTABLE object.
+
+
Assertions:
 object != NULL 
+
+
Return values:
+ + +
FLAC__bool false if seek table is illegal, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_seektable_template_append_placeholders FLAC__StreamMetadata object,
unsigned  num
+
+ + + + + +
+   + + +

+Append a number of placeholder points to the end of a seek table.

+

Note:
As with the other ..._seektable_template_... functions, you should call FLAC__metadata_object_seektable_template_sort() when finished to make the seek table legal.
+
Parameters:
+ + + +
object A pointer to an existing SEEKTABLE object.
num The number of placeholder points to append.
+
+
Assertions:
 object != NULL 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_seektable_template_append_point FLAC__StreamMetadata object,
FLAC__uint64  sample_number
+
+ + + + + +
+   + + +

+Append a specific seek point template to the end of a seek table.

+

Note:
As with the other ..._seektable_template_... functions, you should call FLAC__metadata_object_seektable_template_sort() when finished to make the seek table legal.
+
Parameters:
+ + + +
object A pointer to an existing SEEKTABLE object.
sample_number The sample number of the seek point template.
+
+
Assertions:
 object != NULL 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_seektable_template_append_points FLAC__StreamMetadata object,
FLAC__uint64  sample_numbers[],
unsigned  num
+
+ + + + + +
+   + + +

+Append specific seek point templates to the end of a seek table.

+

Note:
As with the other ..._seektable_template_... functions, you should call FLAC__metadata_object_seektable_template_sort() when finished to make the seek table legal.
+
Parameters:
+ + + + +
object A pointer to an existing SEEKTABLE object.
sample_numbers An array of sample numbers for the seek points.
num The number of seek point templates to append.
+
+
Assertions:
 object != NULL 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points FLAC__StreamMetadata object,
unsigned  num,
FLAC__uint64  total_samples
+
+ + + + + +
+   + + +

+Append a set of evenly-spaced seek point templates to the end of a seek table.

+

Note:
As with the other ..._seektable_template_... functions, you should call FLAC__metadata_object_seektable_template_sort() when finished to make the seek table legal.
+
Parameters:
+ + + + +
object A pointer to an existing SEEKTABLE object.
num The number of placeholder points to append.
total_samples The total number of samples to be encoded; the seekpoints will be spaced approximately total_samples / num samples apart.
+
+
Assertions:
 object != NULL 
+
 total_samples > 0 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points_by_samples FLAC__StreamMetadata object,
unsigned  samples,
FLAC__uint64  total_samples
+
+ + + + + +
+   + + +

+Append a set of evenly-spaced seek point templates to the end of a seek table.

+

Note:
As with the other ..._seektable_template_... functions, you should call FLAC__metadata_object_seektable_template_sort() when finished to make the seek table legal.
+
Parameters:
+ + + + +
object A pointer to an existing SEEKTABLE object.
samples The number of samples apart to space the placeholder points. The first point will be at sample 0, the second at sample samples, then 2*samples, and so on. As long as samples and total_samples are greater than 0, there will always be at least one seekpoint at sample 0.
total_samples The total number of samples to be encoded; the seekpoints will be spaced samples samples apart.
+
+
Assertions:
 object != NULL 
+
 samples > 0 
+
 total_samples > 0 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_seektable_template_sort FLAC__StreamMetadata object,
FLAC__bool  compact
+
+ + + + + +
+   + + +

+Sort a seek table's seek points according to the format specification, removing duplicates.

+

Parameters:
+ + + +
object A pointer to a seek table to be sorted.
compact If false, behaves like FLAC__format_seektable_sort(). If true, duplicates are deleted and the seek table is shrunk appropriately; the number of placeholder points present in the seek table will be the same after the call as before.
+
+
Assertions:
 object != NULL 
+
+
Return values:
+ + +
FLAC__bool false if realloc() fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_vorbiscomment_set_vendor_string FLAC__StreamMetadata object,
FLAC__StreamMetadata_VorbisComment_Entry  entry,
FLAC__bool  copy
+
+ + + + + +
+   + + +

+Sets the vendor string in a VORBIS_COMMENT block.

+For convenience, a trailing NUL is added to the entry if it doesn't have one already.

+If copy is true, a copy of the entry is stored; otherwise, the object takes ownership of the entry.entry pointer.

+

Note:
If this function returns false, the caller still owns the pointer.
+
Parameters:
+ + + + +
object A pointer to an existing VORBIS_COMMENT object.
entry The entry to set the vendor string to.
copy See above.
+
+
Assertions:
 object != NULL 
+
 (entry.entry != NULL && entry.length > 0) ||
+ (entry.entry == NULL && entry.length == 0) 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation fails or entry does not comply with the Vorbis comment specification, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_vorbiscomment_resize_comments FLAC__StreamMetadata object,
unsigned  new_num_comments
+
+ + + + + +
+   + + +

+Resize the comment array.

+If the size shrinks, elements will truncated; if it grows, new empty fields will be added to the end.

+

Parameters:
+ + + +
object A pointer to an existing VORBIS_COMMENT object.
new_num_comments The desired length of the array; may be 0.
+
+
Assertions:
 object != NULL 
+
 (object->data.vorbis_comment.comments == NULL && object->data.vorbis_comment.num_comments == 0) ||
+ (object->data.vorbis_comment.comments != NULL && object->data.vorbis_comment.num_comments > 0) 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_vorbiscomment_set_comment FLAC__StreamMetadata object,
unsigned  comment_num,
FLAC__StreamMetadata_VorbisComment_Entry  entry,
FLAC__bool  copy
+
+ + + + + +
+   + + +

+Sets a comment in a VORBIS_COMMENT block.

+For convenience, a trailing NUL is added to the entry if it doesn't have one already.

+If copy is true, a copy of the entry is stored; otherwise, the object takes ownership of the entry.entry pointer.

+

Note:
If this function returns false, the caller still owns the pointer.
+
Parameters:
+ + + + + +
object A pointer to an existing VORBIS_COMMENT object.
comment_num Index into comment array to set.
entry The entry to set the comment to.
copy See above.
+
+
Assertions:
 object != NULL 
+
 comment_num < object->data.vorbis_comment.num_comments 
+
 (entry.entry != NULL && entry.length > 0) ||
+ (entry.entry == NULL && entry.length == 0) 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation fails or entry does not comply with the Vorbis comment specification, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_vorbiscomment_insert_comment FLAC__StreamMetadata object,
unsigned  comment_num,
FLAC__StreamMetadata_VorbisComment_Entry  entry,
FLAC__bool  copy
+
+ + + + + +
+   + + +

+Insert a comment in a VORBIS_COMMENT block at the given index.

+For convenience, a trailing NUL is added to the entry if it doesn't have one already.

+If copy is true, a copy of the entry is stored; otherwise, the object takes ownership of the entry.entry pointer.

+

Note:
If this function returns false, the caller still owns the pointer.
+
Parameters:
+ + + + + +
object A pointer to an existing VORBIS_COMMENT object.
comment_num The index at which to insert the comment. The comments at and after comment_num move right one position. To append a comment to the end, set comment_num to object->data.vorbis_comment.num_comments .
entry The comment to insert.
copy See above.
+
+
Assertions:
 object != NULL 
+
 object->data.vorbis_comment.num_comments >= comment_num 
+
 (entry.entry != NULL && entry.length > 0) ||
+ (entry.entry == NULL && entry.length == 0 && copy == false) 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation fails or entry does not comply with the Vorbis comment specification, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_vorbiscomment_append_comment FLAC__StreamMetadata object,
FLAC__StreamMetadata_VorbisComment_Entry  entry,
FLAC__bool  copy
+
+ + + + + +
+   + + +

+Appends a comment to a VORBIS_COMMENT block.

+For convenience, a trailing NUL is added to the entry if it doesn't have one already.

+If copy is true, a copy of the entry is stored; otherwise, the object takes ownership of the entry.entry pointer.

+

Note:
If this function returns false, the caller still owns the pointer.
+
Parameters:
+ + + + +
object A pointer to an existing VORBIS_COMMENT object.
entry The comment to insert.
copy See above.
+
+
Assertions:
 object != NULL 
+
 (entry.entry != NULL && entry.length > 0) ||
+ (entry.entry == NULL && entry.length == 0 && copy == false) 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation fails or entry does not comply with the Vorbis comment specification, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_vorbiscomment_replace_comment FLAC__StreamMetadata object,
FLAC__StreamMetadata_VorbisComment_Entry  entry,
FLAC__bool  all,
FLAC__bool  copy
+
+ + + + + +
+   + + +

+Replaces comments in a VORBIS_COMMENT block with a new one.

+For convenience, a trailing NUL is added to the entry if it doesn't have one already.

+Depending on the the value of all, either all or just the first comment whose field name(s) match the given entry's name will be replaced by the given entry. If no comments match, entry will simply be appended.

+If copy is true, a copy of the entry is stored; otherwise, the object takes ownership of the entry.entry pointer.

+

Note:
If this function returns false, the caller still owns the pointer.
+
Parameters:
+ + + + + +
object A pointer to an existing VORBIS_COMMENT object.
entry The comment to insert.
all If true, all comments whose field name matches entry's field name will be removed, and entry will be inserted at the position of the first matching comment. If false, only the first comment whose field name matches entry's field name will be replaced with entry.
copy See above.
+
+
Assertions:
 object != NULL 
+
 (entry.entry != NULL && entry.length > 0) ||
+ (entry.entry == NULL && entry.length == 0 && copy == false) 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation fails or entry does not comply with the Vorbis comment specification, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_vorbiscomment_delete_comment FLAC__StreamMetadata object,
unsigned  comment_num
+
+ + + + + +
+   + + +

+Delete a comment in a VORBIS_COMMENT block at the given index.

+

Parameters:
+ + + +
object A pointer to an existing VORBIS_COMMENT object.
comment_num The index of the comment to delete.
+
+
Assertions:
 object != NULL 
+
 object->data.vorbis_comment.num_comments > comment_num 
+
+
Return values:
+ + +
FLAC__bool false if realloc() fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair FLAC__StreamMetadata_VorbisComment_Entry entry,
const char *  field_name,
const char *  field_value
+
+ + + + + +
+   + + +

+Creates a Vorbis comment entry from NUL-terminated name and value strings.

+On return, the filled-in entry->entry pointer will point to malloc()ed memory and shall be owned by the caller. For convenience the entry will have a terminating NUL.

+

Parameters:
+ + + + +
entry A pointer to a Vorbis comment entry. The entry's entry pointer should not point to allocated memory as it will be overwritten.
field_name The field name in ASCII, NUL terminated.
field_value The field value in UTF-8, NUL terminated.
+
+
Assertions:
 entry != NULL 
+
 field_name != NULL 
+
 field_value != NULL 
+
+
Return values:
+ + +
FLAC__bool false if malloc() fails, or if field_name or field_value does not comply with the Vorbis comment specification, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_vorbiscomment_entry_to_name_value_pair const FLAC__StreamMetadata_VorbisComment_Entry  entry,
char **  field_name,
char **  field_value
+
+ + + + + +
+   + + +

+Splits a Vorbis comment entry into NUL-terminated name and value strings.

+The returned pointers to name and value will be allocated by malloc() and shall be owned by the caller.

+

Parameters:
+ + + + +
entry An existing Vorbis comment entry.
field_name The address of where the returned pointer to the field name will be stored.
field_value The address of where the returned pointer to the field value will be stored.
+
+
Assertions:
 (entry.entry != NULL && entry.length > 0) 
+
 memchr(entry.entry, '=', entry.length) != NULL 
+
 field_name != NULL 
+
 field_value != NULL 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation fails or entry does not comply with the Vorbis comment specification, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_vorbiscomment_entry_matches const FLAC__StreamMetadata_VorbisComment_Entry  entry,
const char *  field_name,
unsigned  field_name_length
+
+ + + + + +
+   + + +

+Check if the given Vorbis comment entry's field name matches the given field name.

+

Parameters:
+ + + + +
entry An existing Vorbis comment entry.
field_name The field name to check.
field_name_length The length of field_name, not including the terminating NUL.
+
+
Assertions:
 (entry.entry != NULL && entry.length > 0) 
+
+
Return values:
+ + +
FLAC__bool true if the field names match, else false
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int FLAC__metadata_object_vorbiscomment_find_entry_from const FLAC__StreamMetadata object,
unsigned  offset,
const char *  field_name
+
+ + + + + +
+   + + +

+Find a Vorbis comment with the given field name.

+The search begins at entry number offset; use an offset of 0 to search from the beginning of the comment array.

+

Parameters:
+ + + + +
object A pointer to an existing VORBIS_COMMENT object.
offset The offset into the comment array from where to start the search.
field_name The field name of the comment to find.
+
+
Assertions:
 object != NULL 
+
 field_name != NULL 
+
+
Return values:
+ + +
int The offset in the comment array of the first comment whose field name matches field_name, or -1 if no match was found.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
int FLAC__metadata_object_vorbiscomment_remove_entry_matching FLAC__StreamMetadata object,
const char *  field_name
+
+ + + + + +
+   + + +

+Remove first Vorbis comment matching the given field name.

+

Parameters:
+ + + +
object A pointer to an existing VORBIS_COMMENT object.
field_name The field name of comment to delete.
+
+
Assertions:
 object != NULL 
+
+
Return values:
+ + +
int -1 for memory allocation error, 0 for no matching entries, 1 for one matching entry deleted.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
int FLAC__metadata_object_vorbiscomment_remove_entries_matching FLAC__StreamMetadata object,
const char *  field_name
+
+ + + + + +
+   + + +

+Remove all Vorbis comments matching the given field name.

+

Parameters:
+ + + +
object A pointer to an existing VORBIS_COMMENT object.
field_name The field name of comments to delete.
+
+
Assertions:
 object != NULL 
+
+
Return values:
+ + +
int -1 for memory allocation error, 0 for no matching entries, else the number of matching entries deleted.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__StreamMetadata_CueSheet_Track* FLAC__metadata_object_cuesheet_track_new void   ) 
+
+ + + + + +
+   + + +

+Create a new CUESHEET track instance.

+The object will be "empty"; i.e. values and data pointers will be 0.

+

Return values:
+ + +
FLAC__StreamMetadata_CueSheet_Track* NULL if there was an error allocating memory, else the new instance.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__StreamMetadata_CueSheet_Track* FLAC__metadata_object_cuesheet_track_clone const FLAC__StreamMetadata_CueSheet_Track object  ) 
+
+ + + + + +
+   + + +

+Create a copy of an existing CUESHEET track object.

+The copy is a "deep" copy, i.e. dynamically allocated data within the object is also copied. The caller takes ownership of the new object and is responsible for freeing it with FLAC__metadata_object_cuesheet_track_delete().

+

Parameters:
+ + +
object Pointer to object to copy.
+
+
Assertions:
 object != NULL 
+
+
Return values:
+ + +
FLAC__StreamMetadata_CueSheet_Track* NULL if there was an error allocating memory, else the new instance.
+
+
+

+ + + + +
+ + + + + + + + + +
void FLAC__metadata_object_cuesheet_track_delete FLAC__StreamMetadata_CueSheet_Track object  ) 
+
+ + + + + +
+   + + +

+Delete a CUESHEET track object

+

Parameters:
+ + +
object A pointer to an existing CUESHEET track object.
+
+
Assertions:
 object != NULL 
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_cuesheet_track_resize_indices FLAC__StreamMetadata object,
unsigned  track_num,
unsigned  new_num_indices
+
+ + + + + +
+   + + +

+Resize a track's index point array.

+If the size shrinks, elements will truncated; if it grows, new blank indices will be added to the end.

+

Parameters:
+ + + + +
object A pointer to an existing CUESHEET object.
track_num The index of the track to modify. NOTE: this is not necessarily the same as the track's number field.
new_num_indices The desired length of the array; may be 0.
+
+
Assertions:
 object != NULL 
+
 object->type == FLAC__METADATA_TYPE_CUESHEET 
+
 object->data.cue_sheet.num_tracks > track_num 
+
 (object->data.cue_sheet.tracks[track_num].indices == NULL && object->data.cue_sheet.tracks[track_num].num_indices == 0) ||
+ (object->data.cue_sheet.tracks[track_num].indices != NULL && object->data.cue_sheet.tracks[track_num].num_indices > 0) 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation error, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_cuesheet_track_insert_index FLAC__StreamMetadata object,
unsigned  track_num,
unsigned  index_num,
FLAC__StreamMetadata_CueSheet_Index  index
+
+ + + + + +
+   + + +

+Insert an index point in a CUESHEET track at the given index.

+

Parameters:
+ + + + + +
object A pointer to an existing CUESHEET object.
track_num The index of the track to modify. NOTE: this is not necessarily the same as the track's number field.
index_num The index into the track's index array at which to insert the index point. NOTE: this is not necessarily the same as the index point's number field. The indices at and after index_num move right one position. To append an index point to the end, set index_num to object->data.cue_sheet.tracks[track_num].num_indices .
index The index point to insert.
+
+
Assertions:
 object != NULL 
+
 object->type == FLAC__METADATA_TYPE_CUESHEET 
+
 object->data.cue_sheet.num_tracks > track_num 
+
 object->data.cue_sheet.tracks[track_num].num_indices >= index_num 
+
+
Return values:
+ + +
FLAC__bool false if realloc() fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_cuesheet_track_insert_blank_index FLAC__StreamMetadata object,
unsigned  track_num,
unsigned  index_num
+
+ + + + + +
+   + + +

+Insert a blank index point in a CUESHEET track at the given index.

+A blank index point is one in which all field values are zero.

+

Parameters:
+ + + + +
object A pointer to an existing CUESHEET object.
track_num The index of the track to modify. NOTE: this is not necessarily the same as the track's number field.
index_num The index into the track's index array at which to insert the index point. NOTE: this is not necessarily the same as the index point's number field. The indices at and after index_num move right one position. To append an index point to the end, set index_num to object->data.cue_sheet.tracks[track_num].num_indices .
+
+
Assertions:
 object != NULL 
+
 object->type == FLAC__METADATA_TYPE_CUESHEET 
+
 object->data.cue_sheet.num_tracks > track_num 
+
 object->data.cue_sheet.tracks[track_num].num_indices >= index_num 
+
+
Return values:
+ + +
FLAC__bool false if realloc() fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_cuesheet_track_delete_index FLAC__StreamMetadata object,
unsigned  track_num,
unsigned  index_num
+
+ + + + + +
+   + + +

+Delete an index point in a CUESHEET track at the given index.

+

Parameters:
+ + + + +
object A pointer to an existing CUESHEET object.
track_num The index into the track array of the track to modify. NOTE: this is not necessarily the same as the track's number field.
index_num The index into the track's index array of the index to delete. NOTE: this is not necessarily the same as the index's number field.
+
+
Assertions:
 object != NULL 
+
 object->type == FLAC__METADATA_TYPE_CUESHEET 
+
 object->data.cue_sheet.num_tracks > track_num 
+
 object->data.cue_sheet.tracks[track_num].num_indices > index_num 
+
+
Return values:
+ + +
FLAC__bool false if realloc() fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_cuesheet_resize_tracks FLAC__StreamMetadata object,
unsigned  new_num_tracks
+
+ + + + + +
+   + + +

+Resize the track array.

+If the size shrinks, elements will truncated; if it grows, new blank tracks will be added to the end.

+

Parameters:
+ + + +
object A pointer to an existing CUESHEET object.
new_num_tracks The desired length of the array; may be 0.
+
+
Assertions:
 object != NULL 
+
 object->type == FLAC__METADATA_TYPE_CUESHEET 
+
 (object->data.cue_sheet.tracks == NULL && object->data.cue_sheet.num_tracks == 0) ||
+ (object->data.cue_sheet.tracks != NULL && object->data.cue_sheet.num_tracks > 0) 
+
+
Return values:
+ + +
FLAC__bool false if memory allocation error, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_cuesheet_insert_track FLAC__StreamMetadata object,
unsigned  track_num,
FLAC__StreamMetadata_CueSheet_Track track,
FLAC__bool  copy
+
+ + + + + +
+   + + +

+Sets a track in a CUESHEET block.

+If copy is true, a copy of the track is stored; otherwise, the object takes ownership of the track pointer.

+

Parameters:
+ + + + + +
object A pointer to an existing CUESHEET object.
track_num Index into track array to set. NOTE: this is not necessarily the same as the track's number field.
track The track to set the track to. You may safely pass in a const pointer if copy is true.
copy See above.
+
+
Assertions:
 object != NULL 
+
 object->type == FLAC__METADATA_TYPE_CUESHEET 
+
 track_num < object->data.cue_sheet.num_tracks 
+
 (track->indices != NULL && track->num_indices > 0) ||
+ (track->indices == NULL && track->num_indices == 0)
+ \retval FLAC__bool
+    \c false if \a copy is \c true and malloc() fails, else \c true.
+ */
+   FLAC__bool FLAC__metadata_object_cuesheet_set_track(FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy);
+
+
 object->type == FLAC__METADATA_TYPE_CUESHEET 
+
 object->data.cue_sheet.num_tracks >= track_num 
+
+
Return values:
+ + +
FLAC__bool false if copy is true and malloc() fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_cuesheet_insert_blank_track FLAC__StreamMetadata object,
unsigned  track_num
+
+ + + + + +
+   + + +

+Insert a blank track in a CUESHEET block at the given index.

+A blank track is one in which all field values are zero.

+

Parameters:
+ + + +
object A pointer to an existing CUESHEET object.
track_num The index at which to insert the track. NOTE: this is not necessarily the same as the track's number field. The tracks at and after track_num move right one position. To append a track to the end, set track_num to object->data.cue_sheet.num_tracks .
+
+
Assertions:
 object != NULL 
+
 object->type == FLAC__METADATA_TYPE_CUESHEET 
+
 object->data.cue_sheet.num_tracks >= track_num 
+
+
Return values:
+ + +
FLAC__bool false if copy is true and malloc() fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_cuesheet_delete_track FLAC__StreamMetadata object,
unsigned  track_num
+
+ + + + + +
+   + + +

+Delete a track in a CUESHEET block at the given index.

+

Parameters:
+ + + +
object A pointer to an existing CUESHEET object.
track_num The index into the track array of the track to delete. NOTE: this is not necessarily the same as the track's number field.
+
+
Assertions:
 object != NULL 
+
 object->type == FLAC__METADATA_TYPE_CUESHEET 
+
 object->data.cue_sheet.num_tracks > track_num 
+
+
Return values:
+ + +
FLAC__bool false if realloc() fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_cuesheet_is_legal const FLAC__StreamMetadata object,
FLAC__bool  check_cd_da_subset,
const char **  violation
+
+ + + + + +
+   + + +

+Check a cue sheet to see if it conforms to the FLAC specification. See the format specification for limits on the contents of the cue sheet.

+

Parameters:
+ + + + +
object A pointer to an existing CUESHEET object.
check_cd_da_subset If true, check CUESHEET against more stringent requirements for a CD-DA (audio) disc.
violation Address of a pointer to a string. If there is a violation, a pointer to a string explanation of the violation will be returned here. violation may be NULL if you don't need the returned string. Do not free the returned string; it will always point to static data.
+
+
Assertions:
 object != NULL 
+
 object->type == FLAC__METADATA_TYPE_CUESHEET 
+
+
Return values:
+ + +
FLAC__bool false if cue sheet is illegal, else true.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__uint32 FLAC__metadata_object_cuesheet_calculate_cddb_id const FLAC__StreamMetadata object  ) 
+
+ + + + + +
+   + + +

+Calculate and return the CDDB/freedb ID for a cue sheet. The function assumes the cue sheet corresponds to a CD; the result is undefined if the cuesheet's is_cd bit is not set.

+

Parameters:
+ + +
object A pointer to an existing CUESHEET object.
+
+
Assertions:
 object != NULL 
+
 object->type == FLAC__METADATA_TYPE_CUESHEET 
+
+
Return values:
+ + +
FLAC__uint32 The unsigned integer representation of the CDDB/freedb ID
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_picture_set_mime_type FLAC__StreamMetadata object,
char *  mime_type,
FLAC__bool  copy
+
+ + + + + +
+   + + +

+Sets the MIME type of a PICTURE block.

+If copy is true, a copy of the string is stored; otherwise, the object takes ownership of the pointer. The existing string will be freed if this function is successful, otherwise the original string will remain if copy is true and malloc() fails.

+

Note:
It is safe to pass a const pointer to mime_type if copy is true.
+
Parameters:
+ + + + +
object A pointer to an existing PICTURE object.
mime_type A pointer to the MIME type string. The string must be ASCII characters 0x20-0x7e, NUL-terminated. No validation is done.
copy See above.
+
+
Assertions:
 object != NULL 
+
 object->type == FLAC__METADATA_TYPE_PICTURE 
+
 (mime_type != NULL) 
+
+
Return values:
+ + +
FLAC__bool false if copy is true and malloc() fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_picture_set_description FLAC__StreamMetadata object,
FLAC__byte *  description,
FLAC__bool  copy
+
+ + + + + +
+   + + +

+Sets the description of a PICTURE block.

+If copy is true, a copy of the string is stored; otherwise, the object takes ownership of the pointer. The existing string will be freed if this function is successful, otherwise the original string will remain if copy is true and malloc() fails.

+

Note:
It is safe to pass a const pointer to description if copy is true.
+
Parameters:
+ + + + +
object A pointer to an existing PICTURE object.
description A pointer to the description string. The string must be valid UTF-8, NUL-terminated. No validation is done.
copy See above.
+
+
Assertions:
 object != NULL 
+
 object->type == FLAC__METADATA_TYPE_PICTURE 
+
 (description != NULL) 
+
+
Return values:
+ + +
FLAC__bool false if copy is true and malloc() fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_picture_set_data FLAC__StreamMetadata object,
FLAC__byte *  data,
FLAC__uint32  length,
FLAC__bool  copy
+
+ + + + + +
+   + + +

+Sets the picture data of a PICTURE block.

+If copy is true, a copy of the data is stored; otherwise, the object takes ownership of the pointer. Also sets the data_length field of the metadata object to what is passed in as the length parameter. The existing data will be freed if this function is successful, otherwise the original data and data_length will remain if copy is true and malloc() fails.

+

Note:
It is safe to pass a const pointer to data if copy is true.
+
Parameters:
+ + + + + +
object A pointer to an existing PICTURE object.
data A pointer to the data to set.
length The length of data in bytes.
copy See above.
+
+
Assertions:
 object != NULL 
+
 object->type == FLAC__METADATA_TYPE_PICTURE 
+
 (data != NULL && length > 0) ||
+ (data == NULL && length == 0 && copy == false) 
+
+
Return values:
+ + +
FLAC__bool false if copy is true and malloc() fails, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__metadata_object_picture_is_legal const FLAC__StreamMetadata object,
const char **  violation
+
+ + + + + +
+   + + +

+Check a PICTURE block to see if it conforms to the FLAC specification. See the format specification for limits on the contents of the PICTURE block.

+

Parameters:
+ + + +
object A pointer to existing PICTURE block to be checked.
violation Address of a pointer to a string. If there is a violation, a pointer to a string explanation of the violation will be returned here. violation may be NULL if you don't need the returned string. Do not free the returned string; it will always point to static data.
+
+
Assertions:
 object != NULL 
+
 object->type == FLAC__METADATA_TYPE_PICTURE 
+
+
Return values:
+ + +
FLAC__bool false if PICTURE block is illegal, else true.
+
+
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flac__stream__decoder.html b/3rdparty/libflac/doc/html/api/group__flac__stream__decoder.html new file mode 100644 index 0000000..902218e --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flac__stream__decoder.html @@ -0,0 +1,2854 @@ + + +FLAC: FLAC/stream_decoder.h: stream decoder interface + + + + +

FLAC/stream_decoder.h: stream decoder interface
+ +[FLAC/_decoder.h: decoder interfaces] +


Detailed Description

+This module contains the functions which implement the stream decoder. +

+The stream decoder can decode native FLAC, and optionally Ogg FLAC (check FLAC_API_SUPPORTS_OGG_FLAC) streams and files.

+The basic usage of this decoder is as follows:

+

+In more detail, the program will create a new instance by calling FLAC__stream_decoder_new(), then call FLAC__stream_decoder_set_*() functions to override the default decoder options, and call one of the FLAC__stream_decoder_init_*() functions.

+There are three initialization functions for native FLAC, one for setting up the decoder to decode FLAC data from the client via callbacks, and two for decoding directly from a FLAC file.

+For decoding via callbacks, use FLAC__stream_decoder_init_stream(). You must also supply several callbacks for handling I/O. Some (like seeking) are optional, depending on the capabilities of the input.

+For decoding directly from a file, use FLAC__stream_decoder_init_FILE() or FLAC__stream_decoder_init_file(). Then you must only supply an open FILE* or filename and fewer callbacks; the decoder will handle the other callbacks internally.

+There are three similarly-named init functions for decoding from Ogg FLAC streams. Check FLAC_API_SUPPORTS_OGG_FLAC to find out if the library has been built with Ogg support.

+Once the decoder is initialized, your program will call one of several functions to start the decoding process:

+

    +
  • FLAC__stream_decoder_process_single() - Tells the decoder to process at most one metadata block or audio frame and return, calling either the metadata callback or write callback, respectively, once. If the decoder loses sync it will return with only the error callback being called.
  • FLAC__stream_decoder_process_until_end_of_metadata() - Tells the decoder to process the stream from the current location and stop upon reaching the first audio frame. The client will get one metadata, write, or error callback per metadata block, audio frame, or sync error, respectively.
  • FLAC__stream_decoder_process_until_end_of_stream() - Tells the decoder to process the stream from the current location until the read callback returns FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM or FLAC__STREAM_DECODER_READ_STATUS_ABORT. The client will get one metadata, write, or error callback per metadata block, audio frame, or sync error, respectively.
+

+When the decoder has finished decoding (normally or through an abort), the instance is finished by calling FLAC__stream_decoder_finish(), which ensures the decoder is in the correct state and frees memory. Then the instance may be deleted with FLAC__stream_decoder_delete() or initialized again to decode another stream.

+Seeking is exposed through the FLAC__stream_decoder_seek_absolute() method. At any point after the stream decoder has been initialized, the client can call this function to seek to an exact sample within the stream. Subsequently, the first time the write callback is called it will be passed a (possibly partial) block starting at that sample.

+If the client cannot seek via the callback interface provided, but still has another way of seeking, it can flush the decoder using FLAC__stream_decoder_flush() and start feeding data from the new position through the read callback.

+The stream decoder also provides MD5 signature checking. If this is turned on before initialization, FLAC__stream_decoder_finish() will report when the decoded MD5 signature does not match the one stored in the STREAMINFO block. MD5 checking is automatically turned off (until the next FLAC__stream_decoder_reset()) if there is no signature in the STREAMINFO block or when a seek is attempted.

+The FLAC__stream_decoder_set_metadata_*() functions deserve special attention. By default, the decoder only calls the metadata_callback for the STREAMINFO block. These functions allow you to tell the decoder explicitly which blocks to parse and return via the metadata_callback and/or which to skip. Use a FLAC__stream_decoder_set_metadata_respond_all(), FLAC__stream_decoder_set_metadata_ignore() ... or FLAC__stream_decoder_set_metadata_ignore_all(), FLAC__stream_decoder_set_metadata_respond() ... sequence to exactly specify which blocks to return. Remember that metadata blocks can potentially be big (for example, cover art) so filtering out the ones you don't use can reduce the memory requirements of the decoder. Also note the special forms FLAC__stream_decoder_set_metadata_respond_application(id) and FLAC__stream_decoder_set_metadata_ignore_application(id) for filtering APPLICATION blocks based on the application ID.

+STREAMINFO and SEEKTABLE blocks are always parsed and used internally, but they still can legally be filtered from the metadata_callback.

+

Note:
The "set" functions may only be called when the decoder is in the state FLAC__STREAM_DECODER_UNINITIALIZED, i.e. after FLAC__stream_decoder_new() or FLAC__stream_decoder_finish(), but before FLAC__stream_decoder_init_*(). If this is the case they will return true, otherwise false.

+FLAC__stream_decoder_finish() resets all settings to the constructor defaults, including the callbacks.

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

struct  FLAC__StreamDecoder

Typedefs

typedef FLAC__StreamDecoderReadStatus(* FLAC__StreamDecoderReadCallback )(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
typedef FLAC__StreamDecoderSeekStatus(* FLAC__StreamDecoderSeekCallback )(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data)
typedef FLAC__StreamDecoderTellStatus(* FLAC__StreamDecoderTellCallback )(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
typedef FLAC__StreamDecoderLengthStatus(* FLAC__StreamDecoderLengthCallback )(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data)
typedef FLAC__bool(* FLAC__StreamDecoderEofCallback )(const FLAC__StreamDecoder *decoder, void *client_data)
typedef FLAC__StreamDecoderWriteStatus(* FLAC__StreamDecoderWriteCallback )(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data)
typedef void(* FLAC__StreamDecoderMetadataCallback )(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
typedef void(* FLAC__StreamDecoderErrorCallback )(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)

Enumerations

enum  FLAC__StreamDecoderState {
+  FLAC__STREAM_DECODER_SEARCH_FOR_METADATA = 0, +FLAC__STREAM_DECODER_READ_METADATA, +FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC, +FLAC__STREAM_DECODER_READ_FRAME, +
+  FLAC__STREAM_DECODER_END_OF_STREAM, +FLAC__STREAM_DECODER_OGG_ERROR, +FLAC__STREAM_DECODER_SEEK_ERROR, +FLAC__STREAM_DECODER_ABORTED, +
+  FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR, +FLAC__STREAM_DECODER_UNINITIALIZED +
+ }
enum  FLAC__StreamDecoderInitStatus {
+  FLAC__STREAM_DECODER_INIT_STATUS_OK = 0, +FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER, +FLAC__STREAM_DECODER_INIT_STATUS_INVALID_CALLBACKS, +FLAC__STREAM_DECODER_INIT_STATUS_MEMORY_ALLOCATION_ERROR, +
+  FLAC__STREAM_DECODER_INIT_STATUS_ERROR_OPENING_FILE, +FLAC__STREAM_DECODER_INIT_STATUS_ALREADY_INITIALIZED +
+ }
enum  FLAC__StreamDecoderReadStatus { FLAC__STREAM_DECODER_READ_STATUS_CONTINUE, +FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM, +FLAC__STREAM_DECODER_READ_STATUS_ABORT + }
enum  FLAC__StreamDecoderSeekStatus { FLAC__STREAM_DECODER_SEEK_STATUS_OK, +FLAC__STREAM_DECODER_SEEK_STATUS_ERROR, +FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED + }
enum  FLAC__StreamDecoderTellStatus { FLAC__STREAM_DECODER_TELL_STATUS_OK, +FLAC__STREAM_DECODER_TELL_STATUS_ERROR, +FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED + }
enum  FLAC__StreamDecoderLengthStatus { FLAC__STREAM_DECODER_LENGTH_STATUS_OK, +FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR, +FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED + }
enum  FLAC__StreamDecoderWriteStatus { FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE, +FLAC__STREAM_DECODER_WRITE_STATUS_ABORT + }
enum  FLAC__StreamDecoderErrorStatus { FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC, +FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER, +FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH, +FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM + }

Functions

FLAC__StreamDecoderFLAC__stream_decoder_new (void)
void FLAC__stream_decoder_delete (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_set_ogg_serial_number (FLAC__StreamDecoder *decoder, long serial_number)
FLAC__bool FLAC__stream_decoder_set_md5_checking (FLAC__StreamDecoder *decoder, FLAC__bool value)
FLAC__bool FLAC__stream_decoder_set_metadata_respond (FLAC__StreamDecoder *decoder, FLAC__MetadataType type)
FLAC__bool FLAC__stream_decoder_set_metadata_respond_application (FLAC__StreamDecoder *decoder, const FLAC__byte id[4])
FLAC__bool FLAC__stream_decoder_set_metadata_respond_all (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_set_metadata_ignore (FLAC__StreamDecoder *decoder, FLAC__MetadataType type)
FLAC__bool FLAC__stream_decoder_set_metadata_ignore_application (FLAC__StreamDecoder *decoder, const FLAC__byte id[4])
FLAC__bool FLAC__stream_decoder_set_metadata_ignore_all (FLAC__StreamDecoder *decoder)
FLAC__StreamDecoderState FLAC__stream_decoder_get_state (const FLAC__StreamDecoder *decoder)
const char * FLAC__stream_decoder_get_resolved_state_string (const FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_get_md5_checking (const FLAC__StreamDecoder *decoder)
FLAC__uint64 FLAC__stream_decoder_get_total_samples (const FLAC__StreamDecoder *decoder)
unsigned FLAC__stream_decoder_get_channels (const FLAC__StreamDecoder *decoder)
FLAC__ChannelAssignment FLAC__stream_decoder_get_channel_assignment (const FLAC__StreamDecoder *decoder)
unsigned FLAC__stream_decoder_get_bits_per_sample (const FLAC__StreamDecoder *decoder)
unsigned FLAC__stream_decoder_get_sample_rate (const FLAC__StreamDecoder *decoder)
unsigned FLAC__stream_decoder_get_blocksize (const FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_get_decode_position (const FLAC__StreamDecoder *decoder, FLAC__uint64 *position)
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_stream (FLAC__StreamDecoder *decoder, FLAC__StreamDecoderReadCallback read_callback, FLAC__StreamDecoderSeekCallback seek_callback, FLAC__StreamDecoderTellCallback tell_callback, FLAC__StreamDecoderLengthCallback length_callback, FLAC__StreamDecoderEofCallback eof_callback, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_stream (FLAC__StreamDecoder *decoder, FLAC__StreamDecoderReadCallback read_callback, FLAC__StreamDecoderSeekCallback seek_callback, FLAC__StreamDecoderTellCallback tell_callback, FLAC__StreamDecoderLengthCallback length_callback, FLAC__StreamDecoderEofCallback eof_callback, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_FILE (FLAC__StreamDecoder *decoder, FILE *file, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_FILE (FLAC__StreamDecoder *decoder, FILE *file, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_file (FLAC__StreamDecoder *decoder, const char *filename, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_file (FLAC__StreamDecoder *decoder, const char *filename, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__bool FLAC__stream_decoder_finish (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_flush (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_reset (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_process_single (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_process_until_end_of_metadata (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_process_until_end_of_stream (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_skip_single_frame (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_seek_absolute (FLAC__StreamDecoder *decoder, FLAC__uint64 sample)

Variables

const char *const FLAC__StreamDecoderStateString []
const char *const FLAC__StreamDecoderInitStatusString []
const char *const FLAC__StreamDecoderReadStatusString []
const char *const FLAC__StreamDecoderSeekStatusString []
const char *const FLAC__StreamDecoderTellStatusString []
const char *const FLAC__StreamDecoderLengthStatusString []
const char *const FLAC__StreamDecoderWriteStatusString []
const char *const FLAC__StreamDecoderErrorStatusString []
+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef FLAC__StreamDecoderReadStatus(* FLAC__StreamDecoderReadCallback)(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
+
+ + + + + +
+   + + +

+Signature for the read callback.

+A function pointer matching this signature must be passed to FLAC__stream_decoder_init*_stream(). The supplied function will be called when the decoder needs more input data. The address of the buffer to be filled is supplied, along with the number of bytes the buffer can hold. The callback may choose to supply less data and modify the byte count but must be careful not to overflow the buffer. The callback then returns a status code chosen from FLAC__StreamDecoderReadStatus.

+Here is an example of a read callback for stdio streams:

 FLAC__StreamDecoderReadStatus read_cb(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
+ {
+   FILE *file = ((MyClientData*)client_data)->file;
+   if(*bytes > 0) {
+     *bytes = fread(buffer, sizeof(FLAC__byte), *bytes, file);
+     if(ferror(file))
+       return FLAC__STREAM_DECODER_READ_STATUS_ABORT;
+     else if(*bytes == 0)
+       return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
+     else
+       return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
+   }
+   else
+     return FLAC__STREAM_DECODER_READ_STATUS_ABORT;
+ }
+

+

Note:
In general, FLAC__StreamDecoder functions which change the state should not be called on the decoder while in the callback.
+
Parameters:
+ + + + + +
decoder The decoder instance calling the callback.
buffer A pointer to a location for the callee to store data to be decoded.
bytes A pointer to the size of the buffer. On entry to the callback, it contains the maximum number of bytes that may be stored in buffer. The callee must set it to the actual number of bytes stored (0 in case of error or end-of-stream) before returning.
client_data The callee's client data set through FLAC__stream_decoder_init_*().
+
+
Return values:
+ + +
FLAC__StreamDecoderReadStatus The callee's return status. Note that the callback should return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM if and only if zero bytes were read and there is no more data to be read.
+
+
+

+ + + + +
+ + + + +
typedef FLAC__StreamDecoderSeekStatus(* FLAC__StreamDecoderSeekCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data)
+
+ + + + + +
+   + + +

+Signature for the seek callback.

+A function pointer matching this signature may be passed to FLAC__stream_decoder_init*_stream(). The supplied function will be called when the decoder needs to seek the input stream. The decoder will pass the absolute byte offset to seek to, 0 meaning the beginning of the stream.

+Here is an example of a seek callback for stdio streams:

 FLAC__StreamDecoderSeekStatus seek_cb(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data)
+ {
+   FILE *file = ((MyClientData*)client_data)->file;
+   if(file == stdin)
+     return FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED;
+   else if(fseeko(file, (off_t)absolute_byte_offset, SEEK_SET) < 0)
+     return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR;
+   else
+     return FLAC__STREAM_DECODER_SEEK_STATUS_OK;
+ }
+

+

Note:
In general, FLAC__StreamDecoder functions which change the state should not be called on the decoder while in the callback.
+
Parameters:
+ + + + +
decoder The decoder instance calling the callback.
absolute_byte_offset The offset from the beginning of the stream to seek to.
client_data The callee's client data set through FLAC__stream_decoder_init_*().
+
+
Return values:
+ + +
FLAC__StreamDecoderSeekStatus The callee's return status.
+
+
+

+ + + + +
+ + + + +
typedef FLAC__StreamDecoderTellStatus(* FLAC__StreamDecoderTellCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
+
+ + + + + +
+   + + +

+Signature for the tell callback.

+A function pointer matching this signature may be passed to FLAC__stream_decoder_init*_stream(). The supplied function will be called when the decoder wants to know the current position of the stream. The callback should return the byte offset from the beginning of the stream.

+Here is an example of a tell callback for stdio streams:

 FLAC__StreamDecoderTellStatus tell_cb(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
+ {
+   FILE *file = ((MyClientData*)client_data)->file;
+   off_t pos;
+   if(file == stdin)
+     return FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED;
+   else if((pos = ftello(file)) < 0)
+     return FLAC__STREAM_DECODER_TELL_STATUS_ERROR;
+   else {
+     *absolute_byte_offset = (FLAC__uint64)pos;
+     return FLAC__STREAM_DECODER_TELL_STATUS_OK;
+   }
+ }
+

+

Note:
In general, FLAC__StreamDecoder functions which change the state should not be called on the decoder while in the callback.
+
Parameters:
+ + + + +
decoder The decoder instance calling the callback.
absolute_byte_offset A pointer to storage for the current offset from the beginning of the stream.
client_data The callee's client data set through FLAC__stream_decoder_init_*().
+
+
Return values:
+ + +
FLAC__StreamDecoderTellStatus The callee's return status.
+
+
+

+ + + + +
+ + + + +
typedef FLAC__StreamDecoderLengthStatus(* FLAC__StreamDecoderLengthCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data)
+
+ + + + + +
+   + + +

+Signature for the length callback.

+A function pointer matching this signature may be passed to FLAC__stream_decoder_init*_stream(). The supplied function will be called when the decoder wants to know the total length of the stream in bytes.

+Here is an example of a length callback for stdio streams:

 FLAC__StreamDecoderLengthStatus length_cb(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data)
+ {
+   FILE *file = ((MyClientData*)client_data)->file;
+   struct stat filestats;
+
+   if(file == stdin)
+     return FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED;
+   else if(fstat(fileno(file), &filestats) != 0)
+     return FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR;
+   else {
+     *stream_length = (FLAC__uint64)filestats.st_size;
+     return FLAC__STREAM_DECODER_LENGTH_STATUS_OK;
+   }
+ }
+

+

Note:
In general, FLAC__StreamDecoder functions which change the state should not be called on the decoder while in the callback.
+
Parameters:
+ + + + +
decoder The decoder instance calling the callback.
stream_length A pointer to storage for the length of the stream in bytes.
client_data The callee's client data set through FLAC__stream_decoder_init_*().
+
+
Return values:
+ + +
FLAC__StreamDecoderLengthStatus The callee's return status.
+
+
+

+ + + + +
+ + + + +
typedef FLAC__bool(* FLAC__StreamDecoderEofCallback)(const FLAC__StreamDecoder *decoder, void *client_data)
+
+ + + + + +
+   + + +

+Signature for the EOF callback.

+A function pointer matching this signature may be passed to FLAC__stream_decoder_init*_stream(). The supplied function will be called when the decoder needs to know if the end of the stream has been reached.

+Here is an example of a EOF callback for stdio streams: FLAC__bool eof_cb(const FLAC__StreamDecoder *decoder, void *client_data)

 {
+   FILE *file = ((MyClientData*)client_data)->file;
+   return feof(file)? true : false;
+ }
+

+

Note:
In general, FLAC__StreamDecoder functions which change the state should not be called on the decoder while in the callback.
+
Parameters:
+ + + +
decoder The decoder instance calling the callback.
client_data The callee's client data set through FLAC__stream_decoder_init_*().
+
+
Return values:
+ + +
FLAC__bool true if the currently at the end of the stream, else false.
+
+
+

+ + + + +
+ + + + +
typedef FLAC__StreamDecoderWriteStatus(* FLAC__StreamDecoderWriteCallback)(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data)
+
+ + + + + +
+   + + +

+Signature for the write callback.

+A function pointer matching this signature must be passed to one of the FLAC__stream_decoder_init_*() functions. The supplied function will be called when the decoder has decoded a single audio frame. The decoder will pass the frame metadata as well as an array of pointers (one for each channel) pointing to the decoded audio.

+

Note:
In general, FLAC__StreamDecoder functions which change the state should not be called on the decoder while in the callback.
+
Parameters:
+ + + + + +
decoder The decoder instance calling the callback.
frame The description of the decoded frame. See FLAC__Frame.
buffer An array of pointers to decoded channels of data. Each pointer will point to an array of signed samples of length frame->header.blocksize. Channels will be ordered according to the FLAC specification; see the documentation for the frame header.
client_data The callee's client data set through FLAC__stream_decoder_init_*().
+
+
Return values:
+ + +
FLAC__StreamDecoderWriteStatus The callee's return status.
+
+
+

+ + + + +
+ + + + +
typedef void(* FLAC__StreamDecoderMetadataCallback)(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
+
+ + + + + +
+   + + +

+Signature for the metadata callback.

+A function pointer matching this signature must be passed to one of the FLAC__stream_decoder_init_*() functions. The supplied function will be called when the decoder has decoded a metadata block. In a valid FLAC file there will always be one STREAMINFO block, followed by zero or more other metadata blocks. These will be supplied by the decoder in the same order as they appear in the stream and always before the first audio frame (i.e. write callback). The metadata block that is passed in must not be modified, and it doesn't live beyond the callback, so you should make a copy of it with FLAC__metadata_object_clone() if you will need it elsewhere. Since metadata blocks can potentially be large, by default the decoder only calls the metadata callback for the STREAMINFO block; you can instruct the decoder to pass or filter other blocks with FLAC__stream_decoder_set_metadata_*() calls.

+

Note:
In general, FLAC__StreamDecoder functions which change the state should not be called on the decoder while in the callback.
+
Parameters:
+ + + + +
decoder The decoder instance calling the callback.
metadata The decoded metadata block.
client_data The callee's client data set through FLAC__stream_decoder_init_*().
+
+
+

+ + + + +
+ + + + +
typedef void(* FLAC__StreamDecoderErrorCallback)(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
+
+ + + + + +
+   + + +

+Signature for the error callback.

+A function pointer matching this signature must be passed to one of the FLAC__stream_decoder_init_*() functions. The supplied function will be called whenever an error occurs during decoding.

+

Note:
In general, FLAC__StreamDecoder functions which change the state should not be called on the decoder while in the callback.
+
Parameters:
+ + + + +
decoder The decoder instance calling the callback.
status The error encountered by the decoder.
client_data The callee's client data set through FLAC__stream_decoder_init_*().
+
+
+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum FLAC__StreamDecoderState
+
+ + + + + +
+   + + +

+State values for a FLAC__StreamDecoder

+The decoder's state can be obtained by calling FLAC__stream_decoder_get_state().

Enumeration values:
+ + + + + + + + + + + +
FLAC__STREAM_DECODER_SEARCH_FOR_METADATA  +The decoder is ready to search for metadata.
FLAC__STREAM_DECODER_READ_METADATA  +The decoder is ready to or is in the process of reading metadata.
FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC  +The decoder is ready to or is in the process of searching for the frame sync code.
FLAC__STREAM_DECODER_READ_FRAME  +The decoder is ready to or is in the process of reading a frame.
FLAC__STREAM_DECODER_END_OF_STREAM  +The decoder has reached the end of the stream.
FLAC__STREAM_DECODER_OGG_ERROR  +An error occurred in the underlying Ogg layer.
FLAC__STREAM_DECODER_SEEK_ERROR  +An error occurred while seeking. The decoder must be flushed with FLAC__stream_decoder_flush() or reset with FLAC__stream_decoder_reset() before decoding can continue.
FLAC__STREAM_DECODER_ABORTED  +The decoder was aborted by the read callback.
FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR  +An error occurred allocating memory. The decoder is in an invalid state and can no longer be used.
FLAC__STREAM_DECODER_UNINITIALIZED  +The decoder is in the uninitialized state; one of the FLAC__stream_decoder_init_*() functions must be called before samples can be processed.
+
+
+

+ + + + +
+ + + + +
enum FLAC__StreamDecoderInitStatus
+
+ + + + + +
+   + + +

+Possible return values for the FLAC__stream_decoder_init_*() functions.

Enumeration values:
+ + + + + + + +
FLAC__STREAM_DECODER_INIT_STATUS_OK  +Initialization was successful.
FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER  +The library was not compiled with support for the given container format.
FLAC__STREAM_DECODER_INIT_STATUS_INVALID_CALLBACKS  +A required callback was not supplied.
FLAC__STREAM_DECODER_INIT_STATUS_MEMORY_ALLOCATION_ERROR  +An error occurred allocating memory.
FLAC__STREAM_DECODER_INIT_STATUS_ERROR_OPENING_FILE  +fopen() failed in FLAC__stream_decoder_init_file() or FLAC__stream_decoder_init_ogg_file().
FLAC__STREAM_DECODER_INIT_STATUS_ALREADY_INITIALIZED  +FLAC__stream_decoder_init_*() was called when the decoder was already initialized, usually because FLAC__stream_decoder_finish() was not called.
+
+
+

+ + + + +
+ + + + +
enum FLAC__StreamDecoderReadStatus
+
+ + + + + +
+   + + +

+Return values for the FLAC__StreamDecoder read callback.

Enumeration values:
+ + + + +
FLAC__STREAM_DECODER_READ_STATUS_CONTINUE  +The read was OK and decoding can continue.
FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM  +The read was attempted while at the end of the stream. Note that the client must only return this value when the read callback was called when already at the end of the stream. Otherwise, if the read itself moves to the end of the stream, the client should still return the data and FLAC__STREAM_DECODER_READ_STATUS_CONTINUE, and then on the next read callback it should return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM with a byte count of 0.
FLAC__STREAM_DECODER_READ_STATUS_ABORT  +An unrecoverable error occurred. The decoder will return from the process call.
+
+
+

+ + + + +
+ + + + +
enum FLAC__StreamDecoderSeekStatus
+
+ + + + + +
+   + + +

+Return values for the FLAC__StreamDecoder seek callback.

Enumeration values:
+ + + + +
FLAC__STREAM_DECODER_SEEK_STATUS_OK  +The seek was OK and decoding can continue.
FLAC__STREAM_DECODER_SEEK_STATUS_ERROR  +An unrecoverable error occurred. The decoder will return from the process call.
FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED  +Client does not support seeking.
+
+
+

+ + + + +
+ + + + +
enum FLAC__StreamDecoderTellStatus
+
+ + + + + +
+   + + +

+Return values for the FLAC__StreamDecoder tell callback.

Enumeration values:
+ + + + +
FLAC__STREAM_DECODER_TELL_STATUS_OK  +The tell was OK and decoding can continue.
FLAC__STREAM_DECODER_TELL_STATUS_ERROR  +An unrecoverable error occurred. The decoder will return from the process call.
FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED  +Client does not support telling the position.
+
+
+

+ + + + +
+ + + + +
enum FLAC__StreamDecoderLengthStatus
+
+ + + + + +
+   + + +

+Return values for the FLAC__StreamDecoder length callback.

Enumeration values:
+ + + + +
FLAC__STREAM_DECODER_LENGTH_STATUS_OK  +The length call was OK and decoding can continue.
FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR  +An unrecoverable error occurred. The decoder will return from the process call.
FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED  +Client does not support reporting the length.
+
+
+

+ + + + +
+ + + + +
enum FLAC__StreamDecoderWriteStatus
+
+ + + + + +
+   + + +

+Return values for the FLAC__StreamDecoder write callback.

Enumeration values:
+ + + +
FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE  +The write was OK and decoding can continue.
FLAC__STREAM_DECODER_WRITE_STATUS_ABORT  +An unrecoverable error occurred. The decoder will return from the process call.
+
+
+

+ + + + +
+ + + + +
enum FLAC__StreamDecoderErrorStatus
+
+ + + + + +
+   + + +

+Possible values passed back to the FLAC__StreamDecoder error callback. FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC is the generic catch- all. The rest could be caused by bad sync (false synchronization on data that is not the start of a frame) or corrupted data. The error itself is the decoder's best guess at what happened assuming a correct sync. For example FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER could be caused by a correct sync on the start of a frame, but some data in the frame header was corrupted. Or it could be the result of syncing on a point the stream that looked like the starting of a frame but was not. FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM could be because the decoder encountered a valid frame made by a future version of the encoder which it cannot parse, or because of a false sync making it appear as though an encountered frame was generated by a future encoder.

Enumeration values:
+ + + + + +
FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC  +An error in the stream caused the decoder to lose synchronization.
FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER  +The decoder encountered a corrupted frame header.
FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH  +The frame's data did not match the CRC in the footer.
FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM  +The decoder encountered reserved fields in use in the stream.
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
FLAC__StreamDecoder* FLAC__stream_decoder_new void   ) 
+
+ + + + + +
+   + + +

+Create a new stream decoder instance. The instance is created with default settings; see the individual FLAC__stream_decoder_set_*() functions for each setting's default.

+

Return values:
+ + +
FLAC__StreamDecoder* NULL if there was an error allocating memory, else the new instance.
+
+
+

+ + + + +
+ + + + + + + + + +
void FLAC__stream_decoder_delete FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Free a decoder instance. Deletes the object pointed to by decoder.

+

Parameters:
+ + +
decoder A pointer to an existing decoder.
+
+
Assertions:
 decoder != NULL 
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_decoder_set_ogg_serial_number FLAC__StreamDecoder decoder,
long  serial_number
+
+ + + + + +
+   + + +

+Set the serial number for the FLAC stream within the Ogg container. The default behavior is to use the serial number of the first Ogg page. Setting a serial number here will explicitly specify which stream is to be decoded.

+

Note:
This does not need to be set for native FLAC decoding.
+
Default Value:
use serial number of first page
+
Parameters:
+ + + +
decoder A decoder instance to set.
serial_number See above.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the decoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_decoder_set_md5_checking FLAC__StreamDecoder decoder,
FLAC__bool  value
+
+ + + + + +
+   + + +

+Set the "MD5 signature checking" flag. If true, the decoder will compute the MD5 signature of the unencoded audio data while decoding and compare it to the signature from the STREAMINFO block, if it exists, during FLAC__stream_decoder_finish().

+MD5 signature checking will be turned off (until the next FLAC__stream_decoder_reset()) if there is no signature in the STREAMINFO block or when a seek is attempted.

+Clients that do not use the MD5 check should leave this off to speed up decoding.

+

Default Value:
false
+
Parameters:
+ + + +
decoder A decoder instance to set.
value Flag value (see above).
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the decoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_decoder_set_metadata_respond FLAC__StreamDecoder decoder,
FLAC__MetadataType  type
+
+ + + + + +
+   + + +

+Direct the decoder to pass on all metadata blocks of type type.

+

Default Value:
By default, only the STREAMINFO block is returned via the metadata callback.
+
Parameters:
+ + + +
decoder A decoder instance to set.
type See above.
+
+
Assertions:
 decoder != NULL 
+
type is valid
+
Return values:
+ + +
FLAC__bool false if the decoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_decoder_set_metadata_respond_application FLAC__StreamDecoder decoder,
const FLAC__byte  id[4]
+
+ + + + + +
+   + + +

+Direct the decoder to pass on all APPLICATION metadata blocks of the given id.

+

Default Value:
By default, only the STREAMINFO block is returned via the metadata callback.
+
Parameters:
+ + + +
decoder A decoder instance to set.
id See above.
+
+
Assertions:
 decoder != NULL 
+
 id != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the decoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_decoder_set_metadata_respond_all FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Direct the decoder to pass on all metadata blocks of any type.

+

Default Value:
By default, only the STREAMINFO block is returned via the metadata callback.
+
Parameters:
+ + +
decoder A decoder instance to set.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the decoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_decoder_set_metadata_ignore FLAC__StreamDecoder decoder,
FLAC__MetadataType  type
+
+ + + + + +
+   + + +

+Direct the decoder to filter out all metadata blocks of type type.

+

Default Value:
By default, only the STREAMINFO block is returned via the metadata callback.
+
Parameters:
+ + + +
decoder A decoder instance to set.
type See above.
+
+
Assertions:
 decoder != NULL 
+
type is valid
+
Return values:
+ + +
FLAC__bool false if the decoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_decoder_set_metadata_ignore_application FLAC__StreamDecoder decoder,
const FLAC__byte  id[4]
+
+ + + + + +
+   + + +

+Direct the decoder to filter out all APPLICATION metadata blocks of the given id.

+

Default Value:
By default, only the STREAMINFO block is returned via the metadata callback.
+
Parameters:
+ + + +
decoder A decoder instance to set.
id See above.
+
+
Assertions:
 decoder != NULL 
+
 id != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the decoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_decoder_set_metadata_ignore_all FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Direct the decoder to filter out all metadata blocks of any type.

+

Default Value:
By default, only the STREAMINFO block is returned via the metadata callback.
+
Parameters:
+ + +
decoder A decoder instance to set.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the decoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__StreamDecoderState FLAC__stream_decoder_get_state const FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Get the current decoder state.

+

Parameters:
+ + +
decoder A decoder instance to query.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__StreamDecoderState The current decoder state.
+
+
+

+ + + + +
+ + + + + + + + + +
const char* FLAC__stream_decoder_get_resolved_state_string const FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Get the current decoder state as a C string.

+

Parameters:
+ + +
decoder A decoder instance to query.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
const char * The decoder state as a C string. Do not modify the contents.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_decoder_get_md5_checking const FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Get the "MD5 signature checking" flag. This is the value of the setting, not whether or not the decoder is currently checking the MD5 (remember, it can be turned off automatically by a seek). When the decoder is reset the flag will be restored to the value returned by this function.

+

Parameters:
+ + +
decoder A decoder instance to query.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__bool See above.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__uint64 FLAC__stream_decoder_get_total_samples const FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Get the total number of samples in the stream being decoded. Will only be valid after decoding has started and will contain the value from the STREAMINFO block. A value of 0 means "unknown".

+

Parameters:
+ + +
decoder A decoder instance to query.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
unsigned See above.
+
+
+

+ + + + +
+ + + + + + + + + +
unsigned FLAC__stream_decoder_get_channels const FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Get the current number of channels in the stream being decoded. Will only be valid after decoding has started and will contain the value from the most recently decoded frame header.

+

Parameters:
+ + +
decoder A decoder instance to query.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
unsigned See above.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__ChannelAssignment FLAC__stream_decoder_get_channel_assignment const FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Get the current channel assignment in the stream being decoded. Will only be valid after decoding has started and will contain the value from the most recently decoded frame header.

+

Parameters:
+ + +
decoder A decoder instance to query.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__ChannelAssignment See above.
+
+
+

+ + + + +
+ + + + + + + + + +
unsigned FLAC__stream_decoder_get_bits_per_sample const FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Get the current sample resolution in the stream being decoded. Will only be valid after decoding has started and will contain the value from the most recently decoded frame header.

+

Parameters:
+ + +
decoder A decoder instance to query.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
unsigned See above.
+
+
+

+ + + + +
+ + + + + + + + + +
unsigned FLAC__stream_decoder_get_sample_rate const FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Get the current sample rate in Hz of the stream being decoded. Will only be valid after decoding has started and will contain the value from the most recently decoded frame header.

+

Parameters:
+ + +
decoder A decoder instance to query.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
unsigned See above.
+
+
+

+ + + + +
+ + + + + + + + + +
unsigned FLAC__stream_decoder_get_blocksize const FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Get the current blocksize of the stream being decoded. Will only be valid after decoding has started and will contain the value from the most recently decoded frame header.

+

Parameters:
+ + +
decoder A decoder instance to query.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
unsigned See above.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_decoder_get_decode_position const FLAC__StreamDecoder decoder,
FLAC__uint64 *  position
+
+ + + + + +
+   + + +

+Returns the decoder's current read position within the stream. The position is the byte offset from the start of the stream. Bytes before this position have been fully decoded. Note that there may still be undecoded bytes in the decoder's read FIFO. The returned position is correct even after a seek.

+

Warning:
This function currently only works for native FLAC, not Ogg FLAC streams.
+
Parameters:
+ + + +
decoder A decoder instance to query.
position Address at which to return the desired position.
+
+
Assertions:
 decoder != NULL 
+
 position != NULL 
+
+
Return values:
+ + +
FLAC__bool true if successful, false if the stream is not native FLAC, or there was an error from the 'tell' callback or it returned FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_stream FLAC__StreamDecoder decoder,
FLAC__StreamDecoderReadCallback  read_callback,
FLAC__StreamDecoderSeekCallback  seek_callback,
FLAC__StreamDecoderTellCallback  tell_callback,
FLAC__StreamDecoderLengthCallback  length_callback,
FLAC__StreamDecoderEofCallback  eof_callback,
FLAC__StreamDecoderWriteCallback  write_callback,
FLAC__StreamDecoderMetadataCallback  metadata_callback,
FLAC__StreamDecoderErrorCallback  error_callback,
void *  client_data
+
+ + + + + +
+   + + +

+Initialize the decoder instance to decode native FLAC streams.

+This flavor of initialization sets up the decoder to decode from a native FLAC stream. I/O is performed via callbacks to the client. For decoding from a plain file via filename or open FILE*, FLAC__stream_decoder_init_file() and FLAC__stream_decoder_init_FILE() provide a simpler interface.

+This function should be called after FLAC__stream_decoder_new() and FLAC__stream_decoder_set_*() but before any of the FLAC__stream_decoder_process_*() functions. Will set and return the decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA if initialization succeeded.

+

Parameters:
+ + + + + + + + + + + +
decoder An uninitialized decoder instance.
read_callback See FLAC__StreamDecoderReadCallback. This pointer must not be NULL.
seek_callback See FLAC__StreamDecoderSeekCallback. This pointer may be NULL if seeking is not supported. If seek_callback is not NULL then a tell_callback, length_callback, and eof_callback must also be supplied. Alternatively, a dummy seek callback that just returns FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED may also be supplied, all though this is slightly less efficient for the decoder.
tell_callback See FLAC__StreamDecoderTellCallback. This pointer may be NULL if not supported by the client. If seek_callback is not NULL then a tell_callback must also be supplied. Alternatively, a dummy tell callback that just returns FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED may also be supplied, all though this is slightly less efficient for the decoder.
length_callback See FLAC__StreamDecoderLengthCallback. This pointer may be NULL if not supported by the client. If seek_callback is not NULL then a length_callback must also be supplied. Alternatively, a dummy length callback that just returns FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED may also be supplied, all though this is slightly less efficient for the decoder.
eof_callback See FLAC__StreamDecoderEofCallback. This pointer may be NULL if not supported by the client. If seek_callback is not NULL then a eof_callback must also be supplied. Alternatively, a dummy length callback that just returns false may also be supplied, all though this is slightly less efficient for the decoder.
write_callback See FLAC__StreamDecoderWriteCallback. This pointer must not be NULL.
metadata_callback See FLAC__StreamDecoderMetadataCallback. This pointer may be NULL if the callback is not desired.
error_callback See FLAC__StreamDecoderErrorCallback. This pointer must not be NULL.
client_data This value will be supplied to callbacks in their client_data argument.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__StreamDecoderInitStatus FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; see FLAC__StreamDecoderInitStatus for the meanings of other return values.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_stream FLAC__StreamDecoder decoder,
FLAC__StreamDecoderReadCallback  read_callback,
FLAC__StreamDecoderSeekCallback  seek_callback,
FLAC__StreamDecoderTellCallback  tell_callback,
FLAC__StreamDecoderLengthCallback  length_callback,
FLAC__StreamDecoderEofCallback  eof_callback,
FLAC__StreamDecoderWriteCallback  write_callback,
FLAC__StreamDecoderMetadataCallback  metadata_callback,
FLAC__StreamDecoderErrorCallback  error_callback,
void *  client_data
+
+ + + + + +
+   + + +

+Initialize the decoder instance to decode Ogg FLAC streams.

+This flavor of initialization sets up the decoder to decode from a FLAC stream in an Ogg container. I/O is performed via callbacks to the client. For decoding from a plain file via filename or open FILE*, FLAC__stream_decoder_init_ogg_file() and FLAC__stream_decoder_init_ogg_FILE() provide a simpler interface.

+This function should be called after FLAC__stream_decoder_new() and FLAC__stream_decoder_set_*() but before any of the FLAC__stream_decoder_process_*() functions. Will set and return the decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA if initialization succeeded.

+

Note:
Support for Ogg FLAC in the library is optional. If this library has been built without support for Ogg FLAC, this function will return FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER.
+
Parameters:
+ + + + + + + + + + + +
decoder An uninitialized decoder instance.
read_callback See FLAC__StreamDecoderReadCallback. This pointer must not be NULL.
seek_callback See FLAC__StreamDecoderSeekCallback. This pointer may be NULL if seeking is not supported. If seek_callback is not NULL then a tell_callback, length_callback, and eof_callback must also be supplied. Alternatively, a dummy seek callback that just returns FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED may also be supplied, all though this is slightly less efficient for the decoder.
tell_callback See FLAC__StreamDecoderTellCallback. This pointer may be NULL if not supported by the client. If seek_callback is not NULL then a tell_callback must also be supplied. Alternatively, a dummy tell callback that just returns FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED may also be supplied, all though this is slightly less efficient for the decoder.
length_callback See FLAC__StreamDecoderLengthCallback. This pointer may be NULL if not supported by the client. If seek_callback is not NULL then a length_callback must also be supplied. Alternatively, a dummy length callback that just returns FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED may also be supplied, all though this is slightly less efficient for the decoder.
eof_callback See FLAC__StreamDecoderEofCallback. This pointer may be NULL if not supported by the client. If seek_callback is not NULL then a eof_callback must also be supplied. Alternatively, a dummy length callback that just returns false may also be supplied, all though this is slightly less efficient for the decoder.
write_callback See FLAC__StreamDecoderWriteCallback. This pointer must not be NULL.
metadata_callback See FLAC__StreamDecoderMetadataCallback. This pointer may be NULL if the callback is not desired.
error_callback See FLAC__StreamDecoderErrorCallback. This pointer must not be NULL.
client_data This value will be supplied to callbacks in their client_data argument.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__StreamDecoderInitStatus FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; see FLAC__StreamDecoderInitStatus for the meanings of other return values.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_FILE FLAC__StreamDecoder decoder,
FILE *  file,
FLAC__StreamDecoderWriteCallback  write_callback,
FLAC__StreamDecoderMetadataCallback  metadata_callback,
FLAC__StreamDecoderErrorCallback  error_callback,
void *  client_data
+
+ + + + + +
+   + + +

+Initialize the decoder instance to decode native FLAC files.

+This flavor of initialization sets up the decoder to decode from a plain native FLAC file. For non-stdio streams, you must use FLAC__stream_decoder_init_stream() and provide callbacks for the I/O.

+This function should be called after FLAC__stream_decoder_new() and FLAC__stream_decoder_set_*() but before any of the FLAC__stream_decoder_process_*() functions. Will set and return the decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA if initialization succeeded.

+

Parameters:
+ + + + + + + +
decoder An uninitialized decoder instance.
file An open FLAC file. The file should have been opened with mode "rb" and rewound. The file becomes owned by the decoder and should not be manipulated by the client while decoding. Unless file is stdin, it will be closed when FLAC__stream_decoder_finish() is called. Note however that seeking will not work when decoding from stdout since it is not seekable.
write_callback See FLAC__StreamDecoderWriteCallback. This pointer must not be NULL.
metadata_callback See FLAC__StreamDecoderMetadataCallback. This pointer may be NULL if the callback is not desired.
error_callback See FLAC__StreamDecoderErrorCallback. This pointer must not be NULL.
client_data This value will be supplied to callbacks in their client_data argument.
+
+
Assertions:
 decoder != NULL 
+
 file != NULL 
+
+
Return values:
+ + +
FLAC__StreamDecoderInitStatus FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; see FLAC__StreamDecoderInitStatus for the meanings of other return values.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_FILE FLAC__StreamDecoder decoder,
FILE *  file,
FLAC__StreamDecoderWriteCallback  write_callback,
FLAC__StreamDecoderMetadataCallback  metadata_callback,
FLAC__StreamDecoderErrorCallback  error_callback,
void *  client_data
+
+ + + + + +
+   + + +

+Initialize the decoder instance to decode Ogg FLAC files.

+This flavor of initialization sets up the decoder to decode from a plain Ogg FLAC file. For non-stdio streams, you must use FLAC__stream_decoder_init_ogg_stream() and provide callbacks for the I/O.

+This function should be called after FLAC__stream_decoder_new() and FLAC__stream_decoder_set_*() but before any of the FLAC__stream_decoder_process_*() functions. Will set and return the decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA if initialization succeeded.

+

Note:
Support for Ogg FLAC in the library is optional. If this library has been built without support for Ogg FLAC, this function will return FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER.
+
Parameters:
+ + + + + + + +
decoder An uninitialized decoder instance.
file An open FLAC file. The file should have been opened with mode "rb" and rewound. The file becomes owned by the decoder and should not be manipulated by the client while decoding. Unless file is stdin, it will be closed when FLAC__stream_decoder_finish() is called. Note however that seeking will not work when decoding from stdout since it is not seekable.
write_callback See FLAC__StreamDecoderWriteCallback. This pointer must not be NULL.
metadata_callback See FLAC__StreamDecoderMetadataCallback. This pointer may be NULL if the callback is not desired.
error_callback See FLAC__StreamDecoderErrorCallback. This pointer must not be NULL.
client_data This value will be supplied to callbacks in their client_data argument.
+
+
Assertions:
 decoder != NULL 
+
 file != NULL 
+
+
Return values:
+ + +
FLAC__StreamDecoderInitStatus FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; see FLAC__StreamDecoderInitStatus for the meanings of other return values.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_file FLAC__StreamDecoder decoder,
const char *  filename,
FLAC__StreamDecoderWriteCallback  write_callback,
FLAC__StreamDecoderMetadataCallback  metadata_callback,
FLAC__StreamDecoderErrorCallback  error_callback,
void *  client_data
+
+ + + + + +
+   + + +

+Initialize the decoder instance to decode native FLAC files.

+This flavor of initialization sets up the decoder to decode from a plain native FLAC file. If POSIX fopen() semantics are not sufficient, (for example, with Unicode filenames on Windows), you must use FLAC__stream_decoder_init_FILE(), or FLAC__stream_decoder_init_stream() and provide callbacks for the I/O.

+This function should be called after FLAC__stream_decoder_new() and FLAC__stream_decoder_set_*() but before any of the FLAC__stream_decoder_process_*() functions. Will set and return the decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA if initialization succeeded.

+

Parameters:
+ + + + + + + +
decoder An uninitialized decoder instance.
filename The name of the file to decode from. The file will be opened with fopen(). Use NULL to decode from stdin. Note that stdin is not seekable.
write_callback See FLAC__StreamDecoderWriteCallback. This pointer must not be NULL.
metadata_callback See FLAC__StreamDecoderMetadataCallback. This pointer may be NULL if the callback is not desired.
error_callback See FLAC__StreamDecoderErrorCallback. This pointer must not be NULL.
client_data This value will be supplied to callbacks in their client_data argument.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__StreamDecoderInitStatus FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; see FLAC__StreamDecoderInitStatus for the meanings of other return values.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_file FLAC__StreamDecoder decoder,
const char *  filename,
FLAC__StreamDecoderWriteCallback  write_callback,
FLAC__StreamDecoderMetadataCallback  metadata_callback,
FLAC__StreamDecoderErrorCallback  error_callback,
void *  client_data
+
+ + + + + +
+   + + +

+Initialize the decoder instance to decode Ogg FLAC files.

+This flavor of initialization sets up the decoder to decode from a plain Ogg FLAC file. If POSIX fopen() semantics are not sufficient, (for example, with Unicode filenames on Windows), you must use FLAC__stream_decoder_init_ogg_FILE(), or FLAC__stream_decoder_init_ogg_stream() and provide callbacks for the I/O.

+This function should be called after FLAC__stream_decoder_new() and FLAC__stream_decoder_set_*() but before any of the FLAC__stream_decoder_process_*() functions. Will set and return the decoder state, which will be FLAC__STREAM_DECODER_SEARCH_FOR_METADATA if initialization succeeded.

+

Note:
Support for Ogg FLAC in the library is optional. If this library has been built without support for Ogg FLAC, this function will return FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER.
+
Parameters:
+ + + + + + + +
decoder An uninitialized decoder instance.
filename The name of the file to decode from. The file will be opened with fopen(). Use NULL to decode from stdin. Note that stdin is not seekable.
write_callback See FLAC__StreamDecoderWriteCallback. This pointer must not be NULL.
metadata_callback See FLAC__StreamDecoderMetadataCallback. This pointer may be NULL if the callback is not desired.
error_callback See FLAC__StreamDecoderErrorCallback. This pointer must not be NULL.
client_data This value will be supplied to callbacks in their client_data argument.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__StreamDecoderInitStatus FLAC__STREAM_DECODER_INIT_STATUS_OK if initialization was successful; see FLAC__StreamDecoderInitStatus for the meanings of other return values.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_decoder_finish FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Finish the decoding process. Flushes the decoding buffer, releases resources, resets the decoder settings to their defaults, and returns the decoder state to FLAC__STREAM_DECODER_UNINITIALIZED.

+In the event of a prematurely-terminated decode, it is not strictly necessary to call this immediately before FLAC__stream_decoder_delete() but it is good practice to match every FLAC__stream_decoder_init_*() with a FLAC__stream_decoder_finish().

+

Parameters:
+ + +
decoder An uninitialized decoder instance.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if MD5 checking is on AND a STREAMINFO block was available AND the MD5 signature in the STREAMINFO block was non-zero AND the signature does not match the one computed by the decoder; else true.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_decoder_flush FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Flush the stream input. The decoder's input buffer will be cleared and the state set to FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC. This will also turn off MD5 checking.

+

Parameters:
+ + +
decoder A decoder instance.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__bool true if successful, else false if a memory allocation error occurs (in which case the state will be set to FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR).
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_decoder_reset FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Reset the decoding process. The decoder's input buffer will be cleared and the state set to FLAC__STREAM_DECODER_SEARCH_FOR_METADATA. This is similar to FLAC__stream_decoder_finish() except that the settings are preserved; there is no need to call FLAC__stream_decoder_init_*() before decoding again. MD5 checking will be restored to its original setting.

+If the decoder is seekable, or was initialized with FLAC__stream_decoder_init*_FILE() or FLAC__stream_decoder_init*_file(), the decoder will also attempt to seek to the beginning of the file. If this rewind fails, this function will return false. It follows that FLAC__stream_decoder_reset() cannot be used when decoding from stdin.

+If the decoder was initialized with FLAC__stream_encoder_init*_stream() and is not seekable (i.e. no seek callback was provided or the seek callback returns FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED), it is the duty of the client to start feeding data from the beginning of the stream on the next FLAC__stream_decoder_process() or FLAC__stream_decoder_process_interleaved() call.

+

Parameters:
+ + +
decoder A decoder instance.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__bool true if successful, else false if a memory allocation occurs (in which case the state will be set to FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR) or a seek error occurs (the state will be unchanged).
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_decoder_process_single FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Decode one metadata block or audio frame. This version instructs the decoder to decode a either a single metadata block or a single frame and stop, unless the callbacks return a fatal error or the read callback returns FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM.

+As the decoder needs more input it will call the read callback. Depending on what was decoded, the metadata or write callback will be called with the decoded metadata block or audio frame.

+Unless there is a fatal read error or end of stream, this function will return once one whole frame is decoded. In other words, if the stream is not synchronized or points to a corrupt frame header, the decoder will continue to try and resync until it gets to a valid frame, then decode one frame, then return. If the decoder points to a frame whose frame CRC in the frame footer does not match the computed frame CRC, this function will issue a FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH error to the error callback, and return, having decoded one complete, although corrupt, frame. (Such corrupted frames are sent as silence of the correct length to the write callback.)

+

Parameters:
+ + +
decoder An initialized decoder instance.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if any fatal read, write, or memory allocation error occurred (meaning decoding must stop), else true; for more information about the decoder, check the decoder state with FLAC__stream_decoder_get_state().
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_decoder_process_until_end_of_metadata FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Decode until the end of the metadata. This version instructs the decoder to decode from the current position and continue until all the metadata has been read, or until the callbacks return a fatal error or the read callback returns FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM.

+As the decoder needs more input it will call the read callback. As each metadata block is decoded, the metadata callback will be called with the decoded metadata.

+

Parameters:
+ + +
decoder An initialized decoder instance.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if any fatal read, write, or memory allocation error occurred (meaning decoding must stop), else true; for more information about the decoder, check the decoder state with FLAC__stream_decoder_get_state().
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_decoder_process_until_end_of_stream FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Decode until the end of the stream. This version instructs the decoder to decode from the current position and continue until the end of stream (the read callback returns FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM), or until the callbacks return a fatal error.

+As the decoder needs more input it will call the read callback. As each metadata block and frame is decoded, the metadata or write callback will be called with the decoded metadata or frame.

+

Parameters:
+ + +
decoder An initialized decoder instance.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if any fatal read, write, or memory allocation error occurred (meaning decoding must stop), else true; for more information about the decoder, check the decoder state with FLAC__stream_decoder_get_state().
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_decoder_skip_single_frame FLAC__StreamDecoder decoder  ) 
+
+ + + + + +
+   + + +

+Skip one audio frame. This version instructs the decoder to 'skip' a single frame and stop, unless the callbacks return a fatal error or the read callback returns FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM.

+The decoding flow is the same as what occurs when FLAC__stream_decoder_process_single() is called to process an audio frame, except that this function does not decode the parsed data into PCM or call the write callback. The integrity of the frame is still checked the same way as in the other process functions.

+This function will return once one whole frame is skipped, in the same way that FLAC__stream_decoder_process_single() will return once one whole frame is decoded.

+This function can be used in more quickly determining FLAC frame boundaries when decoding of the actual data is not needed, for example when an application is separating a FLAC stream into frames for editing or storing in a container. To do this, the application can use FLAC__stream_decoder_skip_single_frame() to quickly advance to the next frame, then use FLAC__stream_decoder_get_decode_position() to find the new frame boundary.

+This function should only be called when the stream has advanced past all the metadata, otherwise it will return false.

+

Parameters:
+ + +
decoder An initialized decoder instance not in a metadata state.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if any fatal read, write, or memory allocation error occurred (meaning decoding must stop), or if the decoder is in the FLAC__STREAM_DECODER_SEARCH_FOR_METADATA or FLAC__STREAM_DECODER_READ_METADATA state, else true; for more information about the decoder, check the decoder state with FLAC__stream_decoder_get_state().
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_decoder_seek_absolute FLAC__StreamDecoder decoder,
FLAC__uint64  sample
+
+ + + + + +
+   + + +

+Flush the input and seek to an absolute sample. Decoding will resume at the given sample. Note that because of this, the next write callback may contain a partial block. The client must support seeking the input or this function will fail and return false. Furthermore, if the decoder state is FLAC__STREAM_DECODER_SEEK_ERROR, then the decoder must be flushed with FLAC__stream_decoder_flush() or reset with FLAC__stream_decoder_reset() before decoding can continue.

+

Parameters:
+ + + +
decoder A decoder instance.
sample The target sample number to seek to.
+
+
Assertions:
 decoder != NULL 
+
+
Return values:
+ + +
FLAC__bool true if successful, else false.
+
+
+


Variable Documentation

+

+ + + + +
+ + + + +
const char* const FLAC__StreamDecoderStateString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__StreamDecoderState to a C string.

+Using a FLAC__StreamDecoderState as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const char* const FLAC__StreamDecoderInitStatusString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__StreamDecoderInitStatus to a C string.

+Using a FLAC__StreamDecoderInitStatus as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const char* const FLAC__StreamDecoderReadStatusString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__StreamDecoderReadStatus to a C string.

+Using a FLAC__StreamDecoderReadStatus as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const char* const FLAC__StreamDecoderSeekStatusString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__StreamDecoderSeekStatus to a C string.

+Using a FLAC__StreamDecoderSeekStatus as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const char* const FLAC__StreamDecoderTellStatusString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__StreamDecoderTellStatus to a C string.

+Using a FLAC__StreamDecoderTellStatus as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const char* const FLAC__StreamDecoderLengthStatusString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__StreamDecoderLengthStatus to a C string.

+Using a FLAC__StreamDecoderLengthStatus as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const char* const FLAC__StreamDecoderWriteStatusString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__StreamDecoderWriteStatus to a C string.

+Using a FLAC__StreamDecoderWriteStatus as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const char* const FLAC__StreamDecoderErrorStatusString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__StreamDecoderErrorStatus to a C string.

+Using a FLAC__StreamDecoderErrorStatus as the index to this array will give the string equivalent. The contents should not be modified.

+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flac__stream__encoder.html b/3rdparty/libflac/doc/html/api/group__flac__stream__encoder.html new file mode 100644 index 0000000..9160f39 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flac__stream__encoder.html @@ -0,0 +1,3644 @@ + + +FLAC: FLAC/stream_encoder.h: stream encoder interface + + + + +

FLAC/stream_encoder.h: stream encoder interface
+ +[FLAC/_encoder.h: encoder interfaces] +


Detailed Description

+This module contains the functions which implement the stream encoder. +

+The stream encoder can encode to native FLAC, and optionally Ogg FLAC (check FLAC_API_SUPPORTS_OGG_FLAC) streams and files.

+The basic usage of this encoder is as follows:

+

+In more detail, the stream encoder functions similarly to the stream decoder , but has fewer callbacks and more options. Typically the client will create a new instance by calling FLAC__stream_encoder_new(), then set the necessary parameters with FLAC__stream_encoder_set_*(), and initialize it by calling one of the FLAC__stream_encoder_init_*() functions.

+Unlike the decoders, the stream encoder has many options that can affect the speed and compression ratio. When setting these parameters you should have some basic knowledge of the format (see the user-level documentation or the formal description). The FLAC__stream_encoder_set_*() functions themselves do not validate the values as many are interdependent. The FLAC__stream_encoder_init_*() functions will do this, so make sure to pay attention to the state returned by FLAC__stream_encoder_init_*() to make sure that it is FLAC__STREAM_ENCODER_INIT_STATUS_OK. Any parameters that are not set before FLAC__stream_encoder_init_*() will take on the defaults from the constructor.

+There are three initialization functions for native FLAC, one for setting up the encoder to encode FLAC data to the client via callbacks, and two for encoding directly to a file.

+For encoding via callbacks, use FLAC__stream_encoder_init_stream(). You must also supply a write callback which will be called anytime there is raw encoded data to write. If the client can seek the output it is best to also supply seek and tell callbacks, as this allows the encoder to go back after encoding is finished to write back information that was collected while encoding, like seek point offsets, frame sizes, etc.

+For encoding directly to a file, use FLAC__stream_encoder_init_FILE() or FLAC__stream_encoder_init_file(). Then you must only supply a filename or open FILE*; the encoder will handle all the callbacks internally. You may also supply a progress callback for periodic notification of the encoding progress.

+There are three similarly-named init functions for encoding to Ogg FLAC streams. Check FLAC_API_SUPPORTS_OGG_FLAC to find out if the library has been built with Ogg support.

+The call to FLAC__stream_encoder_init_*() currently will also immediately call the write callback several times, once with the fLaC signature, and once for each encoded metadata block. Note that for Ogg FLAC encoding you will usually get at least twice the number of callbacks than with native FLAC, one for the Ogg page header and one for the page body.

+After initializing the instance, the client may feed audio data to the encoder in one of two ways:

+

    +
  • Channel separate, through FLAC__stream_encoder_process() - The client will pass an array of pointers to buffers, one for each channel, to the encoder, each of the same length. The samples need not be block-aligned, but each channel should have the same number of samples.
  • Channel interleaved, through FLAC__stream_encoder_process_interleaved() - The client will pass a single pointer to data that is channel-interleaved (i.e. channel0_sample0, channel1_sample0, ... , channelN_sample0, channel0_sample1, ...). Again, the samples need not be block-aligned but they must be sample-aligned, i.e. the first value should be channel0_sample0 and the last value channelN_sampleM.
+

+Note that for either process call, each sample in the buffers should be a signed integer, right-justified to the resolution set by FLAC__stream_encoder_set_bits_per_sample(). For example, if the resolution is 16 bits per sample, the samples should all be in the range [-32768,32767].

+When the client is finished encoding data, it calls FLAC__stream_encoder_finish(), which causes the encoder to encode any data still in its input pipe, and call the metadata callback with the final encoding statistics. Then the instance may be deleted with FLAC__stream_encoder_delete() or initialized again to encode another stream.

+For programs that write their own metadata, but that do not know the actual metadata until after encoding, it is advantageous to instruct the encoder to write a PADDING block of the correct size, so that instead of rewriting the whole stream after encoding, the program can just overwrite the PADDING block. If only the maximum size of the metadata is known, the program can write a slightly larger padding block, then split it after encoding.

+Make sure you understand how lengths are calculated. All FLAC metadata blocks have a 4 byte header which contains the type and length. This length does not include the 4 bytes of the header. See the format page for the specification of metadata blocks and their lengths.

+

Note:
If you are writing the FLAC data to a file via callbacks, make sure it is open for update (e.g. mode "w+" for stdio streams). This is because after the first encoding pass, the encoder will try to seek back to the beginning of the stream, to the STREAMINFO block, to write some data there. (If using FLAC__stream_encoder_init*_file() or FLAC__stream_encoder_init*_FILE(), the file is managed internally.)

+The "set" functions may only be called when the encoder is in the state FLAC__STREAM_ENCODER_UNINITIALIZED, i.e. after FLAC__stream_encoder_new() or FLAC__stream_encoder_finish(), but before FLAC__stream_encoder_init_*(). If this is the case they will return true, otherwise false.

+FLAC__stream_encoder_finish() resets all settings to the constructor defaults.

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

struct  FLAC__StreamEncoder

Typedefs

typedef FLAC__StreamEncoderReadStatus(* FLAC__StreamEncoderReadCallback )(const FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
typedef FLAC__StreamEncoderWriteStatus(* FLAC__StreamEncoderWriteCallback )(const FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, void *client_data)
typedef FLAC__StreamEncoderSeekStatus(* FLAC__StreamEncoderSeekCallback )(const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data)
typedef FLAC__StreamEncoderTellStatus(* FLAC__StreamEncoderTellCallback )(const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
typedef void(* FLAC__StreamEncoderMetadataCallback )(const FLAC__StreamEncoder *encoder, const FLAC__StreamMetadata *metadata, void *client_data)
typedef void(* FLAC__StreamEncoderProgressCallback )(const FLAC__StreamEncoder *encoder, FLAC__uint64 bytes_written, FLAC__uint64 samples_written, unsigned frames_written, unsigned total_frames_estimate, void *client_data)

Enumerations

enum  FLAC__StreamEncoderState {
+  FLAC__STREAM_ENCODER_OK = 0, +FLAC__STREAM_ENCODER_UNINITIALIZED, +FLAC__STREAM_ENCODER_OGG_ERROR, +FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR, +
+  FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA, +FLAC__STREAM_ENCODER_CLIENT_ERROR, +FLAC__STREAM_ENCODER_IO_ERROR, +FLAC__STREAM_ENCODER_FRAMING_ERROR, +
+  FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR +
+ }
enum  FLAC__StreamEncoderInitStatus {
+  FLAC__STREAM_ENCODER_INIT_STATUS_OK = 0, +FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR, +FLAC__STREAM_ENCODER_INIT_STATUS_UNSUPPORTED_CONTAINER, +FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_CALLBACKS, +
+  FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_NUMBER_OF_CHANNELS, +FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BITS_PER_SAMPLE, +FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_SAMPLE_RATE, +FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BLOCK_SIZE, +
+  FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_MAX_LPC_ORDER, +FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_QLP_COEFF_PRECISION, +FLAC__STREAM_ENCODER_INIT_STATUS_BLOCK_SIZE_TOO_SMALL_FOR_LPC_ORDER, +FLAC__STREAM_ENCODER_INIT_STATUS_NOT_STREAMABLE, +
+  FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA, +FLAC__STREAM_ENCODER_INIT_STATUS_ALREADY_INITIALIZED +
+ }
enum  FLAC__StreamEncoderReadStatus { FLAC__STREAM_ENCODER_READ_STATUS_CONTINUE, +FLAC__STREAM_ENCODER_READ_STATUS_END_OF_STREAM, +FLAC__STREAM_ENCODER_READ_STATUS_ABORT, +FLAC__STREAM_ENCODER_READ_STATUS_UNSUPPORTED + }
enum  FLAC__StreamEncoderWriteStatus { FLAC__STREAM_ENCODER_WRITE_STATUS_OK = 0, +FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR + }
enum  FLAC__StreamEncoderSeekStatus { FLAC__STREAM_ENCODER_SEEK_STATUS_OK, +FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR, +FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED + }
enum  FLAC__StreamEncoderTellStatus { FLAC__STREAM_ENCODER_TELL_STATUS_OK, +FLAC__STREAM_ENCODER_TELL_STATUS_ERROR, +FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED + }

Functions

FLAC__StreamEncoderFLAC__stream_encoder_new (void)
void FLAC__stream_encoder_delete (FLAC__StreamEncoder *encoder)
FLAC__bool FLAC__stream_encoder_set_ogg_serial_number (FLAC__StreamEncoder *encoder, long serial_number)
FLAC__bool FLAC__stream_encoder_set_verify (FLAC__StreamEncoder *encoder, FLAC__bool value)
FLAC__bool FLAC__stream_encoder_set_streamable_subset (FLAC__StreamEncoder *encoder, FLAC__bool value)
FLAC__bool FLAC__stream_encoder_set_channels (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_bits_per_sample (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_sample_rate (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_compression_level (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_blocksize (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_do_mid_side_stereo (FLAC__StreamEncoder *encoder, FLAC__bool value)
FLAC__bool FLAC__stream_encoder_set_loose_mid_side_stereo (FLAC__StreamEncoder *encoder, FLAC__bool value)
FLAC__bool FLAC__stream_encoder_set_apodization (FLAC__StreamEncoder *encoder, const char *specification)
FLAC__bool FLAC__stream_encoder_set_max_lpc_order (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_qlp_coeff_precision (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_do_qlp_coeff_prec_search (FLAC__StreamEncoder *encoder, FLAC__bool value)
FLAC__bool FLAC__stream_encoder_set_do_escape_coding (FLAC__StreamEncoder *encoder, FLAC__bool value)
FLAC__bool FLAC__stream_encoder_set_do_exhaustive_model_search (FLAC__StreamEncoder *encoder, FLAC__bool value)
FLAC__bool FLAC__stream_encoder_set_min_residual_partition_order (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_max_residual_partition_order (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_rice_parameter_search_dist (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_total_samples_estimate (FLAC__StreamEncoder *encoder, FLAC__uint64 value)
FLAC__bool FLAC__stream_encoder_set_metadata (FLAC__StreamEncoder *encoder, FLAC__StreamMetadata **metadata, unsigned num_blocks)
FLAC__StreamEncoderState FLAC__stream_encoder_get_state (const FLAC__StreamEncoder *encoder)
FLAC__StreamDecoderState FLAC__stream_encoder_get_verify_decoder_state (const FLAC__StreamEncoder *encoder)
const char * FLAC__stream_encoder_get_resolved_state_string (const FLAC__StreamEncoder *encoder)
void FLAC__stream_encoder_get_verify_decoder_error_stats (const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_sample, unsigned *frame_number, unsigned *channel, unsigned *sample, FLAC__int32 *expected, FLAC__int32 *got)
FLAC__bool FLAC__stream_encoder_get_verify (const FLAC__StreamEncoder *encoder)
FLAC__bool FLAC__stream_encoder_get_streamable_subset (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_channels (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_bits_per_sample (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_sample_rate (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_blocksize (const FLAC__StreamEncoder *encoder)
FLAC__bool FLAC__stream_encoder_get_do_mid_side_stereo (const FLAC__StreamEncoder *encoder)
FLAC__bool FLAC__stream_encoder_get_loose_mid_side_stereo (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_max_lpc_order (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_qlp_coeff_precision (const FLAC__StreamEncoder *encoder)
FLAC__bool FLAC__stream_encoder_get_do_qlp_coeff_prec_search (const FLAC__StreamEncoder *encoder)
FLAC__bool FLAC__stream_encoder_get_do_escape_coding (const FLAC__StreamEncoder *encoder)
FLAC__bool FLAC__stream_encoder_get_do_exhaustive_model_search (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_min_residual_partition_order (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_max_residual_partition_order (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_rice_parameter_search_dist (const FLAC__StreamEncoder *encoder)
FLAC__uint64 FLAC__stream_encoder_get_total_samples_estimate (const FLAC__StreamEncoder *encoder)
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_stream (FLAC__StreamEncoder *encoder, FLAC__StreamEncoderWriteCallback write_callback, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderTellCallback tell_callback, FLAC__StreamEncoderMetadataCallback metadata_callback, void *client_data)
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_ogg_stream (FLAC__StreamEncoder *encoder, FLAC__StreamEncoderReadCallback read_callback, FLAC__StreamEncoderWriteCallback write_callback, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderTellCallback tell_callback, FLAC__StreamEncoderMetadataCallback metadata_callback, void *client_data)
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_FILE (FLAC__StreamEncoder *encoder, FILE *file, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data)
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_ogg_FILE (FLAC__StreamEncoder *encoder, FILE *file, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data)
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_file (FLAC__StreamEncoder *encoder, const char *filename, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data)
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_ogg_file (FLAC__StreamEncoder *encoder, const char *filename, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data)
FLAC__bool FLAC__stream_encoder_finish (FLAC__StreamEncoder *encoder)
FLAC__bool FLAC__stream_encoder_process (FLAC__StreamEncoder *encoder, const FLAC__int32 *const buffer[], unsigned samples)
FLAC__bool FLAC__stream_encoder_process_interleaved (FLAC__StreamEncoder *encoder, const FLAC__int32 buffer[], unsigned samples)

Variables

const char *const FLAC__StreamEncoderStateString []
const char *const FLAC__StreamEncoderInitStatusString []
const char *const FLAC__StreamEncoderReadStatusString []
const char *const FLAC__StreamEncoderWriteStatusString []
const char *const FLAC__StreamEncoderSeekStatusString []
const char *const FLAC__StreamEncoderTellStatusString []
+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef FLAC__StreamEncoderReadStatus(* FLAC__StreamEncoderReadCallback)(const FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
+
+ + + + + +
+   + + +

+Signature for the read callback.

+A function pointer matching this signature must be passed to FLAC__stream_encoder_init_ogg_stream() if seeking is supported. The supplied function will be called when the encoder needs to read back encoded data. This happens during the metadata callback, when the encoder has to read, modify, and rewrite the metadata (e.g. seekpoints) gathered while encoding. The address of the buffer to be filled is supplied, along with the number of bytes the buffer can hold. The callback may choose to supply less data and modify the byte count but must be careful not to overflow the buffer. The callback then returns a status code chosen from FLAC__StreamEncoderReadStatus.

+Here is an example of a read callback for stdio streams:

 FLAC__StreamEncoderReadStatus read_cb(const FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
+ {
+   FILE *file = ((MyClientData*)client_data)->file;
+   if(*bytes > 0) {
+     *bytes = fread(buffer, sizeof(FLAC__byte), *bytes, file);
+     if(ferror(file))
+       return FLAC__STREAM_ENCODER_READ_STATUS_ABORT;
+     else if(*bytes == 0)
+       return FLAC__STREAM_ENCODER_READ_STATUS_END_OF_STREAM;
+     else
+       return FLAC__STREAM_ENCODER_READ_STATUS_CONTINUE;
+   }
+   else
+     return FLAC__STREAM_ENCODER_READ_STATUS_ABORT;
+ }
+

+

Note:
In general, FLAC__StreamEncoder functions which change the state should not be called on the encoder while in the callback.
+
Parameters:
+ + + + + +
encoder The encoder instance calling the callback.
buffer A pointer to a location for the callee to store data to be encoded.
bytes A pointer to the size of the buffer. On entry to the callback, it contains the maximum number of bytes that may be stored in buffer. The callee must set it to the actual number of bytes stored (0 in case of error or end-of-stream) before returning.
client_data The callee's client data set through FLAC__stream_encoder_set_client_data().
+
+
Return values:
+ + +
FLAC__StreamEncoderReadStatus The callee's return status.
+
+
+

+ + + + +
+ + + + +
typedef FLAC__StreamEncoderWriteStatus(* FLAC__StreamEncoderWriteCallback)(const FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, void *client_data)
+
+ + + + + +
+   + + +

+Signature for the write callback.

+A function pointer matching this signature must be passed to FLAC__stream_encoder_init*_stream(). The supplied function will be called by the encoder anytime there is raw encoded data ready to write. It may include metadata mixed with encoded audio frames and the data is not guaranteed to be aligned on frame or metadata block boundaries.

+The only duty of the callback is to write out the bytes worth of data in buffer to the current position in the output stream. The arguments samples and current_frame are purely informational. If samples is greater than 0, then current_frame will hold the current frame number that is being written; otherwise it indicates that the write callback is being called to write metadata.

+

Note:
Unlike when writing to native FLAC, when writing to Ogg FLAC the write callback will be called twice when writing each audio frame; once for the page header, and once for the page body. When writing the page header, the samples argument to the write callback will be 0.

+In general, FLAC__StreamEncoder functions which change the state should not be called on the encoder while in the callback.

+
Parameters:
+ + + + + + + +
encoder The encoder instance calling the callback.
buffer An array of encoded data of length bytes.
bytes The byte length of buffer.
samples The number of samples encoded by buffer. 0 has a special meaning; see above.
current_frame The number of the current frame being encoded.
client_data The callee's client data set through FLAC__stream_encoder_init_*().
+
+
Return values:
+ + +
FLAC__StreamEncoderWriteStatus The callee's return status.
+
+
+

+ + + + +
+ + + + +
typedef FLAC__StreamEncoderSeekStatus(* FLAC__StreamEncoderSeekCallback)(const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data)
+
+ + + + + +
+   + + +

+Signature for the seek callback.

+A function pointer matching this signature may be passed to FLAC__stream_encoder_init*_stream(). The supplied function will be called when the encoder needs to seek the output stream. The encoder will pass the absolute byte offset to seek to, 0 meaning the beginning of the stream.

+Here is an example of a seek callback for stdio streams:

 FLAC__StreamEncoderSeekStatus seek_cb(const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data)
+ {
+   FILE *file = ((MyClientData*)client_data)->file;
+   if(file == stdin)
+     return FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED;
+   else if(fseeko(file, (off_t)absolute_byte_offset, SEEK_SET) < 0)
+     return FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR;
+   else
+     return FLAC__STREAM_ENCODER_SEEK_STATUS_OK;
+ }
+

+

Note:
In general, FLAC__StreamEncoder functions which change the state should not be called on the encoder while in the callback.
+
Parameters:
+ + + + +
encoder The encoder instance calling the callback.
absolute_byte_offset The offset from the beginning of the stream to seek to.
client_data The callee's client data set through FLAC__stream_encoder_init_*().
+
+
Return values:
+ + +
FLAC__StreamEncoderSeekStatus The callee's return status.
+
+
+

+ + + + +
+ + + + +
typedef FLAC__StreamEncoderTellStatus(* FLAC__StreamEncoderTellCallback)(const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
+
+ + + + + +
+   + + +

+Signature for the tell callback.

+A function pointer matching this signature may be passed to FLAC__stream_encoder_init*_stream(). The supplied function will be called when the encoder needs to know the current position of the output stream.

+

Warning:
The callback must return the true current byte offset of the output to which the encoder is writing. If you are buffering the output, make sure and take this into account. If you are writing directly to a FILE* from your write callback, ftell() is sufficient. If you are writing directly to a file descriptor from your write callback, you can use lseek(fd, SEEK_CUR, 0). The encoder may later seek back to these points to rewrite metadata after encoding.
+Here is an example of a tell callback for stdio streams:
 FLAC__StreamEncoderTellStatus tell_cb(const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
+ {
+   FILE *file = ((MyClientData*)client_data)->file;
+   off_t pos;
+   if(file == stdin)
+     return FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED;
+   else if((pos = ftello(file)) < 0)
+     return FLAC__STREAM_ENCODER_TELL_STATUS_ERROR;
+   else {
+     *absolute_byte_offset = (FLAC__uint64)pos;
+     return FLAC__STREAM_ENCODER_TELL_STATUS_OK;
+   }
+ }
+

+

Note:
In general, FLAC__StreamEncoder functions which change the state should not be called on the encoder while in the callback.
+
Parameters:
+ + + + +
encoder The encoder instance calling the callback.
absolute_byte_offset The address at which to store the current position of the output.
client_data The callee's client data set through FLAC__stream_encoder_init_*().
+
+
Return values:
+ + +
FLAC__StreamEncoderTellStatus The callee's return status.
+
+
+

+ + + + +
+ + + + +
typedef void(* FLAC__StreamEncoderMetadataCallback)(const FLAC__StreamEncoder *encoder, const FLAC__StreamMetadata *metadata, void *client_data)
+
+ + + + + +
+   + + +

+Signature for the metadata callback.

+A function pointer matching this signature may be passed to FLAC__stream_encoder_init*_stream(). The supplied function will be called once at the end of encoding with the populated STREAMINFO structure. This is so the client can seek back to the beginning of the file and write the STREAMINFO block with the correct statistics after encoding (like minimum/maximum frame size and total samples).

+

Note:
In general, FLAC__StreamEncoder functions which change the state should not be called on the encoder while in the callback.
+
Parameters:
+ + + + +
encoder The encoder instance calling the callback.
metadata The final populated STREAMINFO block.
client_data The callee's client data set through FLAC__stream_encoder_init_*().
+
+
+

+ + + + +
+ + + + +
typedef void(* FLAC__StreamEncoderProgressCallback)(const FLAC__StreamEncoder *encoder, FLAC__uint64 bytes_written, FLAC__uint64 samples_written, unsigned frames_written, unsigned total_frames_estimate, void *client_data)
+
+ + + + + +
+   + + +

+Signature for the progress callback.

+A function pointer matching this signature may be passed to FLAC__stream_encoder_init*_file() or FLAC__stream_encoder_init*_FILE(). The supplied function will be called when the encoder has finished writing a frame. The total_frames_estimate argument to the callback will be based on the value from FLAC__stream_encoder_set_total_samples_estimate().

+

Note:
In general, FLAC__StreamEncoder functions which change the state should not be called on the encoder while in the callback.
+
Parameters:
+ + + + + + + +
encoder The encoder instance calling the callback.
bytes_written Bytes written so far.
samples_written Samples written so far.
frames_written Frames written so far.
total_frames_estimate The estimate of the total number of frames to be written.
client_data The callee's client data set through FLAC__stream_encoder_init_*().
+
+
+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum FLAC__StreamEncoderState
+
+ + + + + +
+   + + +

+State values for a FLAC__StreamEncoder.

+The encoder's state can be obtained by calling FLAC__stream_encoder_get_state().

+If the encoder gets into any other state besides FLAC__STREAM_ENCODER_OK or FLAC__STREAM_ENCODER_UNINITIALIZED, it becomes invalid for encoding and must be deleted with FLAC__stream_encoder_delete().

Enumeration values:
+ + + + + + + + + + +
FLAC__STREAM_ENCODER_OK  +The encoder is in the normal OK state and samples can be processed.
FLAC__STREAM_ENCODER_UNINITIALIZED  +The encoder is in the uninitialized state; one of the FLAC__stream_encoder_init_*() functions must be called before samples can be processed.
FLAC__STREAM_ENCODER_OGG_ERROR  +An error occurred in the underlying Ogg layer.
FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR  +An error occurred in the underlying verify stream decoder; check FLAC__stream_encoder_get_verify_decoder_state().
FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA  +The verify decoder detected a mismatch between the original audio signal and the decoded audio signal.
FLAC__STREAM_ENCODER_CLIENT_ERROR  +One of the callbacks returned a fatal error.
FLAC__STREAM_ENCODER_IO_ERROR  +An I/O error occurred while opening/reading/writing a file. Check errno.
FLAC__STREAM_ENCODER_FRAMING_ERROR  +An error occurred while writing the stream; usually, the write_callback returned an error.
FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR  +Memory allocation failed.
+
+
+

+ + + + +
+ + + + +
enum FLAC__StreamEncoderInitStatus
+
+ + + + + +
+   + + +

+Possible return values for the FLAC__stream_encoder_init_*() functions.

Enumeration values:
+ + + + + + + + + + + + + + + +
FLAC__STREAM_ENCODER_INIT_STATUS_OK  +Initialization was successful.
FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR  +General failure to set up encoder; call FLAC__stream_encoder_get_state() for cause.
FLAC__STREAM_ENCODER_INIT_STATUS_UNSUPPORTED_CONTAINER  +The library was not compiled with support for the given container format.
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_CALLBACKS  +A required callback was not supplied.
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_NUMBER_OF_CHANNELS  +The encoder has an invalid setting for number of channels.
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BITS_PER_SAMPLE  +The encoder has an invalid setting for bits-per-sample. FLAC supports 4-32 bps but the reference encoder currently supports only up to 24 bps.
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_SAMPLE_RATE  +The encoder has an invalid setting for the input sample rate.
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BLOCK_SIZE  +The encoder has an invalid setting for the block size.
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_MAX_LPC_ORDER  +The encoder has an invalid setting for the maximum LPC order.
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_QLP_COEFF_PRECISION  +The encoder has an invalid setting for the precision of the quantized linear predictor coefficients.
FLAC__STREAM_ENCODER_INIT_STATUS_BLOCK_SIZE_TOO_SMALL_FOR_LPC_ORDER  +The specified block size is less than the maximum LPC order.
FLAC__STREAM_ENCODER_INIT_STATUS_NOT_STREAMABLE  +The encoder is bound to the Subset but other settings violate it.
FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA  +The metadata input to the encoder is invalid, in one of the following ways: +
FLAC__STREAM_ENCODER_INIT_STATUS_ALREADY_INITIALIZED  +FLAC__stream_encoder_init_*() was called when the encoder was already initialized, usually because FLAC__stream_encoder_finish() was not called.
+
+
+

+ + + + +
+ + + + +
enum FLAC__StreamEncoderReadStatus
+
+ + + + + +
+   + + +

+Return values for the FLAC__StreamEncoder read callback.

Enumeration values:
+ + + + + +
FLAC__STREAM_ENCODER_READ_STATUS_CONTINUE  +The read was OK and decoding can continue.
FLAC__STREAM_ENCODER_READ_STATUS_END_OF_STREAM  +The read was attempted at the end of the stream.
FLAC__STREAM_ENCODER_READ_STATUS_ABORT  +An unrecoverable error occurred.
FLAC__STREAM_ENCODER_READ_STATUS_UNSUPPORTED  +Client does not support reading back from the output.
+
+
+

+ + + + +
+ + + + +
enum FLAC__StreamEncoderWriteStatus
+
+ + + + + +
+   + + +

+Return values for the FLAC__StreamEncoder write callback.

Enumeration values:
+ + + +
FLAC__STREAM_ENCODER_WRITE_STATUS_OK  +The write was OK and encoding can continue.
FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR  +An unrecoverable error occurred. The encoder will return from the process call.
+
+
+

+ + + + +
+ + + + +
enum FLAC__StreamEncoderSeekStatus
+
+ + + + + +
+   + + +

+Return values for the FLAC__StreamEncoder seek callback.

Enumeration values:
+ + + + +
FLAC__STREAM_ENCODER_SEEK_STATUS_OK  +The seek was OK and encoding can continue.
FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR  +An unrecoverable error occurred.
FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED  +Client does not support seeking.
+
+
+

+ + + + +
+ + + + +
enum FLAC__StreamEncoderTellStatus
+
+ + + + + +
+   + + +

+Return values for the FLAC__StreamEncoder tell callback.

Enumeration values:
+ + + + +
FLAC__STREAM_ENCODER_TELL_STATUS_OK  +The tell was OK and encoding can continue.
FLAC__STREAM_ENCODER_TELL_STATUS_ERROR  +An unrecoverable error occurred.
FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED  +Client does not support seeking.
+
+
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
FLAC__StreamEncoder* FLAC__stream_encoder_new void   ) 
+
+ + + + + +
+   + + +

+Create a new stream encoder instance. The instance is created with default settings; see the individual FLAC__stream_encoder_set_*() functions for each setting's default.

+

Return values:
+ + +
FLAC__StreamEncoder* NULL if there was an error allocating memory, else the new instance.
+
+
+

+ + + + +
+ + + + + + + + + +
void FLAC__stream_encoder_delete FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Free an encoder instance. Deletes the object pointed to by encoder.

+

Parameters:
+ + +
encoder A pointer to an existing encoder.
+
+
Assertions:
 encoder != NULL 
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_ogg_serial_number FLAC__StreamEncoder encoder,
long  serial_number
+
+ + + + + +
+   + + +

+Set the serial number for the FLAC stream to use in the Ogg container.

+

Note:
This does not need to be set for native FLAC encoding.

+It is recommended to set a serial number explicitly as the default of '0' may collide with other streams.

+
Default Value:
0
+
Parameters:
+ + + +
encoder An encoder instance to set.
serial_number See above.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_verify FLAC__StreamEncoder encoder,
FLAC__bool  value
+
+ + + + + +
+   + + +

+Set the "verify" flag. If true, the encoder will verify it's own encoded output by feeding it through an internal decoder and comparing the original signal against the decoded signal. If a mismatch occurs, the process call will return false. Note that this will slow the encoding process by the extra time required for decoding and comparison.

+

Default Value:
false
+
Parameters:
+ + + +
encoder An encoder instance to set.
value Flag value (see above).
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_streamable_subset FLAC__StreamEncoder encoder,
FLAC__bool  value
+
+ + + + + +
+   + + +

+Set the Subset flag. If true, the encoder will comply with the Subset and will check the settings during FLAC__stream_encoder_init_*() to see if all settings comply. If false, the settings may take advantage of the full range that the format allows.

+Make sure you know what it entails before setting this to false.

+

Default Value:
true
+
Parameters:
+ + + +
encoder An encoder instance to set.
value Flag value (see above).
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_channels FLAC__StreamEncoder encoder,
unsigned  value
+
+ + + + + +
+   + + +

+Set the number of channels to be encoded.

+

Default Value:
2
+
Parameters:
+ + + +
encoder An encoder instance to set.
value See above.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_bits_per_sample FLAC__StreamEncoder encoder,
unsigned  value
+
+ + + + + +
+   + + +

+Set the sample resolution of the input to be encoded.

+

Warning:
Do not feed the encoder data that is wider than the value you set here or you will generate an invalid stream.
+
Default Value:
16
+
Parameters:
+ + + +
encoder An encoder instance to set.
value See above.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_sample_rate FLAC__StreamEncoder encoder,
unsigned  value
+
+ + + + + +
+   + + +

+Set the sample rate (in Hz) of the input to be encoded.

+

Default Value:
44100
+
Parameters:
+ + + +
encoder An encoder instance to set.
value See above.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_compression_level FLAC__StreamEncoder encoder,
unsigned  value
+
+ + + + + +
+   + + +

+Set the compression level

+The compression level is roughly proportional to the amount of effort the encoder expends to compress the file. A higher level usually means more computation but higher compression. The default level is suitable for most applications.

+Currently the levels range from 0 (fastest, least compression) to 8 (slowest, most compression). A value larger than 8 will be treated as 8.

+This function automatically calls the following other _set_ functions with appropriate values, so the client does not need to unless it specifically wants to override them:

+

+The actual values set for each level are: + + + + + + + + + + + + + + + + + + + + +
leveldo mid-side stereoloose mid-side stereoapodizationmax lpc orderqlp coeff precisionqlp coeff prec searchescape codingexhaustive model searchmin residual partition ordermax residual partition orderrice parameter search dist
0falsefalsetukey(0.5)00falsefalsefalse030
1truetruetukey(0.5)00falsefalsefalse030
2truefalsetukey(0.5)00falsefalsefalse030
3falsefalsetukey(0.5)60falsefalsefalse040
4truetruetukey(0.5)80falsefalsefalse040
5truefalsetukey(0.5)80falsefalsefalse050
6truefalsetukey(0.5)80falsefalsefalse060
7truefalsetukey(0.5)80falsefalsetrue060
8truefalsetukey(0.5)120falsefalsetrue060
+

+

Default Value:
5
+
Parameters:
+ + + +
encoder An encoder instance to set.
value See above.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_blocksize FLAC__StreamEncoder encoder,
unsigned  value
+
+ + + + + +
+   + + +

+Set the blocksize to use while encoding.

+The number of samples to use per frame. Use 0 to let the encoder estimate a blocksize; this is usually best.

+

Default Value:
0
+
Parameters:
+ + + +
encoder An encoder instance to set.
value See above.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_do_mid_side_stereo FLAC__StreamEncoder encoder,
FLAC__bool  value
+
+ + + + + +
+   + + +

+Set to true to enable mid-side encoding on stereo input. The number of channels must be 2 for this to have any effect. Set to false to use only independent channel coding.

+

Default Value:
false
+
Parameters:
+ + + +
encoder An encoder instance to set.
value Flag value (see above).
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_loose_mid_side_stereo FLAC__StreamEncoder encoder,
FLAC__bool  value
+
+ + + + + +
+   + + +

+Set to true to enable adaptive switching between mid-side and left-right encoding on stereo input. Set to false to use exhaustive searching. Setting this to true requires FLAC__stream_encoder_set_do_mid_side_stereo() to also be set to true in order to have any effect.

+

Default Value:
false
+
Parameters:
+ + + +
encoder An encoder instance to set.
value Flag value (see above).
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_apodization FLAC__StreamEncoder encoder,
const char *  specification
+
+ + + + + +
+   + + +

+Sets the apodization function(s) the encoder will use when windowing audio data for LPC analysis.

+The specification is a plain ASCII string which specifies exactly which functions to use. There may be more than one (up to 32), separated by ';' characters. Some functions take one or more comma-separated arguments in parentheses.

+The available functions are bartlett, bartlett_hann, blackman, blackman_harris_4term_92db, connes, flattop, gauss(STDDEV), hamming, hann, kaiser_bessel, nuttall, rectangle, triangle, tukey(P), welch.

+For gauss(STDDEV), STDDEV specifies the standard deviation (0<STDDEV<=0.5).

+For tukey(P), P specifies the fraction of the window that is tapered (0<=P<=1). P=0 corresponds to rectangle and P=1 corresponds to hann.

+Example specifications are "blackman" or "hann;triangle;tukey(0.5);tukey(0.25);tukey(0.125)"

+Any function that is specified erroneously is silently dropped. Up to 32 functions are kept, the rest are dropped. If the specification is empty the encoder defaults to "tukey(0.5)".

+When more than one function is specified, then for every subframe the encoder will try each of them separately and choose the window that results in the smallest compressed subframe.

+Note that each function specified causes the encoder to occupy a floating point array in which to store the window.

+

Default Value:
"tukey(0.5)"
+
Parameters:
+ + + +
encoder An encoder instance to set.
specification See above.
+
+
Assertions:
 encoder != NULL 
+
 specification != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_max_lpc_order FLAC__StreamEncoder encoder,
unsigned  value
+
+ + + + + +
+   + + +

+Set the maximum LPC order, or 0 to use only the fixed predictors.

+

Default Value:
0
+
Parameters:
+ + + +
encoder An encoder instance to set.
value See above.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_qlp_coeff_precision FLAC__StreamEncoder encoder,
unsigned  value
+
+ + + + + +
+   + + +

+Set the precision, in bits, of the quantized linear predictor coefficients, or 0 to let the encoder select it based on the blocksize.

+

Note:
In the current implementation, qlp_coeff_precision + bits_per_sample must be less than 32.
+
Default Value:
0
+
Parameters:
+ + + +
encoder An encoder instance to set.
value See above.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_do_qlp_coeff_prec_search FLAC__StreamEncoder encoder,
FLAC__bool  value
+
+ + + + + +
+   + + +

+Set to false to use only the specified quantized linear predictor coefficient precision, or true to search neighboring precision values and use the best one.

+

Default Value:
false
+
Parameters:
+ + + +
encoder An encoder instance to set.
value See above.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_do_escape_coding FLAC__StreamEncoder encoder,
FLAC__bool  value
+
+ + + + + +
+   + + +

+Deprecated. Setting this value has no effect.

+

Default Value:
false
+
Parameters:
+ + + +
encoder An encoder instance to set.
value See above.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_do_exhaustive_model_search FLAC__StreamEncoder encoder,
FLAC__bool  value
+
+ + + + + +
+   + + +

+Set to false to let the encoder estimate the best model order based on the residual signal energy, or true to force the encoder to evaluate all order models and select the best.

+

Default Value:
false
+
Parameters:
+ + + +
encoder An encoder instance to set.
value See above.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_min_residual_partition_order FLAC__StreamEncoder encoder,
unsigned  value
+
+ + + + + +
+   + + +

+Set the minimum partition order to search when coding the residual. This is used in tandem with FLAC__stream_encoder_set_max_residual_partition_order().

+The partition order determines the context size in the residual. The context size will be approximately blocksize / (2 ^ order).

+Set both min and max values to 0 to force a single context, whose Rice parameter is based on the residual signal variance. Otherwise, set a min and max order, and the encoder will search all orders, using the mean of each context for its Rice parameter, and use the best.

+

Default Value:
0
+
Parameters:
+ + + +
encoder An encoder instance to set.
value See above.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_max_residual_partition_order FLAC__StreamEncoder encoder,
unsigned  value
+
+ + + + + +
+   + + +

+Set the maximum partition order to search when coding the residual. This is used in tandem with FLAC__stream_encoder_set_min_residual_partition_order().

+The partition order determines the context size in the residual. The context size will be approximately blocksize / (2 ^ order).

+Set both min and max values to 0 to force a single context, whose Rice parameter is based on the residual signal variance. Otherwise, set a min and max order, and the encoder will search all orders, using the mean of each context for its Rice parameter, and use the best.

+

Default Value:
0
+
Parameters:
+ + + +
encoder An encoder instance to set.
value See above.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_rice_parameter_search_dist FLAC__StreamEncoder encoder,
unsigned  value
+
+ + + + + +
+   + + +

+Deprecated. Setting this value has no effect.

+

Default Value:
0
+
Parameters:
+ + + +
encoder An encoder instance to set.
value See above.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_total_samples_estimate FLAC__StreamEncoder encoder,
FLAC__uint64  value
+
+ + + + + +
+   + + +

+Set an estimate of the total samples that will be encoded. This is merely an estimate and may be set to 0 if unknown. This value will be written to the STREAMINFO block before encoding, and can remove the need for the caller to rewrite the value later if the value is known before encoding.

+

Default Value:
0
+
Parameters:
+ + + +
encoder An encoder instance to set.
value See above.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_set_metadata FLAC__StreamEncoder encoder,
FLAC__StreamMetadata **  metadata,
unsigned  num_blocks
+
+ + + + + +
+   + + +

+Set the metadata blocks to be emitted to the stream before encoding. A value of NULL, 0 implies no metadata; otherwise, supply an array of pointers to metadata blocks. The array is non-const since the encoder may need to change the is_last flag inside them, and in some cases update seek point offsets. Otherwise, the encoder will not modify or free the blocks. It is up to the caller to free the metadata blocks after encoding finishes.

+

Note:
The encoder stores only copies of the pointers in the metadata array; the metadata blocks themselves must survive at least until after FLAC__stream_encoder_finish() returns. Do not free the blocks until then.

+The STREAMINFO block is always written and no STREAMINFO block may occur in the supplied array.

+By default the encoder does not create a SEEKTABLE. If one is supplied in the metadata array, but the client has specified that it does not support seeking, then the SEEKTABLE will be written verbatim. However by itself this is not very useful as the client will not know the stream offsets for the seekpoints ahead of time. In order to get a proper seektable the client must support seeking. See next note.

+SEEKTABLE blocks are handled specially. Since you will not know the values for the seek point stream offsets, you should pass in a SEEKTABLE 'template', that is, a SEEKTABLE object with the required sample numbers (or placeholder points), with 0 for the frame_samples and stream_offset fields for each point. If the client has specified that it supports seeking by providing a seek callback to FLAC__stream_encoder_init_stream() or both seek AND read callback to FLAC__stream_encoder_init_ogg_stream() (or by using FLAC__stream_encoder_init*_file() or FLAC__stream_encoder_init*_FILE()), then while it is encoding the encoder will fill the stream offsets in for you and when encoding is finished, it will seek back and write the real values into the SEEKTABLE block in the stream. There are helper routines for manipulating seektable template blocks; see metadata.h: FLAC__metadata_object_seektable_template_*(). If the client does not support seeking, the SEEKTABLE will have inaccurate offsets which will slow down or remove the ability to seek in the FLAC stream.

+The encoder instance will modify the first SEEKTABLE block as it transforms the template to a valid seektable while encoding, but it is still up to the caller to free all metadata blocks after encoding.

+A VORBIS_COMMENT block may be supplied. The vendor string in it will be ignored. libFLAC will use it's own vendor string. libFLAC will not modify the passed-in VORBIS_COMMENT's vendor string, it will simply write it's own into the stream. If no VORBIS_COMMENT block is present in the metadata array, libFLAC will write an empty one, containing only the vendor string.

+The Ogg FLAC mapping requires that the VORBIS_COMMENT block be the second metadata block of the stream. The encoder already supplies the STREAMINFO block automatically. If metadata does not contain a VORBIS_COMMENT block, the encoder will supply that too. Otherwise, if metadata does contain a VORBIS_COMMENT block and it is not the first, the init function will reorder metadata by moving the VORBIS_COMMENT block to the front; the relative ordering of the other blocks will remain as they were.

+The Ogg FLAC mapping limits the number of metadata blocks per stream to 65535. If num_blocks exceeds this the function will return false.

+
Default Value:
NULL, 0
+
Parameters:
+ + + + +
encoder An encoder instance to set.
metadata See above.
num_blocks See above.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if the encoder is already initialized, else true. false if the encoder is already initialized, or if num_blocks > 65535 if encoding to Ogg FLAC, else true.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__StreamEncoderState FLAC__stream_encoder_get_state const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the current encoder state.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__StreamEncoderState The current encoder state.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__StreamDecoderState FLAC__stream_encoder_get_verify_decoder_state const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the state of the verify stream decoder. Useful when the stream encoder state is FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__StreamDecoderState The verify stream decoder state.
+
+
+

+ + + + +
+ + + + + + + + + +
const char* FLAC__stream_encoder_get_resolved_state_string const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the current encoder state as a C string. This version automatically resolves FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR by getting the verify decoder's state.

+

Parameters:
+ + +
encoder A encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
const char * The encoder state as a C string. Do not modify the contents.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void FLAC__stream_encoder_get_verify_decoder_error_stats const FLAC__StreamEncoder encoder,
FLAC__uint64 *  absolute_sample,
unsigned *  frame_number,
unsigned *  channel,
unsigned *  sample,
FLAC__int32 *  expected,
FLAC__int32 *  got
+
+ + + + + +
+   + + +

+Get relevant values about the nature of a verify decoder error. Useful when the stream encoder state is FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR. The arguments should be addresses in which the stats will be returned, or NULL if value is not desired.

+

Parameters:
+ + + + + + + + +
encoder An encoder instance to query.
absolute_sample The absolute sample number of the mismatch.
frame_number The number of the frame in which the mismatch occurred.
channel The channel in which the mismatch occurred.
sample The number of the sample (relative to the frame) in which the mismatch occurred.
expected The expected value for the sample in question.
got The actual value returned by the decoder.
+
+
Assertions:
 encoder != NULL 
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_encoder_get_verify const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the "verify" flag.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool See FLAC__stream_encoder_set_verify().
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_encoder_get_streamable_subset const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the <A HREF="../format.html#subset>Subset flag.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool See FLAC__stream_encoder_set_streamable_subset().
+
+
+

+ + + + +
+ + + + + + + + + +
unsigned FLAC__stream_encoder_get_channels const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the number of input channels being processed.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
unsigned See FLAC__stream_encoder_set_channels().
+
+
+

+ + + + +
+ + + + + + + + + +
unsigned FLAC__stream_encoder_get_bits_per_sample const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the input sample resolution setting.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
unsigned See FLAC__stream_encoder_set_bits_per_sample().
+
+
+

+ + + + +
+ + + + + + + + + +
unsigned FLAC__stream_encoder_get_sample_rate const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the input sample rate setting.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
unsigned See FLAC__stream_encoder_set_sample_rate().
+
+
+

+ + + + +
+ + + + + + + + + +
unsigned FLAC__stream_encoder_get_blocksize const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the blocksize setting.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
unsigned See FLAC__stream_encoder_set_blocksize().
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_encoder_get_do_mid_side_stereo const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the "mid/side stereo coding" flag.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool See FLAC__stream_encoder_get_do_mid_side_stereo().
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_encoder_get_loose_mid_side_stereo const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the "adaptive mid/side switching" flag.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool See FLAC__stream_encoder_set_loose_mid_side_stereo().
+
+
+

+ + + + +
+ + + + + + + + + +
unsigned FLAC__stream_encoder_get_max_lpc_order const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the maximum LPC order setting.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
unsigned See FLAC__stream_encoder_set_max_lpc_order().
+
+
+

+ + + + +
+ + + + + + + + + +
unsigned FLAC__stream_encoder_get_qlp_coeff_precision const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the quantized linear predictor coefficient precision setting.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
unsigned See FLAC__stream_encoder_set_qlp_coeff_precision().
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_encoder_get_do_qlp_coeff_prec_search const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the qlp coefficient precision search flag.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool See FLAC__stream_encoder_set_do_qlp_coeff_prec_search().
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_encoder_get_do_escape_coding const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the "escape coding" flag.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool See FLAC__stream_encoder_set_do_escape_coding().
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_encoder_get_do_exhaustive_model_search const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the exhaustive model search flag.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool See FLAC__stream_encoder_set_do_exhaustive_model_search().
+
+
+

+ + + + +
+ + + + + + + + + +
unsigned FLAC__stream_encoder_get_min_residual_partition_order const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the minimum residual partition order setting.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
unsigned See FLAC__stream_encoder_set_min_residual_partition_order().
+
+
+

+ + + + +
+ + + + + + + + + +
unsigned FLAC__stream_encoder_get_max_residual_partition_order const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get maximum residual partition order setting.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
unsigned See FLAC__stream_encoder_set_max_residual_partition_order().
+
+
+

+ + + + +
+ + + + + + + + + +
unsigned FLAC__stream_encoder_get_rice_parameter_search_dist const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the Rice parameter search distance setting.

+

Parameters:
+ + +
encoder An encoder instance to query.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
unsigned See FLAC__stream_encoder_set_rice_parameter_search_dist().
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__uint64 FLAC__stream_encoder_get_total_samples_estimate const FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Get the previously set estimate of the total samples to be encoded. The encoder merely mimics back the value given to FLAC__stream_encoder_set_total_samples_estimate() since it has no other way of knowing how many samples the client will encode.

+

Parameters:
+ + +
encoder An encoder instance to set.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__uint64 See FLAC__stream_encoder_get_total_samples_estimate().
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_stream FLAC__StreamEncoder encoder,
FLAC__StreamEncoderWriteCallback  write_callback,
FLAC__StreamEncoderSeekCallback  seek_callback,
FLAC__StreamEncoderTellCallback  tell_callback,
FLAC__StreamEncoderMetadataCallback  metadata_callback,
void *  client_data
+
+ + + + + +
+   + + +

+Initialize the encoder instance to encode native FLAC streams.

+This flavor of initialization sets up the encoder to encode to a native FLAC stream. I/O is performed via callbacks to the client. For encoding to a plain file via filename or open FILE*, FLAC__stream_encoder_init_file() and FLAC__stream_encoder_init_FILE() provide a simpler interface.

+This function should be called after FLAC__stream_encoder_new() and FLAC__stream_encoder_set_*() but before FLAC__stream_encoder_process() or FLAC__stream_encoder_process_interleaved(). initialization succeeded.

+The call to FLAC__stream_encoder_init_stream() currently will also immediately call the write callback several times, once with the fLaC signature, and once for each encoded metadata block.

+

Parameters:
+ + + + + + + +
encoder An uninitialized encoder instance.
write_callback See FLAC__StreamEncoderWriteCallback. This pointer must not be NULL.
seek_callback See FLAC__StreamEncoderSeekCallback. This pointer may be NULL if seeking is not supported. The encoder uses seeking to go back and write some some stream statistics to the STREAMINFO block; this is recommended but not necessary to create a valid FLAC stream. If seek_callback is not NULL then a tell_callback must also be supplied. Alternatively, a dummy seek callback that just returns FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED may also be supplied, all though this is slightly less efficient for the encoder.
tell_callback See FLAC__StreamEncoderTellCallback. This pointer may be NULL if seeking is not supported. If seek_callback is NULL then this argument will be ignored. If seek_callback is not NULL then a tell_callback must also be supplied. Alternatively, a dummy tell callback that just returns FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED may also be supplied, all though this is slightly less efficient for the encoder.
metadata_callback See FLAC__StreamEncoderMetadataCallback. This pointer may be NULL if the callback is not desired. If the client provides a seek callback, this function is not necessary as the encoder will automatically seek back and update the STREAMINFO block. It may also be NULL if the client does not support seeking, since it will have no way of going back to update the STREAMINFO. However the client can still supply a callback if it would like to know the details from the STREAMINFO.
client_data This value will be supplied to callbacks in their client_data argument.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__StreamEncoderInitStatus FLAC__STREAM_ENCODER_INIT_STATUS_OK if initialization was successful; see FLAC__StreamEncoderInitStatus for the meanings of other return values.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_ogg_stream FLAC__StreamEncoder encoder,
FLAC__StreamEncoderReadCallback  read_callback,
FLAC__StreamEncoderWriteCallback  write_callback,
FLAC__StreamEncoderSeekCallback  seek_callback,
FLAC__StreamEncoderTellCallback  tell_callback,
FLAC__StreamEncoderMetadataCallback  metadata_callback,
void *  client_data
+
+ + + + + +
+   + + +

+Initialize the encoder instance to encode Ogg FLAC streams.

+This flavor of initialization sets up the encoder to encode to a FLAC stream in an Ogg container. I/O is performed via callbacks to the client. For encoding to a plain file via filename or open FILE*, FLAC__stream_encoder_init_ogg_file() and FLAC__stream_encoder_init_ogg_FILE() provide a simpler interface.

+This function should be called after FLAC__stream_encoder_new() and FLAC__stream_encoder_set_*() but before FLAC__stream_encoder_process() or FLAC__stream_encoder_process_interleaved(). initialization succeeded.

+The call to FLAC__stream_encoder_init_ogg_stream() currently will also immediately call the write callback several times to write the metadata packets.

+

Parameters:
+ + + + + + + + +
encoder An uninitialized encoder instance.
read_callback See FLAC__StreamEncoderReadCallback. This pointer must not be NULL if seek_callback is non-NULL since they are both needed to be able to write data back to the Ogg FLAC stream in the post-encode phase.
write_callback See FLAC__StreamEncoderWriteCallback. This pointer must not be NULL.
seek_callback See FLAC__StreamEncoderSeekCallback. This pointer may be NULL if seeking is not supported. The encoder uses seeking to go back and write some some stream statistics to the STREAMINFO block; this is recommended but not necessary to create a valid FLAC stream. If seek_callback is not NULL then a tell_callback must also be supplied. Alternatively, a dummy seek callback that just returns FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED may also be supplied, all though this is slightly less efficient for the encoder.
tell_callback See FLAC__StreamEncoderTellCallback. This pointer may be NULL if seeking is not supported. If seek_callback is NULL then this argument will be ignored. If seek_callback is not NULL then a tell_callback must also be supplied. Alternatively, a dummy tell callback that just returns FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED may also be supplied, all though this is slightly less efficient for the encoder.
metadata_callback See FLAC__StreamEncoderMetadataCallback. This pointer may be NULL if the callback is not desired. If the client provides a seek callback, this function is not necessary as the encoder will automatically seek back and update the STREAMINFO block. It may also be NULL if the client does not support seeking, since it will have no way of going back to update the STREAMINFO. However the client can still supply a callback if it would like to know the details from the STREAMINFO.
client_data This value will be supplied to callbacks in their client_data argument.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__StreamEncoderInitStatus FLAC__STREAM_ENCODER_INIT_STATUS_OK if initialization was successful; see FLAC__StreamEncoderInitStatus for the meanings of other return values.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_FILE FLAC__StreamEncoder encoder,
FILE *  file,
FLAC__StreamEncoderProgressCallback  progress_callback,
void *  client_data
+
+ + + + + +
+   + + +

+Initialize the encoder instance to encode native FLAC files.

+This flavor of initialization sets up the encoder to encode to a plain native FLAC file. For non-stdio streams, you must use FLAC__stream_encoder_init_stream() and provide callbacks for the I/O.

+This function should be called after FLAC__stream_encoder_new() and FLAC__stream_encoder_set_*() but before FLAC__stream_encoder_process() or FLAC__stream_encoder_process_interleaved(). initialization succeeded.

+

Parameters:
+ + + + + +
encoder An uninitialized encoder instance.
file An open file. The file should have been opened with mode "w+b" and rewound. The file becomes owned by the encoder and should not be manipulated by the client while encoding. Unless file is stdout, it will be closed when FLAC__stream_encoder_finish() is called. Note however that a proper SEEKTABLE cannot be created when encoding to stdout since it is not seekable.
progress_callback See FLAC__StreamEncoderProgressCallback. This pointer may be NULL if the callback is not desired.
client_data This value will be supplied to callbacks in their client_data argument.
+
+
Assertions:
 encoder != NULL 
+
 file != NULL 
+
+
Return values:
+ + +
FLAC__StreamEncoderInitStatus FLAC__STREAM_ENCODER_INIT_STATUS_OK if initialization was successful; see FLAC__StreamEncoderInitStatus for the meanings of other return values.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_ogg_FILE FLAC__StreamEncoder encoder,
FILE *  file,
FLAC__StreamEncoderProgressCallback  progress_callback,
void *  client_data
+
+ + + + + +
+   + + +

+Initialize the encoder instance to encode Ogg FLAC files.

+This flavor of initialization sets up the encoder to encode to a plain Ogg FLAC file. For non-stdio streams, you must use FLAC__stream_encoder_init_ogg_stream() and provide callbacks for the I/O.

+This function should be called after FLAC__stream_encoder_new() and FLAC__stream_encoder_set_*() but before FLAC__stream_encoder_process() or FLAC__stream_encoder_process_interleaved(). initialization succeeded.

+

Parameters:
+ + + + + +
encoder An uninitialized encoder instance.
file An open file. The file should have been opened with mode "w+b" and rewound. The file becomes owned by the encoder and should not be manipulated by the client while encoding. Unless file is stdout, it will be closed when FLAC__stream_encoder_finish() is called. Note however that a proper SEEKTABLE cannot be created when encoding to stdout since it is not seekable.
progress_callback See FLAC__StreamEncoderProgressCallback. This pointer may be NULL if the callback is not desired.
client_data This value will be supplied to callbacks in their client_data argument.
+
+
Assertions:
 encoder != NULL 
+
 file != NULL 
+
+
Return values:
+ + +
FLAC__StreamEncoderInitStatus FLAC__STREAM_ENCODER_INIT_STATUS_OK if initialization was successful; see FLAC__StreamEncoderInitStatus for the meanings of other return values.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_file FLAC__StreamEncoder encoder,
const char *  filename,
FLAC__StreamEncoderProgressCallback  progress_callback,
void *  client_data
+
+ + + + + +
+   + + +

+Initialize the encoder instance to encode native FLAC files.

+This flavor of initialization sets up the encoder to encode to a plain FLAC file. If POSIX fopen() semantics are not sufficient (for example, with Unicode filenames on Windows), you must use FLAC__stream_encoder_init_FILE(), or FLAC__stream_encoder_init_stream() and provide callbacks for the I/O.

+This function should be called after FLAC__stream_encoder_new() and FLAC__stream_encoder_set_*() but before FLAC__stream_encoder_process() or FLAC__stream_encoder_process_interleaved(). initialization succeeded.

+

Parameters:
+ + + + + +
encoder An uninitialized encoder instance.
filename The name of the file to encode to. The file will be opened with fopen(). Use NULL to encode to stdout. Note however that a proper SEEKTABLE cannot be created when encoding to stdout since it is not seekable.
progress_callback See FLAC__StreamEncoderProgressCallback. This pointer may be NULL if the callback is not desired.
client_data This value will be supplied to callbacks in their client_data argument.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__StreamEncoderInitStatus FLAC__STREAM_ENCODER_INIT_STATUS_OK if initialization was successful; see FLAC__StreamEncoderInitStatus for the meanings of other return values.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_ogg_file FLAC__StreamEncoder encoder,
const char *  filename,
FLAC__StreamEncoderProgressCallback  progress_callback,
void *  client_data
+
+ + + + + +
+   + + +

+Initialize the encoder instance to encode Ogg FLAC files.

+This flavor of initialization sets up the encoder to encode to a plain Ogg FLAC file. If POSIX fopen() semantics are not sufficient (for example, with Unicode filenames on Windows), you must use FLAC__stream_encoder_init_ogg_FILE(), or FLAC__stream_encoder_init_ogg_stream() and provide callbacks for the I/O.

+This function should be called after FLAC__stream_encoder_new() and FLAC__stream_encoder_set_*() but before FLAC__stream_encoder_process() or FLAC__stream_encoder_process_interleaved(). initialization succeeded.

+

Parameters:
+ + + + + +
encoder An uninitialized encoder instance.
filename The name of the file to encode to. The file will be opened with fopen(). Use NULL to encode to stdout. Note however that a proper SEEKTABLE cannot be created when encoding to stdout since it is not seekable.
progress_callback See FLAC__StreamEncoderProgressCallback. This pointer may be NULL if the callback is not desired.
client_data This value will be supplied to callbacks in their client_data argument.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__StreamEncoderInitStatus FLAC__STREAM_ENCODER_INIT_STATUS_OK if initialization was successful; see FLAC__StreamEncoderInitStatus for the meanings of other return values.
+
+
+

+ + + + +
+ + + + + + + + + +
FLAC__bool FLAC__stream_encoder_finish FLAC__StreamEncoder encoder  ) 
+
+ + + + + +
+   + + +

+Finish the encoding process. Flushes the encoding buffer, releases resources, resets the encoder settings to their defaults, and returns the encoder state to FLAC__STREAM_ENCODER_UNINITIALIZED. Note that this can generate one or more write callbacks before returning, and will generate a metadata callback.

+Note that in the course of processing the last frame, errors can occur, so the caller should be sure to check the return value to ensure the file was encoded properly.

+In the event of a prematurely-terminated encode, it is not strictly necessary to call this immediately before FLAC__stream_encoder_delete() but it is good practice to match every FLAC__stream_encoder_init_*() with a FLAC__stream_encoder_finish().

+

Parameters:
+ + +
encoder An uninitialized encoder instance.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool false if an error occurred processing the last frame; or if verify mode is set (see FLAC__stream_encoder_set_verify()), there was a verify mismatch; else true. If false, caller should check the state with FLAC__stream_encoder_get_state() for more information about the error.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_process FLAC__StreamEncoder encoder,
const FLAC__int32 *const   buffer[],
unsigned  samples
+
+ + + + + +
+   + + +

+Submit data for encoding. This version allows you to supply the input data via an array of pointers, each pointer pointing to an array of samples samples representing one channel. The samples need not be block-aligned, but each channel should have the same number of samples. Each sample should be a signed integer, right-justified to the resolution set by FLAC__stream_encoder_set_bits_per_sample(). For example, if the resolution is 16 bits per sample, the samples should all be in the range [-32768,32767].

+For applications where channel order is important, channels must follow the order as described in the frame header.

+

Parameters:
+ + + + +
encoder An initialized encoder instance in the OK state.
buffer An array of pointers to each channel's signal.
samples The number of samples in one channel.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool true if successful, else false; in this case, check the encoder state with FLAC__stream_encoder_get_state() to see what went wrong.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
FLAC__bool FLAC__stream_encoder_process_interleaved FLAC__StreamEncoder encoder,
const FLAC__int32  buffer[],
unsigned  samples
+
+ + + + + +
+   + + +

+Submit data for encoding. This version allows you to supply the input data where the channels are interleaved into a single array (i.e. channel0_sample0, channel1_sample0, ... , channelN_sample0, channel0_sample1, ...). The samples need not be block-aligned but they must be sample-aligned, i.e. the first value should be channel0_sample0 and the last value channelN_sampleM. Each sample should be a signed integer, right-justified to the resolution set by FLAC__stream_encoder_set_bits_per_sample(). For example, if the resolution is 16 bits per sample, the samples should all be in the range [-32768,32767].

+For applications where channel order is important, channels must follow the order as described in the frame header.

+

Parameters:
+ + + + +
encoder An initialized encoder instance in the OK state.
buffer An array of channel-interleaved data (see above).
samples The number of samples in one channel, the same as for FLAC__stream_encoder_process(). For example, if encoding two channels, 1000 samples corresponds to a buffer of 2000 values.
+
+
Assertions:
 encoder != NULL 
+
+
Return values:
+ + +
FLAC__bool true if successful, else false; in this case, check the encoder state with FLAC__stream_encoder_get_state() to see what went wrong.
+
+
+


Variable Documentation

+

+ + + + +
+ + + + +
const char* const FLAC__StreamEncoderStateString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__StreamEncoderState to a C string.

+Using a FLAC__StreamEncoderState as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const char* const FLAC__StreamEncoderInitStatusString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__StreamEncoderInitStatus to a C string.

+Using a FLAC__StreamEncoderInitStatus as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const char* const FLAC__StreamEncoderReadStatusString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__StreamEncoderReadStatus to a C string.

+Using a FLAC__StreamEncoderReadStatus as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const char* const FLAC__StreamEncoderWriteStatusString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__StreamEncoderWriteStatus to a C string.

+Using a FLAC__StreamEncoderWriteStatus as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const char* const FLAC__StreamEncoderSeekStatusString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__StreamEncoderSeekStatus to a C string.

+Using a FLAC__StreamEncoderSeekStatus as the index to this array will give the string equivalent. The contents should not be modified.

+

+ + + + +
+ + + + +
const char* const FLAC__StreamEncoderTellStatusString[]
+
+ + + + + +
+   + + +

+Maps a FLAC__StreamEncoderTellStatus to a C string.

+Using a FLAC__StreamEncoderTellStatus as the index to this array will give the string equivalent. The contents should not be modified.

+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flacpp.html b/3rdparty/libflac/doc/html/api/group__flacpp.html new file mode 100644 index 0000000..ecc617e --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flacpp.html @@ -0,0 +1,45 @@ + + +FLAC: FLAC C++ API + + + + +

FLAC C++ API


Detailed Description

+The FLAC C++ API is the interface to libFLAC++, a set of classes that encapsulate the encoders, decoders, and metadata interfaces in libFLAC. +

+ + + + + + + + + + + +

Modules

 FLAC++/decoder.h: decoder classes
 FLAC++/encoder.h: encoder classes
 FLAC++/export.h: export symbols
 FLAC++/metadata.h: metadata interfaces
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flacpp__decoder.html b/3rdparty/libflac/doc/html/api/group__flacpp__decoder.html new file mode 100644 index 0000000..235ca4f --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flacpp__decoder.html @@ -0,0 +1,50 @@ + + +FLAC: FLAC++/decoder.h: decoder classes + + + + +

FLAC++/decoder.h: decoder classes
+ +[FLAC C++ API] +


Detailed Description

+This module describes the decoder layers provided by libFLAC++. +

+The libFLAC++ decoder classes are object wrappers around their counterparts in libFLAC. All decoding layers available in libFLAC are also provided here. The interface is very similar; make sure to read the libFLAC decoder module .

+There are only two significant differences here. First, instead of passing in C function pointers for callbacks, you inherit from the decoder class and provide implementations for the callbacks in your derived class; because of this there is no need for a 'client_data' property.

+Second, there are two stream decoder classes. FLAC::Decoder::Stream is used for the same cases that FLAC__stream_decoder_init_stream() / FLAC__stream_decoder_init_ogg_stream() are used, and FLAC::Decoder::File is used for the same cases that FLAC__stream_decoder_init_FILE() and FLAC__stream_decoder_init_file() / FLAC__stream_decoder_init_ogg_FILE() and FLAC__stream_decoder_init_ogg_file() are used. +

+ + + + + + + + + +

Classes

class  FLAC::Decoder::Stream
 This class wraps the FLAC__StreamDecoder. If you are decoding from a file, FLAC::Decoder::File may be more convenient. More...
class  FLAC::Decoder::File
 This class wraps the FLAC__StreamDecoder. If you are not decoding from a file, you may need to use FLAC::Decoder::Stream. More...
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flacpp__encoder.html b/3rdparty/libflac/doc/html/api/group__flacpp__encoder.html new file mode 100644 index 0000000..6a9cbd7 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flacpp__encoder.html @@ -0,0 +1,50 @@ + + +FLAC: FLAC++/encoder.h: encoder classes + + + + +

FLAC++/encoder.h: encoder classes
+ +[FLAC C++ API] +


Detailed Description

+This module describes the encoder layers provided by libFLAC++. +

+The libFLAC++ encoder classes are object wrappers around their counterparts in libFLAC. All encoding layers available in libFLAC are also provided here. The interface is very similar; make sure to read the libFLAC encoder module .

+There are only two significant differences here. First, instead of passing in C function pointers for callbacks, you inherit from the encoder class and provide implementations for the callbacks in your derived class; because of this there is no need for a 'client_data' property.

+Second, there are two stream encoder classes. FLAC::Encoder::Stream is used for the same cases that FLAC__stream_encoder_init_stream() / FLAC__stream_encoder_init_ogg_stream() are used, and FLAC::Encoder::File is used for the same cases that FLAC__stream_encoder_init_FILE() and FLAC__stream_encoder_init_file() / FLAC__stream_encoder_init_ogg_FILE() and FLAC__stream_encoder_init_ogg_file() are used. +

+ + + + + + + + + +

Classes

class  FLAC::Encoder::Stream
 This class wraps the FLAC__StreamEncoder. If you are encoding to a file, FLAC::Encoder::File may be more convenient. More...
class  FLAC::Encoder::File
 This class wraps the FLAC__StreamEncoder. If you are not encoding to a file, you may need to use FLAC::Encoder::Stream. More...
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flacpp__export.html b/3rdparty/libflac/doc/html/api/group__flacpp__export.html new file mode 100644 index 0000000..936f4da --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flacpp__export.html @@ -0,0 +1,54 @@ + + +FLAC: FLAC++/export.h: export symbols + + + + +

FLAC++/export.h: export symbols
+ +[FLAC C++ API] +


Detailed Description

+This module contains #defines and symbols for exporting function calls, and providing version information and compiled-in features. +

+If you are compiling with MSVC and will link to the static library (libFLAC++.lib) you should define FLAC__NO_DLL in your project to make sure the symbols are exported properly. +

+ + + + + + + + + + + +

Defines

+#define FLACPP_API
+#define FLACPP_API_VERSION_CURRENT   8
+#define FLACPP_API_VERSION_REVISION   0
+#define FLACPP_API_VERSION_AGE   2
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flacpp__metadata.html b/3rdparty/libflac/doc/html/api/group__flacpp__metadata.html new file mode 100644 index 0000000..4c5103e --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flacpp__metadata.html @@ -0,0 +1,50 @@ + + +FLAC: FLAC++/metadata.h: metadata interfaces + + + + +

FLAC++/metadata.h: metadata interfaces
+ +[FLAC C++ API] +


Detailed Description

+This module provides classes for creating and manipulating FLAC metadata blocks in memory, and three progressively more powerful interfaces for traversing and editing metadata in FLAC files. +

+The behavior closely mimics the C layer interface; be sure to read the detailed description of the C metadata module . Note that like the C layer, currently only the Chain interface (level 2) supports Ogg FLAC files, and it is read-only i.e. no writing back changed metadata to file. +

+ + + + + + + + + + + +

Modules

 FLAC++/metadata.h: metadata object classes
 FLAC++/metadata.h: metadata level 0 interface
 FLAC++/metadata.h: metadata level 1 interface
 FLAC++/metadata.h: metadata level 2 interface
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flacpp__metadata__level0.html b/3rdparty/libflac/doc/html/api/group__flacpp__metadata__level0.html new file mode 100644 index 0000000..3fcb41d --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flacpp__metadata__level0.html @@ -0,0 +1,414 @@ + + +FLAC: FLAC++/metadata.h: metadata level 0 interface + + + + +

FLAC++/metadata.h: metadata level 0 interface
+ +[FLAC++/metadata.h: metadata interfaces] +


Detailed Description

+Level 0 metadata iterators. +

+See the C layer equivalent for more. +

+ + + + + + + + + + + + + + + + + +

Functions

bool FLAC::Metadata::get_streaminfo (const char *filename, StreamInfo &streaminfo)
bool FLAC::Metadata::get_tags (const char *filename, VorbisComment *&tags)
bool FLAC::Metadata::get_tags (const char *filename, VorbisComment &tags)
bool FLAC::Metadata::get_cuesheet (const char *filename, CueSheet *&cuesheet)
bool FLAC::Metadata::get_cuesheet (const char *filename, CueSheet &cuesheet)
bool FLAC::Metadata::get_picture (const char *filename, Picture *&picture,::FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors)
bool FLAC::Metadata::get_picture (const char *filename, Picture &picture,::FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors)
+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::get_streaminfo const char *  filename,
StreamInfo &  streaminfo
+
+ + + + + +
+   + + +

+See FLAC__metadata_get_streaminfo(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::get_tags const char *  filename,
VorbisComment *&  tags
+
+ + + + + +
+   + + +

+See FLAC__metadata_get_tags(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::get_tags const char *  filename,
VorbisComment &  tags
+
+ + + + + +
+   + + +

+See FLAC__metadata_get_tags(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::get_cuesheet const char *  filename,
CueSheet *&  cuesheet
+
+ + + + + +
+   + + +

+See FLAC__metadata_get_cuesheet(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::get_cuesheet const char *  filename,
CueSheet &  cuesheet
+
+ + + + + +
+   + + +

+See FLAC__metadata_get_cuesheet(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::get_picture const char *  filename,
Picture *&  picture,
::FLAC__StreamMetadata_Picture_Type  type,
const char *  mime_type,
const FLAC__byte *  description,
unsigned  max_width,
unsigned  max_height,
unsigned  max_depth,
unsigned  max_colors
+
+ + + + + +
+   + + +

+See FLAC__metadata_get_picture(). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool FLAC::Metadata::get_picture const char *  filename,
Picture &  picture,
::FLAC__StreamMetadata_Picture_Type  type,
const char *  mime_type,
const FLAC__byte *  description,
unsigned  max_width,
unsigned  max_height,
unsigned  max_depth,
unsigned  max_colors
+
+ + + + + +
+   + + +

+See FLAC__metadata_get_picture(). +

+

+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flacpp__metadata__level1.html b/3rdparty/libflac/doc/html/api/group__flacpp__metadata__level1.html new file mode 100644 index 0000000..29500b7 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flacpp__metadata__level1.html @@ -0,0 +1,50 @@ + + +FLAC: FLAC++/metadata.h: metadata level 1 interface + + + + +

FLAC++/metadata.h: metadata level 1 interface
+ +[FLAC++/metadata.h: metadata interfaces] +


Detailed Description

+Level 1 metadata iterator. +

+The flow through the iterator in the C++ layer is similar to the C layer:

    +
  • Create a SimpleIterator instance
  • Check SimpleIterator::is_valid()
  • Call SimpleIterator::init() and check the return
  • Traverse and/or edit. Edits are written to file immediately.
  • Destroy the SimpleIterator instance
+

+The ownership of pointers in the C++ layer follows that in the C layer, i.e.

    +
  • The objects returned by get_block() are yours to modify, but changes are not reflected in the FLAC file until you call set_block(). The objects are also yours to delete; they are not automatically deleted when passed to set_block() or insert_block_after().
+

+See the C layer equivalent for more. +

+ + + + + +

Classes

class  FLAC::Metadata::SimpleIterator
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flacpp__metadata__level2.html b/3rdparty/libflac/doc/html/api/group__flacpp__metadata__level2.html new file mode 100644 index 0000000..2b302e9 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flacpp__metadata__level2.html @@ -0,0 +1,52 @@ + + +FLAC: FLAC++/metadata.h: metadata level 2 interface + + + + +

FLAC++/metadata.h: metadata level 2 interface
+ +[FLAC++/metadata.h: metadata interfaces] +


Detailed Description

+Level 2 metadata iterator. +

+The flow through the iterator in the C++ layer is similar to the C layer:

    +
  • Create a Chain instance
  • Check Chain::is_valid()
  • Call Chain::read() and check the return
  • Traverse and/or edit with an Iterator or with Chain::merge_padding() or Chain::sort_padding()
  • Write changes back to FLAC file with Chain::write()
  • Destroy the Chain instance
+

+The ownership of pointers in the C++ layer is slightly different than in the C layer, i.e.

    +
  • The objects returned by Iterator::get_block() are NOT owned by the iterator and should be deleted by the caller when finished, BUT, when you modify the block, it will directly edit what's in the chain and you do not need to call Iterator::set_block(). However the changes will not be reflected in the FLAC file until the chain is written with Chain::write().
  • When you pass an object to Iterator::set_block(), Iterator::insert_block_before(), or Iterator::insert_block_after(), the iterator takes ownership of the block and it will be deleted by the chain.
+

+See the C layer equivalent for more. +

+ + + + + + + +

Classes

class  FLAC::Metadata::Chain
class  FLAC::Metadata::Iterator
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__flacpp__metadata__object.html b/3rdparty/libflac/doc/html/api/group__flacpp__metadata__object.html new file mode 100644 index 0000000..9bc8d40 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__flacpp__metadata__object.html @@ -0,0 +1,227 @@ + + +FLAC: FLAC++/metadata.h: metadata object classes + + + + +

FLAC++/metadata.h: metadata object classes
+ +[FLAC++/metadata.h: metadata interfaces] +


Detailed Description

+This module contains classes representing FLAC metadata blocks in memory.

+The behavior closely mimics the C layer interface; be sure to read the detailed description of the C metadata object module .

+Any time a metadata object is constructed or assigned, you should check is_valid() to make sure the underlying FLAC__StreamMetadata object was able to be created.

+

Warning:
When the get_*() methods of any metadata object method return you a const pointer, DO NOT disobey and write into it. Always use the set_*() methods.
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

class  FLAC::Metadata::Prototype
class  FLAC::Metadata::StreamInfo
class  FLAC::Metadata::Padding
class  FLAC::Metadata::Application
class  FLAC::Metadata::SeekTable
class  FLAC::Metadata::VorbisComment
class  FLAC::Metadata::CueSheet
class  FLAC::Metadata::Picture
class  FLAC::Metadata::Unknown

Functions

Prototype * FLAC::Metadata::clone (const Prototype *)
bool FLAC::Metadata::Prototype::operator== (const Prototype &) const
+bool operator== (const ::FLAC__StreamMetadata &) const
+bool operator== (const ::FLAC__StreamMetadata *) const
bool FLAC::Metadata::Prototype::operator!= (const Prototype &) const
+bool operator!= (const ::FLAC__StreamMetadata &) const
+bool operator!= (const ::FLAC__StreamMetadata *) const
bool FLAC::Metadata::Prototype::is_valid () const
 FLAC::Metadata::Prototype::operator const ::FLAC__StreamMetadata * () const
+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
Prototype* FLAC::Metadata::clone const Prototype *   ) 
+
+ + + + + +
+   + + +

+Create a deep copy of an object and return it.

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Prototype::operator== const Prototype  )  const [inline, inherited]
+
+ + + + + +
+   + + +

+Check for equality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + + +
bool FLAC::Metadata::Prototype::operator!= const Prototype  )  const [inline, inherited]
+
+ + + + + +
+   + + +

+Check for inequality, performing a deep compare by following pointers.

+

+ + + + +
+ + + + + + + + +
bool FLAC::Metadata::Prototype::is_valid  )  const [inline, inherited]
+
+ + + + + +
+   + + +

+Returns true if the object was correctly constructed (i.e. the underlying FLAC__StreamMetadata object was properly allocated), else false.

+

+ + + + +
+ + + + + + + + +
FLAC::Metadata::Prototype::operator const ::FLAC__StreamMetadata *  )  const [inline, inherited]
+
+ + + + + +
+   + + +

+Returns a pointer to the underlying FLAC__StreamMetadata object. This can be useful for plugging any holes between the C++ and C interfaces.

+

Assertions:
+
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__porting.html b/3rdparty/libflac/doc/html/api/group__porting.html new file mode 100644 index 0000000..61b2aa3 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__porting.html @@ -0,0 +1,52 @@ + + +FLAC: Porting Guide for New Versions + + + + +

Porting Guide for New Versions


Detailed Description

+This module describes differences in the library interfaces from version to version. It assists in the porting of code that uses the libraries to newer versions of FLAC.

+One simple facility for making porting easier that has been added in FLAC 1.1.3 is a set of #defines in export.h of each library's includes (e.g. include/FLAC/export.h). The #defines mirror the libraries' libtool version numbers, e.g. in libFLAC there are FLAC_API_VERSION_CURRENT, FLAC_API_VERSION_REVISION, and FLAC_API_VERSION_AGE. These can be used to support multiple versions of an API during the transition phase, e.g.

+

 #if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT <= 7
+   legacy code
+ #else
+   new code
+ #endif
+

+The the source will work for multiple versions and the legacy code can easily be removed when the transition is complete.

+Another available symbol is FLAC_API_SUPPORTS_OGG_FLAC (defined in include/FLAC/export.h), which can be used to determine whether or not the library has been compiled with support for Ogg FLAC. This is simpler than trying to call an Ogg init function and catching the error. +

+ + + + + + + + + +

Modules

 Porting from FLAC 1.1.2 to 1.1.3
 Porting from FLAC 1.1.3 to 1.1.4
 Porting from FLAC 1.1.4 to 1.2.0
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__porting__1__1__2__to__1__1__3.html b/3rdparty/libflac/doc/html/api/group__porting__1__1__2__to__1__1__3.html new file mode 100644 index 0000000..b484c81 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__porting__1__1__2__to__1__1__3.html @@ -0,0 +1,101 @@ + + +FLAC: Porting from FLAC 1.1.2 to 1.1.3 + + + + +

Porting from FLAC 1.1.2 to 1.1.3
+ +[Porting Guide for New Versions] +

The main change between the APIs in 1.1.2 and 1.1.3 is that they have been simplified. First, libOggFLAC has been merged into libFLAC and libOggFLAC++ has been merged into libFLAC++. Second, both the three decoding layers and three encoding layers have been merged into a single stream decoder and stream encoder. That is, the functionality of FLAC__SeekableStreamDecoder and FLAC__FileDecoder has been merged into FLAC__StreamDecoder, and FLAC__SeekableStreamEncoder and FLAC__FileEncoder into FLAC__StreamEncoder. Only the FLAC__StreamDecoder and FLAC__StreamEncoder remain. What this means is there is now a single API that can be used to encode or decode streams to/from native FLAC or Ogg FLAC and the single API can work on both seekable and non-seekable streams.

+Instead of creating an encoder or decoder of a certain layer, now the client will always create a FLAC__StreamEncoder or FLAC__StreamDecoder. The old layers are now differentiated by the initialization function. For example, for the decoder, FLAC__stream_decoder_init() has been replaced by FLAC__stream_decoder_init_stream(). This init function takes callbacks for the I/O, and the seeking callbacks are optional. This allows the client to use the same object for seekable and non-seekable streams. For decoding a FLAC file directly, the client can use FLAC__stream_decoder_init_file() and pass just a filename and fewer callbacks; most of the other callbacks are supplied internally. For situations where fopen()ing by filename is not possible (e.g. Unicode filenames on Windows) the client can instead open the file itself and supply the FILE* to FLAC__stream_decoder_init_FILE(). The init functions now returns a FLAC__StreamDecoderInitStatus instead of FLAC__StreamDecoderState. Since the callbacks and client data are now passed to the init function, the FLAC__stream_decoder_set_*_callback() functions and FLAC__stream_decoder_set_client_data() are no longer needed. The rest of the calls to the decoder are the same as before.

+There are counterpart init functions for Ogg FLAC, e.g. FLAC__stream_decoder_init_ogg_stream(). All the rest of the calls and callbacks are the same as for native FLAC.

+As an example, in FLAC 1.1.2 a seekable stream decoder would have been set up like so:

+

 FLAC__SeekableStreamDecoder *decoder = FLAC__seekable_stream_decoder_new();
+ if(decoder == NULL) do_something;
+ FLAC__seekable_stream_decoder_set_md5_checking(decoder, true);
+ [... other settings ...]
+ FLAC__seekable_stream_decoder_set_read_callback(decoder, my_read_callback);
+ FLAC__seekable_stream_decoder_set_seek_callback(decoder, my_seek_callback);
+ FLAC__seekable_stream_decoder_set_tell_callback(decoder, my_tell_callback);
+ FLAC__seekable_stream_decoder_set_length_callback(decoder, my_length_callback);
+ FLAC__seekable_stream_decoder_set_eof_callback(decoder, my_eof_callback);
+ FLAC__seekable_stream_decoder_set_write_callback(decoder, my_write_callback);
+ FLAC__seekable_stream_decoder_set_metadata_callback(decoder, my_metadata_callback);
+ FLAC__seekable_stream_decoder_set_error_callback(decoder, my_error_callback);
+ FLAC__seekable_stream_decoder_set_client_data(decoder, my_client_data);
+ if(FLAC__seekable_stream_decoder_init(decoder) != FLAC__SEEKABLE_STREAM_DECODER_OK) do_something;
+

+In FLAC 1.1.3 it is like this:

+

 FLAC__StreamDecoder *decoder = FLAC__stream_decoder_new();
+ if(decoder == NULL) do_something;
+ FLAC__stream_decoder_set_md5_checking(decoder, true);
+ [... other settings ...]
+ if(FLAC__stream_decoder_init_stream(
+   decoder,
+   my_read_callback,
+   my_seek_callback,      // or NULL
+   my_tell_callback,      // or NULL
+   my_length_callback,    // or NULL
+   my_eof_callback,       // or NULL
+   my_write_callback,
+   my_metadata_callback,  // or NULL
+   my_error_callback,
+   my_client_data
+ ) != FLAC__STREAM_DECODER_INIT_STATUS_OK) do_something;
+

+or you could do;

+

 [...]
+ FILE *file = fopen("somefile.flac","rb");
+ if(file == NULL) do_somthing;
+ if(FLAC__stream_decoder_init_FILE(
+   decoder,
+   file,
+   my_write_callback,
+   my_metadata_callback,  // or NULL
+   my_error_callback,
+   my_client_data
+ ) != FLAC__STREAM_DECODER_INIT_STATUS_OK) do_something;
+

+or just:

+

 [...]
+ if(FLAC__stream_decoder_init_file(
+   decoder,
+   "somefile.flac",
+   my_write_callback,
+   my_metadata_callback,  // or NULL
+   my_error_callback,
+   my_client_data
+ ) != FLAC__STREAM_DECODER_INIT_STATUS_OK) do_something;
+

+Another small change to the decoder is in how it handles unparseable streams. Before, when the decoder found an unparseable stream (reserved for when the decoder encounters a stream from a future encoder that it can't parse), it changed the state to FLAC__STREAM_DECODER_UNPARSEABLE_STREAM. Now the decoder instead drops sync and calls the error callback with a new error code FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM. This is more robust. If your error callback does not discriminate on the the error state, your code does not need to be changed.

+The encoder now has a new setting: FLAC__stream_encoder_set_apodization(). This is for setting the method used to window the data before LPC analysis. You only need to add a call to this function if the default is not suitable. There are also two new convenience functions that may be useful: FLAC__metadata_object_cuesheet_calculate_cddb_id() and FLAC__metadata_get_cuesheet().

+The bytes parameter to FLAC__StreamDecoderReadCallback, FLAC__StreamEncoderReadCallback, and FLAC__StreamEncoderWriteCallback is now size_t instead of unsigned. +

+ + +
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__porting__1__1__3__to__1__1__4.html b/3rdparty/libflac/doc/html/api/group__porting__1__1__3__to__1__1__4.html new file mode 100644 index 0000000..6f3898f --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__porting__1__1__3__to__1__1__4.html @@ -0,0 +1,38 @@ + + +FLAC: Porting from FLAC 1.1.3 to 1.1.4 + + + + +

Porting from FLAC 1.1.3 to 1.1.4
+ +[Porting Guide for New Versions] +

There were no changes to any of the interfaces from 1.1.3 to 1.1.4. There was a slight change in the implementation of FLAC__stream_encoder_set_metadata(); the function now makes a copy of the metadata array of pointers so the client no longer needs to maintain it after the call. The objects themselves that are pointed to by the array are still not copied though and must be maintained until the call to FLAC__stream_encoder_finish(). +

+ + +
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/group__porting__1__1__4__to__1__2__0.html b/3rdparty/libflac/doc/html/api/group__porting__1__1__4__to__1__2__0.html new file mode 100644 index 0000000..51e1ea8 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/group__porting__1__1__4__to__1__2__0.html @@ -0,0 +1,39 @@ + + +FLAC: Porting from FLAC 1.1.4 to 1.2.0 + + + + +

Porting from FLAC 1.1.4 to 1.2.0
+ +[Porting Guide for New Versions] +

There were only very minor changes to the interfaces from 1.1.4 to 1.2.0. In libFLAC, FLAC__format_sample_rate_is_subset() was added. In libFLAC++, FLAC::Decoder::Stream::get_decode_position() was added.

+Finally, value of the constant FLAC__FRAME_HEADER_RESERVED_LEN has changed to reflect the conversion of one of the reserved bits into active use. It used to be 2 and now is 1. However the FLAC frame header length has not changed, so to skip the proper number of bits, use FLAC__FRAME_HEADER_RESERVED_LEN + FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN +

+ + +
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/hierarchy.html b/3rdparty/libflac/doc/html/api/hierarchy.html new file mode 100644 index 0000000..3a50c34 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/hierarchy.html @@ -0,0 +1,87 @@ + + +FLAC: Hierarchical Index + + + + +

FLAC Class Hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/index.html b/3rdparty/libflac/doc/html/api/index.html new file mode 100644 index 0000000..9fb161c --- /dev/null +++ b/3rdparty/libflac/doc/html/api/index.html @@ -0,0 +1,57 @@ + + +FLAC: Main Page + + + + +

FLAC Documentation

+

+

1.2.1

+Introduction

+This is the documentation for the FLAC C and C++ APIs. It is highly interconnected; this introduction should give you a top level idea of the structure and how to find the information you need. As a prerequisite you should have at least a basic knowledge of the FLAC format, documented here.

+FLAC C API

+The FLAC C API is the interface to libFLAC, a set of structures describing the components of FLAC streams, and functions for encoding and decoding streams, as well as manipulating FLAC metadata in files. The public include files will be installed in your include area (for example /usr/include/FLAC/...).

+By writing a little code and linking against libFLAC, it is relatively easy to add FLAC support to another program. The library is licensed under Xiph's BSD license. Complete source code of libFLAC as well as the command-line encoder and plugins is available and is a useful source of examples.

+Aside from encoders and decoders, libFLAC provides a powerful metadata interface for manipulating metadata in FLAC files. It allows the user to add, delete, and modify FLAC metadata blocks and it can automatically take advantage of PADDING blocks to avoid rewriting the entire FLAC file when changing the size of the metadata.

+libFLAC usually only requires the standard C library and C math library. In particular, threading is not used so there is no dependency on a thread library. However, libFLAC does not use global variables and should be thread-safe.

+libFLAC also supports encoding to and decoding from Ogg FLAC. However the metadata editing interfaces currently have limited read-only support for Ogg FLAC files.

+FLAC C++ API

+The FLAC C++ API is a set of classes that encapsulate the structures and functions in libFLAC. They provide slightly more functionality with respect to metadata but are otherwise equivalent. For the most part, they share the same usage as their counterparts in libFLAC, and the FLAC C API documentation can be used as a supplement. The public include files for the C++ API will be installed in your include area (for example /usr/include/FLAC++/...).

+libFLAC++ is also licensed under Xiph's BSD license.

+Getting Started

+A good starting point for learning the API is to browse through the modules. Modules are logical groupings of related functions or classes, which correspond roughly to header files or sections of header files. Each module includes a detailed description of the general usage of its functions or classes.

+From there you can go on to look at the documentation of individual functions. You can see different views of the individual functions through the links in top bar across this page.

+If you prefer a more hands-on approach, you can jump right to some example code.

+Porting Guide

+Starting with FLAC 1.1.3 a Porting Guide has been introduced which gives detailed instructions on how to port your code to newer versions of FLAC.

+Embedded Developers

+libFLAC has grown larger over time as more functionality has been included, but much of it may be unnecessary for a particular embedded implementation. Unused parts may be pruned by some simple editing of src/libFLAC/Makefile.am. In general, the decoders, encoders, and metadata interface are all independent from each other.

+It is easiest to just describe the dependencies:

+

    +
  • All modules depend on the Format module.
  • The decoders and encoders depend on the bitbuffer.
  • The decoder is independent of the encoder. The encoder uses the decoder because of the verify feature, but this can be removed if not needed.
  • Parts of the metadata interface require the stream decoder (but not the encoder).
  • Ogg support is selectable through the compile time macro FLAC__HAS_OGG.
+

+For example, if your application only requires the stream decoder, no encoder, and no metadata interface, you can remove the stream encoder and the metadata interface, which will greatly reduce the size of the library.

+Also, there are several places in the libFLAC code with comments marked with "OPT:" where a #define can be changed to enable code that might be faster on a specific platform. Experimenting with these can yield faster binaries. +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/metadata_8h-source.html b/3rdparty/libflac/doc/html/api/metadata_8h-source.html new file mode 100644 index 0000000..44bd542 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/metadata_8h-source.html @@ -0,0 +1,335 @@ + + +FLAC: include/FLAC/metadata.h Source File + + + + + +

metadata.h

Go to the documentation of this file.
00001 /* libFLAC - Free Lossless Audio Codec library
+00002  * Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
+00003  *
+00004  * Redistribution and use in source and binary forms, with or without
+00005  * modification, are permitted provided that the following conditions
+00006  * are met:
+00007  *
+00008  * - Redistributions of source code must retain the above copyright
+00009  * notice, this list of conditions and the following disclaimer.
+00010  *
+00011  * - Redistributions in binary form must reproduce the above copyright
+00012  * notice, this list of conditions and the following disclaimer in the
+00013  * documentation and/or other materials provided with the distribution.
+00014  *
+00015  * - Neither the name of the Xiph.org Foundation nor the names of its
+00016  * contributors may be used to endorse or promote products derived from
+00017  * this software without specific prior written permission.
+00018  *
+00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+00020  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+00022  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+00023  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+00024  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+00025  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+00026  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+00027  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00028  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00029  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00030  */
+00031 
+00032 #ifndef FLAC__METADATA_H
+00033 #define FLAC__METADATA_H
+00034 
+00035 #include <sys/types.h> /* for off_t */
+00036 #include "export.h"
+00037 #include "callback.h"
+00038 #include "format.h"
+00039 
+00040 /* --------------------------------------------------------------------
+00041    (For an example of how all these routines are used, see the source
+00042    code for the unit tests in src/test_libFLAC/metadata_*.c, or
+00043    metaflac in src/metaflac/)
+00044    ------------------------------------------------------------------*/
+00045 
+00123 #ifdef __cplusplus
+00124 extern "C" {
+00125 #endif
+00126 
+00127 
+00158 FLAC_API FLAC__bool FLAC__metadata_get_streaminfo(const char *filename, FLAC__StreamMetadata *streaminfo);
+00159 
+00177 FLAC_API FLAC__bool FLAC__metadata_get_tags(const char *filename, FLAC__StreamMetadata **tags);
+00178 
+00196 FLAC_API FLAC__bool FLAC__metadata_get_cuesheet(const char *filename, FLAC__StreamMetadata **cuesheet);
+00197 
+00236 FLAC_API FLAC__bool FLAC__metadata_get_picture(const char *filename, FLAC__StreamMetadata **picture, FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors);
+00237 
+00238 /* \} */
+00239 
+00240 
+00296 struct FLAC__Metadata_SimpleIterator;
+00302 typedef struct FLAC__Metadata_SimpleIterator FLAC__Metadata_SimpleIterator;
+00303 
+00308 typedef enum {
+00309 
+00310     FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK = 0,
+00313     FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT,
+00316     FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE,
+00319     FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE,
+00322     FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_WRITABLE,
+00325     FLAC__METADATA_SIMPLE_ITERATOR_STATUS_BAD_METADATA,
+00328     FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR,
+00331     FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR,
+00334     FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR,
+00337     FLAC__METADATA_SIMPLE_ITERATOR_STATUS_RENAME_ERROR,
+00340     FLAC__METADATA_SIMPLE_ITERATOR_STATUS_UNLINK_ERROR,
+00343     FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR,
+00346     FLAC__METADATA_SIMPLE_ITERATOR_STATUS_INTERNAL_ERROR
+00349 } FLAC__Metadata_SimpleIteratorStatus;
+00350 
+00356 extern FLAC_API const char * const FLAC__Metadata_SimpleIteratorStatusString[];
+00357 
+00358 
+00364 FLAC_API FLAC__Metadata_SimpleIterator *FLAC__metadata_simple_iterator_new(void);
+00365 
+00372 FLAC_API void FLAC__metadata_simple_iterator_delete(FLAC__Metadata_SimpleIterator *iterator);
+00373 
+00384 FLAC_API FLAC__Metadata_SimpleIteratorStatus FLAC__metadata_simple_iterator_status(FLAC__Metadata_SimpleIterator *iterator);
+00385 
+00405 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_init(FLAC__Metadata_SimpleIterator *iterator, const char *filename, FLAC__bool read_only, FLAC__bool preserve_file_stats);
+00406 
+00417 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_is_writable(const FLAC__Metadata_SimpleIterator *iterator);
+00418 
+00431 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_next(FLAC__Metadata_SimpleIterator *iterator);
+00432 
+00445 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_prev(FLAC__Metadata_SimpleIterator *iterator);
+00446 
+00458 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_is_last(const FLAC__Metadata_SimpleIterator *iterator);
+00459 
+00474 FLAC_API off_t FLAC__metadata_simple_iterator_get_block_offset(const FLAC__Metadata_SimpleIterator *iterator);
+00475 
+00488 FLAC_API FLAC__MetadataType FLAC__metadata_simple_iterator_get_block_type(const FLAC__Metadata_SimpleIterator *iterator);
+00489 
+00505 FLAC_API unsigned FLAC__metadata_simple_iterator_get_block_length(const FLAC__Metadata_SimpleIterator *iterator);
+00506 
+00530 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_get_application_id(FLAC__Metadata_SimpleIterator *iterator, FLAC__byte *id);
+00531 
+00548 FLAC_API FLAC__StreamMetadata *FLAC__metadata_simple_iterator_get_block(FLAC__Metadata_SimpleIterator *iterator);
+00549 
+00604 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_set_block(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding);
+00605 
+00629 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_insert_block_after(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding);
+00630 
+00648 FLAC_API FLAC__bool FLAC__metadata_simple_iterator_delete_block(FLAC__Metadata_SimpleIterator *iterator, FLAC__bool use_padding);
+00649 
+00650 /* \} */
+00651 
+00652 
+00710 struct FLAC__Metadata_Chain;
+00713 typedef struct FLAC__Metadata_Chain FLAC__Metadata_Chain;
+00714 
+00715 struct FLAC__Metadata_Iterator;
+00718 typedef struct FLAC__Metadata_Iterator FLAC__Metadata_Iterator;
+00719 
+00720 typedef enum {
+00721     FLAC__METADATA_CHAIN_STATUS_OK = 0,
+00724     FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT,
+00727     FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE,
+00730     FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE,
+00733     FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE,
+00736     FLAC__METADATA_CHAIN_STATUS_BAD_METADATA,
+00739     FLAC__METADATA_CHAIN_STATUS_READ_ERROR,
+00742     FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR,
+00745     FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR,
+00748     FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR,
+00751     FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR,
+00754     FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR,
+00757     FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR,
+00760     FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS,
+00763     FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH,
+00772     FLAC__METADATA_CHAIN_STATUS_WRONG_WRITE_CALL
+00782 } FLAC__Metadata_ChainStatus;
+00783 
+00789 extern FLAC_API const char * const FLAC__Metadata_ChainStatusString[];
+00790 
+00791 /*********** FLAC__Metadata_Chain ***********/
+00792 
+00798 FLAC_API FLAC__Metadata_Chain *FLAC__metadata_chain_new(void);
+00799 
+00806 FLAC_API void FLAC__metadata_chain_delete(FLAC__Metadata_Chain *chain);
+00807 
+00818 FLAC_API FLAC__Metadata_ChainStatus FLAC__metadata_chain_status(FLAC__Metadata_Chain *chain);
+00819 
+00832 FLAC_API FLAC__bool FLAC__metadata_chain_read(FLAC__Metadata_Chain *chain, const char *filename);
+00833 
+00849 FLAC_API FLAC__bool FLAC__metadata_chain_read_ogg(FLAC__Metadata_Chain *chain, const char *filename);
+00850 
+00871 FLAC_API FLAC__bool FLAC__metadata_chain_read_with_callbacks(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks);
+00872 
+00896 FLAC_API FLAC__bool FLAC__metadata_chain_read_ogg_with_callbacks(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks);
+00897 
+00924 FLAC_API FLAC__bool FLAC__metadata_chain_check_if_tempfile_needed(FLAC__Metadata_Chain *chain, FLAC__bool use_padding);
+00925 
+00970 FLAC_API FLAC__bool FLAC__metadata_chain_write(FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__bool preserve_file_stats);
+00971 
+01000 FLAC_API FLAC__bool FLAC__metadata_chain_write_with_callbacks(FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks);
+01001 
+01051 FLAC_API FLAC__bool FLAC__metadata_chain_write_with_callbacks_and_tempfile(FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks, FLAC__IOHandle temp_handle, FLAC__IOCallbacks temp_callbacks);
+01052 
+01065 FLAC_API void FLAC__metadata_chain_merge_padding(FLAC__Metadata_Chain *chain);
+01066 
+01080 FLAC_API void FLAC__metadata_chain_sort_padding(FLAC__Metadata_Chain *chain);
+01081 
+01082 
+01083 /*********** FLAC__Metadata_Iterator ***********/
+01084 
+01090 FLAC_API FLAC__Metadata_Iterator *FLAC__metadata_iterator_new(void);
+01091 
+01098 FLAC_API void FLAC__metadata_iterator_delete(FLAC__Metadata_Iterator *iterator);
+01099 
+01109 FLAC_API void FLAC__metadata_iterator_init(FLAC__Metadata_Iterator *iterator, FLAC__Metadata_Chain *chain);
+01110 
+01123 FLAC_API FLAC__bool FLAC__metadata_iterator_next(FLAC__Metadata_Iterator *iterator);
+01124 
+01137 FLAC_API FLAC__bool FLAC__metadata_iterator_prev(FLAC__Metadata_Iterator *iterator);
+01138 
+01149 FLAC_API FLAC__MetadataType FLAC__metadata_iterator_get_block_type(const FLAC__Metadata_Iterator *iterator);
+01150 
+01170 FLAC_API FLAC__StreamMetadata *FLAC__metadata_iterator_get_block(FLAC__Metadata_Iterator *iterator);
+01171 
+01187 FLAC_API FLAC__bool FLAC__metadata_iterator_set_block(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block);
+01188 
+01205 FLAC_API FLAC__bool FLAC__metadata_iterator_delete_block(FLAC__Metadata_Iterator *iterator, FLAC__bool replace_with_padding);
+01206 
+01224 FLAC_API FLAC__bool FLAC__metadata_iterator_insert_block_before(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block);
+01225 
+01242 FLAC_API FLAC__bool FLAC__metadata_iterator_insert_block_after(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block);
+01243 
+01244 /* \} */
+01245 
+01246 
+01312 FLAC_API FLAC__StreamMetadata *FLAC__metadata_object_new(FLAC__MetadataType type);
+01313 
+01326 FLAC_API FLAC__StreamMetadata *FLAC__metadata_object_clone(const FLAC__StreamMetadata *object);
+01327 
+01337 FLAC_API void FLAC__metadata_object_delete(FLAC__StreamMetadata *object);
+01338 
+01352 FLAC_API FLAC__bool FLAC__metadata_object_is_equal(const FLAC__StreamMetadata *block1, const FLAC__StreamMetadata *block2);
+01353 
+01375 FLAC_API FLAC__bool FLAC__metadata_object_application_set_data(FLAC__StreamMetadata *object, FLAC__byte *data, unsigned length, FLAC__bool copy);
+01376 
+01392 FLAC_API FLAC__bool FLAC__metadata_object_seektable_resize_points(FLAC__StreamMetadata *object, unsigned new_num_points);
+01393 
+01404 FLAC_API void FLAC__metadata_object_seektable_set_point(FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point);
+01405 
+01418 FLAC_API FLAC__bool FLAC__metadata_object_seektable_insert_point(FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point);
+01419 
+01431 FLAC_API FLAC__bool FLAC__metadata_object_seektable_delete_point(FLAC__StreamMetadata *object, unsigned point_num);
+01432 
+01444 FLAC_API FLAC__bool FLAC__metadata_object_seektable_is_legal(const FLAC__StreamMetadata *object);
+01445 
+01461 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_placeholders(FLAC__StreamMetadata *object, unsigned num);
+01462 
+01478 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_point(FLAC__StreamMetadata *object, FLAC__uint64 sample_number);
+01479 
+01496 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_points(FLAC__StreamMetadata *object, FLAC__uint64 sample_numbers[], unsigned num);
+01497 
+01518 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points(FLAC__StreamMetadata *object, unsigned num, FLAC__uint64 total_samples);
+01519 
+01546 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points_by_samples(FLAC__StreamMetadata *object, unsigned samples, FLAC__uint64 total_samples);
+01547 
+01563 FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_sort(FLAC__StreamMetadata *object, FLAC__bool compact);
+01564 
+01588 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_set_vendor_string(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
+01589 
+01605 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_resize_comments(FLAC__StreamMetadata *object, unsigned new_num_comments);
+01606 
+01632 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_set_comment(FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
+01633 
+01662 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_insert_comment(FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
+01663 
+01687 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_append_comment(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy);
+01688 
+01722 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_replace_comment(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool all, FLAC__bool copy);
+01723 
+01735 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_delete_comment(FLAC__StreamMetadata *object, unsigned comment_num);
+01736 
+01756 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair(FLAC__StreamMetadata_VorbisComment_Entry *entry, const char *field_name, const char *field_value);
+01757 
+01777 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_entry_to_name_value_pair(const FLAC__StreamMetadata_VorbisComment_Entry entry, char **field_name, char **field_value);
+01778 
+01791 FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_entry_matches(const FLAC__StreamMetadata_VorbisComment_Entry entry, const char *field_name, unsigned field_name_length);
+01792 
+01810 FLAC_API int FLAC__metadata_object_vorbiscomment_find_entry_from(const FLAC__StreamMetadata *object, unsigned offset, const char *field_name);
+01811 
+01823 FLAC_API int FLAC__metadata_object_vorbiscomment_remove_entry_matching(FLAC__StreamMetadata *object, const char *field_name);
+01824 
+01836 FLAC_API int FLAC__metadata_object_vorbiscomment_remove_entries_matching(FLAC__StreamMetadata *object, const char *field_name);
+01837 
+01845 FLAC_API FLAC__StreamMetadata_CueSheet_Track *FLAC__metadata_object_cuesheet_track_new(void);
+01846 
+01860 FLAC_API FLAC__StreamMetadata_CueSheet_Track *FLAC__metadata_object_cuesheet_track_clone(const FLAC__StreamMetadata_CueSheet_Track *object);
+01861 
+01868 FLAC_API void FLAC__metadata_object_cuesheet_track_delete(FLAC__StreamMetadata_CueSheet_Track *object);
+01869 
+01888 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_resize_indices(FLAC__StreamMetadata *object, unsigned track_num, unsigned new_num_indices);
+01889 
+01911 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_insert_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num, FLAC__StreamMetadata_CueSheet_Index index);
+01912 
+01935 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_insert_blank_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num);
+01936 
+01954 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_delete_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num);
+01955 
+01971 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_resize_tracks(FLAC__StreamMetadata *object, unsigned new_num_tracks);
+01972 
+01993 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_set_track(FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy);
+01994 
+02016 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_insert_track(FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy);
+02017 
+02035 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_insert_blank_track(FLAC__StreamMetadata *object, unsigned track_num);
+02036 
+02050 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_delete_track(FLAC__StreamMetadata *object, unsigned track_num);
+02051 
+02071 FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_is_legal(const FLAC__StreamMetadata *object, FLAC__bool check_cd_da_subset, const char **violation);
+02072 
+02084 FLAC_API FLAC__uint32 FLAC__metadata_object_cuesheet_calculate_cddb_id(const FLAC__StreamMetadata *object);
+02085 
+02107 FLAC_API FLAC__bool FLAC__metadata_object_picture_set_mime_type(FLAC__StreamMetadata *object, char *mime_type, FLAC__bool copy);
+02108 
+02129 FLAC_API FLAC__bool FLAC__metadata_object_picture_set_description(FLAC__StreamMetadata *object, FLAC__byte *description, FLAC__bool copy);
+02130 
+02154 FLAC_API FLAC__bool FLAC__metadata_object_picture_set_data(FLAC__StreamMetadata *object, FLAC__byte *data, FLAC__uint32 length, FLAC__bool copy);
+02155 
+02173 FLAC_API FLAC__bool FLAC__metadata_object_picture_is_legal(const FLAC__StreamMetadata *object, const char **violation);
+02174 
+02175 /* \} */
+02176 
+02177 #ifdef __cplusplus
+02178 }
+02179 #endif
+02180 
+02181 #endif
+
+
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/metadata_8h.html b/3rdparty/libflac/doc/html/api/metadata_8h.html new file mode 100644 index 0000000..f4670da --- /dev/null +++ b/3rdparty/libflac/doc/html/api/metadata_8h.html @@ -0,0 +1,283 @@ + + +FLAC: include/FLAC/metadata.h File Reference + + + + + +

metadata.h File Reference


Detailed Description

+This module provides functions for creating and manipulating FLAC metadata blocks in memory, and three progressively more powerful interfaces for traversing and editing metadata in FLAC files. +

+See the detailed documentation for each interface in the metadata module. +

+#include <sys/types.h>
+#include "export.h"
+#include "callback.h"
+#include "format.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef FLAC__Metadata_SimpleIterator FLAC__Metadata_SimpleIterator
typedef FLAC__Metadata_Chain FLAC__Metadata_Chain
typedef FLAC__Metadata_Iterator FLAC__Metadata_Iterator

Enumerations

enum  FLAC__Metadata_SimpleIteratorStatus {
+  FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK = 0, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE, +
+  FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_WRITABLE, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_BAD_METADATA, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR, +
+  FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_RENAME_ERROR, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_UNLINK_ERROR, +FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR, +
+  FLAC__METADATA_SIMPLE_ITERATOR_STATUS_INTERNAL_ERROR +
+ }
enum  FLAC__Metadata_ChainStatus {
+  FLAC__METADATA_CHAIN_STATUS_OK = 0, +FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT, +FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE, +FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE, +
+  FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE, +FLAC__METADATA_CHAIN_STATUS_BAD_METADATA, +FLAC__METADATA_CHAIN_STATUS_READ_ERROR, +FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR, +
+  FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR, +FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR, +FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR, +FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR, +
+  FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR, +FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS, +FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH, +FLAC__METADATA_CHAIN_STATUS_WRONG_WRITE_CALL +
+ }

Functions

FLAC__bool FLAC__metadata_get_streaminfo (const char *filename, FLAC__StreamMetadata *streaminfo)
FLAC__bool FLAC__metadata_get_tags (const char *filename, FLAC__StreamMetadata **tags)
FLAC__bool FLAC__metadata_get_cuesheet (const char *filename, FLAC__StreamMetadata **cuesheet)
FLAC__bool FLAC__metadata_get_picture (const char *filename, FLAC__StreamMetadata **picture, FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors)
FLAC__Metadata_SimpleIteratorFLAC__metadata_simple_iterator_new (void)
void FLAC__metadata_simple_iterator_delete (FLAC__Metadata_SimpleIterator *iterator)
FLAC__Metadata_SimpleIteratorStatus FLAC__metadata_simple_iterator_status (FLAC__Metadata_SimpleIterator *iterator)
FLAC__bool FLAC__metadata_simple_iterator_init (FLAC__Metadata_SimpleIterator *iterator, const char *filename, FLAC__bool read_only, FLAC__bool preserve_file_stats)
FLAC__bool FLAC__metadata_simple_iterator_is_writable (const FLAC__Metadata_SimpleIterator *iterator)
FLAC__bool FLAC__metadata_simple_iterator_next (FLAC__Metadata_SimpleIterator *iterator)
FLAC__bool FLAC__metadata_simple_iterator_prev (FLAC__Metadata_SimpleIterator *iterator)
FLAC__bool FLAC__metadata_simple_iterator_is_last (const FLAC__Metadata_SimpleIterator *iterator)
off_t FLAC__metadata_simple_iterator_get_block_offset (const FLAC__Metadata_SimpleIterator *iterator)
FLAC__MetadataType FLAC__metadata_simple_iterator_get_block_type (const FLAC__Metadata_SimpleIterator *iterator)
unsigned FLAC__metadata_simple_iterator_get_block_length (const FLAC__Metadata_SimpleIterator *iterator)
FLAC__bool FLAC__metadata_simple_iterator_get_application_id (FLAC__Metadata_SimpleIterator *iterator, FLAC__byte *id)
FLAC__StreamMetadataFLAC__metadata_simple_iterator_get_block (FLAC__Metadata_SimpleIterator *iterator)
FLAC__bool FLAC__metadata_simple_iterator_set_block (FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding)
FLAC__bool FLAC__metadata_simple_iterator_insert_block_after (FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding)
FLAC__bool FLAC__metadata_simple_iterator_delete_block (FLAC__Metadata_SimpleIterator *iterator, FLAC__bool use_padding)
FLAC__Metadata_ChainFLAC__metadata_chain_new (void)
void FLAC__metadata_chain_delete (FLAC__Metadata_Chain *chain)
FLAC__Metadata_ChainStatus FLAC__metadata_chain_status (FLAC__Metadata_Chain *chain)
FLAC__bool FLAC__metadata_chain_read (FLAC__Metadata_Chain *chain, const char *filename)
FLAC__bool FLAC__metadata_chain_read_ogg (FLAC__Metadata_Chain *chain, const char *filename)
FLAC__bool FLAC__metadata_chain_read_with_callbacks (FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks)
FLAC__bool FLAC__metadata_chain_read_ogg_with_callbacks (FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks)
FLAC__bool FLAC__metadata_chain_check_if_tempfile_needed (FLAC__Metadata_Chain *chain, FLAC__bool use_padding)
FLAC__bool FLAC__metadata_chain_write (FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__bool preserve_file_stats)
FLAC__bool FLAC__metadata_chain_write_with_callbacks (FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks)
FLAC__bool FLAC__metadata_chain_write_with_callbacks_and_tempfile (FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks, FLAC__IOHandle temp_handle, FLAC__IOCallbacks temp_callbacks)
void FLAC__metadata_chain_merge_padding (FLAC__Metadata_Chain *chain)
void FLAC__metadata_chain_sort_padding (FLAC__Metadata_Chain *chain)
FLAC__Metadata_IteratorFLAC__metadata_iterator_new (void)
void FLAC__metadata_iterator_delete (FLAC__Metadata_Iterator *iterator)
void FLAC__metadata_iterator_init (FLAC__Metadata_Iterator *iterator, FLAC__Metadata_Chain *chain)
FLAC__bool FLAC__metadata_iterator_next (FLAC__Metadata_Iterator *iterator)
FLAC__bool FLAC__metadata_iterator_prev (FLAC__Metadata_Iterator *iterator)
FLAC__MetadataType FLAC__metadata_iterator_get_block_type (const FLAC__Metadata_Iterator *iterator)
FLAC__StreamMetadataFLAC__metadata_iterator_get_block (FLAC__Metadata_Iterator *iterator)
FLAC__bool FLAC__metadata_iterator_set_block (FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block)
FLAC__bool FLAC__metadata_iterator_delete_block (FLAC__Metadata_Iterator *iterator, FLAC__bool replace_with_padding)
FLAC__bool FLAC__metadata_iterator_insert_block_before (FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block)
FLAC__bool FLAC__metadata_iterator_insert_block_after (FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block)
FLAC__StreamMetadataFLAC__metadata_object_new (FLAC__MetadataType type)
FLAC__StreamMetadataFLAC__metadata_object_clone (const FLAC__StreamMetadata *object)
void FLAC__metadata_object_delete (FLAC__StreamMetadata *object)
FLAC__bool FLAC__metadata_object_is_equal (const FLAC__StreamMetadata *block1, const FLAC__StreamMetadata *block2)
FLAC__bool FLAC__metadata_object_application_set_data (FLAC__StreamMetadata *object, FLAC__byte *data, unsigned length, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_seektable_resize_points (FLAC__StreamMetadata *object, unsigned new_num_points)
void FLAC__metadata_object_seektable_set_point (FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point)
FLAC__bool FLAC__metadata_object_seektable_insert_point (FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point)
FLAC__bool FLAC__metadata_object_seektable_delete_point (FLAC__StreamMetadata *object, unsigned point_num)
FLAC__bool FLAC__metadata_object_seektable_is_legal (const FLAC__StreamMetadata *object)
FLAC__bool FLAC__metadata_object_seektable_template_append_placeholders (FLAC__StreamMetadata *object, unsigned num)
FLAC__bool FLAC__metadata_object_seektable_template_append_point (FLAC__StreamMetadata *object, FLAC__uint64 sample_number)
FLAC__bool FLAC__metadata_object_seektable_template_append_points (FLAC__StreamMetadata *object, FLAC__uint64 sample_numbers[], unsigned num)
FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points (FLAC__StreamMetadata *object, unsigned num, FLAC__uint64 total_samples)
FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points_by_samples (FLAC__StreamMetadata *object, unsigned samples, FLAC__uint64 total_samples)
FLAC__bool FLAC__metadata_object_seektable_template_sort (FLAC__StreamMetadata *object, FLAC__bool compact)
FLAC__bool FLAC__metadata_object_vorbiscomment_set_vendor_string (FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_vorbiscomment_resize_comments (FLAC__StreamMetadata *object, unsigned new_num_comments)
FLAC__bool FLAC__metadata_object_vorbiscomment_set_comment (FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_vorbiscomment_insert_comment (FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_vorbiscomment_append_comment (FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_vorbiscomment_replace_comment (FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool all, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_vorbiscomment_delete_comment (FLAC__StreamMetadata *object, unsigned comment_num)
FLAC__bool FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair (FLAC__StreamMetadata_VorbisComment_Entry *entry, const char *field_name, const char *field_value)
FLAC__bool FLAC__metadata_object_vorbiscomment_entry_to_name_value_pair (const FLAC__StreamMetadata_VorbisComment_Entry entry, char **field_name, char **field_value)
FLAC__bool FLAC__metadata_object_vorbiscomment_entry_matches (const FLAC__StreamMetadata_VorbisComment_Entry entry, const char *field_name, unsigned field_name_length)
int FLAC__metadata_object_vorbiscomment_find_entry_from (const FLAC__StreamMetadata *object, unsigned offset, const char *field_name)
int FLAC__metadata_object_vorbiscomment_remove_entry_matching (FLAC__StreamMetadata *object, const char *field_name)
int FLAC__metadata_object_vorbiscomment_remove_entries_matching (FLAC__StreamMetadata *object, const char *field_name)
FLAC__StreamMetadata_CueSheet_TrackFLAC__metadata_object_cuesheet_track_new (void)
FLAC__StreamMetadata_CueSheet_TrackFLAC__metadata_object_cuesheet_track_clone (const FLAC__StreamMetadata_CueSheet_Track *object)
void FLAC__metadata_object_cuesheet_track_delete (FLAC__StreamMetadata_CueSheet_Track *object)
FLAC__bool FLAC__metadata_object_cuesheet_track_resize_indices (FLAC__StreamMetadata *object, unsigned track_num, unsigned new_num_indices)
FLAC__bool FLAC__metadata_object_cuesheet_track_insert_index (FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num, FLAC__StreamMetadata_CueSheet_Index index)
FLAC__bool FLAC__metadata_object_cuesheet_track_insert_blank_index (FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num)
FLAC__bool FLAC__metadata_object_cuesheet_track_delete_index (FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num)
FLAC__bool FLAC__metadata_object_cuesheet_resize_tracks (FLAC__StreamMetadata *object, unsigned new_num_tracks)
FLAC__bool FLAC__metadata_object_cuesheet_insert_track (FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_cuesheet_insert_blank_track (FLAC__StreamMetadata *object, unsigned track_num)
FLAC__bool FLAC__metadata_object_cuesheet_delete_track (FLAC__StreamMetadata *object, unsigned track_num)
FLAC__bool FLAC__metadata_object_cuesheet_is_legal (const FLAC__StreamMetadata *object, FLAC__bool check_cd_da_subset, const char **violation)
FLAC__uint32 FLAC__metadata_object_cuesheet_calculate_cddb_id (const FLAC__StreamMetadata *object)
FLAC__bool FLAC__metadata_object_picture_set_mime_type (FLAC__StreamMetadata *object, char *mime_type, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_picture_set_description (FLAC__StreamMetadata *object, FLAC__byte *description, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_picture_set_data (FLAC__StreamMetadata *object, FLAC__byte *data, FLAC__uint32 length, FLAC__bool copy)
FLAC__bool FLAC__metadata_object_picture_is_legal (const FLAC__StreamMetadata *object, const char **violation)

Variables

const char *const FLAC__Metadata_SimpleIteratorStatusString []
const char *const FLAC__Metadata_ChainStatusString []
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/modules.html b/3rdparty/libflac/doc/html/api/modules.html new file mode 100644 index 0000000..1a2dae6 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/modules.html @@ -0,0 +1,72 @@ + + +FLAC: Module Index + + + + +

FLAC Modules

Here is a list of all modules: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/ordinals_8h-source.html b/3rdparty/libflac/doc/html/api/ordinals_8h-source.html new file mode 100644 index 0000000..893f9eb --- /dev/null +++ b/3rdparty/libflac/doc/html/api/ordinals_8h-source.html @@ -0,0 +1,112 @@ + + +FLAC: include/FLAC/ordinals.h Source File + + + + + +

ordinals.h

00001 /* libFLAC - Free Lossless Audio Codec library
+00002  * Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
+00003  *
+00004  * Redistribution and use in source and binary forms, with or without
+00005  * modification, are permitted provided that the following conditions
+00006  * are met:
+00007  *
+00008  * - Redistributions of source code must retain the above copyright
+00009  * notice, this list of conditions and the following disclaimer.
+00010  *
+00011  * - Redistributions in binary form must reproduce the above copyright
+00012  * notice, this list of conditions and the following disclaimer in the
+00013  * documentation and/or other materials provided with the distribution.
+00014  *
+00015  * - Neither the name of the Xiph.org Foundation nor the names of its
+00016  * contributors may be used to endorse or promote products derived from
+00017  * this software without specific prior written permission.
+00018  *
+00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+00020  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+00022  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+00023  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+00024  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+00025  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+00026  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+00027  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00028  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00029  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00030  */
+00031 
+00032 #ifndef FLAC__ORDINALS_H
+00033 #define FLAC__ORDINALS_H
+00034 
+00035 #if !(defined(_MSC_VER) || defined(__BORLANDC__) || defined(__EMX__))
+00036 #include <inttypes.h>
+00037 #endif
+00038 
+00039 typedef signed char FLAC__int8;
+00040 typedef unsigned char FLAC__uint8;
+00041 
+00042 #if defined(_MSC_VER) || defined(__BORLANDC__)
+00043 typedef __int16 FLAC__int16;
+00044 typedef __int32 FLAC__int32;
+00045 typedef __int64 FLAC__int64;
+00046 typedef unsigned __int16 FLAC__uint16;
+00047 typedef unsigned __int32 FLAC__uint32;
+00048 typedef unsigned __int64 FLAC__uint64;
+00049 #elif defined(__EMX__)
+00050 typedef short FLAC__int16;
+00051 typedef long FLAC__int32;
+00052 typedef long long FLAC__int64;
+00053 typedef unsigned short FLAC__uint16;
+00054 typedef unsigned long FLAC__uint32;
+00055 typedef unsigned long long FLAC__uint64;
+00056 #else
+00057 typedef int16_t FLAC__int16;
+00058 typedef int32_t FLAC__int32;
+00059 typedef int64_t FLAC__int64;
+00060 typedef uint16_t FLAC__uint16;
+00061 typedef uint32_t FLAC__uint32;
+00062 typedef uint64_t FLAC__uint64;
+00063 #endif
+00064 
+00065 typedef int FLAC__bool;
+00066 
+00067 typedef FLAC__uint8 FLAC__byte;
+00068 
+00069 #ifdef true
+00070 #undef true
+00071 #endif
+00072 #ifdef false
+00073 #undef false
+00074 #endif
+00075 #ifndef __cplusplus
+00076 #define true 1
+00077 #define false 0
+00078 #endif
+00079 
+00080 #endif
+
+
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/stream__decoder_8h-source.html b/3rdparty/libflac/doc/html/api/stream__decoder_8h-source.html new file mode 100644 index 0000000..c4b705e --- /dev/null +++ b/3rdparty/libflac/doc/html/api/stream__decoder_8h-source.html @@ -0,0 +1,333 @@ + + +FLAC: include/FLAC/stream_decoder.h Source File + + + + + +

stream_decoder.h

Go to the documentation of this file.
00001 /* libFLAC - Free Lossless Audio Codec library
+00002  * Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
+00003  *
+00004  * Redistribution and use in source and binary forms, with or without
+00005  * modification, are permitted provided that the following conditions
+00006  * are met:
+00007  *
+00008  * - Redistributions of source code must retain the above copyright
+00009  * notice, this list of conditions and the following disclaimer.
+00010  *
+00011  * - Redistributions in binary form must reproduce the above copyright
+00012  * notice, this list of conditions and the following disclaimer in the
+00013  * documentation and/or other materials provided with the distribution.
+00014  *
+00015  * - Neither the name of the Xiph.org Foundation nor the names of its
+00016  * contributors may be used to endorse or promote products derived from
+00017  * this software without specific prior written permission.
+00018  *
+00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+00020  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+00022  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+00023  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+00024  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+00025  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+00026  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+00027  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00028  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00029  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00030  */
+00031 
+00032 #ifndef FLAC__STREAM_DECODER_H
+00033 #define FLAC__STREAM_DECODER_H
+00034 
+00035 #include <stdio.h> /* for FILE */
+00036 #include "export.h"
+00037 #include "format.h"
+00038 
+00039 #ifdef __cplusplus
+00040 extern "C" {
+00041 #endif
+00042 
+00043 
+00201 typedef enum {
+00202 
+00203     FLAC__STREAM_DECODER_SEARCH_FOR_METADATA = 0,
+00206     FLAC__STREAM_DECODER_READ_METADATA,
+00209     FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC,
+00214     FLAC__STREAM_DECODER_READ_FRAME,
+00217     FLAC__STREAM_DECODER_END_OF_STREAM,
+00220     FLAC__STREAM_DECODER_OGG_ERROR,
+00223     FLAC__STREAM_DECODER_SEEK_ERROR,
+00229     FLAC__STREAM_DECODER_ABORTED,
+00232     FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR,
+00237     FLAC__STREAM_DECODER_UNINITIALIZED
+00243 } FLAC__StreamDecoderState;
+00244 
+00250 extern FLAC_API const char * const FLAC__StreamDecoderStateString[];
+00251 
+00252 
+00255 typedef enum {
+00256 
+00257     FLAC__STREAM_DECODER_INIT_STATUS_OK = 0,
+00260     FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER,
+00265     FLAC__STREAM_DECODER_INIT_STATUS_INVALID_CALLBACKS,
+00268     FLAC__STREAM_DECODER_INIT_STATUS_MEMORY_ALLOCATION_ERROR,
+00271     FLAC__STREAM_DECODER_INIT_STATUS_ERROR_OPENING_FILE,
+00275     FLAC__STREAM_DECODER_INIT_STATUS_ALREADY_INITIALIZED
+00281 } FLAC__StreamDecoderInitStatus;
+00282 
+00288 extern FLAC_API const char * const FLAC__StreamDecoderInitStatusString[];
+00289 
+00290 
+00293 typedef enum {
+00294 
+00295     FLAC__STREAM_DECODER_READ_STATUS_CONTINUE,
+00298     FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM,
+00309     FLAC__STREAM_DECODER_READ_STATUS_ABORT
+00312 } FLAC__StreamDecoderReadStatus;
+00313 
+00319 extern FLAC_API const char * const FLAC__StreamDecoderReadStatusString[];
+00320 
+00321 
+00324 typedef enum {
+00325 
+00326     FLAC__STREAM_DECODER_SEEK_STATUS_OK,
+00329     FLAC__STREAM_DECODER_SEEK_STATUS_ERROR,
+00332     FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED
+00335 } FLAC__StreamDecoderSeekStatus;
+00336 
+00342 extern FLAC_API const char * const FLAC__StreamDecoderSeekStatusString[];
+00343 
+00344 
+00347 typedef enum {
+00348 
+00349     FLAC__STREAM_DECODER_TELL_STATUS_OK,
+00352     FLAC__STREAM_DECODER_TELL_STATUS_ERROR,
+00355     FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED
+00358 } FLAC__StreamDecoderTellStatus;
+00359 
+00365 extern FLAC_API const char * const FLAC__StreamDecoderTellStatusString[];
+00366 
+00367 
+00370 typedef enum {
+00371 
+00372     FLAC__STREAM_DECODER_LENGTH_STATUS_OK,
+00375     FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR,
+00378     FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED
+00381 } FLAC__StreamDecoderLengthStatus;
+00382 
+00388 extern FLAC_API const char * const FLAC__StreamDecoderLengthStatusString[];
+00389 
+00390 
+00393 typedef enum {
+00394 
+00395     FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE,
+00398     FLAC__STREAM_DECODER_WRITE_STATUS_ABORT
+00401 } FLAC__StreamDecoderWriteStatus;
+00402 
+00408 extern FLAC_API const char * const FLAC__StreamDecoderWriteStatusString[];
+00409 
+00410 
+00426 typedef enum {
+00427 
+00428     FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC,
+00431     FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER,
+00434     FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH,
+00437     FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM
+00440 } FLAC__StreamDecoderErrorStatus;
+00441 
+00447 extern FLAC_API const char * const FLAC__StreamDecoderErrorStatusString[];
+00448 
+00449 
+00450 /***********************************************************************
+00451  *
+00452  * class FLAC__StreamDecoder
+00453  *
+00454  ***********************************************************************/
+00455 
+00456 struct FLAC__StreamDecoderProtected;
+00457 struct FLAC__StreamDecoderPrivate;
+00462 typedef struct {
+00463     struct FLAC__StreamDecoderProtected *protected_; /* avoid the C++ keyword 'protected' */
+00464     struct FLAC__StreamDecoderPrivate *private_; /* avoid the C++ keyword 'private' */
+00465 } FLAC__StreamDecoder;
+00466 
+00516 typedef FLAC__StreamDecoderReadStatus (*FLAC__StreamDecoderReadCallback)(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data);
+00517 
+00551 typedef FLAC__StreamDecoderSeekStatus (*FLAC__StreamDecoderSeekCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data);
+00552 
+00589 typedef FLAC__StreamDecoderTellStatus (*FLAC__StreamDecoderTellCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data);
+00590 
+00627 typedef FLAC__StreamDecoderLengthStatus (*FLAC__StreamDecoderLengthCallback)(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data);
+00628 
+00654 typedef FLAC__bool (*FLAC__StreamDecoderEofCallback)(const FLAC__StreamDecoder *decoder, void *client_data);
+00655 
+00682 typedef FLAC__StreamDecoderWriteStatus (*FLAC__StreamDecoderWriteCallback)(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
+00683 
+00709 typedef void (*FLAC__StreamDecoderMetadataCallback)(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
+00710 
+00726 typedef void (*FLAC__StreamDecoderErrorCallback)(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
+00727 
+00728 
+00729 /***********************************************************************
+00730  *
+00731  * Class constructor/destructor
+00732  *
+00733  ***********************************************************************/
+00734 
+00742 FLAC_API FLAC__StreamDecoder *FLAC__stream_decoder_new(void);
+00743 
+00750 FLAC_API void FLAC__stream_decoder_delete(FLAC__StreamDecoder *decoder);
+00751 
+00752 
+00753 /***********************************************************************
+00754  *
+00755  * Public class method prototypes
+00756  *
+00757  ***********************************************************************/
+00758 
+00775 FLAC_API FLAC__bool FLAC__stream_decoder_set_ogg_serial_number(FLAC__StreamDecoder *decoder, long serial_number);
+00776 
+00797 FLAC_API FLAC__bool FLAC__stream_decoder_set_md5_checking(FLAC__StreamDecoder *decoder, FLAC__bool value);
+00798 
+00811 FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_respond(FLAC__StreamDecoder *decoder, FLAC__MetadataType type);
+00812 
+00826 FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_respond_application(FLAC__StreamDecoder *decoder, const FLAC__byte id[4]);
+00827 
+00838 FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_respond_all(FLAC__StreamDecoder *decoder);
+00839 
+00852 FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_ignore(FLAC__StreamDecoder *decoder, FLAC__MetadataType type);
+00853 
+00867 FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_ignore_application(FLAC__StreamDecoder *decoder, const FLAC__byte id[4]);
+00868 
+00879 FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_ignore_all(FLAC__StreamDecoder *decoder);
+00880 
+00889 FLAC_API FLAC__StreamDecoderState FLAC__stream_decoder_get_state(const FLAC__StreamDecoder *decoder);
+00890 
+00899 FLAC_API const char *FLAC__stream_decoder_get_resolved_state_string(const FLAC__StreamDecoder *decoder);
+00900 
+00913 FLAC_API FLAC__bool FLAC__stream_decoder_get_md5_checking(const FLAC__StreamDecoder *decoder);
+00914 
+00925 FLAC_API FLAC__uint64 FLAC__stream_decoder_get_total_samples(const FLAC__StreamDecoder *decoder);
+00926 
+00937 FLAC_API unsigned FLAC__stream_decoder_get_channels(const FLAC__StreamDecoder *decoder);
+00938 
+00949 FLAC_API FLAC__ChannelAssignment FLAC__stream_decoder_get_channel_assignment(const FLAC__StreamDecoder *decoder);
+00950 
+00961 FLAC_API unsigned FLAC__stream_decoder_get_bits_per_sample(const FLAC__StreamDecoder *decoder);
+00962 
+00973 FLAC_API unsigned FLAC__stream_decoder_get_sample_rate(const FLAC__StreamDecoder *decoder);
+00974 
+00985 FLAC_API unsigned FLAC__stream_decoder_get_blocksize(const FLAC__StreamDecoder *decoder);
+00986 
+01006 FLAC_API FLAC__bool FLAC__stream_decoder_get_decode_position(const FLAC__StreamDecoder *decoder, FLAC__uint64 *position);
+01007 
+01072 FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_stream(
+01073     FLAC__StreamDecoder *decoder,
+01074     FLAC__StreamDecoderReadCallback read_callback,
+01075     FLAC__StreamDecoderSeekCallback seek_callback,
+01076     FLAC__StreamDecoderTellCallback tell_callback,
+01077     FLAC__StreamDecoderLengthCallback length_callback,
+01078     FLAC__StreamDecoderEofCallback eof_callback,
+01079     FLAC__StreamDecoderWriteCallback write_callback,
+01080     FLAC__StreamDecoderMetadataCallback metadata_callback,
+01081     FLAC__StreamDecoderErrorCallback error_callback,
+01082     void *client_data
+01083 );
+01084 
+01153 FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_stream(
+01154     FLAC__StreamDecoder *decoder,
+01155     FLAC__StreamDecoderReadCallback read_callback,
+01156     FLAC__StreamDecoderSeekCallback seek_callback,
+01157     FLAC__StreamDecoderTellCallback tell_callback,
+01158     FLAC__StreamDecoderLengthCallback length_callback,
+01159     FLAC__StreamDecoderEofCallback eof_callback,
+01160     FLAC__StreamDecoderWriteCallback write_callback,
+01161     FLAC__StreamDecoderMetadataCallback metadata_callback,
+01162     FLAC__StreamDecoderErrorCallback error_callback,
+01163     void *client_data
+01164 );
+01165 
+01203 FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_FILE(
+01204     FLAC__StreamDecoder *decoder,
+01205     FILE *file,
+01206     FLAC__StreamDecoderWriteCallback write_callback,
+01207     FLAC__StreamDecoderMetadataCallback metadata_callback,
+01208     FLAC__StreamDecoderErrorCallback error_callback,
+01209     void *client_data
+01210 );
+01211 
+01253 FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_FILE(
+01254     FLAC__StreamDecoder *decoder,
+01255     FILE *file,
+01256     FLAC__StreamDecoderWriteCallback write_callback,
+01257     FLAC__StreamDecoderMetadataCallback metadata_callback,
+01258     FLAC__StreamDecoderErrorCallback error_callback,
+01259     void *client_data
+01260 );
+01261 
+01295 FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_file(
+01296     FLAC__StreamDecoder *decoder,
+01297     const char *filename,
+01298     FLAC__StreamDecoderWriteCallback write_callback,
+01299     FLAC__StreamDecoderMetadataCallback metadata_callback,
+01300     FLAC__StreamDecoderErrorCallback error_callback,
+01301     void *client_data
+01302 );
+01303 
+01341 FLAC_API FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_file(
+01342     FLAC__StreamDecoder *decoder,
+01343     const char *filename,
+01344     FLAC__StreamDecoderWriteCallback write_callback,
+01345     FLAC__StreamDecoderMetadataCallback metadata_callback,
+01346     FLAC__StreamDecoderErrorCallback error_callback,
+01347     void *client_data
+01348 );
+01349 
+01369 FLAC_API FLAC__bool FLAC__stream_decoder_finish(FLAC__StreamDecoder *decoder);
+01370 
+01384 FLAC_API FLAC__bool FLAC__stream_decoder_flush(FLAC__StreamDecoder *decoder);
+01385 
+01417 FLAC_API FLAC__bool FLAC__stream_decoder_reset(FLAC__StreamDecoder *decoder);
+01418 
+01450 FLAC_API FLAC__bool FLAC__stream_decoder_process_single(FLAC__StreamDecoder *decoder);
+01451 
+01471 FLAC_API FLAC__bool FLAC__stream_decoder_process_until_end_of_metadata(FLAC__StreamDecoder *decoder);
+01472 
+01492 FLAC_API FLAC__bool FLAC__stream_decoder_process_until_end_of_stream(FLAC__StreamDecoder *decoder);
+01493 
+01533 FLAC_API FLAC__bool FLAC__stream_decoder_skip_single_frame(FLAC__StreamDecoder *decoder);
+01534 
+01551 FLAC_API FLAC__bool FLAC__stream_decoder_seek_absolute(FLAC__StreamDecoder *decoder, FLAC__uint64 sample);
+01552 
+01553 /* \} */
+01554 
+01555 #ifdef __cplusplus
+01556 }
+01557 #endif
+01558 
+01559 #endif
+
+
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/stream__decoder_8h.html b/3rdparty/libflac/doc/html/api/stream__decoder_8h.html new file mode 100644 index 0000000..357913f --- /dev/null +++ b/3rdparty/libflac/doc/html/api/stream__decoder_8h.html @@ -0,0 +1,206 @@ + + +FLAC: include/FLAC/stream_decoder.h File Reference + + + + + +

stream_decoder.h File Reference


Detailed Description

+This module contains the functions which implement the stream decoder. +

+See the detailed documentation in the stream decoder module. +

+#include <stdio.h>
+#include "export.h"
+#include "format.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef FLAC__StreamDecoderReadStatus(* FLAC__StreamDecoderReadCallback )(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
typedef FLAC__StreamDecoderSeekStatus(* FLAC__StreamDecoderSeekCallback )(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data)
typedef FLAC__StreamDecoderTellStatus(* FLAC__StreamDecoderTellCallback )(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
typedef FLAC__StreamDecoderLengthStatus(* FLAC__StreamDecoderLengthCallback )(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data)
typedef FLAC__bool(* FLAC__StreamDecoderEofCallback )(const FLAC__StreamDecoder *decoder, void *client_data)
typedef FLAC__StreamDecoderWriteStatus(* FLAC__StreamDecoderWriteCallback )(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 *const buffer[], void *client_data)
typedef void(* FLAC__StreamDecoderMetadataCallback )(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
typedef void(* FLAC__StreamDecoderErrorCallback )(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)

Enumerations

enum  FLAC__StreamDecoderState {
+  FLAC__STREAM_DECODER_SEARCH_FOR_METADATA = 0, +FLAC__STREAM_DECODER_READ_METADATA, +FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC, +FLAC__STREAM_DECODER_READ_FRAME, +
+  FLAC__STREAM_DECODER_END_OF_STREAM, +FLAC__STREAM_DECODER_OGG_ERROR, +FLAC__STREAM_DECODER_SEEK_ERROR, +FLAC__STREAM_DECODER_ABORTED, +
+  FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR, +FLAC__STREAM_DECODER_UNINITIALIZED +
+ }
enum  FLAC__StreamDecoderInitStatus {
+  FLAC__STREAM_DECODER_INIT_STATUS_OK = 0, +FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER, +FLAC__STREAM_DECODER_INIT_STATUS_INVALID_CALLBACKS, +FLAC__STREAM_DECODER_INIT_STATUS_MEMORY_ALLOCATION_ERROR, +
+  FLAC__STREAM_DECODER_INIT_STATUS_ERROR_OPENING_FILE, +FLAC__STREAM_DECODER_INIT_STATUS_ALREADY_INITIALIZED +
+ }
enum  FLAC__StreamDecoderReadStatus { FLAC__STREAM_DECODER_READ_STATUS_CONTINUE, +FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM, +FLAC__STREAM_DECODER_READ_STATUS_ABORT + }
enum  FLAC__StreamDecoderSeekStatus { FLAC__STREAM_DECODER_SEEK_STATUS_OK, +FLAC__STREAM_DECODER_SEEK_STATUS_ERROR, +FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED + }
enum  FLAC__StreamDecoderTellStatus { FLAC__STREAM_DECODER_TELL_STATUS_OK, +FLAC__STREAM_DECODER_TELL_STATUS_ERROR, +FLAC__STREAM_DECODER_TELL_STATUS_UNSUPPORTED + }
enum  FLAC__StreamDecoderLengthStatus { FLAC__STREAM_DECODER_LENGTH_STATUS_OK, +FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR, +FLAC__STREAM_DECODER_LENGTH_STATUS_UNSUPPORTED + }
enum  FLAC__StreamDecoderWriteStatus { FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE, +FLAC__STREAM_DECODER_WRITE_STATUS_ABORT + }
enum  FLAC__StreamDecoderErrorStatus { FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC, +FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER, +FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH, +FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM + }

Functions

FLAC__StreamDecoderFLAC__stream_decoder_new (void)
void FLAC__stream_decoder_delete (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_set_ogg_serial_number (FLAC__StreamDecoder *decoder, long serial_number)
FLAC__bool FLAC__stream_decoder_set_md5_checking (FLAC__StreamDecoder *decoder, FLAC__bool value)
FLAC__bool FLAC__stream_decoder_set_metadata_respond (FLAC__StreamDecoder *decoder, FLAC__MetadataType type)
FLAC__bool FLAC__stream_decoder_set_metadata_respond_application (FLAC__StreamDecoder *decoder, const FLAC__byte id[4])
FLAC__bool FLAC__stream_decoder_set_metadata_respond_all (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_set_metadata_ignore (FLAC__StreamDecoder *decoder, FLAC__MetadataType type)
FLAC__bool FLAC__stream_decoder_set_metadata_ignore_application (FLAC__StreamDecoder *decoder, const FLAC__byte id[4])
FLAC__bool FLAC__stream_decoder_set_metadata_ignore_all (FLAC__StreamDecoder *decoder)
FLAC__StreamDecoderState FLAC__stream_decoder_get_state (const FLAC__StreamDecoder *decoder)
const char * FLAC__stream_decoder_get_resolved_state_string (const FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_get_md5_checking (const FLAC__StreamDecoder *decoder)
FLAC__uint64 FLAC__stream_decoder_get_total_samples (const FLAC__StreamDecoder *decoder)
unsigned FLAC__stream_decoder_get_channels (const FLAC__StreamDecoder *decoder)
FLAC__ChannelAssignment FLAC__stream_decoder_get_channel_assignment (const FLAC__StreamDecoder *decoder)
unsigned FLAC__stream_decoder_get_bits_per_sample (const FLAC__StreamDecoder *decoder)
unsigned FLAC__stream_decoder_get_sample_rate (const FLAC__StreamDecoder *decoder)
unsigned FLAC__stream_decoder_get_blocksize (const FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_get_decode_position (const FLAC__StreamDecoder *decoder, FLAC__uint64 *position)
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_stream (FLAC__StreamDecoder *decoder, FLAC__StreamDecoderReadCallback read_callback, FLAC__StreamDecoderSeekCallback seek_callback, FLAC__StreamDecoderTellCallback tell_callback, FLAC__StreamDecoderLengthCallback length_callback, FLAC__StreamDecoderEofCallback eof_callback, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_stream (FLAC__StreamDecoder *decoder, FLAC__StreamDecoderReadCallback read_callback, FLAC__StreamDecoderSeekCallback seek_callback, FLAC__StreamDecoderTellCallback tell_callback, FLAC__StreamDecoderLengthCallback length_callback, FLAC__StreamDecoderEofCallback eof_callback, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_FILE (FLAC__StreamDecoder *decoder, FILE *file, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_FILE (FLAC__StreamDecoder *decoder, FILE *file, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_file (FLAC__StreamDecoder *decoder, const char *filename, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__StreamDecoderInitStatus FLAC__stream_decoder_init_ogg_file (FLAC__StreamDecoder *decoder, const char *filename, FLAC__StreamDecoderWriteCallback write_callback, FLAC__StreamDecoderMetadataCallback metadata_callback, FLAC__StreamDecoderErrorCallback error_callback, void *client_data)
FLAC__bool FLAC__stream_decoder_finish (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_flush (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_reset (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_process_single (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_process_until_end_of_metadata (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_process_until_end_of_stream (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_skip_single_frame (FLAC__StreamDecoder *decoder)
FLAC__bool FLAC__stream_decoder_seek_absolute (FLAC__StreamDecoder *decoder, FLAC__uint64 sample)

Variables

const char *const FLAC__StreamDecoderStateString []
const char *const FLAC__StreamDecoderInitStatusString []
const char *const FLAC__StreamDecoderReadStatusString []
const char *const FLAC__StreamDecoderSeekStatusString []
const char *const FLAC__StreamDecoderTellStatusString []
const char *const FLAC__StreamDecoderLengthStatusString []
const char *const FLAC__StreamDecoderWriteStatusString []
const char *const FLAC__StreamDecoderErrorStatusString []
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/stream__encoder_8h-source.html b/3rdparty/libflac/doc/html/api/stream__encoder_8h-source.html new file mode 100644 index 0000000..26db23e --- /dev/null +++ b/3rdparty/libflac/doc/html/api/stream__encoder_8h-source.html @@ -0,0 +1,305 @@ + + +FLAC: include/FLAC/stream_encoder.h Source File + + + + + +

stream_encoder.h

Go to the documentation of this file.
00001 /* libFLAC - Free Lossless Audio Codec library
+00002  * Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
+00003  *
+00004  * Redistribution and use in source and binary forms, with or without
+00005  * modification, are permitted provided that the following conditions
+00006  * are met:
+00007  *
+00008  * - Redistributions of source code must retain the above copyright
+00009  * notice, this list of conditions and the following disclaimer.
+00010  *
+00011  * - Redistributions in binary form must reproduce the above copyright
+00012  * notice, this list of conditions and the following disclaimer in the
+00013  * documentation and/or other materials provided with the distribution.
+00014  *
+00015  * - Neither the name of the Xiph.org Foundation nor the names of its
+00016  * contributors may be used to endorse or promote products derived from
+00017  * this software without specific prior written permission.
+00018  *
+00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+00020  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+00022  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+00023  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+00024  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+00025  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+00026  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+00027  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+00028  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+00029  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+00030  */
+00031 
+00032 #ifndef FLAC__STREAM_ENCODER_H
+00033 #define FLAC__STREAM_ENCODER_H
+00034 
+00035 #include <stdio.h> /* for FILE */
+00036 #include "export.h"
+00037 #include "format.h"
+00038 #include "stream_decoder.h"
+00039 
+00040 #ifdef __cplusplus
+00041 extern "C" {
+00042 #endif
+00043 
+00044 
+00240 typedef enum {
+00241 
+00242     FLAC__STREAM_ENCODER_OK = 0,
+00245     FLAC__STREAM_ENCODER_UNINITIALIZED,
+00251     FLAC__STREAM_ENCODER_OGG_ERROR,
+00254     FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR,
+00259     FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA,
+00264     FLAC__STREAM_ENCODER_CLIENT_ERROR,
+00267     FLAC__STREAM_ENCODER_IO_ERROR,
+00272     FLAC__STREAM_ENCODER_FRAMING_ERROR,
+00277     FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR
+00280 } FLAC__StreamEncoderState;
+00281 
+00287 extern FLAC_API const char * const FLAC__StreamEncoderStateString[];
+00288 
+00289 
+00292 typedef enum {
+00293 
+00294     FLAC__STREAM_ENCODER_INIT_STATUS_OK = 0,
+00297     FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR,
+00300     FLAC__STREAM_ENCODER_INIT_STATUS_UNSUPPORTED_CONTAINER,
+00305     FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_CALLBACKS,
+00308     FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_NUMBER_OF_CHANNELS,
+00311     FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BITS_PER_SAMPLE,
+00317     FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_SAMPLE_RATE,
+00320     FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BLOCK_SIZE,
+00323     FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_MAX_LPC_ORDER,
+00326     FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_QLP_COEFF_PRECISION,
+00329     FLAC__STREAM_ENCODER_INIT_STATUS_BLOCK_SIZE_TOO_SMALL_FOR_LPC_ORDER,
+00332     FLAC__STREAM_ENCODER_INIT_STATUS_NOT_STREAMABLE,
+00335     FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA,
+00344     FLAC__STREAM_ENCODER_INIT_STATUS_ALREADY_INITIALIZED
+00350 } FLAC__StreamEncoderInitStatus;
+00351 
+00357 extern FLAC_API const char * const FLAC__StreamEncoderInitStatusString[];
+00358 
+00359 
+00362 typedef enum {
+00363 
+00364     FLAC__STREAM_ENCODER_READ_STATUS_CONTINUE,
+00367     FLAC__STREAM_ENCODER_READ_STATUS_END_OF_STREAM,
+00370     FLAC__STREAM_ENCODER_READ_STATUS_ABORT,
+00373     FLAC__STREAM_ENCODER_READ_STATUS_UNSUPPORTED
+00376 } FLAC__StreamEncoderReadStatus;
+00377 
+00383 extern FLAC_API const char * const FLAC__StreamEncoderReadStatusString[];
+00384 
+00385 
+00388 typedef enum {
+00389 
+00390     FLAC__STREAM_ENCODER_WRITE_STATUS_OK = 0,
+00393     FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR
+00396 } FLAC__StreamEncoderWriteStatus;
+00397 
+00403 extern FLAC_API const char * const FLAC__StreamEncoderWriteStatusString[];
+00404 
+00405 
+00408 typedef enum {
+00409 
+00410     FLAC__STREAM_ENCODER_SEEK_STATUS_OK,
+00413     FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR,
+00416     FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED
+00419 } FLAC__StreamEncoderSeekStatus;
+00420 
+00426 extern FLAC_API const char * const FLAC__StreamEncoderSeekStatusString[];
+00427 
+00428 
+00431 typedef enum {
+00432 
+00433     FLAC__STREAM_ENCODER_TELL_STATUS_OK,
+00436     FLAC__STREAM_ENCODER_TELL_STATUS_ERROR,
+00439     FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED
+00442 } FLAC__StreamEncoderTellStatus;
+00443 
+00449 extern FLAC_API const char * const FLAC__StreamEncoderTellStatusString[];
+00450 
+00451 
+00452 /***********************************************************************
+00453  *
+00454  * class FLAC__StreamEncoder
+00455  *
+00456  ***********************************************************************/
+00457 
+00458 struct FLAC__StreamEncoderProtected;
+00459 struct FLAC__StreamEncoderPrivate;
+00464 typedef struct {
+00465     struct FLAC__StreamEncoderProtected *protected_; /* avoid the C++ keyword 'protected' */
+00466     struct FLAC__StreamEncoderPrivate *private_; /* avoid the C++ keyword 'private' */
+00467 } FLAC__StreamEncoder;
+00468 
+00518 typedef FLAC__StreamEncoderReadStatus (*FLAC__StreamEncoderReadCallback)(const FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data);
+00519 
+00556 typedef FLAC__StreamEncoderWriteStatus (*FLAC__StreamEncoderWriteCallback)(const FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, void *client_data);
+00557 
+00590 typedef FLAC__StreamEncoderSeekStatus (*FLAC__StreamEncoderSeekCallback)(const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data);
+00591 
+00635 typedef FLAC__StreamEncoderTellStatus (*FLAC__StreamEncoderTellCallback)(const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data);
+00636 
+00654 typedef void (*FLAC__StreamEncoderMetadataCallback)(const FLAC__StreamEncoder *encoder, const FLAC__StreamMetadata *metadata, void *client_data);
+00655 
+00677 typedef void (*FLAC__StreamEncoderProgressCallback)(const FLAC__StreamEncoder *encoder, FLAC__uint64 bytes_written, FLAC__uint64 samples_written, unsigned frames_written, unsigned total_frames_estimate, void *client_data);
+00678 
+00679 
+00680 /***********************************************************************
+00681  *
+00682  * Class constructor/destructor
+00683  *
+00684  ***********************************************************************/
+00685 
+00693 FLAC_API FLAC__StreamEncoder *FLAC__stream_encoder_new(void);
+00694 
+00701 FLAC_API void FLAC__stream_encoder_delete(FLAC__StreamEncoder *encoder);
+00702 
+00703 
+00704 /***********************************************************************
+00705  *
+00706  * Public class method prototypes
+00707  *
+00708  ***********************************************************************/
+00709 
+00727 FLAC_API FLAC__bool FLAC__stream_encoder_set_ogg_serial_number(FLAC__StreamEncoder *encoder, long serial_number);
+00728 
+00743 FLAC_API FLAC__bool FLAC__stream_encoder_set_verify(FLAC__StreamEncoder *encoder, FLAC__bool value);
+00744 
+00761 FLAC_API FLAC__bool FLAC__stream_encoder_set_streamable_subset(FLAC__StreamEncoder *encoder, FLAC__bool value);
+00762 
+00773 FLAC_API FLAC__bool FLAC__stream_encoder_set_channels(FLAC__StreamEncoder *encoder, unsigned value);
+00774 
+00789 FLAC_API FLAC__bool FLAC__stream_encoder_set_bits_per_sample(FLAC__StreamEncoder *encoder, unsigned value);
+00790 
+00801 FLAC_API FLAC__bool FLAC__stream_encoder_set_sample_rate(FLAC__StreamEncoder *encoder, unsigned value);
+00802 
+00864 FLAC_API FLAC__bool FLAC__stream_encoder_set_compression_level(FLAC__StreamEncoder *encoder, unsigned value);
+00865 
+00879 FLAC_API FLAC__bool FLAC__stream_encoder_set_blocksize(FLAC__StreamEncoder *encoder, unsigned value);
+00880 
+00893 FLAC_API FLAC__bool FLAC__stream_encoder_set_do_mid_side_stereo(FLAC__StreamEncoder *encoder, FLAC__bool value);
+00894 
+00909 FLAC_API FLAC__bool FLAC__stream_encoder_set_loose_mid_side_stereo(FLAC__StreamEncoder *encoder, FLAC__bool value);
+00910 
+00954 FLAC_API FLAC__bool FLAC__stream_encoder_set_apodization(FLAC__StreamEncoder *encoder, const char *specification);
+00955 
+00966 FLAC_API FLAC__bool FLAC__stream_encoder_set_max_lpc_order(FLAC__StreamEncoder *encoder, unsigned value);
+00967 
+00984 FLAC_API FLAC__bool FLAC__stream_encoder_set_qlp_coeff_precision(FLAC__StreamEncoder *encoder, unsigned value);
+00985 
+00998 FLAC_API FLAC__bool FLAC__stream_encoder_set_do_qlp_coeff_prec_search(FLAC__StreamEncoder *encoder, FLAC__bool value);
+00999 
+01010 FLAC_API FLAC__bool FLAC__stream_encoder_set_do_escape_coding(FLAC__StreamEncoder *encoder, FLAC__bool value);
+01011 
+01024 FLAC_API FLAC__bool FLAC__stream_encoder_set_do_exhaustive_model_search(FLAC__StreamEncoder *encoder, FLAC__bool value);
+01025 
+01047 FLAC_API FLAC__bool FLAC__stream_encoder_set_min_residual_partition_order(FLAC__StreamEncoder *encoder, unsigned value);
+01048 
+01070 FLAC_API FLAC__bool FLAC__stream_encoder_set_max_residual_partition_order(FLAC__StreamEncoder *encoder, unsigned value);
+01071 
+01082 FLAC_API FLAC__bool FLAC__stream_encoder_set_rice_parameter_search_dist(FLAC__StreamEncoder *encoder, unsigned value);
+01083 
+01098 FLAC_API FLAC__bool FLAC__stream_encoder_set_total_samples_estimate(FLAC__StreamEncoder *encoder, FLAC__uint64 value);
+01099 
+01181 FLAC_API FLAC__bool FLAC__stream_encoder_set_metadata(FLAC__StreamEncoder *encoder, FLAC__StreamMetadata **metadata, unsigned num_blocks);
+01182 
+01191 FLAC_API FLAC__StreamEncoderState FLAC__stream_encoder_get_state(const FLAC__StreamEncoder *encoder);
+01192 
+01203 FLAC_API FLAC__StreamDecoderState FLAC__stream_encoder_get_verify_decoder_state(const FLAC__StreamEncoder *encoder);
+01204 
+01216 FLAC_API const char *FLAC__stream_encoder_get_resolved_state_string(const FLAC__StreamEncoder *encoder);
+01217 
+01235 FLAC_API void FLAC__stream_encoder_get_verify_decoder_error_stats(const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_sample, unsigned *frame_number, unsigned *channel, unsigned *sample, FLAC__int32 *expected, FLAC__int32 *got);
+01236 
+01245 FLAC_API FLAC__bool FLAC__stream_encoder_get_verify(const FLAC__StreamEncoder *encoder);
+01246 
+01255 FLAC_API FLAC__bool FLAC__stream_encoder_get_streamable_subset(const FLAC__StreamEncoder *encoder);
+01256 
+01265 FLAC_API unsigned FLAC__stream_encoder_get_channels(const FLAC__StreamEncoder *encoder);
+01266 
+01275 FLAC_API unsigned FLAC__stream_encoder_get_bits_per_sample(const FLAC__StreamEncoder *encoder);
+01276 
+01285 FLAC_API unsigned FLAC__stream_encoder_get_sample_rate(const FLAC__StreamEncoder *encoder);
+01286 
+01295 FLAC_API unsigned FLAC__stream_encoder_get_blocksize(const FLAC__StreamEncoder *encoder);
+01296 
+01305 FLAC_API FLAC__bool FLAC__stream_encoder_get_do_mid_side_stereo(const FLAC__StreamEncoder *encoder);
+01306 
+01315 FLAC_API FLAC__bool FLAC__stream_encoder_get_loose_mid_side_stereo(const FLAC__StreamEncoder *encoder);
+01316 
+01325 FLAC_API unsigned FLAC__stream_encoder_get_max_lpc_order(const FLAC__StreamEncoder *encoder);
+01326 
+01335 FLAC_API unsigned FLAC__stream_encoder_get_qlp_coeff_precision(const FLAC__StreamEncoder *encoder);
+01336 
+01345 FLAC_API FLAC__bool FLAC__stream_encoder_get_do_qlp_coeff_prec_search(const FLAC__StreamEncoder *encoder);
+01346 
+01355 FLAC_API FLAC__bool FLAC__stream_encoder_get_do_escape_coding(const FLAC__StreamEncoder *encoder);
+01356 
+01365 FLAC_API FLAC__bool FLAC__stream_encoder_get_do_exhaustive_model_search(const FLAC__StreamEncoder *encoder);
+01366 
+01375 FLAC_API unsigned FLAC__stream_encoder_get_min_residual_partition_order(const FLAC__StreamEncoder *encoder);
+01376 
+01385 FLAC_API unsigned FLAC__stream_encoder_get_max_residual_partition_order(const FLAC__StreamEncoder *encoder);
+01386 
+01395 FLAC_API unsigned FLAC__stream_encoder_get_rice_parameter_search_dist(const FLAC__StreamEncoder *encoder);
+01396 
+01408 FLAC_API FLAC__uint64 FLAC__stream_encoder_get_total_samples_estimate(const FLAC__StreamEncoder *encoder);
+01409 
+01471 FLAC_API FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_stream(FLAC__StreamEncoder *encoder, FLAC__StreamEncoderWriteCallback write_callback, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderTellCallback tell_callback, FLAC__StreamEncoderMetadataCallback metadata_callback, void *client_data);
+01472 
+01539 FLAC_API FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_ogg_stream(FLAC__StreamEncoder *encoder, FLAC__StreamEncoderReadCallback read_callback, FLAC__StreamEncoderWriteCallback write_callback, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderTellCallback tell_callback, FLAC__StreamEncoderMetadataCallback metadata_callback, void *client_data);
+01540 
+01574 FLAC_API FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_FILE(FLAC__StreamEncoder *encoder, FILE *file, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data);
+01575 
+01609 FLAC_API FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_ogg_FILE(FLAC__StreamEncoder *encoder, FILE *file, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data);
+01610 
+01641 FLAC_API FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_file(FLAC__StreamEncoder *encoder, const char *filename, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data);
+01642 
+01673 FLAC_API FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_ogg_file(FLAC__StreamEncoder *encoder, const char *filename, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data);
+01674 
+01701 FLAC_API FLAC__bool FLAC__stream_encoder_finish(FLAC__StreamEncoder *encoder);
+01702 
+01728 FLAC_API FLAC__bool FLAC__stream_encoder_process(FLAC__StreamEncoder *encoder, const FLAC__int32 * const buffer[], unsigned samples);
+01729 
+01760 FLAC_API FLAC__bool FLAC__stream_encoder_process_interleaved(FLAC__StreamEncoder *encoder, const FLAC__int32 buffer[], unsigned samples);
+01761 
+01762 /* \} */
+01763 
+01764 #ifdef __cplusplus
+01765 }
+01766 #endif
+01767 
+01768 #endif
+
+
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/stream__encoder_8h.html b/3rdparty/libflac/doc/html/api/stream__encoder_8h.html new file mode 100644 index 0000000..b12319a --- /dev/null +++ b/3rdparty/libflac/doc/html/api/stream__encoder_8h.html @@ -0,0 +1,236 @@ + + +FLAC: include/FLAC/stream_encoder.h File Reference + + + + + +

stream_encoder.h File Reference


Detailed Description

+This module contains the functions which implement the stream encoder. +

+See the detailed documentation in the stream encoder module. +

+#include <stdio.h>
+#include "export.h"
+#include "format.h"
+#include "stream_decoder.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef FLAC__StreamEncoderReadStatus(* FLAC__StreamEncoderReadCallback )(const FLAC__StreamEncoder *encoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
typedef FLAC__StreamEncoderWriteStatus(* FLAC__StreamEncoderWriteCallback )(const FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, void *client_data)
typedef FLAC__StreamEncoderSeekStatus(* FLAC__StreamEncoderSeekCallback )(const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data)
typedef FLAC__StreamEncoderTellStatus(* FLAC__StreamEncoderTellCallback )(const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
typedef void(* FLAC__StreamEncoderMetadataCallback )(const FLAC__StreamEncoder *encoder, const FLAC__StreamMetadata *metadata, void *client_data)
typedef void(* FLAC__StreamEncoderProgressCallback )(const FLAC__StreamEncoder *encoder, FLAC__uint64 bytes_written, FLAC__uint64 samples_written, unsigned frames_written, unsigned total_frames_estimate, void *client_data)

Enumerations

enum  FLAC__StreamEncoderState {
+  FLAC__STREAM_ENCODER_OK = 0, +FLAC__STREAM_ENCODER_UNINITIALIZED, +FLAC__STREAM_ENCODER_OGG_ERROR, +FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR, +
+  FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA, +FLAC__STREAM_ENCODER_CLIENT_ERROR, +FLAC__STREAM_ENCODER_IO_ERROR, +FLAC__STREAM_ENCODER_FRAMING_ERROR, +
+  FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR +
+ }
enum  FLAC__StreamEncoderInitStatus {
+  FLAC__STREAM_ENCODER_INIT_STATUS_OK = 0, +FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR, +FLAC__STREAM_ENCODER_INIT_STATUS_UNSUPPORTED_CONTAINER, +FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_CALLBACKS, +
+  FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_NUMBER_OF_CHANNELS, +FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BITS_PER_SAMPLE, +FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_SAMPLE_RATE, +FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BLOCK_SIZE, +
+  FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_MAX_LPC_ORDER, +FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_QLP_COEFF_PRECISION, +FLAC__STREAM_ENCODER_INIT_STATUS_BLOCK_SIZE_TOO_SMALL_FOR_LPC_ORDER, +FLAC__STREAM_ENCODER_INIT_STATUS_NOT_STREAMABLE, +
+  FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA, +FLAC__STREAM_ENCODER_INIT_STATUS_ALREADY_INITIALIZED +
+ }
enum  FLAC__StreamEncoderReadStatus { FLAC__STREAM_ENCODER_READ_STATUS_CONTINUE, +FLAC__STREAM_ENCODER_READ_STATUS_END_OF_STREAM, +FLAC__STREAM_ENCODER_READ_STATUS_ABORT, +FLAC__STREAM_ENCODER_READ_STATUS_UNSUPPORTED + }
enum  FLAC__StreamEncoderWriteStatus { FLAC__STREAM_ENCODER_WRITE_STATUS_OK = 0, +FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR + }
enum  FLAC__StreamEncoderSeekStatus { FLAC__STREAM_ENCODER_SEEK_STATUS_OK, +FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR, +FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED + }
enum  FLAC__StreamEncoderTellStatus { FLAC__STREAM_ENCODER_TELL_STATUS_OK, +FLAC__STREAM_ENCODER_TELL_STATUS_ERROR, +FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED + }

Functions

FLAC__StreamEncoderFLAC__stream_encoder_new (void)
void FLAC__stream_encoder_delete (FLAC__StreamEncoder *encoder)
FLAC__bool FLAC__stream_encoder_set_ogg_serial_number (FLAC__StreamEncoder *encoder, long serial_number)
FLAC__bool FLAC__stream_encoder_set_verify (FLAC__StreamEncoder *encoder, FLAC__bool value)
FLAC__bool FLAC__stream_encoder_set_streamable_subset (FLAC__StreamEncoder *encoder, FLAC__bool value)
FLAC__bool FLAC__stream_encoder_set_channels (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_bits_per_sample (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_sample_rate (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_compression_level (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_blocksize (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_do_mid_side_stereo (FLAC__StreamEncoder *encoder, FLAC__bool value)
FLAC__bool FLAC__stream_encoder_set_loose_mid_side_stereo (FLAC__StreamEncoder *encoder, FLAC__bool value)
FLAC__bool FLAC__stream_encoder_set_apodization (FLAC__StreamEncoder *encoder, const char *specification)
FLAC__bool FLAC__stream_encoder_set_max_lpc_order (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_qlp_coeff_precision (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_do_qlp_coeff_prec_search (FLAC__StreamEncoder *encoder, FLAC__bool value)
FLAC__bool FLAC__stream_encoder_set_do_escape_coding (FLAC__StreamEncoder *encoder, FLAC__bool value)
FLAC__bool FLAC__stream_encoder_set_do_exhaustive_model_search (FLAC__StreamEncoder *encoder, FLAC__bool value)
FLAC__bool FLAC__stream_encoder_set_min_residual_partition_order (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_max_residual_partition_order (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_rice_parameter_search_dist (FLAC__StreamEncoder *encoder, unsigned value)
FLAC__bool FLAC__stream_encoder_set_total_samples_estimate (FLAC__StreamEncoder *encoder, FLAC__uint64 value)
FLAC__bool FLAC__stream_encoder_set_metadata (FLAC__StreamEncoder *encoder, FLAC__StreamMetadata **metadata, unsigned num_blocks)
FLAC__StreamEncoderState FLAC__stream_encoder_get_state (const FLAC__StreamEncoder *encoder)
FLAC__StreamDecoderState FLAC__stream_encoder_get_verify_decoder_state (const FLAC__StreamEncoder *encoder)
const char * FLAC__stream_encoder_get_resolved_state_string (const FLAC__StreamEncoder *encoder)
void FLAC__stream_encoder_get_verify_decoder_error_stats (const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_sample, unsigned *frame_number, unsigned *channel, unsigned *sample, FLAC__int32 *expected, FLAC__int32 *got)
FLAC__bool FLAC__stream_encoder_get_verify (const FLAC__StreamEncoder *encoder)
FLAC__bool FLAC__stream_encoder_get_streamable_subset (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_channels (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_bits_per_sample (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_sample_rate (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_blocksize (const FLAC__StreamEncoder *encoder)
FLAC__bool FLAC__stream_encoder_get_do_mid_side_stereo (const FLAC__StreamEncoder *encoder)
FLAC__bool FLAC__stream_encoder_get_loose_mid_side_stereo (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_max_lpc_order (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_qlp_coeff_precision (const FLAC__StreamEncoder *encoder)
FLAC__bool FLAC__stream_encoder_get_do_qlp_coeff_prec_search (const FLAC__StreamEncoder *encoder)
FLAC__bool FLAC__stream_encoder_get_do_escape_coding (const FLAC__StreamEncoder *encoder)
FLAC__bool FLAC__stream_encoder_get_do_exhaustive_model_search (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_min_residual_partition_order (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_max_residual_partition_order (const FLAC__StreamEncoder *encoder)
unsigned FLAC__stream_encoder_get_rice_parameter_search_dist (const FLAC__StreamEncoder *encoder)
FLAC__uint64 FLAC__stream_encoder_get_total_samples_estimate (const FLAC__StreamEncoder *encoder)
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_stream (FLAC__StreamEncoder *encoder, FLAC__StreamEncoderWriteCallback write_callback, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderTellCallback tell_callback, FLAC__StreamEncoderMetadataCallback metadata_callback, void *client_data)
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_ogg_stream (FLAC__StreamEncoder *encoder, FLAC__StreamEncoderReadCallback read_callback, FLAC__StreamEncoderWriteCallback write_callback, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderTellCallback tell_callback, FLAC__StreamEncoderMetadataCallback metadata_callback, void *client_data)
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_FILE (FLAC__StreamEncoder *encoder, FILE *file, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data)
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_ogg_FILE (FLAC__StreamEncoder *encoder, FILE *file, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data)
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_file (FLAC__StreamEncoder *encoder, const char *filename, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data)
FLAC__StreamEncoderInitStatus FLAC__stream_encoder_init_ogg_file (FLAC__StreamEncoder *encoder, const char *filename, FLAC__StreamEncoderProgressCallback progress_callback, void *client_data)
FLAC__bool FLAC__stream_encoder_finish (FLAC__StreamEncoder *encoder)
FLAC__bool FLAC__stream_encoder_process (FLAC__StreamEncoder *encoder, const FLAC__int32 *const buffer[], unsigned samples)
FLAC__bool FLAC__stream_encoder_process_interleaved (FLAC__StreamEncoder *encoder, const FLAC__int32 buffer[], unsigned samples)

Variables

const char *const FLAC__StreamEncoderStateString []
const char *const FLAC__StreamEncoderInitStatusString []
const char *const FLAC__StreamEncoderReadStatusString []
const char *const FLAC__StreamEncoderWriteStatusString []
const char *const FLAC__StreamEncoderSeekStatusString []
const char *const FLAC__StreamEncoderTellStatusString []
+ +


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod-members.html b/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod-members.html new file mode 100644 index 0000000..3504ed6 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod-members.html @@ -0,0 +1,34 @@ + + +FLAC: Member List + + + + +

FLAC__EntropyCodingMethod Member List

This is the complete list of members for FLAC__EntropyCodingMethod, including all inherited members.

+ + + +
data (defined in FLAC__EntropyCodingMethod)FLAC__EntropyCodingMethod
partitioned_rice (defined in FLAC__EntropyCodingMethod)FLAC__EntropyCodingMethod
type (defined in FLAC__EntropyCodingMethod)FLAC__EntropyCodingMethod
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod.html b/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod.html new file mode 100644 index 0000000..09cfcd3 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod.html @@ -0,0 +1,54 @@ + + +FLAC: FLAC__EntropyCodingMethod Struct Reference + + + + +

FLAC__EntropyCodingMethod Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+Header for the entropy coding method. (c.f. format specification) +

+ + + + + + + + + + + +

Public Attributes

+FLAC__EntropyCodingMethodType type
+union {
   FLAC__EntropyCodingMethod_PartitionedRice   partitioned_rice
data
+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod__PartitionedRice-members.html b/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod__PartitionedRice-members.html new file mode 100644 index 0000000..aad6ff7 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod__PartitionedRice-members.html @@ -0,0 +1,33 @@ + + +FLAC: Member List + + + + +

FLAC__EntropyCodingMethod_PartitionedRice Member List

This is the complete list of members for FLAC__EntropyCodingMethod_PartitionedRice, including all inherited members.

+ + +
contentsFLAC__EntropyCodingMethod_PartitionedRice
orderFLAC__EntropyCodingMethod_PartitionedRice
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod__PartitionedRice.html b/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod__PartitionedRice.html new file mode 100644 index 0000000..28db3fd --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod__PartitionedRice.html @@ -0,0 +1,95 @@ + + +FLAC: FLAC__EntropyCodingMethod_PartitionedRice Struct Reference + + + + +

FLAC__EntropyCodingMethod_PartitionedRice Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+Header for a Rice partitioned residual. (c.f. format specification) +

+ + + + + + + +

Public Attributes

unsigned order
const FLAC__EntropyCodingMethod_PartitionedRiceContentscontents
+


Member Data Documentation

+

+ + + + +
+ + + + +
unsigned FLAC__EntropyCodingMethod_PartitionedRice::order
+
+ + + + + +
+   + + +

+The partition order, i.e. # of contexts = 2 ^ order.

+

+ + + + +
+ + + + +
const FLAC__EntropyCodingMethod_PartitionedRiceContents* FLAC__EntropyCodingMethod_PartitionedRice::contents
+
+ + + + + +
+   + + +

+The context's Rice parameters and/or raw bits.

+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents-members.html b/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents-members.html new file mode 100644 index 0000000..c5c88e3 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents-members.html @@ -0,0 +1,34 @@ + + +FLAC: Member List + + + + +

FLAC__EntropyCodingMethod_PartitionedRiceContents Member List

This is the complete list of members for FLAC__EntropyCodingMethod_PartitionedRiceContents, including all inherited members.

+ + + +
capacity_by_orderFLAC__EntropyCodingMethod_PartitionedRiceContents
parametersFLAC__EntropyCodingMethod_PartitionedRiceContents
raw_bitsFLAC__EntropyCodingMethod_PartitionedRiceContents
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents.html b/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents.html new file mode 100644 index 0000000..a786993 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents.html @@ -0,0 +1,120 @@ + + +FLAC: FLAC__EntropyCodingMethod_PartitionedRiceContents Struct Reference + + + + +

FLAC__EntropyCodingMethod_PartitionedRiceContents Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+Contents of a Rice partitioned residual +

+ + + + + + + + + +

Public Attributes

unsigned * parameters
unsigned * raw_bits
unsigned capacity_by_order
+


Member Data Documentation

+

+ + + + +
+ + + + +
unsigned* FLAC__EntropyCodingMethod_PartitionedRiceContents::parameters
+
+ + + + + +
+   + + +

+The Rice parameters for each context.

+

+ + + + +
+ + + + +
unsigned* FLAC__EntropyCodingMethod_PartitionedRiceContents::raw_bits
+
+ + + + + +
+   + + +

+Widths for escape-coded partitions. Will be non-zero for escaped partitions and zero for unescaped partitions.

+

+ + + + +
+ + + + +
unsigned FLAC__EntropyCodingMethod_PartitionedRiceContents::capacity_by_order
+
+ + + + + +
+   + + +

+The capacity of the parameters and raw_bits arrays specified as an order, i.e. the number of array elements allocated is 2 ^ capacity_by_order.

+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____Frame-members.html b/3rdparty/libflac/doc/html/api/structFLAC____Frame-members.html new file mode 100644 index 0000000..0477bef --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____Frame-members.html @@ -0,0 +1,34 @@ + + +FLAC: Member List + + + + +

FLAC__Frame Member List

This is the complete list of members for FLAC__Frame, including all inherited members.

+ + + +
footer (defined in FLAC__Frame)FLAC__Frame
header (defined in FLAC__Frame)FLAC__Frame
subframes (defined in FLAC__Frame)FLAC__Frame
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____Frame.html b/3rdparty/libflac/doc/html/api/structFLAC____Frame.html new file mode 100644 index 0000000..6915176 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____Frame.html @@ -0,0 +1,53 @@ + + +FLAC: FLAC__Frame Struct Reference + + + + +

FLAC__Frame Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+FLAC frame structure. (c.f. format specification) +

+ + + + + + + + + +

Public Attributes

+FLAC__FrameHeader header
+FLAC__Subframe subframes [FLAC__MAX_CHANNELS]
+FLAC__FrameFooter footer
+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____FrameFooter-members.html b/3rdparty/libflac/doc/html/api/structFLAC____FrameFooter-members.html new file mode 100644 index 0000000..0cf8a4e --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____FrameFooter-members.html @@ -0,0 +1,32 @@ + + +FLAC: Member List + + + + +

FLAC__FrameFooter Member List

This is the complete list of members for FLAC__FrameFooter, including all inherited members.

+ +
crcFLAC__FrameFooter
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____FrameFooter.html b/3rdparty/libflac/doc/html/api/structFLAC____FrameFooter.html new file mode 100644 index 0000000..35ddc55 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____FrameFooter.html @@ -0,0 +1,70 @@ + + +FLAC: FLAC__FrameFooter Struct Reference + + + + +

FLAC__FrameFooter Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+FLAC frame footer structure. (c.f. format specification) +

+ + + + + +

Public Attributes

FLAC__uint16 crc
+


Member Data Documentation

+

+ + + + +
+ + + + +
FLAC__uint16 FLAC__FrameFooter::crc
+
+ + + + + +
+   + + +

+CRC-16 (polynomial = x^16 + x^15 + x^2 + x^0, initialized with 0) of the bytes before the crc, back to and including the frame header sync code.

+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____FrameHeader-members.html b/3rdparty/libflac/doc/html/api/structFLAC____FrameHeader-members.html new file mode 100644 index 0000000..d1db24e --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____FrameHeader-members.html @@ -0,0 +1,41 @@ + + +FLAC: Member List + + + + +

FLAC__FrameHeader Member List

This is the complete list of members for FLAC__FrameHeader, including all inherited members.

+ + + + + + + + + + +
bits_per_sampleFLAC__FrameHeader
blocksizeFLAC__FrameHeader
channel_assignmentFLAC__FrameHeader
channelsFLAC__FrameHeader
crcFLAC__FrameHeader
frame_number (defined in FLAC__FrameHeader)FLAC__FrameHeader
numberFLAC__FrameHeader
number_typeFLAC__FrameHeader
sample_number (defined in FLAC__FrameHeader)FLAC__FrameHeader
sample_rateFLAC__FrameHeader
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____FrameHeader.html b/3rdparty/libflac/doc/html/api/structFLAC____FrameHeader.html new file mode 100644 index 0000000..2e6282e --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____FrameHeader.html @@ -0,0 +1,251 @@ + + +FLAC: FLAC__FrameHeader Struct Reference + + + + +

FLAC__FrameHeader Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+FLAC frame header structure. (c.f. format specification) +

+ + + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

unsigned blocksize
unsigned sample_rate
unsigned channels
FLAC__ChannelAssignment channel_assignment
unsigned bits_per_sample
FLAC__FrameNumberType number_type
union {
   FLAC__uint32   frame_number
   FLAC__uint64   sample_number
number
FLAC__uint8 crc
+


Member Data Documentation

+

+ + + + +
+ + + + +
unsigned FLAC__FrameHeader::blocksize
+
+ + + + + +
+   + + +

+The number of samples per subframe.

+

+ + + + +
+ + + + +
unsigned FLAC__FrameHeader::sample_rate
+
+ + + + + +
+   + + +

+The sample rate in Hz.

+

+ + + + +
+ + + + +
unsigned FLAC__FrameHeader::channels
+
+ + + + + +
+   + + +

+The number of channels (== number of subframes).

+

+ + + + +
+ + + + +
FLAC__ChannelAssignment FLAC__FrameHeader::channel_assignment
+
+ + + + + +
+   + + +

+The channel assignment for the frame.

+

+ + + + +
+ + + + +
unsigned FLAC__FrameHeader::bits_per_sample
+
+ + + + + +
+   + + +

+The sample resolution.

+

+ + + + +
+ + + + +
FLAC__FrameNumberType FLAC__FrameHeader::number_type
+
+ + + + + +
+   + + +

+The numbering scheme used for the frame. As a convenience, the decoder will always convert a frame number to a sample number because the rules are complex.

+

+ + + + +
+ + + + +
union { ... } FLAC__FrameHeader::number
+
+ + + + + +
+   + + +

+The frame number or sample number of first sample in frame; use the number_type value to determine which to use.

+

+ + + + +
+ + + + +
FLAC__uint8 FLAC__FrameHeader::crc
+
+ + + + + +
+   + + +

+CRC-8 (polynomial = x^8 + x^2 + x^1 + x^0, initialized with 0) of the raw frame header bytes, meaning everything before the CRC byte including the sync code.

+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____IOCallbacks-members.html b/3rdparty/libflac/doc/html/api/structFLAC____IOCallbacks-members.html new file mode 100644 index 0000000..894674f --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____IOCallbacks-members.html @@ -0,0 +1,37 @@ + + +FLAC: Member List + + + + +

FLAC__IOCallbacks Member List

This is the complete list of members for FLAC__IOCallbacks, including all inherited members.

+ + + + + + +
close (defined in FLAC__IOCallbacks)FLAC__IOCallbacks
eof (defined in FLAC__IOCallbacks)FLAC__IOCallbacks
read (defined in FLAC__IOCallbacks)FLAC__IOCallbacks
seek (defined in FLAC__IOCallbacks)FLAC__IOCallbacks
tell (defined in FLAC__IOCallbacks)FLAC__IOCallbacks
write (defined in FLAC__IOCallbacks)FLAC__IOCallbacks
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____IOCallbacks.html b/3rdparty/libflac/doc/html/api/structFLAC____IOCallbacks.html new file mode 100644 index 0000000..ca5c567 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____IOCallbacks.html @@ -0,0 +1,63 @@ + + +FLAC: FLAC__IOCallbacks Struct Reference + + + + +

FLAC__IOCallbacks Struct Reference
+ +[FLAC/callback.h: I/O callback structures] +

#include <callback.h> +

+List of all members.


Detailed Description

+A structure for holding a set of callbacks. Each FLAC interface that requires a FLAC__IOCallbacks structure will describe which of the callbacks are required. The ones that are not required may be set to NULL.

+If the seek requirement for an interface is optional, you can signify that a data sorce is not seekable by setting the seek field to NULL. +

+ + + + + + + + + + + + + + + +

Public Attributes

+FLAC__IOCallback_Read read
+FLAC__IOCallback_Write write
+FLAC__IOCallback_Seek seek
+FLAC__IOCallback_Tell tell
+FLAC__IOCallback_Eof eof
+FLAC__IOCallback_Close close
+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamDecoder-members.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamDecoder-members.html new file mode 100644 index 0000000..efc1dec --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamDecoder-members.html @@ -0,0 +1,33 @@ + + +FLAC: Member List + + + + +

FLAC__StreamDecoder Member List

This is the complete list of members for FLAC__StreamDecoder, including all inherited members.

+ + +
private_ (defined in FLAC__StreamDecoder)FLAC__StreamDecoder
protected_ (defined in FLAC__StreamDecoder)FLAC__StreamDecoder
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamDecoder.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamDecoder.html new file mode 100644 index 0000000..a5e3ff7 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamDecoder.html @@ -0,0 +1,50 @@ + + +FLAC: FLAC__StreamDecoder Struct Reference + + + + +

FLAC__StreamDecoder Struct Reference
+ +[FLAC/stream_decoder.h: stream decoder interface] +

#include <stream_decoder.h> +

+List of all members.


Detailed Description

+The opaque structure definition for the stream decoder type. See the stream decoder module for a detailed description. +

+ + + + + + + +

Public Attributes

+FLAC__StreamDecoderProtected * protected_
+FLAC__StreamDecoderPrivate * private_
+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamEncoder-members.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamEncoder-members.html new file mode 100644 index 0000000..789544d --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamEncoder-members.html @@ -0,0 +1,33 @@ + + +FLAC: Member List + + + + +

FLAC__StreamEncoder Member List

This is the complete list of members for FLAC__StreamEncoder, including all inherited members.

+ + +
private_ (defined in FLAC__StreamEncoder)FLAC__StreamEncoder
protected_ (defined in FLAC__StreamEncoder)FLAC__StreamEncoder
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamEncoder.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamEncoder.html new file mode 100644 index 0000000..2029e76 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamEncoder.html @@ -0,0 +1,50 @@ + + +FLAC: FLAC__StreamEncoder Struct Reference + + + + +

FLAC__StreamEncoder Struct Reference
+ +[FLAC/stream_encoder.h: stream encoder interface] +

#include <stream_encoder.h> +

+List of all members.


Detailed Description

+The opaque structure definition for the stream encoder type. See the stream encoder module for a detailed description. +

+ + + + + + + +

Public Attributes

+FLAC__StreamEncoderProtected * protected_
+FLAC__StreamEncoderPrivate * private_
+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata-members.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata-members.html new file mode 100644 index 0000000..c3aeb5c --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata-members.html @@ -0,0 +1,43 @@ + + +FLAC: Member List + + + + +

FLAC__StreamMetadata Member List

This is the complete list of members for FLAC__StreamMetadata, including all inherited members.

+ + + + + + + + + + + + +
application (defined in FLAC__StreamMetadata)FLAC__StreamMetadata
cue_sheet (defined in FLAC__StreamMetadata)FLAC__StreamMetadata
dataFLAC__StreamMetadata
is_lastFLAC__StreamMetadata
lengthFLAC__StreamMetadata
padding (defined in FLAC__StreamMetadata)FLAC__StreamMetadata
picture (defined in FLAC__StreamMetadata)FLAC__StreamMetadata
seek_table (defined in FLAC__StreamMetadata)FLAC__StreamMetadata
stream_info (defined in FLAC__StreamMetadata)FLAC__StreamMetadata
typeFLAC__StreamMetadata
unknown (defined in FLAC__StreamMetadata)FLAC__StreamMetadata
vorbis_comment (defined in FLAC__StreamMetadata)FLAC__StreamMetadata
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata.html new file mode 100644 index 0000000..b4a8e2b --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata.html @@ -0,0 +1,163 @@ + + +FLAC: FLAC__StreamMetadata Struct Reference + + + + +

FLAC__StreamMetadata Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+FLAC metadata block structure. (c.f. format specification) +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

FLAC__MetadataType type
FLAC__bool is_last
unsigned length
union {
   FLAC__StreamMetadata_StreamInfo   stream_info
   FLAC__StreamMetadata_Padding   padding
   FLAC__StreamMetadata_Application   application
   FLAC__StreamMetadata_SeekTable   seek_table
   FLAC__StreamMetadata_VorbisComment   vorbis_comment
   FLAC__StreamMetadata_CueSheet   cue_sheet
   FLAC__StreamMetadata_Picture   picture
   FLAC__StreamMetadata_Unknown   unknown
data
+


Member Data Documentation

+

+ + + + +
+ + + + +
FLAC__MetadataType FLAC__StreamMetadata::type
+
+ + + + + +
+   + + +

+The type of the metadata block; used determine which member of the data union to dereference. If type >= FLAC__METADATA_TYPE_UNDEFINED then data.unknown must be used.

+

+ + + + +
+ + + + +
FLAC__bool FLAC__StreamMetadata::is_last
+
+ + + + + +
+   + + +

+true if this metadata block is the last, else false

+

+ + + + +
+ + + + +
unsigned FLAC__StreamMetadata::length
+
+ + + + + +
+   + + +

+Length, in bytes, of the block data as it appears in the stream.

+

+ + + + +
+ + + + +
union { ... } FLAC__StreamMetadata::data
+
+ + + + + +
+   + + +

+Polymorphic block data; use the type value to determine which to use.

+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Application-members.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Application-members.html new file mode 100644 index 0000000..8aef74e --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Application-members.html @@ -0,0 +1,33 @@ + + +FLAC: Member List + + + + +

FLAC__StreamMetadata_Application Member List

This is the complete list of members for FLAC__StreamMetadata_Application, including all inherited members.

+ + +
data (defined in FLAC__StreamMetadata_Application)FLAC__StreamMetadata_Application
id (defined in FLAC__StreamMetadata_Application)FLAC__StreamMetadata_Application
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Application.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Application.html new file mode 100644 index 0000000..4142991 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Application.html @@ -0,0 +1,50 @@ + + +FLAC: FLAC__StreamMetadata_Application Struct Reference + + + + +

FLAC__StreamMetadata_Application Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+FLAC APPLICATION structure. (c.f. format specification) +

+ + + + + + + +

Public Attributes

+FLAC__byte id [4]
+FLAC__byte * data
+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet-members.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet-members.html new file mode 100644 index 0000000..6b42f9d --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet-members.html @@ -0,0 +1,36 @@ + + +FLAC: Member List + + + + +

FLAC__StreamMetadata_CueSheet Member List

This is the complete list of members for FLAC__StreamMetadata_CueSheet, including all inherited members.

+ + + + + +
is_cdFLAC__StreamMetadata_CueSheet
lead_inFLAC__StreamMetadata_CueSheet
media_catalog_numberFLAC__StreamMetadata_CueSheet
num_tracksFLAC__StreamMetadata_CueSheet
tracksFLAC__StreamMetadata_CueSheet
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet.html new file mode 100644 index 0000000..079530b --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet.html @@ -0,0 +1,170 @@ + + +FLAC: FLAC__StreamMetadata_CueSheet Struct Reference + + + + +

FLAC__StreamMetadata_CueSheet Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+FLAC CUESHEET structure. (See the format specification for the full description of each field.) +

+ + + + + + + + + + + + + +

Public Attributes

char media_catalog_number [129]
FLAC__uint64 lead_in
FLAC__bool is_cd
unsigned num_tracks
FLAC__StreamMetadata_CueSheet_Tracktracks
+


Member Data Documentation

+

+ + + + +
+ + + + +
char FLAC__StreamMetadata_CueSheet::media_catalog_number[129]
+
+ + + + + +
+   + + +

+Media catalog number, in ASCII printable characters 0x20-0x7e. In general, the media catalog number may be 0 to 128 bytes long; any unused characters should be right-padded with NUL characters.

+

+ + + + +
+ + + + +
FLAC__uint64 FLAC__StreamMetadata_CueSheet::lead_in
+
+ + + + + +
+   + + +

+The number of lead-in samples.

+

+ + + + +
+ + + + +
FLAC__bool FLAC__StreamMetadata_CueSheet::is_cd
+
+ + + + + +
+   + + +

+true if CUESHEET corresponds to a Compact Disc, else false.

+

+ + + + +
+ + + + +
unsigned FLAC__StreamMetadata_CueSheet::num_tracks
+
+ + + + + +
+   + + +

+The number of tracks.

+

+ + + + +
+ + + + +
FLAC__StreamMetadata_CueSheet_Track* FLAC__StreamMetadata_CueSheet::tracks
+
+ + + + + +
+   + + +

+NULL if num_tracks == 0, else pointer to array of tracks.

+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet__Index-members.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet__Index-members.html new file mode 100644 index 0000000..4611855 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet__Index-members.html @@ -0,0 +1,33 @@ + + +FLAC: Member List + + + + +

FLAC__StreamMetadata_CueSheet_Index Member List

This is the complete list of members for FLAC__StreamMetadata_CueSheet_Index, including all inherited members.

+ + +
numberFLAC__StreamMetadata_CueSheet_Index
offsetFLAC__StreamMetadata_CueSheet_Index
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet__Index.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet__Index.html new file mode 100644 index 0000000..296c889 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet__Index.html @@ -0,0 +1,95 @@ + + +FLAC: FLAC__StreamMetadata_CueSheet_Index Struct Reference + + + + +

FLAC__StreamMetadata_CueSheet_Index Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+FLAC CUESHEET track index structure. (See the format specification for the full description of each field.) +

+ + + + + + + +

Public Attributes

FLAC__uint64 offset
FLAC__byte number
+


Member Data Documentation

+

+ + + + +
+ + + + +
FLAC__uint64 FLAC__StreamMetadata_CueSheet_Index::offset
+
+ + + + + +
+   + + +

+Offset in samples, relative to the track offset, of the index point.

+

+ + + + +
+ + + + +
FLAC__byte FLAC__StreamMetadata_CueSheet_Index::number
+
+ + + + + +
+   + + +

+The index point number.

+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet__Track-members.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet__Track-members.html new file mode 100644 index 0000000..48eed06 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet__Track-members.html @@ -0,0 +1,38 @@ + + +FLAC: Member List + + + + +

FLAC__StreamMetadata_CueSheet_Track Member List

This is the complete list of members for FLAC__StreamMetadata_CueSheet_Track, including all inherited members.

+ + + + + + + +
indicesFLAC__StreamMetadata_CueSheet_Track
isrcFLAC__StreamMetadata_CueSheet_Track
num_indicesFLAC__StreamMetadata_CueSheet_Track
numberFLAC__StreamMetadata_CueSheet_Track
offsetFLAC__StreamMetadata_CueSheet_Track
pre_emphasisFLAC__StreamMetadata_CueSheet_Track
typeFLAC__StreamMetadata_CueSheet_Track
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet__Track.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet__Track.html new file mode 100644 index 0000000..6aab829 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__CueSheet__Track.html @@ -0,0 +1,220 @@ + + +FLAC: FLAC__StreamMetadata_CueSheet_Track Struct Reference + + + + +

FLAC__StreamMetadata_CueSheet_Track Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+FLAC CUESHEET track structure. (See the format specification for the full description of each field.) +

+ + + + + + + + + + + + + + + + + +

Public Attributes

FLAC__uint64 offset
FLAC__byte number
char isrc [13]
unsigned type:1
unsigned pre_emphasis:1
FLAC__byte num_indices
FLAC__StreamMetadata_CueSheet_Indexindices
+


Member Data Documentation

+

+ + + + +
+ + + + +
FLAC__uint64 FLAC__StreamMetadata_CueSheet_Track::offset
+
+ + + + + +
+   + + +

+Track offset in samples, relative to the beginning of the FLAC audio stream.

+

+ + + + +
+ + + + +
FLAC__byte FLAC__StreamMetadata_CueSheet_Track::number
+
+ + + + + +
+   + + +

+The track number.

+

+ + + + +
+ + + + +
char FLAC__StreamMetadata_CueSheet_Track::isrc[13]
+
+ + + + + +
+   + + +

+Track ISRC. This is a 12-digit alphanumeric code plus a trailing NUL byte

+

+ + + + +
+ + + + +
unsigned FLAC__StreamMetadata_CueSheet_Track::type
+
+ + + + + +
+   + + +

+The track type: 0 for audio, 1 for non-audio.

+

+ + + + +
+ + + + +
unsigned FLAC__StreamMetadata_CueSheet_Track::pre_emphasis
+
+ + + + + +
+   + + +

+The pre-emphasis flag: 0 for no pre-emphasis, 1 for pre-emphasis.

+

+ + + + +
+ + + + +
FLAC__byte FLAC__StreamMetadata_CueSheet_Track::num_indices
+
+ + + + + +
+   + + +

+The number of track index points.

+

+ + + + +
+ + + + +
FLAC__StreamMetadata_CueSheet_Index* FLAC__StreamMetadata_CueSheet_Track::indices
+
+ + + + + +
+   + + +

+NULL if num_indices == 0, else pointer to array of index points.

+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Padding-members.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Padding-members.html new file mode 100644 index 0000000..0697831 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Padding-members.html @@ -0,0 +1,32 @@ + + +FLAC: Member List + + + + +

FLAC__StreamMetadata_Padding Member List

This is the complete list of members for FLAC__StreamMetadata_Padding, including all inherited members.

+ +
dummyFLAC__StreamMetadata_Padding
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Padding.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Padding.html new file mode 100644 index 0000000..c03db91 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Padding.html @@ -0,0 +1,70 @@ + + +FLAC: FLAC__StreamMetadata_Padding Struct Reference + + + + +

FLAC__StreamMetadata_Padding Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+FLAC PADDING structure. (c.f. format specification) +

+ + + + + +

Public Attributes

int dummy
+


Member Data Documentation

+

+ + + + +
+ + + + +
int FLAC__StreamMetadata_Padding::dummy
+
+ + + + + +
+   + + +

+Conceptually this is an empty struct since we don't store the padding bytes. Empty structs are not allowed by some C compilers, hence the dummy.

+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Picture-members.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Picture-members.html new file mode 100644 index 0000000..53894db --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Picture-members.html @@ -0,0 +1,40 @@ + + +FLAC: Member List + + + + +

FLAC__StreamMetadata_Picture Member List

This is the complete list of members for FLAC__StreamMetadata_Picture, including all inherited members.

+ + + + + + + + + +
colorsFLAC__StreamMetadata_Picture
dataFLAC__StreamMetadata_Picture
data_lengthFLAC__StreamMetadata_Picture
depthFLAC__StreamMetadata_Picture
descriptionFLAC__StreamMetadata_Picture
heightFLAC__StreamMetadata_Picture
mime_typeFLAC__StreamMetadata_Picture
typeFLAC__StreamMetadata_Picture
widthFLAC__StreamMetadata_Picture
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Picture.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Picture.html new file mode 100644 index 0000000..189bfe4 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Picture.html @@ -0,0 +1,270 @@ + + +FLAC: FLAC__StreamMetadata_Picture Struct Reference + + + + +

FLAC__StreamMetadata_Picture Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+FLAC PICTURE structure. (See the format specification for the full description of each field.) +

+ + + + + + + + + + + + + + + + + + + + + +

Public Attributes

FLAC__StreamMetadata_Picture_Type type
char * mime_type
FLAC__byte * description
FLAC__uint32 width
FLAC__uint32 height
FLAC__uint32 depth
FLAC__uint32 colors
FLAC__uint32 data_length
FLAC__byte * data
+


Member Data Documentation

+

+ + + + +
+ + + + +
FLAC__StreamMetadata_Picture_Type FLAC__StreamMetadata_Picture::type
+
+ + + + + +
+   + + +

+The kind of picture stored.

+

+ + + + +
+ + + + +
char* FLAC__StreamMetadata_Picture::mime_type
+
+ + + + + +
+   + + +

+Picture data's MIME type, in ASCII printable characters 0x20-0x7e, NUL terminated. For best compatibility with players, use picture data of MIME type image/jpeg or image/png. A MIME type of '-->' is also allowed, in which case the picture data should be a complete URL. In file storage, the MIME type is stored as a 32-bit length followed by the ASCII string with no NUL terminator, but is converted to a plain C string in this structure for convenience.

+

+ + + + +
+ + + + +
FLAC__byte* FLAC__StreamMetadata_Picture::description
+
+ + + + + +
+   + + +

+Picture's description in UTF-8, NUL terminated. In file storage, the description is stored as a 32-bit length followed by the UTF-8 string with no NUL terminator, but is converted to a plain C string in this structure for convenience.

+

+ + + + +
+ + + + +
FLAC__uint32 FLAC__StreamMetadata_Picture::width
+
+ + + + + +
+   + + +

+Picture's width in pixels.

+

+ + + + +
+ + + + +
FLAC__uint32 FLAC__StreamMetadata_Picture::height
+
+ + + + + +
+   + + +

+Picture's height in pixels.

+

+ + + + +
+ + + + +
FLAC__uint32 FLAC__StreamMetadata_Picture::depth
+
+ + + + + +
+   + + +

+Picture's color depth in bits-per-pixel.

+

+ + + + +
+ + + + +
FLAC__uint32 FLAC__StreamMetadata_Picture::colors
+
+ + + + + +
+   + + +

+For indexed palettes (like GIF), picture's number of colors (the number of palette entries), or 0 for non-indexed (i.e. 2^depth).

+

+ + + + +
+ + + + +
FLAC__uint32 FLAC__StreamMetadata_Picture::data_length
+
+ + + + + +
+   + + +

+Length of binary picture data in bytes.

+

+ + + + +
+ + + + +
FLAC__byte* FLAC__StreamMetadata_Picture::data
+
+ + + + + +
+   + + +

+Binary picture data.

+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__SeekPoint-members.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__SeekPoint-members.html new file mode 100644 index 0000000..0e11d44 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__SeekPoint-members.html @@ -0,0 +1,34 @@ + + +FLAC: Member List + + + + +

FLAC__StreamMetadata_SeekPoint Member List

This is the complete list of members for FLAC__StreamMetadata_SeekPoint, including all inherited members.

+ + + +
frame_samplesFLAC__StreamMetadata_SeekPoint
sample_numberFLAC__StreamMetadata_SeekPoint
stream_offsetFLAC__StreamMetadata_SeekPoint
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__SeekPoint.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__SeekPoint.html new file mode 100644 index 0000000..ab7c1cc --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__SeekPoint.html @@ -0,0 +1,120 @@ + + +FLAC: FLAC__StreamMetadata_SeekPoint Struct Reference + + + + +

FLAC__StreamMetadata_SeekPoint Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+SeekPoint structure used in SEEKTABLE blocks. (c.f. format specification) +

+ + + + + + + + + +

Public Attributes

FLAC__uint64 sample_number
FLAC__uint64 stream_offset
unsigned frame_samples
+


Member Data Documentation

+

+ + + + +
+ + + + +
FLAC__uint64 FLAC__StreamMetadata_SeekPoint::sample_number
+
+ + + + + +
+   + + +

+The sample number of the target frame.

+

+ + + + +
+ + + + +
FLAC__uint64 FLAC__StreamMetadata_SeekPoint::stream_offset
+
+ + + + + +
+   + + +

+The offset, in bytes, of the target frame with respect to beginning of the first frame.

+

+ + + + +
+ + + + +
unsigned FLAC__StreamMetadata_SeekPoint::frame_samples
+
+ + + + + +
+   + + +

+The number of samples in the target frame.

+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__SeekTable-members.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__SeekTable-members.html new file mode 100644 index 0000000..421f397 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__SeekTable-members.html @@ -0,0 +1,33 @@ + + +FLAC: Member List + + + + +

FLAC__StreamMetadata_SeekTable Member List

This is the complete list of members for FLAC__StreamMetadata_SeekTable, including all inherited members.

+ + +
num_points (defined in FLAC__StreamMetadata_SeekTable)FLAC__StreamMetadata_SeekTable
points (defined in FLAC__StreamMetadata_SeekTable)FLAC__StreamMetadata_SeekTable
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__SeekTable.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__SeekTable.html new file mode 100644 index 0000000..99af8fb --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__SeekTable.html @@ -0,0 +1,54 @@ + + +FLAC: FLAC__StreamMetadata_SeekTable Struct Reference + + + + +

FLAC__StreamMetadata_SeekTable Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+FLAC SEEKTABLE structure. (c.f. format specification)

+

Note:
From the format specification:
    +
  • The seek points must be sorted by ascending sample number.
  • Each seek point's sample number must be the first sample of the target frame.
  • Each seek point's sample number must be unique within the table.
  • Existence of a SEEKTABLE block implies a correct setting of total_samples in the stream_info block.
  • Behavior is undefined when more than one SEEKTABLE block is present in a stream.
+
+ +

+ + + + + + + +

Public Attributes

+unsigned num_points
+FLAC__StreamMetadata_SeekPointpoints
+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__StreamInfo-members.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__StreamInfo-members.html new file mode 100644 index 0000000..3bcc7e3 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__StreamInfo-members.html @@ -0,0 +1,40 @@ + + +FLAC: Member List + + + + +

FLAC__StreamMetadata_StreamInfo Member List

This is the complete list of members for FLAC__StreamMetadata_StreamInfo, including all inherited members.

+ + + + + + + + + +
bits_per_sample (defined in FLAC__StreamMetadata_StreamInfo)FLAC__StreamMetadata_StreamInfo
channels (defined in FLAC__StreamMetadata_StreamInfo)FLAC__StreamMetadata_StreamInfo
max_blocksize (defined in FLAC__StreamMetadata_StreamInfo)FLAC__StreamMetadata_StreamInfo
max_framesize (defined in FLAC__StreamMetadata_StreamInfo)FLAC__StreamMetadata_StreamInfo
md5sum (defined in FLAC__StreamMetadata_StreamInfo)FLAC__StreamMetadata_StreamInfo
min_blocksize (defined in FLAC__StreamMetadata_StreamInfo)FLAC__StreamMetadata_StreamInfo
min_framesize (defined in FLAC__StreamMetadata_StreamInfo)FLAC__StreamMetadata_StreamInfo
sample_rate (defined in FLAC__StreamMetadata_StreamInfo)FLAC__StreamMetadata_StreamInfo
total_samples (defined in FLAC__StreamMetadata_StreamInfo)FLAC__StreamMetadata_StreamInfo
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__StreamInfo.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__StreamInfo.html new file mode 100644 index 0000000..ed9734d --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__StreamInfo.html @@ -0,0 +1,71 @@ + + +FLAC: FLAC__StreamMetadata_StreamInfo Struct Reference + + + + +

FLAC__StreamMetadata_StreamInfo Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+FLAC STREAMINFO structure. (c.f. format specification) +

+ + + + + + + + + + + + + + + + + + + + + +

Public Attributes

+unsigned min_blocksize
+unsigned max_blocksize
+unsigned min_framesize
+unsigned max_framesize
+unsigned sample_rate
+unsigned channels
+unsigned bits_per_sample
+FLAC__uint64 total_samples
+FLAC__byte md5sum [16]
+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Unknown-members.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Unknown-members.html new file mode 100644 index 0000000..8c99cc3 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Unknown-members.html @@ -0,0 +1,32 @@ + + +FLAC: Member List + + + + +

FLAC__StreamMetadata_Unknown Member List

This is the complete list of members for FLAC__StreamMetadata_Unknown, including all inherited members.

+ +
data (defined in FLAC__StreamMetadata_Unknown)FLAC__StreamMetadata_Unknown
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Unknown.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Unknown.html new file mode 100644 index 0000000..b3930da --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__Unknown.html @@ -0,0 +1,47 @@ + + +FLAC: FLAC__StreamMetadata_Unknown Struct Reference + + + + +

FLAC__StreamMetadata_Unknown Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+Structure that is used when a metadata block of unknown type is loaded. The contents are opaque. The structure is used only internally to correctly handle unknown metadata. +

+ + + + + +

Public Attributes

+FLAC__byte * data
+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__VorbisComment-members.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__VorbisComment-members.html new file mode 100644 index 0000000..e4ca192 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__VorbisComment-members.html @@ -0,0 +1,34 @@ + + +FLAC: Member List + + + + +

FLAC__StreamMetadata_VorbisComment Member List

This is the complete list of members for FLAC__StreamMetadata_VorbisComment, including all inherited members.

+ + + +
comments (defined in FLAC__StreamMetadata_VorbisComment)FLAC__StreamMetadata_VorbisComment
num_comments (defined in FLAC__StreamMetadata_VorbisComment)FLAC__StreamMetadata_VorbisComment
vendor_string (defined in FLAC__StreamMetadata_VorbisComment)FLAC__StreamMetadata_VorbisComment
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__VorbisComment.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__VorbisComment.html new file mode 100644 index 0000000..22ff45a --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__VorbisComment.html @@ -0,0 +1,53 @@ + + +FLAC: FLAC__StreamMetadata_VorbisComment Struct Reference + + + + +

FLAC__StreamMetadata_VorbisComment Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+FLAC VORBIS_COMMENT structure. (c.f. format specification) +

+ + + + + + + + + +

Public Attributes

+FLAC__StreamMetadata_VorbisComment_Entry vendor_string
+FLAC__uint32 num_comments
+FLAC__StreamMetadata_VorbisComment_Entrycomments
+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__VorbisComment__Entry-members.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__VorbisComment__Entry-members.html new file mode 100644 index 0000000..b741155 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__VorbisComment__Entry-members.html @@ -0,0 +1,33 @@ + + +FLAC: Member List + + + + +

FLAC__StreamMetadata_VorbisComment_Entry Member List

This is the complete list of members for FLAC__StreamMetadata_VorbisComment_Entry, including all inherited members.

+ + +
entry (defined in FLAC__StreamMetadata_VorbisComment_Entry)FLAC__StreamMetadata_VorbisComment_Entry
length (defined in FLAC__StreamMetadata_VorbisComment_Entry)FLAC__StreamMetadata_VorbisComment_Entry
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__VorbisComment__Entry.html b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__VorbisComment__Entry.html new file mode 100644 index 0000000..1566355 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____StreamMetadata__VorbisComment__Entry.html @@ -0,0 +1,52 @@ + + +FLAC: FLAC__StreamMetadata_VorbisComment_Entry Struct Reference + + + + +

FLAC__StreamMetadata_VorbisComment_Entry Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+Vorbis comment entry structure used in VORBIS_COMMENT blocks. (c.f. format specification)

+For convenience, the APIs maintain a trailing NUL character at the end of entry which is not counted toward length, i.e.

 strlen(entry) == length 
+
+

+ + + + + + + +

Public Attributes

+FLAC__uint32 length
+FLAC__byte * entry
+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____Subframe-members.html b/3rdparty/libflac/doc/html/api/structFLAC____Subframe-members.html new file mode 100644 index 0000000..0176e59 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____Subframe-members.html @@ -0,0 +1,38 @@ + + +FLAC: Member List + + + + +

FLAC__Subframe Member List

This is the complete list of members for FLAC__Subframe, including all inherited members.

+ + + + + + + +
constant (defined in FLAC__Subframe)FLAC__Subframe
data (defined in FLAC__Subframe)FLAC__Subframe
fixed (defined in FLAC__Subframe)FLAC__Subframe
lpc (defined in FLAC__Subframe)FLAC__Subframe
type (defined in FLAC__Subframe)FLAC__Subframe
verbatim (defined in FLAC__Subframe)FLAC__Subframe
wasted_bits (defined in FLAC__Subframe)FLAC__Subframe
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____Subframe.html b/3rdparty/libflac/doc/html/api/structFLAC____Subframe.html new file mode 100644 index 0000000..374bfb9 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____Subframe.html @@ -0,0 +1,63 @@ + + +FLAC: FLAC__Subframe Struct Reference + + + + +

FLAC__Subframe Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+FLAC subframe structure. (c.f. format specification) +

+ + + + + + + + + + + + + + + + + + + +

Public Attributes

+FLAC__SubframeType type
+union {
   FLAC__Subframe_Constant   constant
   FLAC__Subframe_Fixed   fixed
   FLAC__Subframe_LPC   lpc
   FLAC__Subframe_Verbatim   verbatim
data
+unsigned wasted_bits
+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Constant-members.html b/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Constant-members.html new file mode 100644 index 0000000..e6b4c91 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Constant-members.html @@ -0,0 +1,32 @@ + + +FLAC: Member List + + + + +

FLAC__Subframe_Constant Member List

This is the complete list of members for FLAC__Subframe_Constant, including all inherited members.

+ +
valueFLAC__Subframe_Constant
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Constant.html b/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Constant.html new file mode 100644 index 0000000..b1c602d --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Constant.html @@ -0,0 +1,70 @@ + + +FLAC: FLAC__Subframe_Constant Struct Reference + + + + +

FLAC__Subframe_Constant Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+CONSTANT subframe. (c.f. format specification) +

+ + + + + +

Public Attributes

FLAC__int32 value
+


Member Data Documentation

+

+ + + + +
+ + + + +
FLAC__int32 FLAC__Subframe_Constant::value
+
+ + + + + +
+   + + +

+The constant signal value.

+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Fixed-members.html b/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Fixed-members.html new file mode 100644 index 0000000..53a72b5 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Fixed-members.html @@ -0,0 +1,35 @@ + + +FLAC: Member List + + + + +

FLAC__Subframe_Fixed Member List

This is the complete list of members for FLAC__Subframe_Fixed, including all inherited members.

+ + + + +
entropy_coding_methodFLAC__Subframe_Fixed
orderFLAC__Subframe_Fixed
residualFLAC__Subframe_Fixed
warmupFLAC__Subframe_Fixed
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Fixed.html b/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Fixed.html new file mode 100644 index 0000000..4580721 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Fixed.html @@ -0,0 +1,145 @@ + + +FLAC: FLAC__Subframe_Fixed Struct Reference + + + + +

FLAC__Subframe_Fixed Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+FIXED subframe. (c.f. format specification) +

+ + + + + + + + + + + +

Public Attributes

FLAC__EntropyCodingMethod entropy_coding_method
unsigned order
FLAC__int32 warmup [FLAC__MAX_FIXED_ORDER]
const FLAC__int32 * residual
+


Member Data Documentation

+

+ + + + +
+ + + + +
FLAC__EntropyCodingMethod FLAC__Subframe_Fixed::entropy_coding_method
+
+ + + + + +
+   + + +

+The residual coding method.

+

+ + + + +
+ + + + +
unsigned FLAC__Subframe_Fixed::order
+
+ + + + + +
+   + + +

+The polynomial order.

+

+ + + + +
+ + + + +
FLAC__int32 FLAC__Subframe_Fixed::warmup[FLAC__MAX_FIXED_ORDER]
+
+ + + + + +
+   + + +

+Warmup samples to prime the predictor, length == order.

+

+ + + + +
+ + + + +
const FLAC__int32* FLAC__Subframe_Fixed::residual
+
+ + + + + +
+   + + +

+The residual signal, length == (blocksize minus order) samples.

+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____Subframe__LPC-members.html b/3rdparty/libflac/doc/html/api/structFLAC____Subframe__LPC-members.html new file mode 100644 index 0000000..c8332bd --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____Subframe__LPC-members.html @@ -0,0 +1,38 @@ + + +FLAC: Member List + + + + +

FLAC__Subframe_LPC Member List

This is the complete list of members for FLAC__Subframe_LPC, including all inherited members.

+ + + + + + + +
entropy_coding_methodFLAC__Subframe_LPC
orderFLAC__Subframe_LPC
qlp_coeffFLAC__Subframe_LPC
qlp_coeff_precisionFLAC__Subframe_LPC
quantization_levelFLAC__Subframe_LPC
residualFLAC__Subframe_LPC
warmupFLAC__Subframe_LPC
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____Subframe__LPC.html b/3rdparty/libflac/doc/html/api/structFLAC____Subframe__LPC.html new file mode 100644 index 0000000..326dd58 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____Subframe__LPC.html @@ -0,0 +1,220 @@ + + +FLAC: FLAC__Subframe_LPC Struct Reference + + + + +

FLAC__Subframe_LPC Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+LPC subframe. (c.f. format specification) +

+ + + + + + + + + + + + + + + + + +

Public Attributes

FLAC__EntropyCodingMethod entropy_coding_method
unsigned order
unsigned qlp_coeff_precision
int quantization_level
FLAC__int32 qlp_coeff [FLAC__MAX_LPC_ORDER]
FLAC__int32 warmup [FLAC__MAX_LPC_ORDER]
const FLAC__int32 * residual
+


Member Data Documentation

+

+ + + + +
+ + + + +
FLAC__EntropyCodingMethod FLAC__Subframe_LPC::entropy_coding_method
+
+ + + + + +
+   + + +

+The residual coding method.

+

+ + + + +
+ + + + +
unsigned FLAC__Subframe_LPC::order
+
+ + + + + +
+   + + +

+The FIR order.

+

+ + + + +
+ + + + +
unsigned FLAC__Subframe_LPC::qlp_coeff_precision
+
+ + + + + +
+   + + +

+Quantized FIR filter coefficient precision in bits.

+

+ + + + +
+ + + + +
int FLAC__Subframe_LPC::quantization_level
+
+ + + + + +
+   + + +

+The qlp coeff shift needed.

+

+ + + + +
+ + + + +
FLAC__int32 FLAC__Subframe_LPC::qlp_coeff[FLAC__MAX_LPC_ORDER]
+
+ + + + + +
+   + + +

+FIR filter coefficients.

+

+ + + + +
+ + + + +
FLAC__int32 FLAC__Subframe_LPC::warmup[FLAC__MAX_LPC_ORDER]
+
+ + + + + +
+   + + +

+Warmup samples to prime the predictor, length == order.

+

+ + + + +
+ + + + +
const FLAC__int32* FLAC__Subframe_LPC::residual
+
+ + + + + +
+   + + +

+The residual signal, length == (blocksize minus order) samples.

+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Verbatim-members.html b/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Verbatim-members.html new file mode 100644 index 0000000..89cc414 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Verbatim-members.html @@ -0,0 +1,32 @@ + + +FLAC: Member List + + + + +

FLAC__Subframe_Verbatim Member List

This is the complete list of members for FLAC__Subframe_Verbatim, including all inherited members.

+ +
dataFLAC__Subframe_Verbatim
+


+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Verbatim.html b/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Verbatim.html new file mode 100644 index 0000000..9cffa67 --- /dev/null +++ b/3rdparty/libflac/doc/html/api/structFLAC____Subframe__Verbatim.html @@ -0,0 +1,70 @@ + + +FLAC: FLAC__Subframe_Verbatim Struct Reference + + + + +

FLAC__Subframe_Verbatim Struct Reference
+ +[FLAC/format.h: format components] +

#include <format.h> +

+List of all members.


Detailed Description

+VERBATIM subframe. (c.f. format specification) +

+ + + + + +

Public Attributes

const FLAC__int32 * data
+


Member Data Documentation

+

+ + + + +
+ + + + +
const FLAC__int32* FLAC__Subframe_Verbatim::data
+
+ + + + + +
+   + + +

+A pointer to verbatim signal.

+


The documentation for this struct was generated from the following file: + +
+ + + + + + + + + diff --git a/3rdparty/libflac/doc/html/changelog.html b/3rdparty/libflac/doc/html/changelog.html new file mode 100644 index 0000000..39be1d4 --- /dev/null +++ b/3rdparty/libflac/doc/html/changelog.html @@ -0,0 +1,832 @@ + + + + + + + + + + + + + + + + FLAC - changelog + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ changelog +
+
+
+ This is an informal changelog, a summary of changes in each release. (See also known bugs.) Particulary important for developers is the precise description of changes to the library interfaces. See also the porting guide for specific instructions on porting to newer versions of FLAC.
+ +
+ + FLAC 1.2.1 (17-Sep-2007) + +
+ +
    +
  • + General: +
      +
    • With the new --keep-foreign-metadata in flac, non-audio RIFF and AIFF chunks can be stored in FLAC files and recreated when decoding. This allows, among other, things support for archiving BWF files and other WAVE files from editing tools that preserves all the metadata.
    • +
    +
  • +
  • + FLAC format: +
      +
    • Specified 2 new APPLICATION metadata blocks for storing WAVE and AIFF chunks (for use with --keep-foreign-metadata in flac).
    • +
    • The lead-out track number for non-CDDA cuesheets now must be 255.
    • +
    +
  • +
  • + Ogg FLAC format: +
      +
    • This is not a format change, but changed default extension for Ogg FLAC from .ogg to .oga, according to new Xiph specification (SF #1762492).
    • +
    +
  • +
  • + flac: +
      +
    • Added a new option --no-utf8-convert which works like it does in metaflac (SF #973740).
    • +
    • Added a new option --keep-foreign-metadata which can save/restore RIFF and AIFF chunks to/from FLAC files (SF #363478).
    • +
    • Changed default extension for Ogg FLAC from .ogg to .oga, according to new Xiph specification (SF #1762492).
    • +
    • Fixed bug where using --replay-gain without any padding option caused only a small PADDING block to be created (SF #1760790).
    • +
    • Fixed bug where encoding from stdin on Windows could fail if WAVE/AIFF contained unknown chunks (SF #1776803).
    • +
    • Fixed bug where importing non-CDDA cuesheets would cause an invalid lead-out track number (SF #1764105).
    • +
    +
  • +
  • + metaflac: +
      +
    • Changed default extension for Ogg FLAC from .ogg to .oga, according to new Xiph specification (SF #1762492).
    • +
    • Fixed bug where importing non-CDDA cuesheets would cause an invalid lead-out track number (SF #1764105).
    • +
    +
  • +
  • + plugins: +
      +
    • (none)
    • +
    +
  • +
  • + build system: + +
  • +
  • + documentation: +
      +
    • Added new tutorial section for flac.
    • +
    • Added example code section for using libFLAC/libFLAC++.
    • +
    +
  • +
  • + libraries: +
      +
    • libFLAC: Fixed very rare seek bug (SF #1684049).
    • +
    • libFLAC: Fixed seek bug with Ogg FLAC and small streams (SF #1792172).
    • +
    • libFLAC: 64-bit fixes (SF #1790872).
    • +
    +
  • +
  • + Interface changes (see also the porting guide for specific instructions on porting to FLAC 1.2.1): +
      +
    • + libFLAC: +
        +
      • Added FLAC__metadata_simple_iterator_is_last()
      • +
      • Added FLAC__metadata_simple_iterator_get_block_offset()
      • +
      • Added FLAC__metadata_simple_iterator_get_block_length()
      • +
      • Added FLAC__metadata_simple_iterator_get_application_id()
      • +
      +
    • +
    • + libFLAC++: +
        +
      • Added FLAC::Metadata::SimpleIterator::is_last()
      • +
      • Added FLAC::Metadata::SimpleIterator::get_block_offset()
      • +
      • Added FLAC::Metadata::SimpleIterator::get_block_length()
      • +
      • Added FLAC::Metadata::SimpleIterator::get_application_id()
      • +
      +
    • +
    +
  • +
+ +
+ + FLAC 1.2.0 (23-Jul-2007) + +
+ +
    +
  • + General: +
      +
    • Small encoding speedups for all modes.
    • +
    +
  • +
  • + FLAC format: +
      +
    • One of the reserved bits in the FLAC frame header has been assigned for future use; make sure to refer to the porting guide if you parse FLAC streams manually.
    • +
    +
  • +
  • + Ogg FLAC format: +
      +
    • (none)
    • +
    +
  • +
  • + flac: +
      +
    • Added runtime detection of SSE OS support for most operating systems.
    • +
    • Added a new undocumented option --ignore-chunk-sizes for ignoring the size of the 'data' chunk (WAVE) or 'SSND' chunk (AIFF). Can be used to encode files with bogus data sizes (e.g. with WAV files piped from foobar2000 to flac.exe as an external encoder). Use with caution: all subsequent data is treated as audio, so the data/SSND chunk must be the last or the following data/tags will be treated as audio and encoded.
    • +
    +
  • +
  • + metaflac: +
      +
    • (none)
    • +
    +
  • +
  • + plugins: +
      +
    • (none)
    • +
    +
  • +
  • + build system: +
      +
    • Added solution and project files for building with VC++ 2005.
    • +
    +
  • +
  • + libraries: +
      +
    • Added runtime detection of SSE OS support for most operating systems.
    • +
    • Fixed bug where invalid seek tables could cause some seeks to fail.
    • +
    +
  • +
  • + Interface changes (see also the porting guide for specific instructions on porting to FLAC 1.2.0): +
      +
    • + libFLAC: +
        +
      • Added FLAC__format_sample_rate_is_subset()
      • +
      +
    • +
    • + libFLAC++: +
        +
      • Added FLAC::Decoder::Stream::get_decode_position()
      • +
      +
    • +
    +
  • +
+ +
+ + FLAC 1.1.4 (13-Feb-2007) + +
+ +
    +
  • + General: +
      +
    • Improved compression with no change to format or decrease in speed.
    • +
    • Encoding and decoding speedups for all modes. Encoding at -8 is twice as fast.
    • +
    +
  • +
  • + FLAC format: +
      +
    • (none)
    • +
    +
  • +
  • + Ogg FLAC format: +
      +
    • (none)
    • +
    +
  • +
  • + flac: +
      +
    • Improved compression with no change to format or decrease in speed.
    • +
    • Encoding and decoding speedups for all modes. Encoding at -8 is twice as fast.
    • +
    • Added a new option -w,--warnings-as-errors for treating all warnings as errors.
    • +
    • Allow --picture option to take only a filename, and have all other attributes extracted from the file itself.
    • +
    • Fixed a bug that caused suboptimal default compression settings in some locales (SF #1608883).
    • +
    • Fixed a bug where FLAC-to-FLAC transcoding of a corrupted FLAC file would truncate the transcoded file at the first error (SF #1615019).
    • +
    • Fixed a bug where using -F with FLAC-to-FLAC transcoding of a corrupted FLAC would have no effect (SF #1615391).
    • +
    • Fixed a bug where new PICTURE metadata blocks specified with --picture would not be transferred during FLAC-to-FLAC transcoding (SF #1627993).
    • +
    +
  • +
  • + metaflac: +
      +
    • Allow --import-picture-from option to take only a filename, and have all other attributes extracted from the file itself.
    • +
    +
  • +
  • + plugins: +
      +
    • Fixed a bug in the XMMS plugin where Ctrl-3 (file info) would cause a crash if the file did not exist (SF #1634941).
    • +
    +
  • +
  • + build system: +
      +
    • Fixed a makefile linkage bug with libogg (SF #1611414).
    • +
    • Added pkg-config files for libFLAC and libFLAC++ (SF #1647881).
    • +
    • Added --disable-ogg option for building without Ogg support even if libogg is installed (SF #1196996).
    • +
    +
  • +
  • + libraries: +
      +
    • Completely rewritten bitbuffer which uses native machine word size instead of bytes for dramatic speed improvements. The speedup should be most dramatic on CPUs with slower byte manipulation capability and big-endian machines.
    • +
    • Much faster Rice partition size estimation which greatly speeds encoding in higher modes.
    • +
    • Increased compression for all modes.
    • +
    • Reduced memory requirements for encoder and decoder.
    • +
    • Fixed a bug with default apodization settings that were erroneous in some locales (SF #1608883).
    • +
    +
  • +
  • + Interface changes: +
      +
    • + libFLAC: +
        +
      • (behavior only) FLAC__stream_encoder_set_metadata() now makes a copy of the "metadata" array of pointers (but still not copies of the objects themselves) so the client does not need to maintain its copy of the array after the call.
      • +
      +
    • +
    • + libFLAC++: +
        +
      • (none)
      • +
      +
    • +
    +
  • +
+ +
+ + FLAC 1.1.3 (27-Nov-2006) + +
+ +
    +
  • + General: +
      +
    • Improved compression with no impact on format or decoding speed.
    • +
    • Much better recovery for corrupted files
    • +
    • Better multichannel support
    • +
    • Large file (>2GB) support everywhere
    • +
    • flac now supports FLAC and Ogg FLAC as input to the encoder (e.g. can re-encode FLAC to FLAC) and preserve all the metadata like tags, etc.
    • +
    • New PICTURE metadata block for storing things like cover art, new --picture option to flac and --import-picture-from option to metaflac for importing pictures, new --export-picture-to option to metaflac for exporting pictures, and metadata API additions for searching for suitable pictures based on type, size and color constraints.
    • +
    • Support for new REPLAYGAIN_REFERENCE_LOUDNESS tag.
    • +
    • Fixed a bug in Ogg FLAC encoding where metadata was not being updated properly. Existing Ogg FLAC files should be recoded to fix up the metadata, e.g. flac -Vf -S 10s --ogg file.ogg
    • +
    • In the developer libraries, the interface has been simplfied by merging the three decoding layers into a single class; ditto for the encoders. Also, libOggFLAC has been merged into libFLAC and libOggFLAC++ has been merged into libFLAC++ so there is a single API supporting both native FLAC and Ogg FLAC.
    • +
    +
  • +
  • + FLAC format: +
      +
    • New PICTURE metadata block for storing things like cover art.
    • +
    • Speaker assignments and channel orders for 3-6 channels (see frame header).
    • +
    • Further restrictions on the FLAC subset when the sample rate is <=48kHz; in this case the maximum LPC order is now 12 and maximum blocksize is 4608. This is to further limit the processing and memory requirements for hardware implementations while not measurably affecting compression.
    • +
    +
  • +
  • + Ogg FLAC format: +
      +
    • (none)
    • +
    +
  • +
  • + flac: +
      +
    • Improved the -F option to allow decoding of FLAC files whose metadata is corrupted, and other kinds of severe corruption.
    • +
    • Encoder can now take FLAC and Ogg FLAC as input. The output FLAC file will have all the same metadata as the original unless overridden with options on the command line.
    • +
    • Encoder can now take WAVEFORMATEXTENSIBLE WAVE files as input; decoder will output WAVEFORMATEXTENSIBLE WAVE files when necessary to conform to the latest Microsoft specifications.
    • +
    • Now properly supports AIFF and WAVEFORMATEXTENSIBLE multichannel input, performing necessary channel reordering both for encoding and decoding. WAVEFORMATEXTENSIBLE channel mask is also saved to a tag on encoding and restored on decoding for situations when there is no natural mapping to FLAC channel assignments.
    • +
    • Expanded support for "odd" sample resolutions to WAVE and AIFF input; all resolutions from 4 to 24 bits-per-sample now supported for all input types.
    • +
    • Added a new option --tag-from-file for setting a tag from file (e.g. for importing a cuesheet as a tag).
    • +
    • Added a new option --picture for adding pictures.
    • +
    • Added a new option --apodization for specifying the window function(s) to be used in LPC analysis.
    • +
    • Added support for encoding from non-compressed AIFF-C (SF #1090933).
    • +
    • Importing of non-CDDA-compliant cuesheets now only issues a warning, not an error (see here).
    • +
    • MD5 comparison failures on decoding are now an error instead of a warning and will also return a non-zero exit code (SF #1493725).
    • +
    • The default padding size is now 8K, or 64K if the input audio stream is more than 20 minutes long.
    • +
    • Fixed a bug in cuesheet parsing where it would return an error if the last line of the cuesheet did not end with a newline.
    • +
    • Fixed a bug that caused a crash when -a and -t were used together (SF #1229481).
    • +
    • Fixed a bug with --sector-align where appended samples were not always totally silent (SF #1237707).
    • +
    • Fixed bugs with --sector-align and raw input files.
    • +
    • Fixed a bug printing out unknown AIFF subchunk names (SF #1267476).
    • +
    • Fixed a bug where WAVE files with "data" subchunks of size 0 where accepted (SF #1293830).
    • +
    • Fixed a bug where sync error at end-of-stream of truncated files was not being caught (SF #1244071).
    • +
    • Fixed a problem with filename parsing if file does not have extension but also has a . in the path (SF #1161916).
    • +
    • Fixed a problem with fractional-second parsing for --skip/--until in some locales (SF #1031043).
    • +
    • Increase progress report rate when -p and -e are used together (SF #1580122).
    • +
    +
  • +
  • + metaflac: +
      +
    • Added support for read-only operations on Ogg FLAC files.
    • +
    • Added a new option --set-tag-from-file for setting a tag from file (e.g. for importing a cuesheet as a tag).
    • +
    • Added a new option --import-picture-from for importing pictures.
    • +
    • Added a new option --export-picture-to for exporting pictures.
    • +
    • Added shorthand operation --remove-replay-gain for removing ReplayGain tags.
    • +
    • --export-cuesheet-to now properly specifies the FLAC file name (SF #1272825).
    • +
    • Importing of non-CDDA-compliant cuesheets now issues a warning.
    • +
    • Removed the following deprecated tag editing options; you should use the new option names shown instead: +
        +
      • Removed --show-vc-vendor; use --show-vendor-tag
      • +
      • Removed --show-vc-field; use --show-tag
      • +
      • Removed --remove-vc-all; use --remove-all-tags
      • +
      • Removed --remove-vc-field; use --remove-tag
      • +
      • Removed --remove-vc-firstfield; use --remove-first-tag
      • +
      • Removed --set-vc-field; use --set-tag
      • +
      • Removed --import-vc-from; use --import-tags-from
      • +
      • Removed --export-vc-to; use --export-tags-to
      • +
      +
    • +
    • Disallow multiple input FLAC files when --import-tags-from=- is used (SF #1082577).
    • +
    +
  • +
  • + plugins: +
      +
    • When ReplayGain is on, if tags for the preferred kind of gain (album/track) are not in a stream, the other kind will be used.
    • +
    • Added ReplayGain info to file info box in XMMS plugin
    • +
    • Fixed UTF-8 decoder to disallow non-shortest-form and surrogate sequences (see here).
    • +
    +
  • +
  • + build system: +
      +
    • Added support for building on OS/2 with EMX (SF #1229495)
    • +
    • Added support for building with Borland C++ (SF #1599018)
    • +
    • Added a --disable-xmms-plugin option to configure to prevent building the XMMS plugin (SF #930494).
    • +
    • Added a --disable-doxygen-docs option to configure for disabling Doxygen-based API doc generation (SF #1365935).
    • +
    • Added a --disable-thorough-tests option to configure to do the basic library, stream, and tool tests in a reasonable time (SF #1077948).
    • +
    • Added large file support with AC_SYS_LARGEFILE; use --disable-largefile with configure to disable.
    • +
    +
  • +
  • + libraries: +
      +
    • Merged libOggFLAC into libFLAC; both formats are now supporte through the same API.
    • +
    • Merged libOggFLAC++ into libFLAC++; both formats are now supporte through the same API.
    • +
    • libFLAC and libFLAC++: Simplified encoder setup with new FLAC__stream_encoder_set_compression_level() function.
    • +
    • libFLAC: Improved compression with no impact on FLAC format or decoding time by adding a windowing stage before LPC analysis.
    • +
    • libFLAC: Fixed a bug where missing STREAMINFO fields (min/max framesize, total samples, MD5 sum) and seek point offsets were not getting rewritten back to Ogg FLAC file (SF #1338969).
    • +
    • libFLAC: Fixed a bug in cuesheet parsing where it would return an error if the last line of the cuesheet did not end with a newline.
    • +
    • libFLAC: Fixed UTF-8 decoder to disallow non-shortest-form and surrogate sequences (see here).
    • +
    • libFLAC: Fixed a bug in the return value for FLAC__stream_decoder_set_metadata_respond_application() and FLAC__stream_decoder_set_metadata_ignore_application() when there was a memory allocation error (SF #1235005).
    • +
    +
  • +
  • + Interface changes (see also the porting guide for specific instructions on porting to FLAC 1.1.3): +
      +
    • + all libraries; +
        +
      • Merged libOggFLAC into libFLAC; both formats are now supporte through the same API.
      • +
      • Merged libOggFLAC++ into libFLAC++; both formats are now supporte through the same API.
      • +
      • Merged seekable stream decoder and file decoder into the stream decoder.
      • +
      • Merged seekable stream encoder and file encoder into the stream encoder.
      • +
      • Added #defines for the API version number to make porting easier; see include/lib*FLAC*/export.h.
      • +
      +
    • +
    • + libFLAC: +
        +
      • Added FLAC__stream_encoder_set_apodization()
      • +
      • Added FLAC__stream_encoder_set_compression_level()
      • +
      • Added FLAC__metadata_object_cuesheet_calculate_cddb_id()
      • +
      • Added FLAC__metadata_get_cuesheet()
      • +
      • Added FLAC__metadata_get_picture()
      • +
      • Added FLAC__metadata_chain_read_ogg() and FLAC__metadata_chain_read_ogg_with_callbacks()
      • +
      • Changed FLAC__stream_encoder_finish() now returns a FLAC__bool to signal a verify failure, or error processing last frame or updating metadata.
      • +
      • Changed FLAC__StreamDecoderState: removed state FLAC__STREAM_DECODER_UNPARSEABLE_STREAM
      • +
      • Changed FLAC__StreamDecoderErrorStatus: new error code FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM
      • +
      • The above two changes mean that when the decoder encounters what it thinks are unparseable frames from a future decoder, instead of returning a fatal error with the FLAC__STREAM_DECODER_UNPARSEABLE_STREAM state, it just calls the error callback with FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM and leaves the behavior up to the application.
      • +
      +
    • +
    • + libFLAC++: +
        +
      • Added FLAC::Metadata::Picture
      • +
      • Added FLAC::Encoder::Stream::set_apodization()
      • +
      • Added FLAC::Encoder::Stream::set_compression_level()
      • +
      • Added FLAC::Metadata::CueSheet::calculate_cddb_id()
      • +
      • Added FLAC::Metadata::get_cuesheet()
      • +
      • Added FLAC::Metadata::get_picture()
      • +
      • Changed FLAC::Metadata::Chain::read() to accept a flag denoting Ogg FLAC input
      • +
      • Changed FLAC::Decoder::Stream::finish() now returns a bool to signal an MD5 failure like FLAC__stream_decoder_finish() does.
      • +
      • Changed FLAC::Encoder::Stream::finish() now returns a bool to signal a verify failure, or error processing last frame or updating metadata.
      • +
      +
    • +
    • + libOggFLAC: +
        +
      • Merged into libFLAC.
      • +
      +
    • +
    • + libOggFLAC++: +
        +
      • Merged into libFLAC++.
      • +
      +
    • +
    +
  • +
+ +
+ + FLAC 1.1.2 (05-Feb-2005) + +
+ +
    +
  • + General: +
      +
    • Sped up decoding by a few percent overall.
    • +
    • Sped up encoding when not using LPC (i.e. when using flac options -0, -1, -2, or -l 0).
    • +
    • Fixed a decoding bug that could cause sync errors with some ID3v1-tagged FLAC files.
    • +
    • Added HTML documentation for metaflac.
    • +
    +
  • +
  • + FLAC format: +
      +
    • (none)
    • +
    +
  • +
  • + Ogg FLAC format: +
      +
    • (none)
    • +
    +
  • +
  • + flac: +
      +
    • New option --input-size to manually specify the input size when encoding raw samples from stdin.
    • +
    +
  • +
  • + metaflac: +
      +
    • (none)
    • +
    +
  • +
  • + plugins: +
      +
    • Added support for HTTP streaming in XMMS plugin. NOTE: there is a bug in the XMMS mpg123 plugin that hijacks FLAC streams; to fix it you will need to add the '.flac' extension to the list of exceptions in Input/mpg123/mpg123.c:is_our_file() in the XMMS sources and recompile.
    • +
    +
  • +
  • + build system: +
      +
    • (none)
    • +
    +
  • +
  • + libraries: +
      +
    • libFLAC: Sped up Rice block decoding in the bitbuffer, resulting in decoding speed gains of a few percent.
    • +
    • libFLAC: Sped up encoding when not using LPC (i.e. max_lpc_order == 0).
    • +
    • libFLAC: Trailing NUL characters maintained on Vorbis comment entries so they can be treated like C strings.
    • +
    • libFLAC: More FLAC tag (i.e. Vorbis comment) validation.
    • +
    • libFLAC: Fixed a bug in the logic that determines the frame or sample number in a frame header; the bug could cause sync errors with some ID3v1-tagged FLAC files.
    • +
    • libFLAC, libOggFLAC: Can now be compiled to use only integer instructions, including encoding. The decoder is almost completely integer anyway but there were a couple places that needed a fixed-point replacement. There is no fixed-point version of LPC analysis yet, so if libFLAC is compiled integer-only, the encoder will behave as if the max LPC order is 0 (i.e. used fixed predictors only). LPC decoding is supported in all cases as it always was integer-only.
    • +
    +
  • +
  • + Interface changes: +
      +
    • + libFLAC: +
        +
      • Changed: Metadata object interface now maintains a trailing NUL on Vorbis comment entries for convenience.
      • +
      • Changed: Metadata object interface now validates all Vorbis comment entries on input and returns false if an entry does not conform to the Vorbis comment spec.
      • +
      • Added FLAC__format_vorbiscomment_entry_name_is_legal()
      • +
      • Added FLAC__format_vorbiscomment_entry_value_is_legal()
      • +
      • Added FLAC__format_vorbiscomment_entry_is_legal()
      • +
      • Added FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair()
      • +
      • Added FLAC__metadata_object_vorbiscomment_entry_to_name_value_pair()
      • +
      • Changed the signature of FLAC__metadata_object_vorbiscomment_entry_matches(): the first argument is now FLAC__StreamMetadata_VorbisComment_Entry entry (was const FLAC__StreamMetadata_VorbisComment_Entry *entry), i.e. entry is now pass-by-value.
      • +
      +
    • +
    • + libFLAC++: +
        +
      • Changed: Metadata object interface now maintains a trailing NUL on Vorbis comment values for convenience.
      • +
      • Changed: Metadata object interface now validates all Vorbis comment entries on input and returns false if an entry does not conform to the Vorbis comment spec.
      • +
      • Changed: All Metadata objects' operator=() methods now return a reference to themselves.
      • +
      • Added methods to FLAC::Metadata::VorbisComment::Entry for setting comment values from null-terminated strings: +
          +
        • Entry(const char *field)
        • +
        • Entry(const char *field_name, const char *field_value)
        • +
        • bool set_field(const char *field)
        • +
        • bool set_field_value(const char *field_value)
        • +
        +
      • +
      • Changed the signature of FLAC::Metadata::VorbisComment::get_vendor_string() and FLAC::Metadata::VorbisComment::set_vendor_string() to use a UTF-8, NUL-terminated string const FLAC__byte * for the vendor string instead of FLAC::Metadata::VorbisComment::Entry.
      • +
      • Added FLAC::Metadata::*::assign() to all Metadata objects.
      • +
      • Added bool FLAC::Metadata::get_tags(const char *filename, VorbisComment &tags)
      • +
      +
    • +
    • + libOggFLAC: +
        +
      • (none)
      • +
      +
    • +
    • + libOggFLAC++: +
        +
      • (none)
      • +
      +
    • +
    +
  • +
+ +
+ + FLAC 1.1.1 (01-Oct-2004) + +
+ +
    +
  • + General: +
      +
    • Ogg FLAC seeking now works
    • +
    • New optimizations almost double the decoding speed on PowerPC (e.g. Mac G4/G5)
    • +
    • A native OS X release thanks to updated Project Builder and autotools files
    • +
    +
  • +
  • + FLAC format: +
      +
    • Made invalid the metadata block type 127 so that audio frames can always be distinguished from metadata by seeing 0xff as the first byte. (This was also required for the Ogg FLAC mapping.)
    • +
    +
  • +
  • + Ogg FLAC format: +
      +
    • First official FLAC->Ogg bitstream mapping standardized (see new FLAC-to-Ogg mapping specification). See the documentation for the --ogg switch about having to re-encode older Ogg FLAC files.
    • +
    +
  • +
  • + flac: +
      +
    • Print an error when output file already exists instead of automatically overwriting.
    • +
    • New option -f (--force) to force overwriting if the output file already exists.
    • +
    • New option --cue to select a specific section to decode using cuesheet track/index points.
    • +
    • New option --totally-silent to suppress all output.
    • +
    • New (but undocumented) option --apply-replaygain-which-is-not-lossless which applies ReplayGain to the decoded output. See this thread for usage and caveats.
    • +
    • When encoding to Ogg FLAC, use a random serial number (instead of 0 as was done before) when a serial number is not specified.
    • +
    • When encoding multiple Ogg FLAC streams, --serial-number or random serial number sets the first number, which is then incremented for subsequent streams (before, the same serial number was used for all streams).
    • +
    • Decoder no longer exits with an error when writing to stdout and the pipe is broken.
    • +
    • Better explanation of common error messages.
    • +
    • Default extension when writing AIFF files is .aif (before, it was .aiff).
    • +
    • Write more common representation of SANE numbers in AIFF files.
    • +
    • Bug fix: calculating ReplayGain on 48kHz streams.
    • +
    • Bug fix: check for supported block alignments in WAVE files.
    • +
    • Bug fix: "offset" field in AIFF SSND chunk properly handled.
    • +
    • Bug fix: #679166: flac doesn't respect RIFF subchunk padding byte.
    • +
    • Bug fix: #828391: --add-replay-gain segfaults.
    • +
    • Bug fix: #851155: Can't seek to position in flac file.
    • +
    • Bug fix: #851756: flac --skip --until reads entire file.
    • +
    • Bug fix: #877122: problem parsing cuesheet with CATALOG entry.
    • +
    • Bug fix: #896057: parsing ISRC number from cuesheet.
    • +
    +
  • +
  • + metaflac: +
      +
    • Renamed the tag editing options as follows (the ...-vc-... options still work but are deprecated): +
        +
      • --show-vc-vendor becomes --show-vendor-tag
      • +
      • --show-vc-field becomes --show-tag
      • +
      • --remove-vc-all becomes --remove-all-tags
      • +
      • --remove-vc-field becomes --remove-tag
      • +
      • --remove-vc-firstfield becomes --remove-first-tag
      • +
      • --set-vc-field becomes --set-tag
      • +
      • --import-vc-from becomes --import-tags-from
      • +
      • --export-vc-to becomes --export-tags-to
      • +
      +
    • +
    • Better explanation of common error messages.
    • +
    • Bug fix: calculating ReplayGain on 48kHz streams.
    • +
    • Bug fix: incorrect numbers when printing seek points.
    • +
    +
  • +
  • + plugins: +
      +
    • Speed optimization in ReplayGain synthesis.
    • +
    • Speed optimization in XMMS playback.
    • +
    • Support for big-endian architectures in XMMS plugin.
    • +
    • Removed support for ID3 tags.
    • +
    • Bug fix: make hard limiter default to off in XMMS plugin.
    • +
    • Bug fix: stream length calculation bug in XMMS plugin, debian bug #200435; see also.
    • +
    • Bug fix: small memory leak in XMMS plugin.
    • +
    +
  • +
  • + build system: +
      +
    • ordinals.h is now static, not a build-generated file anymore.
    • +
    +
  • +
  • + libraries: +
      +
    • libFLAC: PPC+Altivec optimizations of some decoder routines.
    • +
    • libFLAC: Make stream encoder encode the blocksize and sample rate in the frame header if at all possible (not in STREAMINFO), even if subset encoding was not requested.
    • +
    • libFLAC: Bug fix: fixed seek routine where infinite loop could happen when seeking past end of stream.
    • +
    • libFLAC, libFLAC++: added methods to skip single frames, useful for quickly finding frame boundaries (see interface changes below).
    • +
    • libOggFLAC, libOggFLAC++: New seekable-stream and file encoder and decoder APIs to match native FLAC APIs (see interface changes below).
    • +
    +
  • +
  • + Interface changes: +
      +
    • + libFLAC: +
        +
      • Added FLAC__metadata_get_tags()
      • +
      • Added callback-based versions of metadata editing functions: +
          +
        • FLAC__metadata_chain_read_with_callbacks()
        • +
        • FLAC__metadata_chain_write_with_callbacks()
        • +
        • FLAC__metadata_chain_write_with_callbacks_and_tempfile()
        • +
        • FLAC__metadata_chain_check_if_tempfile_needed()
        • +
        +
      • +
      • Added decoder functions for skipping single frames, also useful for quickly finding frame boundaries: +
          +
        • FLAC__stream_decoder_skip_single_frame()
        • +
        • FLAC__seekable_stream_decoder_skip_single_frame()
        • +
        • FLAC__file_decoder_skip_single_frame()
        • +
        +
      • +
      • Added new required tell callback on seekable stream encoder: +
          +
        • FLAC__SeekableStreamEncoderTellStatus and FLAC__SeekableStreamEncoderTellStatusString[]
        • +
        • FLAC__SeekableStreamEncoderTellCallback
        • +
        • FLAC__seekable_stream_encoder_set_tell_callback()
        • +
        +
      • +
      • Changed FLAC__SeekableStreamEncoderState by adding FLAC__SEEKABLE_STREAM_ENCODER_TELL_ERROR
      • +
      • Changed Tell callback is now required to initialize seekable stream encoder
      • +
      • Deleted erroneous and unimplemented FLAC__file_decoder_process_remaining_frames()
      • +
      +
    • +
    • + libFLAC++: +
        +
      • Added FLAC::Metadata::get_tags()
      • +
      • Added decoder functions for skipping single frames, also useful for quickly finding frame boundaries: +
          +
        • FLAC::Decoder::Stream::skip_single_frame()
        • +
        • FLAC::Decoder::SeekableStream::skip_single_frame()
        • +
        • FLAC::Decoder::File::skip_single_frame()
        • +
        +
      • +
      • Added encoder functions for setting metadata: +
          +
        • FLAC::Encoder::Stream::set_metadata(FLAC::Metadata::Prototype **metadata, unsigned num_blocks)
        • +
        • FLAC::Encoder::SeekableStream::set_metadata(FLAC::Metadata::Prototype **metadata, unsigned num_blocks)
        • +
        • FLAC::Encoder::File::set_metadata(FLAC::Metadata::Prototype **metadata, unsigned num_blocks)
        • +
        +
      • +
      • Added new required tell callback on seekable stream encoder: +
          +
        • pure virtual FLAC::Encoder::SeekableStream::tell_callback()
        • +
        +
      • +
      • Changed Tell callback is now required to initialize seekable stream encoder
      • +
      • Deleted the following methods: +
          +
        • FLAC::Decoder::Stream::State::resolved_as_cstring()
        • +
        • FLAC::Encoder::Stream::State::resolved_as_cstring()
        • +
        +
      • +
      +
    • +
    • + libOggFLAC: +
        +
      • Added OggFLAC__SeekableStreamDecoder interface
      • +
      • Added OggFLAC__FileDecoder interface
      • +
      • Added OggFLAC__SeekableStreamEncoder interface
      • +
      • Added OggFLAC__FileEncoder interface
      • +
      • Added OggFLAC__stream_decoder_get_resolved_state_string()
      • +
      • Added OggFLAC__stream_encoder_get_resolved_state_string()
      • +
      • Added OggFLAC__stream_encoder_set_metadata_callback()
      • +
      • Changed OggFLAC__StreamDecoderState by adding OggFLAC__STREAM_DECODER_END_OF_STREAM
      • +
      +
    • +
    • + libOggFLAC++: +
        +
      • Added OggFLAC::Decoder::SeekableStream interface
      • +
      • Added OggFLAC::Decoder::File interface
      • +
      • Added OggFLAC::Encoder::SeekableStream interface
      • +
      • Added OggFLAC::Encoder::File interface
      • +
      • Added OggFLAC::Decoder::Stream::get_resolved_state_string()
      • +
      • Added OggFLAC::Encoder::Stream::get_resolved_state_string()
      • +
      • Added pure virtual OggFLAC::Encoder::Stream::metadata_callback()
      • +
      +
    • +
    +
  • +
+
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison.html b/3rdparty/libflac/doc/html/comparison.html new file mode 100644 index 0000000..cf390b7 --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison.html @@ -0,0 +1,431 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ Many lossless comparisons look at only compression ratio and speed. FLAC decoding is the fastest among lossless codecs and it has the fastest encoding mode. FLAC's compression is within 3% of even the most complex codecs. Note that the compression ratios of all lossless codecs fall in a quite narrow range; the difference between the very best and very worst is only around 7%, and only 4% for the practical codecs.
+
+ So the evaluation of lossless codecs typically depends mainly on other features, which is what our first table shows; features like how well it is supported in devices and software, licensing, etc. Additionally, as archiving is one of the main applications for a lossless codec, of chief importance is the ability to use and recover data in the future. FLAC stands out as the most widely supported codec, and the only codec that at once is non-proprietary, is unencumbered by patents, has an open-source reference implementation, has a well documented format and API, and has several other independent implementations.
+
+ The rest of the tables show in detail the compression ratios and speed of the codecs in different modes. FLAC's high decoding speed is due to very low complexity and is instrumental to its support by dozens of consumer electronic devices.
+
+ (Note: this comparison leaves out some archaic or impractical codecs; see below for some other comparisons.)
+
+ Reviewed encoders (besides flac of course): +
    +
  • + Apple Lossless - A proprietary codec by Apple. +
  • +
  • + Bonk - An open-source source codec. No player or library support yet. +
  • +
  • + La - A closed source symmetric adaptive codec. Highest compression ratio but extremely slow. +
  • +
  • + Monkey's Audio - A symmetric adaptive codec with good compression. Source is available under a non-OSI license. +
  • +
  • + Ogg Squish - An open source source codec that is no longer maintained. +
  • +
  • + optimFROG - A closed source, Windows/Linux codec, with Winamp and XMMS plugins. Slow but high compression ratios. +
  • +
  • + Shorten - A.J. Robinson's well-known codec; source is available here. +
  • +
  • + Tak - A new and efficient codec, but closed-source and Windows only. +
  • +
  • + WavPack - A fine open-source codec, released under the BSD license. +
  • +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Codec + + Source Available? + + Player Support? + + Hardware Support? + + License Cost + + OS support +
+ flac v1.2.1 + + YES (OSI approved license) + + YES (XMMS, Winamp, AlsaPlayer, Y! Music Engine, MacAmp Lite, dBpowerAMP, Foobar2000, QCD, Apollo, many more) + + YES (Squeezebox, Sonos, PhatBox, Kenwood MusicKeg, iAudio, ReQuest, Olive, Escient, TrekStor, dozens more) + + NONE + + Linux, Windows, Mac OS X, *BSD, Solaris, OS/2, BeOS, Amiga OS, others +
+ WavPack v4.41 + + YES (OSI approved license) + + YES (Winamp, foobar2000, dBpowerAMP, more) + + maybe (some portables via Rockbox firmware replacement) + + NONE + + Linux, Windows, Mac OS X, *BSD, Solaris, others +
+ Shorten v3.2 + + YES (non-OSI license) + + YES (Winamp, XMMS) + + maybe (some portables via Rockbox firmware replacement) + + non-
commercial only +
+ Linux, Windows, Mac OS 9, Mac OS X, *BSD, Solaris, others +
+ Monkey's Audio v3.99 + + YES (non-OSI license) + + YES (Winamp, MediaJukebox, dBpowerAMP, more) + + no + + ? + + Windows, Linux console source +
+ Apple Lossless + + no + + YES (iTunes) + + YES (iPod only) + + unavailable + + Windows, Mac OS X +
+ Ogg Squish 0.98 + + YES (OSI approved license) + + no (?) + + no + + NONE + + Linux, Windows, other UNIX +
+ Bonk 0.5 + + YES (OSI approved license) + + YES (XMMS) + + no + + ? + + Linux, Windows, other UNIX +
+ optimFROG 4.21 + + no + + YES (Winamp, XMMS) + + no + + ? + + Windows, Linux +
+ La 0.3c + + no + + YES (Winamp, XMMS) + + no + + ? + + Windows, Linux +
+ Tak 1.0 + + no + + no + + no + + free for non-commercial use + + Windows +
+
+
+ The machine used for encoding the test files is a PII-333 with 256 megs of RAM, running Windows NT 4.0 SP5. Unfortunately, though flac runs just about everywhere, Windows is the lowest-common-denominator platform for all the encoders. Apple Lossless was tested on a newer machine (P4-2.4GHz Windows 2000); only the overall encoding and decoding times are shown, and the times are scaled to the PII-333 by multiplying by the ratio of flac times on the PII to P4.
+
+ By default when processing files, flac computes the MD5 sum while encoding and decoding. Since MD5 sums are not typically used in playback, and since most codecs either do not support MD5 sums or do not compute them by default, to make the comparison as accurate as possible MD5 checking was disabled for FLAC decoding. However since it is currently not possible to disable MD5 computation for FLAC encoding, the FLAC encoding times here are 4-15% longer than they would be without MD5 checking.
+
+ The audio corpus currently consists entirely of CD music tracks. In the future it may include more kinds of input (like speech, other sample rates/resolutions, etc). There are 14 tracks whose genres range from rock to pop to death metal to classical to chant.
+
+ Here is a summary table of results on the whole corpus, using just the most 'economic' modes (the ones that give the most compression for the least amount of encode/decode time) for each codec. The table is ordered by the average track compression ratio, which is the average of the ratios for each track; this keeps long tracks from having more influence than short ones. Clicking the column header links will take you to complete tables ordered by that column.
+
+ Shown in white, flac in its default mode is right in the middle with respect to compression, relatively fast on the encoding range, and the fastest decoding. This is about what you would expect; FLAC is designed to put most of the processing on the encoding side, which is only done once, whereas the adaptive codecs take as long to decode as encode. FLAC is more suited in this way for playback on low-power devices, borne out by the many hardware devices which support it.
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Avg.ratio +
Tak 1.01 (normal)11:42.598:12.006:36.473:38.14391.16 MB51.39%
Monkey's Audio 3.99 (normal)13:20.159:56.4014:24.0211:33.71393.17 MB51.97%
optimFROG 4.21 (mode 0 @ 4x)16:36.9812:51.5817:55.5514:58.99394.69 MB52.24%
Tak 1.01 (turbo)7:25.213:51.026:16.823:10.87399.97 MB52.71%
WavPack 4.41 (high)11:48.477:45.589:19.076:05.35399.90 MB52.73%
Monkey's Audio 3.99 (fast)10:24.296:58.4611:32.078:37.81400.57 MB53.11%
WavPack 4.41 (normal)9:48.595:46.917:37.264:30.11405.84 MB53.56%
FLAC 1.2.1 (-5, default)10:07.416:35.685:23.162:22.41406.25 MB53.67%
FLAC 1.2.1 (-3)7:23.773:47.425:31.152:19.07412.42 MB54.57%
WavPack 4.41 (fast)8:52.274:47.746:33.733:28.19415.05 MB54.92%
Apple Lossless (iTunes 4.5)19:53.2719:53.2710:01.8610:01.86414.45 MB54.96%
Bonk 0.551:45.5848:32.1042:02.7639:05.43418.65 MB55.43%
FLAC 1.2.1 (-1)6:24.512:42.935:26.872:17.49431.72 MB56.97%
Shorten 3.2a (-p0 -b256, default)10:01.386:23.406:38.433:30.66433.56 MB57.29%
RIFF WAVE73:44.9473:44.94780.56 MB100.00%
+
+
+ + Here are links to the full summary table (all codecs, all modes) and tables for each individual track. The individual track tables are sorted only by compression ratio since the relative encoding and decoding times are the same as for the whole corpus. +

+ + Complete summary table
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison__chopin_prelude_24.html b/3rdparty/libflac/doc/html/comparison__chopin_prelude_24.html new file mode 100644 index 0000000..39d95f8 --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison__chopin_prelude_24.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Ratio +
La 0.3c5:12.995:05.905:02.304:58.199.84 MB35.82%
Monkey's Audio 3.99 (insane)4:31.194:23.904:41.634:38.159.96 MB36.25%
Monkey's Audio 3.99 (extra high)0:59.340:52.761:00.840:55.8010.16 MB36.99%
Tak 1.01 (extra high max)2:21.932:15.970:16.040:10.9610.18 MB37.07%
Tak 1.01 (extra high)0:54.020:47.210:15.790:10.6110.20 MB37.15%
optimFROG 4.21 (mode 4 @ 1x)11:56.8011:49.4311:58.6711:52.3810.34 MB37.64%
optimFROG 4.21 (mode 3 @ 4x)2:03.121:55.852:06.241:59.9310.35 MB37.68%
optimFROG 4.21 (mode 2 @ 4x)1:07.641:00.031:10.961:04.3810.37 MB37.78%
Monkey's Audio 3.99 (high)0:31.660:25.200:33.370:28.0110.40 MB37.88%
optimFROG 4.21 (mode 1 @ 4x)0:50.930:43.240:54.650:47.5510.41 MB37.90%
Monkey's Audio 3.99 (normal)0:27.250:20.660:29.580:23.6210.52 MB38.32%
optimFROG 4.21 (mode 0 @ 4x)0:34.130:26.240:37.360:30.8110.53 MB38.33%
Tak 1.01 (normal)0:24.270:17.590:13.770:07.5910.54 MB38.37%
Tak 1.01 (turbo)0:14.480:07.790:11.540:05.8910.64 MB38.74%
WavPack 4.41 (extra high -x)0:59.090:51.190:21.450:15.5610.66 MB38.83%
WavPack 4.41 (high)0:23.700:16.060:18.580:12.1910.83 MB39.45%
Monkey's Audio 3.99 (fast)0:21.210:14.610:23.150:17.5010.94 MB39.82%
WavPack 4.41 (normal -x)0:28.330:20.540:14.770:08.8810.94 MB39.84%
WavPack 4.41 (normal)0:19.710:11.860:14.610:08.7110.99 MB40.01%
FLAC 1.2.1 (-8)0:52.850:46.140:10.990:04.5411.05 MB40.25%
WavPack 4.41 (fast -x)0:23.340:15.660:12.540:06.6511.14 MB40.55%
FLAC 1.2.1 (-5, default)0:20.100:13.480:10.410:04.3711.19 MB40.73%
FLAC 1.2.1 (-3)0:14.730:08.010:09.950:04.1111.26 MB40.99%
WavPack 4.41 (fast)0:17.610:09.900:12.730:06.7111.30 MB41.15%
Apple Lossless (iTunes 4.5)????11.51 MB41.91%
FLAC 1.2.1 (-1)0:12.290:05.320:10.140:04.4111.84 MB43.11%
Shorten 3.2a (-p0 -b256, default)0:19.930:12.700:13.270:06.5212.05 MB43.86%
Bonk 0.51:45.751:39.191:24.871:18.9112.86 MB46.84%
Shorten 3.2a (-p8 -b2048)0:25.060:17.520:14.190:07.9214.40 MB52.42%
RIFF WAVE0:55.770:55.7727.46 MB100.00%
+
+
+ + Complete summary table
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison__dream_theater_600.html b/3rdparty/libflac/doc/html/comparison__dream_theater_600.html new file mode 100644 index 0000000..b7a7298 --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison__dream_theater_600.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Ratio +
La 0.3c11:33.0911:19.0611:12.0311:00.2242.72 MB73.06%
Monkey's Audio 3.99 (insane)9:54.949:41.0810:23.8410:11.9242.99 MB73.52%
Monkey's Audio 3.99 (extra high)2:13.371:56.552:17.032:01.5443.06 MB73.64%
Monkey's Audio 3.99 (high)1:14.010:57.541:17.441:01.8943.21 MB73.91%
optimFROG 4.21 (mode 2 @ 4x)2:29.222:10.342:36.592:21.4243.24 MB73.95%
optimFROG 4.21 (mode 3 @ 4x)4:28.014:09.994:33.404:18.9643.26 MB73.98%
optimFROG 4.21 (mode 4 @ 1x)25:32.6725:17.3325:37.3325:22.0743.26 MB73.98%
optimFROG 4.21 (mode 1 @ 4x)1:54.861:35.382:02.711:45.7543.26 MB73.98%
Monkey's Audio 3.99 (normal)1:04.050:47.221:07.560:52.1343.30 MB74.05%
Tak 1.01 (extra high max)5:17.865:02.220:33.300:17.3843.40 MB74.23%
optimFROG 4.21 (mode 0 @ 4x)1:18.810:59.921:25.631:09.7043.42 MB74.26%
Tak 1.01 (extra high)1:55.031:37.680:33.950:17.3143.45 MB74.31%
Tak 1.01 (normal)0:55.220:38.010:31.570:15.7943.51 MB74.42%
WavPack 4.41 (extra high -x)2:07.331:47.950:54.180:34.9243.55 MB74.49%
WavPack 4.41 (high)0:55.990:35.380:45.020:27.4543.67 MB74.69%
Tak 1.01 (turbo)0:37.120:19.030:30.360:13.6543.80 MB74.91%
Monkey's Audio 3.99 (fast)0:50.450:33.450:55.140:39.0343.86 MB75.01%
WavPack 4.41 (normal -x)1:07.850:48.390:37.250:20.3243.91 MB75.10%
WavPack 4.41 (normal)0:46.860:27.060:37.570:20.3144.01 MB75.26%
FLAC 1.2.1 (-8)2:08.571:51.560:26.910:11.0344.11 MB75.44%
FLAC 1.2.1 (-5, default)0:48.660:31.460:26.540:10.6344.17 MB75.54%
Bonk 0.54:12.593:56.453:26.613:11.0744.35 MB75.85%
FLAC 1.2.1 (-3)0:36.620:19.230:27.010:09.7544.58 MB76.25%
WavPack 4.41 (fast -x)0:57.500:37.910:32.460:15.7244.70 MB76.45%
WavPack 4.41 (fast)0:42.950:22.860:32.450:15.6044.71 MB76.46%
Apple Lossless (iTunes 4.5)????44.74 MB76.53%
Shorten 3.2a (-p8 -b2048)1:00.050:42.060:37.310:20.8744.75 MB76.54%
FLAC 1.2.1 (-1)0:32.130:14.160:27.550:10.7146.60 MB79.70%
Shorten 3.2a (-p0 -b256, default)0:49.940:31.660:32.610:15.5146.68 MB79.84%
RIFF WAVE4:02.174:02.1758.47 MB100.00%
+
+
+ + Complete summary table
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison__eddie_warner_titus.html b/3rdparty/libflac/doc/html/comparison__eddie_warner_titus.html new file mode 100644 index 0000000..c5b56f9 --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison__eddie_warner_titus.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Ratio +
Tak 1.01 (extra high max)2:33.662:26.560:13.830:08.0613.56 MB48.65%
Tak 1.01 (extra high)0:54.330:46.940:14.630:08.7313.58 MB48.71%
Tak 1.01 (normal)0:25.210:17.910:13.810:07.8313.64 MB48.94%
WavPack 4.41 (extra high -x)0:59.690:50.920:23.370:16.6414.16 MB50.82%
WavPack 4.41 (high)0:30.950:21.880:19.700:12.9414.18 MB50.89%
WavPack 4.41 (normal -x)0:31.630:22.960:16.370:10.0714.41 MB51.72%
Tak 1.01 (turbo)0:16.490:09.190:13.150:06.8714.52 MB52.10%
WavPack 4.41 (normal)0:23.610:14.900:17.130:09.5314.56 MB52.23%
FLAC 1.2.1 (-8)0:57.420:49.990:11.880:05.9114.77 MB52.98%
La 0.3c5:22.085:14.865:11.455:06.8814.76 MB52.98%
FLAC 1.2.1 (-5, default)0:22.060:14.610:12.780:05.2814.83 MB53.23%
optimFROG 4.21 (mode 2 @ 4x)1:09.571:01.361:13.871:07.0915.01 MB53.85%
optimFROG 4.21 (mode 1 @ 4x)0:53.690:45.310:55.970:49.6215.01 MB53.85%
optimFROG 4.21 (mode 3 @ 4x)2:05.241:57.362:07.642:01.9215.01 MB53.87%
WavPack 4.41 (fast -x)0:26.810:17.000:14.210:07.8215.01 MB53.87%
optimFROG 4.21 (mode 4 @ 1x)12:01.6911:54.2812:03.3611:57.0615.02 MB53.90%
FLAC 1.2.1 (-3)0:16.250:08.590:12.770:04.9515.08 MB54.12%
optimFROG 4.21 (mode 0 @ 4x)0:36.480:28.050:38.760:32.4615.13 MB54.29%
Monkey's Audio 3.99 (extra high)1:02.130:54.551:03.540:57.5615.15 MB54.36%
WavPack 4.41 (fast)0:20.990:12.280:14.010:07.9415.17 MB54.45%
Monkey's Audio 3.99 (insane)4:39.174:32.264:51.864:47.4715.18 MB54.47%
Monkey's Audio 3.99 (high)0:33.690:26.380:35.470:29.4615.26 MB54.74%
Monkey's Audio 3.99 (normal)0:29.040:21.710:30.210:24.3615.27 MB54.79%
Monkey's Audio 3.99 (fast)0:23.070:15.050:24.990:18.8115.55 MB55.79%
Shorten 3.2a (-p0 -b256, default)0:21.190:13.680:13.500:07.2815.78 MB56.62%
Shorten 3.2a (-p8 -b2048)0:26.260:18.620:15.590:08.7816.21 MB58.18%
FLAC 1.2.1 (-1)0:14.000:06.170:11.790:05.2216.35 MB58.67%
Apple Lossless (iTunes 4.5)????16.36 MB58.71%
Bonk 0.51:54.691:47.691:35.031:28.4716.73 MB60.03%
RIFF WAVE1:16.861:16.8627.87 MB100.00%
+
+
+ + Complete summary table
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison__fanfare_de_l_eventail_de_jeanne.html b/3rdparty/libflac/doc/html/comparison__fanfare_de_l_eventail_de_jeanne.html new file mode 100644 index 0000000..e47a282 --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison__fanfare_de_l_eventail_de_jeanne.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Ratio +
La 0.3c3:53.853:48.603:46.063:43.426.46 MB31.04%
Tak 1.01 (extra high max)1:40.841:36.140:10.020:06.646.57 MB31.54%
Tak 1.01 (extra high)0:36.930:31.820:10.220:06.786.58 MB31.62%
Monkey's Audio 3.99 (extra high)0:42.130:37.160:43.260:39.926.75 MB32.43%
Monkey's Audio 3.99 (insane)3:09.723:04.723:16.683:14.216.78 MB32.56%
optimFROG 4.21 (mode 4 @ 1x)8:22.498:17.198:22.998:19.166.82 MB32.74%
optimFROG 4.21 (mode 3 @ 4x)1:27.801:22.511:28.891:25.166.91 MB33.20%
Tak 1.01 (normal)0:17.570:12.280:08.760:05.406.92 MB33.24%
Monkey's Audio 3.99 (high)0:22.580:17.460:23.480:20.176.98 MB33.53%
optimFROG 4.21 (mode 2 @ 4x)0:48.740:43.110:51.290:46.987.01 MB33.69%
optimFROG 4.21 (mode 1 @ 4x)0:37.650:31.910:38.280:34.487.09 MB34.06%
optimFROG 4.21 (mode 0 @ 4x)0:24.980:19.190:26.320:22.477.21 MB34.62%
Monkey's Audio 3.99 (normal)0:19.630:14.440:20.770:17.117.28 MB34.95%
Tak 1.01 (turbo)0:10.810:05.750:08.430:04.477.31 MB35.11%
WavPack 4.41 (extra high -x)0:40.930:35.090:15.000:11.297.38 MB35.44%
FLAC 1.2.1 (-8)0:38.780:33.610:07.050:03.527.46 MB35.82%
WavPack 4.41 (high)0:17.840:11.830:13.070:09.227.49 MB35.98%
Monkey's Audio 3.99 (fast)0:15.210:10.130:16.270:12.837.50 MB36.01%
FLAC 1.2.1 (-5, default)0:14.840:09.520:07.390:03.367.51 MB36.08%
WavPack 4.41 (normal -x)0:20.880:14.860:10.540:06.587.52 MB36.12%
WavPack 4.41 (normal)0:14.750:08.790:10.880:06.667.58 MB36.41%
FLAC 1.2.1 (-3)0:10.590:05.380:06.780:02.967.60 MB36.48%
WavPack 4.41 (fast -x)0:17.360:11.370:09.090:05.067.69 MB36.92%
WavPack 4.41 (fast)0:13.190:07.260:08.680:05.107.81 MB37.52%
Apple Lossless (iTunes 4.5)????7.82 MB37.57%
Bonk 0.51:16.801:12.071:00.910:57.067.83 MB37.62%
FLAC 1.2.1 (-1)0:09.190:03.960:07.850:03.488.11 MB38.95%
Shorten 3.2a (-p0 -b256, default)0:14.290:09.130:08.730:04.818.19 MB39.32%
Shorten 3.2a (-p8 -b2048)0:17.660:12.410:10.010:06.258.29 MB39.83%
RIFF WAVE0:36.640:36.6420.82 MB100.00%
+
+
+ + Complete summary table
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison__gloria_estefan_conga.html b/3rdparty/libflac/doc/html/comparison__gloria_estefan_conga.html new file mode 100644 index 0000000..97cdea5 --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison__gloria_estefan_conga.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Ratio +
La 0.3c8:50.138:38.358:31.048:22.6728.98 MB64.19%
optimFROG 4.21 (mode 4 @ 1x)19:41.5519:29.0019:44.0419:32.9429.43 MB65.17%
Monkey's Audio 3.99 (insane)7:37.657:26.837:59.147:50.7229.48 MB65.28%
Monkey's Audio 3.99 (extra high)1:42.801:29.771:45.421:34.2729.49 MB65.30%
optimFROG 4.21 (mode 3 @ 4x)3:26.623:12.393:30.883:19.4929.49 MB65.31%
optimFROG 4.21 (mode 2 @ 4x)1:55.991:40.982:00.341:49.2129.54 MB65.42%
optimFROG 4.21 (mode 1 @ 4x)1:28.641:13.821:32.591:20.9529.58 MB65.50%
Monkey's Audio 3.99 (high)0:55.850:43.160:58.880:47.7629.69 MB65.76%
Tak 1.01 (extra high max)4:14.194:03.060:25.550:14.3229.74 MB65.87%
Tak 1.01 (extra high)1:31.551:18.820:25.920:14.5229.77 MB65.92%
optimFROG 4.21 (mode 0 @ 4x)1:00.950:46.301:05.540:54.1029.78 MB65.95%
Monkey's Audio 3.99 (normal)0:49.040:36.370:51.890:40.8429.83 MB66.05%
Tak 1.01 (normal)0:42.970:29.860:23.540:12.2829.86 MB66.12%
WavPack 4.41 (extra high -x)1:37.601:22.420:39.740:27.4629.92 MB66.27%
WavPack 4.41 (high)0:41.970:26.810:33.680:21.4530.02 MB66.49%
Monkey's Audio 3.99 (fast)0:37.950:25.200:41.850:30.3630.20 MB66.89%
WavPack 4.41 (normal -x)0:52.600:37.670:27.550:15.5830.32 MB67.15%
Tak 1.01 (turbo)0:27.640:13.980:22.580:11.2230.38 MB67.27%
WavPack 4.41 (normal)0:35.400:20.450:28.550:15.4330.44 MB67.42%
Bonk 0.53:09.652:57.692:35.012:23.8430.64 MB67.85%
FLAC 1.2.1 (-8)1:37.621:24.840:23.650:09.1630.66 MB67.90%
FLAC 1.2.1 (-5, default)0:36.820:23.610:20.770:08.7130.72 MB68.03%
WavPack 4.41 (fast)0:31.000:17.170:24.180:12.3730.75 MB68.10%
WavPack 4.41 (fast -x)0:43.650:29.080:23.780:12.1030.75 MB68.10%
Apple Lossless (iTunes 4.5)????30.91 MB68.47%
FLAC 1.2.1 (-3)0:28.350:14.220:22.350:08.5231.49 MB69.74%
Shorten 3.2a (-p8 -b2048)0:45.470:31.570:27.670:15.9431.76 MB70.34%
FLAC 1.2.1 (-1)0:24.040:10.050:19.460:08.0031.95 MB70.76%
Shorten 3.2a (-p0 -b256, default)0:37.090:23.160:23.320:11.5032.47 MB71.91%
RIFF WAVE2:44.302:44.3045.15 MB100.00%
+
+
+ + Complete summary table
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison__hand_in_my_pocket.html b/3rdparty/libflac/doc/html/comparison__hand_in_my_pocket.html new file mode 100644 index 0000000..6eddd9c --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison__hand_in_my_pocket.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Ratio +
La 0.3c7:32.827:22.327:15.807:09.3220.77 MB53.12%
Monkey's Audio 3.99 (insane)6:32.306:21.616:49.126:42.8221.22 MB54.27%
optimFROG 4.21 (mode 4 @ 1x)16:52.1716:41.4816:54.9316:45.2521.24 MB54.33%
optimFROG 4.21 (mode 3 @ 4x)2:55.932:44.652:59.072:50.8221.25 MB54.36%
optimFROG 4.21 (mode 2 @ 4x)1:38.571:26.581:41.851:32.9321.33 MB54.55%
optimFROG 4.21 (mode 1 @ 4x)1:14.991:02.511:17.801:09.1021.36 MB54.64%
Monkey's Audio 3.99 (extra high)1:26.611:16.071:30.361:21.4421.40 MB54.75%
Tak 1.01 (extra high max)3:26.433:17.090:23.190:13.4221.49 MB54.96%
Tak 1.01 (extra high)1:15.741:05.080:23.060:14.1621.52 MB55.04%
Monkey's Audio 3.99 (high)0:46.910:36.450:49.980:41.1621.66 MB55.40%
Tak 1.01 (normal)0:35.390:24.390:20.800:12.1421.73 MB55.57%
Monkey's Audio 3.99 (normal)0:41.220:30.240:42.700:34.0521.76 MB55.65%
optimFROG 4.21 (mode 0 @ 4x)0:53.020:40.300:55.090:45.6621.89 MB55.98%
WavPack 4.41 (extra high -x)1:22.521:09.690:33.630:23.7622.04 MB56.37%
Monkey's Audio 3.99 (fast)0:31.610:20.950:34.930:26.0922.13 MB56.60%
WavPack 4.41 (high)0:35.980:22.810:29.070:18.3322.34 MB57.14%
WavPack 4.41 (normal -x)0:45.150:31.710:22.650:13.1122.96 MB58.74%
Tak 1.01 (turbo)0:23.450:11.800:18.300:09.0923.06 MB58.97%
FLAC 1.2.1 (-8)1:22.331:11.760:17.640:08.4823.19 MB59.31%
WavPack 4.41 (normal)0:30.380:17.380:23.350:14.2223.26 MB59.50%
FLAC 1.2.1 (-5, default)0:31.320:20.100:16.760:07.2223.30 MB59.61%
Bonk 0.52:39.842:29.572:09.432:00.0523.35 MB59.72%
Apple Lossless (iTunes 4.5)????23.64 MB60.47%
WavPack 4.41 (fast -x)0:37.370:24.820:19.970:10.5423.81 MB60.91%
WavPack 4.41 (fast)0:28.080:14.530:20.820:11.0223.93 MB61.21%
FLAC 1.2.1 (-3)0:23.760:11.000:16.250:06.8224.04 MB61.48%
Shorten 3.2a (-p8 -b2048)0:38.450:26.710:23.330:13.6724.72 MB63.23%
FLAC 1.2.1 (-1)0:20.600:08.530:16.830:07.1724.78 MB63.40%
Shorten 3.2a (-p0 -b256, default)0:31.140:19.240:21.190:11.2825.34 MB64.81%
RIFF WAVE1:57.731:57.7339.09 MB100.00%
+
+
+ + Complete summary table
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison__l_sub_raga_sivapriya.html b/3rdparty/libflac/doc/html/comparison__l_sub_raga_sivapriya.html new file mode 100644 index 0000000..ce748f1 --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison__l_sub_raga_sivapriya.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Ratio +
La 0.3c40:54.7839:59.0439:22.2038:52.3687.51 MB40.97%
Monkey's Audio 3.99 (insane)35:16.9934:30.8636:59.6336:29.4889.18 MB41.75%
Tak 1.01 (extra high max)17:43.5816:55.922:14.141:27.3990.84 MB42.53%
Tak 1.01 (extra high)6:59.206:04.852:14.621:29.2990.88 MB42.55%
Monkey's Audio 3.99 (extra high)7:46.456:53.718:04.357:21.4490.95 MB42.58%
optimFROG 4.21 (mode 4 @ 1x)93:03.5592:09.3893:14.0992:30.1292.05 MB43.10%
optimFROG 4.21 (mode 3 @ 4x)15:57.6915:02.4316:17.4515:35.3892.09 MB43.11%
optimFROG 4.21 (mode 2 @ 4x)8:48.937:50.699:07.338:24.9992.48 MB43.30%
optimFROG 4.21 (mode 1 @ 4x)6:37.615:38.427:01.966:16.4192.76 MB43.43%
Monkey's Audio 3.99 (high)4:10.523:16.404:28.743:43.2993.15 MB43.61%
Monkey's Audio 3.99 (normal)3:36.142:42.033:55.633:10.3194.32 MB44.16%
Tak 1.01 (normal)3:09.812:14.131:47.440:58.0894.45 MB44.22%
optimFROG 4.21 (mode 0 @ 4x)4:29.253:31.364:51.564:05.6394.74 MB44.36%
Monkey's Audio 3.99 (fast)2:47.971:53.553:05.922:19.0495.34 MB44.64%
WavPack 4.41 (extra high -x)7:25.786:23.832:58.682:08.0696.11 MB45.00%
Tak 1.01 (turbo)1:59.331:02.271:43.560:51.7296.13 MB45.01%
FLAC 1.2.1 (-8)7:18.016:23.651:28.930:40.0096.68 MB45.26%
WavPack 4.41 (high)3:10.072:05.532:30.661:39.3596.80 MB45.32%
FLAC 1.2.1 (-5, default)2:43.851:47.041:26.330:39.0897.00 MB45.41%
WavPack 4.41 (normal -x)3:48.912:43.721:56.401:09.6897.37 MB45.59%
FLAC 1.2.1 (-3)1:58.631:00.671:28.480:39.7797.92 MB45.85%
WavPack 4.41 (normal)2:38.391:32.772:03.211:13.2298.03 MB45.90%
Apple Lossless (iTunes 4.5)????98.57 MB46.15%
WavPack 4.41 (fast -x)3:11.512:05.471:46.710:54.2098.79 MB46.25%
Bonk 0.513:47.9412:57.2511:07.4210:21.5298.94 MB46.33%
WavPack 4.41 (fast)2:21.401:16.781:43.540:54.40100.00 MB46.82%
Shorten 3.2a (-p8 -b2048)3:14.032:16.631:58.491:08.47102.60 MB48.04%
Shorten 3.2a (-p0 -b256, default)2:41.541:43.741:48.330:56.56102.84 MB48.15%
FLAC 1.2.1 (-1)1:44.160:43.351:30.390:36.69103.43 MB48.43%
RIFF WAVE8:16.118:16.11213.56 MB100.00%
+
+
+ + Complete summary table
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison__laetatus_sum.html b/3rdparty/libflac/doc/html/comparison__laetatus_sum.html new file mode 100644 index 0000000..92ba263 --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison__laetatus_sum.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Ratio +
La 0.3c4:39.124:33.044:29.324:25.4811.94 MB49.22%
Monkey's Audio 3.99 (insane)4:04.683:58.314:15.314:11.7412.05 MB49.68%
Monkey's Audio 3.99 (extra high)0:54.040:47.410:55.760:50.8112.09 MB49.81%
Tak 1.01 (extra high)0:46.420:39.870:14.100:08.7312.15 MB50.09%
Tak 1.01 (extra high max)1:55.691:49.710:13.790:08.6612.15 MB50.09%
optimFROG 4.21 (mode 4 @ 1x)10:35.0910:28.5610:36.3910:31.0712.17 MB50.15%
optimFROG 4.21 (mode 3 @ 4x)1:49.811:42.941:51.851:46.8912.19 MB50.23%
Monkey's Audio 3.99 (high)0:28.990:22.510:30.720:25.7112.23 MB50.42%
Tak 1.01 (normal)0:21.770:15.120:11.850:06.6612.25 MB50.47%
optimFROG 4.21 (mode 2 @ 4x)1:00.930:53.701:05.580:59.0612.27 MB50.58%
Monkey's Audio 3.99 (normal)0:25.040:18.610:26.380:21.5712.42 MB51.18%
optimFROG 4.21 (mode 1 @ 4x)0:45.860:38.630:48.380:43.2112.43 MB51.21%
Tak 1.01 (turbo)0:13.730:07.030:11.470:06.4012.54 MB51.67%
optimFROG 4.21 (mode 0 @ 4x)0:31.360:23.990:33.700:28.3612.63 MB52.07%
WavPack 4.41 (extra high -x)0:51.140:43.720:20.370:14.6112.66 MB52.17%
Bonk 0.51:35.751:29.851:17.291:12.0212.71 MB52.37%
FLAC 1.2.1 (-8)0:50.660:44.240:11.600:06.0412.71 MB52.38%
Monkey's Audio 3.99 (fast)0:19.480:13.100:22.330:16.4112.76 MB52.60%
FLAC 1.2.1 (-5, default)0:19.150:12.460:09.230:04.1312.82 MB52.85%
WavPack 4.41 (high)0:21.590:14.300:17.340:11.6412.87 MB53.02%
FLAC 1.2.1 (-3)0:13.620:07.160:10.110:04.7312.90 MB53.17%
WavPack 4.41 (normal -x)0:26.760:19.190:13.350:08.1512.92 MB53.25%
WavPack 4.41 (normal)0:18.280:10.590:14.270:09.1712.95 MB53.38%
Apple Lossless (iTunes 4.5)????13.04 MB53.77%
WavPack 4.41 (fast -x)0:22.180:14.440:11.600:06.5213.05 MB53.80%
WavPack 4.41 (fast)0:16.890:09.020:12.620:06.9613.31 MB54.85%
Shorten 3.2a (-p0 -b256, default)0:18.240:11.630:11.420:06.1513.32 MB54.89%
FLAC 1.2.1 (-1)0:11.560:04.940:09.740:04.1813.32 MB54.92%
Shorten 3.2a (-p8 -b2048)0:22.490:15.870:13.710:08.3213.42 MB55.31%
RIFF WAVE1:07.701:07.7024.26 MB100.00%
+
+
+ + Complete summary table
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison__mummified_in_barbed_wire.html b/3rdparty/libflac/doc/html/comparison__mummified_in_barbed_wire.html new file mode 100644 index 0000000..67a4e83 --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison__mummified_in_barbed_wire.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Ratio +
La 0.3c6:34.386:24.876:21.266:14.5322.69 MB67.98%
Monkey's Audio 3.99 (insane)5:40.585:30.735:55.615:49.3022.83 MB68.39%
Monkey's Audio 3.99 (extra high)1:16.321:05.831:18.271:09.9222.85 MB68.47%
optimFROG 4.21 (mode 4 @ 1x)14:35.3914:25.9814:37.3814:28.8922.95 MB68.77%
optimFROG 4.21 (mode 3 @ 4x)2:32.722:22.242:35.632:27.7423.01 MB68.94%
Tak 1.01 (extra high max)2:45.872:36.910:19.630:11.1723.04 MB69.04%
Tak 1.01 (extra high)1:03.100:53.220:22.920:11.7823.06 MB69.08%
Monkey's Audio 3.99 (high)0:41.330:31.840:43.870:35.6623.18 MB69.45%
optimFROG 4.21 (mode 2 @ 4x)1:26.091:14.651:29.331:20.8723.21 MB69.54%
Monkey's Audio 3.99 (normal)0:35.680:26.310:39.150:30.7723.24 MB69.63%
Tak 1.01 (normal)0:31.430:21.180:18.740:09.9223.24 MB69.64%
optimFROG 4.21 (mode 1 @ 4x)1:04.820:53.531:08.491:00.1123.31 MB69.84%
WavPack 4.41 (extra high -x)1:11.611:00.900:28.810:19.6623.38 MB70.06%
Tak 1.01 (turbo)0:21.430:10.210:17.250:07.9723.49 MB70.37%
FLAC 1.2.1 (-8)1:12.781:03.110:16.260:07.2323.72 MB71.06%
WavPack 4.41 (high)0:31.880:20.250:26.680:16.6923.83 MB71.41%
WavPack 4.41 (normal -x)0:38.920:27.330:20.460:11.8323.91 MB71.63%
optimFROG 4.21 (mode 0 @ 4x)0:44.750:33.750:48.790:40.1123.95 MB71.76%
FLAC 1.2.1 (-5, default)0:28.410:17.730:16.000:06.3924.01 MB71.94%
Monkey's Audio 3.99 (fast)0:28.670:18.670:32.520:23.9824.14 MB72.34%
WavPack 4.41 (normal)0:26.910:15.010:22.340:13.3524.17 MB72.42%
Bonk 0.52:22.132:13.041:58.241:49.1124.36 MB72.97%
Apple Lossless (iTunes 4.5)????24.37 MB73.01%
WavPack 4.41 (fast -x)0:32.790:21.370:19.240:10.1624.86 MB74.47%
WavPack 4.41 (fast)0:25.340:12.540:18.760:09.3024.86 MB74.48%
FLAC 1.2.1 (-3)0:21.480:10.460:15.500:06.6825.05 MB75.04%
Shorten 3.2a (-p8 -b2048)0:34.780:23.740:22.600:13.5525.12 MB75.26%
FLAC 1.2.1 (-1)0:18.750:07.500:16.250:07.2626.07 MB78.12%
Shorten 3.2a (-p0 -b256, default)0:28.670:17.590:19.190:09.9726.61 MB79.72%
RIFF WAVE2:08.632:08.6333.37 MB100.00%
+
+
+ + Complete summary table
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison__prokofiev_pcon3_3.html b/3rdparty/libflac/doc/html/comparison__prokofiev_pcon3_3.html new file mode 100644 index 0000000..f139406 --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison__prokofiev_pcon3_3.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Ratio +
La 0.3c19:03.4718:38.1618:20.2018:07.7732.65 MB32.43%
Tak 1.01 (extra high max)8:25.738:04.190:59.470:40.0233.30 MB33.06%
Tak 1.01 (extra high)3:11.592:47.241:03.540:44.2133.32 MB33.09%
Monkey's Audio 3.99 (insane)16:09.4315:46.0416:53.9216:41.2533.34 MB33.11%
optimFROG 4.21 (mode 4 @ 1x)43:22.3042:57.3343:26.4943:07.0133.58 MB33.35%
Monkey's Audio 3.99 (extra high)3:33.723:09.653:44.813:26.4633.60 MB33.37%
optimFROG 4.21 (mode 3 @ 4x)7:21.406:59.217:29.737:12.1233.66 MB33.43%
optimFROG 4.21 (mode 2 @ 4x)4:02.673:36.664:10.753:52.1433.73 MB33.50%
optimFROG 4.21 (mode 1 @ 4x)3:00.862:34.683:07.842:49.2533.83 MB33.60%
optimFROG 4.21 (mode 0 @ 4x)1:59.441:34.592:08.441:49.0534.14 MB33.90%
Monkey's Audio 3.99 (high)1:54.151:29.892:06.521:47.7834.16 MB33.92%
Tak 1.01 (normal)1:28.481:02.760:50.740:30.0634.41 MB34.17%
Monkey's Audio 3.99 (normal)1:38.221:13.731:48.431:29.3134.58 MB34.34%
WavPack 4.41 (extra high -x)3:30.153:00.661:24.081:03.8434.82 MB34.58%
Tak 1.01 (turbo)0:53.570:28.130:48.050:27.9534.98 MB34.74%
WavPack 4.41 (high)1:29.500:58.581:09.840:48.8335.24 MB34.99%
WavPack 4.41 (normal -x)1:47.071:17.260:56.040:36.1835.34 MB35.09%
Monkey's Audio 3.99 (fast)1:16.080:51.681:25.821:06.7535.53 MB35.28%
WavPack 4.41 (normal)1:13.130:43.990:55.600:33.2735.69 MB35.44%
FLAC 1.2.1 (-8)3:13.352:49.180:39.620:20.1735.99 MB35.74%
FLAC 1.2.1 (-5, default)1:14.370:49.350:38.860:18.3936.28 MB36.03%
WavPack 4.41 (fast -x)1:27.940:57.860:46.530:25.7636.37 MB36.12%
FLAC 1.2.1 (-3)0:53.070:26.950:41.380:19.1636.65 MB36.40%
WavPack 4.41 (fast)1:07.120:36.210:48.290:28.2537.18 MB36.92%
Apple Lossless (iTunes 4.5)????37.32 MB37.06%
FLAC 1.2.1 (-1)0:46.220:19.530:38.540:17.8639.23 MB38.96%
Shorten 3.2a (-p0 -b256, default)1:13.080:46.860:49.720:28.8539.49 MB39.21%
Bonk 0.56:18.905:55.405:07.274:46.8440.31 MB40.03%
Shorten 3.2a (-p8 -b2048)1:27.831:01.220:57.700:34.3645.34 MB45.02%
RIFF WAVE3:05.103:05.10100.68 MB100.00%
+
+
+ + Complete summary table
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison__ravel_sq4_4.html b/3rdparty/libflac/doc/html/comparison__ravel_sq4_4.html new file mode 100644 index 0000000..a0fce9e --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison__ravel_sq4_4.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Ratio +
La 0.3c10:40.8810:27.2210:17.0710:09.6419.94 MB35.50%
Monkey's Audio 3.99 (insane)9:08.888:56.229:37.009:29.3520.17 MB35.90%
Monkey's Audio 3.99 (extra high)2:00.531:47.082:05.061:54.6420.29 MB36.11%
Tak 1.01 (extra high max)4:39.264:27.170:33.470:22.4220.33 MB36.19%
Tak 1.01 (extra high)1:48.731:34.920:35.500:24.1920.35 MB36.22%
optimFROG 4.21 (mode 4 @ 1x)24:26.7424:12.4024:28.8024:17.9820.62 MB36.71%
Monkey's Audio 3.99 (high)1:04.750:50.791:09.210:58.4920.68 MB36.81%
optimFROG 4.21 (mode 3 @ 4x)4:10.493:56.434:13.884:03.9020.72 MB36.88%
optimFROG 4.21 (mode 2 @ 4x)2:17.172:02.142:21.022:10.7820.83 MB37.07%
optimFROG 4.21 (mode 1 @ 4x)1:42.601:27.341:47.211:36.5420.93 MB37.25%
Tak 1.01 (normal)0:48.660:34.630:26.320:15.2020.95 MB37.28%
Monkey's Audio 3.99 (normal)0:55.630:41.681:00.360:49.6621.05 MB37.47%
optimFROG 4.21 (mode 0 @ 4x)1:08.870:53.421:13.721:02.9721.23 MB37.79%
WavPack 4.41 (extra high -x)1:56.001:41.600:44.820:33.1921.42 MB38.13%
Tak 1.01 (turbo)0:30.010:15.730:24.320:12.8921.49 MB38.25%
Monkey's Audio 3.99 (fast)0:43.140:29.290:48.440:37.3921.52 MB38.30%
WavPack 4.41 (high)0:49.040:32.840:37.710:25.3121.59 MB38.42%
WavPack 4.41 (normal -x)0:59.890:43.470:29.430:18.5821.72 MB38.66%
WavPack 4.41 (normal)0:40.760:24.680:30.440:19.0621.75 MB38.70%
FLAC 1.2.1 (-8)1:51.951:38.330:21.080:10.1421.78 MB38.77%
FLAC 1.2.1 (-5, default)0:41.470:27.540:21.210:09.9621.90 MB38.97%
WavPack 4.41 (fast -x)0:49.790:33.440:26.250:14.4322.02 MB39.20%
WavPack 4.41 (fast)0:36.560:20.280:25.550:14.0822.23 MB39.57%
FLAC 1.2.1 (-3)0:29.860:15.760:20.280:09.1022.42 MB39.91%
Apple Lossless (iTunes 4.5)????22.52 MB40.08%
Bonk 0.53:32.503:19.492:50.962:39.4223.18 MB41.25%
FLAC 1.2.1 (-1)0:25.230:10.810:21.380:09.8723.33 MB41.52%
Shorten 3.2a (-p0 -b256, default)0:41.160:26.710:26.700:15.2723.71 MB42.21%
Shorten 3.2a (-p8 -b2048)0:49.310:34.870:30.800:17.9625.59 MB45.54%
RIFF WAVE1:53.061:53.0656.18 MB100.00%
+
+
+ + Complete summary table
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison__scarlatti_k42.html b/3rdparty/libflac/doc/html/comparison__scarlatti_k42.html new file mode 100644 index 0000000..e3f3db2 --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison__scarlatti_k42.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Ratio +
La 0.3c3:07.283:03.363:00.592:58.146.62 MB40.36%
Monkey's Audio 3.99 (insane)2:43.572:39.842:50.502:48.436.67 MB40.68%
Monkey's Audio 3.99 (extra high)0:35.820:31.800:36.660:33.836.74 MB41.09%
Tak 1.01 (extra high max)1:23.811:20.140:09.050:06.066.78 MB41.37%
Tak 1.01 (extra high)0:32.020:27.950:08.950:05.906.80 MB41.48%
optimFROG 4.21 (mode 4 @ 1x)7:08.277:04.287:09.327:06.006.87 MB41.90%
optimFROG 4.21 (mode 3 @ 4x)1:13.311:09.331:15.161:12.056.88 MB41.96%
Monkey's Audio 3.99 (high)0:19.090:15.100:20.200:17.456.91 MB42.13%
optimFROG 4.21 (mode 2 @ 4x)0:40.290:36.010:41.990:38.606.91 MB42.16%
Tak 1.01 (normal)0:14.620:10.550:07.620:04.676.97 MB42.54%
optimFROG 4.21 (mode 1 @ 4x)0:30.050:25.840:33.760:29.486.98 MB42.55%
Monkey's Audio 3.99 (normal)0:16.380:12.400:17.450:14.326.99 MB42.61%
optimFROG 4.21 (mode 0 @ 4x)0:20.350:16.000:22.490:19.087.07 MB43.10%
Tak 1.01 (turbo)0:08.800:04.680:06.870:03.777.11 MB43.34%
WavPack 4.41 (extra high -x)0:34.070:29.660:13.060:09.607.13 MB43.47%
Monkey's Audio 3.99 (fast)0:12.730:08.680:13.840:10.867.16 MB43.69%
FLAC 1.2.1 (-8)0:33.100:29.010:07.010:03.367.23 MB44.10%
WavPack 4.41 (high)0:13.920:09.610:11.170:07.237.24 MB44.16%
FLAC 1.2.1 (-5, default)0:12.170:08.110:05.970:02.927.26 MB44.28%
WavPack 4.41 (normal -x)0:17.340:12.760:08.720:05.347.27 MB44.34%
FLAC 1.2.1 (-3)0:08.630:04.560:06.140:02.587.29 MB44.46%
WavPack 4.41 (normal)0:11.550:07.090:08.770:05.467.32 MB44.67%
WavPack 4.41 (fast -x)0:14.160:09.770:07.360:04.337.35 MB44.81%
Apple Lossless (iTunes 4.5)????7.44 MB45.41%
Bonk 0.51:02.990:59.100:50.900:47.487.46 MB45.48%
Shorten 3.2a (-p0 -b256, default)0:11.690:07.620:07.490:04.447.48 MB45.64%
FLAC 1.2.1 (-1)0:07.230:03.140:05.870:02.587.51 MB45.82%
WavPack 4.41 (fast)0:10.410:05.970:07.980:04.347.73 MB47.14%
Shorten 3.2a (-p8 -b2048)0:14.340:10.170:08.610:05.228.20 MB50.04%
RIFF WAVE0:37.510:37.5116.39 MB100.00%
+
+
+ + Complete summary table
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison__tool_forty_six_and_2.html b/3rdparty/libflac/doc/html/comparison__tool_forty_six_and_2.html new file mode 100644 index 0000000..3446e59 --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison__tool_forty_six_and_2.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Ratio +
La 0.3c12:28.2912:12.9312:02.2811:51.3937.42 MB58.24%
optimFROG 4.21 (mode 4 @ 1x)27:57.0627:40.8428:01.2927:46.1637.96 MB59.07%
optimFROG 4.21 (mode 3 @ 4x)4:50.124:32.534:57.454:43.2237.99 MB59.13%
Monkey's Audio 3.99 (insane)10:46.5510:32.5811:19.5411:08.0538.00 MB59.14%
Monkey's Audio 3.99 (extra high)2:22.002:05.732:29.802:14.7538.03 MB59.19%
optimFROG 4.21 (mode 2 @ 4x)2:40.992:22.302:49.182:34.0038.08 MB59.27%
optimFROG 4.21 (mode 1 @ 4x)2:01.341:42.412:11.181:55.1938.15 MB59.37%
Monkey's Audio 3.99 (high)1:17.691:00.221:22.991:07.5938.21 MB59.47%
Tak 1.01 (extra high max)5:45.295:29.360:36.160:20.9538.24 MB59.51%
Tak 1.01 (extra high)2:03.191:45.490:36.250:20.6738.28 MB59.58%
Monkey's Audio 3.99 (normal)1:06.860:49.481:13.250:58.0038.38 MB59.73%
Tak 1.01 (normal)0:58.620:40.000:33.280:17.7538.45 MB59.84%
optimFROG 4.21 (mode 0 @ 4x)1:23.431:04.391:31.901:15.6338.68 MB60.20%
WavPack 4.41 (extra high -x)2:15.261:55.850:55.540:38.1838.80 MB60.38%
WavPack 4.41 (high)0:58.090:38.420:46.360:29.4339.01 MB60.72%
Monkey's Audio 3.99 (fast)0:52.400:34.800:57.820:42.7439.09 MB60.84%
WavPack 4.41 (normal -x)1:10.800:51.660:38.470:22.1039.50 MB61.48%
Tak 1.01 (turbo)0:37.400:19.460:33.330:15.8539.88 MB62.07%
WavPack 4.41 (normal)0:48.400:28.640:38.310:22.6839.92 MB62.12%
FLAC 1.2.1 (-8)2:16.291:58.230:31.690:14.5640.04 MB62.32%
FLAC 1.2.1 (-5, default)0:50.890:33.030:28.200:12.6040.19 MB62.55%
WavPack 4.41 (fast)0:43.920:23.940:35.660:17.2240.47 MB62.98%
WavPack 4.41 (fast -x)1:00.670:40.170:35.000:17.8640.47 MB62.98%
Apple Lossless (iTunes 4.5)????40.75 MB63.42%
FLAC 1.2.1 (-3)0:37.480:19.570:30.660:11.1840.84 MB63.56%
Bonk 0.54:25.624:08.653:37.563:21.5940.98 MB63.78%
FLAC 1.2.1 (-1)0:32.210:13.870:27.890:11.4242.66 MB66.39%
Shorten 3.2a (-p8 -b2048)1:02.290:43.530:41.480:23.5143.06 MB67.01%
Shorten 3.2a (-p0 -b256, default)0:51.800:33.150:34.310:17.6443.18 MB67.21%
RIFF WAVE3:32.163:32.1664.25 MB100.00%
+
+
+ + Complete summary table
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison__white_room.html b/3rdparty/libflac/doc/html/comparison__white_room.html new file mode 100644 index 0000000..2d6609c --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison__white_room.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Ratio +
La 0.3c10:19.1410:06.409:58.769:49.4033.44 MB63.09%
optimFROG 4.21 (mode 3 @ 4x)3:59.683:44.764:06.853:53.6333.90 MB63.95%
optimFROG 4.21 (mode 2 @ 4x)2:13.661:57.832:19.882:07.4433.91 MB63.97%
optimFROG 4.21 (mode 4 @ 1x)22:58.3822:44.9923:03.4922:49.4533.93 MB63.99%
Monkey's Audio 3.99 (insane)8:52.218:40.359:19.419:09.8233.95 MB64.04%
optimFROG 4.21 (mode 1 @ 4x)1:41.141:24.941:48.081:35.1233.96 MB64.05%
Monkey's Audio 3.99 (extra high)1:58.771:44.072:03.721:50.9634.00 MB64.13%
Tak 1.01 (extra high max)4:38.014:24.470:31.770:18.5634.08 MB64.28%
Tak 1.01 (extra high)1:42.151:27.360:31.010:17.9834.11 MB64.34%
Monkey's Audio 3.99 (high)1:04.940:50.221:09.130:56.1734.11 MB64.35%
Tak 1.01 (normal)0:48.570:33.590:28.230:14.7734.25 MB64.60%
Monkey's Audio 3.99 (normal)0:55.970:41.521:00.660:47.6634.25 MB64.60%
optimFROG 4.21 (mode 0 @ 4x)1:11.160:54.081:16.251:02.9634.29 MB64.68%
WavPack 4.41 (extra high -x)1:52.391:35.780:46.170:31.5534.52 MB65.12%
Tak 1.01 (turbo)0:30.950:15.970:27.610:13.1334.66 MB65.39%
WavPack 4.41 (high)0:47.950:31.280:40.190:25.2934.78 MB65.61%
FLAC 1.2.1 (-8)1:53.011:38.200:25.940:12.3334.85 MB65.73%
Monkey's Audio 3.99 (fast)0:44.320:29.300:49.050:36.0234.85 MB65.74%
Bonk 0.53:40.433:26.663:01.262:48.0534.96 MB65.95%
WavPack 4.41 (normal -x)0:58.410:41.810:31.140:17.8634.99 MB66.01%
FLAC 1.2.1 (-5, default)0:43.300:27.640:22.710:09.3735.07 MB66.16%
WavPack 4.41 (normal)0:40.460:23.700:32.230:19.0435.18 MB66.36%
FLAC 1.2.1 (-3)0:30.700:15.860:23.490:08.7635.30 MB66.59%
Shorten 3.2a (-p8 -b2048)0:51.660:36.540:32.680:19.2735.40 MB66.77%
Apple Lossless (iTunes 4.5)????35.46 MB66.89%
WavPack 4.41 (fast -x)0:49.400:32.480:27.760:14.6235.50 MB66.97%
WavPack 4.41 (fast)0:36.810:19.000:28.460:14.9035.61 MB67.18%
Shorten 3.2a (-p0 -b256, default)0:41.620:26.530:28.650:14.8836.42 MB68.70%
FLAC 1.2.1 (-1)0:26.900:11.600:23.190:08.6436.52 MB68.90%
RIFF WAVE3:09.603:09.6053.01 MB100.00%
+
+
+ + Complete summary table
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison_all_cpudectime.html b/3rdparty/libflac/doc/html/comparison_all_cpudectime.html new file mode 100644 index 0000000..8d1479c --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison_all_cpudectime.html @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Avg.ratio +
FLAC 1.2.1 (-1)6:24.512:42.935:26.872:17.49431.72 MB56.97%
FLAC 1.2.1 (-3)7:23.773:47.425:31.152:19.07412.42 MB54.57%
FLAC 1.2.1 (-5, default)10:07.416:35.685:23.162:22.41406.25 MB53.67%
FLAC 1.2.1 (-8)26:46.7223:21.855:40.252:36.47404.23 MB53.36%
Tak 1.01 (turbo)7:25.213:51.026:16.823:10.87399.97 MB52.71%
WavPack 4.41 (fast -x)11:54.477:50.846:32.503:25.77411.52 MB54.39%
WavPack 4.41 (fast)8:52.274:47.746:33.733:28.19415.05 MB54.92%
Shorten 3.2a (-p0 -b256, default)10:01.386:23.406:38.433:30.66433.56 MB57.29%
Tak 1.01 (normal)11:42.598:12.006:36.473:38.14391.16 MB51.39%
Shorten 3.2a (-p8 -b2048)12:09.688:31.467:34.174:24.09438.86 MB58.11%
WavPack 4.41 (normal -x)14:14.5410:13.337:23.144:24.26403.10 MB53.19%
WavPack 4.41 (normal)9:48.595:46.917:37.264:30.11405.84 MB53.56%
Tak 1.01 (extra high max)66:52.1563:48.917:39.414:46.01383.70 MB50.60%
Tak 1.01 (extra high)25:14.0021:48.457:50.464:54.86384.06 MB50.66%
WavPack 4.41 (high)11:48.477:45.589:19.076:05.35399.90 MB52.73%
WavPack 4.41 (extra high -x)27:23.5623:29.2610:58.907:48.32396.56 MB52.22%
Monkey's Audio 3.99 (fast)10:24.296:58.4611:32.078:37.81400.57 MB53.11%
Apple Lossless (iTunes 4.5)19:53.2719:53.2710:01.8610:01.86414.45 MB54.96%
Monkey's Audio 3.99 (normal)13:20.159:56.4014:24.0211:33.71393.17 MB51.97%
Monkey's Audio 3.99 (high)15:26.1612:03.1616:30.0013:40.59389.83 MB51.53%
optimFROG 4.21 (mode 0 @ 4x)16:36.9812:51.5817:55.5514:58.99394.69 MB52.24%
optimFROG 4.21 (mode 1 @ 4x)24:25.0420:37.9625:48.9022:52.76389.04 MB51.52%
Monkey's Audio 3.99 (extra high)28:34.0325:12.1429:38.8826:53.34384.55 MB50.87%
optimFROG 4.21 (mode 2 @ 4x)32:20.4628:36.3833:39.9630:49.89387.93 MB51.33%
Bonk 0.551:45.5848:32.1042:02.7639:05.43418.65 MB55.43%
optimFROG 4.21 (mode 3 @ 4x)58:21.9454:52.6259:34.1256:51.21386.71 MB51.15%
Monkey's Audio 3.99 (insane)129:07.86126:05.33135:13.19133:12.71381.79 MB50.65%
La 0.3c150:12.30146:54.11144:50.36142:49.41375.76 MB49.86%
optimFROG 4.21 (mode 4 @ 1x)338:34.15335:12.47339:18.57336:25.54386.22 MB51.06%
RIFF WAVE73:44.9473:44.94780.56 MB100.00%
+
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison_all_cpuenctime.html b/3rdparty/libflac/doc/html/comparison_all_cpuenctime.html new file mode 100644 index 0000000..9128907 --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison_all_cpuenctime.html @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Avg.ratio +
FLAC 1.2.1 (-1)6:24.512:42.935:26.872:17.49431.72 MB56.97%
FLAC 1.2.1 (-3)7:23.773:47.425:31.152:19.07412.42 MB54.57%
Tak 1.01 (turbo)7:25.213:51.026:16.823:10.87399.97 MB52.71%
WavPack 4.41 (fast)8:52.274:47.746:33.733:28.19415.05 MB54.92%
WavPack 4.41 (normal)9:48.595:46.917:37.264:30.11405.84 MB53.56%
Shorten 3.2a (-p0 -b256, default)10:01.386:23.406:38.433:30.66433.56 MB57.29%
FLAC 1.2.1 (-5, default)10:07.416:35.685:23.162:22.41406.25 MB53.67%
Monkey's Audio 3.99 (fast)10:24.296:58.4611:32.078:37.81400.57 MB53.11%
WavPack 4.41 (high)11:48.477:45.589:19.076:05.35399.90 MB52.73%
WavPack 4.41 (fast -x)11:54.477:50.846:32.503:25.77411.52 MB54.39%
Tak 1.01 (normal)11:42.598:12.006:36.473:38.14391.16 MB51.39%
Shorten 3.2a (-p8 -b2048)12:09.688:31.467:34.174:24.09438.86 MB58.11%
Monkey's Audio 3.99 (normal)13:20.159:56.4014:24.0211:33.71393.17 MB51.97%
WavPack 4.41 (normal -x)14:14.5410:13.337:23.144:24.26403.10 MB53.19%
Monkey's Audio 3.99 (high)15:26.1612:03.1616:30.0013:40.59389.83 MB51.53%
optimFROG 4.21 (mode 0 @ 4x)16:36.9812:51.5817:55.5514:58.99394.69 MB52.24%
Apple Lossless (iTunes 4.5)19:53.2719:53.2710:01.8610:01.86414.45 MB54.96%
optimFROG 4.21 (mode 1 @ 4x)24:25.0420:37.9625:48.9022:52.76389.04 MB51.52%
Tak 1.01 (extra high)25:14.0021:48.457:50.464:54.86384.06 MB50.66%
FLAC 1.2.1 (-8)26:46.7223:21.855:40.252:36.47404.23 MB53.36%
WavPack 4.41 (extra high -x)27:23.5623:29.2610:58.907:48.32396.56 MB52.22%
Monkey's Audio 3.99 (extra high)28:34.0325:12.1429:38.8826:53.34384.55 MB50.87%
optimFROG 4.21 (mode 2 @ 4x)32:20.4628:36.3833:39.9630:49.89387.93 MB51.33%
Bonk 0.551:45.5848:32.1042:02.7639:05.43418.65 MB55.43%
optimFROG 4.21 (mode 3 @ 4x)58:21.9454:52.6259:34.1256:51.21386.71 MB51.15%
Tak 1.01 (extra high max)66:52.1563:48.917:39.414:46.01383.70 MB50.60%
Monkey's Audio 3.99 (insane)129:07.86126:05.33135:13.19133:12.71381.79 MB50.65%
La 0.3c150:12.30146:54.11144:50.36142:49.41375.76 MB49.86%
optimFROG 4.21 (mode 4 @ 1x)338:34.15335:12.47339:18.57336:25.54386.22 MB51.06%
RIFF WAVE73:44.9473:44.94780.56 MB100.00%
+
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison_all_procdectime.html b/3rdparty/libflac/doc/html/comparison_all_procdectime.html new file mode 100644 index 0000000..4acf9dd --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison_all_procdectime.html @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Avg.ratio +
FLAC 1.2.1 (-5, default)10:07.416:35.685:23.162:22.41406.25 MB53.67%
FLAC 1.2.1 (-1)6:24.512:42.935:26.872:17.49431.72 MB56.97%
FLAC 1.2.1 (-3)7:23.773:47.425:31.152:19.07412.42 MB54.57%
FLAC 1.2.1 (-8)26:46.7223:21.855:40.252:36.47404.23 MB53.36%
Tak 1.01 (turbo)7:25.213:51.026:16.823:10.87399.97 MB52.71%
WavPack 4.41 (fast -x)11:54.477:50.846:32.503:25.77411.52 MB54.39%
WavPack 4.41 (fast)8:52.274:47.746:33.733:28.19415.05 MB54.92%
Tak 1.01 (normal)11:42.598:12.006:36.473:38.14391.16 MB51.39%
Shorten 3.2a (-p0 -b256, default)10:01.386:23.406:38.433:30.66433.56 MB57.29%
WavPack 4.41 (normal -x)14:14.5410:13.337:23.144:24.26403.10 MB53.19%
Shorten 3.2a (-p8 -b2048)12:09.688:31.467:34.174:24.09438.86 MB58.11%
WavPack 4.41 (normal)9:48.595:46.917:37.264:30.11405.84 MB53.56%
Tak 1.01 (extra high max)66:52.1563:48.917:39.414:46.01383.70 MB50.60%
Tak 1.01 (extra high)25:14.0021:48.457:50.464:54.86384.06 MB50.66%
WavPack 4.41 (high)11:48.477:45.589:19.076:05.35399.90 MB52.73%
Apple Lossless (iTunes 4.5)19:53.2719:53.2710:01.8610:01.86414.45 MB54.96%
WavPack 4.41 (extra high -x)27:23.5623:29.2610:58.907:48.32396.56 MB52.22%
Monkey's Audio 3.99 (fast)10:24.296:58.4611:32.078:37.81400.57 MB53.11%
Monkey's Audio 3.99 (normal)13:20.159:56.4014:24.0211:33.71393.17 MB51.97%
Monkey's Audio 3.99 (high)15:26.1612:03.1616:30.0013:40.59389.83 MB51.53%
optimFROG 4.21 (mode 0 @ 4x)16:36.9812:51.5817:55.5514:58.99394.69 MB52.24%
optimFROG 4.21 (mode 1 @ 4x)24:25.0420:37.9625:48.9022:52.76389.04 MB51.52%
Monkey's Audio 3.99 (extra high)28:34.0325:12.1429:38.8826:53.34384.55 MB50.87%
optimFROG 4.21 (mode 2 @ 4x)32:20.4628:36.3833:39.9630:49.89387.93 MB51.33%
Bonk 0.551:45.5848:32.1042:02.7639:05.43418.65 MB55.43%
optimFROG 4.21 (mode 3 @ 4x)58:21.9454:52.6259:34.1256:51.21386.71 MB51.15%
Monkey's Audio 3.99 (insane)129:07.86126:05.33135:13.19133:12.71381.79 MB50.65%
La 0.3c150:12.30146:54.11144:50.36142:49.41375.76 MB49.86%
optimFROG 4.21 (mode 4 @ 1x)338:34.15335:12.47339:18.57336:25.54386.22 MB51.06%
RIFF WAVE73:44.9473:44.94780.56 MB100.00%
+
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison_all_procenctime.html b/3rdparty/libflac/doc/html/comparison_all_procenctime.html new file mode 100644 index 0000000..0ba36d7 --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison_all_procenctime.html @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Avg.ratio +
FLAC 1.2.1 (-1)6:24.512:42.935:26.872:17.49431.72 MB56.97%
FLAC 1.2.1 (-3)7:23.773:47.425:31.152:19.07412.42 MB54.57%
Tak 1.01 (turbo)7:25.213:51.026:16.823:10.87399.97 MB52.71%
WavPack 4.41 (fast)8:52.274:47.746:33.733:28.19415.05 MB54.92%
WavPack 4.41 (normal)9:48.595:46.917:37.264:30.11405.84 MB53.56%
Shorten 3.2a (-p0 -b256, default)10:01.386:23.406:38.433:30.66433.56 MB57.29%
FLAC 1.2.1 (-5, default)10:07.416:35.685:23.162:22.41406.25 MB53.67%
Monkey's Audio 3.99 (fast)10:24.296:58.4611:32.078:37.81400.57 MB53.11%
Tak 1.01 (normal)11:42.598:12.006:36.473:38.14391.16 MB51.39%
WavPack 4.41 (high)11:48.477:45.589:19.076:05.35399.90 MB52.73%
WavPack 4.41 (fast -x)11:54.477:50.846:32.503:25.77411.52 MB54.39%
Shorten 3.2a (-p8 -b2048)12:09.688:31.467:34.174:24.09438.86 MB58.11%
Monkey's Audio 3.99 (normal)13:20.159:56.4014:24.0211:33.71393.17 MB51.97%
WavPack 4.41 (normal -x)14:14.5410:13.337:23.144:24.26403.10 MB53.19%
Monkey's Audio 3.99 (high)15:26.1612:03.1616:30.0013:40.59389.83 MB51.53%
optimFROG 4.21 (mode 0 @ 4x)16:36.9812:51.5817:55.5514:58.99394.69 MB52.24%
Apple Lossless (iTunes 4.5)19:53.2719:53.2710:01.8610:01.86414.45 MB54.96%
optimFROG 4.21 (mode 1 @ 4x)24:25.0420:37.9625:48.9022:52.76389.04 MB51.52%
Tak 1.01 (extra high)25:14.0021:48.457:50.464:54.86384.06 MB50.66%
FLAC 1.2.1 (-8)26:46.7223:21.855:40.252:36.47404.23 MB53.36%
WavPack 4.41 (extra high -x)27:23.5623:29.2610:58.907:48.32396.56 MB52.22%
Monkey's Audio 3.99 (extra high)28:34.0325:12.1429:38.8826:53.34384.55 MB50.87%
optimFROG 4.21 (mode 2 @ 4x)32:20.4628:36.3833:39.9630:49.89387.93 MB51.33%
Bonk 0.551:45.5848:32.1042:02.7639:05.43418.65 MB55.43%
optimFROG 4.21 (mode 3 @ 4x)58:21.9454:52.6259:34.1256:51.21386.71 MB51.15%
Tak 1.01 (extra high max)66:52.1563:48.917:39.414:46.01383.70 MB50.60%
Monkey's Audio 3.99 (insane)129:07.86126:05.33135:13.19133:12.71381.79 MB50.65%
La 0.3c150:12.30146:54.11144:50.36142:49.41375.76 MB49.86%
optimFROG 4.21 (mode 4 @ 1x)338:34.15335:12.47339:18.57336:25.54386.22 MB51.06%
RIFF WAVE73:44.9473:44.94780.56 MB100.00%
+
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/comparison_all_ratio.html b/3rdparty/libflac/doc/html/comparison_all_ratio.html new file mode 100644 index 0000000..330aa2c --- /dev/null +++ b/3rdparty/libflac/doc/html/comparison_all_ratio.html @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + FLAC - comparison + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ comparison +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Encode time + + Decode time + + Compression +
+ Codec + + Total + + CPU + + Total + + CPU + + Size + + Avg.ratio +
La 0.3c150:12.30146:54.11144:50.36142:49.41375.76 MB49.86%
Tak 1.01 (extra high max)66:52.1563:48.917:39.414:46.01383.70 MB50.60%
Monkey's Audio 3.99 (insane)129:07.86126:05.33135:13.19133:12.71381.79 MB50.65%
Tak 1.01 (extra high)25:14.0021:48.457:50.464:54.86384.06 MB50.66%
Monkey's Audio 3.99 (extra high)28:34.0325:12.1429:38.8826:53.34384.55 MB50.87%
optimFROG 4.21 (mode 4 @ 1x)338:34.15335:12.47339:18.57336:25.54386.22 MB51.06%
optimFROG 4.21 (mode 3 @ 4x)58:21.9454:52.6259:34.1256:51.21386.71 MB51.15%
optimFROG 4.21 (mode 2 @ 4x)32:20.4628:36.3833:39.9630:49.89387.93 MB51.33%
Tak 1.01 (normal)11:42.598:12.006:36.473:38.14391.16 MB51.39%
optimFROG 4.21 (mode 1 @ 4x)24:25.0420:37.9625:48.9022:52.76389.04 MB51.52%
Monkey's Audio 3.99 (high)15:26.1612:03.1616:30.0013:40.59389.83 MB51.53%
Monkey's Audio 3.99 (normal)13:20.159:56.4014:24.0211:33.71393.17 MB51.97%
WavPack 4.41 (extra high -x)27:23.5623:29.2610:58.907:48.32396.56 MB52.22%
optimFROG 4.21 (mode 0 @ 4x)16:36.9812:51.5817:55.5514:58.99394.69 MB52.24%
Tak 1.01 (turbo)7:25.213:51.026:16.823:10.87399.97 MB52.71%
WavPack 4.41 (high)11:48.477:45.589:19.076:05.35399.90 MB52.73%
Monkey's Audio 3.99 (fast)10:24.296:58.4611:32.078:37.81400.57 MB53.11%
WavPack 4.41 (normal -x)14:14.5410:13.337:23.144:24.26403.10 MB53.19%
FLAC 1.2.1 (-8)26:46.7223:21.855:40.252:36.47404.23 MB53.36%
WavPack 4.41 (normal)9:48.595:46.917:37.264:30.11405.84 MB53.56%
FLAC 1.2.1 (-5, default)10:07.416:35.685:23.162:22.41406.25 MB53.67%
WavPack 4.41 (fast -x)11:54.477:50.846:32.503:25.77411.52 MB54.39%
FLAC 1.2.1 (-3)7:23.773:47.425:31.152:19.07412.42 MB54.57%
WavPack 4.41 (fast)8:52.274:47.746:33.733:28.19415.05 MB54.92%
Apple Lossless (iTunes 4.5)19:53.2719:53.2710:01.8610:01.86414.45 MB54.96%
Bonk 0.551:45.5848:32.1042:02.7639:05.43418.65 MB55.43%
FLAC 1.2.1 (-1)6:24.512:42.935:26.872:17.49431.72 MB56.97%
Shorten 3.2a (-p0 -b256, default)10:01.386:23.406:38.433:30.66433.56 MB57.29%
Shorten 3.2a (-p8 -b2048)12:09.688:31.467:34.174:24.09438.86 MB58.11%
RIFF WAVE73:44.9473:44.94780.56 MB100.00%
+
+
+ Frederic Chopin Prelude No.24 in d minor
+ Dream Theater 6:00
+ Eddie Warner Titus
+ Maurice Ravel Fanfare from "L'eventail de Jeanne"
+ Gloria Estefan Conga
+ Alanis Morissette Hand In My Pocket
+ L. Subramaniam Raga Sivapriya
+ The Benedictine Monks of Santo Domingo de Silos Laetatus Sum
+ Cannibal Corpse Mummified In Barbed Wire
+ Sergei Prokofiev Piano Concerto No.3 (3rd movement)
+ Maurice Ravel String Quartet (4th movement)
+ Domenico Scarlatti Sonata K.42 (arr.Yepes for guitar)
+ Tool Forty-six & 2
+ Cream White Room
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/developers.html b/3rdparty/libflac/doc/html/developers.html new file mode 100644 index 0000000..00f2eae --- /dev/null +++ b/3rdparty/libflac/doc/html/developers.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + FLAC - developers + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ developers +
+
+
+ FLAC is an open source project and we are happy to enlist the help of anyone who wants to contribute, or to help with FLAC support in other programs and devices. The preferred method of communication is the developer mailing list (you must subscribe to post).
+
+ FLAC is open to third-party developers who want to add support for FLAC into their programs. All the necessary functionality is contained the libFLAC libraries which are licensed under Xiph.org's BSD license.
+
+ Some pointers to developer documentation and code:
+ + More resources are available on the FLAC project page on Sourceforge.net. +
+ +
+ +
+ +
+
+ goals +
+
+
+ Since FLAC is an open-source project, it's important to have a set of goals that everyone works to. They may change slightly from time to time but they're a good guideline. Changes should be in line with the goals and should not attempt to embrace any of the anti-goals.
+
+ Goals +
    +
  • + FLAC should be and stay an open format with an open-source reference implementation. +
  • +
  • + FLAC should be lossless. This seems obvious but lossy compression seems to creep into every audio codec. This goal also means that flac should stay archival quality and be truly lossless for all input. Testing of releases should be thorough. +
  • +
  • + FLAC should yield respectable compression, on par or better than other lossless codecs. +
  • +
  • + FLAC should allow at least realtime decoding on even modest hardware. +
  • +
  • + FLAC should support fast sample-accurate seeking. +
  • +
  • + FLAC should allow gapless playback of consecutive streams. This follows from the lossless goal. +
  • +
  • + The FLAC project owes a lot to the many people who have advanced the audio compression field so freely, and aims also to contribute through the open-source development of new ideas. +
  • +
+ Anti-goals
+
    +
  • + Lossy compression. There are already many suitable lossy formats (Ogg Vorbis, MP3, etc.). +
  • +
  • + Copy prevention, DRM, etc. There is no intention to add any copy prevention methods. Of course, we can't stop someone from encrypting a FLAC stream in another container (e.g. the way Apple encrypts AAC in MP4 with FairPlay), that is the choice of the user. +
  • +
+
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/documentation.html b/3rdparty/libflac/doc/html/documentation.html new file mode 100644 index 0000000..2b40f17 --- /dev/null +++ b/3rdparty/libflac/doc/html/documentation.html @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + FLAC - documentation + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ documentation +
+
+
+ FLAC is a general purpose audio format supported by many programs. Most of the documentation here is about the FLAC format itself and the tools we provide, but there is also information on using other programs that support FLAC. +
    +
  • Introduction - What is FLAC?
  • +
  • Getting FLAC - How to download what you need to play or make FLAC files.
  • +
  • Using FLAC - If you have some FLAC files and want to do something with them, or want to create FLAC files, look here.
  • +
  • FAQ - Frequently Asked Questions
  • +
+ In more detail: +
    +
  • About the FLAC Format - An overview of the FLAC format for power users.
  • +
  • Official Tools - How to use the flac and metaflac command-line tools.
  • +
  • Comparison - A comparison of FLAC with other lossless codecs.
  • +
  • Bugs - How to report bugs and request features, and a list of known bugs in the FLAC tools.
  • +
  • Request Support - Support for the official FLAC tools. For other programs, use hydrogenaudio.org +
  • FLAC Mailing List - General discussion about FLAC, tools, releases, etc. (You must subscribe to post.)
  • +
+ For developers who want to add FLAC support to their programs: + + Keep in mind that the online version of the documentation will always apply to the latest release. For older releases, check the documentation included with the release package. +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/documentation_bugs.html b/3rdparty/libflac/doc/html/documentation_bugs.html new file mode 100644 index 0000000..8900bef --- /dev/null +++ b/3rdparty/libflac/doc/html/documentation_bugs.html @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + FLAC - documentation + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+ +
+
+ The following are major known bugs in the current (1.1.4) release: +
    +
  • + When encoding to Ogg FLAC, if there are too many seek points (>240), the seek table will not have the offsets written back properly after encoding. +
  • +
+
+ +
+ +
+ +
+ +
+
+ To report a bug, please go to the FLAC bug tracker (or appropriately the feature request tracker, patch page, or support page).
+
+ First check that there is not already an existing request. If you do submit a new request, make sure and provide an email contact and use the Monitor feature.
+
+ Note that we get many false bug reports from people with faulty hardware or who overclock their machines that FLAC is not working. Please do due diligence if you are getting FLAC encoding or decoding errors that it is not the fault of the hardware. FLAC encoding tends to highlight problems with bad RAM, corrupted files, and excessive overclocking. +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/documentation_example_code.html b/3rdparty/libflac/doc/html/documentation_example_code.html new file mode 100644 index 0000000..041b7ae --- /dev/null +++ b/3rdparty/libflac/doc/html/documentation_example_code.html @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + FLAC - developers + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ example code +
+
+
+ The FLAC source code has several small example programs that demonstrate how to use the libraries. The source is available on the download page, or can be checked out from CVS or browsed online. The examples complement the API documentation.
+
+ Currently the examples show how to encode WAV files to FLAC and vice-versa using both libFLAC and libFLAC++. Over time we'll be adding more examples. +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/documentation_format_overview.html b/3rdparty/libflac/doc/html/documentation_format_overview.html new file mode 100644 index 0000000..fe5e256 --- /dev/null +++ b/3rdparty/libflac/doc/html/documentation_format_overview.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + FLAC - documentation + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ format +
+
+
+ The basic structure of a FLAC stream is: +
    +
  • The four byte string "fLaC"
  • +
  • The STREAMINFO metadata block
  • +
  • Zero or more other metadata blocks
  • +
  • One or more audio frames
  • +
+ The first four bytes are to identify the FLAC stream. The metadata that follows contains all the information about the stream except for the audio data itself. After the metadata comes the encoded audio data.
+
+ METADATA
+
+ FLAC defines several types of metadata blocks (see the format page for the complete list). Metadata blocks can be any length and new ones can be defined. A decoder is allowed to skip any metadata types it does not understand. Only one is mandatory: the STREAMINFO block. This block has information like the sample rate, number of channels, etc., and data that can help the decoder manage its buffers, like the minimum and maximum data rate and minimum and maximum block size. Also included in the STREAMINFO block is the MD5 signature of the unencoded audio data. This is useful for checking an entire stream for transmission errors.
+
+ Other blocks allow for padding, seek tables, tags, cuesheets, and application-specific data. There are flac options for adding PADDING blocks or specifying seek points. FLAC does not require seek points for seeking but they can speed up seeks, or be used for cueing in editing applications.
+
+ Also, if you have a need of a custom metadata block, you can define your own and request an ID here. Then you can reserve a PADDING block of the correct size when encoding, and overwrite the padding block with your APPLICATION block after encoding. The resulting stream will be FLAC compatible; decoders that are aware of your metadata can use it and the rest will safely ignore it.
+
+ AUDIO DATA
+
+ After the metadata comes the encoded audio data. Audio data and metadata are not interleaved. Like most audio codecs, FLAC splits the unencoded audio data into blocks, and encodes each block separately. The encoded block is packed into a frame and appended to the stream. The reference encoder uses a single block size for the whole stream but the FLAC format does not require it.
+
+ BLOCKING
+
+ The block size is an important parameter to encoding. If it is too small, the frame overhead will lower the compression. If it is too large, the modeling stage of the compressor will not be able to generate an efficient model. Understanding FLAC's modeling will help you to improve compression for some kinds of input by varying the block size. In the most general case, using linear prediction on 44.1kHz audio, the optimal block size will be between 2-6 ksamples. flac defaults to a block size of 4096 in this case. Using the fast fixed predictors, a smaller block size is usually preferable because of the smaller frame header.
+
+ INTER-CHANNEL DECORRELATION
+
+ In the case of stereo input, once the data is blocked it is optionally passed through an inter-channel decorrelation stage. The left and right channels are converted to center and side channels through the following transformation: mid = (left + right) / 2, side = left - right. This is a lossless process, unlike joint stereo. For normal CD audio this can result in significant extra compression. flac has two options for this: -m always compresses both the left-right and mid-side versions of the block and takes the smallest frame, and -M, which adaptively switches between left-right and mid-side.
+
+ MODELING
+
+ In the next stage, the encoder tries to approximate the signal with a function in such a way that when the approximation is subracted, the result (called the residual, residue, or error) requires fewer bits-per-sample to encode. The function's parameters also have to be transmitted so they should not be so complex as to eat up the savings. FLAC has two methods of forming approximations: 1) fitting a simple polynomial to the signal; and 2) general linear predictive coding (LPC). I will not go into the details here, only some generalities that involve the encoding options.
+
+ First, fixed polynomial prediction (specified with -l 0) is much faster, but less accurate than LPC. The higher the maximum LPC order, the slower, but more accurate, the model will be. However, there are diminishing returns with increasing orders. Also, at some point (usually around order 9) the part of the encoder that guesses what is the best order to use will start to get it wrong and the compression will actually decrease slightly; at that point you will have to you will have to use the exhaustive search option -e to overcome this, which is significantly slower.
+
+ Second, the parameters for the fixed predictors can be transmitted in 3 bits whereas the parameters for the LPC model depend on the bits-per-sample and LPC order. This means the frame header length varies depending on the method and order you choose and can affect the optimal block size.
+
+ RESIDUAL CODING
+
+ Once the model is generated, the encoder subracts the approximation from the original signal to get the residual (error) signal. The error signal is then losslessly coded. To do this, FLAC takes advantage of the fact that the error signal generally has a Laplacian (two-sided geometric) distribution, and that there are a set of special Huffman codes called Rice codes that can be used to efficiently encode these kind of signals quickly and without needing a dictionary.
+
+ Rice coding involves finding a single parameter that matches a signal's distribution, then using that parameter to generate the codes. As the distribution changes, the optimal parameter changes, so FLAC supports a method that allows the parameter to change as needed. The residual can be broken into several contexts or partitions, each with it's own Rice parameter. flac allows you to specify how the partitioning is done with the -r option. The residual can be broken into 2^n partitions, by using the option -r n,n. The parameter n is called the partition order. Furthermore, the encoder can be made to search through m to n partition orders, taking the best one, by specifying -r m,n. Generally, the choice of n does not affect encoding speed but m,n does. The larger the difference between m and n, the more time it will take the encoder to search for the best order. The block size will also affect the optimal order.
+
+ FRAMING
+
+ An audio frame is preceded by a frame header and trailed by a frame footer. The header starts with a sync code, and contains the minimum information necessary for a decoder to play the stream, like sample rate, bits per sample, etc. It also contains the block or sample number and an 8-bit CRC of the frame header. The sync code, frame header CRC, and block/sample number allow resynchronization and seeking even in the absence of seek points. The frame footer contains a 16-bit CRC of the entire encoded frame for error detection. If the reference decoder detects a CRC error it will generate a silent block.
+
+ MISCELLANEOUS
+
+ As a convenience, the reference decoder knows how to skip ID3v1 and ID3v2 tags. Note however that the FLAC specification does not require compliant implementations to support ID3 in any form and their use is strongly discouraged.
+
+ flac has a verify option -V that verifies the output while encoding. With this option, a decoder is run in parallel to the encoder and its output is compared against the original input. If a difference is found flac will stop with an error. +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/documentation_tasks.html b/3rdparty/libflac/doc/html/documentation_tasks.html new file mode 100644 index 0000000..7d3d9ae --- /dev/null +++ b/3rdparty/libflac/doc/html/documentation_tasks.html @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + FLAC - documentation + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ using flac +
+
+
+ Since FLAC is supported by so many different programs, it can be a daunting task for the new user to choose a suitable program. This page will walk you through the steps. First, choose your operating system: + +
+ +
+ +
+ +
+
+ windows +
+
+
+
+ Using iTunes? Sorry, due to iTunes' design we can't add FLAC support; ask Apple to support FLAC!
+
+ If you want to play FLAC files, here is how with some popular players: + + If you want to rip CDs to FLAC, here is a short list of the most popular programs. Experts generally prefer EAC for the most accurate ripping. dbPowerAMP also does a fine job and is easier to set up. + + If you want to burn FLAC files to CD, here is a short list of the most popular programs: +
    +
  • Windows Media Player (WMP) - Sorry, Microsoft has made it impossible to burn FLAC to CD in WMP; hopefully this will change eventually.
  • + +
  • dbPowerAMP CD Writer - Install the FLAC plugin.
  • +
  • Burrrn - Supports burning from FLAC out of the box.
  • +
  • (more)
  • +
+ If you want to convert audio files to/from FLAC, there are quite a few programs: + + If you want to edit the tags in FLAC files: +
    +
  • mp3tag - A free tag editor which supports editing tags, autotagging from online databases, cover art, and more.
  • +
+
+ +
+ +
+ +
+
+ mac os x +
+
+
+
+ Using iTunes? Sorry, due to iTunes' design we can't add FLAC support; ask Apple to support FLAC!
+
+ If you want to play FLAC files, here is how with some popular players: + + If you want to rip CDs to FLAC, there are a few options: + + If you want to burn FLAC files to CD: + + If you want to convert audio files to/from FLAC: + +
+ +
+ +
+ +
+
+ *nix +
+
+
+ In the Unix world, FLAC support is quite widespread and it's usually only a matter of installing packages, so here are a few pointers. See the software links section for many more.
+
+ To play FLAC files: + + To rip CDs to FLAC: +
    +
  • Grip is a great ripping and encoding front end and can be easily configured to use flac. See this thread on how to configure Grip for FLAC.
  • +
  • xmcd is a CD ripper with CDDB support as well as a player.
  • +
  • (more)
  • +
+ To burn FLAC files to CD, here is a short list of the most popular programs: +
    +
  • Arson: KDE ripper/burner
  • +
  • K3B: CD/DVD creator for Linux
  • +
  • (more)
  • +
+ To convert audio files to/from FLAC, there are quite a few programs: + +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/documentation_tools.html b/3rdparty/libflac/doc/html/documentation_tools.html new file mode 100644 index 0000000..88593ec --- /dev/null +++ b/3rdparty/libflac/doc/html/documentation_tools.html @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + FLAC - documentation + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ tools +
+
+
+ FLAC is a general purpose audio format supported by many programs, but in this section we are concentrating on just the official tools provided by the FLAC project: +
    +
  • flac - The command-line encoder and decoder.
  • +
  • metaflac - The command-line metadata editor.
  • +
  • plugins - Setting up the Winamp and XMMS plugins.
  • +
+ Other resources: +
    +
  • Bugs - How to report bugs and request features, and a list of known bugs in the FLAC tools.
  • +
  • Request Support - Support for the official FLAC tools. For other programs, use hydrogenaudio.org +
  • FLAC Mailing List - General discussion about FLAC, tools, releases, etc. (You must subscribe to post.)
  • +
+
+ See Getting FLAC for instructions on downloading and installing the official FLAC tools, or Using FLAC for instructions and guides on playing FLAC files, ripping CDs to FLAC, etc. +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/documentation_tools_flac.html b/3rdparty/libflac/doc/html/documentation_tools_flac.html new file mode 100644 index 0000000..4720b53 --- /dev/null +++ b/3rdparty/libflac/doc/html/documentation_tools_flac.html @@ -0,0 +1,1135 @@ + + + + + + + + + + + + + + + + FLAC - documentation + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ flac +
+
+
+ Table of Contents + + General Usage
+
+ flac is the command-line file encoder/decoder. The encoder currently supports as input RIFF WAVE, AIFF, FLAC or Ogg FLAC format, or raw interleaved samples. The decoder currently can output to RIFF WAVE or AIFF format, or raw interleaved samples. flac only supports linear PCM samples (in other words, no A-LAW, uLAW, etc.), and the input must be between 4 and 24 bits per sample. This is not a limitation of the FLAC format, just the reference encoder/decoder.
+
+ flac assumes that files ending in ".wav" or that have the RIFF WAVE header present are WAVE files, files ending in ".aif" or ".aiff" or have the AIFF header present are AIFF files, and files ending in ".flac" or have the FLAC header present are FLAC files. This assumption may be overridden with a command-line option. It also assumes that files ending in ".oga" or ".ogg" or have the Ogg FLAC header present are Ogg FLAC files. Other than this, flac makes no assumptions about file extensions, though the convention is that FLAC files have the extension ".flac" (or ".fla" on ancient "8.3" file systems like FAT-16).
+
+ Before going into the full command-line description, a few other things help to sort it out: 1) flac encodes by default, so you must use -d to decode; 2) the options -0 .. -8 (or --fast and --best) that control the compression level actually are just synonyms for different groups of specific encoding options (described later) and you can get the same effect by using the same options; 3) flac behaves similarly to gzip in the way it handles input and output files.
+
+ Skip to the tutorial below for examples of some common tasks.
+
+ flac will be invoked one of four ways, depending on whether you are encoding, decoding, testing, or analyzing: + + In any case, if no inputfile is specified, stdin is assumed. If only one inputfile is specified, it may be "-" for stdin. When stdin is used as input, flac will write to stdout. Otherwise flac will perform the desired operation on each input file to similarly named output files (meaning for encoding, the extension will be replaced with ".flac", or appended with ".flac" if the input file has no extension, and for decoding, the extension will be ".wav" for WAVE output and ".raw" for raw output). The original file is not deleted unless --delete-input-file is specified.
+
+ If you are encoding/decoding from stdin to a file, you should use the -o option like so: +
    +
  • + flac [options] -o outputfile +
  • +
  • + flac -d [options] -o outputfile +
  • +
+ which are better than: +
    +
  • + flac [options] > outputfile +
  • +
  • + flac -d [options] > outputfile +
  • +
+ since the former allows flac to seek backwards to write the STREAMINFO or RIFF WAVE header contents when necessary.
+
+ Also, you can force output data to go to stdout using -c.
+
+ To encode or decode files that start with a dash, use -- to signal the end of options, to keep the filenames themselves from being treated as options: +
    +
  • + flac -V -- -01-filename.wav +
  • +
+ The encoding options affect the compression ratio and encoding speed. The format options are used to tell flac the arrangement of samples if the input file (or output file when decoding) is a raw file. If it is a RIFF WAVE or AIFF file the format options are not needed since they are read from the AIFF/WAVE header.
+
+ In test mode, flac acts just like in decode mode, except no output file is written. Both decode and test modes detect errors in the stream, but they also detect when the MD5 signature of the decoded audio does not match the stored MD5 signature, even when the bitstream is valid.
+
+ flac can also re-encode FLAC files. In other words, you can specify a FLAC or Ogg FLAC file as an input to the encoder and it will decoder it and re-encode it according to the options you specify. It will also preserve all the metadata unless you override it with other options (e.g. specifying new tags, seekpoints, cuesheet, padding, etc.).
+
+ flac has been tuned so that the default settings yield a good speed vs. compression tradeoff for many kinds of input. However, if you are looking to maximize the compression rate or speed, or want to use the full power of FLAC's metadata system, see About the FLAC Format.
+
+ + Tutorial
+
+ Some common encoding tasks using flac:
+
+ flac abc.wav
+ Encode abc.wav to abc.flac using the default compression setting. abc.wav is not deleted.
+
+ flac --delete-input-file abc.wav
+ Like above, except abc.wav is deleted if there were no errors.
+
+ flac --delete-input-file -w abc.wav
+ Like above, except abc.wav is deleted if there were no errors or warnings.
+
+ flac --best abc.wav
+ Encode abc.wav to abc.flac using the highest compression setting.
+
+ flac --verify abc.wav
+ Encode abc.wav to abc.flac and internally decode abc.flac to make sure it matches abc.wav.
+
+ flac -o my.flac abc.wav
+ Encode abc.wav to my.flac.
+
+ flac -T "TITLE=Bohemian Rhapsody" -T "ARTIST=Queen" abc.wav
+ Encode abc.wav and add some tags at the same time to abc.flac.
+
+ flac *.wav
+ Encode all .wav files in the current directory. NOTE: Wildcards on Windows
+
+ flac abc.aiff
+ Encode abc.aiff to abc.flac.
+
+ flac abc.flac --force
+ This one's a little tricky: notice that flac is in encode mode by default (you have to specify -d to decode) so this command actually recompresses abc.flac back to abc.flac. --force is needed to make sure you really want to overwrite abc.flac with a new version. Why would you want to do this? It allows you to recompress an existing FLAC file with (usually) higher compression options or a newer version of FLAC and preserve all the metadata like tags too.
+
+ + Some common decoding tasks using flac:
+
+ flac -d abc.flac
+ Decode abc.flac to abc.wav. abc.flac is not deleted. NOTE: Without -d it means re-encode abc.flac to abc.flac (see above).
+
+ flac -d --force-aiff-format abc.flac
+ flac -d -o abc.aiff abc.flac
+ Two different ways of decoding abc.flac to abc.aiff (AIFF format). abc.flac is not deleted.
+
+ flac -d -F abc.flac
+ Decode abc.flac to abc.wav and don't abort if errors are found (useful for recovering as much as possible from corrupted files).
+
+ flac has many other useful options, described below.
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ General Options +
+ + -v, --version + + Show the flac version number. +
+ + -h, --help + + Show basic usage and a list of all options. Running flac without arguments shows the short help screen by default. +
+ + -H, --explain + + Show detailed explanation of usage and all options. Running flac without arguments shows the short help screen by default. +
+ + -d, --decode + + Decode (flac encodes by default). flac will exit with an exit code of 1 (and print a message, even in silent mode) if there were any errors during decoding, including when the MD5 checksum does not match the decoded output. Otherwise the exit code will be 0. +
+ + -t, --test + + Test (same as -d except no decoded file is written). The exit codes are the same as in decode mode. +
+ + -a, --analyze + + Analyze (same as -d except an analysis file is written). The exit codes are the same as in decode mode. This option is mainly for developers; the output will be a text file that has data about each frame and subframe. +
+ + -c, --stdout + + Write output to stdout. +
+ + -s, --silent + + Silent: do not show encoding/decoding statistics. +
+ + --totally-silent + + Do not print anything of any kind, including warnings or errors. The exit code will be the only way to determine successful completion. +
+ + --no-utf8-convert + + Do not convert tags from local charset to UTF-8. This is useful for scripts, and setting tags in situations where the locale is wrong. This option must appear before any tag options! +
+ + -w, --warnings-as-errors + + Treat all warnings as errors (which cause flac to terminate with a non-zero exit code). +
+ + -f, --force + + Force overwriting of output files. By default, flac warns that the output file already exists and continues to the next file. +
+ + -o filename,
--output-name=filename +
+ Force the output file name (usually flac just changes the extension). May only be used when encoding a single file. May not be used in conjunction with --output-prefix. +
+ + --output-prefix=string + + Prefix each output file name with the given string. This can be useful for encoding/decoding files to a different directory. Make sure if your string is a path name that it ends with a trailing '/' slash. +
+ + --delete-input-file + + Automatically delete the input file after a successful encode or decode. If there was an error (including a verify error) the input file is left intact. +
+ + --keep-foreign-metadata + + If encoding, save WAVE or AIFF non-audio chunks in FLAC metadata. If decoding, restore any saved non-audio chunks from FLAC metadata when writing the decoded file. Foreign metadata cannot be transcoded, e.g. WAVE chunks saved in a FLAC file cannot be restored when decoding to AIFF. Input and output must be regular files (not stdin or stdout).
+ +
+ + --skip={#|mm:ss.ss} + + Skip over the first # of samples of the input. This works for both encoding and decoding, but not testing. The alternative form mm:ss.ss can be used to specify minutes, seconds, and fractions of a second.
+
+ Examples:
+
+ --skip=123 : skip the first 123 samples of the input
+ --skip=1:23.45 : skip the first 1 minute and 23.45 seconds of the input +
+ + --until={#|[+|-]mm:ss.ss} + + Stop at the given sample number for each input file. This works for both encoding and decoding, but not testing. The given sample number is not included in the decoded output. The alternative form mm:ss.ss can be used to specify minutes, seconds, and fractions of a second. If a + sign is at the beginning, the --until point is relative to the --skip point. If a - sign is at the beginning, the --until point is relative to end of the audio.
+
+ Examples:
+
+ --until=123 : decode only the first 123 samples of the input (samples 0-122, stopping at 123)
+ --until=1:23.45 : decode only the first 1 minute and 23.45 seconds of the input
+ --skip=1:00 --until=+1:23.45 : decode 1:00.00 to 2:23.45
+ --until=-1:23.45 : decode everything except the last 1 minute and 23.45 seconds
+ --until=-0:00 : decode until the end of the input (the same as not specifying --until) +
+ + --ogg + + When encoding, generate Ogg FLAC output instead of native FLAC. Ogg FLAC streams are FLAC streams wrapped in an Ogg transport layer. The resulting file should have an '.oga' extension and will still be decodable by flac.
+
+ When decoding, force the input to be treated as Ogg FLAC. This is useful when piping input from stdin or when the filename does not end in '.oga' or '.ogg'.
+
+ NOTE: Ogg FLAC files created prior to flac 1.1.1 used an ad-hoc mapping and do not support seeking. They should be decoded and re-encoded with flac 1.1.1 or later. +
+ + --serial-number=# + + When used with --ogg, specifies the serial number to use for the first Ogg FLAC stream, which is then incremented for each additional stream. When encoding and no serial number is given, flac uses a random number for the first stream, then increments it for each additional stream. When decoding and no number is given, flac uses the serial number of the first page. +
+
+ +
+ +
+ + + + + + + + + + + + +
+ Analysis Options +
+ + --residual-text + + Includes the residual signal in the analysis file. This will make the file very big, much larger than even the decoded file. +
+ + --residual-gnuplot + + Generates a gnuplot file for every subframe; each file will contain the residual distribution of the subframe. This will create a lot of files. +
+
+ +
+ +
+ + + + + + + + + + + + + +
+ Decoding Options +
+ + --cue=[#.#][-[#.#]] + + Set the beginning and ending cuepoints to decode. The optional first #.# is the track and index point at which decoding will start; the default is the beginning of the stream. The optional second #.# is the track and index point at which decoding will end; the default is the end of the stream. If the cuepoint does not exist, the closest one before it (for the start point) or after it (for the end point) will be used. If those don't exist, the start of the stream (for the start point) or end of the stream (for the end point) will be used. The cuepoints are merely translated into sample numbers then used as --skip and --until.
+
+ Examples:
+
+ --cue=- : decode the entire stream
+ --cue=4.1 : decode from track 4, index 1 to the end of the stream
+ --cue=4.1- : decode from track 4, index 1 to the end of the stream
+ --cue=-4.1 : decode from the beginning of the stream up to, but not including, track 4, index 1
+ --cue=2.1-2.4 : decode from track 2, index 1, up to, but not including, track 2, index 4
+ --cue=9.1-10.1 : decode from track 9 the way it would be played on a CD player; this works even if the CD has no 10th track. +
+ + -F,
--decode-through-errors +
+ By default flac stops decoding with an error and removes the partially decoded file if it encounters a bitstream error. With -F, errors are still printed but flac will continue decoding to completion. Note that errors may cause the decoded audio to be missing some samples or have silent sections. +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Encoding Options +
+ + -V, --verify + + Verify the encoding process. With this option, flac will create a parallel decoder that decodes the output of the encoder and compares the result against the original. It will abort immediately with an error if a mismatch occurs. -V increases the total encoding time but is guaranteed to catch any unforseen bug in the encoding process. +
+ + --lax + + Allow encoder to generate non-Subset files. The resulting FLAC file may not be streamable or might have trouble being played in all players (especially hardware devices), so you should only use this option in combination with custom encoding options meant for archival. +
+ + --replay-gain + + Calculate ReplayGain values and store them as FLAC tags, similar to VorbisGain. Title gains/peaks will be computed for each input file, and an album gain/peak will be computed for all files. All input files must have the same resolution, sample rate, and number of channels. Only mono and stereo files are allowed, and the sample rate must be one of 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, or 48 kHz. Also note that this option may leave a few extra bytes in a PADDING block as the exact size of the tags is not known until all files are processed.
+
+ Note that this option cannot be used when encoding to standard output (stdout). +
+ + --cuesheet=FILENAME + + Import the given cuesheet file and store it in a CUESHEET metadata block. This option may only be used when encoding a single file. A seekpoint will be added for each index point in the cuesheet to the SEEKTABLE unless --no-cued-seekpoints is specified.
+
+ The cuesheet file must be of the sort written by CDRwin, CDRcue, EAC, etc. See also cuesheet syntax. +
+ + --picture={FILENAME|SPECIFICATION} + + Import a picture and store it in a PICTURE metadata block. More than one --picture command can be specified. Either a filename for the picture file or a more complete specification form can be used. The SPECIFICATION is a string whose parts are separated by | (pipe) characters. Some parts may be left empty to invoke default values. FILENAME is just shorthand for ||||FILENAME. The format of SPECIFICATION is
+
+   [TYPE]|[MIME-TYPE]|[DESCRIPTION]|[WIDTHxHEIGHTxDEPTH[/COLORS]]|FILE
+
+ TYPE is optional; it is a number from one of:
+
    +
  • 0: Other
  • +
  • 1: 32x32 pixels 'file icon' (PNG only)
  • +
  • 2: Other file icon
  • +
  • 3: Cover (front)
  • +
  • 4: Cover (back)
  • +
  • 5: Leaflet page
  • +
  • 6: Media (e.g. label side of CD)
  • +
  • 7: Lead artist/lead performer/soloist
  • +
  • 8: Artist/performer
  • +
  • 9: Conductor
  • +
  • 10: Band/Orchestra
  • +
  • 11: Composer
  • +
  • 12: Lyricist/text writer
  • +
  • 13: Recording Location
  • +
  • 14: During recording
  • +
  • 15: During performance
  • +
  • 16: Movie/video screen capture
  • +
  • 17: A bright coloured fish
  • +
  • 18: Illustration
  • +
  • 19: Band/artist logotype
  • +
  • 20: Publisher/Studio logotype
  • +
+ The default is 3 (front cover). There may only be one picture each of type 1 and 2 in a file.
+
+ MIME-TYPE is optional; if left blank, it will be detected from the file. For best compatibility with players, use pictures with MIME type image/jpeg or image/png. The MIME type can also be --> to mean that FILE is actually a URL to an image, though this use is discouraged.
+
+ DESCRIPTION is optional; the default is an empty string.
+
+ The next part specfies the resolution and color information. If the MIME-TYPE is image/jpeg, image/png, or image/gif, you can usually leave this empty and they can be detected from the file. Otherwise, you must specify the width in pixels, height in pixels, and color depth in bits-per-pixel. If the image has indexed colors you should also specify the number of colors used. When manually specified, it is not checked against the file for accuracy.
+
+ FILE is the path to the picture file to be imported, or the URL if MIME type is -->
+
+ For example, the specification |image/jpeg|||../cover.jpg will embed the JPEG file at ../cover.jpg, defaulting to type 3 (front cover) and an empty description. The resolution and color info will be retrieved from the file itself.
+
+ The specification 4|-->|CD|320x300x24/173|http://blah.blah/backcover.tiff will embed the given URL, with type 4 (back cover), description "CD", and a manually specified resolution of 320x300, 24 bits-per-pixel, and 173 colors. The file at the URL will not be fetched; the URL itself is stored in the PICTURE metadata block. +
+ + --sector-align + + Align encoding of multiple CD format files on sector boundaries. This option is only allowed when encoding files all of which have a 44.1kHz sample rate and 2 channels. With --sector-align, the encoder will align the resulting .flac streams so that their lengths are even multiples of a CD sector (1/75th of a second, or 588 samples). It does this by carrying over any partial sector at the end of each file to the next stream. The last stream will be padded to alignment with zeroes.
+
+ This option will have no effect if the files are already aligned (as is the normally the case with WAVE files ripped from a CD). flac can only align a set of files given in one invocation of flac.
+
+ WARNING: The ordering of files is important! If you give a command like 'flac --sector-align *.wav' the shell may not expand the wildcard to the order you expect. To be safe you should 'echo *.wav' first to confirm the order, or be explicit like 'flac --sector-align 8.wav 9.wav 10.wav'. +
+ + -S {#|X|#x|#s},
--seekpoint={#|X|#x|#s} +
+ Include a point or points in a SEEKTABLE:
+
    +
  • + : a specific sample number for a seek point +
  • +
  • + : a placeholder point (always goes at the end of the SEEKTABLE) +
  • +
  • + #x : # evenly spaced seekpoints, the first being at sample 0 +
  • +
  • + #s : a seekpoint every # seconds; # does not have to be a whole number, it can be, for example, 9.5, meaning a seekpoint every 9.5 seconds +
  • +
+ You may use many -S options; the resulting SEEKTABLE will be the unique-ified union of all such values.
+ With no -S options, flac defaults to '-S 10s'. Use --no-seektable for no SEEKTABLE.
+ NOTE: -S #x and -S #s will not work if the encoder can't determine the input size before starting.
+ NOTE: if you use -S # and # is >= samples in the input, there will be either no seek point entered (if the input size is determinable before encoding starts) or a placeholder point (if input size is not determinable).
+
+ + -P #, --padding=# + + Tell the encoder to write a PADDING metadata block of the given length (in bytes) after the STREAMINFO block. This is useful if you plan to tag the file later with an APPLICATION block; instead of having to rewrite the entire file later just to insert your block, you can write directly over the PADDING block. Note that the total length of the PADDING block will be 4 bytes longer than the length given because of the 4 metadata block header bytes. You can force no PADDING block at all to be written with --no-padding. The encoder writes a PADDING block of 8192 bytes by default (or 65536 bytes if the input audio stream is more than 20 minutes long). +
+ + -T FIELD=VALUE,
--tag=FIELD=VALUE +
+ Add a FLAC tag. The comment must adhere to the Vorbis comment spec (which FLAC tags implement), i.e. the FIELD must contain only legal characters, terminated by an 'equals' sign. Make sure to quote the comment if necessary. This option may appear more than once to add several comments. NOTE: all tags will be added to all encoded files. +
+ + --tag-from-file=FIELD=FILENAME + + Like --tag, except FILENAME is a file whose contents will be read verbatim to set the tag value. The contents will be converted to UTF-8 from the local charset. This can be used to store a cuesheet in a tag (e.g. --tag-from-file="CUESHEET=image.cue"). Do not try to store binary data in tag fields! Use APPLICATION blocks for that. +
+ + -b #, --blocksize=# + + Specify the block size in samples. Subset streams must use one of 192/576/1152/2304/4608/256/512/1024/2048/4096 (and 8192/16384 if the sample rate is >48kHz). The reference encoder uses the same block size for the entire stream. +
+ + -m, --mid-side + + Enable mid-side coding (only for stereo streams). Tends to increase compression by a few percent on average. For each block both the stereo pair and mid-side versions of the block will be encoded, and smallest resulting frame will be stored. +
+ + -M, --adaptive-mid-side + + Enable adaptive mid-side coding (only for stereo streams). Like -m but the encoder adaptively switches between independent and mid-side coding, which is faster but yields less compression than -m (which does an exhaustive search). +
+ + -0 .. -8 + + Fastest compression .. highest compression. The default is -5. +
+ + -0, --compression-level-0 + + Synonymous with -l 0 -b 1152 -r 3 +
+ + -1, --compression-level-1 + + Synonymous with -l 0 -b 1152 -M -r 3 +
+ + -2, --compression-level-2 + + Synonymous with -l 0 -b 1152 -m -r 3 +
+ + -3, --compression-level-3 + + Synonymous with -l 6 -b 4096 -r 4 +
+ + -4, --compression-level-4 + + Synonymous with -l 8 -b 4096 -M -r 4 +
+ + -5, --compression-level-5 + + Synonymous with -l 8 -b 4096 -m -r 5 +
+ + -6, --compression-level-6 + + Synonymous with -l 8 -b 4096 -m -r 6 +
+ + -7, --compression-level-7 + + Synonymous with -l 8 -b 4096 -m -e -r 6 +
+ + -8, --compression-level-8 + + Synonymous with -l 12 -b 4096 -m -e -r 6 +
+ + --fast + + Fastest compression. Currently synonymous with -0 +
+ + --best + + Highest compression. Currently synonymous with -8 +
+ + -e,
--exhaustive-model-search +
+ Exhaustive model search (expensive!). Normally the encoder estimates the best model to use and encodes once based on the estimate. With an exhaustive model search, the encoder will generate subframes for every order and use the smallest. If the max LPC order is high this can significantly increase the encode time but can shave off another 0.5%. +
+ + -A "function", --apodization="function" + + Window audio data with given the apodization function. The functions are: bartlett, bartlett_hann, blackman, blackman_harris_4term_92db, connes, flattop, gauss(STDDEV), hamming, hann, kaiser_bessel, nuttall, rectangle, triangle, tukey(P), welch.
+ For gauss(STDDEV), STDDEV is the standard deviation (0<STDDEV<=0.5).
+ For tukey(P), P specifies the fraction of the window that is tapered (0<=P<=1; P=0 corresponds to "rectangle" and P=1 corresponds to "hann").
+ More than one -A option (up to 32) may be used. Any function that is specified erroneously is silently dropped. The encoder chooses suitable defaults in the absence of any -A options; any -A option specified replaces the default(s).
+ When more than one function is specified, then for every subframe the encoder will try each of them separately and choose the window that results in the smallest compressed subframe. Multiple functions can greatly increase the encoding time.
+
+ + -l #, --max-lpc-order=# + + Specifies the maximum LPC order. This number must be <= 32. For Subset streams, it must be <=12 if the sample rate is <=48kHz. If 0, the encoder will not attempt generic linear prediction, and use only fixed predictors. Using fixed predictors is faster but usually results in files being 5-10% larger. +
+ + -q #,
--qlp-coeff-precision=# +
+ Specifies the precision of the quantized LP coefficients, in bits. The default is -q 0, which means let the encoder decide based on the signal. Unless you really know your input file it's best to leave this up to the encoder. +
+ + -p,
--qlp-coeff-precision-search +
+ Do exhaustive LP coefficient quantization optimization. This option overrides any -q option. It is expensive and typically will only improve the compression a tiny fraction of a percent. -q has no effect when -l 0 is used. +
+ + -r [#,]#,
--rice-partition-order=[#,]# +
+ Set the [min,]max residual partition order. The min value defaults to 0 if unspecified.
+
+ By default the encoder uses a single Rice parameter for the subframe's entire residual. With this option, the residual is iteratively partitioned into 2^min# .. 2^max# pieces, each with its own Rice parameter. Higher values of max# yield diminishing returns. The most bang for the buck is usually with -r 2,2 (more for higher block sizes). This usually shaves off about 1.5%. The technique tends to peak out about when blocksize/(2^n)=128. Use -r 0,16 to force the highest degree of optimization. +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Format Options +
+ + --endian={big|little} + + Specify big-endian or little-endian byte order in the raw file. +
+ + --channels=# + + Specify the number of channels in the raw file. +
+ + --bps=# + + Specify the number of bits per sample in the raw file. +
+ + --sample-rate=# + + Specify the sample rate of the raw file. +
+ + --sign={signed|unsigned} + + Specify that the samples in the raw file are signed or unsigned (the default is signed). +
+ + --input-size=# + + Specify the size of the raw input in bytes. If you are encoding raw samples from stdin, you must set this option in order to be able to use --skip, --until, --cue-sheet, or other options that need to know the size of the input beforehand. If the size given is greater than what is found in the input stream, the encoder will complain about an unexpected end-of-file. If the size given is less, samples will be truncated. +
+ + --force-aiff-format + + Force the decoder to output AIFF format. This option is not needed if the output filename (as set by -o) ends with .aiff. Also, this option has no effect when encoding since input AIFF is auto-detected. +
+ + --force-raw-format + + Treat the input file (or output file if decoding) as a raw file, regardless of the extension. +
+
+ +
+ +
+ + + + + + + + +
+ Negative Options +
+ --no-adaptive-mid-side
+ --no-decode-through-errors
+ --no-delete-input-file
+ --no-escape-coding
+ --no-exhaustive-model-search
+ --no-lax
+ --no-mid-side
+ --no-ogg
+ --no-padding
+ --no-qlp-coeff-precision-search
+ --no-residual-gnuplot
+ --no-residual-text
+ --no-sector-align
+ --no-seektable
+ --no-silent
+ --no-verify + --no-warnings-as-errors +
+ Can all be used to turn off a particular option. +
+
+ +
+ Option Index
+
+ -0
+ -1
+ -2
+ -3
+ -4
+ -5
+ -6
+ -7
+ -8
+ -A
+ -a
+ --adaptive-mid-side
+ --analyze
+ --apodization
+ + -b
+ --best
+ --blocksize
+ --bps
+ -c
+ --channels
+ --compression-level-0
+ --compression-level-1
+ --compression-level-2
+ --compression-level-3
+ --compression-level-4
+ --compression-level-5
+ --compression-level-6
+ --compression-level-7
+ --compression-level-8
+ --cue
+ --cuesheet
+ -d
+ --decode
+ --decode-through-errors
+ --delete-input-file
+ -e
+ --endian
+ --exhaustive-model-search
+ --explain
+ -F
+ -f
+ --fast
+ --force-aiff-format
+ --force-raw-format
+ --force
+ -H
+ -h
+ --help
+ --input-size
+ --keep-foreign-metadata
+ -l
+ --lax
+ -M
+ -m
+ --max-lpc-order
+ --mid-side
+ --no-adaptive-mid-side
+ --no-decode-through-errors
+ --no-delete-input-file
+ --no-escape-coding
+ --no-exhaustive-model-search
+ --no-lax
+ --no-mid-side
+ --no-ogg
+ --no-padding
+ --no-qlp-coeff-precision-search
+ --no-residual-gnuplot
+ --no-residual-text
+ --no-sector-align
+ --no-seektable
+ --no-silent
+ --no-verify
+ --no-warnings-as-errors
+ --no-utf8-convert
+ -o
+ --ogg
+ --output-name
+ --output-prefix
+ -P
+ -p
+ --padding
+ --picture
+ -q
+ --qlp-coeff-precision
+ --qlp-coeff-precision-search
+ -r
+ --replay-gain
+ --residual-gnuplot
+ --residual-text
+ --rice-partition-order
+ -S
+ -s
+ --sample-rate
+ --sector-align
+ --seekpoint
+ --serial-number
+ --sign
+ --silent
+ --skip
+ --stdout
+ -T
+ -t
+ --tag
+ --tag-from-file
+ --test
+ --totally-silent
+ --until
+ -V
+ -v
+ --verify
+ -w
+ --warnings-as-errors
+ --version
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/documentation_tools_metaflac.html b/3rdparty/libflac/doc/html/documentation_tools_metaflac.html new file mode 100644 index 0000000..27c6dcc --- /dev/null +++ b/3rdparty/libflac/doc/html/documentation_tools_metaflac.html @@ -0,0 +1,570 @@ + + + + + + + + + + + + + + + + FLAC - documentation + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ metaflac +
+
+
+ Table of Contents + + General Usage
+
+ metaflac is the command-line .flac file metadata editor. You can use it to list the contents of metadata blocks, edit, delete or insert blocks, and manage padding.
+
+ metaflac takes a set of "options" (though some are not optional) and a set of FLAC files to operate on. There are three kinds of "options": +
    +
  • + Major operations, which specify a mode of operation like listing blocks, removing blocks, etc. These will have sub-operations describing exactly what is to be done. +
  • +
  • + Shorthand operations, which are convenient synonyms for major operations. For example, there is a shorthand operation --show-sample-rate that shows just the sample rate field from the STREAMINFO metadata block. +
  • +
  • + Global options, which affect all the operations. +
  • +
+ All of these are described in the tables below. At least one shorthand or major operation must be supplied. You can use multiple shorthand operations to do more than one thing to a file or set of files. Most of the common things to do to metadata have shorthand operations. As an example, here is how to show the MD5 signatures for a set of three FLAC files:
+
+ metaflac --show-md5sum file1.flac file2.flac file3.flac
+
+ Another example; this removes all DESCRIPTION and COMMENT tags in a set of FLAC files, and uses the --preserve-modtime global option to keep the FLAC file modification times the same (usually when files are edited the modification time is set to the current time):
+
+ metaflac --preserve-modtime --remove-tag=DESCRIPTION --remove-tag=COMMENT file1.flac file2.flac file3.flac
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ Global Options +
+ + --preserve-modtime + + Preserve the original modification time in spite of edits. +
+ + --with-filename + + Prefix each output line with the FLAC file name (the default if more than one FLAC file is specified). +
+ + --no-filename + + Do not prefix each output line with the FLAC file name (the default if only one FLAC file is specified) +
+ + --no-utf8-convert + + Do not convert tags from UTF-8 to local charset, or vice versa. This is useful for scripts, and setting tags in situations where the locale is wrong. +
+ + --dont-use-padding + + By default metaflac tries to use padding where possible to avoid rewriting the entire file if the metadata size changes. Use this option to tell metaflac to not take advantage of padding this way. +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Shorthand Operations +
+ + --show-md5sum + + Show the MD5 signature from the STREAMINFO block. +
+ + --show-min-blocksize + + Show the minimum block size from the STREAMINFO block. +
+ + --show-max-blocksize + + Show the maximum block size from the STREAMINFO block. +
+ + --show-min-framesize + + Show the minimum frame size from the STREAMINFO block. +
+ + --show-max-framesize + + Show the maximum frame size from the STREAMINFO block. +
+ + --show-sample-rate + + Show the sample rate from the STREAMINFO block. +
+ + --show-channels + + Show the number of channels from the STREAMINFO block. +
+ + --show-bps + + Show the # of bits per sample from the STREAMINFO block. +
+ + --show-total-samples + + Show the total # of samples from the STREAMINFO block. +
+ + --show-vendor-tag + + Show the vendor string from the VORBIS_COMMENT block. +
+ + --show-tag=NAME + + Show all tags where the the field name matches NAME. +
+ + --remove-tag=NAME + + Remove all tags whose field name is NAME. +
+ + --remove-first-tag=NAME + + Remove first tag whose field name is NAME. +
+ + --remove-all-tags + + Remove all tags, leaving only the vendor string. +
+ + --set-tag=FIELD + + Add a tag. The FIELD must comply with the Vorbis comment spec, of the form NAME=VALUE. If there is currently no tag block, one will be created. +
+ + --set-tag-from-file=FIELD + + Like --set-tag, except the VALUE is a filename whose contents will be read verbatim to set the tag value. Unless --no-utf8-convert is specified, the contents will be converted to UTF-8 from the local charset. This can be used to store a cuesheet in a tag (e.g. --set-tag-from-file="CUESHEET=image.cue"). Do not try to store binary data in tag fields! Use APPLICATION blocks for that. +
+ + --import-tags-from=FILE + + Import tags from a file. Use - for stdin. Each line should be of the form NAME=VALUE. Multi-line comments are currently not supported. Specify --remove-all-tags and/or --no-utf8-convert before --import-tags-from if necessary. If FILE is - (stdin), only one FLAC file may be specified. +
+ + --export-tags-to=FILE + + Export tags to a file. Use - for stdin. Each line will be of the form NAME=VALUE. Specify --no-utf8-convert if necessary. +
+ + --import-cuesheet-from=FILE + + Import a cuesheet from a file. Use - for stdin. Only one FLAC file may be specified. A seekpoint will be added for each index point in the cuesheet to the SEEKTABLE unless --no-cued-seekpoints is specified. +
+ + --export-cuesheet-to=FILE + + Export CUESHEET block to a cuesheet file, suitable for use by CD authoring software. Use - for stdout. Only one FLAC file may be specified on the command line. +
+ + --import-picture-from={FILENAME|SPECIFICATION} + + Import a picture and store it in a PICTURE metadata block. See the flac option --picture for an explanation of the SPECIFICATION syntax. +
+ + --export-picture-to=FILE + + Export PICTURE block to a file. Use - for stdout. Only one FLAC file may be specified on the command line. The first PICTURE block will be exported unless --export-picture-to is preceded by a --block-number=# option to specify the exact metadata block to extract. Note that the block number is the one shown by --list. +
+ + --add-replay-gain + + Calculates the title and album gains/peaks of the given FLAC files as if all the files were part of one album, then stores them as FLAC tags. The tags are the same as those used by vorbisgain. Existing ReplayGain tags will be replaced. If only one FLAC file is given, the album and title gains will be the same. Since this operation requires two passes, it is always executed last, after all other operations have been completed and written to disk. All FLAC files specified must have the same resolution, sample rate, and number of channels. The sample rate must be one of 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, or 48 kHz. +
+ + --remove-replay-gain + + Removes the ReplayGain tags. +
+ + --add-seekpoint={#|X|#x|#s} + + Add seek points to a SEEKTABLE block:
+
    +
  • + : a specific sample number for a seek point +
  • +
  • + : a placeholder point (always goes at the end of the SEEKTABLE) +
  • +
  • + #x : # evenly spaced seekpoints, the first being at sample 0 +
  • +
  • + #s : a seekpoint every # seconds; # does not have to be a whole number, it can be, for example, 9.5, meaning a seekpoint every 9.5 seconds +
  • +
+ If no SEEKTABLE block exists, one will be created. If one already exists, points will be added to the existing table, and any duplicates will be turned into placeholder points.
+ You may use many --add-seekpoint options; the resulting SEEKTABLE will be the unique-ified union of all such values. Example: --add-seekpoint=100x --add-seekpoint=3.5s will add 100 evenly spaced seekpoints and a seekpoint every 3.5 seconds.
+
+ + --add-padding=# + + Add a padding block of the given length (in bytes). The overall length of the new block will be 4 + length; the extra 4 bytes is for the metadata block header. +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Major Operations +
+ + --version + + Show the metaflac version number. +
+ + --list + + List the contents of one or more metadata blocks to stdout. By default, all metadata blocks are listed in text format. Use the following options to change this behavior:
+
+ + --block-number=#[,#[...]]
+ An optional comma-separated list of block numbers to display. The first block, the STREAMINFO block, is block 0.
+
+ + --block-type=type[,type[...]]
+ --except-block-type=type[,type[...]]
+ An optional comma-separated list of block types to be included or ignored with this option. Use only one of --block-type or --except-block-type. The valid block types are: STREAMINFO, PADDING, APPLICATION, SEEKTABLE, VORBIS_COMMENT. You may narrow down the types of APPLICATION blocks displayed as follows:
+ + + + + + + + + +
APPLICATION:abcdThe APPLICATION block(s) whose textual representation of the 4-byte ID is "abcd"
APPLICATION:0xXXXXXXXXThe APPLICATION block(s) whose hexadecimal big- endian representation of the 4-byte ID is "0xXXXXXXXX". For the example "abcd" above the hexadecimal equivalalent is 0x61626364
+
+ + NOTE: if both --block-number and --[except-]block-type are specified, the result is the logical AND of both arguments.
+
+ + --application-data-format=hexdump|text
+ If the application block you are displaying contains binary data but your --data-format=text, you can display a hex dump of the application data contents instead using --application-data-format=hexdump. +
+ + --remove + + Remove one or more metadata blocks from the metadata. Unless --dont-use-padding is specified, the blocks will be replaced with padding. You may not remove the STREAMINFO block.
+
+ + --block-number=#[,#[...]]
+ --block-type=type[,type[...]]
+ --except-block-type=type[,type[...]]
+ See --list above for usage.
+
+ + NOTE: if both --block-number and --[except-]block-type are specified, the result is the logical AND of both arguments. +
+ + --remove-all + + Remove all metadata blocks (except the STREAMINFO block) from the metadata. Unless --dont-use-padding is specified, the blocks will be replaced with padding. +
+ + --merge-padding + + Merge adjacent PADDING blocks into single blocks. +
+ + --sort-padding + + Move all PADDING blocks to the end of the metadata and merge them into a single block. +
+
+ +
+ Option Index
+
+ --add-padding
+ --add-replay-gain
+ --add-seekpoint
+ --dont-use-padding
+ --export-cuesheet-to
+ --export-picture-to
+ --export-tags-to
+ --import-cuesheet-from
+ --import-picture-from
+ --import-tags-from
+ --list
+ --merge-padding
+ --no-filename
+ --no-utf8-convert
+ --preserve-modtime
+ --remove-all-tags
+ --remove-all
+ --remove-first-tag
+ --remove-replay-gain
+ --remove-tag
+ --remove
+ --set-tag-from-file
+ --set-tag
+ --show-bps
+ --show-channels
+ --show-max-blocksize
+ --show-max-framesize
+ --show-md5sum
+ --show-min-blocksize
+ --show-min-framesize
+ --show-sample-rate
+ --show-tag
+ --show-total-samples
+ --show-vendor-tag
+ --sort-padding
+ --version
+ --with-filename
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/documentation_tools_plugins.html b/3rdparty/libflac/doc/html/documentation_tools_plugins.html new file mode 100644 index 0000000..0605c34 --- /dev/null +++ b/3rdparty/libflac/doc/html/documentation_tools_plugins.html @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + FLAC - documentation + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+ +
+
+ Normally the FLAC plugin for XMMS is installed with a package, but some of the binary builds have a compiled plugin. All that is necessary is to copy libxmms-flac.so to the directory where XMMS looks for input plugins (usually /usr/lib/xmms/Input or $HOME/.xmms/Input). There is nothing else to configure. Make sure to restart XMMS before trying to play any .flac files. +
+ +
+ +
+ +
+ +
+
+ Since Winamp 5.31, Nullsoft has supplied a FLAC plugin with their Full install; nothing else is needed to get FLAC to play in Wnamp.
+
+ Before Winamp 5.31 it was necessary to use our FLAC plugin. If you have an older version of Winamp, our plugin is still available in the FLAC Installer for Windows. The Winamp plugin should work for both Winamp2 and Winamp5. All that is necessary is to copy in_flac.dll to the Plugins/ directory of your Winamp installation. There is nothing else to configure. Make sure to restart Winamp before trying to play any .flac files. +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/download.html b/3rdparty/libflac/doc/html/download.html new file mode 100644 index 0000000..cdc7768 --- /dev/null +++ b/3rdparty/libflac/doc/html/download.html @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + FLAC - download + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ download +
+
+
+ Many different programs support FLAC. If you are not sure what to download, see Using FLAC for instructions and guides on playing FLAC files, ripping CDs to FLAC, etc.
+
+ This section is for the official FLAC tools. See the extras section below for other third-party tools.
+
+ All source code and binaries are freely available and distributed under Open Source licenses. The codec libraries are distributed under Xiph.org's BSD license, and the plugins and command-line utilites (flac and metaflac) are distributed under the GPL. If you would like to redistribute parts or all of FLAC under different terms, contact Josh Coalson. (For more information, see the license page.) + +
+ +
+ +
+ +
+
+ extras +
+
+
+ NOTE: these extras are not part of the FLAC project. Most (except those marked [$]) are freely available but distributed under their authors' own terms.
+
+ NOTE: make sure to check out the links page for a large list of open-source software supporting FLAC.
+
+ GUI encoding/decoding front-ends: +
    +
  • + Windows +
      +
    • AutoFLAC for automated ripping and encoding to FLAC with EAC (ExactAudioCopy); also has a write mode for burning back to CD for an exact copy
    • +
    • dBpowerAMP, a swiss army knife that can convert and play many formats, including FLAC.
    • +
    • Flacattack: an all-in-one tool that works with ExactAudioCopy to encode a CD image to FLAC, embed the cuesheet, add ReplayGain, create lossy files, etc. all in a customizable directory structure.
    • +
    • FLACdrop, an Oggdrop-like frontend for Windows.
    • +
    • FLAC frontend, a Windows GUI, or the even more versatile Multi frontend.
    • +
    • FLACTester, can test a whole tree of FLAC files for errors and generate a report.
    • +
    • Frontah, a new frontend to many codecs, including FLAC. Still in beta but has good reviews.
    • +
    • GX::Transcoder
    • +
    • MAREO is a "virtual" encoder that can be used with ExactAudioCopy to encode to multiple formats (including FLAC) at once while ripping.
    • +
    • MediaCoder converts between many audio and video formats.
    • +
    • MediaMonkey can organize, encode, decode, edit tags, and rip to FLAC and other formats.
    • +
    • Yahoo! Music Engine
    • +
    +
  • +
  • + Mac OS X +
      +
    • iTunes-to-FLAC, an AppleScript for converting between FLAC and WAVE/AIFF with tagging via iTunes.
    • +
    • MacFLAC, a FLAC distribution which also includes nice graphical front-end.
    • +
    • Max, a CD ripper and encoder that supports several formats including FLAC.
    • +
    • MediaRage, for editing FLAC metadata (also supports Vorbis and other formats).
    • +
    • RipBeak is a nice GUI encoding frond-end that supports FLAC as well as Vorbis and MP3.
    • +
    • xACT, another FLAC distribution with a graphical front-end to FLAC and other formats.
    • +
    +
  • +
  • + Unix +
      +
    • Grip is a great ripping and encoding front end and can be easily configured to use flac. See this thread on how to configure Grip for FLAC.
    • +
    • xmcd is a CD ripper with CDDB support as well as a player.
    • +
    • (many more)
    • +
    +
  • +
  • + Pocket PC + +
  • +
+ CD burning: + + Players and plugins: + +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/faq.html b/3rdparty/libflac/doc/html/faq.html new file mode 100644 index 0000000..e110c12 --- /dev/null +++ b/3rdparty/libflac/doc/html/faq.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + + FLAC - faq + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ faq +
+
+
+ General + + Tools + + API + + Project + + +

+ General +

+ + What is FLAC?
+
+ FLAC stands for Free Lossless Audio Codec, an audio format similar to MP3, but lossless, meaning that audio is compressed in FLAC without any loss in quality. This is similar to how Zip works, except with FLAC you will get much better compression because it is designed specifically for audio, and you can play back compressed FLAC files in your favorite player (or your car or home stereo, see supported devices) just like you would an MP3 file.
+
+ For more details, see What is FLAC?
+
+ I have a FLAC file, how do I play it?
+ How can I create FLAC files?
+
+ See Using FLAC.
+
+ What licensing applies to the FLAC format and software?
+
+ See the license page.
+
+ What kinds of tags does FLAC support?
+
+ FLAC has it's own native tagging system which is identical to that of Vorbis. They are called alternately "FLAC tags" and "Vorbis comments". It is the only tagging system required and guaranteed to be supported by FLAC implementations.
+
+ Out of convenience, the reference decoder knows how to skip ID3 tags so that they don't interfere with decoding. But you should not expect any tags beside FLAC tags to be supported in applications; some implementations may not even be able to decode a FLAC file with ID3 tags.
+
+ What software support FLAC?
+
+ This list is so large now it is difficult to maintain and keep up-to-date. For a partial list of open-source software that supports FLAC, see the software section of the links page. For a partial list of the most popular software used to encode, decode, play, tag, and rip FLAC files, see the download page.
+
+ How can I play FLAC in Windows Media Player?
+
+ See this guide.
+
+ What hardware products support FLAC?
+
+ See the hardware section of the links page.
+
+ What is the difference between (native) FLAC and Ogg FLAC?
+
+ You can think of an audio codec as having two layers. The inside layer is the raw compressed data, and the outside layer is the "container" or "transport layer" that splits and arranges the compressed data in pieces so it can be seeked through, edited, etc.
+
+ "Native" FLAC is the compressed FLAC data stored in a very minimalist container, designed to be very efficient at storing single audio streams.
+
+ Ogg FLAC is the compressed FLAC data stored in an Ogg container. Ogg is a much more powerful transport layer that enables mixing several kinds of different streams (audio, data, metadata, etc). The overhead is slightly higher than with native FLAC.
+
+ In either case, the compressed FLAC data is the same and one can be converted to the other without re-encoding.
+
+ Which should I use, (native) FLAC or Ogg FLAC?
+
+ The short answer right now is probably "native FLAC". If all you are doing is compressing audio to be played back later, native FLAC will do everything you need, is more widely supported, and will yield smaller files. If you plan to edit the compressed audio, or want to multiplex the audio with video later in an Ogg container, Ogg FLAC is a better choice.
+
+ Why aren't PERFORMER/TITLE/etc tags stored in the FLAC CUESHEET block?
+
+ This has turned out to be a pretty polarizing issue and requires a long explanation.
+
+ The original purpose of a cue sheet in CD authoring software was to lay out the disc, essentially specifying how the audio will be organized on the disc; some of the information ends up as the CD table of contents: the track numbers and locations, and the index points. Later CD-TEXT was added. But CD-TEXT is a very complex spec, and actually goes in the CD subcode data. It is internationalized, not through Unicode, but with several different character sets, some of them multi-byte. It even allows for graphics. In cue sheets, the TITLE/PERFORMER/etc tags are just a limited shorthand for authoring CD-TEXT, but when you rip, you almost never parse the CD-TEXT, you get it from another database, and it doesn't really belong in the FLAC CUESHEET block.
+
+ For FLAC the intention is that applications can calculate the CDDB or CDindex ID from the CUESHEET block and look it up in an online or local database just like CD rippers and players do. But if you really want it in the file itself, the track metadata should be stored separate from the CUESHEET, and already can be because of FLAC's metadata system. There just isn't a method specified yet because as soon as it is, people will say that it's not flexible enough. From experience (and you can see this come up time and time again in many lists), anyone who is going to the trouble of keeping a lossless collection in the first place will already be picky about metadata, and it is hard to come up with a standard that will please even the majority. That is the big problem with metadata and is why Xiph has deferred on it, waiting for someone to come up with a good metadata spec that can be multiplexed together with data.
+
+ Some players (for example Foobar2000) allow you to store the CDDB data as FLAC tags and can parse that.
+
+ Why doesn't FLAC store all WAVE metadata?
+ If flac compresses WAVE files, why isn't it technically a WAVE file compressor?
+
+ (By default, flac does not store WAVE metadata, but it can with the --keep-foreign-metadata option described below.)
+
+ FLAC is a general-purpose audio format, not just a compressed WAVE file format. There's a subtle difference. WAVE is a complicated standard; many kinds of data besides audio data can be put in it. FLAC's purpose is not to reproduce a WAVE file, including all the non-audio data that is in it, it is to losslessly compress the audio.
+
+ However, if you really need to store the non-audio parts of a WAVE or AIFF file, you can use the --keep-foreign-metadata option to flac when encoding to store it in FLAC metadata, then use the option again when decoding to restore in to the decoded WAVE/AIFF file.
+
+ Why do some lossless comparisons say FLAC does not support RIFF chunks?
+
+ This is a limitation that no longer exists with FLAC (see above).
+
+ Why do the encoder settings have a big effect on the encoding time but not the decoding time?
+
+ It's hard to explain without going into the codec design, but to oversimplify, the encoder is looking for functions that approximate the signal. Higher settings make the encoder search more to find better approximations. The functions are themselves encoded in the FLAC file. Decoding only requires computing the one chosen function, and the complexity of the function is very stable. This is by design, to make decoding easier, and is one of the things that makes FLAC easy to implement in hardware.
+
+ Why use FLAC instead of other codecs that compress more?
+
+ For most users, a small difference in filesize is usually far outweighed by FLAC's advantages: open patent free codec, portable open source (BSD) reference implementation, documented API, multi-platform support, hardware support, multi-channel support, etc. Improving FLAC to get a little more compression is not worth making it more complex and more compute-intensive to decode, and hence, less likely to be supported in hardware.
+
+ Why can't you make FLAC encode faster?
+
+ FLAC already encodes pretty fast. It is faster than real-time even on weak systems and is not much slower than even the fastest codecs. And it is faster than the CD ripping process with which it is usually paired, meaning even if it went faster, it would not speed up the ripping-encoding process anyway.
+
+ Part of the reason is that FLAC is asymmetric (see also). That means that it is optimized for decoding speed at the expense of encoding speed, because it makes it easier to decode on low-powered hardware, and because you only encode once but you decode many times.
+
+ How can I be sure FLAC is lossless?
+ How much testing has been done on FLAC?
+
+ First, FLAC is probably the only lossless compressor that has a published and comprehensive test suite. With the others you rely on the author's personal testing or the longevity of the program. But with FLAC you can download the whole test suite and run it on any version you like, or alter it to test your own data. The test suite checks every function in the API, as well as running many thousands of streams through an encode-decode-verify process, to test every nook and cranny of the system. Even on a fast machine the full test suite takes hours. The full test suite must pass on several platforms before a release is made.
+
+ Second, you can always use the -V option with flac (also supported by most GUI frontends) to verify while encoding. With this option, a decoder is run in parallel to the encoder and its output is compared against the original input. If a difference is found flac will stop with an error.
+
+ Finally, FLAC is used by many people and has been judged stable enough by many software and hardware makers to be incorporated into their products.
+
+ What is the lowest bitrate (or highest compression) achievable with FLAC?
+
+ With FLAC you do not specify a bitrate like with some lossy codecs. It's more like specifying a quality with Vorbis or MPC, except with FLAC the quality is always "lossless" and the resulting bitrate is roughly proportional to the amount of information in the original signal. You cannot control the bitrate much and the result can be from around 100% of the input rate (if you are encoding noise), down to almost 0 (encoding silence).
+
+ How many channels does FLAC support?
+
+ FLAC supports from 1 to 8 channels per stream. Channels are only grouped in FLAC to take advantage of interchannel correlation and to define common channel assignments (like stereo L/R, 5.1 surround, et cetera). When encoding a large number of independent channels it is expected that they are coded separately and if required, multiplexed together in a suitable container like Ogg or Matroska.
+
+ What kind of audio samples does FLAC support?
+
+ FLAC supports linear PCM samples with a resolution between 4 and 32 bits per sample. FLAC does not support floating point samples. In some cases it is possible to losslessly transform samples from an incompatible range to a FLAC-compatible range before encoding.
+
+ FLAC supports linear sample rates from 1Hz - 655350Hz in 1Hz increments. + +

+ Tools +

+ + How do I set up EAC to rip directly to FLAC?
+
+ See Case's excellent EAC configuration page. Or use AutoFLAC, Omni Encoder, or MAREO to rip to FLAC or multiple formats at once.
+
+ Why am I getting "Run-time error '75': Path/File access error" with FLAC Frontend?
+
+ Depending on how FLAC Frontend is installed, it could be one of two things: 1) you are trying to encode to file to a directory where you do not have write permission; 2) the FLAC Frontend program must be set to run as Administrator by opening Windows Explorer, navigating to C:\Program Files\FLAC (or wherever FLAC was installed), then right-clicking on FLAC Frontend.exe and checking "Run this program as an administrator".
+
+ How do I encode a file that starts with a dash?
+
+ When using flac to encode on the command-line, a file that starts with a dash will be treated as an option, but there is a simple workaround. Use -- to signal the end of options and the beginning of filenames, like so:
+
+ flac -V -- -01-name.wav
+
+ Why does it take so long to edit some FLAC files with metaflac?
+
+ Since metadata is stored at the beginning of a FLAC file, changing the length of it can sometimes cause the whole file to be rewritten. You can avoid this by adding padding with flac when you encode, or with metaflac after encoding. By default, flac adds 8k of padding; you can change this amount if you need more or less.
+
+ Why don't Unicode file names work with flac/metaflac on Windows?
+
+ Windows implements Unicode filenames differently than all other operating systems, and can only be supported via Windows APIs (non-portable). Also the method is different for different versions of Windows. It's so hard to get right that most programs that have to work for other operating systems also do not support it. A workaround can be found here.
+
+ Why don't wildcards for file names like *.flac or *.wav work with flac/metaflac on Windows?
+
+ The Windows command shells (cmd.exe, command.com) implement wildcard handling differently than most other shells, leaving it up to the program to do everything including difficult and ambiguous cases. For an explanation of why wildcards on cmd.exe/command.com are dangerous, see here. Better command shells for Windows exist, e.g. from Cygwin. A workaround with the Windows shells is to do something like:
+
+ for %F in (*.wav) do flac "%F"
+
+ but care must still be taken that the command will execute as intended.
+
+ I compressed a file to FLAC with verify on, and flac said "Verify FAILED!" Why?
+
+ The only known cause of verify errors is faulty hardware. The dead giveaway is that if you repeat the exact same command, the error occurs in a different place or not at all. This can also happen when decoding or testing a FLAC file. If this is happening it is your hardware and not a FLAC bug.
+
+ The problem is usually caused by overclocking/overheating the CPU or bad RAM. Try one of the many free programs available for testing hardware (e.g. Memtest86+). We have had reports of a few cases where a system is passing with flying colors and still getting unrepeatable FLAC errors, and the one thing many (all?) of these systems have in common is an ASUS motherboard (A7V133 or P3V4X) which we suspect is buggy in some way. (See also)
+
+ If you ever have a verify error that fails at the same place every time, please file a bug, uploading a sample according to the instructions found at the bottom of this bug report.
+
+ I compressed a WAVE file to FLAC, then decompressed to WAVE, and the two weren't identical. Why?
+ I compressed a WAVE file to FLAC and it said "warning: skipping unknown sub-chunk LIST". Why?
+
+ WAVE is a complicated standard; many kinds of data besides audio data can be put in it. Most likely what has happened is that the application that created the original WAVE file also added some extra information for it's own use, which FLAC does not store or recreate by default (but can with the --keep-foreign-metadata option) (see also). The audio data in the two WAVE files will be identical. There are other tools to compare just the audio content of two WAVE files; ExactAudioCopy has such a feature.
+
+ For the more technically inclined, by default FLAC only stores what is in the 'fmt ' and 'data' sub-chunks of a WAVE file. (see also)
+
+ I decoded a FLAC file and the WAVE is 2 bytes shorter than the original. Why?
+
+ The difference is probably that between an 18-byte 'fmt ' subchunk in the original WAVE vs. a 16-byte one in the decoded WAVE. With WAVE there is more than one way to write identical formatting information, but FLAC always writes the most common legal form. (see also)
+
+ Why did I get "ERROR initializing encoder, state = FLAC__STREAM_ENCODER_NOT_STREAMABLE"?
+
+ You specified encoding options that are outside the Streamable subset. If that is what you really wanted and you understand the consequences, you can use flac --lax to generate a non-Subset stream. The resulting file may not be streamable or play in all players.
+
+ Why doesn't the same file compressed on different machines with the same options yield the same FLAC file?
+
+ It's not supposed to, and neither does it mean either encoding was bad. There are many variations between different machines or even different builds of flac on the same machine that can lead to small differences in the FLAC file, even if they have the exact same final size. This is normal. + +

+ API +

+ + Why does your API change for point releases?
+
+ The FLAC release numbering scheme of MAJOR.MINOR.MICRO reflects the state of the FLAC format, not the API. This is most intuitive for users, at the expense of flustering developers. The shared library number (derived from the libtool current:revision:age number) is the indicator of binary API compatibility. As of FLAC 1.1.3, the current, revision, and age numbers are also #defined in the library headers to make porting easier; see the porting guide.
+
+ How can I determine the encoded frame length?
+
+ With native FLAC, it is not possible to determine the frame length without decoding. Probably if I had it all to do again I would have constrained the possible block sizes, which would have made it more practical to put the frame length in the frame header. For an example of how to find the frame boundaries in a stream, see the source code to metaflac, in the functionality that adds seek points.
+
+ With Ogg FLAC, it can be calculated from the Ogg page header. + +

+ Project +

+ + Where are the mailing lists, forums, discussion areas, etc.?
+
+ There are a few places. The main discussions happen on the official FLAC mailing lists (you must subscribe to post). Also, there is a lot of discussion relating to FLAC on Hydrogen Audio.
+
+ How do I submit a bug report?
+
+ First, visit the bug tracking page and do a little searching of both open and closed bugs to see if yours is already there. If you have something truly new, submit a new bug. Make sure to monitor the bug or include your email address in the description. Include as much information as possible: the version of FLAC that you are running, the name and version of any frontend you are running, your operating system and version, your CPU type and speed, the amount of memory you have, where you downloaded FLAC from, the exact error message (if any) copied from the console, and anything else you may think will help. +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/favicon.ico b/3rdparty/libflac/doc/html/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..594fe38a4b7fe7cba2cb525adc19f3a2e9090e84 GIT binary patch literal 1406 zcmeHHze~eV5dLafeQMRT)i(WMeKBcGs+I;^TpbH81qTD}O6VZLL4yB5agg93#jOrP zI|y+Q`d0{Dg!-q%OWG*~o;q~*(SD%1nhy8gg?s0sb=v}J1|(I6@B5VE!#FTtkZ<@ggig7G_W@)s zLn=u09tOQJ@@s3MUF6gwrYN`$x)p>YxcHp}G|!fb@A zNOB%b5vJ_vi0uL?&KE;msetqckNMy6F<$3IZu+wD$&s-Py&XCf+9&_99hD7WD3y@C6w*ebb1YHCbPgMqD+d7 I82>rH0O7Yrc>n+a literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/features.html b/3rdparty/libflac/doc/html/features.html new file mode 100644 index 0000000..75a8b03 --- /dev/null +++ b/3rdparty/libflac/doc/html/features.html @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + FLAC - features + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+ +
+
+ FLAC stands for Free Lossless Audio Codec, an audio format similar to MP3, but lossless, meaning that audio is compressed in FLAC without any loss in quality. This is similar to how Zip works, except with FLAC you will get much better compression because it is designed specifically for audio, and you can play back compressed FLAC files in your favorite player (or your car or home stereo, see supported devices) just like you would an MP3 file.
+
+ FLAC stands out as the fastest and most widely supported lossless audio codec, and the only one that at once is non-proprietary, is unencumbered by patents, has an open-source reference implementation, has a well documented format and API, and has several other independent implementations.
+
+ FLAC supports tagging, cover art, and fast seeking. FLAC is freely available and supported on most operating systems, including Windows, "unix" (Linux, *BSD, Solaris, OS X, IRIX), BeOS, OS/2, and Amiga.
+
+ There are many programs and devices that support FLAC, but the core FLAC project here maintains the format and provides programs and libraries for working with FLAC files. See Getting FLAC for instructions on downloading and installing the official FLAC tools, or Using FLAC for instructions and guides on playing FLAC files, ripping CDs to FLAC, etc.
+
+ When we say that FLAC is "Free" it means more than just that it is available at no cost. It means that the specification of the format is fully open to the public to be used for any purpose (the FLAC project reserves the right to set the FLAC specification and certify compliance), and that neither the FLAC format nor any of the implemented encoding/decoding methods are covered by any known patent. It also means that all the source code is available under open-source licenses. It is the first truly open and free lossless audio format. (For more information, see the license page.)
+
+ Notable features of FLAC: +
    +
  • + Lossless: The encoding of audio (PCM) data incurs no loss of information, and the decoded audio is bit-for-bit identical to what went into the encoder. Each frame contains a 16-bit CRC of the frame data for detecting transmission errors. The integrity of the audio data is further insured by storing an MD5 signature of the original unencoded audio data in the file header, which can be compared against later during decoding or testing. +
  • +
  • + Fast: FLAC is asymmetric in favor of decode speed. Decoding requires only integer arithmetic, and is much less compute-intensive than for most perceptual codecs. Real-time decode performance is easily achievable on even modest hardware. +
  • +
  • + Hardware support: FLAC is supported by dozens of consumer electronic devices, from portable players, to home stereo equipment, to car stereo. +
  • +
  • + Flexible metadata: FLAC's metadata system supports tags, cover art, seek tables, and cue sheets. Applications can write their own APPLICATION metadata once they register an ID. New metadata blocks can be defined and implemented in future versions of FLAC without breaking older streams or decoders. +
  • +
  • + Seekable: FLAC supports fast sample-accurate seeking. Not only is this useful for playback, it makes FLAC files suitable for use in editing applications. +
  • +
  • + Streamable: Each FLAC frame contains enough data to decode that frame. FLAC does not even rely on previous or following frames. FLAC uses sync codes and CRCs (similar to MPEG and other formats), which, along with framing, allow decoders to pick up in the middle of a stream with a minimum of delay. +
  • +
  • + Suitable for archiving: FLAC is an open format, and there is no generation loss if you need to convert your data to another format in the future. In addition to the frame CRCs and MD5 signature, flac has a verify option that decodes the encoded stream in parallel with the encoding process and compares the result to the original, aborting with an error if there is a mismatch. +
  • +
  • + Convenient CD archiving: FLAC has a "cue sheet" metadata block for storing a CD table of contents and all track and index points. For instance, you can rip a CD to a single file, then import the CD's extracted cue sheet while encoding to yield a single file representation of the entire CD. If your original CD is damaged, the cue sheet can be exported later in order to burn an exact copy. +
  • +
  • + Error resistant: Because of FLAC's framing, stream errors limit the damage to the frame in which the error occurred, typically a small fraction of a second worth of data. Contrast this with some other lossless codecs, in which a single error destroys the remainder of the stream. +
  • +
+ What FLAC is not: +
    +
  • + Lossy. FLAC is intended for lossless compression only, as there are many good lossy formats already, such as Vorbis, MPC, and MP3 (see LAME for an excellent open-source implementation). +
  • +
  • + DRM. There is no intention to add any copy prevention methods. Of course, we can't stop someone from encrypting a FLAC stream in another container (e.g. the way Apple encrypts AAC in MP4 with FairPlay), that is the choice of the user. +
  • +
+
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/flac.css b/3rdparty/libflac/doc/html/flac.css new file mode 100644 index 0000000..41e499f --- /dev/null +++ b/3rdparty/libflac/doc/html/flac.css @@ -0,0 +1,191 @@ +/* + * Copyright (c) 2005,2006,2007 Josh Coalson + * Permission is granted to copy, distribute and/or modify this document + * under the terms of the GNU Free Documentation License, Version 1.1 + * or any later version published by the Free Software Foundation; + * with no invariant sections. + * A copy of the license can be found at http://www.gnu.org/copyleft/fdl.html + */ + +body +{ + background-color: #99CC99; + color: black; + margin: 0px; + padding: 0px; +} + +div +{ + background-color: #99CC99; + margin: 0px; + padding: 0px; +} + +div.logo +{ + background-color: black; + padding: 1px; + text-align: center; +} + +div.navbar +{ + border-width: 2px 0px 2px 0px; + border-style: solid; + border-color: black; + background-color: #D3D4C5; + padding: 3px; + text-align: center; +} + +div.langbar +{ + border-width: 0px 0px 2px 0px; + border-style: solid; + border-color: black; + background-color: #EEEED4; + padding: 3px; + text-align: center; +} + +div.above_nav +{ + height: 25px; +} + +div.below_nav +{ + height: 25px; +} + +div.body_with_sidebar +{ +/* text-align: left; */ +} + +div.box +{ + text-align: left; + margin: 0px 8px 0px 8px; + background-color: #EEEED4; +} + +div.box_title +{ + border-width: 1px 0px 0px 0px; + border-style: solid; + border-color: black; + background-color: #D3D4C5; + padding: 3px; + font-family: lucida, verdana, helvetica, arial, sans-serif; + font-weight: bold; + font-size: 150%; +} + +div.box_header +{ + border-width: 1px 0px 0px 0px; + border-style: solid; + border-color: black; + background-color: #EEEED4; + padding: 3px; +} + +div.box_footer +{ + border-width: 0px 0px 1px 0px; + border-style: solid; + border-color: black; + background-color: #EEEED4; + padding: 3px; +} + +div.box_body +{ + background-color: #EEEED4; + padding: 0px 3px 0px 3px; + font-family: lucida, verdana, helvetica, arial, sans-serif; + font-weight: normal; + font-size: 100%; +} + +div.smallbox +{ + text-align: left; + margin: 0px 8px 0px 0px; + background-color: #EEEED4; +} + +div.smallbox_title +{ + text-align: center; + border-width: 1px 0px 0px 0px; + border-style: solid; + border-color: black; + background-color: #D3D4C5; + padding: 3px; + font-family: lucida, verdana, helvetica, arial, sans-serif; + font-weight: bold; + font-size: 100%; +} + +div.smallbox_header +{ + border-width: 1px 0px 0px 0px; + border-style: solid; + border-color: black; + background-color: #EEEED4; + padding: 3px; +} + +div.smallbox_footer +{ + border-width: 0px 0px 1px 0px; + border-style: solid; + border-color: black; + background-color: #EEEED4; + padding: 3px; +} + +div.smallbox_body +{ + background-color: #EEEED4; + padding: 0px 3px 0px 3px; + font-family: lucida, verdana, helvetica, arial, sans-serif; + font-weight: normal; + font-size: 80%; +} + +div.copyright +{ + text-align: left; + margin: 10px; +} + +span.commandname +{ + font-family: monospace; + font-weight: bold; +} + +span.command +{ + font-family: monospace; + font-weight: bold; +} + +span.argument +{ + font-family: monospace; +} + +span.code +{ + font-family: monospace; +} + +a:link {color:#336699; background-color:transparent} +a:visited {color:#336699; background-color:transparent} +a:active {color:#336699; background-color:transparent} +a:hover {color:#336699; background-color:transparent} diff --git a/3rdparty/libflac/doc/html/format.html b/3rdparty/libflac/doc/html/format.html new file mode 100644 index 0000000..641c0e1 --- /dev/null +++ b/3rdparty/libflac/doc/html/format.html @@ -0,0 +1,1852 @@ + + + + + + + + + + + + + + + + FLAC - format + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ format +
+
+
+ This is a detailed description of the FLAC format. There is also a companion document that describes FLAC-to-Ogg mapping.
+
+ For a user-oriented overview, see About the FLAC Format.
+
+ Table of Contents + + Acknowledgments
+
+ FLAC owes much to the many people who have advanced the audio compression field so freely. For instance: +
    +
  • + A. J. Robinson for his work on Shorten; his paper is a good starting point on some of the basic methods used by FLAC. FLAC trivially extends and improves the fixed predictors, LPC coefficient quantization, and Rice coding used in Shorten. +
  • +
  • + S. W. Golomb and Robert F. Rice; their universal codes are used by FLAC's entropy coder. +
  • +
  • + N. Levinson and J. Durbin; the reference encoder uses an algorithm developed and refined by them for determining the LPC coefficients from the autocorrelation coefficients. +
  • +
  • + And of course, Claude Shannon +
  • +
+ Scope
+
+ It is a known fact that no algorithm can losslessly compress all possible input, so most compressors restrict themselves to a useful domain and try to work as well as possible within that domain. FLAC's domain is audio data. Though it can losslessly code any input, only certain kinds of input will get smaller. FLAC exploits the fact that audio data typically has a high degree of sample-to-sample correlation.
+
+ Within the audio domain, there are many possible subdomains. For example: low bitrate speech, high-bitrate multi-channel music, etc. FLAC itself does not target a specific subdomain but many of the default parameters of the reference encoder are tuned to CD-quality music data (i.e. 44.1kHz, 2 channel, 16 bits per sample). The effect of the encoding parameters on different kinds of audio data will be examined later.
+
+ Architecture
+
+ Similar to many audio coders, a FLAC encoder has the following stages: +
    +
  • + Blocking. The input is broken up into many contiguous blocks. With FLAC, the blocks may vary in size. The optimal size of the block is usually affected by many factors, including the sample rate, spectral characteristics over time, etc. Though FLAC allows the block size to vary within a stream, the reference encoder uses a fixed block size. +
  • +
  • + Interchannel Decorrelation. In the case of stereo streams, the encoder will create mid and side signals based on the average and difference (respectively) of the left and right channels. The encoder will then pass the best form of the signal to the next stage. +
  • +
  • + Prediction. The block is passed through a prediction stage where the encoder tries to find a mathematical description (usually an approximate one) of the signal. This description is typically much smaller than the raw signal itself. Since the methods of prediction are known to both the encoder and decoder, only the parameters of the predictor need be included in the compressed stream. FLAC currently uses four different classes of predictors (described in the prediction section), but the format has reserved space for additional methods. FLAC allows the class of predictor to change from block to block, or even within the channels of a block. +
  • +
  • + Residual coding. If the predictor does not describe the signal exactly, the difference between the original signal and the predicted signal (called the error or residual signal) must be coded losslessy. If the predictor is effective, the residual signal will require fewer bits per sample than the original signal. FLAC currently uses only one method for encoding the residual (see the Residual coding section), but the format has reserved space for additional methods. FLAC allows the residual coding method to change from block to block, or even within the channels of a block. +
  • +
+ In addition, FLAC specifies a metadata system, which allows arbitrary information about the stream to be included at the beginning of the stream.
+
+ Definitions
+
+ Many terms like "block" and "frame" are used to mean different things in differenct encoding schemes. For example, a frame in MP3 corresponds to many samples across several channels, whereas an S/PDIF frame represents just one sample for each channel. The definitions we use for FLAC follow. Note that when we talk about blocks and subblocks we are referring to the raw unencoded audio data that is the input to the encoder, and when we talk about frames and subframes, we are referring to the FLAC-encoded data. +
    +
  • + Block: One or more audio samples that span several channels. +
  • +
  • + Subblock: One or more audio samples within a channel. So a block contains one subblock for each channel, and all subblocks contain the same number of samples. +
  • +
  • + Blocksize: The number of samples in any of a block's subblocks. For example, a one second block sampled at 44.1KHz has a blocksize of 44100, regardless of the number of channels. +
  • +
  • + Frame: A frame header plus one or more subframes. +
  • +
  • + Subframe: A subframe header plus one or more encoded samples from a given channel. All subframes within a frame will contain the same number of samples. +
  • +
+ Blocking
+
+ The size used for blocking the audio data has a direct effect on the compression ratio. If the block size is too small, the resulting large number of frames mean that excess bits will be wasted on frame headers. If the block size is too large, the characteristics of the signal may vary so much that the encoder will be unable to find a good predictor. In order to simplify encoder/decoder design, FLAC imposes a minimum block size of 16 samples, and a maximum block size of 65535 samples. This range covers the optimal size for all of the audio data FLAC supports.
+
+ Currently the reference encoder uses a fixed block size, optimized on the sample rate of the input. Future versions may vary the block size depending on the characteristics of the signal.
+
+ Blocked data is passed to the predictor stage one subblock (channel) at a time. Each subblock is independently coded into a subframe, and the subframes are concatenated into a frame. Because each channel is coded separately, it means that one channel of a stereo frame may be encoded as a constant subframe, and the other an LPC subframe.
+
+ Interchannel Decorrelation
+
+ In stereo streams, many times there is an exploitable amount of correlation between the left and right channels. FLAC allows the frames of stereo streams to have different channel assignments, and an encoder may choose to use the best representation on a frame-by-frame basis. +
    +
  • + Independent. The left and right channels are coded independently. +
  • +
  • + Mid-side. The left and right channels are transformed into mid and side channels. The mid channel is the midpoint (average) of the left and right signals, and the side is the difference signal (left minus right). +
  • +
  • + Left-side. The left channel and side channel are coded. +
  • +
  • + Right-side. The right channel and side channel are coded +
  • +
+ Surprisingly, the left-side and right-side forms can be the most efficient in many frames, even though the raw number of bits per sample needed for the original signal is slightly more than that needed for independent or mid-side coding.
+
+ Prediction
+
+ FLAC uses four methods for modeling the input signal: +
    +
  • + Verbatim. This is essentially a zero-order predictor of the signal. The predicted signal is zero, meaning the residual is the signal itself, and the compression is zero. This is the baseline against which the other predictors are measured. If you feed random data to the encoder, the verbatim predictor will probably be used for every subblock. Since the raw signal is not actually passed through the residual coding stage (it is added to the stream 'verbatim'), the encoding results will not be the same as a zero-order linear predictor. +
  • +
  • + Constant. This predictor is used whenever the subblock is pure DC ("digital silence"), i.e. a constant value throughout. The signal is run-length encoded and added to the stream. +
  • +
  • + Fixed linear predictor. FLAC uses a class of computationally-efficient fixed linear predictors (for a good description, see audiopak and shorten). FLAC adds a fourth-order predictor to the zero-to-third-order predictors used by Shorten. Since the predictors are fixed, the predictor order is the only parameter that needs to be stored in the compressed stream. The error signal is then passed to the residual coder. +
  • +
  • + FIR Linear prediction. For more accurate modeling (at a cost of slower encoding), FLAC supports up to 32nd order FIR linear prediction (again, for information on linear prediction, see audiopak and shorten). The reference encoder uses the Levinson-Durbin method for calculating the LPC coefficients from the autocorrelation coefficients, and the coefficients are quantized before computing the residual. Whereas encoders such as Shorten used a fixed quantization for the entire input, FLAC allows the quantized coefficient precision to vary from subframe to subframe. The FLAC reference encoder estimates the optimal precision to use based on the block size and dynamic range of the original signal. +
  • +
+ Residual Coding
+
+ FLAC currently defines two similar methods for the coding of the error signal from the prediction stage. The error signal is coded using Rice codes in one of two ways: 1) the encoder estimates a single Rice parameter based on the variance of the residual and Rice codes the entire residual using this parameter; 2) the residual is partitioned into several equal-length regions of contiguous samples, and each region is coded with its own Rice parameter based on the region's mean. (Note that the first method is a special case of the second method with one partition, except the Rice parameter is based on the residual variance instead of the mean.)
+
+ The FLAC format has reserved space for other coding methods. Some possiblities for volunteers would be to explore better context-modeling of the Rice parameter, or Huffman coding. See LOCO-I and pucrunch for descriptions of several universal codes.
+
+ Format
+
+ This section specifies the FLAC bitstream format. FLAC has no format version information, but it does contain reserved space in several places. Future versions of the format may use this reserved space safely without breaking the format of older streams. Older decoders may choose to abort decoding or skip data encoded with newer methods. Apart from reserved patterns, in places the format specifies invalid patterns, meaning that the patterns may never appear in any valid bitstream, in any prior, present, or future versions of the format. These invalid patterns are usually used to make the synchronization mechanism more robust.
+
+ All numbers used in a FLAC bitstream are integers; there are no floating-point representations. All numbers are big-endian coded. All numbers are unsigned unless otherwise specified.
+
+ Before the formal description of the stream, an overview might be helpful. +
    +
  • + A FLAC bitstream consists of the "fLaC" marker at the beginning of the stream, followed by a mandatory metadata block (called the STREAMINFO block), any number of other metadata blocks, then the audio frames. +
  • +
  • + FLAC supports up to 128 kinds of metadata blocks; currently the following are defined: +
      +
    • STREAMINFO: This block has information about the whole stream, like sample rate, number of channels, total number of samples, etc. It must be present as the first metadata block in the stream. Other metadata blocks may follow, and ones that the decoder doesn't understand, it will skip.
    • +
    • APPLICATION: This block is for use by third-party applications. The only mandatory field is a 32-bit identifier. This ID is granted upon request to an application by the FLAC maintainers. The remainder is of the block is defined by the registered application. Visit the registration page if you would like to register an ID for your application with FLAC.
    • +
    • PADDING: This block allows for an arbitrary amount of padding. The contents of a PADDING block have no meaning. This block is useful when it is known that metadata will be edited after encoding; the user can instruct the encoder to reserve a PADDING block of sufficient size so that when metadata is added, it will simply overwrite the padding (which is relatively quick) instead of having to insert it into the right place in the existing file (which would normally require rewriting the entire file).
    • +
    • SEEKTABLE: This is an optional block for storing seek points. It is possible to seek to any given sample in a FLAC stream without a seek table, but the delay can be unpredictable since the bitrate may vary widely within a stream. By adding seek points to a stream, this delay can be significantly reduced. Each seek point takes 18 bytes, so 1% resolution within a stream adds less than 2k. There can be only one SEEKTABLE in a stream, but the table can have any number of seek points. There is also a special 'placeholder' seekpoint which will be ignored by decoders but which can be used to reserve space for future seek point insertion.
    • +
    • VORBIS_COMMENT: This block is for storing a list of human-readable name/value pairs. Values are encoded using UTF-8. It is an implementation of the Vorbis comment specification (without the framing bit). This is the only officially supported tagging mechanism in FLAC. There may be only one VORBIS_COMMENT block in a stream. In some external documentation, Vorbis comments are called FLAC tags to lessen confusion.
    • +
    • CUESHEET: This block is for storing various information that can be used in a cue sheet. It supports track and index points, compatible with Red Book CD digital audio discs, as well as other CD-DA metadata such as media catalog number and track ISRCs. The CUESHEET block is especially useful for backing up CD-DA discs, but it can be used as a general purpose cueing mechanism for playback.
    • +
    • PICTURE: This block is for storing pictures associated with the file, most commonly cover art from CDs. There may be more than one PICTURE block in a file. The picture format is similar to the APIC frame in ID3v2. The PICTURE block has a type, MIME type, and UTF-8 description like ID3v2, and supports external linking via URL (though this is discouraged). The differences are that there is no uniqueness constraint on the description field, and the MIME type is mandatory. The FLAC PICTURE block also includes the resolution, color depth, and palette size so that the client can search for a suitable picture without having to scan them all.
    • +
    +
  • +
  • + The audio data is composed of one or more audio frames. Each frame consists of a frame header, which contains a sync code, information about the frame like the block size, sample rate, number of channels, et cetera, and an 8-bit CRC. The frame header also contains either the sample number of the first sample in the frame (for variable-blocksize streams), or the frame number (for fixed-blocksize streams). This allows for fast, sample-accurate seeking to be performed. Following the frame header are encoded subframes, one for each channel, and finally, the frame is zero-padded to a byte boundary. Each subframe has its own header that specifies how the subframe is encoded. +
  • +
  • + Since a decoder may start decoding in the middle of a stream, there must be a method to determine the start of a frame. A 14-bit sync code begins each frame. The sync code will not appear anywhere else in the frame header. However, since it may appear in the subframes, the decoder has two other ways of ensuring a correct sync. The first is to check that the rest of the frame header contains no invalid data. Even this is not foolproof since valid header patterns can still occur within the subframes. The decoder's final check is to generate an 8-bit CRC of the frame header and compare this to the CRC stored at the end of the frame header. +
  • +
  • + Again, since a decoder may start decoding at an arbitrary frame in the stream, each frame header must contain some basic information about the stream because the decoder may not have access to the STREAMINFO metadata block at the start of the stream. This information includes sample rate, bits per sample, number of channels, etc. Since the frame header is pure overhead, it has a direct effect on the compression ratio. To keep the frame header as small as possible, FLAC uses lookup tables for the most commonly used values for frame parameters. For instance, the sample rate part of the frame header is specified using 4 bits. Eight of the bit patterns correspond to the commonly used sample rates of 8/16/22.05/24/32/44.1/48/96 kHz. However, odd sample rates can be specified by using one of the 'hint' bit patterns, directing the decoder to find the exact sample rate at the end of the frame header. The same method is used for specifying the block size and bits per sample. In this way, the frame header size stays small for all of the most common forms of audio data. +
  • +
  • + Individual subframes (one for each channel) are coded separately within a frame, and appear serially in the stream. In other words, the encoded audio data is NOT channel-interleaved. This reduces decoder complexity at the cost of requiring larger decode buffers. Each subframe has its own header specifying the attributes of the subframe, like prediction method and order, residual coding parameters, etc. The header is followed by the encoded audio data for that channel. +
  • +
  • + FLAC specifies a subset of itself as the Subset format. The purpose of this is to ensure that any streams encoded according to the Subset are truly "streamable", meaning that a decoder that cannot seek within the stream can still pick up in the middle of the stream and start decoding. It also makes hardware decoder implementations more practical by limiting the encoding parameters such that decoder buffer sizes and other resource requirements can be easily determined. flac generates Subset streams by default unless the "--lax" command-line option is used. The Subset makes the following limitations on what may be used in the stream: +
      +
    • + The blocksize bits in the frame header must be 0001-1110. The blocksize must be <=16384; if the sample rate is <= 48000Hz, the blocksize must be <=4608. +
    • +
    • + The sample rate bits in the frame header must be 0001-1110. +
    • +
    • + The bits-per-sample bits in the frame header must be 001-111. +
    • +
    • + If the sample rate is <= 48000Hz, the filter order in LPC subframes must be less than or equal to 12, i.e. the subframe type bits in the subframe header may not be 101100-111111. +
    • +
    • + The Rice partition order in a Rice-coded residual section must be less than or equal to 8. +
    • +
    +
  • +
+ + The following tables constitute a formal description of the FLAC format. Numbers in angle brackets indicate how many bits are used for a given field.
+
+ +
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + +
+ STREAM +
+ <32> + + "fLaC", the FLAC stream marker in ASCII, meaning byte 0 of the stream is 0x66, followed by 0x4C 0x61 0x43 +
+ METADATA_BLOCK + + This is the mandatory STREAMINFO metadata block that has the basic properties of the stream +
+ METADATA_BLOCK* + + Zero or more metadata blocks +
+ FRAME+ + + One or more audio frames +
+
+
+ +
+ +
+
+ + + + + + + + + + + + +
+ METADATA_BLOCK +
+ METADATA_BLOCK_HEADER + + A block header that specifies the type and size of the metadata block data. +
+ METADATA_BLOCK_DATA + +   +
+
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + +
+ METADATA_BLOCK_HEADER +
+ <1> + + Last-metadata-block flag: '1' if this block is the last metadata block before the audio blocks, '0' otherwise. +
+ <7> + + BLOCK_TYPE
+
    +
  • + 0 : STREAMINFO +
  • +
  • + 1 : PADDING +
  • +
  • + 2 : APPLICATION +
  • +
  • + 3 : SEEKTABLE +
  • +
  • + 4 : VORBIS_COMMENT +
  • +
  • + 5 : CUESHEET +
  • +
  • + 6 : PICTURE +
  • +
  • + 7-126 : reserved +
  • +
  • + 127 : invalid, to avoid confusion with a frame sync code +
  • +
+
+ <24> + + Length (in bytes) of metadata to follow (does not include the size of the METADATA_BLOCK_HEADER) +
+
+
+ +
+ +
+
+ + + + + + + + +
+ METADATA_BLOCK_DATA +
+ METADATA_BLOCK_STREAMINFO
+ || METADATA_BLOCK_PADDING
+ || METADATA_BLOCK_APPLICATION
+ || METADATA_BLOCK_SEEKTABLE
+ || METADATA_BLOCK_VORBIS_COMMENT
+ || METADATA_BLOCK_CUESHEET
+ || METADATA_BLOCK_PICTURE +
+ The block data must match the block type in the block header. +
+
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ METADATA_BLOCK_STREAMINFO +
+ <16> + + The minimum block size (in samples) used in the stream. +
+ <16> + + The maximum block size (in samples) used in the stream. (Minimum blocksize == maximum blocksize) implies a fixed-blocksize stream. +
+ <24> + + The minimum frame size (in bytes) used in the stream. May be 0 to imply the value is not known. +
+ <24> + + The maximum frame size (in bytes) used in the stream. May be 0 to imply the value is not known. +
+ <20> + + Sample rate in Hz. Though 20 bits are available, the maximum sample rate is limited by the structure of frame headers to 655350Hz. Also, a value of 0 is invalid. +
+ <3> + + (number of channels)-1. FLAC supports from 1 to 8 channels +
+ <5> + + (bits per sample)-1. FLAC supports from 4 to 32 bits per sample. Currently the reference encoder and decoders only support up to 24 bits per sample. +
+ <36> + + Total samples in stream. 'Samples' means inter-channel sample, i.e. one second of 44.1Khz audio will have 44100 samples regardless of the number of channels. A value of zero here means the number of total samples is unknown. +
+ <128> + + MD5 signature of the unencoded audio data. This allows the decoder to determine if an error exists in the audio data even when the error does not result in an invalid bitstream. +
+ + NOTES
+
    +
  • + FLAC specifies a minimum block size of 16 and a maximum block size of 65535, meaning the bit patterns corresponding to the numbers 0-15 in the minimum blocksize and maximum blocksize fields are invalid. +
  • +
+
+
+
+ +
+ +
+
+ + + + + + + + +
+ METADATA_BLOCK_PADDING +
+ <n> + + n '0' bits (n must be a multiple of 8) +
+
+
+ +
+ +
+
+ + + + + + + + + + + + +
+ METADATA_BLOCK_APPLICATION +
+ <32> + + Registered application ID. (Visit the registration page to register an ID with FLAC.) +
+ <n> + + Application data (n must be a multiple of 8) +
+
+
+ +
+ +
+
+ + + + + + + + + + + + +
+ METADATA_BLOCK_SEEKTABLE +
+ SEEKPOINT+ + + One or more seek points. +
+ + NOTE
+
    +
  • + The number of seek points is implied by the metadata header 'length' field, i.e. equal to length / 18. +
  • +
+
+
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + +
+ SEEKPOINT +
+ <64> + + Sample number of first sample in the target frame, or 0xFFFFFFFFFFFFFFFF for a placeholder point. +
+ <64> + + Offset (in bytes) from the first byte of the first frame header to the first byte of the target frame's header. +
+ <16> + + Number of samples in the target frame. +
+ + NOTES
+
    +
  • + For placeholder points, the second and third field values are undefined. +
  • +
  • + Seek points within a table must be sorted in ascending order by sample number. +
  • +
  • + Seek points within a table must be unique by sample number, with the exception of placeholder points. +
  • +
  • + The previous two notes imply that there may be any number of placeholder points, but they must all occur at the end of the table. +
  • +
+
+
+
+ +
+ +
+
+ + + + + + + + +
+ METADATA_BLOCK_VORBIS_COMMENT +
+ <n> + + Also known as FLAC tags, the contents of a vorbis comment packet as specified here (without the framing bit). Note that the vorbis comment spec allows for on the order of 2 ^ 64 bytes of data where as the FLAC metadata block is limited to 2 ^ 24 bytes. Given the stated purpose of vorbis comments, i.e. human-readable textual information, this limit is unlikely to be restrictive. Also note that the 32-bit field lengths are little-endian coded according to the vorbis spec, as opposed to the usual big-endian coding of fixed-length integers in the rest of FLAC. +
+
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ METADATA_BLOCK_CUESHEET +
+ <128*8> + + Media catalog number, in ASCII printable characters 0x20-0x7e. In general, the media catalog number may be 0 to 128 bytes long; any unused characters should be right-padded with NUL characters. For CD-DA, this is a thirteen digit number, followed by 115 NUL bytes. +
+ <64> + + The number of lead-in samples. This field has meaning only for CD-DA cuesheets; for other uses it should be 0. For CD-DA, the lead-in is the TRACK 00 area where the table of contents is stored; more precisely, it is the number of samples from the first sample of the media to the first sample of the first index point of the first track. According to the Red Book, the lead-in must be silence and CD grabbing software does not usually store it; additionally, the lead-in must be at least two seconds but may be longer. For these reasons the lead-in length is stored here so that the absolute position of the first track can be computed. Note that the lead-in stored here is the number of samples up to the first index point of the first track, not necessarily to INDEX 01 of the first track; even the first track may have INDEX 00 data. +
+ <1> + + 1 if the CUESHEET corresponds to a Compact Disc, else 0. +
+ <7+258*8> + + Reserved. All bits must be set to zero. +
+ <8> + + The number of tracks. Must be at least 1 (because of the requisite lead-out track). For CD-DA, this number must be no more than 100 (99 regular tracks and one lead-out track). +
+ CUESHEET_TRACK+ + + One or more tracks. A CUESHEET block is required to have a lead-out track; it is always the last track in the CUESHEET. For CD-DA, the lead-out track number must be 170 as specified by the Red Book, otherwise is must be 255. +
+
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ CUESHEET_TRACK +
+ <64> + + Track offset in samples, relative to the beginning of the FLAC audio stream. It is the offset to the first index point of the track. (Note how this differs from CD-DA, where the track's offset in the TOC is that of the track's INDEX 01 even if there is an INDEX 00.) For CD-DA, the offset must be evenly divisible by 588 samples (588 samples = 44100 samples/sec * 1/75th of a sec). +
+ <8> + + Track number. A track number of 0 is not allowed to avoid conflicting with the CD-DA spec, which reserves this for the lead-in. For CD-DA the number must be 1-99, or 170 for the lead-out; for non-CD-DA, the track number must for 255 for the lead-out. It is not required but encouraged to start with track 1 and increase sequentially. Track numbers must be unique within a CUESHEET. +
+ <12*8> + + Track ISRC. This is a 12-digit alphanumeric code; see here and here. A value of 12 ASCII NUL characters may be used to denote absence of an ISRC. +
+ <1> + + The track type: 0 for audio, 1 for non-audio. This corresponds to the CD-DA Q-channel control bit 3. +
+ <1> + + The pre-emphasis flag: 0 for no pre-emphasis, 1 for pre-emphasis. This corresponds to the CD-DA Q-channel control bit 5; see here. +
+ <6+13*8> + + Reserved. All bits must be set to zero. +
+ <8> + + The number of track index points. There must be at least one index in every track in a CUESHEET except for the lead-out track, which must have zero. For CD-DA, this number may be no more than 100. +
+ CUESHEET_TRACK_INDEX+ + + For all tracks except the lead-out track, one or more track index points. +
+
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + +
+ CUESHEET_TRACK_INDEX +
+ <64> + + Offset in samples, relative to the track offset, of the index point. For CD-DA, the offset must be evenly divisible by 588 samples (588 samples = 44100 samples/sec * 1/75th of a sec). Note that the offset is from the beginning of the track, not the beginning of the audio data. +
+ <8> + + The index point number. For CD-DA, an index number of 0 corresponds to the track pre-gap. The first index in a track must have a number of 0 or 1, and subsequently, index numbers must increase by 1. Index numbers must be unique within a track. +
+ <3*8> + + Reserved. All bits must be set to zero. +
+
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ METADATA_BLOCK_PICTURE +
+ <32> + + The picture type according to the ID3v2 APIC frame:
+
    +
  • 0 - Other
  • +
  • 1 - 32x32 pixels 'file icon' (PNG only)
  • +
  • 2 - Other file icon
  • +
  • 3 - Cover (front)
  • +
  • 4 - Cover (back)
  • +
  • 5 - Leaflet page
  • +
  • 6 - Media (e.g. label side of CD)
  • +
  • 7 - Lead artist/lead performer/soloist
  • +
  • 8 - Artist/performer
  • +
  • 9 - Conductor
  • +
  • 10 - Band/Orchestra
  • +
  • 11 - Composer
  • +
  • 12 - Lyricist/text writer
  • +
  • 13 - Recording Location
  • +
  • 14 - During recording
  • +
  • 15 - During performance
  • +
  • 16 - Movie/video screen capture
  • +
  • 17 - A bright coloured fish
  • +
  • 18 - Illustration
  • +
  • 19 - Band/artist logotype
  • +
  • 20 - Publisher/Studio logotype
  • +
+ Others are reserved and should not be used. There may only be one each of picture type 1 and 2 in a file. +
+ <32> + + The length of the MIME type string in bytes. +
+ <n*8> + + The MIME type string, in printable ASCII characters 0x20-0x7e. The MIME type may also be --> to signify that the data part is a URL of the picture instead of the picture data itself. +
+ <32> + + The length of the description string in bytes. +
+ <n*8> + + The description of the picture, in UTF-8. +
+ <32> + + The width of the picture in pixels. +
+ <32> + + The height of the picture in pixels. +
+ <32> + + The color depth of the picture in bits-per-pixel. +
+ <32> + + For indexed-color pictures (e.g. GIF), the number of colors used, or 0 for non-indexed pictures. +
+ <32> + + The length of the picture data in bytes. +
+ <n*8> + + The binary picture data. +
+
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + +
+ FRAME +
+ FRAME_HEADER + +   +
+ SUBFRAME+ + + One SUBFRAME per channel. +
+ <?> + + Zero-padding to byte alignment. +
+ FRAME_FOOTER + +   +
+
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ FRAME_HEADER +
+ <14> + + Sync code '11111111111110' +
+ <1> + + Reserved:
+
    +
  • + 0 : mandatory value +
  • +
  • + 1 : reserved for future use +
  • +
+
+ <1> + + Blocking strategy:
+
    +
  • + 0 : fixed-blocksize stream; frame header encodes the frame number +
  • +
  • + 1 : variable-blocksize stream; frame header encodes the sample number +
  • +
+
+ <4> + + Block size in inter-channel samples:
+
    +
  • + 0000 : reserved +
  • +
  • + 0001 : 192 samples +
  • +
  • + 0010-0101 : 576 * (2^(n-2)) samples, i.e. 576/1152/2304/4608 +
  • +
  • + 0110 : get 8 bit (blocksize-1) from end of header +
  • +
  • + 0111 : get 16 bit (blocksize-1) from end of header +
  • +
  • + 1000-1111 : 256 * (2^(n-8)) samples, i.e. 256/512/1024/2048/4096/8192/16384/32768 +
  • +
+
+ <4> + + Sample rate:
+
    +
  • + 0000 : get from STREAMINFO metadata block +
  • +
  • + 0001 : 88.2kHz +
  • +
  • + 0010 : 176.4kHz +
  • +
  • + 0011 : 192kHz +
  • +
  • + 0100 : 8kHz +
  • +
  • + 0101 : 16kHz +
  • +
  • + 0110 : 22.05kHz +
  • +
  • + 0111 : 24kHz +
  • +
  • + 1000 : 32kHz +
  • +
  • + 1001 : 44.1kHz +
  • +
  • + 1010 : 48kHz +
  • +
  • + 1011 : 96kHz +
  • +
  • + 1100 : get 8 bit sample rate (in kHz) from end of header +
  • +
  • + 1101 : get 16 bit sample rate (in Hz) from end of header +
  • +
  • + 1110 : get 16 bit sample rate (in tens of Hz) from end of header +
  • +
  • + 1111 : invalid, to prevent sync-fooling string of 1s +
  • +
+
+ <4> + + Channel assignment +
    +
  • + 0000-0111 : (number of independent channels)-1. Where defined, the channel order follows SMPTE/ITU-R recommendations. The assignments are as follows: +
      +
    • 1 channel: mono
    • +
    • 2 channels: left, right
    • +
    • 3 channels: left, right, center
    • +
    • 4 channels: left, right, back left, back right
    • +
    • 5 channels: left, right, center, back/surround left, back/surround right
    • +
    • 6 channels: left, right, center, LFE, back/surround left, back/surround right
    • +
    • 7 channels: not defined
    • +
    • 8 channels: not defined
    • +
    +
  • +
  • + 1000 : left/side stereo: channel 0 is the left channel, channel 1 is the side(difference) channel +
  • +
  • + 1001 : right/side stereo: channel 0 is the side(difference) channel, channel 1 is the right channel +
  • +
  • + 1010 : mid/side stereo: channel 0 is the mid(average) channel, channel 1 is the side(difference) channel +
  • +
  • + 1011-1111 : reserved +
  • +
+
+ <3> + + Sample size in bits:
+
    +
  • + 000 : get from STREAMINFO metadata block +
  • +
  • + 001 : 8 bits per sample +
  • +
  • + 010 : 12 bits per sample +
  • +
  • + 011 : reserved +
  • +
  • + 100 : 16 bits per sample +
  • +
  • + 101 : 20 bits per sample +
  • +
  • + 110 : 24 bits per sample +
  • +
  • + 111 : reserved +
  • +
+
+ <1> + + Reserved:
+
    +
  • + 0 : mandatory value +
  • +
  • + 1 : reserved for future use +
  • +
+
+ <?> + + if(variable blocksize)
+    <8-56>:"UTF-8" coded sample number (decoded number is 36 bits)
+ else
+    <8-48>:"UTF-8" coded frame number (decoded number is 31 bits) +
+ <?> + + if(blocksize bits == 011x)
+    8/16 bit (blocksize-1) +
+ <?> + + if(sample rate bits == 11xx)
+    8/16 bit sample rate +
+ <8> + + CRC-8 (polynomial = x^8 + x^2 + x^1 + x^0, initialized with 0) of everything before the crc, including the sync code +
+ + NOTES
+
    +
  • + The "blocking strategy" bit must be the same throughout the entire stream. +
  • +
  • + The "blocking strategy" bit determines how to calculate the sample number of the first sample in the frame. If the bit is 0 (fixed-blocksize), the frame header encodes the frame number as above, and the frame's starting sample number will be the frame number times the blocksize. If it is 1 (variable-blocksize), the frame header encodes the frame's starting sample number itself. (In the case of a fixed-blocksize stream, only the last block may be shorter than the stream blocksize; its starting sample number will be calculated as the frame number times the previous frame's blocksize, or zero if it is the first frame). +
  • +
  • + The "UTF-8" coding used for the sample/frame number is the same variable length code used to store compressed UCS-2, extended to handle larger input. +
  • +
+
+
+
+ +
+ +
+
+ + + + + + + + +
+ FRAME_FOOTER +
+ <16> + + CRC-16 (polynomial = x^16 + x^15 + x^2 + x^0, initialized with 0) of everything before the crc, back to and including the frame header sync code +
+
+
+ +
+ +
+
+ + + + + + + + + + + + +
+ SUBFRAME +
+ SUBFRAME_HEADER + +   +
+ SUBFRAME_CONSTANT
|| SUBFRAME_FIXED
|| SUBFRAME_LPC
|| SUBFRAME_VERBATIM +
+ The SUBFRAME_HEADER specifies which one. +
+
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + +
+ SUBFRAME_HEADER +
+ <1> + + Zero bit padding, to prevent sync-fooling string of 1s +
+ <6> + + Subframe type: + +
+ <1+k> + + 'Wasted bits-per-sample' flag: +
    +
  • + 0 : no wasted bits-per-sample in source subblock, k=0 +
  • +
  • + 1 : k wasted bits-per-sample in source subblock, k-1 follows, unary coded; e.g. k=3 => 001 follows, k=7 => 0000001 follows. +
  • +
+
+
+
+ +
+ +
+
+ + + + + + + + +
+ SUBFRAME_CONSTANT +
+ <n> + + Unencoded constant value of the subblock, n = frame's bits-per-sample. +
+
+
+ +
+ +
+
+ + + + + + + + + + + + +
+ SUBFRAME_FIXED +
+ <n> + + Unencoded warm-up samples (n = frame's bits-per-sample * predictor order). +
+ RESIDUAL + + Encoded residual +
+
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ SUBFRAME_LPC +
+ <n> + + Unencoded warm-up samples (n = frame's bits-per-sample * lpc order). +
+ <4> + + (Quantized linear predictor coefficients' precision in bits)-1 (1111 = invalid). +
+ <5> + + Quantized linear predictor coefficient shift needed in bits (NOTE: this number is signed two's-complement). +
+ <n> + + Unencoded predictor coefficients (n = qlp coeff precision * lpc order) (NOTE: the coefficients are signed two's-complement). +
+ RESIDUAL + + Encoded residual +
+
+
+ +
+ +
+
+ + + + + + + + +
+ SUBFRAME_VERBATIM +
+ <n*i> + + Unencoded subblock; n = frame's bits-per-sample, i = frame's blocksize. +
+
+
+ +
+ +
+
+ + + + + + + + + + + + +
+ RESIDUAL +
+ <2> + + Residual coding method:
+
    +
  • + 00 : partitioned Rice coding with 4-bit Rice parameter; RESIDUAL_CODING_METHOD_PARTITIONED_RICE follows +
  • +
  • + 01 : partitioned Rice coding with 5-bit Rice parameter; RESIDUAL_CODING_METHOD_PARTITIONED_RICE2 follows +
  • +
  • + 10-11 : reserved +
  • +
+
+ RESIDUAL_CODING_METHOD_PARTITIONED_RICE ||
+ RESIDUAL_CODING_METHOD_PARTITIONED_RICE2 +
+   +
+
+
+ +
+ +
+
+ + + + + + + + + + + + +
+ RESIDUAL_CODING_METHOD_PARTITIONED_RICE +
+ <4> + + Partition order. +
+ RICE_PARTITION+ + + There will be 2^order partitions. +
+
+
+ +
+ +
+
+ + + + + + + + + + + + +
+ RICE_PARTITION +
+ <4(+5)> + + Encoding parameter:
+
    +
  • + 0000-1110 : Rice parameter. +
  • +
  • + 1111 : Escape code, meaning the partition is in unencoded binary form using n bits per sample; n follows as a 5-bit number. +
  • +
+
+ <?> + + Encoded residual. The number of samples (n) in the partition is determined as follows:
+
    +
  • + if the partition order is zero, n = frame's blocksize - predictor order +
  • +
  • + else if this is not the first partition of the subframe, n = (frame's blocksize / (2^partition order)) +
  • +
  • + else n = (frame's blocksize / (2^partition order)) - predictor order +
  • +
+
+
+
+ +
+ +
+
+ + + + + + + + + + + + +
+ RESIDUAL_CODING_METHOD_PARTITIONED_RICE2 +
+ <4> + + Partition order. +
+ RICE2_PARTITION+ + + There will be 2^order partitions. +
+
+
+ +
+ +
+
+ + + + + + + + + + + + +
+ RICE2_PARTITION +
+ <5(+5)> + + Encoding parameter:
+
    +
  • + 0000-11110 : Rice parameter. +
  • +
  • + 11111 : Escape code, meaning the partition is in unencoded binary form using n bits per sample; n follows as a 5-bit number. +
  • +
+
+ <?> + + Encoded residual. The number of samples (n) in the partition is determined as follows:
+
    +
  • + if the partition order is zero, n = frame's blocksize - predictor order +
  • +
  • + else if this is not the first partition of the subframe, n = (frame's blocksize / (2^partition order)) +
  • +
  • + else n = (frame's blocksize / (2^partition order)) - predictor order +
  • +
+
+
+
+ + + + + + diff --git a/3rdparty/libflac/doc/html/id.html b/3rdparty/libflac/doc/html/id.html new file mode 100644 index 0000000..2aa39ab --- /dev/null +++ b/3rdparty/libflac/doc/html/id.html @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + FLAC - id + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ register +
+
+
+ FLAC allows third-party applications to register an ID for use with FLAC APPLICATION metadata blocks. Use the following form to request an ID, or to submit a change to an existing ID.
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
* Application ID:
* Application name:
* Contact e-mail:
Application URL:
Specification URL:
Comment:
(* = mandatory)
+
+
+ The ID request should be 8 hexadecimal digits and not conflict with any existing IDs (see the table below for all currently registered IDs). This 32-bit number will be stored big-endian in the block.
+
+ Information about your application (but not your e-mail address) will show up on this page in the ID directory. You can also provide a URL to your application and a URL reference to the specification of your application's APPLICATION block.
+
+ You will be notified via e-mail about your submission. +
+
+
+ +
+ +
+ +
+ +
+
+ Here is a list of all registered IDs and their applications:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ID + + Application +
+ 41544348 - "ATCH" + + FlacFile +
+ 43756573 - "Cues" + + GoldWave cue points (specification) +
+ 4D754D4C - "MuML" + + MusicML: Music Metadata Language +
+ 46696361 - "Fica" + + CUE Splitter +
+ 46746F6C - "Ftol" + + flac-tools +
+ 4D505345 - "MPSE" + + MP3 Stream Editor +
+ 52494646 - "RIFF" + + Sound Devices RIFF chunk storage +
+ 5346464C - "SFFL" + + Sound Font FLAC +
+ 534F4E59 - "SONY" + + Sony Creative Software +
+ 5351455A - "SQEZ" + + flacsqueeze +
+ 61696666 - "aiff" + + FLAC AIFF chunk storage +
+ 7065656D - "peem" + + Parseable Embedded Extensible Metadata (specification) +
+ 71667374 - "qfst" + + QFLAC Studio +
+ 72696666 - "riff" + + FLAC RIFF chunk storage +
+ 74756E65 - "tune" + + TagTuner +
+ 78626174 - "xbat" + + XBAT +
+ 786D6364 - "xmcd" + + xmcd +
+
+
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/images/1x1.gif b/3rdparty/libflac/doc/html/images/1x1.gif new file mode 100644 index 0000000000000000000000000000000000000000..f14ea1354742ff69a1d7050e68531f36c39b2da9 GIT binary patch literal 61 ycmZ?wbhEHbWMp7uX!y@?;J^U}1_s5SEQ~;kK?g*DWEhy3To@Uw8Bs)hfFb}{zz6mK literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/Makefile.am b/3rdparty/libflac/doc/html/images/Makefile.am new file mode 100644 index 0000000..b4fcb76 --- /dev/null +++ b/3rdparty/libflac/doc/html/images/Makefile.am @@ -0,0 +1,30 @@ +# FLAC - Free Lossless Audio Codec +# Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This file is part the FLAC project. FLAC is comprised of several +# components distributed under difference licenses. The codec libraries +# are distributed under Xiph.Org's BSD-like license (see the file +# COPYING.Xiph in this distribution). All other programs, libraries, and +# plugins are distributed under the GPL (see COPYING.GPL). The documentation +# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the +# FLAC distribution contains at the top the terms under which it may be +# distributed. +# +# Since this particular file is relevant to all components of FLAC, +# it may be distributed under the Xiph.Org license, which is the least +# restrictive of those mentioned above. See the file COPYING.Xiph in this +# distribution. + +AUTOMAKE_OPTIONS = foreign + +SUBDIRS = hw + +docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)/html/images + +doc_DATA = \ + 1x1.gif \ + cafebug.gif \ + logo100.gif \ + logo130.gif + +EXTRA_DIST = $(doc_DATA) diff --git a/3rdparty/libflac/doc/html/images/Makefile.in b/3rdparty/libflac/doc/html/images/Makefile.in new file mode 100644 index 0000000..63db4d1 --- /dev/null +++ b/3rdparty/libflac/doc/html/images/Makefile.in @@ -0,0 +1,554 @@ +# Makefile.in generated by automake 1.7.9 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# FLAC - Free Lossless Audio Codec +# Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This file is part the FLAC project. FLAC is comprised of several +# components distributed under difference licenses. The codec libraries +# are distributed under Xiph.Org's BSD-like license (see the file +# COPYING.Xiph in this distribution). All other programs, libraries, and +# plugins are distributed under the GPL (see COPYING.GPL). The documentation +# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the +# FLAC distribution contains at the top the terms under which it may be +# distributed. +# +# Since this particular file is relevant to all components of FLAC, +# it may be distributed under the Xiph.Org license, which is the least +# restrictive of those mentioned above. See the file COPYING.Xiph in this +# distribution. + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_FALSE = @DEBUG_FALSE@ +DEBUG_TRUE = @DEBUG_TRUE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLAC__TEST_LEVEL = @FLAC__TEST_LEVEL@ +FLAC__TEST_WITH_VALGRIND = @FLAC__TEST_WITH_VALGRIND@ +FLaC__CPU_IA32_FALSE = @FLaC__CPU_IA32_FALSE@ +FLaC__CPU_IA32_TRUE = @FLaC__CPU_IA32_TRUE@ +FLaC__CPU_PPC_FALSE = @FLaC__CPU_PPC_FALSE@ +FLaC__CPU_PPC_TRUE = @FLaC__CPU_PPC_TRUE@ +FLaC__CPU_SPARC_FALSE = @FLaC__CPU_SPARC_FALSE@ +FLaC__CPU_SPARC_TRUE = @FLaC__CPU_SPARC_TRUE@ +FLaC__HAS_AS_FALSE = @FLaC__HAS_AS_FALSE@ +FLaC__HAS_AS_TRUE = @FLaC__HAS_AS_TRUE@ +FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@ +FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@ +FLaC__HAS_DOCBOOK_TO_MAN_FALSE = @FLaC__HAS_DOCBOOK_TO_MAN_FALSE@ +FLaC__HAS_DOCBOOK_TO_MAN_TRUE = @FLaC__HAS_DOCBOOK_TO_MAN_TRUE@ +FLaC__HAS_DOXYGEN_FALSE = @FLaC__HAS_DOXYGEN_FALSE@ +FLaC__HAS_DOXYGEN_TRUE = @FLaC__HAS_DOXYGEN_TRUE@ +FLaC__HAS_GAS_FALSE = @FLaC__HAS_GAS_FALSE@ +FLaC__HAS_GAS_TRUE = @FLaC__HAS_GAS_TRUE@ +FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@ +FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@ +FLaC__HAS_NASM_FALSE = @FLaC__HAS_NASM_FALSE@ +FLaC__HAS_NASM_TRUE = @FLaC__HAS_NASM_TRUE@ +FLaC__HAS_OGG_FALSE = @FLaC__HAS_OGG_FALSE@ +FLaC__HAS_OGG_TRUE = @FLaC__HAS_OGG_TRUE@ +FLaC__HAS_XMMS_FALSE = @FLaC__HAS_XMMS_FALSE@ +FLaC__HAS_XMMS_TRUE = @FLaC__HAS_XMMS_TRUE@ +FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE@ +FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE@ +FLaC__NO_ASM_FALSE = @FLaC__NO_ASM_FALSE@ +FLaC__NO_ASM_TRUE = @FLaC__NO_ASM_TRUE@ +FLaC__SSE_OS_FALSE = @FLaC__SSE_OS_FALSE@ +FLaC__SSE_OS_TRUE = @FLaC__SSE_OS_TRUE@ +FLaC__SYS_DARWIN_FALSE = @FLaC__SYS_DARWIN_FALSE@ +FLaC__SYS_DARWIN_TRUE = @FLaC__SYS_DARWIN_TRUE@ +FLaC__SYS_LINUX_FALSE = @FLaC__SYS_LINUX_FALSE@ +FLaC__SYS_LINUX_TRUE = @FLaC__SYS_LINUX_TRUE@ +FLaC__USE_3DNOW_FALSE = @FLaC__USE_3DNOW_FALSE@ +FLaC__USE_3DNOW_TRUE = @FLaC__USE_3DNOW_TRUE@ +FLaC__USE_ALTIVEC_FALSE = @FLaC__USE_ALTIVEC_FALSE@ +FLaC__USE_ALTIVEC_TRUE = @FLaC__USE_ALTIVEC_TRUE@ +FLaC__WITH_CPPLIBS_FALSE = @FLaC__WITH_CPPLIBS_FALSE@ +FLaC__WITH_CPPLIBS_TRUE = @FLaC__WITH_CPPLIBS_TRUE@ +GAS = @GAS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +MINGW_WINSOCK_LIBS = @MINGW_WINSOCK_LIBS@ +NASM = @NASM@ +OBJEXT = @OBJEXT@ +OBJ_FORMAT = @OBJ_FORMAT@ +OGG_CFLAGS = @OGG_CFLAGS@ +OGG_LIBS = @OGG_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XMMS_CFLAGS = @XMMS_CFLAGS@ +XMMS_CONFIG = @XMMS_CONFIG@ +XMMS_DATA_DIR = @XMMS_DATA_DIR@ +XMMS_EFFECT_PLUGIN_DIR = @XMMS_EFFECT_PLUGIN_DIR@ +XMMS_GENERAL_PLUGIN_DIR = @XMMS_GENERAL_PLUGIN_DIR@ +XMMS_INPUT_PLUGIN_DIR = @XMMS_INPUT_PLUGIN_DIR@ +XMMS_LIBS = @XMMS_LIBS@ +XMMS_OUTPUT_PLUGIN_DIR = @XMMS_OUTPUT_PLUGIN_DIR@ +XMMS_PLUGIN_DIR = @XMMS_PLUGIN_DIR@ +XMMS_VERSION = @XMMS_VERSION@ +XMMS_VISUALIZATION_PLUGIN_DIR = @XMMS_VISUALIZATION_PLUGIN_DIR@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +AUTOMAKE_OPTIONS = foreign + +SUBDIRS = hw + +docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)/html/images + +doc_DATA = \ + 1x1.gif \ + cafebug.gif \ + logo100.gif \ + logo130.gif + + +EXTRA_DIST = $(doc_DATA) +subdir = doc/html/images +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DATA = $(doc_DATA) + + +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive +DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +DIST_SUBDIRS = $(SUBDIRS) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/html/images/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +docDATA_INSTALL = $(INSTALL_DATA) +install-docDATA: $(doc_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(docdir) + @list='$(doc_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f"; \ + $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f; \ + done + +uninstall-docDATA: + @$(NORMAL_UNINSTALL) + @list='$(doc_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(docdir)/$$f"; \ + rm -f $(DESTDIR)$(docdir)/$$f; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if (etags --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + else \ + include_option=--include; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) +installdirs: installdirs-recursive +installdirs-am: + $(mkinstalldirs) $(DESTDIR)$(docdir) + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: install-docDATA + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-docDATA uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive distclean distclean-generic distclean-libtool \ + distclean-recursive distclean-tags distdir dvi dvi-am \ + dvi-recursive info info-am info-recursive install install-am \ + install-data install-data-am install-data-recursive \ + install-docDATA install-exec install-exec-am \ + install-exec-recursive install-info install-info-am \ + install-info-recursive install-man install-recursive \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am installdirs-recursive maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive mostlyclean \ + mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ + pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ + tags-recursive uninstall uninstall-am uninstall-docDATA \ + uninstall-info-am uninstall-info-recursive uninstall-recursive + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/3rdparty/libflac/doc/html/images/cafebug.gif b/3rdparty/libflac/doc/html/images/cafebug.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d0c90fd9b9ec15569a39dc2a90e800395d4ef9c GIT binary patch literal 2371 zcmc&z`#V(o8vl-47`4Z3j8aK**;298?m~uUT#Jzzx#Tv+Qth20yAV4>NX}t|mYGo7 zCB*4eyVTz8R4x;%qKmM#b8EVs&7-^O(K_#%ANF(pgY*8fp7(j*_w#-}pLcydy*<{h ziw;KS=p#ZD9VA5&6ope1Mp1~)NRlE6io_`rqew&-36dfRiohuXqXh!Z4^lQ>4=h$aQS7(rq?! zumKvdU>MPY=o|tk2#g>Qtq;~hhT{Z|5jdjd0t+Z&IDugVhCn@#f?fjQ1i}ae^1u(E z3DaN)=m!#@5Lg2kkOr2}3OryjU;{K@A=){*3^@db3=G@?&LcS9L+2m}`c zBS9amg$zUV&q4dDx;I@^oshO!brrf-Wi;)&$~$^gWe0r(l|mXxMVh{eiU$p>f`;D# zt_0?RCRp|ViX{}&k1q_| z?RJGAnvGbD2^;k`U&2_QK~`%gjO!JeVR({Ou_cn;-KthCmFnh~unfN%>Tol*$S8x2 zHMcL+->c$&zs8yKqAo+Ob)dy&eA&1MdtpzS#33ff6A2wcomtg-9fgi4SyQLfb}&zk z_4St5TdVtrH!KaE>s!JPHgy~j*Df%si!8f)M($+lz-4A(nAWOPVI1!Q%lfBxjhif) z-RYR8^NH5y;?A|2M>)+#i4O}|A;Iqw&ELQ3M{2=xML_3Y$o#vqXa|Qm?H4yi>dk+5 z#o=aaMTybt}y>50AUG17$^f|e`XS~$SgXf=b{V2YoHYwa+%jI!dz@M61S&5HC1A+T>XJh#0 zhb5!Y%*-@KMYcvMJIeH&Xh&Zn=TGaQ9qLy&3N(8|vu`USlpi69ozU#(ZTw)v_Kew5 zBQj-Vteyx#PW6FyCylM2WV4ptHbFtPd5`o2vt6+sb_!O8-eR|GlOIBM83k43ta~|} zv)V6iRDL^}BQH!+=07=^_=*_G(q{}!$V@ZW#O7PP91)e9Hn#?(80YW|qp}(-Bh%g% zvfBzQM#?)}ztNoD$xhh%>1n3a(YrH6^HT21rgC>`LMi*XbIq=Xyp5d|k}Xo+#0uM8LU@#-Q{BYXwtyVbZi zjTQ5vO8gxZRsQ~J-A@_ch6#*xKx{#z39rL=GNip z6~7B!r#D|bXJ4r|$61*iToD_9u6rB}+jBKqbYx!n>SgMISMNmW3mH4Q1ng!n{XaUH z%;dIv=(o+~rz4&fsWW*c2i{4GeX=dk(M8jVAuE=0WOuyXyjzZs);<>U0zD;tjgkMH zJJ_Svc)6k|T4ubTcR_c;JhXM5)5>c}{o8woMg5EHd!HmfpPV?5y|2C`H_y6dX6)E^ zQ#0d5o>MbS2IGI938ANh>C`Hg_PmBNIwIo!%)NM8Kr z#aZ2q!iA=d&YU)Wd(f(|*$p<;_?<&Wi$g8lx`}&L%f5+Esv9%!{n_7r(JYY|MdbPK z^OO9D3H%D|%08RvaE<#8y99n-epJwO&s8T(AkXi$y4$4bU}fL)V{N#8vd)tqrU4&!I=8J;rG^6#mhPWo{ zHwpYh9qNoiJko2oXBfsVG0eTyJP?z`vv?@w4Vm)f$l$|?juL@~?X%;;pq;PsG+u$-~^xTUX#?q2b(T^5S*&>)SmkrI22H=3De+%4n&b=$sGCN$I(+ZI$x z-*o-*SRCAYD(+d{38cwJH#nzH7^PmT;Ic Z87nZCv7WqA-tG38tVP$|?L=I(;lJ^|3Qhn3 literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/Blackbird_Front_low3_325x87.jpg b/3rdparty/libflac/doc/html/images/hw/Blackbird_Front_low3_325x87.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ac8e17e3b3dbf74ecc27546c0399f4c84a12d702 GIT binary patch literal 4052 zcmdT{c{r4P+rGz`vCUv)FhUqhmJvpiE!i1s7<*-Th9~8WJT> zSw@x=m1V*Z=^-LgD)Zj-ym{aEc#rS+zVE;HH~0O!uKPT%>%7k2{m0BP>>>69AZTSy zGzTCM2w(|*05%H{F^dcE2LM}JKp6l4Ztw;ddlWDMpd1{V7q~dV3&stDadN_Vxwzom z2wnt&kC%@R$uA^``` z{C{5TRsh8fxI)aJ5E+021%aX<>^49OfB+CqD0qxt3!DVw;o#zi^MbscAOLW30^A4= z7#s=Ps)2BT1#lFX&_dh2{CFj))q43eNEb!?=epa?P5^|9IUMoz-GF8)kM>0{9SdjVYsF+)>k2t?F zKW5bhVcM|~*qs^0c^k_H#BF0;S>dA3moFJ6G zy2khI#%ZovnVz=u#;m77yy^aCO3pg9IsqxgzE1nj5hSfUsjsJr^QM<*)zngKOC2Ol zo+a3&Y+WCf>PZby3Dw;n;MjE>Z)J12wqVcv>^r?6w2B;yi)&za952=2TCQ1}@jbBt zdpqCT*YjMh==&QP-R>9+29qKSgq;iE8&I^Bo#UxzLI9p(j({3Z16N!4X zN=&AdlH~o)4joTYwf1%9)n}d_0%#&>QaxS4gVC)FJ>R)^m)nh^DA9$KUl}Dn#$lCu z{GG<%X5*tAuCDw{xjLQy$I4$lTz?5+7BaZJ2Ic&{Q1uz|9Fm$m3z{i`kQ%SQ2>@LDhEO5psTe+g`75T!eT=vigz z@l&5tpG8N0`LlFRc(Kp-N54Quph2y@{>+{?JAw7;kA;rT7Dt@!9)A%0!d*3#R{@1u zQZvP!)ee&<=T`NaW_Oh>h570gc+5b@0YJ-LzEXiikes}+e72?_iSx6@%u|K0@_Fu$ z9YsSFa^(iIWe0wP4BN4aenScfAehvPPAWFRdJAoxZS8u3Z6^M?Pj*&@59X!L)63}c zWQ$XZ@k!_3V_dq)ABZL8^eks(0*PtNbeEZA;BqUJI%N0i4p*ot5%7EERxpPWQF2en zGpTtU#PY~Xera+~<+F|8JhexjUi_N+z*%KE(8Jb@`g@N#^!@B*SyCgh+OZ97ZT#Fx z$A&eMAvhC}iFkr@KuS+uGMcR5HO?7U?Jt!VqAl4UzEkEnFUqoekTX#K(p4efDTgLu z-S%VO6G>mCdfm|Kax>FYWhE+(wGoz!Iqg<=yfJ&q$6q9v2@r|uK4l0Yo>J2&T4UVA*v&R{y82Hh3eVvgP1I3l`zTg)-GPrr(B zcQWr}CL5$%eHDZ21iLcYw(7S^#inb$us|n{`c*992-yEqiswX(%3E(4dPV3>M#d-` zfVgfA+@-#j|57vC);;Olic;8O8)X;(kb*BSV5}O7o$sXMX$MBD;3|X##AqXw@T0%C znSu|U=uN4Cg3!oG03XWIp??NwBPT(iA5s{56fxTTZL8)+k0It>xc{40%)N!=5GKgM zLt5w*|M4cw-J%ggeApYraM*L8_fa&c2+D8mq29gseh8upV|hRvC~rHdjU0^4`k@s;c*rAl+Gy!PcnDK* zUntO9m`KRi0cfL5kL^4>LCX_crx;A_9gpUmd12t)+uY)fC5$?n&b%1fv>A+}V46Ya zNsvNoZ}0$E!tBd3yHF)? zzs7*3bE_pRZn2cbEp}FIZHolMHmS1VyU9LFc-bnscp>5{tpD)h1uk*H!;rDBn*p}) z6^JN-^&k03f?*5&iyQ;VtDIgv|Jn)zS8+O2!QKkxry9ugTw)fjHt)pk6O1euSO zbNz&5MUsrc92YhJk|uHVFs(jnd`TmJ%7Cv}Z(N%H=b)|da2c2~=4JyIo5y87c-@*T z4!l+!p7%|)BIlYH&L}HmO}~uD25usgDZuv?*F{fmw8QB!?CBm=IA2m2KdKCx1Th7| z(Zh!@O3}~_*1KNgut(&(dD}M}n#$e6?XZob2@n~|FX+A2% zqN?gQn#Of>4n0wy^y%Vl4Yci{hASaf^!LvTKBN_-t`QzFoC9&QmW@XnU0)+b5f4i3 zWnUAAx*g{F{k6-df77mSym2@tFrpJ(ZRNmxHiPAj>>K?O8GSR|uDZE8Xx%Y=LzH`N zUxRM2MNQ0n^le?twA_V2+ZFU`C>xk@#Rvg~DJUpPkd?*b_j8*1`&RXlzE>-hKjafksze1QrJ1yy4aO6T zo($alP~7S+MJiBCug^A*D|_J7jvtPwIdBUVx2hm)zh2e6HVFjN0j_s>HOV$lcwYp2*7H?c1f38Bl-D?k*&_DO9pd-a;?IL7YSmxtTFzR!lFDy7JA^De`Jc z;L$;uJ{ghj3cQV{#j(X6izw`#Hkf%uqhB+%;_VJxW-c?l?-gFJ0Ci|3D*x$ZB|Y0# z=!1T~YJZ*4}`!L>!h9#X-6IfMDIEb}w7H|+hu<{|8kV)iY z*QM0+tCY(%J14+L%{1(NlvfDF&P}t`UXJ>5?k9eyk;uAYv@+!;dHFb5f=qhv_&!3q|E<&2;t`@BwF`3xCE|E) zcQv7w|IK<)?)ig0mTaKX`q2q#cuy-3XGLEx-yL|XvaqkD@=^vVjpkV!m}DKkP+qQm z*S%a>>qwjbv4_v%5PPuIyGCq@ET4xmj5&+X*^Y5;VU}F~B_Q|Pn9^^=3VqdmW%j=; zOG{+XPY3K(Je$0d^1lXCx0N`Tb)Wwz8!Qsp`C?m%68ZlCv6-*Ve^4mN0bG;wLtL=Xj{QAv<4h@w&j zg3=VF3DS`ostBQnl>HXYwFXkihFy#fOJ zVv2n0-@N#hQ$_NVx%lxk|s1D#}2d*J@BN6)n zCT;|h8v!){XaGR4z|n38{P#jIA>nx0*mrR3gaM^o022aj=rFh+VCH7w z5m(V?<+Z-Rw%>{J$}1|XKGruhHZ_0x-14of`+HAsU;n_^_{1b>YIhYNwX?FZyCoJ;+r0ic||Isx7a3T@#;32sI46v1(AVXkE zIQZqZ#w}Cl9evM~j8mMQDo#%4mm1Q%7@Z96%?#~u%ZbHAZFIB-{%2WvW%u=3Y7MZtf`x{SCPrb&Ee$v=k0Em_5$#4 z&;LV-j>b&){u9hR>6PNcFEFL~Z%Wj^l$M+Bmh51A@mmN8pM}%k`^Cvo8ms59^@JhJ z`w_h||2HB2V7)<*AtNjRPh+!WDAt}|p8cIj2w3XK;D$5l_)jKtVBJwm$+WG1biX2X zMRG7r4~ZekWhoQ)v_ot7Nn*z`9A39&UNTIK)RT_XM!U{BYTPne>TN97-9bJkoGOxC z>OJgOhanXmTY&&3QDdTLYgk_Hh`r}ofsHaX`JQri$%NxaR8#JI?9xe>d7i+^Z)Z<+ z&z4yZuh0LWai!AOb^WmxW?qDXd#tnT;A1=wLwq2}`PgutdSJ-Qrpfa7+b+>J9LXKX z!ODqVw5%u359c54!699i0XmPR(mqJ_Z4@nv&0&>;1{>J#)e)ZtU`BM;TFc%C(;86oO@9|DG8VCN)e zLj;C>0zc}9{^dztppGm;z(gxU9nl+yW(1c{dfbX-Ox!lAfQe2h#gg&V1(;-f=i=h; zR=5sI90DpvQnEgK|2j-^h^0vi5?4Cl>F&i)2R|ByLBLTIeSKs?PZWGGGUVNYg>mI1 zhafWl25l9yF$mt%Vep77Qf9!#G6)a`=Bv{gv$XtWdurZtu`z>ZCj|U?QZoGbl8yF1 zT!9ZphB0YkCNQ)x1p=aDsMKi&)tj8P&Gk1j?L|ol@MoOKI1TzUY(As8M!;Kt;)-gp zt>661~dC%ZcL@+<_S2@(^=r3JelN! z?M4t#J4ka!zF4-*%vrX~@x?EtIO8eqFd3QH^z_Ja5YDADgK-#+>6C;-X{h(lwTY5k z2R!H8%C(Ybcl$q0Gs$YFO0Mqe4xR3)z3R;6{D*WP$MN=N;vQ!e1XEKIyKe0&`YjvoZv> z>&3D4IIm}GC86&gKWXjb^!1uhp`sUs>+W2Xs-6m%APuNJv~{US8ae147$E#>I9e(+ zQA}qEBNsnhxc|VDvqrJ&f{%n{+zjPfY`@+gn?P`t(W|U(mQ=A>S8hwkJ+0bLw9wWY9x|6*F>giQ} zC%UlgvRxLp@yHI{dmU_&Ca8X=&&Y;5ZoU!C{Nwk`Zc^`7HMnKzZc-ge4 zlc{9a*YlB#^K+inJYSgS$U4URGlXs&2P|J46R%B`D3nmSEcc#u2V>DY$0l#+{g(jo zD{dDXn1ZD<P6p&5PfF~)^7KVWk~@>0r+fQ;0uq<5 zR86$jLlY7(9j6%;$#mALLCejxSb8JFrX_+ANnC3HXEeI|A)xswdaV^qyNop9wbhWJ z)9{PsD;nQ=bu|Ap^NvPJ*Q5E2boU2g86SDU8KX)z(W@n!FI31P4fTxYu*Igi#=T7K zl01tt$}R;fA^AMhGyPpF==ZQs2ZlHU@<>`0f7awnK53eQj*6X5za8dJahk%zhwasj_jo6iJswC`!Y718gi#ont z*_>%`Nq48RZih0^OoD*E@6K=Z;k99mHbdQuSs}C0*YpI4Z&wW=KyjdXlt{m)@s7^* ztWYff0hejKGGSuG%XS;M0t1hoo#h`g-y1J39?|EQq|?EMIpHykny`3WKfx4{{<2i- zxh+pJ#`g}Zk(L7|Cz^mxvo(v4D(=68K6E2{t<})>omq-UexsrTx~eE#;8bX0r;B*{ zl(VjZ)ct#t;U-5n+hCJIB(1Kjj=95UhVXkJI+M0i|^?lIA;&U$PY)`+N z$^)8t1+!5Jo{4nXI=@!n1nLM5r&LR{wnDU8veU=GYRog>b~N{0xVSrj>vpq0!HJd; zM&+yJVz1^c6ukrj`mbigzsU!|ttn#5n_Q3mp3_qh;4Dp@ru6Ec;{{(~>FW&t>DR`7 zW3TQa(LA>-FmvKcE5$0UH}QgOG>3NHD{a8Vx)>PP?hUxx)%P8*H-9Dxt{@H zH^Y{n)#PE&&i7h%P8hk1;_W#sNpfFb9{4DxVHHXV1?^b;bR8DDe5+(8Ppd@`+& zGqy6?wLj(x2jM{w;A?KFmD0BdyX#j)E0?#?SCdNOa2w`h1b@3zOzHvsI%%Y|=p8df zJA?BE8Ka!HQ#bc?9BSZ1ITV8&0Pd(0L!BLK!EXcr;2pcS-!<&xqkSAtoJ)$ZJ@BTk z)y$Jv!>lH|H!_dedPXfby{qB%8_LFwWB1xNa7Pe{(}_<*sR{Lr;cmF%ED#q{82m@< zE>tTrT--QWFI~4}Uc;D%!23gO@f6k3`-YLMYQ4*O!hUndUUXSB^~Mm0J@VNZj&>&w zeSQs}^nyg;GChsA|IYs?>}7>ySSN%3x~SrqRooRD$G&j~CeI?AM>0#_t%f8KUHpVW zp8DX01&A10M@@Y=pt_r2R!?pH8>wz$woKIJWwo?La}c%g1- zfoj^-$TLg&`V4-%DHV}Xo=`ul$qC#mYfhJt`$nPTIQ>FDhw2nbV}#(Za7%Qt93mys zXZ7d|H}@&+NZoe?pR29$cCq=00b0cs0#i!F=UcAJfC|hwmOGtK}5O_W^0%KS?7POXK$#d zXte;bQYZLq?92nC|DySFQ;3x-!KjJAt$_AwsWoDs zZIX+Le{DLq%)YFR%ik}0M+rM8gEX_}5VtwsbMh&9-Yhd(S+#onh*)gRWlGSDENAe% zp1@ii=O+REeWL8NgJu@TLQkyt#z)-CE4{!@HpVi1^ibVK*M}w#Uz>h;9AWcNp^I-! zOlEmzPsq;6yFtsHQLf^YwF0!YZJLAp)$)CS<}_yF{Ck-}+qQKz|MB4gb+?)%o4O<^ z-51IpU-AhbmM;vc#7IaZ(PQVIgvoN?wE9A22Abk(ti2{v&*WUc9}h1dXp=M5KKQ9@pmJrxCn*X7UY#3|Y5gpc zW+H0oS#-Ml8y}pPx7_xIRVPMf2M8UfeLwN1ScH_1ogdsCtVK}LqPrsv9q)Q$(~Y#| zO5Kd_hT#_6yXe2vdP>TkuCxkCWJ=7qGc~<_qFA#0FsblI6l~VzH$MXaYDI+$s@*$C5C^aUB)mNhNjk2 zzCSt~=(j5Dy-5bQ#=%wLnQO#}Hq`cdR|%h%CYmh&TH*E|^V^8*_(JiYc^(c6Lh=@V zi*~Cv8a~plA84nS6c_Eu2l8Gh7F-ajewNF=-k305qBZqKWc_CCLg6g9$qqKvCO?0C zNY}lB{&Y=Tq}nb6D;ds{?{ax4Ol_bNzj^A1;!1TU;X|(ot?woyv~YevW+z&uo~k{! zz;gsUaOAq4{1eeK{K*Mi3enB+Tq5Z1PTZJnUVW7-Ly*7q3FCJ3oIkNM`THe!xQyUO z+=Kw^FjtrWT*}_`cBNVg=w3j-O@FQJG!r`q@2JN;UQ#vZnaRP=QJJaW&(bv(K9*!` z^G{MyL~^OS+lVRzkkwgU}|p3TlXikZEV+6FSz86 zd&I)`C|9`9k5INTW!o6cQd*72Nr|}Ch}Ej!prUP1D#p#3Cz;}wjej|~9da^NCn$9_))Z}4 zzO8EB6ILaO>K|#SFA_c-c6|h9&-R9I8_3?dsGJFqtg+SzXD1;*DauK@>(@!tSV6JM zH?u%hiQD@iK>46S{it-pqCz_Ov+%0RutdfC0SJiO(-?LS&c&n(RW~Rf{1StOfQXk2 zJ`x>YeOA=6&;LUtO7JCvf9*RTOH#1&hm;_lf^-PdjiiLY z@4Mn1*LywxymQU$e3+RtC+3_vv&+rY%_4~Kxs1FF2n8rHC@~<=&3DwZXI?f|AdtK~ z8wd*o0%3y)P*6b_015^gA%O9LJ`!leC}0o@&?6f)3i|Ip6~HuqFdV?Ff7YM^m=~a> z1$qR~_y9}_^j$zBLA~7vxyB|0?e{)207d`<(x#41j<=tT&r~!R`FNg!KzAO22qD0N zKfRQNlbI!>s5{v59R>y-OztEg8acTNcCbcL1;k7!^g)9j=7aw09cRq2g?B%CH8g=3R0Um z?B7}#0OP1}x4bNn>;H_~0~j;zUtV|qU_yWg_Mi3cz?$GVOkm_s$^Ih)FAon&_P?~K z*|!!;0S*iN2U`Oh;lpqF`U3k9{J}v0CWPP80uY3fcZ-o6Q2$`0y5Rp{jQ^}b|FeH2 zk{Bp|pFUDuEE8X2+;lQi5md^uO}j@=?W3z7zb zQBjc?40N_G^gm+L-F~GpIE+Gg75FHH@3+E028q#)v$-rnt=opy9OuToc)J$C}DzWa6 z@Cm(%%^@XYW>I%_gIBeUkl(xi#LV11AdmvWFChF>Q_BJx7oYq62dkh)!ZXWuU}tLN z<$x@|dH((YqoSapV*qokM879c(2!Ex&ZF?65`oc(nb4(7N%+(NW^F$XZe~EZfaJgg z5l9j=lgfA(^?%gGG@Oh#z6{1-;U0p{*|A2J`t>Y=cbz6J>o=gc9*!)^yZfAHgG_ec z4UWigV=IMroSj!OwktnB`FAfi>U5chAyvwolJwe&;4tIjEkaN3^>td_Q6lM z`mBDedP-v~h)xf|72Q4#!GuLqB#eCre(Bj+;hslfRu?nV8+rZIHs5b>BnjqmC71KR zDo&!CH`bhd6S{g~Gv%48mqB$*XICn^dVgh5*b;Z1nJK(tO3CdMi`{{4n9+-+0RD4L z{V@V6(Oa*y}c3cY^f8B^jP0jb3mQUs;l^j;j)t=}FngGv1jH zt7}1S>krCjFm-ob4^EDhU@ZGDw9vc)+7fZ|LqGE6)l376E`oP9E5Xrs?(j>kkYt|A>U459*DT>Fm?k8j zLCL|~O(~mg@Zp}6O z@zCzT)h%s`7H>m@5hf(-rRWrD=M}qWZ^oNp2{L#jb~0|BDaYxzk96Mo>v&67c9|xP zhi6wc%=9jfyMFx3f-*K$rw@qkUsUfC33#WX{!A6wkJuDu>*=%qtbyU&9#)-jmTuAn zd-=v+j$N{2`^0XUDkAq0WCgb2OLj6XqhiO~lS-%YW=sSVd`>&J{8CD5C~QP-O`QBu zP>8?|<00p8lXAWv*80!yUVnW;tlkeVynN$wjc+71u-E9C81F4h`2*&M3u~Zd-S6#^ zXnmfg_RVQ_>~1Rj_VA;tlJ45_#$!R$F@mRDGYYQVxEgee^9P_)Yc2@Kn(z6SGdv8mHd+Y7!mRe7_EczGMW>P z-5G{s&gcY;NBktDT5vozSX+i5f_2L2ixg(IE8;+Rvr~L1K)aVFg8pmCB-jjVSx+sV zU%L3m9E8H=dqb4Z=huW&2b=Z!o1tlx2h7x`X*KPOhi|8!nGzDA09Cr?ge2HPOiU%c$HL<_?bCMMOS4fTsCndNo_xCE5Dm z)x2%m@)*HWOM`?Cjo?X7i3vU2W}7#2(_=`2oGPO{IcjYSz7XS zvz$nh%^&ev%N4H6}yO*Dk?1}j!2*AO+}Oi8M3avl=RX1_{E0# zSj2~)>!{4Y5{Ih#U|#Wpp1Q#(_qf30#fJ$NDuy`UWcY@^L*K=}T;khOXLnYoh81;- z4(2?)$Fmgi@b_Mh%9UT=RVhTwnc1nkI=Ha^#nrSWQ4$%mn-*~1kVpJ+rNvMi>RH|W zP3$?eHT8*veeY1CO9H1g1)J3f7MNXWSo0FNAB#s^9+X7&N+^uDOV+OXsp{SarD~LN z*Wj1cscuE>BIvi>z*luP26mnTHhh=C^n3k@j{Jf}s-I+5JDj)0LEHm5Sq>+@G71|< zGSjy4vcpB4HikNSIw9fBt}iA9-)Hlyvj={zqH{ZctoQi*2E5*Ga@UyWPpd)M$xKmN*BoVkb6@WOc1aN4#`H^IVD z{?I5Q=cl?nC0PUv$B4vy;a7n%~I{$iME?m%;LESYgH|T4Qp_@8=Du)%ffF{`QIf4T$Px zh>s#sz~;TfHp26`52b=X%lKURefBiC!q6*ALM|09IkmTmBO`k;&W%ElYHa4B9|5q}Eucza;B7r2q#x#N4KAyTO+VEtO)UiMn%tYTzr7>+N#&>RKn3uC>$>F{o zjtRA#k>0-mj5Z;S(m7>33hUWC4#Ptk~b_h>pN^&2E;m@sht|6UZTI>j^GLyhMhLa z?y1NV6F;^yXV`4^uuG;Qr-unrr5Z@ST_MImR4f7Q%e1$|v@qqlL8#HtQF6w74LGg`XZnY#VQnrL`3Z{h}RFXG3k7Ve{1I+eZ%sMAfK_=jIB>)-sCNrZBX zCDZ)X3?q*_5rH;$D!0?$JQ}*tp*8xda!kTzpe#65NLz@l^;r1uIovu7EoTG>Q@@k3-E&BL{7Ryl#Da*>H4~ z>DSx~g{a~lC8a7!Xa9&U;tV@2vZshz(OcVV09#K9C&tY0)+Sl6%h#T{5FF1Hc%My8 z_OG%*ttKDLKK;wDt1A9;>(+~H+SHz=sFfOm?bEprea}OY7i=gtW~XH61jC^C@AKhQ zRL1kFuYBbjk39I;n4 zadychY0v5t4&crh%CLp=tP^%<7$1b$n^XGB^=#t#pPYk<{7X8~2L-Xs{-5XGnWG=gg zLRgP0%DP5vSW{HQYSu(CaHo^SHYMg4O>~ZciP}yP_(XMBf0j!>;@_BfpG*?-@Nsj(KHQ)A z?vezxa*a`iNKZ-BO6l*YT_t<^J8Eekc0R&J>r^UF9Tmy;w*W%Q99<>4uhB}?-#G&k zb=roI2+&f9?8-^6hnR)u?@?gd;_EltgPVJQrP$zJdnZX&8Kw?)Y@ zQc^o6E(NlqYEWX=H$gJu;0N)p=;TZkDEq%8BDIfAKRdt$rPKUr2tsN3AA3}$M7Qq?h`O)xlZ2f!x!-wou z3SlGJBvq~%)dsS2?zBc5*ERZKGEXgxS^hpio~Q1}jKaWHno#8{Jyvl8;-#^i(>a#+ zLAT}qN;5ZGKjo-6AnEPEd;@aVBsjJJZv2UCHq4JAZe>9jD3)YK+ZaQ-oRGOyKlu-i z%mEr7?`u2*)8R=G_cP1KG?6Ce5O}-mehUc!#BQ3+1 z)i$SbtmngGm-NbfEQ-d%(U@bb-&#j58!vNg_!#gMWkD3fN`#37)wVI4j5Lb@XOYiR z0k?JHLAB_h!)eSN3Za(%x9D-&B*}*uoOrJpq{D~U<_@RqcvJM05QBCh<(DiKJ9hTc zd&Z`EsKjd}kU*ar3pg8edV;(u07hXrDskr{}Yo z+9wdPRTWOyY3-h%&_-`bA6XK);Lt9vHYw}+#uX$pHQkAAO3L|tHD#9& z(IKA|=tB1#LbMnLB@0XZ2GOntmy)g{ui?OXf^FxHVTnpa5i&^*Ap)R2h^L&Hnnotrr8^InpYpd%t5`XBR zqsua4^Q9uF9i70(qL{;yfWD=69SrVP`T=t~c;5p=1 z7(YutX_R?j`k=|82&_W##W6Pa!0jnwz8!@<+M#A;rQDXt4Z8Fts`nmNk8o3o7fJ4U zSfmbtVu(11M|{tuDb7)15}WvmFd^8<)30Bd$aFDYuKMK(MX;dL&O6J=8gzL{*~>PM zD6@>zI{VXD*?>=;Oo|O!CQfcf`#^6rxJ6hqiL+Z&vkY1&Nmq7%8k@vqVSk8A_Oq-5D6n9Bx$(5myv+!<+cSx*eO zwk(6D_B`SAn^;yqg~=|aO9CS4hjn+;#^s`SnU+Q-c|D=;#)k-BqsLQ{v(t+Ps_Aqt zX+E9i?2(%h@A~fjzL>11dINYxl{ECzPApQN#)YWgfN*!5N`eTrBPuVC&>b8U zI%jFbY2=q(Za|qeT2WuciovBp;F1k`(0b*9@UB=8ju6|H0lj!{fcX?|*I);0Uhq6) z;1-Maa+J`^bnId-t4IaB(#TF7dDSy3(5x3K_3)!YLswX12TmT&%d1W*G2fhQ zaOhZ<*=s?~&E*Ml30&K9@903tNz(a*t?s=zM-O@}ffZX}wbkbs^}5aPRSt+{i?o-C zw)odH1*xzz^P_%RQ$yx!yKPPw)LT3y&DV+g#zov=P1PjMvMUlRzKbU-sd>-kYLN=V zB{mG4zka9mAfc&;^1aIgFP7^PhEhXE6D2!CegH8zxmlL558OmO~29TBwi5N+Q+=IkB!(U zuc2M>A+E!2uZ0VCE|sLw_%s$1_DIYq-#EO(m3}=x)762pK8HO+FW~%(D?9|P4Q@{< zK>@b0nQAk&`ituk_)Ag8rCDi;Bg1|6Pz`n2<$)hS8v`C|H3`CS@2o_DL@oxV@$f>4^aYRd?*bR47yaEAbyV2lQNU{( zhrT-er_~@!FBrdCRWu=Tt>U}y(*6@s4Kkc}vPz_i+#o+S&TPB+u2dg%AahRBGA|y^Ifie8v3T%y8^(TkEvb=I5UxJTuv2zwX%MuajX5ROI>cn>_v2E1d zZ;3;R94`-JaVVPlUM+AfoE4Fl|2%~hl{#tcp_h=;g!aR>&3V0&`GPO-ffMCl?EGKN z5|&0WE3IOGq)J@`9BIQ}#VF%dDtEw6uDcq)76_ zPbpNn4hFZ2ixxddMi$EAe8w$OrO@?y;5Yl#N=M4-2;AR>-6q>(6c$SU9pjo{SEHRN8%Bc zckUvr7soBTDrl%hDMqnlOZx5W?uIz)gttC9I-g*$G7V5#yGxLA1NxNvBH9IBqA^RG zgXSn4m$>(4a)m~Ji_tr|+)x#GqAv@42=l>V`-qWAXAl*UrRf~4)wJDaapo7TaIdz) zr7ne;Y=cfxEEiGO_%?jU()z>eMyzG+E&DB=qNgGe2Bvcm>jnl&Kij5-C_!&TL0gq2 zyD{^F?WH;l8JeVHqH1o4F}z7keOW<|ljmU?BLTSZgUYz2jTlGKL`6r=SW7$ey$i15 zLU#?hNw7|+0?!#Q5C4Q?7SRq*ItfO<>N}GFYLk)nOzGOWJ+|pk8}d|nTuS2wmARL7 zD9yCZ3K_;k)3_2Zd-ieI`&V2VT-f$Wf8Ea%BtWg!1b2B)_BFJ>hgnB23tNsgJtPyO z?RXR&KKXr5h(zX|wRow}mP9@$M-lK2mm=QuAv~24lzsZOtsuhi^I`hyuIT4=-xqvF zp3cv5Z@!2XD}>6la}~W$vz>!+o)CZA?q7}xOWDqb@j|pr1-UZA-@lM=A?4<>zEW%H&{id(L2wOLM`oA0*55+U+PE|q)&$S7BN&jp!8Y_ZCDVA z-O@i-)4=BqTcb+dk@@(lv<}awo;jy6B*$m25o~5|PY&&_$&DK%uWV?$|3$6S+(HG5 zqhe9N^6F*vyRKmPMF|N;<5FXQ-!ql)-_PS`-XHFor<9o$m%%94f_0({^&T^2gM?>8 zxyt%dIvhYF5}y~7GU0XXa{8S_QZ+$yX!KilH)h!v6Bx zFTMdWEtpj-iICrav28jody0Qa(sLlPrq^lFT;8`J_^_pu!Cdqqr3>>+`2N+)tI)3l z!*K^OH=s*FzZ;N@|5S1LPFj@U=Wn(*pevoL2<1mD=!v|*@3~(M#B8!ox&4Axcl6$5 ze^1O>k=%K4MEfe71BY~aANukf|B`G57fg0tT3pxjaL3??fJ}$ps1w!}qItf|1#avC%0P_=YZ!aMQHFOqDM_4=Dzof>L+Svy~iAD T82cTg1F*X9t0L0|?@g5)p=2!cq?I4Dt~Bqgdy7?7M9G7=?636jH*RC3NaXOMvz z$w(Y>7MAzjs@-pYU+o`TwWpr$s_xT$&gomvz4i1xx4&)|0c6VZO7Z}lJLAUT1^{lC z0911BaB~1aRTaPm000Q@jyt=Z2fP5_;o|;-JHx*NkPryO#|ILDKm>#&L?k4{M8w2k z$bB*}gd9RlOh!dU{(yp#l9Gg!`XLp?!}}DJ6#oRl!Ml40A9xQ4yhi~h22=b$+ie?w zoDfihBZr5>0>CB5!6V1H?E)|YZ~!>?csMx!v)q5qxHxz~0(=nRJ)%3mG8q5|4-W^3 zPk>K!SNEM82Y`F`4deu%`wv*25yCXz-=ko4h|T7I?O#qw1(kjA!7-qHU)w1zr=p{C z{2`lwps8GL<(2gnDge$uvF==t$#DR9ccV%0Z;F2(z`-TQyN?gNOQK1^ z|K2|v=Fq->aEk(v;N4X~jz>u!=FE_&PPynS3g`^6!s6_M0xfZ{gSJqmM~4sG1(elthf zUJvVzuBsX3QhWT=$&g`5&Zam`#@dv{h|Z%@O+e|xbYf>+dttGkjP+MChvL&SFyH91 zd68w0ljbY1=q+F&vBaqE6q#EaVD^(g0aCDpEYog79BC-0)=k-dYp7bQOX}ClDWaFj z-wtQ>A-5}2-rb~})JFW8o);?Ub!gGmVfw6HC`0k<8Pf1CI~6l2spTajDc36oOzHK? zJN?Mn2`4M_)4i#dL36*v-*`f=d{!rET}CGyWOsLLNR6jGG~w1p%vZ$g9>fY$(s2sf zTK!uh%}Cv;7&kc`3|fxLt4n*-tu1SNH^o!gb+EGR(^dQlP`>czD`B&rzt>KZ>~Big z(bm5f#l@N`r}MovcTVOJ7W3ZuwOR_2sRplgyV$}9-C0GnNohTNKCj5=p%`|Fa>v@% zba2SX|10o~_j{5>{XqQcju-7U>PmYl(YkuC=YPyL*vP00CLEW;m95;SbqPePryr~ae9D7^wa0*QrbL*OzJ0FS&qC!7N*!&bT50(7Wv^D3MCTPmUQk?;YR*`+ zZ2qwRmgyc@rm5dOIPvJM<}JXcqD&-{E^%f<-?y2M81L;S?#ydkPG{kfT?~ZQcZObi z?xQ1#A-cu2M&UXSr9Zo9>70*8c%@=y$}QnwGgBTEiIN%!Dr`UlrJmjb=v7(3)^2K( zSMQo}xn1*1xoADBFk7_JV0-;Yp9vS6N$L7x?DWTz6|@yo=9fw4xp&3f#ats+>~UG= z!z{iS@cI(j@RIy#pZ4;*3+8$+mlJbX?Q-4mdnRlSDk6a}2bN(eeW!FX80@6-=jp`y>=m2KBb|<%4b6{5 zC+t%*%4R8JNuVCaqv7tXBrM}c!H@BA-uM4wUIgYNEUm*Mzq!6anVm)%gFgzxvjQ~i z-?IG*%JT?hm%Tn5a8vsunYI&c53}Za^h+{E%j>-OKwuot>nhQ0fC!tYx~!p;ZSub3 z-u<%HRAM!&Fe}2O_gZd*Vl$SVdsQ}4qQe{u5cP$|mRXvDnz0^vdX%LT_6h#=0BOO^ z7iAi{O0cQn;VX+~e)gL+iF>yI+S37CX4d}-Qd-Y9CoJWs@^zXadkt9k>>Tu{h@j*U zHsRGWMIl>OvvuW+@s<&g!Vs?C$zr?D*w>>j@g$_ zslr$=$WG~+4J;&BtZF2&+y)Yttbc<8)28fGv`h0tli~T(2t_XXjbpsl?{9?m|!#Jr^)p zr>7`{xzFIqk&!9V%kfzN*#dS0#VhI8CXIiz-}{#M{HM!ueb4W=>6H4MS)!s zh}Xd&5`ynX*~5N7BAA3iZl-B$c}N+d*};##DP9_h2Vy&_b(DD6MuXka6s4k0^kMd*I~o9&63!cE%8$LG2+eKr#}M{&kcTdg7hA7`U~OtNY6mAtLO!;JLeA z;dSo!mg&-Z`ajofY1>P<5J!n6L+URB4)Ml(9jCc93KqX>a}#!B$3VxqjPx4J@I=nG z#+H>kzNWCeA&ugCi|n;n_OQcOzY$GAv$-w4O7S#vAy=@3XG^OFzuuTykB^!Mac)9= z_qY?zsOuRawiXO>&v?gsp!$8g+s8OVEhX~!hNiwo`Vtk6w8RRHPY(+{Ayd~BScO|> zITSnlM~+}0+6E{BKp*3SLTYvf;D5I0*z-TnzFbgBc|@)y&-w}bX#R6tuM*=6&$VCN zTD>QZQR6g+)n%`8c$3^{sl;X>pbcT2WQ*NvfU&^V*?<`xj~bMFDMhW1o{rLMB zgE)wSI^K{wWnvY7%Qo2FY~amXCDli|+v`5tqs;nz_VnxVLnl3?+P038>olUAZ?+Vn zOWhd{Ueqo_Mk~+O7NQ;fD>NrB2N{2%DOwY37Z;oXATqpA$p#C&ud5Bi@0X+AhV_(b zk_B7*RO}B_6OFZS!I(1BBRVP+gu1a7$3`rr&Akt4FldX@JX4vW#;}QlVl&^_*pc(} ztSh=-uV;9?6OTF3XqT4{rX@zhG@&7VLBIbS8((;uS2LH+^9GgIsIHH_`B>!S#UQxq zJr;CSy^$JVzrY25Lqmd%3@}%to$OOw*lWb_J75hj%PhRU7i47QY-$P$)bAxm+q0~V zSTCsa<`2QIa2NF7hvl2Qz8}p)`4r_MhV)X}W79?Ko<;Xzp8i?SK#VwmkQ}kP&{>hb z&FyzK?Hyc`&_a4)v$b7orcpO$s_I;Te;@a(ohvjXO7fts$+$!a==R;v{G|9>&rij5 z|KQpz06=13Ky!P3nyf~snrs-{kgBZg>6vP|9`gB&y8ef0s{VCjX4Spb-+(;*4=zP3 zrCoY+;;LB~{zjp%L37d;1Od(x4w!Zl2nAu2<~2@Do1|K@}MA zDoYSAHuATR%i}_qmlMj@c74ldwpBQBj`kpyJz@cIwCHk1XwcXEDb{G!Y5k?FLK``i z_Cv$wTp40Fdh$`6yl=}6>By;`3X&;p8|GyVm`n;fX=Qbqv~w!IEAE;+!j_33x{h+b znDHsW{%kQ*Pln!K3u-Ure>kxh&1rKb968(+mMYf!gky1q(x2iS)n?TuRPoyb#XY4JkGa7PAPLR(N3tF(vln z`K-9q=M7grxXwO^Z)gXUBy6KEAjoj)`;PeJx(2VA~L@$k0e{eNyp3+s=u&* ztukn9%gYT;Ck6MRelJ$^{YQm+>0>^=67t*kT%KAs=cBWbvE@@%wBs}%KO;yIdN3jF z{+0n(CXLa?NNC&8%2@)%HMhpm?qJu!Z&RbQAQtU8(%M&YPj|;0q{?nC zANDTbW@lBlZoaW;ZRn@Dq5e!RY=EDs+)H@#y}D6Fx>c`U+$}o9#WbcB^%P*0@T*5znyZzRtxh5wmNqkmzPK6{+W46A`)u1`hPf>KlzU2+do7up+whxH8{;NPHd0r_^ zeG9PnKZGSudpBYmHdN9KY?I5Vot;bL_Y(yRd|pTlZ9yPj5=ljN^F5R1W-mBTs;P26 z?b^o)=>M@mi23z|@#*h*E67O02nbXQw$R+VsPJ&KY2lVBtFYQYyb+B9{h8sl=pv)> zuPxa&!|LYYibf60TefF2GqLAtN`(a(Ir0SctHI*W9a<*SapF7@7{27+QMNkrQM*qH zif81v%EVD;oss)4ulxE-g#W^Y6Laixuj?(b8F z&HKMv#(1=J)sZIoc^`wyCrqH^qZ&gNVRR3T4KcZOtBgi}Bnnk_1Ld}^R2c@Qi);cNf5Ud-QP^9Of3f;C_`9RBVAMOYA&)qv0kzpL0#;M71B|B+ln>JHU zdedDf{epINnmAc#QRE0qZc3-4hZ}ASt#;QRGcP;1DawAm?p@VI)GECjK%Q`5MLLNi zeGlNJz(zxCoY(Tk7~HU{g{Sc6Yy{g`*l(+C;5LQxv)er+>;oW^Wh>lE2c^DjB$sm&i$R4>o>Kb>h*-O+#fT#Ar1Y|FLPbhT?6&{ z`W`gwkt6WU^dtJKS!uPp{3e++$yVR-`C!qFr1C*AqsURi-;!6NI+vpsDEU-#&CTuV z@CI4Kxtyk^I+=%k*7~3};B0FYmDOd)sB>v6CVwgRL04LIr_${|wV4^<{;l z7-8%!aP;E`CUI|I7}{6{KiNvTGWT)m4$R-vV4)2hJJr7F%^w!=0L7PnXiciwe+nFTDvbj@B#c)4AzJ z*IC|4@#0w)jy~i_;px5cXA^r^DxvGPwb^9oF2vYsaakMwYMAbe zS*_ZvV9ayCqJRA1o0`U6F5*a^XG0~WDP7)d)c7F_B|WZt;?ZoB58fTpbQC2pE|aMY zwe{X7n(U_g;hCBg7RXyt6!k547z@7PlnANPd0~b!&LI&C{cW2Tcw(BaRlA0JER$o^ z$19aD`4L^X2}(GB1GtS;ezqdx&)~q12LxR(0~nW}d1>VyjJ? zq#E?HhtE#qPjvx@@k)aDOu(M8X)$Shjh2pvh)L^)wv2&w_mq_ za_8>_b2YgW@elW?QopvZ&(YC18B47zFUO?C^!UK9Lr+x$gYXy-9 zW6ZVgxzi}e@bGPu_esR6rlM6x4IG5)7A7BF^rb(^=XqgOw45rCq&T*|(Ux^Oo6E@j zw~pEcT|Je#PrBUl`80V>Y~H8S#WfhwRs_dP#n9?;mf&L>%TWBtku{p9z8?dj&0K*UPS z`I9C(wMKpi?%(v$80&uKi25=f{Kdtkyr^$~_yy;6G9DT{usI&Dj);x;sNhlt+1~M= zWaiXJW2L;8uyeb`6-@ zZC>$6q>cJ4>4QX?emjK2`cXU!m>(TKW4u3(zKy*Fq!xR$Y~mh|=9burLn}}7XWW|M zng*{Zy?J=Rf>X}?Is~z7(LU!9_s9Fw_XD@(M}$)fYHIV4C&KX!-R_k-Si&t<2pj_M zOkEcR3AG*a*aJUZ5OV#)Gtuc2*{CEX#gRX&lIo5Vw&XR-hMUc`jV00AwAJ$pS~Hz& zwvll?2O$bj7=#g@QDN6epcL_JbGu4_KkiLW*^Y{HhZv zs=HHJI8h`;)`N`vv!-)r0N$KtIO^ z>r8v4%wTNJ+GHJ*J3Z*}j5_?RGvA!l*|%<};lm9&hApb?SM!2(r!UrGvm?)9dNa}7 zTdFpO&Vm){0=1@*jU$|buP}L8ty(P^75xhKg<|yL>%!)->l1uUnYRGIJXaK!2Vo;H z+Vzw@siycX9A%Udfx$PG{OREcE3qO~Pz$M}rllz`jVB$B6P)Oc_UHiJ)z! z_%DQugGH`aoYeb4dR9*rqUvhwQkBZ4%NU+L`T5{f>N}Ir%4o;byP-6;isPExPjcrVxL}Be%on`RO8nB@un?WK> z@?g0pYOvaV-u1V6lRET6__(TlLvqt19+2cvWETVO%^q!v zqjM4J2-ggIy!HN5d7VdjTi`xyLOj00EH+l=z_#FrD&v-wn?sS*!aaV#;d`sY;F-qz zTa7v{IwSqod8N)RQ#)0RbmlT9e%DkIy$&OwHW%1B_c3KESBtgHUO@4r!KA+dajwG| zE`e^LcSA)1Cmy3z3cvbu0y2|$4RxL;;6gi^73iVQ_&E@5K)B;k0~xEHDyxL2mPkde zI{Y}R%T!gOa~i632PymN_+7+KgXZ>z8PcmZ%#G5t;MNZ^4K&U?yL+}Z#@N3jnQ_l> zj`abZZ^Q&4M{#b=pJt`oxedme(=fY>fiI~xaAKweN8e##4<3YQP`LZB02v6OnM1sf zJ>Ke@$16OK zreCSA){g7&dEyk(?^1U3b8n&y*h6O{)t-CFfVd~q$ow8Qd)6{~1)I$7seNVq&eXGY z$^`0L&A6|xV^h3j6H`&}3_q~Md`RtF5})dY6-uBD5%NVU`*5Jf`Www@=T|R!zJP8U zUz)V66T>t?9kPQDp;S{dFW&)NKG|N{O5@Qt9R?yM5i$){R)3JY39o0SB!h)T4Vt5t z;>Sq&n~y4*zxHMc%GLBt%&~_Bo$&v3jI*F`x`;?8WhQgmi$DdJOjPmB7j4t%D5y*} zf1uSbi~dN;Uw|`VXvjrlw=&_b76r8Z=aFBfEN8@YtNzAp$E{*e|Pp*eRMU zPVSKB^{6|g9p9;)_;p#O`g6xqJAwM$b(u?8*V1D_s*9^JBU@5q#Vyx*U|3oCfY{F` zX1XciURTV43$kE!-5nFP?Jo$V-HbBvFwI|}i-fu583-@BlK5q{tKghjz>k?S6r@vC zLtJT#Cnnn7XP;0cTs79fW+$?0D&}<+M3#`|;r3+~Pxy5HYL&`dk(Cv5g0mAF^cFD1 zkXUG2F)M3Y)SmHdc+u3|eWlwGt9?^xT@+pPgbmRvNSk24mb*~6)po`lmSf#e#cf;D zgDBsF!Dq@Z3YW{oQA_AdM`E=cCtpD%?S}yNm#e87q#+mAS9TVAP{(>l?;jqeZ*XX(si$6fK7zpB8q zeWQ#SlMByF@dE9E8PgJ)I^r;CHd3K2??~52bGk$6>@9GsNIR354IQHrMgrd=OA?vp z1jhD>nPJe|Pi8=Z%xZ&o5d`5Njczi_zZwLjzv@t#7M{3sYUX8C?P?p|1h4CN5Vruc zGU(qJOV8l%Ne!Gun>^Yx4G(E)=vd$J*XI^oU1qvrDh>F?607wZ45qcfQs8G#Kg-1D zyAtA)77NTagPfzn|Dgs^P9EYs&l9Rm__r{cXb>a__#G67 z4E_9o{5(iOE@Kr(Jt@<(u*9Ms*w48zQ|r+@z?#`lAlu6XDaU+*?!BF@lFBd4UJcZa z%5>tn%nNds4QRq&%qqk&3ML$~g;*Qz9QOAP<44wrw7N95IjxJ8yq;6D7cn|zUg@_$ z`11WtpM5yS?4Kn~MDRIkm0ZwRIrvLI5KM@*%C4=tu_B_g+}98uU&{0(R;@B^#{Aph;k5b?f4C^D0I z1_Ux`TAEgTI3=Byq6Qw@hAs{Bz!-6n{`j96`&WzF4q+U8jWlYw5V;nfff%pwfs9bT zBdxt@IX6{J4kv5VXDca*otwXIBBgZ1Pg)L|7zgL4M844p>0_! zN-xE0lVf!w1wtGFfsOQ2LC|PdGDS`I#>E1ZaNtn7)W9r}3d=2fEX@bJOPXZo&x z_cHFbGw`2lcMy;RHF3yb!~H~Qts@#D51cLr2(U*9=;!Dg$A9nmrWf2@gMV*4uJf-; q3#H2((GihJ&$6HV9FYEqUBEf3?jLpce*@9i=N-(&|1_R%=l%x`y1j(} literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/Sooloos-ControlOne_325x328.jpg b/3rdparty/libflac/doc/html/images/hw/Sooloos-ControlOne_325x328.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5e173a560990219df8835bb6c8c53ddb4711a142 GIT binary patch literal 17304 zcmbTdbyyr9JADDPP ze_-HbpnlIP%ErkjAS^6Q$MQ{DOi+qPNLb*XLEzBP(J?VF$*{4>1U|n1DDeMzd+7$? zpukDNiNnKD1K!}k!Q;Ta^aIEM064^dp5p&(aBtudkr0qkUR&j`0dVl}a0p09NXSTt z2yfs4aDX@P2#7e;NVsgG$au=eP67Du*<*8R2)?Ss^-R5^;rQ+xct$8Dt{%VsEhxA5 zoR&+~#HIE_-p1=_q_1S)UupdhVz0Ci5Rs5y8(DE)ufKsqc)f!12L4}N;NIZCBj8fA ziQ*|E8rQtiaSDjd>6to1`g%_D0s*{z?e*FN2Ot7Ck5f=iK>GjtMVk&r@yI~}&D6|5 z_YLl>H%-rDJMbWm954|&4D*52;#zt1Ld*Nfm={18WgwciQBuZs{I@%pa2Z7Ou8<1* z$5%KMg#YCbpz}I*7(X-veE4-^H4G~d4Gs1SRGHI!$8GLMbD@0?4eOdR zy{9yoy3Te4_C@y~l3iWSh?EtFN@d*`OwXJvXaDc_Mo|1EEaD)6uby+eQlJWR=oI0Z zNYu01VPc7Y0JK z#-`pV|0tqu*DQXcGweGKe%j+3)Qz!guDU z;%#k@YSt3+PwMa4MrKu@uH0eZ(}`)ZwHzPWR!sDpY!#Prf4G&6TO?MR8mHe~ zb5v59RZ*K3a4*c%(qE!M_p_#bgN^cq8W8-S1Cvq!7J=FK>x12*7r;(oZ0F8t^e-jn zfU4cQ$C2x&#H?v|11Rdccru+^fEX5aq3bz%d={#6ik(%|h(0^}qODsB+fRr~wB}sT#gyi( zt*vpvq`FiO#PR&BcY?y_{5+m~MLl7e%ds@hqoknFr+T>A#I-{=qfnH%djZVQkVN`a zkEd-_78UgCK5oZ%y=VZq8F!!93z?ZmPJaiVzI&!3Dd@e{MeBktoea(BGYB#XR1sw! zWJjSCWMC*N%^%J$&m^-69dbI6jm#gJu+g!r=$P5`Jy+)mJ0uP|CDKTE0OE9)XD10S zNUWW|zKQRb3>wOI1fVr&pE@>dV>tA5LYzS2k5(ndDt^t|Gaq{3c5X;QgD=H5XUju_ z@xhVF)1SThWs9R@EV9&QVv@XBcVzhZbNGpzAZT$>9Nyv$cJBZ46|5S^Nc!cl@R}6a zP(HHoio8*x`({oO{+{X$m@sx!>&@Ips{Dvn`7X=HponsRg0Pe6zhozoFZDZB@ zM+a5}>!v@SN9 z(ucMh=qpHK1k470EjD!EESys zV&+(R-KndXu-4RlyiwXu%!$D!)ms*FHa#kB7FBY^_~+C7!1T3mYe#DqU)uK z-b}HgU+YCth>_&s-Tp(+|kWoQ6R^oCqA}ma`qmI$pQp9^A@>N#n6qQ zRg@H5LDMUKzHO;FZ5n8OMjtPqR9%?iPSPn}i?6bQi~BOwtmwHV&6sj;h~Y2_DY>CH zc3>6TJHHlNvTQNVVxAzgMH1tsyo@Blk&Xu~Lo6LoxsjtPv zldbs_%kHdqe zt8>zW8k&4)?X2*;ULJ@S?74PtFmIzj%lOILo`89n-tLGt@}BatTs2z0|{Fe#8Jt2 zc&7c4!DjD9C)%>0>N1KB`QuudJ)bR->iA_xXe(h*7ZkAV)N8u+IJ$TnX>GAZR&kLa8XishD4cX$sPU6y=N@#)aM$^lhRqon)OKZ+uD(-Au1NM%Pb1f zf=(%l0ZYx+QBJ#*WfyAt^6J%->8UzRb*&Po zKGn4iS1QY8v;}FTM}m@X`0&a0{w=Tm(G~bqlQ4gM#L8lT@B2{h^9}9a=cndHEm}wT zPa1Qob$qtxqr`&jdNV;gYm>-EqWd&T=>f-U=>fH@Qed_|>OO?eY)cs#frkxT8vH2* zq4L8BA9(DykNA2fx9r1wuni}s#s(of@{;bZ3Z58v@x&xgiW|nJl)OCmoFfD$uzswSAF31E9H$B*-bDxKjHU(Z(mV?oETWxCYO^dDm@tKql6%3cKlOu?km zJY%Zxxq6NJ6o!v1I9*j?nvu;$NpD<%?PO7$I;Z_s&=UH-aXW6EHoM-&K9BH;h>r$V zW}eKpKX~ClQ}KOCGG&dn@t+Ax=nI=`0_j_cb$Lf!`FSa5=BWOb^R);=s_ z&3E^o<9I9>k4`|0OD0JmmjgA)_~s)=VKHGDk_g~Z*;)k*3xB%dgn2UdI#iIogaaH; zK9THz{6X^*GX{-*D#<0C0H#>c%y|PVY zw{sE9QBPdnzc;%h%|JOIS;`H}0hWoQd=!;gT38smDaM5%CFH6QvfVZ%q7g$L^F^R< zh=uI=;%34uzo2sOzP-3u@Ms<(F&53hH5 zYudg4o+f&3{bVG!^NLTAoTI3AVa_dTc7V@jn6lN8OV`?``lMW6KknG1B)h5!nx#&A zal+RBdlf%&E~h(=Yk^E6#PS8u^h5*6F->f|JEZA;FU`=`j=~o6jzwRQkcZ59RQGB> zT`jN&E%%cqSMGo(THs-6kY&y~+GS@|Ax-aO%PYbJIB)v_!~*9XOm$@y75bGO#D8@}237DT2}BB)mp0O|Hg&|9Xp z^`46$&gO@UxvP;^ely`#Ksy_lc%+B`#(3@HVVwBe$A9^rUELkhk-O9=)Es_wIkdKf zibWOrWT11n({d~zK(J}{L^m_UNGg!J%g?It1sSMm1L7mv@K`sSb1@(@S3T(q0y&#O zY8!QI_w7Z=(t@;gyT)QE8LG)}BnXq{_X!Q6qQdT?^9#P0@|*_qnHOes2hZ5mlUfrvw=_S)9iD}vhT;bVy-i+X3_?Kl6j9R7>d z1E;;7;#{jtWNbMyPRHHEwh5$h|-#e^5>(Hw&n`dvq4Z@&j75hyP29Q#Cm&T z-%if;WTFSR!CrP~Tv|Ilsj60s*~#dF*Js$S2TVVPZNM*|Zm8dtr}U1R+F zU4h%9apTg$B*p_EJ&nh5ewif?rW?P)Ls?2q-EW8zTAVRFs+o@#>QO<~xm6~14f^_= zU%7?(X!!-P+2Rz!Xn{sIX3lQV&&TgbFG1IjP~Uev(}T+g+Ajcq@mb*j!*6y?A5)jI zfoh~Il~j9dt9^l&q#0za{92KAt3@$k#?7#v9zDv?Ck0`>yNm0NiG$-qUW+t~Rn5oN z43h$1bVlk_3EqIvcY#>1J`AXo#7S9^mj*d$GnCI#b76OClqbYzob2|MT4!|QgimP; zSW)3zU0G?06nVF0XG=8d-g?)4Q=^f?#UuC{*^R)+F&^ zp(I*4YX%G&8+Hdl>j#79Rp0T>Xnr#;2I;#F2HT{AWD8g8L$w%8%1TT&q83x4N4?fK z0huNNe~afUH(3l6S75^Sk1v4Fp*xM}bR$VjQMB>O^Uc^x@I0yOKYY^KL*{xyJGC#lBOZG#qYgE)ZQjFGSJKSi% z)W8bIfSA(4+|ZJ6a)hn*c(v5D;HcBNM$!j;mclOec`cecS*s?wMX_%V1+kS0INj@2 ze8SSq8~c)9FKOA?u8!^WFkGadaqk>93wzWs+y`2y+ZH# zN`V_0Ac|`6+Zc~X76Exdw^?UtGIour>5j>c{HQyK;=wisKQ150$b=?hXEeU#2e^lx<7Ljfne(tF1w}euJ33_#2A^w3n9c_xtmEae}59lQL7zAEPQRD1o8}qmfA< zzKOSR1NzB7!!yH=;}X~7c;9C9`W6N{rISV882kFmX0#k`jCES1k$svsWaOibTXH@$ zNGlV_jir9Wfy*6fV_xke}RCl4N0KN&_u6s^}aR@1=%= zOdFTy^gjjkZ}HU<-eBvt`U%caOxu2#QC`+pr&~`Z@iLx|JNuRm7r7Ov5EkmeTxjUV zf(Oa1%Il~u{N+2}8on04fLZ8Ghc&dpqu|ZQs5{j9jk>5=Sxu!jqpgNp3$}u_qtQHS z_VC`!wC-f`NWHJ3FfQQaI`?|>8L!`yGIb`Vyez2|#1G-KDj+tEVitlPjxd(w=a(jB zDu?xNOb62bgP{Hk@(O;ZOL4|s8v5R~#JeQ=aq#yG;6yGq2jqg%?NF*S{^d#eVO-Gr z4aP~&#JpBn$?#~&!SBnUgQ%MrG4C*q$@+?q6w~S0d}5mL)+HZ`Jg&`*jn8OM1kF>^ z?`;!mB^Cs6Sx+V%t8CLgJj}^%6tH#tvDYL1h}d#Ui{-ASTgCXd#hUrUUTbrq>)f9(3DZr_SlR-APaH$?38ET*k*G`Xp<^LH$8QAlrK|%fmDdkveACqP?Apm z)7zAo_L_%U>ja_GY~X3n=t~p1IcoB#?;CQ;fc( zDko%zZt=4|IyB;@EMaY{fdE?7^%X5Y%us)yAM|Ht`EdCtjiW@bB-XSL7=xNpIt z-24o)o$F2IJ(L@BGO}`w!E1Hoi@bziEB&mgYbP%tPCkyx-}1wp4893vu;sD7+u$9R z1{Y@2zZC@5_fCemab5Yv?>rC8u?sT@BHWfvWkNC#7T z&DkoDCFc@DcZ++y^_u*SsvJ)S^zGj>4{1Av@qC4*Zm+6B~ zsBLYvzXP*!o#lual6-Uiw2Ax+7rE{6> zc6m}Na8PdnK4T}$ggzF!pf0VdHDreGMtk3k>1pqXGLwZk!P?^gF8ET;EX8EoqSo!I zp66Ex8C~6gpj~2qBtW$9$3nYzQtB$aHRQWZ`VtKdX_v10W!BGikH41_r&TkGIgbKN z51&SlbQ?-$`p8;r3ZmhF`;w6~H5JO+H8SdI&%MWxNs+2MhCc zkuF@>%t?>Vm~rinwk#9WC8iDXb2oHvvdP>$a)k6ggDO;|c0`>^OwtAl#ylvr44tmd zYR){a$(m0L`PHDUyv2=E@{WZqsP~~M{GCOPF93Ds7pWeY-ShfT?H2xith6hQBde|ke^`UUkPQRWUoq@B zn-2@2=h`h5%m>^NGy15eu_L|yVP|}*?AKoxYNZNk+_G`kB>O|goXYG!+3G6l%PSnn zP?O8KLRgV^XX&Y|7TE=pyn-wb8eOcct@9!@R5hdw_6%4ZrD^_{Mtg>l#)JB|~WgY|sbXZ9xCO$!7% zneU6vF7(NTU?i(WBFdl^#>Xb{0oQD^5hxeaozx2aq9>&nG-%j7-T@m6pfrW6d%7ZYfRxO3w4&{V|4Spyn4ynJE5FJ=zaiGU~EVZe(ZIR>x7(3`puefh}bZ|8)7}m{fW?Ta26B|jA zhwXmI9FLS5S#9^+{}ITifB_0y;(B~Q<(wIthlIXHt}g($djnM;j|)Xj^}ko=qsbJi zr|-DjXs39}eoE=b>^KEEZuS}{r0C#JgHgyE%{Ei;2M z1IHgg@4T~K0~{Izv)rkB);UGFrs@etwoe-S#-DgSCt{hqXDyqp-B}idXhC_0xjr?- z)YN}TAu);|E#JdbX@hZ}6n9yBSWsPkBXi}F7gM5JW}s(5w7XwzN^m&oLA&G7b%23% z{R6QgvJ?-gjYU!YbW2ob%7uWt&`dzI-`R!IW+x72bbjMX3BzYqerl~XT~+wLMV%ua zJrMPYkx<*;ttxA;_vPW>DTfv?(kQCKK;vi+G=Bt=o*lI1~yhDTg7&8ViSs^j6oT6o7#yx~sC3We*VG z-dm?Z8$7`ipxYi@Nl0s1>E&^2gBO=K)22PK@8hxG*wVUoYnh^(44G_#5%4qj7eDZR3qa)2OC%J!{41$dCNaHaRDwU;D&a#(>c*bHN1fa&TGPh;+$NFR1n23xO0X>vh0tEXF=ZSC)1Ob&(Xh# z;vLFsq2zd_ANAG1KmXtg*0)qmVx#mB0ci?5BATojN)KdrQdbzZ@&)3OcnL%IK~L;l z+IQ*k%#Cq3i*rW};C)?MMejOJk+S%HmrEjzXmhj!qw-E&QnvCv63?-z=L6h%mZa5xvcilD z4+=mKI(l5lnO^a-=L1Kc6T56DbL%g8yYtv)TajK>E*y!7u;SU1DvN5$%;0@6JsVo0 zfmsfUuIC&L>Hl@}u!u_HYrebK95MTxXYEjbedQ)PIV?|;l7!3C^uUYQXV?BaeNat? zKkuNKf>|&+%=)t3!2uXw4rcN3bUHt`xOO$93C;cG#Xz(RJ_L|ql}+5AXy?1QP5bI^ z`c~KqNV+VQuF5y4^P`@(MNPiie?O`25cfza8!92zhZPuuac>tm74|kqb#9SDyNJix zc@#LnbmC5hX5r;mA7%$=7&rS>gyJ{^T2I<-(zmcYk909EF_J)68k4YrfYbTe!Nv%1*iVm?PUDb!M%pfAwX9gkz|#TC^lx{ zxD@yQp|!vSNsw*c$;P<60sf{QCTXRpOSzvBIeP)v`J$T^;Ms<7uel!)u=g(r{DJ`W z$anN!0M6*48EQYW9T|GylVc1RIzf=q-%g>|VE7hDbSmZuF)2oGre>R4d156!aW}$e zU}0RQw639SeTFHnfPY!c;EsKKx6vB`-pt2JmcrpOf9@4$=+L;GZPMS?r4HfrdblK9 z@^<7;E?O0_nIG(Y)jLDKLv-%+=9Al8SS%_oU>kXb(8Rfkl4YA;wg~g3i&^rVd2VAs zErmPRD0&0|vQW-p?O%yL$^2QeS+0N1;74@>3WL@P{hy4ypJC2h-sIBOtM3JG+2&BKD|h_QVMHk`x>MrBU?Ravua2aI^|HRU1> zbSB!%dWG#)cAG;C=}Kd-Da(8+ezuWL%mzRlJ1B%dmjsXarh7WeIZv%F9ateB*nfgO zd^Se7bJlmyh`-mMB6cbO`Be|h$@H>{643^A2MP;Cq@3T3Rj@;+8*_V<6=`#=Bea6q zuNAIG8wOo|po0DF!>_J*yv4zsSENtq756|-=nj;29nm{cYq-^EEtN4854Dnu z44IhF>?i^3XVY%Bq31?i92kFeb(CM||Lzgnw%m^5NVUuFq|@7cLLgy9Rg48KwgjYO zJ7b1;4S?20$5JyJnql6KXMDVtk{znVC57oJKr`ou)|COt2118|qq?v2I~q}UT|fPN z1m{xPeF9Mtj6hQVVPS(K)vjknM80)Rviikic8Q(na1@%DK-$kP`H0;zYpiC#xu}jl zxfj5?9XFgej+| zovfi?a_+H&%68q{iu|PC;fhBq7i6#twm#)kgOu7B_SL#cC1{CgT!Mh-AF3bIvJLbk z2a<7{2O>{w$B(cuEXCo-lue7Q-4_5NMAxl$-6A7tF-k~Qx1II?6Xkpm#Xx1$Zo%TP z#D0!@KbX^{RvOh@w=FhC(L)4({~ENdDDsY5>rYh%SDUt3)9f+A%|7Z+`FHuMg1oFl ze=GoJ9+P`+L^CvDi313Uh-2XeCzdQwGDjroJC^;;z96R0@g{Lnbhfe0wGzC1l_Z3* z-BognqYccCZL$J7!({8~0YhDqYtE!=S;&Y33!4sz3tOuNt=kbYt);5?C*j$0(^@+> zhdH-CNqM;kjmR1*KMly4bQxmc+hU{!eJ)S6SDf#8>|AQM*O8^Urw|V!cIMxV6cW)M zt=d;i{A8h!37rv{N|Y;JBU#VV^f37>M07c^E>GxwAB6b!w%?(Q}5$$DAYRz9q(IYcsLZ6wXPN^z|%P-bi|o|)z!i``jZPGLi0Wf>;c*l8 zdtunMy(x#E3ombI?WZT)eu z)KMf5y$#Bi*R`NhD-otTMniJsRV_g#>h!cZn$@FoL?BD*ccl@=&R;5>7s}!RU%m?T zWQ%?T1X<3WIVwrbB%GHbBPQ(Q##h#gt02kYMrL*&3wwxW?=_x_YSz{$sUs1Wq~BOi zN)r$Ljdp%rnG%=nR@sA`jz$~pEWVqgZns`!d>0BL?|K;RIOpX4Xa#Ipf4`P(_uW?0 z<5rPP#1I!uRQb6bbxgP92)LM_Yb3UC2$K*}v?sLSzJykOZn?6lyOrdOXhm)f1!6LP z8kJC_EX7J4I;v+Whv>+dx8bVs4ubKnS5WM|n`$zr5|1Vn$&T~tfBBkZQQT~fD_nl* z+2LHDP>>!+*d*Yy3^N;V5KJeA!#{2}a;2P+nlAT{o?yw|#FAQ8u+@WuXg) z&@X-Sa|a32M>FTheqv_vc$z;mZ#qM1O`l0OARzs%6Pafvrrt%ni$R$u?MSlS@k#Sh zhpLJB)$E#@c+tFh7f$R>wX&+08>^2N^%16pd27h(oyCXhQIfSoR+!e}Cp7}L&eGp9 z3O8cEb)!Uw_;w2=Q{#?p5+;Q;z$sQg6Dw%a+y=2Mhc5L!wAn_{oMoXPYniVaPCMV2Ye?W1OyCz7z$%87 z^KxVh+?U7HmC&?U-hiX3p`AvHM2x`BE#2C^LzcwXvLJ`;^K}-zpZ&_|N}aZlDH8X( zZ*JO7deDcJ>j2}u3t(12sP^(Zlf6T>|zMi7*OxCoN zZSF*^`IHld?8wETTJfg{T^MFf6PbR8&xEibA4h6uDKsHgW#})WTJWFEnDb+@-Dt<5 zvome|Y}>}sIWAZNwpdWD1pE5(hOoHn$OY3}v2{+1?pno<9lk{h*wKXwUxd<_T|@M~ z_uE`KA5^9GmSenwni2#! zwD-If#k4;)gZPV|-YZ{UI5i8@WbGkPB-5G`XW?}e^49;wZ-2G9rO;5}Myk4|z1%_@ zvxr%KCf!9z_EVkjtIgovBuTPNRK{hCJHB$nn+O z;&cy74z2WV6cw4wqQI`}V|>UIGBds83qm=S?ZUu$*>(%h*t>vi2lq(FkwSr$RHqC~ z{3GkGCLUC~$!T@_KPKk8I=g~=V@E)2*ORSZ<}f|mTWWPh>Nw=*`NU}fH)uXCr{HB( zf2E#>fLR8N$!4@gkaKK5r_!Fbwi!NW;0y36$NV@=Q(ji#z(pLU-5VvOZ!K za&bs1^RzZZzS$0hlS+0&4eYsjRhfH)7vduJJABNr*! z&Cv^Ka+dQy-u+GL2G9y<{#}V>x9bn5Nt_Et2@O4lbc&IZO`0!auoWNG>Xf(%*Q8

D!{m_ zxC@ zT*LMX$+S?j9V@k{mN2yyqgBkZECYv+;x{a(x*vua<<)=vWbySL%LAwv$N~ zXO_EJ7h=*B6f`6Zf4`MDXLd~0Y|YlA=+zO6kOnd)HmIBOJ=|x`IlvWK}gJUi%{ z<(@ahs1aM|g3sPd){8Pk6Byi%ZgUjcSI>oCVNdOONc{{yI;y-?@*e>!S{GJXw`zs{ z^93*iR^sv4jzdcK{{+(elJt9&=DKTrLqyHD$=?tVn*fPP{kl*^%w~ofs zztBIo>ML@C47MNv)kn4t+G)20{6r%gvQUn-^{k%n`%7f8Z#JvWjo&mx!dw(svB(Mz zHV*-lL6H?7>PJq^N&;dVDlL(b_14M1nUkL(-Ec%=aoI05cvt4K;hUN!VQtIKO8B)K z7)#_X=U=%y!G2Mok}GsWj|RO1-TPWo=IV}kRzM{w$c~H$%&nO^yi24MJhFzHxemEJ zulZo7WqRN11hTDuV+tv@M~gey2;aZ18xmt9T9Yv2FCig)F+vAic&*<1B*W+&@euMH z$y|Tk9z|<`;l0*P!*=WgqjA355b}}}&MynE;cE4Hus&$a&Q36{3;&X$&?SRMQG_Ni zcY;)|)AiPQwimXo{#!V~-GAoj`zAUE7Y+;WhKcY(o7k3S)PDs6s1bL-ZC-a)(P*vO z>tHK30pN4?+|Xsa>65)n`K8Ho(hI;4f#f(K{d9#P-K%j}Zpk>Tnr+SWHs;pjpdkRh z*INM%mBbl8JA185r!%!~>>I_r(A_7O<~NucLLFp!Kf0@mzyXgjg04=k+fIeIl*6C* zV8jUhA2Ezm@P|7w!3!{>lp=T*Y_hp9bYA`L)-xY2UuT^nT$dTShDU!kb;R zP%g|TJm?Exj6rz)F%A@7x%;RRe?mFTBmWf?ZvO(xgo(@=!@lcj5?zH2`L%7uPU+3KIB@&YK_ z^83l+zcbsl&&U1xV4}`10G`4Zfb?+Om4IV{*MgVN&9%bgjCp3XbzW&+{q*$w_|gG& zB-=$jPFED%Elchks;DwNefYW5`PJXxi_L$o*|N0iPUp<>rqE%5!gPeCV&_!lpL^8`%%>8HSS2D1l5 z_yO83qarWbRikWWNuEUod>7xW2xKp^jv!d{xAAur&rd>i{c6y_;cq4ad)s4yQ9NJxBg2X z!dY?WT_^u7)#B0D#dlMPIkSw7^1K|4fH&PYErl?mzDMG>mQGW;&4AbGMbCHI0#H(M zF^PUySq`o|*mOTR2L~cN!zMx4ynpkbSErqefF1B@(*#WZ>xvzMu2FKl%2{5>pg1G4 zj~qLh{0cuEo1(pt{SuHkn|NU9uml*duJ-Ad)9Lz^ikgS%=fu($-3H~d&b~YB z(^z3W$|7G-S?%M!{xW(9px%eKQhan5NuaV?9?KWmV4(nf$Y_ReJkz~Lfi`-7^MIOP zFw!6UO=j{~N4E!}a#ue350v`d@A}QGk`ErLKj(f?vHCf{iBeJG~$Lx@QdiHK=!!gOoF2&gPz^7?B=Uco*jvn}bO5$=}%Xj9b z?Mk|47SrT-GU$j+Qv@m;G;W(%fJpVMoN*oqWXWk`LPB`u?iS|BG}EO&pl-Th7<>}K zWj^EW97AvE0ZP1Ff?V)Hst_;*AOW{A)50-)x2Hf3f>z|sIYWsuf|_Ps1w>a5q2lUq?Cj_UFWHGP5sw2#qFwlafZ~Dwsp@`2}E# z$750{8JV#8H{&mZZcRh`Zm@^xGYXykpxR}b(OG2HfE4sse1_vi*bCq)P_!oBsSKFl zf0EA4FYLzQ2@pXb5KuKIl$9*#`BdqzHJ|Z_6O_3f$)nTvbn?&Kw`fqFMmK**h2#wa zA0}C6$36bM0NPW{V$Ne>SE!wv*U=px6s`VAS^sbQfFPLXus|qDSCGrz41Z!ZjtaTl zbwf*7u4L5=p`wAZ zHs7xJ>2-={{YGLNv!GwjtwqcPb)uKPtXn_L<}N%G2V5CHFkn<)SicREo<(8?rOKJO zYdw1yu>7Yq^52O)uN7OO%pzs;(l=U88?KLjXsiK}pATz3(~@LHf5)>EBk`2jynI}! z68}207*x=B17uish(ajOiLQ}@5KYQJK8Ddz<^S|m!$s429*M1=iY^W4MR^`l#0KAd zMLbBk`O4pjRfG6Rt423O&aiC-Bsb}#A~UMd8Gd zfDMhCBGj+QZaowU^XD#-;i7ma2{q9MrG$6wELPm9Q}3Ew3MenXVrp~G_fMRE5V(T_ z4zWmcKM%ohUkgOmLsla&wfQ9*n-&X8{o^J7R7!iv2K$Y#Ts}GnT!;?SOE*wLC%>+4 zBxLnC4^P`oKH$vo{FQ!GQaL7^hcyOH2sKJHoGSnvLFBGf(Ld4OQH(%$c_RXIR)>OG zDWbXK{LP^s&(V4@!`(COIgc&EMa_`EYVISMW`2CEtsxcvUb0lSEnZmOFx@R#4#Pxv zgVmf}@vnsQe~0v6Sr02sk}JzB+w)um_jiC&kn+@%t*gLSvlzi3_#bbrocNn!4C0=u z@_+jER=)s-X?B7#9(?5{%pc}!WB_coL zFF(?Qz#hNvllrQ70BzJuEmt(Kg7jTbZ_N-`mJOnd z>j`H2LCU?iKB+lEjJ9bC$8^kgsx2s19uGrbcCMn-MV?n{G)sEc^fA|Nf2a=5*^Q~D zGPskLTJfhwG)7_xQmr_Vy&Ko(6rZ~aS2}%`@pz58Du^Hu{f`W{H`u6CKlTBF994k` zF2B^Q5W6XywdzO z0v&~0W`YvUJ&SG?BW{jV)Q;0*%MsgMOk6B_u8+8tXwHd=L9zW2 zh0X>)Dhi42fwWOQUU1f~yqdLny;>|1a|}g+oKQIL1>gi39niGI-P}#U>zhIv83Yy) zB+{oOWgp&t(NJ>ru5mTOu_)x-WqLKOUI5>ND(ZD9ZHdju3*Yel%tPKv<6b)I=xF94 zvFzTOxDi!XpWYdsu^=c^;bUu2yB6YI(vFoES7qBS#8y{x-PCxDkYzae?0hLy4PiVk z>f+xtL^qBZoac%nK>|^-2S&XvF&p zO(x>#;1l!hUgmd~l_HZ!c<{#iyp6}7 ze?vFH{XVZ{&&u;%-n6F8I2|0#hn0Zs*uoTQIcCLA(9cn=SXy!biHeI?kGCJG6|u2D)6EC+q;(KaO0e|TxAUYj<$5Kw=~4j zd^_YFSdmo-A>2|`l6meYsJmKl_Dh)WhV^dii^weNs%DnN_G1}|8VWDjB^m%LSt2Rx za@Uh;UjXV^Qf=cd4?}zz;-A7e=3n*6ySP;5geX3DJ?~f9=_Pe1fo)d!E1q;Cz?Y$U z)aezMe+?@Zn{>HQ;*-i;Ibbf-cV^ ztCLw6nT1b==UM`c7n0}D-fA{mekv%wFJmN(R9?R=TY z+wwoQHaLBUo4%|E4{=wLgYawk>XpDVEcJ3{ldB^5$dc~ly3J>F!LXH;2-cL`Wr%JoJ9qKhro z=D5u`LsTLEH-|OkdI{-l=64#tOzV?pxg1o< z!eh$+E>QA`%>{$K$Gf{+p!=WUu?DSdo1)V5u9$q&`+joYom6J?_Ds(`42PK4GH+0u z)p)D1ZTV)+Wee|iNTpRin-%x?%mSY!rcwUia0Mz7325A;h1Hcp%e~}DIG9lCu2qh(i77C@Jrl+N+r=z8# zyTHK0bb*1HfsT%egNd1yjh&sHo{^J_gN=)Yjh*c;6A+l(LkXdQKxo)5&|P5re}mKs zFjE6oAPq3+5vit0ziGBXvF<&p$7>m9bshBlsI!y_D=lBy4kQqo4pXxO;~uSmUmllnIQvzoe3c*N_x zf~(hrZfQQW^{V-TmcDKL)Xv`f`A4$*MRM+6_$Qid|Cc*i5@sd`QBZ&=AYjP9b+W`v z4mGr)WW5tsy$2LMlGu0+kA-pN>AyZ_bj_ zWxt%5_vS#7!S&?^97SNiecQ3*GKIi@CAB^QCMmn;a`*h}7ZUJvjyvw<=q6n@zM&)S z&!$6=#8Kc+p>=pA`+v;-_u`$(v3kp|NU?g#MYX#knR_?Wy7`}?`1hWpZYW9a@JRiL z;6Hks`zN05Av1{SzY>}#2XYY@I|zfd73oZxNut^+}55&%gd5|evdzi4@* zF%bKp&aKaux&aT>Lqx9AHZfi=P=3qtT0>pyH#x$XrTXOXv_!aLAwtR6B8isD=#LxG zax2AFjbq%LIvcoF$V~CL$aqz($*8hVd%LLse~OpxhszDoBjEa?G1lpMN--m;8jk&_ z8TyDimwOGnYq7`|Mzcgm@#W_qHV-gK*xF{6!^0VH^Co;UtHnU4+;^cWCuHZtuip8+ z7mxfdJGjYjWq+^>!jJ$P@rttBeU%I7>9pM=G0Ed^?#4oHA!aEVE_928;Oh4ij|<#d zDo^V_%%jnV->j7DQlyj^Qh5;L?qK-_e4y-{-N9SS`u6)Pm`C&7K{6MEZMU>$&5dAd z#+KG-62O!(VeCFu&ojVK)B-x~FffI4DppsGFzFXIr!3(&6zzPJhPx7jQ4IBavyH?V1+*{_3P%O!7q7F*MENn8E85Z3MtZtm zdVwjODt|6L{3CG#PqwJ|cBR>a-%TbrEdGq~#Wwlbz!^0v&q)cBOprFaU4pbkjJgq9%vt7D>8d+VpU z2#NsTZ=4}%3Qw_B%7aKaV!@LqjW}CY(EKrUd_vFckTaS`Q!TnX;91UqLV8PnetzZ& zDkE^QIq?d+j9X6N|=TI^2W--pv;n1=s1|xF9s8@FL_f5JO z#YbmEwg%8*Qmwuhj%+f9npCWuDpU0YvDl4-=A__$ddfZVoiIV!CA1Rz09G@rY}3%# z7-Fe6k@KSeyY^8yy*I2ias4e5&;!8e9ljLtT7t6$?9_!`*!RJL9RoZ0HvY`?x+Ax$ zukg)(H%>JDA~zRqCcuW?g)WYJa)$vl+n-q=w<;0dS7Tk2m~K9QC1vs^*W4kuue&r# zR(1fkYyp5_P>O*3c10CzakAGABWx*Pp6OejhMKXV(XH*0B2UM36S$vOvHuZ2D|d7G zSdZUQpm%>^fUF2k1^Xi+RK|}AD%Qm*pPv0;NFmlWtg;*UMajwC{YoD&+VPAq?hTyE zS-r&x=qo6<2i3RKKEPn*@4_aPZm!HRLf&=%hL-CJ6x_yx7LMOT9x#*vC`8y<(fPthvlw}U@Ib{7_8dWm|2*f1I$eKKs3<}1 zau{R!Qu+D#wq<-wMy>49r=EuGsZ3~3^~3=?4t>cXHRf+}GRK+kkM&F#am(?yY%Oa= zNx_<#r-EFH>>VP^;EJe2Q(sZA}>G;T<=XUdUfC+nLTAJ#KUTTV#-r%nWBhZb zv595hhGNw9<3^T|OLJF`D9`q^62ZwZ*=%QNsCSE5uWf8~hfqU~gh<7X1xOr=*7R7u z3BZo3WO|C_=CpocwulSINnNLUPcy}vNI2{7v*tf%dYN;*CMkUJ)7p2di-01 z%BfVTFL_q_AJAop{A|3Q@G>3&N5ub}Mao$U4!^Maq&ZjAEoHTOnu6KT&4F2$S~3>k z4wWVmJO{s8NkGq8PrWsh0?~lF@leq6G@Awh<2Uj2|O;mW+>`3}2VKcQe zK4bbPZN{m7S397i4VpFaK5kCl5`%$P5Vg^;HkZp|n}fa@lS683p#GirJZ2u|3#?JF zC%aq&4^5CknKrP`TV{PXgB9)%H>5lJUoQ}i*I8|yS7@IW$hkV;x#;<0v3k@Q-F1E- z?`Nz=C+Mc@k5JQe8ho<7Gp;d&Ya;>KT|sZxCLdtSNq}h_pS<^Gao5~&`v|;PoX=?x z^?p2o3t!T1+5UA!_@ z$i!1&)2VH2;8^`(xNuD(9{Fpub%QOm3OMI6=n3KQ8xc}1d=zhw%1&a3N1bWtZALE( zJJqZp$-*>S!|b%0yPM#T&Cg=q*j=iV?Bz9>ucy$fs+lP%e9URVhW@y7`qI_N9V0=N z5@h=A$QbS`^Oz^t0oe?GSYx3*YJ!jZ zN!D6}e$(L3glFwTMk5@0Do5^??z?53bMtaNMEG3K=PfYpPq;v=DL)UTh-Z(xW)PCM z%&y+8q)E#Ud#KmrIVdE{6f_^#H@+V< zQClZ#mf42o!uKfp#A)U% z6y`sXKa5M|*_-=>;NGj~cK(A`A>oOmPyMiLC|uIIFRQ~>xsKw=DT8jO1m|y6aq>?{ z>%#6YAthqn3irgjJy!#Zi}9!iP94iOTj}Hs)EAL1y*1!m zcvA_fsI5|o8J(}K4)v3K)f9f2;hl)E!8|v|20O2!x7u@@2(CbIRF4G*reiII=q)vkrttWJy-lQgdj8Y;rPAL zlpUc>o^X8om_0ZW+q+_zx{L^>b=C{luiqHNODU+K^_$!vnfW+8Bnb9uV$|68I)c2d5%_456N@LyT8E` zx)rxizc1umGE%>SMIW~+(ri6yqUXw!B>@ge<9gcTb0Xt){S2 zL&o^a+kDLUj2_>V;c|VKmP{1ev*)p!*RerkTMV&U{+9d@cAOSY$MC-V{$K7ADeQg2u2CmvKEJ$=mmPT3* zABhW_8aB?mXG8h|fk%C?#arbUSh=YtCYqHcFpe2@p#^^g`|wmc z!U7Zn-fP|E*~ad;Heg(eWAm5HX1H2<6E|(e>HDIgV4+$Cwsjv8P{%Rzk}CD6JLFFT zN8Y+qUZG#{BtWIUTRpO~VR&%_aZFa!sxQ=%fNkY$hvODcqZzQ9KuEr|?BKz3!)o3- z#2G8OyBx{H1DaLY9trtt-I{FW?~^+qb!MqA$u|Ud+}-$}=0Fv<+?pBfkjDlG&;5I< z>ZqnMLQW#NXQ~Cbjcss4QdD7wM+rFtMD}G2`Mcl^b;~|EyZY<3*7#^Na*hNvgr8n} zbM&PEhbt&JobHgi8?XTS_e2$} zPJ90D|HqHmU>!eVE&DLo(#uXu$NYy3%^%Y?tlz&yJvhVr0#&e- zDRSEJg~;;ZU!(WIRqAL2oUtPqW zj(tL4>`XQb$M++NPqWOTj5*9Vx!1d*Vgz(By95VX7lad3ZQb#@KvChuq|hBG^|Yy) zo*0x5#=SuMIwS9EN1v&vu2~ezJs~qZYMO`Yka_@IGZV<+ue!Z{{aDn@{K3ZBSVolG zRNwVk10H>;L|#KhWPR{GEvFk7E+GHdYQWZw7(s1Dd#nZL);Q$`gzB2Rb~{%(L7yKd R2>QgSM3XP^|E4l&`d=c9w>1C& literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/a2_01_325x252.jpg b/3rdparty/libflac/doc/html/images/hw/a2_01_325x252.jpg new file mode 100644 index 0000000000000000000000000000000000000000..10d7170d22607aa7a9c83f1bd438e06a7cd89ac8 GIT binary patch literal 15381 zcmdtIV|Zmv&;WR28xz~M?Hk*eaN^{~oY=N)8aj?cYiK_ZUazdrGQcZFfcHH%vT0{?f|eQJ*+GM00jjA9RL7;{kp%>=Ndp9 z009pE-}RLszb+_PC@4rsD0mncXjnveL_`F51Oy~xbW|i{G-Lz>RBTi<3`{I6EJT!V zIM|pt=$KfT|1klB_-X?Q1qTHMhlzxMg!%tDef9#-U;%Gnk`Q2|0B|%g2sE(IK>#5D z00sdC_P@gZ@AIn;4hand3-^WofeHWvhlBu!hCxI}LIOa1QG-JOAfeEpVMx(gVKFd8 zRgAI7KmiFev)JTpVyaHguE`CJecvc3si@gGxy04fHBC%i3YwZZxFw}D0)s;mQwodc z;BX|Q&CK0`l8X8Vc4)M&zdFMIZzRDX{-1*U*D(|{%omaq?F$DEfP{dCf`EYfA1S}Y zK!ZdlWrY$|`5G!ANHW$G^ zOP+bF=^;=BwGt}6ytBCfz`x0-y>$-#c%n7Da2SvD*)opn=2QBed6SRAy=?j~HtF)P zvs^Up>eogDEzzaTxW5s1yV=K6h0s?yDe4;tLEdFhK1_R{Z*_jt+&p{l~w^ z|7i$`^N5(U9GU2s#(5wDy2J%PLQ@ra`=SASA&9pKsW+xPl|8!#gneA{+`mYO92}=E z4r7!2CNggd>$tToKc1}qhrLS7)y{@d$!kLo9UabJlqy%ZOz)(ar)@f%?%Y&G?2^g5X%P$4+0kmF$LElHkb9p1&t2kTR;&E(AIL)Cc4k zhI;B2pWl2}ya`@T0-N8tyxAQ423|5qvrJ2Ik5dT<1jNehh~_Os=puh-4X%ux%Nj^t z3YuekfY;l0+op-(a<}^HfkI>f;+Q-ece5yeNj;5x$jQ*5Nc!o#gzp|$DlnKX7mN&j zPH69>F&+cNJW5QPFJ>$QgQ5er^M_s+a|q^7$g8R3$?jLNlUbW3mgdsHQuP|}Ic)hM z+QNc!wwN?NaF;6pXZ2CT2?_jDD96zS=Cb@LG5z(|l*=0)bed~bc+Ta*F z=P58KX67_!1-4zMl8`V}^$^a`k{q!Xzrfrc32Vzy{tJP0Y9-^Zo z41`aB>Vzk17#Rx>HVz7+dwJug1Qa!CJului1A||Nxlg!KJQEClJvR2-`xyPch{g>} zpZ+pFBFfFzK4EuQiTK*soLDE#gl;#Yp)H{dTG zpN>ep`UwB%4MqP!K-NeMhE{82tjc%n)U(rTlHL=jsc9-Jab7$Ok*`MR+qn9pqIt}X z*zA@Ol5C0a`v|wA=|r?^pG}BBD{NjRQ&sTU&D(QGVP-pQ z(zRZ1Xl<`h&vj3AQ+b|xojE$BPuq3k=0M*~J}V7<*>IIQkWtW;#5ZDm!R2tZWCbG^vLW1!@0pFWdhi} zMrPquz{8cm6vzZn7@C(V-3Rd5Ls~698Bq?ccoxY)QC!AL<>lgKoHOI@SoVizR48oZ zqtjdu&GKl-t;x@oA_t6ST@TH_P;Kves81yLC6;in+ih)yd;<8~c$-wS97fl!2UP7u zck~#LVy))_-XeMkNO$z;nC~>obhkj{BS^p&_#JbGgi`Cdx|vaoy-8C&$6eM@xmt2FKrz zp^kR@iG1S1A^ILUAs%aAq>+l0tKIKbH`>KUs{?zXS_1{ims6QMXXh$61r>MPM5S5- z6>y&bJ&vf@OyJV1@@%_D0rkUjk?!j&dL12Jo;c{#+((E(*v^aP!%9eB#&{D~qw|Nd zdI$pB@jcvNaXXH6hIs{qC!ig!eo01N-aQD!5Tf&(VMT(dM!UgL@WH_T;i!`hgdJ?G z)yv?>I{O4@lGPmYNFMrh^*10kDse54ZM_y|C}Q$vP_u>U*Qilv0U;YN1QjTKC9Ob` zf@?%O{-*@(Q)BwWy%!75tO*&iQEKSp$^v>p9_`cjM2@0!F2))sq4d0MsY&L59!fn= z#=30EF}V1Kb$%M*Ayh&XG@Q!fOmnOSP=wu5a)euCOl?a!C5h`9Sov+LboA&XXy`mN z1i5qu9xpHD8XO#v z`L9w%dYiaGRU|&y);slnQOF#P?{?1Jf-+^ME#||1g1UPME=yG2#3~{)0%D^pI>i1} zLe%u5_Q?5tn3mn&)a=N?Rn0L8m?qWZi*56h-6B-@W!HIYe2-k5gg8M+ zX7+Zpy*~?TXzRO6=)(p6Owz)Kh=qhL&Y{THPj>h1Ugn3S&}0=m$E($Ck4QV>4=nIO zb4@fU%dS{E;L7j~$hC9r8bN9D*X5tJypZ!;3i^!Dl0|T!6r4-+ehefuS_!KbzlRV* zO2H2|CHNRB?}fyi6etm2p2e_J?U-o59m!b{ub`&KEZEM+`IX-!ldML5s%%RXNnCM{AQ}UwMM7Nq*&3EVBTYSx> z|CyGVE6hk;Q)12@q?wgW@kmByiYzq7EgR-DT&oD4@L~{(f_`+u7Uz|Drq_2h^viCL z&@JpI$5H5r(d@-ZUM_#7-EL5MCs0-$9~)jqaQUEw)`%KgcXeh~jjgG1yk!lIm99cE zz+%>`s9{82?ZwbrxV7#yIml_2sdOkgXb$UvO2G>Rgyt%OrhR9sbUv!{2C7M>Xj$vX zYD}6WNu-JPpywV*2(A&oSNr~Bwl|9r%A)huV2L-8u5Xl+K6i09HR%*${Hdjv7BPi= zV&<}euJQYM+-?q+Nr`1X*6#a~o`~3QGIaIaz}36hvLP1JI=Dm=f$qzH{q50dyA79{ zem`7yI>_4-3)hg6!R=*Jz11lYDr5!5Waih(5faI~iN8mz{>0UvBB3)bMRO-`xwdQr z5`_TnFNm6m*?eiE&0_JqiD$J~_2TVH6X6Y=ve@9P^cQud#snTzj$#V`~*pRbLGg&@2Ufx3>+p_=v5ZJgYpAi>(S;iB9{nbSn<6{ zjU8zDsX-kQO04V8ekv9<0giY3O>ZS>#W<=4ORX2s9cMd%G>e@KEfb!?wi%Bp1UBiX zYMu~TSu zw%i9)Nq`Thy=Ck$h3V{$lo7vx&*Iu}?oz+?)Ji`2tn&?xAu!%uy8Mb}qtTa;IMR?_ zcd%C1a~MTH4yYLjixBriZpyo})Rr}o8}39ly6U9SUvRn8fKSm*urd)vtP|8@s3)GE zJ{CDTwvH1fN-OeDic`7I#x{>XM!!=)ubMv=KdyyZ%kpV(!E~ZcE-!RRTV`S* z@gOjEECN%$pwIVRh-agw^@MFFQ}$A4zQl?QolM@;ESRo%+0hEu&wuRrj)q$ zmYpG$gPqSZAiIuX&2Hk&i_;3Rartqo*1WiXK)b9zS%CPP?bgS3e(rQl&YrTt#b2X7 zKi9DkW!y+hR_R9$0;MPWlXY$;!JZl$I{TEI96K|mL2AaDcpcjS9gV2DF`bydY|N;3 zd$g_%r;T=Q4K<~9l72!~7CZVB<3ld(ik+w|R0|DKadIFWOtZr9F>>ChG~5JU%c$0r zBN+IW30l0`g3s8*?OeFZOYywul1i1cGl44Yav7wtbg6pgfo36Z1)8a$tGXbgy@IV^6i;kgylR6}Fz zf+H^Rt$X+BOMtvF2ijdW@PX4^A7Oe&9?uaI6QO zs-J-Wvd+%Ztyz&~Y%WH2ZOsn@94*t{%{1^BJ33D2Z%({GbM$M#(54*f!6#JDC~ndI z@DvZnrX$&0B(=Im|mrNELzWs5ysH5@T zs&p)2jya2Ldhq`7r1!3A%}VHrr^L@znV~yH&@@S%>&j`%%XgmLB$CT0lVQHNDAQGE zPADUIaUE~N0~8==0-W3A9xA9kmwiU~Zs=rP9e_4EhJ(k@sN~6zT%ocRRQ0MyGjr59@RNBJ|&aoX{&)=$N`2 z-B20-*!rNs;D7ffE#)9PR_H{VS&=*94N2Lc##4Pn&gJj{rQh|ipjoT!m8O3Jdi8Db zwC2Zzjivk0{QGz$&l0rHU1q6Z9uTd64IDKQbs4_F&|mF1QYo=G{H3K6=IFG{<`mzf zVKXbUK0f*ur}y;J)izH$^Sbg@Gf!hLT_G$abt+C)UTVsGzG?8B{(GJ}Bhf0`q(I1% z*9sDEDuxVXYc8vBkSWfBIHdfjB)cn!H>H)hOKuMPzH4dJJ^|zKWtscp1n&cL2Agwq`RvDv*Tn;geDmR zImIj@~I~xVy>Z3=BJQAB1N&An>SwdRZ=2xOf-P%d%A@N&3XS#0Pdev1d|mA{PaGpA3VYQH1ycqUN(&FiwUx$9PpXwKW1Lm&UWK-dOxjQr{$a) zt1Fh&p=!lc;p*FewS){hX+`YEta@?YI3}dJqAf&C?F)KpNYf@Jk3CmbnVgkzQ|x4j z)N`vD^8@jMoB-U|e1nkP#5Lb5#;&X)QEZtM9?B@wj%2wg>47aNc5WJ-HYVh$&c?gs zD?>%jx7H&lc_D4hk(Z?6?Tz(k)f3#n6t$?`ZY_HSb2T{G$l1iK_2Mlj7ZP`QwoR%b z%!96|5*n+tM6cOPbu~Gi1hs&xi@;Z9*RI(M5eM_V2k6e;y|M)@b0yj9`EZAc{R5{27 zhPED3)<9>qxk@!;Rn$jIs}&Ut6KBMW+qjPD#42w&cq7#(KlCrrl5L~SVY-yTNW0zi z*V;3#82^1rzzyNmoV4xk?h%mxsNqC)Blw3(ac}_q-pX(HX?J`DS>87iqN;khVOL}ToSWTuSIIOaU%OF zwoOUjrqvGLAIY6nn@h%C;e}wMNwvSh4%kKyZ!WfzYba$2bDl>%PErzh52Tzivs}9D zmbmqh+Tm z;Z>z+d~{|OMVaQJXQ_P#7@DP3WjfW7Im45NoLp)$A)|DR=4bkux)**)$9&SP6SiNO ztm~Cwpjp(2e^3LeuA$u>mt9*nTvf*45QOi?zLlfl=LgR2I&}J)7TfqW*+9AejHG1g zGAyIj&8J)u<}k5jM4aLvy`-JySx;Bd;**ra@%tD z((9~pUfl9N#QwsYyupPx3`@^|REudbwAE0ik7#j9LW-}Q;ZkMN%M|IY`zWG{vuvvg zhYZ?so>u5?jl=aDRP`$rYUmGD<<3Zg{=jl~x^?45G4Zc56LR8x0@xp2H_5Yzj@mk%qnj0%Rr1gFRTH8;36v@|blqN1Oe1zuyaYVQ>ibv#`%gfhCWH{OD zxsn1Y>;+Yj5Ah4D(XG%IiKDiN*}M;`|9mTEJI!>89-s%(s$y=03r_U2lQJsUDU6SE z(}Yx6i58!)uX&!Z5OVglNbeizbbm~g-O)y`%Dy-Mk&Ko zZj&Wr2b5IDRdR4G6t5#`AKMOKV?P0t1Gl#k9eGB5Xwi>^8v!4U^`C&2n@>QIJepMP zj`^#h+Iy4DcCEnuj<#I_C*u<5xZ5Y-xdDdv`w~1)k+W~k<56tl=wS1oALhm5i)cQ2 zbnwYF{1&C^?sw(GmUr;7p8#?=b`!ADDYT!C9uqk0%{>)~x&H+nux7nHGWceioLl$2 zQya$%t`I*CyApmrN03K9xzt&CMuNQ}<_p1j9Ptq%Ezzouqc9loxiy@B0+9aHBpu%n zhtp2!`>9u{^Co-Y7A7r#(47)nG#Q8HbCf^>M5`9modPkm9v8H~aNi`E?IN=x?-#X( zFd9ATFed!vY6OJgdN6HP(=YZnN^X{>IB7Gm#=Jp|419d8N$3$%M9Rz7UZKSHk2I7_ zRPS8MF?x>oc@vBs*Vu7Wa8&Ggp>G|Ohcpx7aPu4$60~rFB9>$pO2o>TtSs=?5n7NITcRR}4$dQBIv=T%^>-AiT$T97ShqJXh}9WcFLR&+MjcC zr;{AM>$GXU{)%AQP3f|Z2dd1jCha+5bC(!Q8V8^jkPIp>H$=pNjCGbu6Mp zrkT`Sv!$i!P_rO5nD?b=goRnajP;npv3ICk$G?T$QW2~CDBt%?Gg8L!N_JBPE1Ni( zI|42;xJjj!)sXWxE~9jN{q(nbB}F?XGGCioq!GSAcw&vq{QVo!*L+&A?tlG5KLpGz zrhOF2{{oV2CJaot(@oJ`t>TgtmJPNdN?|Tl$u(nw@47F&boeb12fmnQ;DnWb|p;J)7FH%9VsMgyB^Rg_#gn z>&FQ57Fy-eyr;xem+t#5oEFyAq4vRZ#NX9%h@bnNHr4DTL1M{#)^S=yzpvg-oqUOY z3>TFMRWM1!bAJNtza{B8^)!>O*d4gk(5Om95}~1xE>MGrGs#9I`>EC;e0TbIs;nVR zS@sX zUzbPA_uUpuv)O^brezz+C2th^fq{;ao3tUT)Cnmm9MQrria-c2{RxnF8Y18tjm@kY zlZO~)iSY$0KNW)KPf>0I9eTl@_Hr9o<~wIMb|TfST%=`N_2sOO)vSpzwT+)~t$zyk z)0?$6T7Ng7JKS9&bdS^&oM1Ss&C111{CJFQ;EzZX=X+84I()E+RD&JS^yfS@UcCge zbQD`)1MMbk4ycysl)-b?*^euCfr_16O!QrvLmRZz2$h%{90eOx*3MGPN_yx^B$C#>H2LJY{H{vK z@u2ow0kbQS1E0L^1D;fJP3P%Eev-F|*Ovn{jz$!GsNKpx1d$c@HLJ#@U#_Fwr-?jt z8{JubEmaaQz)YXY+^J`NE#L4>CbaZT@VdSaJ?$b>_DNDHYHmhT5PB!fWXJ+Xo|Rz% z&n+cM_I{ zD~Z0kT~CR%R6FCB3tB9Kwgp?YCmy{li&VOnPL^xaWNU+7pMZgd!>_m^?fSRVkWhta z_(NOe`!yE)4OVB|iFDJxr-N0CRaIkAIq-ueOhq-7e>&^Ylt{8R4bJJR&E%< zK!x{I5iz$)CvyDT9|tTIB7|Wcpc~wCd6JVKcKhj@=8OQg(b{`XUZ_bX$m7sg?|9+h zWG?yfM`pTHW<_$L>j}_a`4&-o!_s=sP76-4t)60eSxOmHs}7z>FcfAMbPv7O6GcoL zBb42oF`}dWFtf+{bA}t?995;q7w>To%BhY~z2>hQtMe@fN9z_Et46$h(y8N?9TZ$W zEyR!3`d`$)k%KCq7~2)KmSA3Y1U~`1^0q)MJ=VrMmt7su`=$liZ!s46MZFV6OeBtw z#>zF(`wDN$W)QP>z)6I*m|bZkb>;|%F>gow5sZGHC>~vyI<{~klfcjreJfT`%)Z(| zuSO4Mdc(4nE-efn+djC<5az|(CxC%W5NUG2$2H>b-qO|oIMNV#+10`qK0U{CkkE}g z2Cw>KuV#Nc%lE3szHJ|6=g!``%L54n17(&|6&LSfW@a;FQV2%IbNG$8k}p15=5UMV z7>4lGdH-6M`bo9_tuRvE|DTN_)Ug^Kb$mznk+S#Y9v`Wi?1izY7_NnXg9(EId|J0^ zEF%^6dhRmvolY_AI5id63B!ai^8YE>Qlz3%(S*k#++SUr37fu{>{sKffzc6U1katT zk=BO=Pq^(m!s1tt`dw_M{DUTvRFTfc>1X4u z3B;_;uUfB`2*s|bG$k-rw>zej`R7)Nw)7P931}W8raFQOB^RVND48j_igAk#l0+hH zmS+2xf|eU{t^*HYlXmNA^1UP^BMl|oifqKHz|!GKtjtI_@|DjY&36qr-7U9Jl5Iqs zxmRa>S49h81XuqOt6QrWpd*5^i;e%Y4eC?KlylL!h5!gs5@<39w*Q z%J5MY#Kx;a_BD?dVjuW2)seS6l%CXZmOs?|^$Y5`v5Ll6As~(3TTTtg%V+(;rxBFf z4_}$9*SDB#!pQZWKO34`N$F*insihHNDKD7zjz~rSpVabr^Vo?6(=6ir(N#Fz^U0L zlE(6wL7*C}ZT$5%pMY1`>saEW58;E5cKp8uB|C`fRc{vy99u^)GFiPm_^8?DG8tJV z@^d9-c^JrDTrmM=fn3r+is3S>-E?Q;R=&YY{U;AO(@tHV90+~SK z`TgdkF>B*t+p5sy8nD%6YS&pzuy36fTa>o&BHjACuH_D7pc)@0oSW-9Zd+rWD*wn@ zwj<1Z7b;K`$_37n2JXXYdTI%`QcAg+Wo$66Ctp)d$ICa8Nw1AXa|Qza*d_BZmpe_uXtXff@2?ntpfpL1c;g$9hKZJRMu#%?djJ#11I19Cae4jA z!)+BadP3co!ED%hijmLQj*4pX4q9PDb{9Cg5SB*>jyNAQ-&pH-hn6ab>4_(=IHBLb zV+&mH_icQgq3kbIS!yhJPMy}bSF}spg!@Jcrb*r9Jwm+u(0@bB^MXvQ)8naED6=h3 zDreC{uU4uEI!nn;vnm0vf&@=4$8-&$q}%9}miRg)R3XqglHs(5;qYftVbAlMQTor` z>T9Kd{As(Xv;kp+o@?_i6-=$rHqPQ_%g0NKP@FqrgZDG10N z)DhazYOjsDTWrfGeCpj8<=R^SdX{nBZEv;B}QxiqP63Av7ou^E)mjP8&d&_|M=0o@{iErB=((zX}L;e6(o9!QP=9w zuvP(yRA?*Hbw^8h*lM8h%dsLh zj-5}aqR^UBn#xUr{2XbG(R{SOVQm;*;Tf3F_zAETWB7f{`)W9UxulKgddD=Fnq!zf z6;C!aUpsisw7lhoW%ESBIDx$GKbI;TrSS>)5J#44&s~cIS!~$|(S)~pmL+eiYJ=eL zqPX&Xj};Ynp~uY4wSL_;l^uo?sQ-?nHgDq~{-P}A+U9FKCRY-1eVf*R7n{$Qv)5nq zLR4$~jjpR3FsDw8i6*1^4eh!M9&H{EH- zFLAzWn~w;<9jY`3kjU3Kg-KCXgUpNql3MQG2ET{=S}%!rB?TS9hmme5QEsk+2_=?o zRnS75wpwXajwB6VX4T~bpfURInEyI!n5Fz&S}bJ<$E!jr2TIiySIcY*!qaXLll~Ti zU@z^h(n90ZTpe;3k8Vh)a-qgOk%0)}!rq?%c&yPDNJ?(4vX4TgCkf|d&}ZJb3qDA4gZ&vydFVio9d%y2c zOer%);SuAfyaBu-dJ=K_-9Hfbe!pi@5}zAU&Q_w$SVVrVS&4AK$>y%jSm;8qS?miV zOWc1w<*)SJaKA*zJwh1Dt2+9GT@f;T0!Y4yLg4%EKD-E-U%Kk3@HJ7(Zl_O-7S5kp zIq)@+N(t}aML+C+jD@BI(E@D3EL+b?+4l!zt+d&q{)W+nJvYQr;qx$sJ+_DmPsw|- zy5Jfj6c7qbD#JdM#8J`Mz|WriEwzwCnK3(zcZ+{(VGZUqATs{Vy3fj za#A@*WsYe#oL@{7H0i??E8%SKG9?t$>vPhW?{Q-OR;!U^cO9n(945SNR@|;M)WcV|H#Y(g$#HZKHoJ8m#EyumU0M$X{D^fBs8aj11Cj%GG#Wmx(J>E zh#h^%w76BQW|NhIs!3`~&GGRr@5bZ~3$Al|=|Dgz_qUMWb(jig#uC1Qvf8@Ut-};x z*P@9&uimt9_Fw-^_87&(oe1+I`yqJoq=n$UTa?3?QRK6t$=XS?-iQ2~2we8i>{(&n z{=aZLHJwC3*n+B#iCr4YKNdg#&K`d|UiKTpuKjBdOMz|UXiIp^oXKEo;b*zs*6|_toW+*1FvnYwOi|$4ryc^F6-%Crr9C178QZx2@Kga9IT9Wt2Esy8^&hf~ zpI=wVXyo+dw2lWE{KL}|E5oJEA?91g1!-DG|r6J8YH=Y|Q6RVo3iq_Qbm zy|Dg}u*r~+pT$;GItM_H8zlUU8fIqMD8J`e9SA28F+sOG-?H>i_E&fgDRhc0Ev2SC zvl9KTK&~=X;QzPO#eUC2l)USkB|i|RSVVUbse(Osu;96nlicj2B%l0@GwdJ-y>aBb zKi4|`rDw4AO-D|T84qKRHWWq*Kg75uv+;4h{5$Y_0>^I%n@y4m_7+Y;Dy=eog6`r3 zXSUxc{r-^eKoK;y?qz-be*v!WiRkJUT8(@!+qj&O{+|F@eYKU$xD7df#i{w9r%tGg zr^2qk0HMEBVIK72bFwRl@5)HNHM!z{OgLdQX%Kg;U-c4ZmcK6^g??3;|ErQ#&xgI3 z=He($s{cH59{_|lsJzx}A*x#66L)NUBtucvsk}C9oro1SsfhIluLZ{@fxwc~%3dj{ z(jvw5Va$8EjY{btAH*bLfAm}{N3zMZ=IY4FK+M(93iiAD*OzmAlgpy;jrkjBs?Ve# zkdeD|ZuJ-p72I5|U??^AwQw!nkCvkd#m%=DK4WP(tEBBespA}Dh0xNPh?MVNUmHTF z0nqzltFKF9kp-TjOdRPyxN6*nx{EEQ++Y(_Ejw+Fmz

OMuL%Myn#Y2bQZ4)mo?R zd;H7c#Oe|jLH6%_MV%=bgRFb6>B8;c)Z}lQ^X0WpGDLL?LAjq0d(l;fW*O61FeAkd zy*`dz2|h1UZ!jacue^#T53;87+}lDt{FJPx_*cXPg4typ$Yb)pH9cV0{cf@rTXMGU zaj`^y6fH^1C*N!8{)3ABxUlm;i6t6Ww4`QEf7LUD*b6>rf|=#u9~nXULCt}z!`fq9 z2Nsk%=@t435RRp8N=kQHiEC;3>W9~5=p%K>f9S!fb0Bq+xZ!_bwj-;nZ&wda+0(pc zU&SjNCqt_dBQXLy5}MVM?oifDd8tLlma88l}(c}!a%pD^yVKgVTW zB>1L>&qOA1lu;jR5Mx|Q=G-jxCMq@~t95e5u`kSR_(U1n&BW4)|5)*?L=mYb-SW5k z(?Iae+MEirxPCMwwynvPo!M|$TsH<74&Yd;r$m{EFZGuHxP^31)gq2BQGnnmf^~ft z*LM_UlNsQAugKEMs`{U--lsw=biwjj-iG!%K4#L>p!j=fp=|x3eL>~U;58SF^v*Da z>Flsd=!sFU{4XGH7)cKYH3`=SM7k3?XS1qV%%jBYEiId05ZvfXA=?UMow~-DS3U&& z0{mp{r;j>NresNHWFgA^mrm>(>v8qVgZq%9oku8ZKhi5n&QUlBN_0VOfR z1io*w_b^R%lxKrW+j$^Z#NcKQi!gSN7b|7M5z@&COc$6%gkM@o+@9LMVL6Viyx$xC zd8Q{wFEjr{0Yfqd0cXLI-EqlOVX`D-xF%z0ehf=_6IKuEZ;rT-BLzau17mmOzrY-n z@l};j`l6h2(8OTlAA%M8~8hob84RBUEOvoQ!8MEW)Tx zgOXguZ3@O}reLTDQCA9`Kr^uBBNAMeD`}C44Xkb>vhoebk)F)z$ODOeV_toqT1ROgW!xN(6+!kGjrl44Xde*-@I>UcY#dm{lhgfNdkk?2acL zE=+RPJCp!F7(&hD<_~hYS(!HMOOl@C=Hn1jNh3NrUw!@VB!Nn-Cgtw-ZlNuK#`bPU zL4BvfbN;SzJ%~Ffd=VdRY@2O*m3IFsRIie03L{Aj*IV2o85@Q-SPmk_e!!_v*9$AQ zs+JBTYLSOvh;e=0l8-EL;bohdV#Y$_tYA7%&}J#lqt|G_KI;7C7`hb0lUsV5elt9T z^XR{M#BpQ-G0O||Z?I_echzMtkh|y$NSiasi>TYG|Bj$ga9)L483I zJkD7}J&3%x|5^+mu0CN3GdUa{7^&n$M?*_tA1P;cEAGXiNRzI)ayxkP7yUmB`O-4D!by`AM zuMx<()BJRR`oUoJgt-X!?s6a#x737 z)su?3qGGMdiS?4TKx0^dr;uG`u^==-Pa5Q}oCR6ns~AHS)axQ;4T{=1boQA7Qu$o% zgG``9dxO49u3Cmb6e7iz+qoz*VUnvrX*3`-@{vK(5Ta(WU{Ugkt*L;iQ|5#7tCDtw ULzt>yVfJc4g8jeFFrO>`2d$`|asU7T literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/arcus_325x135.jpg b/3rdparty/libflac/doc/html/images/hw/arcus_325x135.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3dc9febce73a34b815a68b0f5eb5f4dfeccfec4 GIT binary patch literal 5887 zcmb7IcRUF`R@vx%MYn1YH9>S% zCwliPLBzN3SO5OboIAhY%yaL#&z+e&bLZSl-z)*>G*r}806-uRphnmLH_HIV=YEd% z0D!hOfDZrwP!I|MH?sgG05K8Kza)T!KvD`)QW6qUN^){CirbX8Z&OiHQBl*}p`)e& z(NIy*G17tV(lanH+@`(9#7NI{hn|7{UlAZNp$!S?EmG23^wd<;^#5<%dP5gcv7?5CIVV3*!F{13^T0h#x=|?!ri{ITS~3 z@POOIgeo9n5I_!a84*Px{uu|tRDp8n7`hUJNr`DZm#edhX@Bzqo;CdE}b%rj?POVfRlq$k)5v&WGJr;Go-)w z>QNNOqbQ2-TXZ0R7n}nIQkI8{lEUtTmp~%wGHe9>yM( z%igK1#_NR1>q-zIR5E8X5b|mHL@nF`mC8G<-W*;FxiZ`?j0o)+q(`ait z2897a{>t*oq=;o=e?zHgZa8}`PyHQ2Qv7c^i8!8Deyn=hx_{eheFF?!!SU~pJ5PG9 zEAck!h`Smjm|-+=!IVxd`xmuWgG)`~wv3lvU7oa`g3Jd!-!-YG$_#l8-`M~s?Yy|F z$`yO@#P869icb<>7%x_6|65JZPSwA$`xv=xw#?ri&>v&4z%sC5wDaln_m~%!oM6FZ z)`nO3>eZ>#b+#>Xwow~h9GRxr`(WaWG05uOP|yB&hpCj0sfq_oleM-rj&R+b=Q;-y zoD0=2@#e15+a|OTicZFwV(AhWhEU8ciu1=2E?iP;X2YeH$J%Or_9N`R1G%64qyOhsU%mL>w7Z}w8uDsK)93qi<`QuD6YT3@D!is3 zbb5|fM+b;sF+GRm$FIVdx8(I}Z?mU|Q@*a{D6}$Y2n!PFvkx3duMG5yYz(Pxk_c9> zCBvgPc^?Xmv$9+*AcLf)0@dKE<4No*uM^?QQ_d&QrFM*@M;PS z=Md9Z#OfTm=zx^tWPMBR=o|$(aImmXHk+K!>_f7h&iL-3{6-Y^jx-IZ9;JmTql#>I zL2a40LP)t%`r09fxKXwjOl*pSYq!7xcB2|wv2{K|+Pv!*A9!|Plu@C4!+1((4Pjf-3i|q$0rq(fGPgUT9BgjLr58_bvrsH z%3IH#($$1~$Txo9bX9f~$K2=pp}*hax+nu@Ro~E*4ZQ(;5=`c_&g4&F29Zg!cQ?i2 zcVz8u0JfFfZrsBeFuxv#J$^KnnmlcwZv04UO}T63r=H1<9cK?jow&t@4X3z6S~a(K zGIOvU7RU&BhLqcf#gFuzF*uH%jScWLoY=Xa7ggOKt+kv8)(qWYa9gU7v(r|)whA8D zW6JHwc=u_q{F7*v=u*O{U!qhirB`9LthOW5K@?kn3!`L*;ewF|8&mt00K({`+KAa? z|7?qoBnuW(-qmodvM)T$et5zYbfM1jc1VD~~ZpJl#{y;4kr%j6B^r}?>J0$P(wRpw0=lW*@G#bRE5Y(QHd$HrYh%DPG( z|MsJG1Z?jvZK{g171~n{UC2FcBpJI8o#V}lHB=5oJWku@@a1I=qHId*w|To~AhN_; z$n9uQgRT%_GNzu=Q$mu)eVbs5q9yx{@hn~~LvA!`PY!ct?{`cu%0ptn*`(eo3+flEqSM!}_>yywi!gD{``-vzrMysnThF?2(a6!UGgR2Eo=&Cc>j#)0$o z=BN}#gSM(etG&j`B~_()up&1wv{ma2bKQv*fj|5hu5xs#>(*Fw!TL#LO8zgMKCX2o zr)!`8GUko=Z!TBJUS{AS_V}7LB?ZA8n#b*TU^~Kw44a&;drp>H+GH>)aUF~;T1xh4 zZJbN>sr)J(Pfo+0-(GX4;nFqq;&pJ*WAs3y%Zb;7Vc)dlQru`i=Mb^UNUHcHfYcEj zGIZ9Se^y!eB6RGYAC@uwVPaNIillUFBn^{0`SuEhIdNRoh*){F0aIv(6nc*QReL+1 zb5SSNP(huE%P4#fD^e>0O<;q;gkP|zivt=nJ)~0*212yH{`8tOvdBS9XB+5yP?`_@;zYOaY#YEG_7`h^%9kJKR-rec*Jx`^@ z`MV8&usV-6oY=ab7moL}HU#wbQkL{ytMalG??X`x`j_(<&(?CGCw~N*par=lU4aqq zLW~L?zIVK~4$ND8O@3jI>xPz^CF<&G>QK~As0D{Mc|IIkey#uu7%J5i$M3$YP%&mO zW(eSL`liHmP9q{}DRKj_wvfBOg!{);;_~XWS7-565VO;oUtw{y+$z10!Seg&1xMsB zWOE=wjqfW^-LZ#uT2Fv{_>u zzel;wIG@g1HaSnN?0ib)<9BG()!$ZhWMgRv`g*VKwaL~|#b43u1& zm4l1|!zeQt5I@qssE>ml+pcnfzF8ga4{SU52xg3(v#2CS@2FA_XlQTqd!+e{Dt5%J zH%PDphkqIuRVuwQz13#c=IYjnGjHDEM-81xl-G$CmHZwUb3tP>4TVEw&KfxV-205! z#2lqduHbJ6e?P})8Hsq&EodOO7!WiGRNtNHV{EeJ>uejZSG7j1secG_~(IIj&SJIGLRPLoMRjeAV!$0%Rh6P7W z*p#=mdl0^`?l&XSzy;!_FE$U#1sl177R~97wzC?@|7^$ahCF zU4T1R{And}0&r4;OTkF7mw8@(4Jf~Or-eu>(#77xjY0DR4V1b#!-7O@-RmU3CRo~i zt_hD+igXs#E%%PTJE%U zN!gmI4wGWgR_uLbcnzM$s5f4AvEqf@a|nssg_h$H(0bUaZi0xXeq@LiDj)^HYwC%Z%8k6;GJL8>Y|-~K%Mtmp)gk>Oe&7|1`ye7 zB+Qz_G3y8cIgLQ4>ZkE>+gpF{!nlpJl4*l7-r^PlKm7XnG@_nbyhS5aXc3u8wpTP2 zT4%`9b7>6+tgvvf);{ulUeRd5v*)Uh@Qk}b47kKWAQEG&wx%2#^Ym9YZk z+(AS%)zvkrZ1zGHR}R?E=|)v2Tc#$a{Etv~^O84bcasw>?3@j~hAymxpRw2FRQO-2 zna}rB+KC4Gj>VS--_Fnot{bjzB)=cWOY+Og^@wG982pN=#j8@Q%ZueFcshZ{qhD7AHRGU zqBAGapLmT#;}C4#6)A;kD<6)*DV>9p@xbXS_y*2%Z{Ya4t>ONp+CXkL6YGX9pxD|5 z&5SUM1a-_wp=cPz4D8i8t`<`k)o5yrX3|v2jXUMOQ60qO&Le|}mWS8IqB}c2uE>-* zm?u}VNKZCt@jenrhT|t;BQ+uLvoj!G<3yr0UTqVt&8yx5l|lAmpx{>OeX1Z_Ek`s5 z5qm^s+~XU7*ul%ANo){4T3wr30b;9_1XlS+!Q^0Uvj5FOg8^77@H)wVDfXHq-gNDw zcZ|;L0~;GVdKeTdNNqLW!DV}`wE3de+x@4q&HIel1;L&pX@jS>YeK~wM67C0+xPrK z?Ak^PN&|BX(Z(uU`8MG7o;f$^w|%eL6KMrzva83>nZMb5rph@jzp;g=WI^Vyq4+Iabai)yRpj){9bBnD zqjDu5DyXZh9G@S$vV66&!IT7OH|v^Io>SSEiv<|?{(j^l(`o9?XY*lIDr342?C)36 zgLE`rTtl;Er0!QrZ9R9wwtD;GA*A(*PM6ym(nm_#I-M6>9!$Uru)3*gH-AKL-P#w- z`_1NSS&7q>{>XX6wFRch%rd&!#he#>xe5Le{J?j*$9QzMd?Tm6+Z7$1h($fSN3juu zQXiHL{rgyRVwP1dp|yOOUdpJMiD96IgE42_;RAKBYQ;Qlmp6VLQ*e586Xx?1ObBs{p@ zY&)A3V{=y6hU=+5&>K6HLhuM_`Ma@oTkUzA+G62(d186>+Il;`CWK5~hQ(!!Ux1z0 znHO#VmZIDJ=x-sXbw4xAtC%_F1tO+ANUYu$g~Zmj zgo+7V-%F^m$5s`M7^iV~qnrmFHkyuuzlTqzGE+g?90h89>WqLz-fHf1t6kg{U>-hX z*OPgEksfq;1WTQ2H#NJMD#CFs3VNLvNZNR^X8vOI+}^u3D^N5p%qwDHn>FwQtd=(zsvHIhzlY=vU~2eweeiC^`ZQBPckacP8cB|~j}_${ zCpp`fzZH0X8FfC4x%CJ9x>EPh2*yeFK0h=nXd(!hV`v+U{Dcy=DAa@pyPG zd-Ly@;%0G^igW!hxtKk29rf(1Pugb*Y0t#wKW`x`M)q^Z>jS=QnxS&rcs4%ldu}}_ zFDhmEIZQuz5VyS0EfbSD7Ur&7puqLu>*rn{dN&rVmHUwUazZr=>#98Xqffa0+`^*} zSIedv3QioUgs1qSu{vD>-63SteIR?#smwboafza=#%%lT`osLVi%Z3IWc|IGjHFB_ zZ`RDTY+L;D@Qf+`dv>F@&h+UIsmhu8cN@pvIha>e8Q4vpFZlI@JyKPW%okl@nRxBe z^_`ZC+1up{0%PaQ`l0*h>XCSEFW)EJlYM;X5NdddgYNpysvlb&2wo>6N-wK9NM+ml z6R~%R{X6q$o3q%4hpt7us^cqI#P`VzjUx|Nu!dRg{q*&0NZD7h^U;8qS2U@*TkF*a zWxrTj;R6w|*)tx4^FJ=(d0nE}Mm^rh&DOwK#?p|=$)sWUlo~fWAiR5{(HA&P4rohs z3?yYts_k;E|2h!hfCnJS?pbo*08D4)W^S)Z;)(y9%FlU3^A zvFy=hF5L2*Oo?R8bB$LGs`Kd z6AGAbCDM0khAdWpVP_aD0#Xr&y@M3VZ@naPU5SxG=oFS!mOnD9_M?UIQrQh(~t)yVR^1JK*u|wHc^m8wB8W-qaIa&2`WiC zOW}?wJR9Ge6U=xNl|4p3CX64gUO9emUZQ%8`i^|bi7_y{0St&@F?cchzp#0600W*y zZ>+hYG)RcHV$ck&`zU45j(AxtOIKz8=Oq*7%#QD`q}WNT>}v%Ws(QmapXc~&Mm%K5 zct5fb)hj5}dsj3Q)b~$BeSm*@($34lWvf#v!NxD!k}5`KuAff5_wUnMFUOk>J9_EE4T89DQ3ePw5d)h(|Rx8PoS>a`Mf4lD_-c}(r)|;_OH%hECRhZEAw1Jx~VkP{cjSX{08~{0%m4rY`QP(T z{(b;Nr9rZiTIwKSDjQ2SI~OY(DlaZ}PAW!EcZib>m73?JJ{|gK(90DQ|JTl5ZwJJ6M1{NM34iOFx1s)k53GlB7 z2Y^SwK?Hu{LXyHl{2KYQ^1G}Ji%+5iUw_%}@dUt?fkakxH7YQh2k`HH!k1jT9zX?N`L`dp^O=|!nvgN$JWW{o;IbI1% zEXW(KpTjfJ_`63Km0kK@+ERWp$2=OPgJikY8h~)=K5=oTI&RRFCi|ot%oCK~#8zw_ z+@0s8t6TTv7tN&0FmR7AS;qOM*+PtHYtiVsvTg9(0Abm*)#fK^rEZ_QM#X))t08Le z+S^bxx38L&-<-y~>(8;<#DMz-)}8@b*=o<(dcuAqnIw7I$4u^SsI9}b)7XyB!y7_f zK|8$27`#hRB4#*yx6lv<`%}RABp@>G2undzyREN}Gn(ug5&7EL#k2^8eltt$5$+ra zi?|AqymE9DJy2llz8)X=az_90It~n{PoJ)0NzTnnFp}o) z!tD^;1&buG^(`#WG2Xu&fbK3czqm>=O39TC*YqLY9Ag+lJY`B+jJ{N*D@;euh5Du} zzkiD96Iji(Q7|v0|IwXV?ofzZgfn?f?USTSeEjn{ncm9C>}NI#6WB7mzBu{I>oMX7 zB73Jv>`C>iW%+72@NHtUT)-_=pV)s$`FJ|n51S@ph;ggA)tf+XLDA#|G^;jO8v8ZiE%Th*RKH6=-#d!UaX-qG*S${C_KBaM$$wV z3By5Z4B_)BdkNah`eInM7c?Kw2qTkh3N9&Rs-NeG7)!Gs*vK@h58=6K{*Jgs7p#sb z3@NavN^NZkBi%z*)I)`JTJVV#H&jFG!n%Q7S&a&3_jOo^;evP@EC768^LpKfmL zTx2+0;0>=Ljq40emHj?nG-f=-r}yqTJW+ZJ#%e6sP)mu`%Ez<(f>HlPNH<0I2BT0g zB5(gcC}EgjE$WIbdzyXs0?HpfsiY#VqyEHMzfD(k;Gj8QX2|5*7P=o9=L~JBtft zjO%c=YR(D>6=MaBxleur5>MZ$|E%c+e^XfAECZn2!ZIUojJ;%`^v1NpqO5L8h>3W_ z0;m$bK9VC0vwqe|q;*J%QpNUo#FjYUjXziAyEax8Knkff9l zYl^$%H^nP5$_I4y_)WorwN(f1Ayy15G3kY2 zsemxr1HIpoGXBJo6|g$$ObH@sP4jAAfD1m_6Wwa;3>vFj{{r@gC;b{hR|TJFQ_gMu zzEm@w5llHVwdO{&;&0y~FsS>Sa;vhW7vP#+$mhHBlGtqR|T-U!l7}KmaJCm#e|!%I8S$R zaC)x4jfOw7K9BJC%Z)zKA?T$cEdSD@w6kKxZc;d@bkR^K$1Q9Q6SngDcH zXfF)^1%#_`edgdrGJkb~n_%v-o+8P#iD_C9{s|@jukSMrGaVX5o#M@`V7L0(?^x9ZGI z%ddB#L3MupK<)mOIu@;}V&WA#`h#)jTP8+2rU!nUa*H=Pm)#w_6+(F+jy!M5j)Hkoy~q5(0?g!dc_QB#Dlk(&o01W%SGH-(1{7#Sf&%DY zFy4FzwMzXj{6-M+j6#;6_%Tb;^}EOwlc9|>v+t%j#pgkcqU|K#VFBx3ZfM+wH=$_3 zRCGcC2h4isfmEYK2K!W8_9m5rpdM4H=EKk?*fDh?gpj7*UHV4=ngLZxiTJv<9{mqR zCfcXCAiY>8lV4|^Om1w?`@46#9}7t@+MD6f>q)`847P06bQP8%X4RxF6{i3N|Ie@n z63!ZhnHGY@3|3rgPA7T%a{QXw z$n1>t0t4d*QKzDX7aolAZ*;8hjhUbzAH$C{(rm{$12x6{@M#zuD|(Iz_HdR3mPy4s zM3FRbx)sFLu~*IGq6p3IcVDFNbh4*Xpa34v`U>6Y%4pIbPl#N_=h#ta3*tWNC*8ez zf9~{1qtd?m3dXcriw}d}3>yoJR`(;Lj6D5Fa)}f=grmJVMpW4<(kh)x@2@f`C-C5N zGQ@pt9A=QqkoL33U%)ewQ%QC*lE!4eU;}kAA*kiTW(9H(W#k$=UH1;O`fuk;E%il9 zEKM>2$oZ)F7+rCn+2e#9y5x7K+3{W~KuVgel>^`EQoc3PXsX!&da_x7fA@{u zlk+)hUk3m0V6MK$+c5HNXFy4@i?8IyhX!KY6-L7SO^o6xmj(nMG3uBteO|07_lI`z zn>hGCgB3NOGh!+3u0> zL({W3K)Qu(+qY}ORou3ji^-%U!!KGY=l?BZrOKsNI_&p62tDsE>r?dT80y#An zzU}5#E*M~$TeMEFdVX{JQq8Pqv`>GS!D@A!oS9raUp_D2s?j7qREfo<0d866&Rd$? zuuDBiMMJ936~d~qD4WQQuWJClVb32Ky3BJ0`i1T{SgN&WL$Mf0nKT|0j1M|^!W z#gN+Z{|=z_I0QiEO%&3KmWSiVF+W0P2r%1kV{F0#_Q>gS0@=Ts<>IMKTf@7j<#h^G+VA`roxp3gD1s`e_?IM@32h!9F;#?#6BEPz=IDhPhlMr0#@eUQ;cmJ;hs(LBwuG4x=|xG9u7G zB}eY@9AB;BZG&SF=izWt@HqSAh);0iFhCSX%PKZS!|08A?ya+aG^ z=b6oY0dLq3hGX7F$To54a|` zvOZv88UBgTspI{7*&yL-nYs zqAVQNXV{$_Dz}CjXE{~ppG5SoOt^eg?>K2qRaT>Uq+{s)X$9VSnNp#>b>9TS-dg#|$_`sI5m!(u{p@UpsxYmB?cE->HP}%3?FJDu za;K3y#ogY3I&$kFOn=>tOG7~X05cefF(8&qQM6YUQfV5itkh}n12fsX`*rnYM6ohc zoI^X$S@(=*4!W6z>BZ*XzUey0j>WKeX8TQbwN|x?t-B56@M&}|ZmFZYaXW$H9 zhChHW`I-Mpn|=~Tx_DXY*YQzx9BOKARvOJ;z^4@|zhH;JB2Sz0+aP>Uto&SwYty53 zF8pg;pfhO{s_Xp`cUiyaIVBwz>!YRCpv8C@KoC+QWlpVD%cKzw(LPMNlw(wlS@0tHfa_=X_YWhR5fACJvF{FJ}`U$~;}}%~p*O zn7_PlRSbf3=d38=2df}Et2znRn|f@(`57ELBZo-6vzz{*e-zV%*=G12Hj5`ois0jD+-EZ=%ub@4K zs%rQ)5E$pfP$h-ZvB(u4sAq!Z0~QjDLdmKC>+I_Yu(wYziCLNYkBRmn<=(u7+TII$ z#5%zDbdxL%P{~9awM=wHK$GsZL_@rJV7QkPe} zs+uvoZS98t$ssqR+vWg72$k_y`byAt9Z=-#F6VlDC7nwCaV#gU$Js$XS%~mcEM6u_$p<}uhn4%-2E8uaSvj=P9jU- z_n%Z+O1E$^uTHRb*e4~WHHt2s`wPHv2dBP?f7c4ivSO-MnbFo7)c<6OkGP?!kgdH)Y`PZ5SIhVW!?P?70w94HMGpXb zPj^l@i^^5P%>O>PU?pIW#uU^7#-xuC&>p=2*X{&rWC}S2!X?doE$_v563l-AOYnYZ z(d>T#_fx4+khLFBjkAc(9^Ykn@?Sc$w+okJ9l$Ll%`k2T{zGd-w zzR=)M$A*yOIZJC-80Lu7?=!wuB6ojB1WJ3jw%8dQm+zNUc{uK4denUyQmF5{u@9Um zbC(#IeD}dpnXZf2QjIPE-9S}u@aku7pQA>NTfA>n$4&tODS*{gQ=*6z_^_9t<($Q$Rs_Pq|(OF{h#u>knLv8 zpn&JG^peaxh*^WO%-CN5mxwJi{*|?K65e^l9X>TTtPD`_&|<6^Y$kFh839neQoEH- zT}+(m{h{1knWr=1C=~N24!sboW-fl|b9h)#tl4+0#;zz~5%CoR_|Tx|L~7a5(@cpE z%fA4HU)jTC?8RxnJ=2+_zivQ~`x|j)j~NK$3I75J1w|*LFLMLF)(yq|1(c0Ri|X%A z{X$^Fz@6?s3(B*3?3YVja0JXv5!{}^^O5b8ERkR3l zAs*#yRDS_8?&rY!v5hh$Ux~|j3w1@a9XSGu+sM$=hh8(uYa&ug`>!s64Pvg~cfx;f zXc?h;2m=TklKj+1jj6{9pXla@q%z%mQ2NuXyby5;^;RR|qO|&_eD=5KsrflV$AmmBERu+8@T7u^Iu%C*1B z`E9y)Gn0NB1E*P|JQbQm1&D&ZklY&kA~Z{YG0{j5Z-T_7?rqC{BW_4EBwtSVB|l4< z`;zH6!vTB4NkyNmc=2Y)+yYw-c5g#9-TtiMhQ@M7SZq?o1VF&L}*SW-}jOqE&vl-%$c_|vGTYmbWMGf;>~IWINz zuZHnekG!qNRO2!nbD6?BHuRDz_AyjS=^>oWe+Q1zuyr8GSHG` zELq0zq+%`SC%(eT9@DBBr)`4Rts0LXKPqEaIbMM?L3j*Ccjp>;Sw^k3v#p^A(TYq8 zM}gEVSZfq@f=^jy5!G#sbl*2n7IYAIYXe7%#*{tvy>;o8J&y5ex8lCss#a*xozx7k zbafRou*j7P_h+yDR{PJADh}>j?NT)k_fhm6J9Z$L8_ZKHA)S`S;!`d{i`#g&%D}Vr zdqbFZPr+T4N*3M$<1YZ}394>bwaI~|J9OU7X0Bsaes_=OZPBT1HWE+Q7S4d5(T21v z$vA$%4dq$lUr05-CK94g@Bam~eK{C+i}zlZ8lN|*6QjtZgV661b%P*NfXq7k6YS6Hed~R3!lw7 zZou;0*bQL)FQD|Cg0gb%L$_uhwMnSYubQ*9>bDgB51QBd=wGYk-p2xK3JBiEI43`Z z=JYtPGJ?s=C?U2~uf|l1R~g4}^K zAwk+%`i&R#iY~5S1wH5Cj06T?=l%uoy;H9#@1yr)-9)mCBo>Ja88nD<&<^m=(xqn0 zd|V!`HtgI+;(AVr)URU12<|1Fr}3~)=rUOC$OpVZt9;vK9~mb-+Vi3WR|Oev;dH@^ z9&eymaJ>p6&9R}JQ4NEX?CeVri|4&n(zNgG+|Mr|!`~uWrwk*oo%e_yNh|Xz1BCXg zE4Epu*X)~@mwyPw=2+1km>s2)KFf=&U*GCE66kaDR?GEGrfx`5@OQoJh_KB+ji&l= zmQcxp55R}L2NI?o!JLYP2J(kW|M2YYqIB}P2pL!lQ%(Qflk2?3 z9=Sx5E{h*yQn?&yg6S`yRo0SBwjqyeD5p((C>^wzs4A$wkHVt)*y9U_s+jYYw1Tsq zAQHFGq(^pcIqTqNm0am4{3!ZD(Ileyb44RRdBu&{I>SBp;jULks6){Ok$d`nZt0~5 zCr`>O$~@-4pNwMyQrN>`LWny)KXC)>%V<=sphHEYE)ty`M;Sa9?Stm|2PxA`kO%Ty z=gQE;SR(_H>yhwx3_1Zzxi{x`GYJ(dLw+l{tT(bl%^5B#s1W;+{#9#Zws>x)8cBmyDq8r`XY$ktdGAn7aShTL+N)xP zQ9fK@^-DMshL%CVHV*oz8mu8+Cz!-IVX4v_jvPteWG^8@HpQb0qm*edq%B0B^5+OR<}?_fJcHkk6r;s=f6o1?W8m2_YMrNC{ig6qdP_pf zs#!5~+B2B=A(%`c6kP}vGdIB$OAwpqdXY(j{l@oxc_f;=4E-io;*zcDPgFUH(XT1) z%g{=4Jx7{qT9~&3Ex&ULaHxw>0jd3kR)wXl8Pm~HV*6%M(BLIjGFR0>9w|%0Nu=zU znD(CxN@%u{R2*io1piSgilREFLfq5a!{p3ZA(uMR*$VR%C_SDeyGA?IIJ=VNNGc)8 zm$8YTeuI%Vu`>S=?k21mSl6ra7A27ZGJ2L*67elb^C&B)jhsh@4|Q^!{7h_hoFpb_ zTu;=+zMSQynfCnrn8G+un$9Lkg@v0lG%DJX)MVZ?M^p>8b?K!Zs*$NShz%uj<|a|% z_yYnK7o7%Pla)Q}+#_6@Iv^?N*xw!2L6oFgJC`Xc;8npRX^68Z4pxewdvzyVe?u3E zm#m;9=tEmvw#!LWHUh)=`P)I^Nj{Mb?W?7~d8fK5I`9)$9a!E8OME$jmuDXg;*DetH>ASf;MQdw=1i!*Yu zj59@WWnNNo>37D}8E@~j^}&6PBy$+pypoHLNi@4Fo%bLDT~uE$P|4M=U4g$lnUCS( zjHWBzJ@%%q#cZUfaFMNCt>mg7$`2>~sSyM%U(Y>3jO0#pWxi-bqFiBCF&D*E%JtHo zozUi`V+yn^XGXb9#y%0!VdpTFTxH=aj0_;vo`&GZ_L1uUz_P01EZo*tj#^oFzO42r zUi~1r4NnF`eRJgKOdYZz4H;QtpL16w?k>@-JJXQXZd`Q_Uoh07*MB@e%eGJUTP=$4 zeLaikyFY#Xlw7nAJ1@291yUV&2<6HM6R0EBA~eeyI6lWuo>{~aYf_C2^bE;`>PU0p zxbMER+^qp^xeo=TC@)vOO17r|1@I>Md|}_IcI}_c(-?3=>e*_{uVXdXCCE`m?pM3t z9=jNA7a;i}5Ql6KNMf!Qh{$SL~@oMLfhH`ssH!Vb8k;2n(T-AvhH>VCLDS1cZ)^s;NFoi(*@O3w*ani=JnW{&EcwlCk&+8p&L83r_4`b#jQuw#yTyC zmC6tF1a(!v7Z?$@H0E=Hr>Yv8C<+& zeX7m`rn3H<{hOxv*h_D~u7g3_x3)0Ix4srnm8HS5FATT%jb-?h8=bNE&U-d!%b|J2 z`+oW42QB!DUPnLfQ01+QkCaNT1NA+%NR9_*#mnjJlQS#Kz2vI3NqlTN;+!KB-f(lL zM@^y`(^=`bWBeZYy`nf<(lM3~Gud_g7zBxXIWPhRxHsd=67Iz~<Vv}EUrx`7#3()33o-%YnRr^z0>vLR>&X2Mb9Nen01_fs zTIkC_={WtEvP87QrED{(;l%uKP~~f$fMB=fe$=niFjMXKoc`~l93*N71$fh+xt^u5 z+J1u?@+PgAmHc_S1ZdHl3jbq%7c*_*Ud;9gTyc=sT$`57Rw4-H@4S!uims%~*cgAO65Q>r)X7+UTQUyh3rW~xL^K*9)6brnH`(z&11H0F9+FJ--k zqT_n;=aGLTTX7oNV`~;>h!9#Odc2Z?&m8t zm7mY3cot3z^M1&(K^(xaX}Ih6)gD!=mY}n4mB9wPe|XZEl{?VDs^uIm)`&qK8#q1P zx;DO?)g)c6q(CPyDV0{E#l!ezbWa9b#$zne%Mo|54_Q2{R;f;hnW;)WR4YD_X;2$l z#$*oy`_m=^p}`!12MV=y)x$JJJ$lV{qRO`@I($Zony(kcgHwLCQb5?=m4Ea}bPOn4 z-`e0;IQ+lDj*={b=Tg>rZT3^t7caLM7gZ&g@^<^)~1{*vrEcIk!# z8<#C=yJAMP@{4qcL-SRYcd}B_9ui1sG|sqe(N!d^su039{RsuVbqcO^`B0Ho??^ia zr8jtaEQ!T+VpVmBNOx~RxmJKnC%cyu@Ku|#O#h8p_fz}N$Ar~F^^9`GHYWNZx5XLs zDo9y)InCtfr8NeL%|YOAw(0hYd?{l`^GT`iR7p56$p_zH6jt#50W?n_uJswWy?BoP z&71htB&XjcY-tq38Uq;WrFs9ph8Rl@@}ik!jB))oe{L>nk?>+b*1L4SN)?kccquA2 zGw>pV{s%=Vgb8*>Gv7hyOpvHr>1}?JZ-d4CiBS5vzs!7iu|qsWa$1DT{-hcr!3>ZYMDKo^rEn`{+)$dHAzq$kVBFTn_LmTy zr|~I?xS0znfmnL-$<)|gC3d-|bs-!I7gc1N3?o8xlm7`fc+2mg;BRFHl0QKt~S z-!_L*I@&(R%~Vx0Fhk4nS(uJsW24H8Hodl&9z;gZiEcLr2NdW(nsydCNg%77o7L3+ z5U}iezM=P$yOS%WIGtOq92;apu56h_yV}4}*ci-{)WG6cS=c~@Fu`^HLE_T?4u-0X z7}($C>-%bzUv0|30#qOP;m<6@>!voGRgoQ$$fd}AftS@|1lZwcTBSwt=doL+L;uiS z(muMX7M>ERx01rDwX4M|zov^;eQRgi>j*UsU-V7X0WREayDxV$F8kg~jgAx(pDuQ~ zm=IG3NNg>*t;aiI`$r6!CS#4Gmx7ia+(ln<=Eh+bIlHKAQl6Zz$23<5jP>cvw;)Vm zyG0r>YmnOdi8$f>6Vc?95@dvbA1?}b8>Gc5c_L3k;$R%B&hii$pGE87NW78dmk|-_ z1}j=3Y=g!7^iI?pFNw<+M&iQq+tfs_VQ$wHzBAhDj=ZewMM%pTN| znczRGAk0?lc^L(rM|m11Hv%w&o$;JFR?rjSYsr4-aziJ>0{@eR$GuR|`yvX~%;8xd z^_?$gYJaWn8%mE-fLiG{Z+`9L>{ane%WP{GxWS=e$CFSv#i>e#q~cf<--O_)ZsES0 zwG~z21WG){GuuS2r^F*9TH3W>AWYUV>#x+lQuU@^0UrJlG}`8%#&I|O`Tyb$8H`Jm zucCa!B86v>9`kh9A>t5|Kevg|zmtaNMpj97dAkqkr#vsLWe;zDvk1|}kT6?G zYkiDgQ!c}s97W*>M#TA?$LdDArYla2C3$9>ZCe`?(tc{i0H(MXC3-jfTwfB9DMxW0V`HZ;lK^?n)!iyt*-n~{pIUEm)|{Hp zM}-o642=fV2n%f0z#-iXdhjJ%Ef`DZmGRoR_UFaFV;6=?jf=uNUA}xL$^+pud@Jx9 z!dx0mSeY9{KKL5HStB49RVf&oH+a#FvCt45T}Awc9mVeE#2YOfiExD%d4&|Yz}KpC z>>_5gYX3#kr11NIW$5~!czcyo!>XJ2wg}A0vB^(z#8nHFm(?w4KxYPx3IdP}HN<-; z2s=RY`0A)@Q$#hY6~E>R%O}HsJC7taa>?+*i$0;!*ANAHI>3 z1Yz@KXEZ|c=<(q@|CmjwAIh1ifKff>5RH0MyCv;9F0HK6!tHesXAt;xg?7DuXN^{7^Rl2i7b_0l$t3@2S0N-p}}1DP8r zEsBcp>45s^wsCT=)m#11Eu@N7=&x<;l5AoBk=(CVHd9wGkUjGLO2u|!md|%> zit=>EYs`t&Cb3$)T*H}?{43NO_BbsufCSI`2t5|*9*Kfs$kZ2?h$#$hM-@RLqvZ9? z4WaFda%s)__Eu$_;RlpVT&KAmY6i|+7WxUeMaHm#0T|OCBp$K9J`gnE5u@6h@=>?` zpn~xKU{&?#GTazwVf^SXvr2a>9r^=R#DJy>z!F#Ffy1_yp$1#`iN+2~l^pF0{CN;T zi~WO`EJ+2KM>7L6kxY68pYrM6tECBm;*!C!Um62?S(t)Hy3=*kQwP!!-Sq_yLZRMS$Wzlg zC-SrXkG1F(L07BgJCtSEP^%D!s5(&HEWrC&$xk1YSk1xX2AQj+-3%C;>JghqJZ4LZ zl`Wk&5_k%6tt8l5_vNnkbu2z!u!2TlqeYV##R0(==0TRu%Nv(0gj2j{MpEQ@SHc@1 zsCPPJlRSMq0m5d9EQ)w*)!%2zh4gAC0Wp!?M!zX*YNJot5BME-#dzLW&3CXn?{_WN zIByu()KpuZn?4>$pp@kD@fN-g7Wp|YO*VUv7`1Qe!)%(351%J~l%KUZY%(2n;5UQ! z1KBN3DTg`+`AK*4O11q`No)2!JF?wpi)dSsm-(?y78*8QmBV=52ng*W zdq%L;Tf!8+J!KwuYVvU_)tt%5B;Aa~^%-*{99C<;LIQD$Ef+&*F z6lqWQ>R{0b7gwoCwaT9%hd5-j<3O=fQiF{#p5^d*>JtiqSehf3b9FRJ)t40Pv`(({ zRDTgqfJ{m6=MWxPV6wbINdEU&xO?9y2^wME`ehgW?hxB&11g3aW?DUFT^)PCSJ3d|%cBa2kqIZnRzG%aeDvdh_@wr@?g6M%Fg0O5~p)wev z2>T*;=*YuC58_krO#C%@2)8q@3nHR*d|8z{2IBhS5G(b>{^s7@pgxFj=_^e zj=%2}o#(L5677z+Ozo8<7WHfE^RKY%O5|VibXc-j$oF4h4g&Jc*rrssv%@M)&l-Z( zb$9Og#auF#=JP5QSId`wmE>w@d~#$oW~idcg!)d!^uzjCM0;wfYvy{R&Q{M`hsQy{ zm}OV~+(p>mV&O51#tiF9^GCW}8p77?!?FUqwP7VIqOS#?TVf6VU6PkkuNsA^2#F#+j0qsdOtfAKDJju_(2fxwq zi4Qy5H&7L5akKTod4b8QY13KJwYRZmSJZr;Xdk%CIMMPMRF zA(i8HMijawiUoV{A3--TG%In^RTDoz4wCKrqc4}X-#4@Q+pdIVJiI=A+z|H1dlY+9 zu5y!0{ntTTh&HsVXGA_G2!H~doBjfXzavjg0=y&=JC0X@de@|J2Gq&b9#u(LL}qU0 zFKB6a?%yPt0hV1{lb4^$6Er>-(Nu5_DGOY@c}DxzVGm{3g;Z23WFSMnQ3hj#%c+=Z zQ=P0@^rhs}^<6bC_tR=9Fa<j&1`MgX9s>bPZy9R0%L!Xclh>_sb;+<3RM3Kl<+P3rC>zK%ST}~43 zzKZ8(qvuUQHzQ-x_}~qXrexv8-5cIIyuf{HX6}A>CXBn4Z2}C^&vpbPzj>0ivr&?at>z zVm2_SJ6HS*@ahY@$xX~iz(qdTN>(N+pLE+HKh_btwz;9|% zRQM?d!U%~Ss%u?L)SBZ9N_V+KL(;+Dtu4Fb>Rqbk)^2BwpgmTrXCG!_sHDcyEVJ|V zXjy}MLc;1PX_%9}Ys4x+m0<>>>|Ka8BzQ|2j&)QY6|*S1z!$HnQAeHjSu-Q6wj;+B41IbI9oHU;m6BMl zWD+5F0uaQU{K~IuqrS76-&fxCPQ`c?7bh~x+p)ZM^TpIq$V!_ocbu}#gy^*GwRsgA zZw7w)6R|8LsTKiooL!63=&i?r8LCVQ-XWaN7cDAJb@Vrwmz5ze3PZWdO+em~8uafI zbAiY5z6dtGbbqG;0@=TIOIz`;%Z4B{ItksMVH(4Fvi3*q!!((Am^CH-|_t~yyBx$53kKR$QATk_Xn8kNSPekoM|+Um2(qsps3UCUVLjAJLLQc=Oy(Q2-r z5dIgkW$RFFD?4ylrfpbGJed-R#Uhi6@Hqb@X^h-?cN5WG>b_i{A$?*T1#Z77YR(rR zHb8g?J8o0W~N1drpXxM|@lcUlXfW46$PW-}IOq`hQB|ZtG z(ZQ0KQWU?YdRf0$);A%hL0!^Y z%ny%)$cpsIk%nr#6T3Cd{ViOfyx97MytP#=3QhIn`yXnZ`~<1q)5MGMMJ^NRqZ^QcBMC*Lb2psjl2>cot5$ z9`AV{>6ljnBoj;xaENaESW(z4a{D$qKq(YsH0l(!Yij@=S)je3u@yVnF9dK>llm^0cSMra%Cfdc$GtZXnjI&I#6-r?91sa|V7BDnRvDlpz% zFwTNF9#pbPlE-Dli!U-70;g3QFbkh(y8TYEIr1+n^$eZxzP$W&(upR&!Cs&qmr!wMChd{({5KQfc{%P6gZ4Sp9mVej{Ic9 z>Zur95cY-<45je|L%AiW{o`bU$t){`(Usqx{__^Z5{7 zKnuI{1?Lb|ZX!-lYUR(;IcDIsByp^(xD&;%&(w&7f0Ce5+G3MErLei;FVe?ksfD(_ zLGgNV@Rb`Xs*?`lc6>M0OwP>>j3>^QM2*4?=ZO3dIHkMggG;U0eFYjM@2q%bm#CCh zoQP{bf(si1_L0C-lfXyD%I_Rk&r;x77-=X&okH^Q_FuqfGn7}cNap0E=0ZK1u27ic UQ%r_?+fcB)87v=3(BB{b2Z?yBwg3PC literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/cs505_front_lrg_325x113.jpg b/3rdparty/libflac/doc/html/images/hw/cs505_front_lrg_325x113.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34123d2ce15f71d69e5e88d21381ca831fb41e8e GIT binary patch literal 4714 zcmcImXHZjJw>}{tNC|{4^+lS}l-`?kr3i*z1VYCEp{Pjl1EfO`MCqXfq=-llQlwYu z5TptOsY(?Dq~yl${qD^D_0HTobJu>(nP;zO?X{m-f6gIH6P5tFyV`o%00;yEbcqWf zECbA1Pu*Prz`y_y0sw%5_z;6I2WS9b5|Te41}PC_6l7$iq-2!j+itu>&$Jd5rnGw&|Gr@1dmTv|1*j49<#AEX=&KgUyk^5rm+rAD!G1Ywjrv?*x)q9t5`0F^H*l>x55Rrbtqc>lmz-B4}YNdx&Vx8qu5@QbF>VQ!rkO#CATmMw--0Iv^j{RJ)_^rE6(;po#}8tNkhu_Z2YV>J`Tjv8OaTCJ&se^6~m*DjY``L zip_H|?!$^YAqB2avXDA*+nm2*b7m1;Qc8SM{wmO#CWD6TmBYuOP)Q<-BGSO;jm*dH zSVk^-HYM=Rzn)lP=_a}8trWQ_R85HuV%=`e=876VOdD|LAUiyOtTMe~8{({yrnv29xt*9{0M7Q}@DREox{eEvH7jj`B7gQgPc+QNI zrLV0sb7Q!x6Lw$C0;q+RlUyjYGW$E}Rv zj~DtGse46RCykHgu%?aKOS2SN{2Fd}cs46l>Ge%z@U~ffV|gOaI5NRL7cv#-=Dp|k zNDl}Lv9<}PX?)~8T3s-F=UJ>n?Bp%9@HJk92w(jL3)?57(c;%krfa7qrOqXpa@5Fp zv{<-o)96%XO11JREU_{5t2b$Uz(XNEPEs>*vN8m!#E}#?4Y$T$(!- zt1Pb1MD~o6hXAmBx)YI$Od+f0`$7OPg^L=6N;Y&8$wlN{?l+Dn28yc&xWqz9R2DSH z$1eAEZpclIOGp!d8sns&j0fOC5g+!Ts4CTi8?8^P77Kq5cns)@b5sn<*O?&2@A30X z&U|oGQ;3|Jro9`;n=r1O<1=(^S==073-dymZ;4kr>@~dFvKrjm?a#BYKUR^9Y|CsY zB<_CAya1hwF|IG9h6;m+BGo>m;K?E71(yjT!8nqJuN?BGE2n(i{r3f5-&T^9Xf>lJ z&!P;|QEvXQZ%P38C*IaXD-Tx4gt)6pPm~32J3r1zfAGn(*xZ~6!af84Kq+`&s=&n| z??jU>eSTuAfYz3IV>CW!IR`{A=jV0K7)c*#rU&!PsWQPNBW?APw^6Z}gdh!TbpUMI z-5U7q9!__l(=U4`_D3+Q-+b?zh3R0@lgpn2pO%+qY<_5HvT9a%vOVqZDL1Z{NvcuJ z&jT125{=%BXtA@j2aA2zwDRm?HPRAQ8R?>gz2^nb9}j+?PrGcZ6p}=k(&$&2%rZxN zD8;xX9dbr4k8ouM&ijJOWIuHH13OS-?@*jpMfC z%FQm75Wn~s?-nA0-=x!QcQaMA1uw*^=CfoD#gmcMio`mRj6K9H#$R75N#`F<1*h3oPz!^dPLm6&-@0w6OPO@Bzq>Ej)@FOy#TJq%3#(GSM`0nwIVl+tS&kRBwyrcU=H9spQCqHg ziX&XUsRn6=F3tbin*BjE^fCk>tidz^FI*2lN?o)JMIyUDf}ko%HC0nVpMtAb}t2p1FV z{9zXXuxOqBkhbv>EF|69#}I~RO+a^(%{*}3XZ&?p^=i7V6+`Dd0C)X(+9DTm5tlZU zI{Upz>@NPKeDPn9%tl_Vf8=P$V?KPBgO&wi|aDOPCmUO5fO+Id^KL;$QK9H2-Qh%@x!Wp@uU zGxMt`qHL~4OyGx@h#anYOp6`wB*W}!_p7C|;LK(!_YQVy_vcZ56X;laN^_Z-NB}7L-R8x|O?uWEuaW(hdHCy{ zsf8(xvqn)$l#cFBip;~qlFwpcRStXm_f1p;Y;w$M{n4++OVM&=&X1A`gXSm7uY!xG z!auIWm4HP>lCZ|yhPcNrI_9j8YR8o^dDffvZgXAZyCXQEdfy*Z{T0!~tR;m1*R~5*$VTZi;@U?8QHwUE$nRJ1BT0$v2Pyf zvHn*Uf4Kg%-Zts$laX?DU8*xnHEr8m7O&6QYajsf`DyItY`5iyJ9`_KAW^^1iT?rp zlj*TZA_F~Cjip^Qg>SZnAhtPUAB&FEQfS)U>ppB>fUK_vl|Ht5eeT?R!!zDS{?qY* zN>)jl7)(V*N};H+pzFKrB0^cEb(G=ywzZdaMj<;)5f&~Tue*UQ3}o_go+&`zWM9^a zufmBTa_qGiZO@nagaukjB3Lk)ujt!L_l4XoOW^P9Ln}tT7O>>5y0(7FkI`3$Y^uR>r8l;3uGjGsRb@qDmgF*GdPQ!}JDp3R-*pp!@e~wtvKkB1(BhOrxOqAh!{Kl>W;SHcBBl}Qm}XR0aLsvUy2c5J_)QA}{9SI$*!Z(~*HXFQ~ zpX>b0L`>Ft@gCjsv3x65FmdH&DO?aP@IJ~!`MOL=`s%^r9arEY%ruw_Wg)cu2tN5muUuqt(IQgJ9 zMjX*v68~ZLXsv2)C!bJa()ZTOGv0_}?H~ry1My@APj2D~4_;*6@>NZ4;to3}GIHKimZ}r(p?$A%5m$8u z)n1>0ILhpzC>_#moL}i*j0a&S5;|qSa)otoq>pCgZh35+ag+o%g!+!02FuNBXeC|a z_5Lirb9u1rLjXzxQ{7h~W#gz6p>*0=YO5RVhcS8@?48>442RwrwrlR2w`2GFow3(U z)5~&WbP@O!Jx^6=!S_aAt>m-6{jj2Rt5xB9s#ygKCQ^FIz1l`?pSdw6ydL%vb3dm>6hjuU@;##KH;&gXtLA*srm&GqZwO|5ic)yqH4?x&i`SVWp>~ zXZ`=C^F{y@H6WBi9Y}ElaEXZm$V7480^k8q04`jkp!mn#zweZw%T$+uSE&DH>s$p; z0D%;gmoHNRX(*{KxEJCVOJKT8#e74Yn&qL9*ZV81682$Vz&9TmCsj0E%cX6+eZ#$?>z+>vQy9G()DOBlF-Q&r z>~SpliG490&-ZFDd4AjCe_MRGEL!-%JOKKIL{Bi5-I@5pw`PYGHWNR%iC(yV^U{Ct z%cTGHw&j{ni4)*5e%5Yh>O?-B@zAcO#9tN@$;j}Mlt66+g_O1ApT>ocu7G>Vv$aXO0W9QSvM3IkhFzl#0`v~Op| z##S4eu+ANb1OTDu$i| zZejxL3pECr&dXDoQ~g%R9&aw^wW&0!$jKb@N!t z54;8eH?)f;3(7yE1Y70zit_C$|F7jTNNBY~5le6=r-aSoE2^(pOKgCF+xBC&R%P-> zh1wmm>l1R6Q(ax~gCHAl1##JjW3?lZd&VrATxQVKinL_-P~PMow*yA9`3$_DVV{yN zY^is4e_BHit>)m_Kl@Tz7Sks9xuYJi6JPi2m+dF7?$F8hFKDTjl*g!uX%vd%Hy#(UifA-)9hcODI>OhlrGaL-gWN?yQ!3DGLva!v3z1gA|L z;IPHbnuCK%p@FQPXM#zUOt>B+&q4{^Teq}t7c8@>=Km+!|75 zc>OMFE&f;Fcpi`muWff&|7wq(Yl*=LfUt}E;a*=O0!#g2jT$j^+H*EarT05iKV)M) zv8m}us7ysmZqdWfZYl5-SmYlRq>Amfgz90AT?-IUljozp92IXr=$`}F5ux`Bnu|!% zeEl|Sd|Pg$bAXR6Bw5KbHj}%*Tar88ZyN?eJgNI9EsASW;I%N?WqUc+eU@%R-%StI z9L9UWjGBrL!{7hV&7Q`ZZ79^*nKn0G1pn_;s?!y|9zURU(8i@lcn8* za{j_E_)TIB(#u=o!dt!&h>IHHV*_QAaRzUPFCvs$F*vcH1TqW69|fsh<{Vu7iod^r z`(~(`v8)$pKT|DJF_BOVG)odr-n%L;oOq&G(TjBE(qr9V(UI4?RA)QY-x_GSuoBm25X(DsZ0bSFs zH-P5=gD<2%v3Cecay-TB6O2E%YeKflV^pKTO%2z58ko+iVzU`KilKiRL57bDSC`r* z@hU0D__#1>dUPK0Qy%O{b>HOrTCTOhgOY)A{TX`EL2hEzpBDa6BGQ2t_pRPrzV0*i7O>aVKu9CWxJ*R~vIy=0Zg z7^vq*z8qhcYL_`Uta_UGEVNno#wj>RW~!>Hhf%FN>-T60S2q{kZ~l)o>1G?xKYuO$ zPX&={AjRkR!dxW>5J}N*(GDh90<7C`!lxL>~`yvM<^gTI}wWpfq zg7@#xRx!vYp7>3D=NGjbtbV>AIaN6rJ~W6~w*lKOcu^{;DM3%Q#_VCR6_*2lvG8?KPKAJW$A7AigZ z+{{i3mRaff&0K3=SNizCDb~kGchP7HDTvN?(7q?tp@2&}Y33bPpFufP#|lk2wS(FJ zIUGU8%4CVjuSf(U^K`;~v(Yn|F!~qN$rvW*x^%kFyrV}A&6!P#4GC4_Q9{*0)`B5A zA7hWPyGMSr;x)DUxM_}BqAkORx-N?o`)IQ^5yb^@pNz@RLMcJw%~o7#MRRm>)Ltc-hdjcu+7qoiml{p|GG+kOu?bEriZ} z<9shY_@(+B~E2YLEncL zMfo`ph$eMxZfy3|%{c&|S1pKQe)q4N=%s9TMd0=KKL9Ef&Y<310kFlftfpk1kKTY2 zJE#RZCl{2GHmu%m+PPRS{QTK6USe^z(Lcyc5x-JRu9Q(5k6grkKkI}l6l1&u&^m>@ zO5kxc+E9h2);{IM_4Zay4F^h?WfKI_{B1zIiMcc~PQpMZkYA3*czJjk{?g^@8(V97 z+K~FL6ZRPa%%hC}RGoZ0JmEUrqWLH#$f?Q`*TBYF_>+{Ue^`+1B)T%hN4`0~e7Z3? zcUCtxv4zh`w6S|_qRlIO>pB&bl$08;{q#Ej8Z3LWYf9HVKmJU7$=cD!bH93658?7H zv99{k!UWn^RSs~F7}}2RJY~u&owl$4sV{5Q-|%(s5iyCPX+e2y;>bF1Po~u)nD;=| zUtq|Y(?ydH=UEga)DG4*>Zf%;WUkZn7}?)X)rz90U%PsmJuV4bh3<928bE7p{a zrfoKi0lhRfta9HpA_0voP$8{0#!`&jSBr~P|H>RUL(}+cU5l@nT-|bq)@2d7s}vow ztO0}C#cph2^%p^B{AxYGm*ogBh_;YFioN z=YVT$Zqh&c{<<5z)HdbkjqV%2byr~U{X{k@Iqr3^nu)0ldY+y5!?=TTO8Jx+bueU+pEt921@Uf(KI?1WA zOpi9S(6N1mC!(k%{0{_CgFcRvLlSZ~$-ZfhtR%%am>+i^v-kW*-WSW(A*0E)sIUOB z>(l+mTW*0!8ee~n#j`vc?(YqON_?YCwQV)l?ujn=gmIJT z&RuP%idG)m2~27eU6qfXfK=T_RVsiKGyKYYBg-p7fiV;p^D#s>@yMwXhP8JuCTmMI zm$={%1oyf@`Mf~_4HwQ1dk676#2qY<6--)QrIR!o141#VKc7{ zVsrAID2tCYF2IR?MQ;?oLi0iN9zt_;9wle({-JEd91c*8iY1Y&y5#%3-T6Hj?b~m? ztyR{wG*C@0PK&Byydjf0w&h5um$M&EQbKA+F{Zz<^vkV}GoKJKzl;j0QDfQrWmJSB z1XWnqhL1OpT1Gdw4Z9afD(rMZhgudro|@C|%$9f8VmH*PNY)-nRlI?T57&H{Bua%kGM_c4pWjU!@EHkV4YJnd=S*dh|!|dlV`W(P#cC^mrS?$R# zEgC;$-;gZz*WL_G~Wkt*d!idn516(whSo~Yg# z>+DDJnvpUaooM$Qi>FP)iE*dn*WW=8;dldV<Diky>S6-EH`Y``0%hQGW$D^O`N%YqRRnC7B#=>y84QD2zhHK)CM{&a?IoobP2Sn za}{BPSH9j=9T z$K8d|+9;~&g|#))I0kGkF8v<2DYd9#!5Ji{Yb? z!SGI69}v(RB7Eb^8k_MCD$Jjey;QkU4h?mWwOhA|f94ivDqTahsZl!ufeeA21Ky84 zZxf>OKrCH;RXvvdq{?ym;{oZyR=XEI82*XO0%YQHBX<;7IemTdKEU+86Yj1rs?d`p z!kv4s$o?E4v5|Vj(vX&}sdA;t`IjBAT&*os`p3y9FM+Fw#-c~8IEg;k3=J#JsYTnh z3o)g`??H5#_{qRwD`^OSHzyi9?FmmIRCbS#A3DXC@!iibG=rLR5|q2o0V;#3E|v4) zPaiiLw$Nd$7IR*Lnzberxzf|83(7Ls|TV?~i9 zcbv}bVjJ@Vn2Li&WxSApPv1bmycoS&g|$2U#MtOsR{Pzf+QUkkP1>1Gv1=cBJ@Q2x zkI>s&A{g)Eb3ma@!1r9`wIgYKWRo~4C9N$(rzUssga`lbUWQ}RYm^?kD-=?6CfllT z@5HjT;&5bcthS+W>%oZ#$}v3X@Z+6Yj_Lx*fCO}_zb7;s?Zh{4f@u&&qtWBFLn8I$ zc#c~Sc&bZh`rdmJx4s)%LW_bY^@pu)gbV2l3>Owdt@@LYp8-4DCWI|!+YP<&44q28 zGK+bo+(d|KF5lTV6Oryfp z_24pX(5z9+er<{`@AxgpyXeW&L7vU((?dG1Iqu4(UVB+vZY5;0h%)ndLT5Fxt-9-; z0%T&+=khtgT4+Qp2}TWQKjanlqUU`;NAcRuq4r{9i~H20VH10e%}o8C^m_&Q`2@e| z#!8JS;Lh#)Zx5PeV8w^=lTOEu4O^=M2cNjl0j-3r^ilJzFl(A2E~5SwdhV!X5_wo^ zY{ylA{^-u6Vq2sg)b6P=o8s-dZG~ySVTk!@YLhK1hVRNvFV&c5$WV0_hTSTXL1`9m zmoSz-qo+G9D+yJ=5#%No2@2e|C%Mdib(`qYn`WPRR6NYur%J)q*7FR9dd+il|F@us zn65uGWEj6~fS3~qhb~M;G^`8(9tL&bPM6ITZzgXQuO<*|Lea6&8ttW4M z9{*u(_yj8ua<}4_(}oadxwkssgymwj?8ltN_{%vEf7ZpU7^0V$rIQPkD{g?{@U1lqi zVW|p+@a*@#8kCjT@<3Ocv~NpvV;zcu`3Mw48N}dBBcp~{mq{}t?L-Rhcs>EhqOj#` z0}Fwx-jmC{%WUkkzf9^vhlL7r%if;V*3r+17y_}WCU)YP@~16Gq~XenPG5(?xI=UN zGg(h{k1_Yw*~c6D!ai|co)~;VTH74IAFnI$+e_*-zQV3J1>@L*kyC>ELRR9dlugxJ z9)&7TuLZcC^tSr0=5-t!I;2-%oT`s?-BR@UR-)yCyvqrx)dW~fKuJ&SyweBnYvzO6 z6nznmkTm(q-y`ya?htt`m5P(j3Hp4g`tMzVMGlPW=khUGU(4Y3V9~m-`trGgeb{ z5WSVGO!05A_n4zI%~>UwHt`Rx@NyV^>s*d9FlT?yn^SKbu|BF$G_mzueu{#$ZF=|? zYr9ZVhRGyLQs8;_+PFifipIfxRJ`PU!Pi_FprXd(S&dOf*}k(4JF#*35Nt$ok&9?* z%-Y%t*?&eQ@2hw7J8$v!gyxwNmrtEm&I_LVaN^j6A>sjWiA@hRb#O4~>4wOGWKZ}P z;%99|QG=d0n)*EMqODIS87moQk0^}L9#xBIu3{%=zqzgifJ7E+gTOP8gSPm+>j+6G+)6&)*Y z63p4~s%T+} zPet5|lvyUZ@fUeM2(hp|u-5fTfH1zUP|A`n^+ZL>5%(}$7MMalN5z!PD*yVVs^6xh zlzC#!^kKhAEv+*G%Sq6gVV9TjzkA0ngvYvVTO>5#=am7$j)r)!z8_R`{{x$gIdG2m zfUs2P5%f)V@aa=umfGMuS7Mhdr%mXX2%%CV^+GYFOr&gADsbD%Z4sJZ%POwT&W59vhVdWWJt01H1b%&Janjb3Z2~+ z@i^oAMKu#k#SQVs@Fd$HGhK!hD!YWB*5-7(i4hAksxhuSnm>I?D0<6D7JLNy&Yq)& zU{k<|q{ z6o@}DQ!|p*wK@FmUkXE5O(`*AB+351*!z7sq=Znu5~D*%V*fQ;kh4Q=n;H*TZed|Y fEM?YzOUWj9*$zXh-NIK8q0*F3%A=_x&d2`?ck3?h literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/escient_ProductLine_325x163.jpg b/3rdparty/libflac/doc/html/images/hw/escient_ProductLine_325x163.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cc6008ee88eee2b531d13cf4e044f46a55a440a4 GIT binary patch literal 11972 zcmb8Vbx<79^Dnx%+u{=3c3~k%umHhjVUfib3mOOkf)fZy2oNj~WO0|p-6arQ7hPO~ zTOh#$3FPv<^6K8-dw<;5RWsFf`c!}V^i0omb@#u8f8PO=P&G|80M-KuVhI8O|26=0 zs{YQ7000aI00RI3!iVdD{w)KP0rxp?_NU=Sl435ltRiK+RS=$QEb zf78D%02Lvi0814Iivxg7g@r?f^{)@`2mrvs`_C!I1f@RY#abC9u+>2gIYvUpMZwbM${uXKChOLmP-llnb18&FD9;RWb2iP z%*W92@~Ifu**kdqB-PdTOmA%dV&GQ&7*=2y68fN<`2iH?|Ac-}{(w#JAe5p4U_T&Z zUPf+AvUKg`kAKLAUMtEJdR!*96H z)K+m7BhQRjRc(^@Mi|wGm>H`yo-*`ci-4~OX7T>F5oy99W8Cyz90La{(_zRUcgd?j z&d225C<7y0Y*!!6sva%@-o0ubMNMMO7S8X3wnYD*-WFX2XL#F0Pn^oGUkQAWr6)IH z&G#1JfhR-hE-GcEkkW4pV|_*T_KGdkpUYJjn!dZ*`@OZ;^?K3Hb}6ZH!AqJOBqzIR z9|O8@?|*u$VLkhYCTJr69nbo-dhXZkoD<>jD>ZL6lOF~>IVx;-LiY*4fS`W$s~GB2 z^7{n7i;HhwJ9nRtN+@(&D(0 zJ9JtK?=kuJI(rA4?{%N8+`P9FJ(Rxm?&nbuLc}7owzXP|?}u8F543<|5_DnHsy9&K zi}-C1Qkohs{SJ&^#bl#*cw|zC_qSpCTaDOVnLe$xV<~@>(Y@67@!>kIYI>9Tjb~gp zpoa&d=0`QRN@v(toM7<}5XI`L4CZ*MSK9W}K>H2DKY*c%S5-@(0qlnHA3!QcniH-O z^&|RZU3T(JTt2m|1Or58_J;LKHOMSsHHIOR5{vKhIgd}w#4c=25oUSUA+zLaym`0) zMF6D&E+y9g#;6&f3f!VS-rVzN-1qAdj60e9AS5_7y;Psjzr5GI;QQ_|;c>(Gg71aH zjw#^lpGapw2I+_dYa-paO+X05)scj>h9pl1GDcmG(93uAdNl$-Tz?HT@_3BmA#xib zR--M2Tr{2lN)S>WGAzqU-3f(9AfohHpIh(bSx>)MBA3C2zx7u~qK zy1S@RL`)yP7cR$t(}#p;7+)liazJt3x<~Y>h4C4cFQk^Yvy4CezC^Ajn{&DF4-k&V zjNwndrQVC2Y0Hb3;D=*IpL9B%OQlf83ZR%C3(yoYKiAnzhQkfkKu1TxVl0cW@sD{ zW!5E#dz0W{xptA5`-W(wzpi{E1__%mz=^5DpMw9$9#O(pinW@qpmtfg(&fKdywMN; zoM}Ywvov}Wi9H0lk;aWiK7yqt3@K%v~ezW%%7oK zyQR{Bz5O*$aSX=QEORT~5~#1^V15W>_ie6@Z2ue07Llz+X5ZeW)vThIo^Mkx(1jTq@OV8NG>QwX*xFX%S`G348Lo|z9*!1~ZAzei z&El$(=qX;y@@<{8c%ZhC1BK^mU~z-!0~xM^n7YB|9c4Xbbwn5Yt)3Btqx@(#=O|qhFm{mzGDNjIKMC3dqn}PlYwL^g-M)569t` z&*NNegxjYc(MybkqP2}ti%V#UKQKqa@g~ve_&|%8TZX8YnBwET?JxQCbn0Yqzkh(Z z>c`P(k}Rpci2^>VT4E5AoTwiN=1&#xK1mihpAs56I{nw6`|t0EU7Nkceh&TnC+PQ% z&neQTciNa;pY;!268_S-tXaj$@*?EQO`LZg34-Mn$}cN$!HTxN!B%&fOXc7xW|~k21fAy2re^BBFVP-FdyX-y^1XP*`hiqU#UoxIXRyEwP?vQ-E!Ya83*(?LU54q*gb~H2KW?i*ZvzHi7Z!H7ByeQ9SmAQ(6p~O~e!A@V z`EG(`faZj+LjH`+*9Ypu;S8r4)V4G`&;TC}u|)UII7K3lo;;60r?)RA zsG?}7GeDzlSJMD(XJ_o+ZqMHnx!hK%=C!=o_k2sW8QV`1`hR>P|7SEabf&}Fc>34J zs=tgqCP0@<><3rxUfn6l^2)t^rm$zxL%5Q-R^sn`Fgep>e3n3cnM;lQxsJMfJit{{ zS~Th=RWzNE!48mZQ{QFH%I-88x-7TJupC6fKD7NNFKs9W;a2<9<>*cTYhI1QF$M>w z@p|Sq03B{5_>i!%C$ZQ?WbLWs23!8*KY%Oi_M0TyqNx{%bkT$=GzWv?cGWSy0~4_+ z0SJu+i1u19Yp=}i5%zhj&i&KO%>?|Vt>t4wah=}>)t~L}8K#L(1CioYh6uyHv7@u; z11vJq1ZxWgB5RTbM+`rv-p0nMudVAyxEYMn7GE?r!6rlp|E%nV1?Fj*$8+Up$RqQ5 zc|<7-U9p>>wW`(WSF5h>BRtx}Fin~wk8no)6}k*7DG$r1`BMv-%hR~LGuQMd&bW9P zy8w%js&lXQekY&ebS-yoI9;P)O!}9lfi{1cU+W{%T^;$vtDIT>~m@48#);%$4N%s|ph;JjKjEL$wcwCqK z{N#&WY1b@etBNUeI<#8%{jix#6)zGs=j0OS=-P#Gue)02L@H>&JwsehS)Fd_*pWSi z!2cT9YFtHIZV{*M=U$y9IJ*QUf2bQWzSJ-={Z3>B)tUH>P#tf8bPDB+ywaW$YmxIW zvQw|9XsC*Myu)oTJC!Inq?+7soObqWfK5E_$>KGx`J<)f9U1OMsM`XPpgUzKtg?mf za;K9uYrc1?Uv!mhl^1Lq?4Le+NLSZ<{UeqG-2x^e4d$Rs^&FBM`f=sQyo+uK=Z<4- zsZc79K3bdsYM5rCd6`f8t0Ba6&7+_?pdz1dkYeZl?NER$s05tS41bXXlGYsQulM;r z{ydUJd@c~jIq;w;ow_JH5$NLS0}e7y6A>*lpcbyNOn#{iQXEJo?8wlZ{8;{oA{~@N zo?WHe9W*q6Gfe%Zqo`dc_ z!Sfs}fOru#a~y`f{i~{-SDok#k;AQ611Ikf9yl1$Sw`)#8gylyI8D)6*%8w!n917r zcd8RDD8culG;+4dbI-5`C#6yk;(g$VR>M?JkG^%k01TGb%aascs9PS zwSgZGsMfLMzUn4oEesM7%||{{QTijH>?~BW9;ab^A~J3YcJhQ;*3K~;@$~b+P@lSq z=<3E2y;oKo*7kU0V@X0&H1My(TQ~mzA$1x<9cCBC|u)wY07@3eXiEI z>rH0U<@yv56J5_ydolENV}vq^df4&))i+tiY7K2n2)0dQfvaccaj6W6o2=hi1W|Gp z0X*pIK?>QZ1A5s&$-!jRQPIm9?7H)1lA$!8kn{hQQ*)7F(wbGI>Thu32*wtS7QHua z39O(d{J2H40>7YQT#x1Ez6PWme!+tJ180hkPjOw1B&O8`99SO@EEoqw{791V%>r-E zeC}_KO9Ejjl(L7Q2C`#CLM*L`Bsa>kb^D=rCSRB%UuW|~X9h7HN*p78bBzs5_8BLf z!|Q(58gQ8Qo_USSA8UqZ=;>)`Ccxnt89xChGyeHg40{x#ZDDu`z}#Fj8$UY9=>w(# z_hIcIM1002y!lzjXP(|NotHYs%`Wfl#yy@k1T=A$%=D{y6E)92)@!vdRVYbN9sRgv z+UQ3&T+&wfBe4-AK!%Bn-f3)H&Tw1*HsxMr%G3mf39~g$xQnP8mtepKn(thxp{6>z zo{$EJr|a{?i7}^|%zjVuaf2chH?RFJH&0)=keHNk95&v$xKFK2w0m>_{f(g&(YKm* z%H1b#n~HjhwCqh$2H<9r-ymIKYcVQb54(C0!uokzSb<~iHoBV__S5c#YJbY;94+Q5d; ze!Y2s2~8+|51i8J4|1z29bmL+_2ucIZ@?>>3<)$3fInMc$-l5kp$$zf8{drNPWwQU zhJB0N$2~}OVzUjyOh5GO*w3@`MLisXh{<{mFPp%~U8f)q3m}q$4MXMIN?Z*HHT#drG zSSt^P8rY>Dt5X^R?-0&jBsO0oz&Lf}MRTWva-g#K@yOi(ikj)fxzkn0iiTAn-2Cwy z$ZRy5DE;1-8ry*g_F#_xnlnGY^_SQWr2PlrG^tQvpKzR$-z=(2+SVJ_lpdB1qX`~W`JZ=p%m8!v==@Ax9T<^>ZlebIr zxYz|OIwup5DE5_-g}6BHre+cOaJGPwu?4+G;U>%U@xw>}F8j}?pY}6XiGv1urZ}Vu zX?VJF7i*zm-K#CZ?`bRtDOiz<^tQbG=Lr>%gGizQghH!%B{Jr_yF_Q93h5ZdoA>Gy zcm`y{lABLtQkaS9TrlrVqd$Sknihx>lJ$2R*7v{gu}O^-moqb|KBat-Ev8$#nh3)! z>V_2cKpuA*v-sNR@Zhm?u(tqVm(N})Zgizy{>=$5hX)OfS93eVliHvk4EpeJ3&W)R z&YoIHUN9(`9v)t+B`gKE61h8|E&$0>>y_xh`JJ1a@Ag27(vc#=3Mq^>WYV`xpD{wU zvcZ(D;~IzFE7lN^K;H194xUegh5e^J^xgX%a`l*(mN|pLvrx&Hk(suwie2x_5u?U! z$pC19wE48=b?haOpiHC?`8{IUG%#Xk zp5Gi`qxHYlv4b4J>;1nyqW3B>kt|e?lh_{f@}fUYgNxc=J)(VKbIkB?T#5Q~1h`1X zwimK)%UARaf7X6N8B+Mf#gW(ia^mWK$gmP6`k{d6mQl{p`hv-nbtPDl|%jv8`b{JQU?O$tqI z+D5f!8HwoO9b>EOgidesFp@Ct6{<(EcCSAIxUet>&C012{{T2#=b>0@x8paSu zP7m#B8)?sjr}wopFka|addXK%W>Mq^0RG(559>pU@E-Nb7!9!}W@&M?Vq#Ao(_tI3 z_^5qnj@dqq2vqqq*L5*ao5kS$TyT(QZDgOLXx5Dwwz)%V_8~)j6a)yI+v@9|F#d${6dV|J5b$7 zlllmW*C2DHHbf61nveYlAa&nixqoqU5$D^}Rvuc};rLt%KDb|RN7p9G2 z12_)MD`roxmmsh2$RQ;-tphX05nxM;Mk9hlSIm zrh3P}sLf9@({7h&tRq?Pr`}o7U@tqk7<}m~oi358PHVL9r5)v?cx5KQm@($fZ*5+9 zu>Yl+D+QR~T=0_Y@FU@_47Tj`BChM?9QYpktSS{}`{l=PrZE)X#{v>rgV>zAI*{%6 z;VgqZBRIz?c#|~5;UYnAUjK~FRQW@l=sAuFAu;3WZ^D3-C^e_p12>8VTwLu^KI`}C z((8Em7A1DJSvROwIplxHfM+7RTXUB4`at|XnuO4Ldw!^AM(nU``(?B})WpP&?<2x# zg=GTDUlJ!s;|3JoZf55iD39o!zG{i6rdjWPX>6LVx26%`8UJ~Y$3mb`V^}gvsO6Uy zgk{*MTOa8@Tgg|Uz!Wp{k0#S^_xwfpRtUmv5a^a$FEb7J+Wva8xEBzUSX)=ge2W-SuSgAIz#$NK+ul*doK6ztQFR-P z3Tj=6+qPrg8+NLTx1da>A|(*PA)q}`hh3Ak?Ve6s&U)stN%P)`daXn#uN7P`>DaI? zJ}|LV7K_z%Bd@RaH(JH3gL!V){|ur`9aU)z>JWO9q*{Fw>1^n4rXb1gn{?mjT=bGu z6WWksg~-qxVs`E4FX}R{ON+s3=3uM+we;pSak8|9UB@PxU{ay9|q1;vyl zPvIQP5-d60&yV|hdT;lOvT%kDJb<%3yLswP5zWlSBf4dy zK^C&;Dxi;uG`ciC3dnD#GluyF89;?xg6I}tU;75P<2TOUs+lfo1s<#gB=#A28;Lj8 zS!0LsaL${BdvQ)3Wh!gwNj5fwUSfm*@JRyFfl2PYX3yNkL8iY>x15F@i1eL$d4hhU zdpjx*+Yy8(Q;`8DH1kJ zAJnq$6{#Jrv0MTGKSk!oea$sj?BVWtoyVtFx3Fo#O<@LG-^fbx7tdo2a=FGk;&xX_ zHgmQQ?x!dThLX5m0T=Gc=dbMu*j)Z+a9s=i3jL8KU&G5cx%5#_*`ekJ$ zs9?%$;0(y?J)*lqtufiuQx)dom0K$l(t_3g_3wI;g(TzWidlX~n1GMK(~g@vK`)b{ zLjxqd-50z%7)56PBp{xicOOs2vn}TD?%gTv%G-oFm2YtGFxp+8?Zh&uPGJTKb(_2! zD|8cu879AeDD5T2KexZ(R!r%;-`(7CuBYGsjT#u^ zl*tA8t>$rH!i52pXD^YKN4BzD%x{-(9|_9wgScxVGGS-UU^(mo4>3#5K3>Nu~yVd0u}auCB{1Zv-0Qv}RZ zXUl+Xex(MukLgGKYX9Ay(MzEttYY?f$B-L8!`ly)lRf#j+`vmLMogxe2u*JEs5h%% zLUQVrS`rYm5Ij3pifwgh;;ev;|KVlfwVPz5&h!Czyl?_VJhP3?%sqRAVt#{u7pVwM zl2U{uNN49;B<4vh&CbnjV5x8jQ^Fc>j#MmuvIzP#2u1Ti9-n&=ro1Uy)}I~3K6feF zj_DnLqfSBB2Tf*NSG)K-(_mbjr&|OMe34QW+LW2wENJL?;Cgi0Pjd!Dm-BH2n;~fo zGhRZ9?wQ_fZBCWaSvrGxE|Nl{x%i=iLYkfFKf}nQ`YjUWi`05)(K})wRFPXyS%{069}-^V-LkT4!{w~?tlMz%;OCi3U{*S( zwqN#pAIl-h2Zovr^}=vcUBw)ropdRZ-x7zZY!4!R5t?*}Ls5=^L`P%Pqb?lpg@_V^ z1oT{df^#?n5ojr|BjGJ|Pw!{WV{V=O$ze(avC_u`cU!XVIS7L@!CLS;gnEF9x&S2A zaTpi)*5m4JLj7<}m22TGR|a*RMDNL9Zme=4*VtYBr&Z$3FI`Q~uJQpl#6{I}o&-N3 z?|nt6uD+5iYJJ;(Xwe)P@lcbMb`dL0YsjizQu!b=mVR#XW{S2a5v&#I2p;8B7gct9&O60rWk2d21Q97wR7rCCUP|a3ELtz%cEcK zvHFTJg6Co?;vHzBDw7<>#fVM>M$aRDL{~LMqDocWQFX{w6CQQl%t2c5%<1I5c5@}c zEQvzAc!4Yw2n;t=Aa45Zv&yt35|N`doKj%0OrD#+wvDaGg4Y-Hj53>qo_}~A3EyEZ zKkm#5XE~5QSy+42GrP+&;;=nA2dA;{0k`n}sYl#heRamC&xXTE5=x+|AA}NZ4!-b3 z+2%!72Dr~k#)eL*Ys9&}{S-WT zH?A-gdYSjV>GJ`eB=-VoSC(!WyCH8ePpM~;q_cZ7kIZJeO@P@;4SF2wPAW;kq>WV_`~qmhpz}@W3t8g9GU4eC ze6=;b-A~B8eX3uVhcb;UZDX%EE@jjFXfWgn$ixz&jiHPIxRFW);K^r1t$l^dfoC@O65m96ykAee=nnyU>9kOWQ>Vs>6SMmd(J}YIMix?E z&urybq$<5t$jKM?G<@TDP~v98IEP$-fB*?nS)>YT>QwdM9+Mj9Upt?ST=9bUo^w4j zb4-s?I6OZW(k{ei(&u2$aNM9%DIk(E&UZtxF@80v#C`NjTuD(+p2kn+rYk|oI5)$Q zZj1AbR`rV^b%qL&%fo87RpqNI2&JzA)H=FUQAN43$SY{bJ zHW70*o8f?eY+8UE<;TZQ2+xJ>OPiIXayCWo+Fuh4UfR79`qJHeuBON*T9Kv8Q4ti5 zU#XMCD3hRNQh^1}O_J9V4}{$NXq zrSY%dB0hYv-01zZpYYB4jpKT|JV6QJ_wxQzgX@G7>%e3^rG>cO`G$6weD&JM+6A`l zh*jp|A7F@RbtlbP^o?OWtE+`}*&j{GO>-3sEdv4QE1q+F*RA0! zd5RER4n$7OfV{~|DrVZstaQ6PGPlNq&s7#B56@PUmwYrd1?q*6d`~Jglp|{-A~?5< zSlo_5aeScJE@UB>!my5>8{To-X-4Kjyb~gY3kuKX{iE6XF;_PL2-tY2#@cvE>K_=; zj+g9YyBQIzjn>55FvqCb<7rA^%`8l|OF48+9~fSrCU zacFIDisJm_M3P$V$v#C!vnCTK)kV%t;@2B_ra)5HV%qD%Zgus6%~pTV$H3+xqdJje zv8zw?JR5t33f5`jyyKK`udJ4Hi}tH zCZhl&7en!G_>7Rr(c$za^zYOa%M0tm=;;Oa&oFG+!9}4Yfjkx{lDkw@^cKtON?DI! z#PDj}7itO7(2;YTekvLb_wyQcYDy`dUxB5fCUEc0CKt{@%CnE8H=o0hy{7Ryz*cFA z_SJOm`qWuA-j?_Z(wCLsZlkY0Zi! zgj#@a$Cki*eCW^UpA9WW9cLL{!{3jZZ%io9<)=r2!c|@CBlHg#gfveS^31=iob;9+%|u%*gjIpGL#o3yo{&?(F%7iHIC=Vs=yQc_}_fD_^zn` z0|k}qN__*Y&O*2EC`RBMYjpbMa(lt2<^BCNOf46aDdjJca-QUCwCoup)ju7b#CL;; z2qwG;%-yWbG>w-{dQ6 zc0+#eE|+fxSG>(-Jji2yP8!nBAE2!<PAf*O}EdJduIu#_Z9abJ0vnBoH*guxtr96%AmwZVma!n~ znZh14QL;6aDk`FDmfLsEv-=h^;rD0dAE2?a62+4!)l3YF)PuSyY!q!_d$X65p@mJ5 z1cR2FIY9kGAQ0pm&pivZui&m@CEJ00dAav4m&C7U+q`11Ez>(++275qcI~@$>FeRd z!7>@lj`?Z9U$oHZ5+Cd-YYrZqjIGOhE|J#FhQ;ykaw56zuxqBIK8S0Qx#0MgmiNCbF(Y$Y3vXC|>Z?9j3Gg+=m$ zhLWL{U9!6G9DMWiwu~xXnx}sDzim=aRF$^s*J6IMw;_HS}$OpSaNK zvf5GyBEq84}ZW}1o+4hmQGFNr3DQ^KVjxyLrX zN?KHyY&%C4j*s%%T!>ox$R+n6@$FWG{jWrR_?A%I{wUrwy6AJP1zFoDFPuKRb~8AI zJ`^o`XO&N8ayDm4_cK55{gs(D!?82a*u{z6%Xk&$uTF3d)~9#MRw z_bs2Z{fBcEL;~iSF6(SPMU|RaalRHW11|l}gu;s~OOo3wtCIR;0SJ}QPu_7*{yB)# z#_thEO=aVpjM_8O_85+a)bjUgfx)Y8UGh%uwG=S4_m3a5nvlznQ>1tfAP2H+#~pU+ z_LxnFC#6f_t(fgy-YD19x}}s9$)`B?eF)$P_m`>w@V>}bzK8>7=bc3v|T*eZcT~`+R zhZ5E>X@#%da>!$Z{<>~`s5x|!q-Uq#2*+pBrPNKJXH=&SkN+jS6TY0g^Gn~!BC}v1 zw%m8Nn2Tyk&8a2dTyg$;&-M;?QQYJoxV%Pqie`!+por-iBPR}sNIW?qK?3s8Z(HpX zvn5BtRp{Rci)bA2Eg?-Co_s%~ulsKBFkVY$l_T75QEd~uhZ%(;A%S8Wl6B+g+3MN+ z1FWvxs9_JPd>uSFx^a9uTlC)BYlnflbiC>xfS%<>jnX0KZfXMg{0U{L`o!|X0;5IZ zc96%zifTlncx(+I=&7D0-c^SOng2`EoZ58EbuG4_=LCScSPfg1J~- z+zO^sHm5S_8AJgNmvvZeGxsrV({MbzfYi>+IP%z*tAKE$MwGis+>+&Zg zljln-*c*5(PP#WUkPshgbjB2qvS??;^eD*llRP>Mx72Ch;8kHGG57jVa?Gva9zXOJv%M8?PupY%<4qKB3O=mJyP~1eB>DgunudE8%jCa9UqEB)V%H~+6$ JXq8V#$-BsOHGhNe9^H1vl0%dt6c>od;5&(|408bkLGC6NsD*!-M74Q-O z0AL_)1UxMPWB@40$bS(5s0c*EKtn@CMZ*FD(J^qaaB#4(u(5IRhzM};2=TD73CIWt ziAhLFNpbMWDac4Dh)76D{tkkKg6M;ahKYuTNrH=wOY*;lr*8m43_u~0910Qx0GSX8 zg%IiKJAej&1VFfkn8yDA5;6)96%8E&6Cu_i03iK!9RnK&h=zfJ&_Sr9pc0~?6EW}t zF^Hu#wI-%W$QgCaTt6fwr{t58@x7Ln(+vqtEtte);+HqC@1|fD5DXKN(bj|XY`}{e z&Jd$gA(rhQ{Etll!YC>_8bZcF_}3u-DjG8SUvqx}i3phxg_waCl}}pJj6@5K-}OU& zJtNb`(;@%|1))udLI{uoJZQ_JzWV<~vvqF(RG% z7!v8T{#c+^Z}i7-=kdJzLAJx3D;c!3v(X$1lrrPij|}K{x|0H45nV;uzB`6wbtZOq zAap`IPeJ%uaA!?!{pez~KSwKuw3~ih2L>pUjRfepBnCokL<7%C+9C?k51tKhfP=*W(2j$2mBm?&}TJ=vRQM z-qpiSa<>EsKJnLUw){H6e>s5mwxhm&%rDe%!flrtAfn;#+^G^E-8Z7A`=d$j3)Nr{O&SRBjc6zQ;%~RSktJNl6Etu;Yh{hI7$_YYC^g!ov&1uU+iuzme<#)@I>;aB zy4eeNR(b;D7-lJsQV#mBh59-jlEm%j07qa_C6D#WS??+5#E>d+y2lo!s@_u0i3gB} z-VIzuYyE5y+s)-*2TIwT)LT++Ngx6mq<>PcT%F9n>Q5(NMq9sPKDd1Q8Gm?Q} zq65y&XXi(iFuIzPdZV?~KsvsEI$A0m{HuX?#K5bXLy|vtV{6juyT`_}EX)n^eq&wI zrjJc4=AVOnEWmH|{#f3tnq-QqRtkCbA^)dF6=b zq5ZD!t+m7DN~;&{)#)K=RdK4wlGx{!VSy(=S&)7Oq{g%54=D0s12JuOmQ;~3(VSMh z&{O>T13Z_}uqQyHj+A%MuJVufG+7rPm(uq-;itp(e~w3iPDVv7+?Ha+hCiC{97alS z+%isq#hMGHLPXpdYym#|%0HTnGx^OPR!Yv*^jNK)&DdwRV$fYpX*n*ukDuh9RUKe+ zjiUpS=!dg^*@C`|&qd~}q6wpsb$nM&z2s$_<)zy1_UKlT=R|2>_&lZ{9c0Vf(8s^& zYAY_=uS~Z&JaJpM-g5sH8T=NZ8C*M(Kv?Y^BhU3t9p4$f-PM2MrmLYgmQ zXAOUoZ9UG%!6$%m#1@}Q(XnH>g&}&<#EeC){HpGb9ZUQS5!AEeBY6t7iPQShLF<-~ zmd9Rwm#)kVOdV^eidno^U-1|!Yb@=uHTq(YxyL-7%k3a_219(sA~pItgyVA!mk z9{nDNOUQ<6)?Ya;X_VP1)eR_c)-?Ba(l4Qu{wfp5pl2OjDXW__*^pMv4e54e>Hh{0 zm-D?jq0_`fn%_oAhAT=H>?aWOw(PoobrOHJi#5DI9O^gAu8aLXmaN3zsUsn_)uHIr zwO@Ty=h3`45WF=ou=G;3V~RS2iK$*#K&}}`{NsC_juTp(_RqZg*EH-)>ymRb1NN@r zw&ww!QV!J*pLrc=4~dHGn{K!~qFO>nc6G&8c_R;;*yV9+ort6DGtN_fM-Z-2K2l|Y z#>Y~5p+}<4E|x`sp{qUa>anA3FkTcffd%%#R`eTG+SkGvpnZ$9`nbZGq?tq%aKc5c zlrhvA+ImUhBB=X@N~?8jB7tz|hDKUJF6$&ZPVwFpmSa(0W|hpp>Cs+W>CtmDrYX%? zv29rgM2CLD4mJ}*nLiZC)u<^JmB5u`Wv`N1UJr^YHZe_zz9ZI2?_4xw-2SjFoy#G2 zE^PM(Y12luclY@VAv+jxMWo zL(>ag)qm+UNP1OM!mB`lpQ|M!(+m(wZvSfWa)+Zla&mTy!u_MRj?l4R;RL8XJgRlV zWB&2iti+FPWAL)@u4Oe^TQ@n(M7iE| zE3KLi-5xoW(i%I+_+w0yb~uEd>yHnCnII8qp_kG^t+opmg%;&Nn&biFIPJ04;@eA>h) z%u2@bEO}aszyuTK4N?#WjWSr=WSNdzQ#_@BJJ<9{y z?V+d!CwQWUh6?HT_9GH&x;^(_gA^ex@;#Mq@_Ge*EPiw+@vN4UP1WA?u)LU3ylXqA>SL5SpNB5d>XFduexJ$50=_hBqo@Nl&JC_Tcu3~%IeeQT(3KOf4 zg6I2foX^wai%aHOBGyR{_$BvJtcIwDyz9#L4tTMe=iaKVl3z7`pvP+*`NS=dFySB!~L6q}4xC%t5~TpG8H zGp3o*h|6udStq|hN8o3|acp6vM2#WlJqJYY;dNNca#?N(o)W4ht?`W0>^L@c-2}jb zG3Tm25~#6BzsrD-v3@YG!vd@0WlmoaBK{FNYB*immC*Z&z(iO-)8Swvv7I}Pmf&wg z*=j|!xQQ-KDOHC4HU)EJ$*H(AsCzVA)M>R>H0rK zVkNc&=ba3DnfqS8V8eA(VFY}Y#XyZ%Ht8E#fYfS8cc(QWHYg`L19B7tIkEB`Q~KcR zEE@CsK;n8Y9~5S*fEj)XJzyHo^(JX*>Q0GO>#?<)fV26ofWIeh+s_cZ1ZeqGrU8?% zi229<>vL+9`zY`%fdYke0JwBGQkH(LeL5S>%Hj!747~7Nx{c-iDaXHGzF*SpC6G_Cv4mP=FO&{t*bsA)`m1fpwf;elwHtY0PG(0F)B?!NJVL2g~rqL|FCz0^}r{V-NkhozE zLy4MW6i<@qe=K3_NdgdfE#jGfhl9Z{u#L==iS!ClJz3FqM?F=!;(jG|n>UgP= zCo-C?*aq~a)+=e?jo&kp%;h#&+Z?#zT@_5wiGX(u5^6ZE#2QUH^n*a;qdNNsTOS+x zGXhMeGo!)g60H@YM&_wm?I};Da4WW% zbT;kf%Gdx0Dc8l!a8O0Rs!ZU2ULT<+fYR@Y6+afS43t!#3aN8MS&=(}*?KLO^nxc3 zf=*@UiZKr#aB=c80jquqKVDvFKFeCRGr~q1@`G-9lMsEMg5TiM-+W*ydUO8t}Ysz4VuJgO70DH>*(U!=TPNg(F)%<5Mg<*Raw~7=z&*y zbiwmqiS@IB4sd!QP^J~swy3-;XUCxQ)4rraP7P~Z)%<%s)?o9*?=Ei)8_^L3F-eN% z(BASjp*bch4YYawEU!;Rana_|5WK0DlD$pAs)EcEvN{sN_Y5>;CV z8Lv914vx>)GO)69Cn>dbU#r>f^roDO&-_cW0QJIz4q=d1olLu$YB3~^BAnUx9YzCN z-+fRyJT1%OWNy;+aqX9Fi`kDRmpZ>~4~}>)PzYOf)!C|qJqzs-C10{OQ=@o_7fXJl z!txX?4}mZMlq- z?$NFu!FA+ffNc|>L+<>I?^|KAfB4j?-^UL_oaV3zynD_dlREG3VuMwMr++voPV96p z_SKf187n9-n;&Op5JtMSCifd{w|}_i;wkz}nOSA?jP%6aqh-kZUS>3OcH`1@;?-cL zpMc}9U+m?>lp?=p85S7Zd_6^~Z7rSY?dT7m`F?xp^|rVRMUC3c-N^oYo_khxYXa^! z-6Hnvio*A=XNgm2wgaUSIU*qg2|NR=CZuHG<(Cd@4Ojpw$o}JWosFXb03Czu`)N!Qa`S4^j|k!<6{_PP7b{F`JlVG zko;-d>?pz;>aG$SD)>7-!}>(envNxOwy{{XsrX@d_+cMdZLM6^(NRJAd3IiM_*#VfYH zF(QS~tsghP?FW+;UtTTaiVq7xz=uo2wF+^1=I07D;)H7Z0LUxPak-v$g`$GxUeKnK zefc>ob95GQCihVJHN$mfvThGG`4`rwf=w@o^G?$Y2(Rr;VfKEPZLmZx2vqDVo&p;^ z@GFcN^UIX<*U(JI9M#LeOnH~C3KMuqGeF{*|V?=krt}>*lO2Gt$ytmMTa7No4!m@f4;K2TeaekSwu;gr*+? z5To7?D@xZn;s2x#n!>`{5{XRe{G_b(-tWy0mwfgobF_xh{Q90SQWG$S%l!Rx{3FA_TbNAb(Hg7$7>iJq86n`6pR`zHgbXD zbkx7)kheVnFgRdj8zL8+GjbdxI!!%7Uj!SZLWKYTF7EsELd*#37wK1nKD{FE+42RK za+C}yzf5hq9-fQjJ7)X&2eQYQK17ZDsMk{}bYwLrnSHb`eP=B^CBGvM5#QqWGTUaI z1TTvg62^Vlwqb{y@{VSC~RC~uz*0rv^sqZ1=QrG-4w+RKNIpO#T7J+4^?T7 z;o77~?6X#B{`>?W|5(<`kl^LTIMdfKoFA~>l|{phBzFo zdn45r1dJ-9ntYF}g(o+?A+~)SZ@j2OgWymh_|&*G`)R=%y+OIli=srOcxMdUMaLsa z0qR}Xsy+KM$`CzqI2`n+J=>!-)Lz{2(S+p-d4}+Ghw$jSTtwI_S+uGf*YCTfJv?_5 zO>(+SISjvWChE?N=g!f-ijR*PL-nU%_nJGJ^OpCz2R`W}mj0SMZ;!l^9Fex|u&xQE zNEP$E1ku7#BKx%Gxpw{#=xelR9jSHy}5e2@i zHO;jHnv)$)(7xv?;i7AFPAcPtGL1+p?;P3T$>Cg4IO^yMobaj=_b%=n)MM}8Gk)3B zS0y!qQXE84ve|5M*$7?Nh^s3&Jo^Hsk^MVwFNZ|cPrTdiYd>PWee&b}2#!3bUZD3f z%U}lh=dfpzk*kfPlY=n=aE_i)J8>{nACtaz63Tds$H;K7}ur}?FXiw3MN=v zO&RaOENqfoe4#CPOFFLS#8vNocVn|#-dOibf)!3$0ZfJyn#$+^;tYfCU-!IU7xg38 zu@i|W<|2*=T|5bq2*}!2VkATzUYsk@U*m=UcZi1v3cuIRH#9*lu^pFcR#^^w`UhN! z6bi1z6chzkm&^D@J@&f{CsF9lYHLC z1mqGCchnChze>$s@!AgV?nT&A@3oj3uq_`LsC;)wQEC(NhGAiS`nkGG=*Z-U28~hB zn9h_{g>KGzPlpnlHC@?1KUgLz@Mc~gciXdQ!Q9pf|j%`7|M;%(J^*n`1Vgpl$CidhDnuD7pb!r< z67an?W-5g|Vq=O2b4n1zEQ+u#QeE$5ILvtrI7(JWp`$5CuS=)Ds2MLB-}mx;zT7+= z!W;{eWVs|G8O6sbbQU7R?;)pUEv&^IlIxyF>{=%H9#NO@d-3x(r;nA06v}QFtjvea zG+A*$3Ma+^Nd?CJ@|F0eCZ#!gy^hK?3?;KKs4Sp5k$AS!qB0-LC!bA*xOWAY<2@pW z$RM7RkH~qAcq!EduLp;`RM{j$HaDFY+ znwQ$w7Qx3To*!&NrG6Jquuoo8u@!b5D-`I`VBpcyF#NRCkSz_B7RT7uV$x8IS4aQQ z&9?qgF&c;d7^9pJsa_p53gaq4c3t7jXNXtW$+HedMoqG^imFV%PyI5T$T`T4L;+o- z`hpec7;huVq7_5oY@Zj?O+#SbR*O>c9ZcUGpJh5O{#J(vyj;Qjy23WgZ+-=7d>`BG zz-Sm7@Hdb(wB>T$(}+MCo0xtxA0~+lF`yv}y1pHz)A$2UI{B zv8%Ik3o0PaWFcNW$mra?Kt1+QT7x{&hV3ZHUbh#Wwmt#yUweN250Q~p#M*Ss8lV$M z8+Pocu%=5FnQvm5DrPcqGo!Gvr@eTc*jXWk{~E%=hH>nt^iM8kGU>IV(3mfhtnrrx z`6Ei)bj%$vcC@EvnHuKVQGD8Z-z{dMb+f!`n*HNN!dxoCqfal6z0}uId>KSijx_#~ z$#)E5#@+v%Pu4V<)3~|J4c1)T;d)G&Nl4xCClLept({(36f4+A{keUta<3fz{lXKL z*tK>rpzH~Y{r5yH1Si=p51*dMRf9ye3ric|-C{>bzkxwnJVxF4-|hSVf>KWl{{;ej By&wPp literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/i-station-mini-dx_325x237.jpg b/3rdparty/libflac/doc/html/images/hw/i-station-mini-dx_325x237.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b18b33aaa0c5a78b3f6813b0e8ceafbe14f72d9b GIT binary patch literal 11164 zcmb8VWmH_x@-95+;1XO0$v_AiG&qDLxCNJi;Lc!!6A~l=f(B1;m%-f$1jyhpg9P{B z?#|_$^FP1!-uvD!w|4Eldac^Ks&}OtJ!hB>b94stMOe{Pg5F3X8kAMIl4* zG+7KZW&k=V8U`uaLpOi{fCc~n|MeUH5E}Yp9kGEpxOk6pMG^oS1_l}?HZ~B5j){c@ zczpj~a#C#I6J|cLr!pF5t~j{lfw9?O{@0r3Rh<+9Z`|T?kSsw|f?CUztQN4t;M`xR zqeoTLk5>LSLyx*1RXs|WNdF^31E4(`_&1@EqVq97k->QSsQ+OGK!EXRmK1{&APu-K z2*U{o!wJH&P1%4pzp$}FzJKAuUrBI756n+pm^{8%2GX@%`)%GpGDl}Q@}qusr|8N_ z>xAc@echbK;h%lx0E=2zLrIC~oyc`UPcNn?U;*(n*~jiq4}fEQr#fHb-Qlg42S8e% zYQ}VyC$Ozah0deKNeuh&Rl!7k_3F805ozZBuNhkpLijpbZWD4McouW_)0#Hba_3x_ zl&mZo3F-fhDMUA-Q>X^GqQajEHjVgn*wXhsmvG)9-g3YG%Hb%+Q`#l>%OYcs5vUlA z`PL7(vbX!5Z9;4d*(~oKlVpdxH?VNkjTEcq(DGNIxoKJ$AH1##r5*%t0~Lx zrp&NLqyggnQ@s;*kPxwoAdUI9m_aVbdPp5J50vxL^Vjkx^!uiQr& ztlsh{c~pwO7prVsCs%^6U8u*gzX2!TjNgwraX-Jrc=>NaY83>}URoWCZ_AC1++u|^ z*eOTNmzE^yGrM1HrfWT0`Y0Mgz`&TY_Y@ML=vWs!zv#qmRusAXH=4*n{^RS-6o{&< zB9S^J%&&Llr41gr#TPp^MtF!M2FvwcGeE?iKVGF}I8rI9~1@i=Kp0Z14 z@TTzT7@{YstjCe9bTwBAi3dH8S!)%!vYzZYR6!Pd`tJ z+1o}*4qI0ZBalj$a}wV442q_kGk#;MwlAMdR-b4Hpk2o|DiC+`l;yYCiUq|ELKg;P z-AtF1VPr9_E>~Qpr*i$0rgWk++>Vqt5gTJvGztz_c0_^0l0h;93+ShF{MEKUSe%HX zIw+e8nWBGDzTL)o`tRZSI70u$RVfjgklOT&f-MhtbaY61{;@K12gaEcj?{;1IbT)X zz1Q_h9AMU;D!&f03x*lr$?d;9wkoK1^v4D>?Ufw>W(ey!EJbZgrwF}=Z zNjFN@_TVm3@GBNp6gNn+#~UY@T#J zFDxA)V%pMOCRShB)|~;QM$Cg2Z0fYl*UPxH38x1|`*BT5RNDpkzSY3Om@3NOm$Wq) z*SA&r!Xa}7_9Y-#G5ea&K)Tv1F5s2-myFPAr0M^6E-|aqh1YMk2&t|d=z&1(>8T@r zSMgIoAIZQEJEvi%k&SzXyX!&M+|p{RyS2=VkOzRK+680W9|8H~I^8nYgf84Iwol9% z7~Q36X|)5MjbWXRF`sBylbPFZ-45}K26ZOzF7RcOgymHbB-c?Z3kf7>i_Sbf&349M zkf7>-LQHC!yy2UB@;b0*bb3{-DFCnrWYs5d!^aCb7uTlWr&q$I-%UGbm+9xw6Aw=u z2Dr+|pqyQ_)ArY%Ce%0uDbCxjDDE45vZY;HDDc3dJCdQgaq=zg%2?jHvtE1l}uMXTZCI= zt}{cMP5U08@E_e8kj@9dzH}Sn?^G+Iq|PDNH5`mmyWMY)XjKo|k&-ERYec^x+H?Ff zV!`jzZuO*}mFi@cta?(A*!~DWLI>ofWQSwN{#}_^euOP8wDppEC>Cc1K)u{){k0}~ z0)2m_nx$_&YX!7c6wky?e@Z@Z;k}WP3yx^Y`qoN}r8g1xxT_7O8{-h~`m<$(vHKHZqt71v0cB|aU9@`KG#(K?5BE^bReck+Zb>9#Yil@w zde1GXwvOta<{%yqWBg&Xos_Ew4Wk`;11m19>4i}cN^4XTgS!~RHaaL`8#}F?((8I; z9Z5!|^axRO?USZfBc9%E9d0AUSUbcrsq?Zm(0UPzv_32g%dh+1^RN_spTHUV3ExcM zILYelmzR1ZDp}$Gbv6#giS*b502LP=V^2ZL5C6M6?y1YS(2v#~*J#;#vE%}p^P9+s zq0!qz^||AAq*QgH;uPdli*X}w%; zf#qnWtElz)(E-bI;cITF8QhlC$jnYMM*L^WpbP{H0wXvYl*Z`1O?o@>QN&I202AFU zJAr&*2|dRI5spiLK%qFi(St?Rvfi{ldWOumOlroJ`W`jCZg(AAm)rBS38eF`(^SNn zO~mt(_|I)Id%4Eg-|oOAadZ@i9+dOknDgi*#_J6|kOyr1M5L2$mRh>iXGua)hSJt> zR($IqB`HpK)+!(BFK)eLKef>m8z36eH0agnU78qUtEc?E=saq2KYd+{az6}V;W{UZ z36i7BE!jLhn|!B2H*6(C*y|+Yq#hzaAm8Cm2f zK%V}ke4i;Mr3SeKDephx-o z0426U*PFrKEB0Vc)iSQcM$)p-Di;E)ao|l*bxT;L;&KHMD0y`c1#Jh zR@+U-fAiMJzMwqma5OBfF>q2&^U7&daI^)3;PLK32}3MzPd-Dt{4{F;=o<+q!;9gER6h zR2rk_^Ld$bnWAswW_x5RMeCm7i37^>c$3zICDEg$iF|zJP3!&cxgdk(mvcH<+gZ60 z!TbibsbX0Wd=V#v8u7$+Xjs~ASd=A$B~Fj0XedZs3eWLSpA?A4lwk`-5iS9RGz!}= zJ1*Eq{}W7Pe1gX|UPsAR&o~Ua0@WQeJvJD-yb&ED!YieWoID|ToMC~LQlgA>86b=X zuLy@T611sS9|n_ zG+8j8Wc@i%`5HwpceO^PGG#?LA64qE^JHvv4s0d9WDTtS{pSFnKEH^85zDk84j<9@ zJTu=kwuf$;X2i1j6fM9qHi%d9%2>~=G*yWo41*Pazev^`i%;%ryYxBH5;jae@sw)6 zW_7emWt+|;(?RiPJOF%ptgIoEUqUb5Z5%ex+`cVePP;7kAPY_;$ug4{dDXGxifB_A z#^DrPbJ5EBPx#_us6(ALk15S_CFTlFjEYgY{Eh9niN+(2YX880~#@0kDh(qY>W&o}2_KX{)@bMBd?f zWV5BEwOl5B14leOW$S5NSkw40$h=QYW|%LyPm}MZs;r(=cB3Ir0nKOP`S8~r_<<`6 z3`}K#*@I;t7!VqmW`Vm!G>*$y6be+n(qU#}n?)f|-88I$z{Mk#(<5lbXW?E{eB}kcTeJQrZU6mb98x zKV|%yG+Ju%LPTezi0t$PZ&)&(ztv93=!1}X3pL=Z=X;$|ie}CgJj;FnUUV2xC_`k0306xUj&Sw$HulH$C}mvHr~`nl3m?d zJ5)dAZ;Zo73LVl*ZH2feSMLjQLQwlj)at?g9ymG)$ikj(X{`7-H`J@nPNb9-u z6VWv66N4#ahYz=6rpDJN3zRiHSDQh z{wUkB4DWM}f7x$Xnyjm~xI%woK|E+tS$cM4qAT}0?MWltIzvLFxN##KH$ZeHcVC8r z7l(t_wD>US`M;OzctkWfykf~JvmUbThIDo9NgJ|klZ7Q;t1EB9t}29}#G{PXGo=GU z_2GqT+AVA^x58qidv{}ks+UfrTF;!emEGeM3oFKjDWkcgo7uD!?;LxtcnC}GDC%?b z(!nKyQNPM5AN!R>xlIPOGNP3yJ{z&0A^|B+7lLAJ?xZX!6kFD!o`~akCA-aT3EeH= zn>O^3CVegACJmV8CFaHHs;m{_utv6OcM1}8<-^)jK&V6S6L5?@LN$-u*&+{08W8zy zThR#ReMwH`dHrdcuaCf^Ml_0baXS@d>OxP9F+;H{-i?7g9Yp9OyxvJpiikZXgofPR#GRzNd-0mR<5yCr zVNj0kA(H zetlR+R%J${`1gg8pdMX))1qO0G$|Y*N!c1Y<7+U;qdlov7-pry{q2(rXO#WO>%BC4 z3~*+CaWRY6(R2JP@U;RXt5s)jop4D#g3qt?;-;+fE=j%VUFQ+t_7BInRK=bb^o4)H zj%6!aUpy{5i`1>?PobtsB8MVLYR}vP!wucd@T(Q)Bj~=B)~BlO+hm4u9aZFoJaU2C zOIh}fi(+w(AFa>D(s^QAg2k4zZgWdvt=2rdg1aQys$T@Xf~TR2{MXCUF?}0bcPGoJ z1Is9BIDV>1X~P^i1O9n(td`_bp~D4Ce=Ay=uKGu=|Cd!3ydardJa>Dwq?Mok6Qzjf zkxt5Js>HG0xIm6gRm|KVQFpA-n)5e8=Iou9rJHb1Pk|>|wKEBqt9^voQXKtBJb^9H%1WG- zaSo5jxWpgm$ys)h?lye}7d0L>d`9c_$qYZi=uYQ`&kX)Cz1c+Yq!6Qs6{?~lxm-bW zRU%etJ8@s)&;x$IqxQ4FJ$IXCGm}z2%ppB^O=)AMVq(5N)k@-LO;plN418T}e)WEu zmhz{=QTLf}&i!<)k57vu+`cGv*pS)?wr1|NSxY8FVgPEP8nioFkj4GJ^s>BRjL?cVGH&y#4tx_VO+$5f1s zFQ@Mld%Th}!o_#f@J|+U%i!$PO^{abw_#CkyFHO%5i|sN%W6bRTwXud|N6=fdG71o zWk6sKrGOGh*(7)KAhM|kM&mgud;0MnQknt(w6Nu9g9ua?g6B&eQDq`y4<1H zjI*oJb!LCh3=j0*VACTgtj8<*E(u*EAZS6s#hVB(BA320=tm(&m4bO!C?>_*SLd!; zVQ9NDq`;sUnWZ2}s-WPU-X%&$$`eHp?_hOU>o6tu?hbT1guP7g;@xtj&g(w{H-WcF z8{k+dnN7>{%6F(=>L=SM(wdJt^0O*XjOR7qKLUSRyab2TLjph8`$=lDSukV)a+4K3te{ zo_9t&)^3nb;kUrUJd%z6S_!H#KF6?iHMx2@alWzuyFT z*v;rh)@(=6uM|wU7h0(h1H*{u4L`{AN-?vQ7$j%d$6`SfFmNT3lqPgo3HDru57>wf z^HV7re;Iutys@_-u=Fc`Sh&JMt=|cPcF2gV!YwzV``RdUtGE8FPuXjQK`R8eCa-H z_6)V4=*_P-g_S9H&TiJPJiuZcj+gyM1AX~E@^&9Y=eZKCn-n6BEDai%cYm%R4xymwqfHo?A#wIJO-0+W`{ zt#?<^9|10xf3@HxN#@w+t9+ehOHz3FrsQ6@G7K1@_JPkE+20-~C+vT~(J)pRn)W=-bM|H~H(enr5mOdn{-65@#Ckb_(1|9(x% zts=h~l0y>*hwJ|SO-$7Sc)<$wn>4N(`q3vTSx{YKJpUuM$)52|CQWA7a$*zdN?V!l zq-RZ8zv9MnmkOw2LPvh%CTC}FjFeUthg=#=O0TZxpNE-=h7cZ0%^{?jyH*oqPs-1P$lK^A#0Tkf9bO?e ztM-#U=4d7Q@zi}JhUJ6e8^Uo4T;3_UDSeARbp(fpQR6W8mKJ;;*SS`E064YIY?~;$ zW))efO6-bo`6+NqlT=IH`3geYLs4WF_1tC(>v+Yhn+{8McRgBwC&HjK->%M14^uZP zg&`GD_P!-Jk1gC6_xnNk^xJ@?;Ep4sX8WgOLn@Uy|HYHgb2WGaQxRWxL7RN>ZD&R- zEDifaCKpCEC<_O*DTb~ywT7TCb#*WMU3X76wwv`D`BJBDn1?YhxkrMR8UEDYRn*V> zCasp%N%}AMbR(3mlUFT$9f_>eRSQcwPjC>GM*9V1c)wvv}im2dj)qJ zR~6}w10nlzgXO=ig%wN+669VUuZ4v<6R;Zr=-(+QyyKDW@P5V{5qMcdPZA#F_G+CR zh@Q_derE0~o1O@DGN$o_Z=Oz;!k&V_&EIqzp0Wcy4_QNhmdv$x2M5p9^=q$a;-zU* z6ucvIN{hy~sGh_N{}`E3BWlxRQ9&D-D(a@iqx4?{lZlgduvuoQlyZpL7kR!_Gxf5f znj4Y_r)HQfYu2ZU?YqgVj3HUV8@;_+@br_cZq7+EAb@p(b7EttnTJHcE0mP}%(|W9 zu=lkQUUt`;Q;LPKfIZv(s-z_SG_M@k2b{MGwCVtt>}I+c@>dyuRp*pAUT2{TGH~!b zHuw6QfEk3heB2&I>bAJkv>v{+eH-9hvMSX=zz1UugosTh<}Q8 z`_*e{>-pRf%5gd5A8^wix66rSpQO^h*?c&3shK}eq`#$JM=Ys0hQ6lToBf0CU%KEF zoHe=E=`R0WS7N@>t>f+;vBzg~@zkdG{_FU`@$`1u`Ii4QtW65Xm(%L3tOZ5FyU_Gh zE{2`3_8>Z%GvpYTjVZ%lVy`Z>Udndc<;^l9%B5J7eu;6@4phs0Tt zX00cNozFo7SOyklxxH~Ia;psw1jFw&rhG!F>m-|-|TToUMjiZ^T zyP!FW{*&5&nw~>T*eB213Y%Yz<&xdVjWRUK--hnF7{cQG4x&hO_wg|v=n1+CRxeio zJ4E;vDV8|3tLz2#Hfdq16LHOXf?c^;&>_(@A`s((x@3rzq!!;-YFrQ^mXW^jecC1b@~JCRrA?pV zz#FpA{SJLQnaNF)jB<)H*^msgP+oD#&+NJQ#xUfU6=9o(8HW}ybyBm;c^h&%^rEX$3A?=!4&sgCtraoGFrvRDBZu;_uT7$?I zSX;zo`2H1|FC9`C>HK~#+4h{a1)5PEtd7)`)zSNq!6u8TVi8=4pm%Ov1qic+_ao+# z-cItOuek87XfH)~9vSNke;clh1wY0MVAchh{fQdQMxW)`SbsTs%_l=Dw+ zD=)q>>-U6!+nc$f4W=>zhUzhL-$&e~lnNV&G%B{tPhemI3P#@4WV&5ymDSFB4%7{2 zk9mH|wx#}ZJq17arE zp3%+Wu$*uhrx{=P`hAFAzUe(VVT@aRU&y@}=qdk*()*a@3k&3G2dAlj3QACcAcho? zR|z?q9Y6;Agz+P#g&Nue-p875IaqaODl5{kb=qG<{V>3%zYwjppdYCGW-AP(b1w8t zRW!1ZB3wS=G$|SrDrKqU+dGudZKYEiX=A95s#97=Z9$n~ts)uxUAQC-Jt%QPjKK<1 z$IJ;Dc=>PIwru-wkffS-^P(NYAFZ`5BCvCdkIjVN3oC}8RJv(KSs}{g@C&yX;Ov3? zj7i4f*aX8;%dWYYEe!#eB?+%t)$h^CS}%YI7D~>;S#lW9Y|>l5@9f$ATkeZQc!WAM zDSI0B^>7#Bl*Y0jSM$NHO#_`B5kuiND(BXS8~fjMFgZ@IjFsVFr8s?42|<|*OT@Zx z8L_2wmC#!D;f%}EDVaCbuMh<;0< ztC+H|=+@<+Xt~gfrAQaSnDzt@@8CxxCVH_HbRQ!K-#)x?%g~rBGAaw^S6M04ydCt7 zl;}?D0RZUw$f_W;z31Tu$9&VIG}6I;@KrBG+M0IOK5;0d)2!K~!1ebnNz*Qa)0z~= zE#Ed_%5`O3-EEgvsk1w+=C`Hhl<$64y5f~M7V4=nac3WgBr)q1YhdL2)ju_jz@6tM zW7kfSE4&!Mj=U6yM_@|R(2hn~UY(Ft(1I`o8=IFHfK4G5k;hBW{)%rpu|VH<2twdP zN_bpZCl+3iwynoB-|&JOlcLm&j|gmS$w;{wNRi@;NXg@RXC=+FPE>sXpBs z2GBs(;~UytQ1aR^ktOo&Te>b$=XIVLG}l3xN?5os$Ia2tMWUi?Cfe}eNs>y9<46HOIq7*M~q%T-B)|Vh%{bw zqeIFkEqa~UZ-|Z#4dt+FbhO7U1&Sznlz!L~y+1w>taEWtD%1l(x}o{*jtj##3nJ0G zT<|j11e#{UuO{Ln(`;~o=r?l>sXQ@F^9}f>?yjH4Q{jL^`Y{*hm+2WO6n1;Lo_4Ru zeqi&+u`Uuz!W|j5VqsyrYim@7)FJ;5Li4Yu3@3u%f=lOvUkrse`Y21 zzH~;aIKCMFgKc_ab^bmx#?KreC!KdyoX`MT2#<>%QRuhluzgyQCN7U5L#dV? z{QK?8nlsi9fU(fhgRe{ZJJ?6I$of?R8(DVEN}8h6Q50evQHa}2MamM1eV;@+5rI*ZUG5Y_tZ`?*OR zwu>#+`tPXD|E-(n7OKCAROf3?$^r7f+Sl)-_wOwa&T1onSzHUFE2Dk6(r>d$p@X~; z)IS(FI>sNPlRPt+heyI3j1APG5rH181w1M0+!toKOWF^B&=?KJjnNWIIsraa<$UwD z$H|4_4v5`=^1*Ls)J9 zD<7H7Sf}$rE2?|)?v2}gBhxJ3Q5wYe32&)lHvC!>CZM%0^0IFTK`a_b)a#Dk;$nTU zB@`5Z7C_M>s5RMdo}VA*WrG=V2HWV9shjaM^J)rdE|AlZbMYqJ_;C3l>7?*n!=g@Y z=IgT18Tc|0v*pB~-dnhl*^)Fw?)UG`4xwNGM+6|}znixIKn?hG?n4se6X0NsW>M+H zIVpJ@F8i%P{`hDtL+Lt?px|B_T`euGA*MJ5^Vq%X3O_V(Z)~Ssf@P6|Jk^IuDfo%H z+FZL_q;~;BCB^juPW9CFUx&o&U*);Xp}BUd`knJm0%Ise9ZgHVO3RHva0i0}$fD)V zN2uPbB@loJ28$1JDcH{A?{!#YAsKHCao3N%sjNM4b#ZoRa^2S(b^oO}<5g++3ne{= zGt#w^)l^uR_ zyuPKEM6A%$m(9M+VeHc+zs0iM?q>L7-|CF3DDEi7_Q~4C{vXHOv{IM_)y-%yEy4-B z)64BFqljQcM1GTE%R-#g$_9=13lfy;QRW*(#hWL|1Z8eD2CW-8k%0@|JYk*V+j!du zr>bF=V+S-=^O7&hG6HdbmNKFax?*m8is3y!GS1_0(B6;yq-c*;AeOtR4Q(WYfV32%c@0@up*Sec76-;T!|HI$lB4(h%W}% z@A|Fp1zHaRAVMuRYf`$9(jzr~v8updLV)Ndp;-Mi;OOL9RWKMVrkk->|p3|I3a_%FN-p8vHQ@etg z2m>g}+E4JMJzSFx#KrStb&oF^KLs2LfVvxQEM~c_H`5V5v0F{Msfwv|mk38^?xNt3PVl zz(B;2z{Y%}paNVc*V)S%qA52l<3OnG2z6#E_)QT{O0NA6vh=?flq~Glk%zBHYu#)a P{?Y@o{(t_LewhAWgLMur literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/iwod-g10_325x257.jpg b/3rdparty/libflac/doc/html/images/hw/iwod-g10_325x257.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1baf2f89769ea77c2ac49f793010374ae3d9c7ea GIT binary patch literal 13591 zcmb7KQ*>p~vOTfgaZa3c?Bv9@ZQHidafcn-ww;cxj%{{q_se~6jQjs)t@X2O?W)>) zELDy9Z{^<(099ICN*n+N1_qG)62QM*0G61il{o+)CkLPb006LG{R{ur0U`hhaPa@M zFF<}ZC|D>cNJuDn7#L_+M0i9*1b74lBxH0{BxE#X1O!wpR5Xlln3$M|DA+hy-*C{s zVSf9M5ip3acOaqQprGKsAt4}r`+wu#ZvYzXSG-~nU?c!=G%yG>uz!O9AOHXc3Gww6 z{{;j93>*>)8WslbOD%>90D}OBgn)*Cg8T~mYZw>+90C#z3Yvr&23-giL&?Y~=o@JQ z92tvnKBlsBJr*{rh;eY=HF@IP?hOT-=&u6RFEhAbe*c62I{C8mWd`a?MTz$H`0M9< zbug&^(}RJdkuXD`3y~^eusA`I2^;1ATLU0Md<{c`Km!N>UQ-ew|07wDut}rnlK(4? zip-l_E5woAO|zwfiGqnLLa~Lli=r{yAL^nqV5b#AEe&w`gCvp+Wk0>yQGvc{LHZ+$ zl9<9C;|zrkX~fZZ{5I&m!6v}$f+QxuugN*rq(4?x6vfQglD4I@r!?q}Zh}#!aO7|l zIl@wkzkUP(|9FUrkOz?mQS#883vwSok(4R2h@O;1XV)x?P@dUJ)Rc-U(#iKkE3#($ zxx?){dbZI-qPv3T`&c)f?2-`Y#sT<60h_-hBl+QID&dHwh)oLIvVY|K75WNZkz<$J zmOKf`b;>QC%aMZbvP>$d!fBC%ZJM8q#3W^`t;=syZqI%BJ?uRt3Wmf`aK8WI6iNOy{dxM6}BHjqsR zf`K1&C(HilXcWzf(5ih#F=*ndBRXagm8aAs+Xpy2N=e{Qp}UrF&_sI5c6}pn3f0;( z4hOTc;inpM=^^-OMKj(nZC4;AIJN*sQT-z^C=xEqRZ;x)g~BoDr3%9(MiFTmh+NT? zj2K$fBVLDGv`RMWqzqCF`XOG}rGD>E!G;{*M^aJYf0D`yFe^VdFqLa3fU;8Sjc-rB3dl2|( z2CD74G_-W&8n?$#rJM7KuOontsI0Lmvbs>g`Dx z#_+d(=eamFNdAlxJ*mrYe=ihq&g#^QCsjEufGnJ3zZHzGN$b)B1a zxYEi*F$b<-6Xj{XW*JN5#)qMh)GnH=m{^p#Y&!4ldHJqYwcLf$ZWFFmASwes6iJanS7}Ui^?zf z2Y|!qJe?`Tb#6z93b3BW6{jd3^|E_l#6}u)vT$x)5ZzR0NBG&w&qV*=)cdW|_(mk! zJ|S(`yuu8lh9CaN6DruQ`PG%%K8BjAYWK8nEQ3>LB#6Ro1TH#e!l;GbVZlwSD?QVR zAUdON!v?X;kKGUPygXPv6RW%AZ*itY>8AV)f#tySL;oZZ$1GMuiFky~>55xvxh28H z{nGwut$u0cQ3Us^odf#}wr4v~(?ivWZ?vVdAeI8OtZL3v(+9@Yp2%<#)Ti7N73OsK z(gjkoyKwec7JVg3=UaTmW{Ci`1C?lucI*?&TOM}h zux_Y`O_f-@@0`hBA>v205xeTUHOAtjENMvkS{OGLUwuoBdWSO5-f+o!-v^1Vc-&-4gYw4U zLUC->QBESkk^AQW4-73WZDeWbqr)EAN!xPNW;bW!5dR}wBVw93;agl#KOV7J7ee@? zeMwIG+Ry}kWCDIwIDshPz4vGTG#Vv9iOwF)4z zx=VD-@Hleqn}Cn>KY;RvY#hwc8BbSjTzgYsUp7Q7{cFY|<8Y%HpG6n=oV2e(^s(1;iyHT<{ z-3glCRBTlOAJ3oqqvB|qwc{$nu}<|mmLc?LTl1r z#6+@*%j+ILsG;$z&_bYtJ8g)?)=IBfcU+5vaZw1+xg#nVX}PQik;QUWKK{IMi0FRc zW1yR?7rYe=fwqcSx@OVsJP|(X(qY;(`duYZ?WxnnmQ%^2>G@O@CtWZoigz0NgmKisHE;{gZZ8ucCHD7ibW~#R7;4p9sG4O zi+c&4ty_-wRoagSt0=Jb^qiCB(fMvnDKri4H|pZPHcH_Guubd^B(Uu_cwRzP80J#fK;Oh7|War_hbpy=gphJsLe@_|JO7o-Rni;IrByor>hryi#kTgvrYCaAyJD^<=y_y;+o3Pu6K|&CBfq! z|C7zLJla(a!F6Zl43(4n8FC#z#x^MSz*TpAi;pQJ1hJ{0qY3n#W#4pi|G*fQ zq-bgGQpC>q4W8Ck4SQ!(FDu_cN_>p!3P+g`??h(0e63{#?z#!Bk+KqpNrk@^{Pa>j zTk|5=@v^@@L7v4Ei8N9W@x=K9k%bcpA@H#G^feSTDSdi5w4w3Y^h}`;t|qr-l5QJ? z8xlA99QaoH!S-PN=vAXFobK-aEU?ZR);0pqBV_K)D|9P8-jTYbqSpC#QpEfFO*iDE zi?#D5vbm;}GhsLa2j(Mb?THDM4N|iJ|6WE$^BWxPE3x2N&T9-Ri(?Qrg)7o4iR`@L zuDxN|Rc#|eQ`E#IlSBC02t$OmgYUr&@P9^OT5k)0Pc7=^5~-iT5~$Dz8C_IlcJ|%mez3G0O*$|G zH*$iOmVYPTzoC_|Js?{yhAa9e&*Z2OW-&hIUE{y{^}p&~gv~#twdgrvg2i;^%I+~J zTxSwF_elBjR(0x*fFrl!m4L!|I|WFtKhWvhF3T&4$jqZGH$)1*HchPSv? z>?TY`OZ{(3#x?1&lboJ*l=QFyAa6iZ%g1tzpM8BQmWHhUDbrOUM%*9(9pxZkJ5h=M zjoxIwU=lqQq-5q4*PRk1^1D@yV^p{k{GASfemHKsKVK`Bflo!M-R6InVOU_ zozcd>0@U*tDV*#*QZ4rm#-2|RBJ%*o50g6_-!k~eCEjH{P7#`h(u|xEzFBDoNP>)j zfnXT{)h{Zw;P%C3IEO&ZaR8)dv=pz>$C@rj&A||X-~add);Uf+`M$6b8&hZ4AJ%ZC z>Nb3z)5RYG74m&^pAA`HaGl7x_FXHxRdysu*_;lq6QMS=ac=4Nt5>0Cn~N@8K*sa# z2;t1-=;{Dr9}uaeAbWGZ`lHCFe(R#)uv@Ls0XCQR#FoyXp^{QB9!YE@CRGDK6g0X$ z>K_FG>-c#dXNu~MF16TO5Y&%yNmKyMDdiFX)>{yF?i@fOxZMDJ3k98r+uSChxubq? ziL{)dPGiu2-C|yeBL~bZTd7|uIeqgB52Mx#9;0CS!mRnVvnwhC#%F3m1;n=U5IJOZ#qY8;- zuu6gGF9+_}x4W>MYQ~26+Fds)ohE83jVCBN$n^Z9f|-}`%U$da8=xlL>X-YZW;Bd> zw>)H}$mA9cr#SF8$#F5LFq2cy7B2W4 z+$q5({7>{x2%ewmT^e&8uP%sJMkgM(y4mY8q345T*YDeMuq^Xyv5iUAn)aIeCsIU5 z2vb@1?k|TqEP4IR;oU!**oi!+*kHtO!@T>ZYSE8{;Rdc4Db z2Q&Kz01yW0mBjlS{M>Mc1RbtSPr`av$|Uc33b;ePgAb`*pUH}s2>d8X^aw{bA7m$6 zF0eB_e88x~@*6t4l@pg3YOgSvxM99`Q*hfNajD+qd6wVOcGYvAc^h<>XW3bi9#0)=?AHe!Ez%@b_1g>B(ms za|yTpllX_lj+(~~OGniw4n)1}hiXu-sO0FPW3x4&L-WUX;CEgz)s5!qIYZuJV~Tds z)Qbm3pUvuwgn|64mso9KXzdvr|HP5G$Ao4pl8aZE26rY#VG>tEV^I|dg|G#gusr6F z?)9~?ZTE_<;r(Zz3U>Ro|(lSN>Kf-aj^p!O!WpMH8(E5%x-^H}c0oE^zr_D`yaW(d{>BUh>HGsA3egrqMx_AoDdQjtdoP0^Q||Dqhje3g zUS7#K6y+ajLR$2Al|=66AhxHZY$Sz$C(VF1(a`N)7!tDzDJi-WS^n0ZWZ1HZbZF*D z+rm+cQM+NmXASo+DXPXtoYagy}vZ3Z9niG=|(ssod3)`)q5gb^2NO}aLQR| z@N{Wn?IWFC6|g$RbBCVHPk+CtKgcrC52&zGc(dPB`P?AtVkn6@!`bigP~yA+U)GSS zx2mU!T7`5JebM_wZOI~|TUbo#XvwdWcuUCa{9C8h<+#OsrOSB!kk*J3W&53xpA)G% zVlTjbMp2g`VEj*q!FPAnfs+u*NzbC^tN|4{aamLp(g57o);Z^g$Ih{JUu(V)gx__D z(c!QsR8~wGf`ZMwLO~NjLb(^9G0eq z*>k-bY$v`FQK#Q5DbCmkVQ;#AwRX>H9yx;dVSUe@MddA?u26XjA0BJJSK~-aTX#(s zm&rI|aIX-bWo#K`?YQY#=602)=`Kt{b!#Xm2Gy^cDyOG(6tZ8L6u_(e8h2<|Y|POK zVLLo~XDHcRlod-QGil==1TT&zV!tW7kw?Fwp~=v<)|G&-vXf=NbMB7q?q+MvH_&mm zcPrS7LuvSQ7>HonQ>{uAj~k=tanEJ?8)w>^LZ>i~pW~cO={eq(1EbBTpoLIKxqK*) zJTQrh((t@LJc-`Qu+Lcn717u^cwN5H&uiD+6|rc6`-1CwOA^u6aZvtKcH5^`CenY- zgX8Edpb1#h>DnP$#Eku1d~@lv{UGi>y1Rgxyi|`?_i6DDFz3x7u?tO~`8QqWhf#Cd zrdItyFpDK#5aC zXhy`4*&hig4AjIzelj||TQuty^cfeL23@g6>XXy^wQKL#(=Ts4LnR^+tRX#coK>l& z*_}r^OE3M%_)DrfaFb*-^|^-TlBea89Nb;38fD}CatLQ8wU2`g``$byzywlqA2DtUPIO{3Ny*XE7I1yAu0?o} zFZ~>?wDpuQ&9iB(ppe;16X0>!btB<{YXjZGhT9&lGv%sYxRyL2I&{w)yE|?TQMmt{ z;Wl>b6?0ufUIn)R0&cV*yzT_O0aDdpi$*0qq^8IEr|ZoNot>!8YZ<%kehM|KI0^-( zDdJaUyCLEL+sZ|5Xr#G&8Ens4!`*$qo02y44z})W*!Y{N9X)N#3-710wr`)hljcM; zk-C*r1>J6{W7b&cDCNKnx4WwN(ci)hl;x30`tQ-c`~`afC{A6?y2BmZYaYx+pAwhL zC?aMv42(!x?WKcT~I{w(6x)K~u_LhiD;h+xG@CjF`7t zPOmS|W~XrigvkRv5J$ZK0Gi{rFksa~#pK{eqI<(HzihycGz_jg&sVD|zGg`aBOws3 zo{iJ%ilQY0TPL|^V}elj`udZf-$wKK_IC4d(5)1OhtHG{bBO4ipj&pl1?(RHsN6?) zEcX&Izcw+u>CC?933BeNwH-EL|8}FTMSDUXMtx9{@Ys})iDu&Cb8%TNmVA=QT9jN{ zh792Pr8PzF{5~S5FyZGb*Q(v!G|9%sTn%8)(*&Di4Fc~|d28DwwqTD0 zWM(S}8MV(DnvdVtm}=VKkyhKF^iBM!VG=-k9sN20z@}=aY}mU|xTjI~+C(2?BPK$h zEP8V?wN5ww=;~@qGFVVGr{5Xm_aw6r@-W!<7YwfAZ;EIU4gQgSMntjo-RRz^a-V_3 zaLNZlr!H6GdomK_3ZQb{q&g2li8k$pF-Yl;V5KB_ZMd$ii!HZ7nXdSeqrz>{k{X&7 z^DftY+Gy#M$C!lvTX2OVu+t-9nE~;0?S;bX2hU78>#;Wcbb{W&F+Nk4T-fLPqMBwlur) zFTb++Zdc&o@C{B|CbMROSROyG9m-0qYf&RJ3Ddl#l1On@NGPT}TBJFZ)_rKVta^gU zoLf>T6EUep2kG>H{2$=OOW+QZmdo|tp|LfpkoCaUAUyf*PJI_PxBZr9^v zr^DJZ!s&>JY2({Cos)sp<-l_fqa9E>lAK6Tg=GhW>iy(JBdwj*7w-Iq!nzvq7oaN2-1qnlMJ7 zuq11Uvb6ZtU-|-t*imK8PBB2vj~iD&JjOwV^rn4qR-VnGQj)`7aMDF@#j=Y$icHK- z^F3x=4H_W+nxR zWR@3)3-2BOhqaarl8>URTf3of4b*S5*MtmmQV~Wt{+bh*%72XRllQdGm10cJZ0McH zGW3_hkK0b%v1YC53#23vv$m1Q>l!#hHm5&55}G$`p{6^*S|*BaWVnovil|9r&Bvcj ze5*m|gFfx}M+ASmVJMws@COb}(KNEuzsi_>gBy@7*QV>acX}3#m?OpMb{AXC%RgtFQ5{aKWQ!Pl zYfj_MUWw-~v(zZD?hNkuqN76vwtX*s z4qP~CG0O5h4Qt~l{n6%6x|^REM-au4Yk{tz>zt5PqosE^K_Zdab{O$q=Qsn|xBm9< zJYe4X51>=~irHwERXL=qf?HZOx!MRnP`7embMX7x8jUy!$xDwn#Sv!I8?{8sj(k}` zzvO5CZ(ht5T|75}Dbhj0!ZO`;o9ASd^RtHGjltb1+R))m_Ch|~8^4M-1oP~Z%OvJVJ*zpuHoq%Am@mawtAR@lJG1+EHitZq7@bkiC5 zKP_)I4)#tQ3Qry9J~DkHt&j!wlAa-#&NQ-RUr5kY=GpTv9c^5(zb}7iP+EL0LLg4N z-9OXA4qbERZnjj<-{NKo;IGh0kbvmh+p#E@8y&w3>nU%#~3={QxX|Dstm)2`T%cKB&#M{Af^{)919~#MPXsu zP^9t5qb-V2W7=}Cnddbr)8lr&Cv7OjOPaeS9#p6M0fg4HzcDNy{JH-W+rz^KLqDw( zwGQhly=1;?LI|B|i9vGyvA*&VhRwO)3RHGgrdzK?N6s7Pg4}nITe#u`>xR4CIbTfe zz0Q@{N|6P4T}8U9o5kRg=CcfML+gD!)deHskZ1f5XXqZa3~=-b*}Q38SVEB(D-%gi zUVV4)0e7FMG*Mex3K(g^mVl?Zww-ayo|o8Gq>|%0q8BMT;iGRswQ&op|(_A1J1$AcODtPKyeilYtd$(CPRSeM@~q z(+%EFa>aBof1o_ipG-+X@>F-U=T>m3L#0t$u12am?6}XsXjvryN*x}$EGu92&jkaJ zPsVFyOC79oGY?_fGjokK>>aPfr@qRbPPjX7EjFQV_!EBAZ9TRv`7znt)&nanmv-0D zD2>25gp7isLH2h5QeRtd+)2k3^?vUk-sT^B-E*bSXOb12rS{YAFwSp!^v^R*t+EHs z(9xGw>`#ERZ)y=mHxgeW{hsBotM`x- z!*{hC+ORsTUl>kO7Ti|u%Bs$vC7%=hF0rOH;SuTUh}8pna!PUngNjm2%tIO&dv>|g zVDBv9P3t;X=T*6ywJ;Y*16*yLA+y{m^=bYT;WBhhy{@wICTnw}H$EFWHzA+;(Xp)J z5|il+R=6>S%}n)S+ZfXGN^o~a_FqXB6YOyb57o}R#ru#%;LdG}^!W0Vx%e6N{^zZQ zCp5?L^ly9ND_`{BI0nNePCW!fRaMoSKfn9kP4Mv6Use!u@e3wOTTNGJoLj+J%(A2+`S_O#c9rPn~m>c}xVzx#W&_h<&F`VTmc+mRIdamX-p7=+~!l3OswU zv_VE*2n4CDB1%euQu0=RNsGg@id>xu&jVM&`McIz?JmpqZ7as!d2DeN=(0x7xIL}P znIzOXkZ%P(S!Z)v*?+N z*=cn>@k2H-C#UjNCYlMAq_mgVqq=uHY9rb{OJvx7n^$npDkCMTy4?fT?RRkI4cbw_ zZTqlyl?Yx1I}5*dq`tq^8KJJivRX}6jn3``Um7RIhsAN3*&xo#wJuwW_eeJ0zE2BD z&80x`@}F__h(c3aOA|Z@?WJhw*g!7^zImdxdyk%1+Jt-TMfD{uqXJfr=A}N@mP2xU zY-YS@ifQk%HOe!}9V9nJLGEeL3RSB9YZ>6l!4-}u?^;M-q$8jHGPtN%Ia8?v9>db% z&qQvg#`U|oZo!5!R;sFE;&Q@UESZ4?*tzs~2kAFXYw|%(v>2m1ODpE~wAldqy~yq9 zzXc^lesr(VSjm-d-(@^|&=fMu44Z07YDzpa;8tv(i-^+v^X`e`U1>#U(3DNSA@?^H zp&R{Ko84~`d?Mc#zNw`g@M)c-(g-|eAl%0_<+k*xvO#pOUsNLWY0W1NC|=H7oRLwX zvTZSf9&EE->}K}Dqr+e{bm_77U|$Kzuz$52+G6yRKk!0t`2;#%Hb!yA0QrGz4*f)m zN2-f`WO|$IEmu&(m)JkU}?%ffGsc zwIfb6wxlryhYu{!zfKq{j;87T^11NC_pIr1rCqQnXHxe}KgUXk>_xmU1~&9B90my) z7Nwba&8@9LL@7}TL)8%LA6WTGZ9>p!mlaEHYlr!8sd1;(NI>76&v$7-ox8Lakn z@bVz}1IB-Ppr+(sOD~I=pTJCWv*!iFIW4C#8t%3lk1R+5^&JKW@bf=%!!v&!oWg$K z@h$URm@`z5aj`;=ripr*LkVF4Mdv3?BCLSU906`RXu1{@?{M>();=>Mg;&fae zm9WU1_`t-D*2S9t0g7IJpWaImWCC6(-D0yAW#cz1vMu03%MzkkQZCdV~#MbA}c*e?F% z&N@HEtdC$meP(TSTP!;}4)IkoQX#j3DBXje*lxp4b<%Ae;B>Y(n7}ZjDJS==7&JS8 zs^{G3U|PnQDF=Uq2%xC7XUoV;zSQ(53U_>BP}$XVwfiYP!Cn{u!e}SY+%6~2Ug{F{{ezlpuryn5C(v;OLcM2XL&$;g#@ysfYh|m z^R@uwZLM)9=~S*jo!xS{SRPNV?Z~Z-!Z8!OeU7bbUg%7O;@FJX3>r-we$9MC6Nx$< zJ~prpFte0ZZqF*;>XyNfR+ClxsbOwt?@2YkV|u{?{sAbUB$`%Lvd}ZX9S~~Vsg~H) zI)+dud4>>bU!CmId17G8|7N#|*0K2qNSRo4)IAN`XKqa~uRpLRXoa?$imKru)WUtx zl$Bt()4L|jXet+P)sSOn=ACjRQA+Vb4nHEa4np9}45r^v*FhO6%`c$~WbbCQQ&cH0 z^OLRl;<#S0y@3|LGfAG8rV;y2z; zdj-H`JP?qDCr#1+LQP&tYHha-Ng+9ziuea%q+kUm{FkYIbLY!2RAXpVw7Mk>pId_(eL^VgL%=#{W8%&&C{c% z>jgZ-7kIX|s#3i=tA^r_B1fx`x|gQ791ZZ(^P+G#utHkBXXG9 z5n&yWgc!rIz@s+iBMaSV&7-~9{uS%%5rCE&zP)(3uw8NMHStyC?uZqy0LuahaWJ}J z$uwqjBT3Dk-ZT#XmUG?Ui^ZY0RA1iOyxXNWcRnQ zb0|zBuA83xC0{1T(Q4g&9B=oipkQMxY}|e=Y<*F$bkK@Ifc%{Jq5?6Sg1RQXesJg3 zb+#7r!fNdb_WUYD0CHj`suQ$O7kDj%iqziKdmiumyQ*Tk%XtbD=SOwr2s7N40flI9 zP%8g-@z7H(k47^>Eb5Xe&qA}xG7oZ2H*q0LPstN&*D>$U>5diQyd-M0I1Pd+J*b> ztw5_;Pcpp*G?n#&UMTkA3EA2{82ajhPJDJ)I_8{+3o8<+h!48h-?petg6^UntoKi? zq6rx*u~7`W0hqnUxEy-9_KtvAlE z^fE1syr7gt)iDTbOPW;;S+R9CbU2*d1F`;mO4A`?Cs5*+hlW+R;}5SZ)X*gc&%cYN zr<{d)03y%7acm3K7tNq13U#?r%_9NcT5xC&Cs4-Fm3vU(#|eYR%=nt@z|h9AMkIGe zC2-ir?AR+NbT=fgWy%r{;e@WZmyF|*`|8IAP0hrrcyLtn&w=B^qxAUrr#rU=-`3Y! z`F`hYLc+^i9HF$N=8~; z3QKk**JFDXPZqlg=Gc9c&o@QP{YI@Dj4VL)w*XfN1|jDB$8JqU;3!ClzD*FOUftJB zNL{lF6K>}SdWVK-vCW5&fB+2A8vaI~^wDsv{qT>fR5$@k`x9j$N|V{h(9{y z#H$vssO!h{!IRCg7}GL{;g5xxA0Gts?@Q{rO~Yzw5NavR+#a4oV+Xv14{(O8q z^oJ*&55bBu6hL+0FGH6iJKiD|>oEso1!@k<<|cj~0|kTMEb7=PmZ6lG;q$xqQ=ga6 z(A$#_-zTe1+i^$ByaMRE=&Jiqgho7VHRjoi8I?7^D}2(>qr ztl|MbM=$>F1x{hNMu^%-L(~_Mu8pQf_KgH*Un&_rs@O*y7fobr4*e0e7=v(af9Fv7 zI~&A79W@#f*@2(MK?2BfyHVmvR1`c9lUrQD2>nn5-ezI~M%zSuFwfNz`SpgQlInS8 zsi@^(ow$7}W{My^e_&D$ghaM|VB*%fcRX3X(&k53jkWo?$XHY5WdR5Fp^Ucsx=K}u zecOFdobWd0TR)>%O>OVfzTvphxh~8$;E-9`ko|OS&T|FBQPhz^psDAWTid2#r4Brt zuZUiTP^-xg_ zrX=x^YJx77%jKb>fJ6oqv@R%YhT=_VWgU`MIpmhnp| zn(%klylqYjsQT6w%+L$0;y@8HyAr|B&ocO{a!rAlG>9v%t8BKHXNd0ac1JLinnXt! zdyMQsg=3h74p4dGb>8LBKt)-mXj1m#j<|dwj*VBMIZnIKv3Aiea^&0xg?g%~PTDu> ztuHo*O=zO1EqWQqx!4=_UeWzbk#$k{EQSkI#-g|Rh4HadG21w j%a*7h*(7#GxKo*za9!OvzzyiSu z8r*`soO@o~d)|HTo~qY>{Z(DnT|IwS|2@;w^UdS@<0{}OLpolAs^`MH3CpooN&tgI{>|0}SPwAxD@WsW))V76tVFtS)+U= zs&~@(&j#&(SO@+;hWHO7*f_ZVgaRZ0OiTCV0sEhQp*OI% zX~hjcj(gY0Sx%sjivWUuYM3NI5`Y}w(wP%80ZU~Q+q==?qwafmb?;Hf!TO=-`weaCpOxmEZZ3N?*2Du`yL6S?5tbHP}{?#lx_dC zhuhq`*VDRC=rO3l%kvv{^PNUq7A0=zj*(aSNrqKS?_w#`MHzJB)|%Mgs**~~KZ>e8 z6~S8k@BI27zC$ueg#wLoPvVeCAd9bYbL0)nUatiTS+5Hvfs+-Y(w%g9o81dPYWQZW zp>H?+DZnBfW2Nr3+hvL~3o}c7lH-Ci zU-QJ);_8%hx*|(MHGRof=e9m}q2u_Gb**PvA`@RmV@tnjNL0xoBtMu7OFsf4*0DrN zuUU(VqE5sqgwv5fS>CUr-+3UDO)`He3wG+} z>V7br63;>_LNc4^0Md@cOdGP&VYdkR=GJDner6Y1Zqs!R;9kf95NDZ|%K5O{^U4vP{79 zBBePg#qzONJ_l(luuwpmg?nn<&!NSD=*5lDT$@g*E`34NTwABB9g&ybh%CS#pa(lMkRwp$n@RgjiY_?NNa9!L9 z?-`r){3Af~96M@H*rY0F+3DE0G`SybexS=5ZU*5r+Se{Q={@s<3A>HSa?KT19Ga1d zii@Zz=b&Fc0+PD>LkiSP`zU@pRnZCiCWE?uA+^uMym)v&P)w?ZN%orYIN78zMaufx zJ$Wx4yPV?N2~lH=aX!Q?`J!n1FVZaoB%j%YDUJ6tFP-HCTc(i$T@C2Go_yCdx(hx| zaXBT$%^&iYZ~LEN0{snhbnjk7{(1z=%@$c}1adw}{_DYds^+UJ0%0bGd;Qp`ewUCk3KHWc*GCT+M&-V2s|5;?hB+5HSXFUQCUW;eXE8hA|Qg&PP8DTCk5AaxRCvnLMHwg!>{e{0f z{{l-ifet~v@Z_)IT%e1ZM%yxlgCQdC zg3QQYaNCbLsgYya3Q+4Me#5g5{`dqoCG<=|hR(LI_k8mkxo0fudr6|Qq|~^3g3ye? z%PKQ-R~ll2LCc4@tJ(y$S?)y!r6mrjyWEW9xp0EmOGd$*0MGSJLc^QmZH@=CqC&_N zdviRLw}rFq&{|v&#UV;vvDxddN7O+d##dQ%&wZeHNsMIRcpLG)I)ydtS&wH>{zFq) z)M0v%00)|-Q|=?2a;o^7#xwRT+@@}N_**uik{5N&eHnY{;oQ^m>%sIB#NO?LK81aB z7?yECF?^VBw^~o?zW>+k216sEkaz$=x+Af`I?q6|aA*0byHEMbSd;XQ@Tk)p z@=;9e=4b7n$DpbH+|)d097FZivKoc-OSOg_wT&A5gKa+w#v-5MAP*Z@!vAH4md&E? z$5CaX&-R{wl0utZYYm+j%a&V z99h`f!s`>U1p!nz8RUuDUDc*)!^9&XstXDCQQGB{v#7SVub^xr-yvGU6m5)FQ&koz zD%PP(VwddxfhbBLF=A)SuXz8$&jGV|%9o3Ax5_j%Ox5|Kj_@*$EFRhafs7{n)lU1L z{+=6s$I6AD&gB2Ie%P{-DT9IIr;d$X`lmRA$O{}5HVfa~b&Fs>1FrD;4Kdn>WH2a= z{hbu^A&(G4$+Fkgg#_E%Wm83-Wgx0p#g^<7u1==7%Z9y2SU>ukRi75>LOL|^k}ZLc z016w*p=xB$I0hh54Y%{Q7AXz4tQRz2Cq&79I=%nk4S4?+-qXPi)k z1cK@8;m%Qs&^7*W@Y1FkU+=@{F}`E-YVni2rfC^Ye`=_~8s7G9$7Gw}iLg zT(D^OhY&iXBOz_(8g&rfA}7V>k+Cls%{(*n**I9XP1Mb3H~b@Jpp|rk&U{(m4zjX# zx%R-^nv45@fzum!6bUPgcwVrYjK4N2s3&9=>pf~n9+Unw>X_~!Sid*Ne(Vw8(qeIF zxy3F76ql4otA03^GKyH{+eUl(Jt7NlZ-EM1NDH#Awmj}?D%gT!W)~#)@BIt=9u=1D5cq4I>P&t@Z z=DC&SG8UxS7P;2~jo=zR>s@J#7Z&Hf614yMT)FD3l3z#>wHU@=!V*OOud02vzvsdUwd>iPU{h^8#pW>nQhR{0c->C9DXAtU$3 zk|0+FjagdhIAMAT1drztP$j?JndEj)$=TKIkW||~g5EV_yT47%MJjpOq%6^7JgvAx zD)pro>J}2g3CB&-e3iuT7w3u;h>50vxJ)}X<|j?fsH`{1!8yCLeZew+L523MCX0Ie z8fClG>Qy1)={0}yy!OKH%W1m1inFOPUf@ixlrK+%=|-neW#41uVPNVc8P-R(xXAkEVe18$nNc!!iT>KqUi;r2M02YAAn)3Rrx z(MPjTsWPq({rTDq*H&A$p!XhPP_yfF!2Icr*f=MS z3X}p+V(b`r9Gz;{1k*kQBo(q@6na7$>p5K8cxV>U`snXSPn$Yhzb_OK#VGo(Orb8m z=ILJZle!ivMYt54@`jMx7%iE^dU{9 zML(zzRL&x_B&{8$cPO%d3r&s95y#hlYowuHVZTy3siCF#*h=-SNme=W`uV{+Zga_D96 zAgoKsw}UfWYxsS5tQP5%oZ<+YFQs#OA%~9o2_FAbaw2Vwq@hr5k&fWnuWXyb*!JK) zrP`>n0N^BY=;!f#PB_cd8He6(ct5vh8eiv_g|n>>UG|thC2=g-g!ftH!&;Tc*u(Qa zkkF#3PgRq6o=xi3%!Y;YO6^Hu#j*d->ckB5d%3qH%W3YxE9}Bt79~Q9`uSie?CMK? zyVr5u7axDiaw)P1M8Rn~oWP5Tq~NP*`X}Lu4D_b^>Bh_1`J90{cRqwd$$kQ)YYi@< zp9sv%NVa6q@4p;3FE`>63>I4WtKXD~U=7_|J==4E7|!q&j$aGxHrI^8@+kJ!98gCj z%w4^P3(PF#+A|xv@cwLR(s59@mf~L~tw>2m$ZqndmJ?T>VLb+hLFYwZ+$U~MLpv;R zZ=Gq0y?u*dSt11QF(+rMJOO53*>nQi^VgYdsKNV=Ef76w``*-|RDj3qGVp;L>C@dC8yD zI$e78xTdTVVJAED5lUR!e|jbKvzl%kt7syTyvErL#jrOVU*Xni;McsX?gc?J?zXKk zTE6D~c!^td9EY5HowY=pqlD3q;CJA{J*U|1*>12`JEQC79rjTFJQ%$}$FDgURKsA;uLMY*An0{Z$T?@Q&bIo`P zq5O*Tw*+CNs$Lg{kQ9+xC;>9B)&Zhy3=i>0Dmp*_XRr#?7fKjsHLJh; ztDz~tLYnA5lec-!I;%N!&G3s-&rpr6d_40im ztR;gkbLMcvTFuM((P5KDy7bgt9a6BY=7fK66JYpk{*z90mf5}BLbTN;+RUo#tw#&q zlaE}Z^o^9z=6Oln>`P~nY_>L09O)Q8u$u9qK|b)T?!)M$$AtQm6z|wWHa!y;Z?&Cg zk|T=t!jxujaG|9&Jh-&F!T>nC>{dy5-w(n;Rze z`+4$Wn9ZAc+}iAckzy#TY&TH3Pch{k14}t7*GKh8tG#bIeq99^AF7Oa@um&^ccqI@ zsk~iJ`;)qa%YO5(7bh7r6{g+PN7-nCcm53!q(DXJ0^yd$;O8SGMpEzoz9#?m{t<2; z&7q-QH3%wc6*VrwM7Cz$po>yAF1*@K%t`8~$Rnd|W7o5lL%cwIV`DC9MlI}|V(D2P zI&?_VDiM5P3xq(&^fMD}Bf;}KYo?j5)w8&b_esu_3N1u z_5L9^+%Y&h-b8KjvJqEtP&uaSO9y(@9?#bC8sA*r<`#c?1pI!>&f9uKS@wCuMb#&U zgQ{F8=%=-_I!{!ikft4tEMCkXqse8ZHfrp^vrRd@)5@!lVfTKi4_Q@$?Q7g=5y{bJ(y;!M9BQaU0J_H<~KER0JE@;b_T2L>g{O7<}Ni07r$>eKvd z*(?%nlV_FoC+~Ym#=t9!cGRS7c8m*jP&#b0dBs2#gv+Y2u7dmc*t z*FSWMEj2k%rnNk@9K%Y=4lf zP0&x;qc6o5Hotb-nhg{s=A$q-xO?dw_1xKdYc0}7segaU6pvgJ>|qI>$Yiw@8#e)t z%q{Fz=jGR595_K?7OZMN@eK#Y?6&C?x180SPG-ro#4!n&Pj? zE?TuWo|)Cl)T<(VCL>!RqMtL9g}RTXcs@wGO3*0X(D#f{&D+oCvT+92}On_eN+ zIjs=gILqLYas1Aw;$A3rF#qS7{bkd9^{#X?xeG4|dag@{Uq87#*Z59#)MHvEcd^1> zT0BT4{B9Y`Lu@y-Y%%yQikoJkyEpe^Zg)XkSHBOc0=DBY&oA~*Z>JBRy=T4VekqDm z#vxTDJ~9-Puo?9Fw*B`n?}4xVc4lsW&Nn|C=B%70Nzgds_dta@34GA7@AuA9Sqm`B z)Y~*l=rRqY(20Xl(0p(1UW~nP+$L_Kv8DSF(581MI^XKcH=4qx-j_K?z7mxT-gb)P zb02FJrO3?-X$DR2FSwTNNF8{&G?{kuI_yp@Gr&z}InTSMAC3ghyiDLRd@F-7cJ4w5 z$q31dJyj^T_Q@-atU^Dx&+^kkK0GpbL-Ioy`)g1GE(F_Dm$Xhco3j+WxwWbXBYexK->8)GJ+!w7%t2(DEg+H_C2eq`5g*HuT%m z8zIwb%N!%K){DlTzj^Q`v7km-gUsR7Cw%Vuc?QDX^F=o%6%ulVQm6uq`&B9iLfRTU=w$$jlDZL z{-lI>BG1Cl0qJO?#+6k~dvIAD*5qXpbC8W_!XalfDUsx}1nCI!P0DNz zCas*s{KTf0ROA9WyI{2wdf}afcMFhzHBKil$rXkT=vOh*gJM^{cEr%gU`4yCSmB_B z+mO0-PH6k_`XXe5YZK`UFaEwZZ1MJ+pRhKJE|cpdcu1_k~Eq zu4HoRl1m-CH6hE${+5?S5_WLxH)9@DHJEL7r?vl}zi?b`>p z4;ALqnm%x?H1B-+it%X+5VM+_s%4OedLibSlfsM78I06ihZtN_yz51UxzRwy*HV{^ea zi&Bc@DCP6Jy1`_`2=Qtu&{I1(j2+3@Xl{($^U~A(`}&-8uB<}(YVsHNW`w^r;7so5#bY&2pZF{ALspP;3(nikUJ z@vq)f9ZLE?^~`dp%oX@W;q{?S#oONjhfk5|ddE9C(0XYpndybU0)Br8i1LYtcP+iA z$Ezl@GXvV|i8BRGu9Qe^%%~l{*h3eUe#Ic1a5th-XuJ#}UE&k>zX`H6e^xl~G!$&s ze_46x*`L!N`mcq5KS^ccDr5GwF#OUm950qbyv-9K(xaslf3(kR_NV)TkaD(*rNzmu z_1~sWNZ$h5n)ea7(ThEIG>+lG{_jU#ogNV=J^)+Q!c*VtGF z^*LQi8JeP;aJS2uM2(Q#kHc51)eD>C$coI*>35NfgT!Av0tWTtbyi%-4m{Y}+>&^f ziCDLI7*whqb@nY02T;|;zb1zf@9)9PVzXT z83oivKwP6kk8DEpL%}FRI5V44cg$6wTi)3xrMH~8RMbGlNFgm^zFWN!#rFK6eyk0~ zF2LSX{i5i^bWdz&!{~)taCB0c8chMq2YPJ3-`r=uB$nt0qEL-n9@pBE?w=g7T-;nb zP%wx#l9<~(?$um6YHo%NkF~;b41B7y6f~EMyjZ5wq~&S$?Ho)iXhCms;5~`{EPH0# zQ5bI`aY11e*f{oC$v(WB`4JEzMJiH7FPxZnSQryB)Y8uk*-Ig~^2xcGN7;?qy@5M7 z3oyLl5fX%p`*YK)NE*3c4Y><$u0OGq?S*?R%x(bhaAR!CMQ$8VW^bZy7$GUEQw1|%wWqWNAN zp{lFZZ>_oRHG|JqsphTgPdyVgL9>@hA(7YGcbD&UameUx@G{OVY0wcF!vz_A5l2y3 z$l$B)?7Z?Joi=FY9dx5|Zw@>s8E)OV=h41cSWPS!lVQ7;XxD2bnmOiMVWJNEtL!AH zMM}JD#QPdywknkMf_Y0!g(fi1Yg-g(k=1L4*QYx*appd)II*=FS|IGDzIS*yIAEK+ zdI-Qu?z{_wJ7C&MMQ<`!Zt;s1{CMNUq8%sORu^=xMLAq<@_J=B@tn*^Mbpk9gK=O+ z=JGGI)fQp(7wulDu)t3_mp_hTd~%?%AP zf5ZSMqPq0^h3MQ_TKcA+?ot!6X>4xpO&wYq5)~KH$SSV#{OEe$mdw=3G9)f{rT>Ou zT-n;z;rfW>OMuw=3==%|A~76{dtMJpViTr4I@nX8Ohy88PoJlkm7M|ZoKtajs1P>f zSh=pvYvwem`xc*QB{(OAO?|(u?T-)6j`)%7ZySB)*yHh~dG|xMlIGx(m?|l*xYGp- zGLHG9W`Q#I&aHvVF+y29G>&9jucbDWJ$sHxc2)X#aVxY~;mz^qyk%d=Y3qK8-6dOj|GHGlhCrTV2dXRW@$ z^X&{up_SymV6BNOWD28XyDB9o%blEUoK7CSncMLx0#&PM65@SD5=xlaV)i4Sn#*hy zI=yPNkdPr{HZx$quKFY=I<+MKRJh@J^Cxn0??#h5n!K~TXLDKNSrnB`b=(~cnw*)H z1Uu9h<&5ioG6zkb%~ho{oJ)t_lY@7*%t7t-jau1pXGZ}!Qv^B5hMQ)Yx!eg#NeGD1 znxRnI*)N3g(AtflH8a{4fs-l9MvY6o8})ZKZ^xY6ZH4!YGpj=5j7a9AnV8IOMMBoz zWV&a*GVZ2?fkvQSZHvK#zCRUi$cBzAi*$7zTr(Axyzn{$RWVTA3|60c@lj~l?WOLnbMv{vUHUESqfhT!#ZnP!0{SkF%C zjLN+64oT`&imUtJ@}@1^JjXz-mUnoQ+0qTk1{BG>-3r(ru2e+`0F>Y!dVxTFE(W*t z4L@W31$S9h){JHCvDCB(Y+I$)+DAY`O#w%iDl=`kt}dKmR@quFnUxQln;H^}C!-v| z!EkJICljP!$p(JYUt3bxzjazUmbmEQopUsnj9&F+0bP*)eHlPXhi7V@Tmt(VVDO6X z6?Ua_a+z$#xWcdL4|+UcE+|M}B2vH+2bIr3o{VHVBP~<5Z2i+Z-KkT;y~jaq{*i_i zXNx6^PK&s*h?lnO_^{u}bC$&6geCR-zG|)iggwcxBSYIQpIhoDqWpx`Y0<1SYnhjK z*>yyy#-HjVzX~*6j`Sr3ATlEoPuBN5DAdBgUP-!xE8hbZN5VXW(x=F~K1GysW}#a0Bap`UP5m9-?yO|tPMvb)$0G!E zFQ;exTNYs@AjJ{Bf{?fZmuy|~@=EUVwg{bN;$Upfl;POfo8olJI67MWZ;~#yS{bdv3HREd?=!4*| zOngH>>rg(_L}z&uWAh$pXt)#TAbm3Rur9+hTj#s5_xATpb#e)9=!BS%Xet~_;5J@}G+&OQ5CCk-U5iCXtS-;fPd+iha=i*Nrulhv8xEy7X+ zH_oyq*~~$LQpp%I067e{6b&^01IfE|@ty0fW!TlcZ(=%J|UK zqO!`e%r|WrdTI~IMbzRx*r=ZGT-1~-z1Fv+auSVI zbLSv79}%cyjw#UWXc-UDo0>0wPL`VYhSaLF3qnwXP+I%?$1>0N!Bx8Y`bvByx5UEt z0pu66va;{`K1XJ`G_%Bv8*=i4wT$l0No#ovF-zTykQ~c|#+iX((wBb-?<7`ljHaAB z2?qm_$M@0gyytbHA1#FTUHu?7u}!2tl?+Z&J}f==+@t2a2ey8x3{PP45eQCF3<>GW z{h9ngXk(CVsRM!2R^{{`%OzL3V{zX=L;M07b zmvTPcvdr1d>(XTZYSXaI-<+tlDcRFfSIF! zSZ+EG_{07cCrYqQ$^l_>eMsN1$gLK20rNHauVF&(NZs8O3*+&WSNdF2Om*^SabROxCN|HmI*oo+=2<<=N>pb*G50fa@$kIZ6h0lPZF+6@LcpG^ zPK;MA{STo^tKDVdlOm`OT%4>{sc24keC|_*O`%gL|Hqf?XqO|V;ulO_^ZCtaxNBp+ zSd(>F_HB5ne*0fDcjy5KTFp9iLMABYYS4r~zt-=Dg$ z`N+s!q1nZ+6(-3%B215=k-3GkS@(bg7F_F*%;89F2EX;Qf`oxquXQ^>l&Gw-y=^260R^yDAYb`h7 zCTrQ|QyeYgk9XC?f`gK`c_w37kj#*8zCROP1N}R{C6bxf#-^zm#$k36IbStvc5Qo5 zwz0iHNL4Uu1z%9@5trF1qr-kK>0y((4QfTbU8n{!%IwPxgt)wjr@gWoNui?qjmzdR z**H1StCkoIIt0WCsi|#ih7uoKqVHZtmlRciJShst&udI{D@uwL699E21wPmYQ?a~P zwuQmb3nq^MT^2}}vdvM!SZWCZ%|Tv})GZ{V{14(GyW9J-!(JnvhzoeH(y@E%&K=`= z_FLInH|9%$6PCU|b93DXkr5l&gTEYl{9JNC?I!<1s@>O%9FvV2!&uFK1PT@|-#edZ zLX=>?Xg;LI5M#PL$2a#UX#D%p&ZBPEB1!F`F7UIkMD_6g7@TvuN9Wforo5!3zE3h%eV`T;Z(8XP-Dr;!P`l`@YxmWwC&~UKJ9S4> zp<&m)kcv1yoaN!C13#42bL<;vHJ<%zd#Sr#bBWiNPwzXoSxd>;j5NQSyCPjgE%u>J z6yw-fS7%aW{x~YK6~91q{^q9N-04*cul2D|_8%^H?5lP#+k20Xmn2D@&;{!Sc2gn> z!ckgbndr~98u8EZCnQam8%xZ1PJ7XEk~c}OBPwqz55GPz9Ays{_B+`OIE!^tzW3lD zk_5aS_r4gkdM%+-FUCVl{cWpRRHbJ%e_!}12okG+1Fz=Gn%p%K)FIIjEZBb!>=)Ui zhP>Q%j8*? zx7BYL+#PzkGM*rpNXUIb`<a<+HS9&JRIP;As+DLOZicn3$&6bhHh?VZu&57S^ zWdKd)@*(1oIf>&Y!^HLjYx9B8@Pf4PYHbz7PASATAfb$gtByn-@&*0%-7@w2^i0mJ zL0}RWZN@J2S^sHI=xpPGC%w9>*t(WEG`WYN1K0()UFtU0F}Dsd<9uzeKT|w_9q=^J zOL|Z}>OPmY6*u7C z+wk?Sq?ZX=47vW6_mi|fu&m?x`V7}xvb*2o0AC;rN-xWJ<;uqn%OC2?v&yqrP)=H6 zsIX)2sZzy5ZrcIx^p;xjKt$)2ODf8SOzoW4RDTWX7WE9Sv4coPLRIQ)89|CZTaqfB z4j_)S<4^KES|Bt&KFvGaGz1$&D-~>N&|TWhiOczkXvUof$RL7S{+Dg-DlvKql_-`D zHX46(e{J-64oBg?03MC-zF`oB7A*THX#92^!LsR&P`hTZZp?mRm-UX?{MkzEmr=P; zhPd!r4Iqp6rBi4eTmY>{@*P>j^ZgO9-Pl-rTHI=yK|S~EuCA!;-kI7q-V6=Pae|>= zYyQUDj}9!Fh91lhw>DWBXbb~?ch`mT=>Z|J8Ox=cReS_^)c(hO zyJ6F|n58F4b`V&L%h36WOe3yP38Etp{cMo9UaZ_@r|YexC33>TEa&^$qPxk6d#Ra- z-f2ktg2Th~=^L)p$wP72rqiZ{EfV01VHJ=tDrA+qyeJ&?1dbrh&%Og-wx zoJtm{%x$+=Haz7)Ax}JzG^lVD;vTcHp&zF-L-n`XXqyXVu}mwuXt1s_^vRZ&3C5Co z5sb_(*&iy(NOjbEIB$})JTxqYb5^q!l9|}z_3mr7H5A7uD7X@2l16HQ=^gbx5zz-& z3MWZ<)gb_!)gjf?MHFBtGBHD+ly~mJ{0JY??8L#NyNMnA701lj36#3nOAy(kMhk4< zkd3Uc&KWzj*7-kx@3$~?VQXf5Gwd2TO@$Ys^l>h}m| zwA#cUnjBhvQnEP_{zY};asCOPpa-4_d5^HN5$~k{8OiiJ>P$$yKD00dH%>Z8Zuq@B z@d!siDJEa3iA(0nf~d;j)F}6i!WclAM&@X*36qb`H`$L{|IipYnzkPWq~jL7(}zL` zCG_7a>tIDEX6TOU9pQWz0uRau8R2;H{8ZzQBd50IVzvXzoJ|4OZWAu4(oAD0DkqrO znp2;qZSs&Y-~M+Hd?M?jC0@Ud6180H?36Pupw2ae4-RzWpl|8Y$UW=afU&RcHaxu6 z-r-n|6zx^Ms4+KeXpr&S|8CEUde;=XX1#`ou*os^zzUiTZhr5*ylrlVbxq&J34L^X1}onoAUOaH;5D=4zS zZ)K|MtMRaM7CbrdzlL@)H>A!4=*LC;eRs@YpR~yuib2ZrbfZMtuivfc4HrGv?SHQB z|A!#{r{hWdzes~E@>;*irr?qi+SOT3)MSWqzi`5L2>)VOwzKL;fS6jyKgENtwk~ZZ zD}cV&E5a^nD8{C|TEt)dhO&?bwk`mF!mY>Ru{eEjQp>;lK^<}6_)X`7T$GnkFXv6l zOLf-j*};y`hDb!sRd!OUv^G2xyFX8cEcTF3AwfvxNIbB$u56as?Y}H)|2v%je~B>0 zAZVp{PE*BnKV~JS@8r+;fos(T`WLn3bK$fSuJ>X!`NQ)|c3Xbv+@!+I)QI9e!5jS^ z&aanI@luLXW?^~v>+3C#faW^4hoNb_m$U`A`l=q(j{w+xRb=j84q~);7-KuSG&Vi# aw5`fvprFZ4KhE*Lzku?8xTNy9@P7fY3l*#Y literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/mediaready_prodmain_MRMCa_325x232.jpg b/3rdparty/libflac/doc/html/images/hw/mediaready_prodmain_MRMCa_325x232.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4f1dd2d5beaa54dabf631086b28cfa0195e86eb0 GIT binary patch literal 19199 zcmb4qWmFtNwB`^(kOT-0!GjJO+}(!32OlI5Ah^2*cO4|bf(|Z028ZApT!Op1yKLTj zXLrxr-9LM~x=;0~?psw|a_;xtzAv*ctAO`lS$SCi5)u*s^zQ(?tN{pRJS@Kg07^;# zCIA3{_V4^BFAD%E0P?F>|B?R5>wgIa4F%=(YZMGr)Hi7FFy6g;i}Cg?CKm2{Oe`F% zw{PDQzQ@7CCmI7lzu0CE5T={54dUi@!)jq(Qd6*3wU`oCh$_W&eh+TcI>w1;xum{01?EcAajR>Xm~|4< z^YF@;ItS&Qp1CAePpth@OY*P6|6b{T>P7ii#Eb)Y^`G*u!^r>DETmUB)EvmT5^ArF zKjLvZ;{U4-rQ=lcWghVE-xIHJkZ}NFfcqR7fSNeIDhfW*|9=KAAW_^Y4qwPu$HlHT zq403Vot?GYrG{y1*?(S3Fm!y{LkRCrT2bZiq&!G7$F+@?o?Z+mf_HtZ$MLOXz@Gnk zz)g@$A|DfR#$&FJg7*Wz7Vp5RqGnc)OQ4GVGOH-I+fxPK9aa9uP8v*zdUAU{K(+)ih2pC9iQ1Kc+D zsHnRwxO|o+239TM?bqeO8q-(UVYrw%SE+-R+CQsiC<2hn?S;ObfQ#xt)eM$~48O8- z%I&%X0=}P%)~*U^J3>DC8kq1HnvH1seJreEmh5k>zO5eoeU+oIK+&R=d|Qyk`qbD^ z)W<~R8bU+rm-5#8Q5^rUSEkZWb%a(@)sn-;DPvb5K?`ul0^z!ozl|Zdc^^ghbG=}c z#-Fo5PqON#;g{_l3S|0no6lA2U3U=nqqYQ}@lWskR1qRr;9t02jH^ZYl$;y}>Fvit zI{XLl;hFJaLUpF&Exlz`_2|;}O`H6L2JN_b0RrHx(h_HXZkaw~HU{IXNIqipic=%>dxVKXIcy|Ec3`_tx`6e={Dkw2auv%j-_EI4i++alv*|Z{= zSkWV9tw*X$xqmgP)G6t|wfG<-pjfv+Rqz33SD7p6giC6knYT82V4GGdpw0aBd9w0J zGJ;o6%6;6<_HGCqsF4bOccT}l$B^D-U+zh`WCKgJe6!v){vN^J_AaVuFSc zi-fb=Bq6P3`BVOn0|)9}11XtP0e5PuyX`ar&*+Kjdo#jC$tb#l36P<$YU?#|w(_5z z;eb#MIxdV}f_~U2o0zqTZ}QH9nnCQ(HLkb2l2N;!`T5Sszhob#EvjW5%n{V}gcWXM zbu&o>g~=d85%oA@nk~gKRzbK@;R}GD<@l$OGc}W3`_V)JOyRXzJ*;mcB@{E6)$r@w zv;)THz1etA0r@N5K2_|ApBad~Q0Nog;QRJIX8q&DqY>1>rl|(OQeA#C?D)<5q1WbG zjYi&wn{#6~o_laMqsNnTNAUo32Ha zQ|q3jjVgK;78N@UeD&2?i^D7P(VVnw*4grslGk=Q#~09=?^DfL+kxyi8vUQs=)Wcw zkYeW1RQThXK0@MKW7`rJ7LNQ?Jm_kXa*JFfUweSm^^TWJ6u2AlVuE_90h+!`pD*&~s5SSrYEO~K#4p&_3}-;ryi%dWrl z5GU(eH_B{SotWs)i`wlG_n|MsAYaX499u_>BYT!sIcky1!PxRdL>0hK!C=qCqapzm z9O)~40eslpD<`5+99f$pcG`e0L~e}<&!;5a$Zxqg9coCtKHAukZ}9A`&pu6??efB< zn-2dy6|<&NzXJS2K81C=GUVf0fTFv)L2DY% zOaA6EO4=>NJ|tz2cc>yh%G+3~**iQ93D_j{j8Pv>eJ6%~jqM_)sxFUS;PdbZ5u)>9Z^1qfkt~^LZfe zE|!Df6vQ)kB|Z!6*r9$~>^{X}iFUEUVRdXem*t9r-r1>;9goVpx7X_Fv2nqAW;Nvd zI1q))^o5PO3fP@O3j_mL?ikH0{4}}4wp${v{*r6-*8TeYChBVsR`)K)GU&$ObtTH;AqH0V8)e?=+8oM?IYoevUjRuu z1{ofIZZKSFNz1;_=-T-%xHIknXkR&y^`)Uxy#Ru(SCHxhZP($)~j9xnW~Q9Aa_Y0l&i+8V<&v-}fN*nR8g%fF(#%c$1R zA6tufer7byvl13O3{e{lW2iY|<^w0cXVU<&%6ueAqP0td4784^v<#esnWs6DCKWmc=~4?Z#li z2^}m(wMN}?Nq+A6z^zqsnvnT0!s3%bvYiC1tKXBhG(ka}1VDa@Cc-?>A~^M-t_#kC zcb_{8P^k{o1b2N5QG17AY{V9!z_|OxA6iVXyWAke>Kk)w^Xo zO-9;kWnJF(VAfLH`}c!l(Gk%P-?x1n_L(%KKO2Y(F7i&&CKYB83iE-J%Or2jN{!y) z>Y`sY_s}wYk3U4(K1hg(d4s}h?rKiTBXT^-^k7;ClA==)6OoS|%6ZL@%s@Qy#&IKP zLn#qqS28yLWfY!B|2AbBq@SXa7r0KQims(43)-s(`=UT8T9MUHVFz9<^Od~C69)bV zoHGl?+nJW#_Z`$yfYq2&G#aZ(+wq$x*L>FdSt}tt70J{k9&6^0P!Lr}lGAD-%}D9B zvPe4V_hOIH^2%$4*6Xe>Nl-6^2{UdT<1HH01f*JA{7L`{hr!8wp7@;YbtO1_^AqCD zOo{}AU?Uj^#-yDi4@0f3C|=`ko;vWISrF-)9U4@0+OXrT4cS66F$t<_zlKy0mpt$^ zH0_m^Ne>urb>WN+2F^nz^(B)Whl1MPIPYf`WtxU2)Pth47nYhQsW?qb ze@ANRgJ`Ib>KvTgX5S>c`88Va5xqUmm>^2`A;O~?+%Z!_gqcQE zcyaD_x-FWVCo$dSIxwXIxN@j$O`ucm_|TW&gfrB75oXGeWE!ZVz7`qe_^OK!yiz`a z=iz6&Z84bXC|sf<&Uf#_L>RR`!Jsd<7Q`|~xX<$^Q^r09g-i3tR&Cu20Jv?BT7ll{ zTRYu(#C=^l_E#b5enK*n=b@oMmRX8CQQ;}M2Q;s`eWpS+i6&jzrsjl!Ac7tCnyVK0S3-C=v!(aoF z$RS7y;v?84Wzo0mfqNe=doz>EZ_U`w7@(}Bfpqumvjw~gW$~Ol{KV}HWQATfW7kn( zJAK<8Q-d`UjC$d)0?EnIfj>yZw5F@38n|hsSD`-}EyCL7zwRGQYMr=jJpN#yIyu^l zO#0klB6wtuQ2OqhDA1Uo#+qNj5B3aSeCJ9+JS>wB`YtKk>c}+YNrb8HqS$P0Q@vrCQpyk(P$ zt&nEoN4N6HLUM8EA1{E~v^n3T!^gLmadzYar90t-Lx_|O?hLd&UnN%aM{05NMW#-Z zT4KtDxg>0<{*#MhIwx;wA!}n#PA!oOv&;ZT@hMpPB{H!<>!- zNm>_DC&h$|Rim;?Y#o=9m46I6qHK@)hV8PBK&ez+%4`w5DO)&@)YCKan%x2kjBqrb z6}ey16*5>pkPmoO?}#36%7{6dG@vW;y;(zt-WV=yzVlX+)XkIOnb{3HtprJ|WADOT@nb_PNy){LAbrv1vd&DL>q${?v-sEqzVop(;m___th0ohHBj z&?rhfu*2DF{*>%ewZ8yg<$4X$D8}i+qB|tZ4wP?iUlHZ*=z7Am`s>AZBKlBtoM6Wy z9NZo}Nj;MfbEq&&+{X{fSl!N#VTycY?f}A0!mD#@Z8S|LT>sh3Dm}3& zrf-l8QSuK18D+4t<2t!fR0vzvOIwBu7Dk-x#mJP{X*GWonksQtB4Jix9CVr$I{8cR zdUd+nfc7tT>gQR$xryuunf!8-CM*Vuk~=v`$BC@vHIde4GuRo$g}X*+Fl}3XrY+-^ zZa+1uQ+~ATd~Pq=3jpgfN?%qhH_o$Jf9U#JXm{5L_0<$Xi1UT-cyvbeLw!E9WPw@5 zfK}_vqk+_9P{EXSk+6>!4YbS4{rYdX4_!>xO~ugU->3=bG3)`HlJsk%ycno+g8MVm z=P@ouZze6bxW~HlaUUYp#;?}?-x+S>sHM`SDyQK!(NXc_V4Vr zKH0RtMCny-AnEP2CZe~Bw`E>M9S1v88YbEn3+%$K?JZXF>LkvY*!l(3e`o{IK_9mhhC%q|87OduKPjs2 zTz&?ZuD=(|MERa~!Q2vEd+CrEpIt4dXhP0cN(F=R&}&W%J4hE3UgzNBGif+zWV}Ox zTWE0xLbBz41sM#_eU4Lc#NbL(P!lF7rs7(Wjz@%$jLSZhUS){)ezO$1{Q!f3%gIrf zJUl$La{tD>OAW9<&dMn&C|ZyHiEmJTV;KQBIN4((B2>$J#lBA@g8BcCFDDq5eXY~U%dc33=b>7 zjYd*MSMyj=z+eO6VCVO!6Pc;2>1r?>3WJ^`iXy2Hs>hNP%deKJq;^dd>h&lht82R3 zcQZF0*n3pecSL*=l&*HT*dsZ^06D-A>p9oQ?FFe^)oRqi)~LBvy5lQ^K4fqIoKP~Z zH?N8AgNJVinqW=rz&PJQ^wh#%9H;k)7KyiL+hl#H0Qu zS>iKXU0d?dE%}s<@;5I4U0N0f21=$%xFfUN=~}_YUIN<=FrYsy6P8~aXNLqx8(ipQ zmp_b9o@rXpQncMz=`r5gYE#vi?5?=oXQZI?r zVF@OFot=U5{EOlfElcta0ZUxZjCKmUnjsrBN-e!UG0s4zo&P#PO)s;KJiuX) zt|!PTz7S_OMrWIGjwkqEEF2SQ=`Et*5=xkwIB^-z8$)(c z_SocOA?2d>VYIgV`eK>GT+(J-SciJz*psy%*v$8pG-5WR>Iopvz_$ydw9m z1gihpLyi~3G~)Oxj|Jw5YCm6LFwZ*v^>nkLUq`xneW-}3eNJ~&aolMNT5^5KU{-R) z(LZui-f&S0NvHBFX0Q*@>eFDDcF)u+DO2fy*>l|`{nP-vT7#&ruHsUx2)9#a__*EK zWgGfIfY*WuMu4D=N{H;+{FHZi1+JzJq>9WzAQfq987d#7@`y>VR&TU=;T`)4=DUe; z8`5z&qNFBQEj9=_RCz5o!WnV8+E zZ^rE+uW$CBU22uEq1NKoOJWY1{RU!Ur(-($oen}Vfcm;v`aCGwmU7|In4^7qybNZ0VRM}nm9CNmlG?+Pjt>|Z3QkBkU=Wp~fg7+8 z)kTykQCILxm;7U&NLlA?Mp{bKSaA)>hF4j2jlpEg7@&@US$k!#&jvD+AHEKWq~9M; ztx zc~mm9YRDNd1|k;Y`;iu@scl3PrgcaebTH|7TBJ!N5@uWHd(;DdQWX!m$#o?z0aKa4?w)ZX)pXyx zdZQ6ri$NV##?L@hp?KVES*+PIJWoLxt{=vq^6P<(c!hfiuh$a`c{3p+kXc#5d|WK| ze&|QQh;Xdx4b?5u|D@2;v?^Ycfdl$@A#Xk8Nl3OC1}n-29i5^gy@lke z?DD=m6qq%S)Ys`9P9QC^2?3ZeLk(Lqcs095pMI|2U#1-{39s z${Cv7XFqbPbQb*tz9wY>WcoLJ@)rrR8dN!#C+%P>9Dl}V_#Sp`Tz`$ecbto0Qz-h! zq`%Xut%Jdf=xChe+X?g!*hDNdnMa1OpDG1}+&R#IsE-P}q9okZwUMOIvjugl5jVYf zR)^$zNBnrub!l2Ps#144bKuUz*R29`Q}& zMpR0{_=^kRrJe@kVwVv#x9ZVK?uGhVe?fQq07J140|j6T8mm&|ViZ1|{L4|VnCIH< zp6mV`#31j=b+M@5Je+fe$?oY3X?l_qYGTC7fnIOPWO>|#fe!L~)#Dxv6Jwn)IlQdo z^ly9Ij(p)+oUBCTLEyoPVCaAp2qZj+Z2Y%-B7Y!X`&utQm6x8rVNdVkRhFygKAbFT z>lE&mlIW9`?mR*`$&Rk@W0WR90>pn4?PG1vEf*zYU-_j_$?7jSufRk}=tgtA_wiXH zXZY(>dRdB1nq#P~woXToU2^sN^YksqJOs2ww)a+9MdRI$m!=^4wS1~{?dPmGVS~!3 zdT?DY*8RIa{Do1T{nF%`NjlmhY-2b^YOYIHUBsBqgBy7##(c`c@vBE&2?g-q!B^s7 zSU!;49d$5=UAAU3DL029B;;Anm(TG#m*k?|S<3h4F3-SAveyll+87DTw8{SlLL7qh z(B<8ezObKdq3LqjCG8dzCFC6zuEb42eK z0nT*8p(cx9ev?DsuTS{Cx#a|sD+wP?KqgsfIv5U4#qaLBG z%|j;$YpT#kZjtQ;5&2T0@YAoOlu8zQW+hA3c9S^4-@e4Pz$r>~&(zL%zVPBZD47s> za+=aa5aF!IhNEv8i^l&F*6`JcOYw8nIs;a-@K(J5JZp68o%s~bn&1+K5uH01YPP`J>iOE0jIR%$8M(U=cun8>IUKm?4jJ_$W)*g_tD!Q&PyKy6? zy2bAieNc~*Zy=K#`=%)#$hC>U{*dw@^zm&O z#P3Z#sh?iQ97JQIgBr<>rC8_u#+w;?|Iqi!*<_?#a+Iiu#FCnNJYY3*4}A(9+AfK| z9=lvMpJSA@nKFO)%|gP~HkBRpS%cF*DJ~A0viEcJLzq@u(C)~mf# zRa&r)^r|-ZMuz%X=uLc+`Z~FHN&Kg9D2I)b6Tz6)REYv?jk3u^G&EbIOGow8t5u^e zHZ9PAm?&f{&_2%;^0E)2P&1=XWqd+3$t@>*{rSlA(5bylU%vDLxQu*GJJltuSQcj2 zWA)AD@k@i;^z9bZWi6@F`Y^d0A8~ZD>J3t#F{@m#8%4GW<@-Ag?UBh%y%_0R@Vw<;G>!g& z&xeDyz1R<-q6oxKROlkvpN<#~QO8Avtbnp9DB-AfN2$KgO^VTM-vPIEN9PbF2j$ma zA{l|XXPFaE0UMxzn zF#%x7QNIB*R8wRqoO9|cKH}fB`H)ure(ujwo`;_K-yzNQWp&)^_qhLzkl=b&DzE%3 zlz=)PS*}T*-W%_-C1zkhuE3b8rzctG*)i4hX1N~EhV8CdY8hF4wiCh^*yw(TWs~$I zUv?a0@!B?gUwSb4fSaxT$r*ClpL{8idj^5h{akEklY15LC2 zJi;sQtdtKt5LhoGWG&8`L!oC*vbUkQ2=$yx>l5FrYa@-y%%Kw6xcC@av&#M^gWV`$!ZwYA=S7amO^J zYhuYhNYasB8g92y$WxI5sS^zVHuj@FmH@@5wVsoXFgr3mYWZx|qupp(^^0SQSt_a$ zx0apGpR6=mlYGo_Y{$ndZ#4_PrcR-2FFkxbj<0!!xs}6i&Dp5vWndTh*fW;31L8O5 zF95*|l7_0xB`!=v(o_DV!c(eEdEPDaoME0k$nXyn_it(n1uL;8kQg|USr*%JFFtH< zb-+xlwoU_el(-z-n54Z&Gg9Q3Z_n^Yhf&-I9a)6LmZ&S`)C>vHn@{636cnyzT2ep? z>eKlQnJI=kPO{7rhmNO!<@Bb zGY>x(vUXs^htU?fZnsl{H*8x;udkuJ6r)~NfAALPX@a(EO`oi6?Zho!%6}!Mh9y)UEf&uro(6md6O=xL?AE? z^w%yuycX7;f0rt{7*QO{8Ld8@0rFo}mW1DGGZ31(g6{3QBtli^WnV!6_}Z3If{fT% z2Fkcb-%N-9K}%diJ{+TytBRIC z0~;4hP}3(x<+Xdb5AC!ta~1_#L0!eGl~K3aayDvd6DlAB2?+_gd(rogjsfD;U-THh zVdK02R+?HE2l`L5QLt21BDkFbqA4*FfXPWT>eJ01ye6#(T*NQb#xu*5B!9?|kM%gba9&wb-gH{qYkJ&dawj~~VUowAIEX*A8 z_`KOT(5;<`*~nT{zTB}FB~rqSNMY41AlF{j7eIr}`vHQqWYTL_(0K&FI_pw65zi-T zdiZmr-+8e&)J$D2m06W%5mLr(QEf?WAvP#&|8V)Y@!?0HPdN^opg?A|ek!>BttotS zV{IlSRSv26K-et;yd^;V{HJJNZU)w9*(ZOi&I!6IGP9UvRe}rA;%!?~qX1_yirML>q=|dET5T2m(ltW~m2y9k zThsQfIIC>N~f|S+LBf+|O+0QQX6pu|1uCRd`K*&tE~r44MlzCzUqZ zFa@s*W{93Xv%YSm zyK2(#naWk!&^=?Rvl`8D(N;r}LFy4{V5t!BNIRtav>3tLL)|?fne<&mlhz0>o_`V> ztUYi{bT;z>=tOr?w+pdL>8c2$h;j~&U}RR7)ZhxCisMeu>P~Y-$Fxvo;yt3cNM;;CiWib zelk&5$;5Q1nmcE`sG4x@j*(HbnV}j1HJPr_+w){&Xi0UduDs5O{62<#7oS~uJ+-6c zSp8H$39cQ*+m_gR$SI8u&%4nMP!Huyu-j`}(08e(dc8k$_1bZokJxdCPHH~;)iZ*> z-cQX|b{5RThsljt#ctbFeQKTd`3B-TE!6sSIxv%YbkjK$<-g1=TQX6B*L38ZmN9$1 zCd2dsu+_b0n-g7wEA@WTCG5GGf9J&hUiNrNDN%~}kF)5y8F7|9~ zB)b3!?})eW>a78Dv`R|d5nmy$1l<*tQ#6oULJFMgv~mI-RXQ8bC+1H<2VA z6{7A*u_FYxb&Tuql?&&f8?)^Ar*<^kyPwX#A0$glAJBJ=;rtSWlH-Gy+4%CL(+w^| zTyVyUz*mvT--Wb06k{~4v1n4Uq^KSV^ksT&`8v&y`w=VL9&yfkK;MIMxX40SIzJOh zXGE{^w8vgSq!|7n%>Jt~`Mz|r<&o1BqQ@qMt?Vevs*Q)B)s1Q96jEq&vS9z`3L}U) zS=t-vK+^(|oRYuxwPCyz*tB<$FaEPs|I0eyVp~~mCO6kR`#gzSn*2@~t%U!9CAH=V zpUgSOf~G>&+60p3u+ggQ6LIiwV?8aY?kD$ng*Grc5id{Mlz3Py{S7s>{~+y>tk5x9 zBhdwwp-ad^ZJPrUPShJ1mQy~mr9i_EQAWSjsw*GxEf|0-(3+=$Xz>nt##U1mIAq{A zfkR;1_QaSN3n#9!VtEKYEHT6z)48lJA#Xgt6qy`5(?c0+^GmsAwP;6uw5u7S7=d{n zC~>b|W?<{>53o97Kqi)4WTvG1n(~OD=oQh+oNoNl<*n}k1zoQv!Nb7E6uzEtcE)>| z_-gDYsKo5IlCo5-%8#@63kpL}@Zxv$(Rn?fp(s_5`Y>y+^>r572j>X)w;n382~M6# z4~<%$R&JWtGJSb|JA5GrEq~-l^TCp;sW;8yS3W&1oyG;L(JXBN7Ysopc~|%t5T+(1=PUrr?{E!&Q%$9>06Cv zG*9vv1Snq15l`QBEy|5>ZJI7*4F`5-GZxsgE@9Xc`LPzdJ=v!<^I zVuFEldQ1#S)N%v9Tw8|r%#E49VkE;~0Oay5E0@ZNMi;=HR_ZB}d0gJR$Ai7TcPwa= zf`sEp=;+6@%HkJ2E{^QorF7g{-6;5|V%I-wgg9Mc3W~*@q>j}Pk?g-CY~#E7b{{J< zoc=k!jqWHSDLX3?^a`{I=ZYb^@-F~5|B78;#S(5o0y!NRtiMH$g*KmCt z5f9i26Wvc9!5&FPUG{G<$Oo*&UIrs;qwCO|CA^Xmqv)(a@ZhrR7NvHbdN?>&mI%8JCNR zF+l-)2jRriH#rmB8^68`YA!|a7IQ!{I3Hv%JQ9Nj@r4DmTs06eY8!lX`eh&tS5rFH zr1)GFiHVxV`LDVwPQtwe6jDr#j&PfNMjHuoi6Zo|7-P_!c!(!?DXz-zxilmnp&(4U zwmUXwZh6VXjVxq6o%qRw$&l9#;A;O|;j_bXxahRZmy*LvN{x8uz+7|^l<8R$GM81#bRoJgQV|ZKNKWWvr1u!H9E+Z5(C^Z8FNP zY_@ZqvNg&(G7t0HznnZqa-W&-M|m--eMF{t36;Kzwf$mcD(Fk3pSfVhu(gs5lT0?j zzj#v(h_nZ~2BM8GnSKAv!Fr`+L zY1O?yrj5^$M?Zkh6m$>LdlOstbp@-3C{Xj+kEl|uC6me+umXlJ7}g9doqt4;w<*p= zY)ZQgMfUe89$gf>z&^QcI-#s@UhUuTdhe^bfggIjxyF2|AmkkHK#u4T++U!65$1lo zE%WSY>e7&zWJe)H4nJErqL`)7HjMpqxv!MvuSt;jEbZ&a8ciGX63iVv)dv008Ks5VV}HYn(u_!}My zMhp!#`)E_8_LchtE0uw=+yn2N$l_E&!7BF)45#HEoWs%zRfJ`Fap~)LPpDhIV~G@N zGqoi*tywNG-R02*+5@=fHXZvu3S$ZAZ(BSjp%o+JeBRua4sOVLReSU>(0{L0fxbKJ z#DA#ZtXTi?+>2dcM`B0;gZMSB*G^$|5;|+y>ZUIJi+)EnRcKP7}SwPK}UpI*E^l@z&^%P{?F@%G^eTdxm>rFG!Y-vs| z)H0wRO!B2^`H?gvIk1wRKCL$TQ%Uo1Eslk3<%6dlRa#Kha}xqeKsdG)`<#8}pdg*h zL1(dr+zfO_>y`DpcJi85@LcV!otOYjeURLEL+yYvXdA*mX*sf!*^<9%?{7u$VLE|% z3go~bMqd2Z70sjW`$P5n+8reE_XNN7$#-S5zB7?d((sygnMq&?Cl%2#i6GG$QF<1) z;}T{XZ6sT6^(`%8htF3@!|UMjzj7;Dx_Dga!#%k!x7@?kK%Ek!Y<-1LTCl>OB>!x1 zH4^e!>5YknQ6k)&t>33*JM@VknLi3;*0wi< zPFJzi!m&T9rzOnO)|(^14I(v;se0X6RIqO$o(J?3Iy^Mmm=qAqZkusRK8L1a&OXOQG)`T_??w;S#x`10@OgQlm$!@~X@2Aj5rvDDp z39uSw8?dnNJk!CEvc8HByLPTR%LA)d$1)o-ek|BDI)@1`ltRAumwhX>s{L~ISH>y@ zX7Bd;6Fg?c7MbK?(7J-FH3PO@cpHm0@hCQAIK`u&pOhS3i^58(z2l2&gy``v^d^R5@(QgXC@YFju0%6oAV#l5~S+_XX*j{9O( z(?B&qsrI(CWh~!kF-TBNh8sqvOJsgdd!$UI;utSZtt?{uulv#Tk(8OC4XDe>QF7mA zS=42XMX6g7r@?pE*E4?2PiO>ZGavsnjTc4}VUjVn6Xs0|BWG4%;e8)_;p!9q6 z6hXf!hfSu<(x|odd3Um$9c!;iiVOm)rA7Y8!QQb>@ zp9vy6Uf4p(H#N`wo#}K{GhPcy+xY(GHavGw#{9`AOJ}`ovm8@2XyIXOR89LS#We}##8YcXq;giIT8GTNM1m(lwqw2Z8hE1v)q6TL zIZ*pP1OjU;MCvk-l@i}aR=W-HPvKYEe_owlW+u&!zOy$BOU#UYUMjK3iC;XFYahdF z6rkAm_i~W+Ded%C56Za8ZXwP$-60WmjVC4lWhD`SOc0J*#7*t}&Z~=ozICB%(E?|x zH3&KapU!_JUXPS@rL8I#vFDCvYeLrt<1O>#9+Hi}DVw9rJfC>u`F>EYqju_Z)L$vn zHPbp+nV18VI@^VTf$1JuKf}{(+pX}6FFtqNo1=YopV$GA!%n#iftM_`3}Cu=wZBo< zv+E?d^t7WD_CU8;NVW7huSw?nH`0} zi5d-eFCnlI@=l6FT)HfxWAy`>$aT;w(X(5n^*F5z0cr|9v9s>jY|WlSY1&gU0s19 z!VuSO6ZUg$^44BU+K~11LaPqXy}H#78hXr$+)v3=Z-Ux8V-f&bs|%X8+^(_$9hDn= za2+{(Ojdh%0emg30jgKceRcMg3Mb9F`k40)*zkLR;A%4TZ!g5XH|Cn*Z#2GxJd2UN%#l7sk;5Uo;v>_ycF8{IOiNqBg^Ln zXf-NTv(AxraBPL_cJ$7Jyvl=BEc*AO!|K`>fE^|sKV5Tq-GPPLoHU%1^e&ot4=MJpbK`Zd@QQioNe5hWR<;NoWUp%5o1+YcCc{N6xXO)=G20yC{|@-{J$05Y zya0?nff&3>nuMTJyEPIeN;ilGQ>2n`qKx&o!?;TJC!vAYs94FVftgA6UXp59*f9*5wFR0XMwqPX#?iZ1p$+fvQ0k+=d`jB zG1aDd7n*`MRr4QL>+t}zYr5(MM&UEqI&CJ0Ul)P-x~;}1km4$x3kOJp-2>CLUkSZ%U^ zYdz3t`a)B&4jn{j5cgSn8MM|9%@ta)8hzP_Aw*8@o3ql=sc4*r1I1AiA1D zWTZ6zNekm)s(g%VT0*!2`x~98ZnL_|xYPVsjiH!WxhRlJ1Kx=|ATGR|y^CxAXH*#I zde-jz{Z#68)aoo@Ax(qJ^ELJmj}cD~1%*{;r~L;v8HDxoJqZ@ogM*b*?bo%>a;0mr z{?q@!OMKClyep13X9Ii}LB=~;FwSHOd^4o)9C?2h;Y5n)K9*#LMA zxR$|D)M;-c)4;xdidxIF%Z>{Glw7^Y8VS}SBz`jk0TY}B-Jl9wt5jg+yS zfrqZdzL)Rd??7GH(w)@fR^sd#cg~-)C#=t{(C4}Lak&{Uz^@O?NlLx!yIZdFGPCy04wiuxSvCQ{}v(u(}Sf=*Ub500JlFIsiI`ot-Qu zJ`Rh=KIkrCVDlO%zW{cXUZ-6=U39tvFg_0g}W` z7<;FUSp53G!f-wEL!ud93CD07xP<(?oKN6f?pibOjK@TR92oWsVrx^IY0b>K>R!di z^Od~S@l)p2b98b!>glh<)}_M$(yTM7GB?+w@Sk-B6Rzv8v`X3^_hlr|5nrPOMTQ$R z#P~!8;Tbs06_;TqZECy+TvHp%Q@+!x+DcMfr1{7}KhXYURiSyW1^ZDs?Fr|N_uWVp zlhFI(=FnUn2U>e>m7ZyWrWP4pvcJ9*aU>QrVG_^LYRuz24^bD+zA&l?@N5-|@W8&)samih4~G@Tj4@jE12Bn;Kc zaq=F4JE!7yD{v}G5EUE47MTUTb`|X0Kbkz!{J!|4Dk0w9-WR^7zKpY*UJ$i*v_0UI zwh3>ftq{uS1KQ-FP~kd8QzSX|%2}HcFobyJLC%=w7tml+Tf&omKPQ=>011F_a!e=y z^>rXxMfG2BBTxqCn9me!R$ClejztF_G<0aWuzhBOuHI!-ZajKA)49F?evg*{hv|Ed z7<^|A5=$>1=hS$R>vra>$V!8ZFIO{Y8%maSdIyxE+r z=x(0JhjjIjR=Nal5Q`paoIN|J>mW?)l~aitE!f`k?**)^)WVkB6KXgD3mT`ZK_h$p zRI&DgHf?T{Kb%VG3nN$=TypiyUO&ppxD2H^sYTbwT8B6ev>GZf*SG`NTBzNwc#l}a z=td+-q|`LPs!1>><%NvPQf){hb>YWs;dN3-1U2ou4GIzKH07f-I4J%=FVbd`hkU@V zuGeDH+FqYmGyLt>Q6#ovS3VpyEWv#k4TNjMhg6 z>9Ya9MBg$A6$1D0>U=rj1;E?Do2rzs6%y!&z-m0BIKn}6|0VlmIWxNAHl@)oIx!Sr zOSx1|Gr+i;pF?63p*Zn~F$0&noQFW03KU&?{>2t%!k{mJJ+07YRwY|myMVt|@o)AN zIB~C+C&t0gwtuBPKi&i}pvxVh|BphhgQ*Dwje>|sIEqq4>LQ>(C`y&?(nBX0n&9qg zC?OO@AP^N0qzHxpAs`Y~NlfVzua=G+dviXG{#{@??rG3h?+_a8ZtZ7cObJNTvQ7MjM)*Ws z>Niw0yw_2&PhVMaoKbB0ZsZpGrDYyR>DgDq#N82M)XK41`VEj-v|e~C!5*>lGl9~Xb@ zWS=JU+DKIdr;vMjd4YdgJa8-9-Vl69j=>#wtXi*$D2t3&9yvB5_?67Ao48d2v3xc< z|B&(AwvxF~xQmg0zC+ycCn3L{uv#nBRF8TY4_rhXn0EA)rNTr0NFJmMgG1y-RQ+G;Mt5(KxEzWMu*UrKFs1U^riO1Ve40g`~VYP$)j>a=8c}K>eaYwXRd3m`IzQwhvZP&ce?PjhRz{2TO(TW?Obd*flxP1cDI2F?I*f= zb?3TIg~DYw42@5>=I;)09V|0qfHT=*ZacDmgL6(^DC$unpM%0#{L~yL{Xhijse|rE z>+h)nz6-eaM>;ERZRgJU;RlBTVdwX0m|#Al4o zQ7EsK=3Ta@hy0U%>FV$^f{j$a+wENTm&;4C*~g0C)Oqr3>N<~d>w3{#{v2Stm%BLR zJ)d%tJPzic@EMbN;x(K*zLlYQW*%sfB1WPb9y4=f3PTan)3|*S(2G6f)x2;P6m}y< zaJNX&H+0e$Os$-mr{~cxuVwpL z&9O>fz<$R2Rg4aq@J-E`*+>;f9rok)e6_VRAPf9bv>0IK2q(n|khRo7@VIKL(1gj) z!Ec`pHYpX|O3zI=U5pJYrWP+ZN_|mXzF@Zxecf|3DS>ndQcHI~%h1C*6tOFm%Nd>=igPXS&z7WBlH|W!EcF~)O{|b-A|}0q-{_|M z!yyeF{rPEnHIMFjRYVf*%S5g@7Fi9D|8L%X- zyL??AQFcuZ>Dbz)C=F`q3%% zF|#^z1FBKL$e4JsbR=v4T}AgbTjj+EMrb1~WAOKX106}r zUQz)puDE0GwYYHRm+XIqm{YzAM~FMfJzm=re-W?6uhjPN*fIO$N0iww>$G5{&8g9g z59Do3`>7Q{7EQY)%%z>>>_pJ8DYEX9Il;T{GE-aEsMSnPN*ZP>>alY!9sVXl*`&(t zSZU4_ui7yJPlPfUqJVN)9jEKV74rT;t))%WWQSC6qVLcrpgyYuMz2Fs%r7~!@fH<5 zj8T+*X!u>6VXW%~hIM=eq5xlOfA6DDRKZ2NxMb%^&mLu%DcJn|CZe$={c_gy9`k8o z-v(Dg3c2e4!u!n+Q2l!pAE>kLzhD3r*OQeeKRwhx2tQ&B-z)R$+xv4VTSRETFuBIc z2NtPOEox7d0ArIBq~cOYyqz8i`3Zt~tw9`dY^T=&p#%h}I4Gm+lER<&C%j0pVwKhD zIRURTle+?sMjd`6AfSlDteD7nJo2F?&Qnbn`R}}d?v-jk-PDG-{Qt%MdlY_})2s=B aajp!}ZZBRnfa`TRk~a0PcUsl&@Baz(D&Xq? literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/meizu_m6_325x206.jpg b/3rdparty/libflac/doc/html/images/hw/meizu_m6_325x206.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b915e2e6ef8e148db071eea2ed2187d263e3ee21 GIT binary patch literal 15043 zcmb7qRahKN6Yk;?oW(6TivbDnc~ zYI^!+db)b1ySm4(sI%OI5;?f?Arx+-2f0ud03eP07^;#W&i+y`gXs` z>oPzBfB+BwUwIS6w}OO;1ChszT*E191=1LJR&Lr+S_9p901(gu;CGq5K)kjk&xb6!y_O9kZ_Uls8Kk@ zRKKF)(>MkIxy04b2xz&Dv|{Y)J+mL&IoxVoP&5ZTafAqZd z^rq_VAqOr19v%(>9ufJ!vHWi&aPYVYh}4{TVo3Njs$5?K@+Qw5f$?=4wBo%4uS)=o zw`OlGZ~-EK2kHo=rhN!Mv~XDzc|{F+m5Tr$w>RdGp=QDZFpdByqATV56G0g!T%3}rM5uJB8^aR16^2rFQV8&^ZVaJf)}ZFw>PsXB`twae3*lgOi=qQe z1z(Cp8J3iagwNf^(D;MIz2cTw)poFfc8PqD85w zi=x2-nJADazj({ z%fjV-Sp+DzBHt8nuP*|QFP2t{nIJX;iD3-(bE7^HD&N-+Wmr+KTS&bu zfKTm-0r5@MVm2D5A}=YL^!fAHyDyukH@AXM9m8z`|Nc$ny{cdGwN{01?Jn~xlqn=d zS>v{E9i79ULdDe49Ty4<@H7Jrm%D3nj}sG_46|mE*VS~(yLEPSHClZVv6xnQ1)%RB zDaF46I2U3|+8<^JiS{WEy>+PPKg``*{`MKafx%;!^dwb0%n@ZPEp~nh)c76!k8z(b ztgIx%LhZQLRsn?6UevJWRYV@pq{QM#F*;%t3NKf^HvJGWU%`fZ0@DljDuRi-^D?sp zSgPE|QgL_^G!Pm#bu%cobTl_3L=#sb!3D^{{4pCde3)|ap$xsMxj6ZWP-cqoAn7Fy zPR@O~h_^WsPuGCA&CO577>1HrQiK45zMcY&i_P$%)Jgy{5Z`nye7fQ{)h}<8*+gS( zoX#s~fXF&-E7emKo>! zhn|_k<<~D22TC*JGeqOrd6@-qtruDkVK?shjo&cPXG4m1A!;&PjBuENo3DVlt%o_w zAsq^KC1`0)JP77e?{%>`$SH4>(3n@#*pdXF??FOG=jSmqUAFc+J+_E-Y0@hQ*Qkot zrz(hKcTGMH4Urz2z=iFAo#H*O_X^13uTDE=>=T&KBRmnocGGBR-1=Eq&99y(u(C)+ z>YFWcJE$y3eauqThUtOlay{9LX-#F>EbLx;N0r7HwZ;Ew$b+U;Z!7-Kl4HSsNyB_I zB=k^EQSao#$D(Uyf4OkBpBxvlR1FR{qesc!0h%slawwGGrkP=IqcbB4ilS1ZaTN?s#RH9!_|S+0314pjvcsDiD>v?%+VVN5)o z6|pxrhFKyH-4Z?y_m|C#0n7AvD%)AXi20HNs9cqs4RvNfh%0>X}1^eXSv4;>UoU&Su<_~K9+SC=2Ylzt<{+&V@rz~nd<7I zdt+;7js;xHDmgRc&VF3Achh*B{q1wH-Gz}hQ7utu0o%c|0hWL|e`j(IlP+8YlrXGN z%Hu3DYn$d0ls+RtYz;^iaeTNLBYbevcWxotO z{F;h1Yk|MhXu|H39`G9z`CUS&=dEB;_6qo7wXhESA*~`nJOUb~ZMoO}!{bX9DMzI| zc;aaw4f9-k@*>n6SGGEa+D8oV>3rQ?fT)FPBm~?g)Z*oD1{~EFp2u+dlhRymbfv8% zgWXcYE06I=kwRB|#0s~!lbGP)zst$Vhi=3OV@lA`^WQ7Yw2S<0rX2F)<4Dn6b(i{3 z2~};P-_&o^TWqMZx%>PbRYBANf5NZks{F5-<<9%$5&Kovo1}$1g6F)w%NO&G?(hF# zmwDGuFOZv{&lwj*S5LmErm0Rx7jP;}@1L-8&wQoZ5*Meh0&OVczr&)Xx;6KcprXbK zIn6P#cM$UUfJGG08JX97MsOy{S|*{C;)BuTOZ&g-)*yupD9E5 z%j$<9!J>VuX3Z|oyvRQ|Is?%>u-}LL(RGCkO~S~2R3;?`FsR}fv&`TDH|`0iFRSGa zEcS5@iBvj|JW_tRBq8m9H~Z#W4Y4!En4Q68YQCBYo_g#1ThpbdpB8_+vouYptx%+a zH7YXqAo}stgTe>T^5JyPHvA9Y6t?X__IEM^HT%QYDt08pp~OR%$jEMBtzi~ZiPf{W z0BXwpU5d=3QyB~ELeW;QyP%)*J6m5Y>nCdvfFx+ioB#yh#JRctUh65*U32f{^W48lV*{N>xAYnj-#7BhPL2SU0ncm;~rTO1YV}BOsjMs zT>gh+A>~^`H7k(@PPh^qHg`)@aB^-O8sN+U!ZK}DyV<+1|Cp)2Xcm9+5+tl~!*h)R z7jbGF{yT#zk0og)f90bI0`GL_$j**w*Pz8WuQCa%`@{v!c&n*@-~X(LUNR09B+}@S z+s0OW-GJpv58cAij%Ymz{UolY%X_DaGJ^hdrZDOW^V^hY%-$hWyuxITfJ4YSUpJ1l z5as=YhROj!R|sEA<&W83`2a1Mnc0@DS&GrA9SrN~NzB1A`V@muf|NWNSJoiC3Frsgv^r7J!0JeG;&PeoIJfdtd}6( zZsnmE=s}KTbvlh+ogJ#(HCz|IAYMJp{{(GFjHDOQL2gW}+-axyuYcgNae5JeT7|W7^1Jv|Rw{91Kq{ksVKgm7rO!a$QHsZ*O!a03X5`y6 z6=X%ur!PL+e#Bc71Zcx$wr(74fy@gRDFmK!{O58<)=FR6hU`q7$fH&UXoU(oAVMa> zp6-<7PT1D-c@y2qAM$cEBc3f=T(a)@_K>Ff*;!?Z8fkttw~YA?Tza6Z+c(N-2`6RC zLDZWhA~T9tRn5-{mc5zAQ^%u|6sJ-!gfH|?Y8sM*ZbFB+PiD}k{T(XpDH9Q=AS7U- ziSZ>P$SZ*Dk(^DMk*6efGnOj0biASs4MDA6^R@)*xhR>u)mUvTQ|#hPX+q6&6J9q> zm!mRYf8DCO9jrK0JVGM`0~o)8yJuj_u4+&ILjPzk!@nJo>EUN_B;2clPEtWsa-#bR z(Bo(?kV_t@Fr5_)y}eVY1Kfrq`3d4DbGi`_nGjOrgVEz`1+Wvdy$MO*;;=c zX2k`*?rucWF9fy=^i^wEi{)!uq`4|+mu%PfQlYe{TOt|CtBs&hHm!}$)HTN@#>Q|u z%X{O8KPWAnfUjfMR@ov}6s&C%f=%k^5Np6l0uvJvp`+6{7FE(*QH%jQMcXAJn<7=_ zy%|+TzW*Bd7(+E$yfLSEqJLA-2xiOdS!_{FWf=Ht{8MEgOo~&XG)>}5Q~#_RT{=*Ze_}xaeZHa% zWcjr{%<5!y5o;7l=hQ1N%w67@*)0pM+vkY1m??MG+7Im!HCGQiR!v;Kfn;W4k93qE z0P?$jT!mGqvs7yt&5_Dq%*;|#EB89DCzHJb96Po#&RfhFd(zv1kKF9ung`(`g8Zog2Ws3n*oISq5(J2 zHT4NUd=@m~6HfJ|b0{XM{vv=)kjob-<`qDXB@P|eNd%{Xy`118W zA+ImNdq}Lz!L`mCwc>hDrmF4l8l;Xs^3$^s-p2Mv!mlp~i$yuKXE__ZqWaJVm*>%c z&L*AkF0Mz8DG4f#EF(d`EJi6)X7R4uia%K$E4CySbWn1db2YY1?{A@_yni5{IoYqW z(@q%6x`pyj2W$&3fUlV;V3i4lvE=Y5cKiefjRGd65s7yxj6~p%5gILKWw{RvW=b-L zi{{IoBBu*zaYkk3Av9oB<##bXiSVw8D4%zmJ6uYcB#yoUbi9oimyB|5)O8zVSHJlpKPI>shu;1UCv0 zs;(p^mA&hw`oP?FrESPw)j&Awtu-P>U-XN!^RgX#Lj(u>B{L_!aw$ugd)QYSiQlP% zYdO@U8Y<`*ig>913UJ#Bpp)=~g6y`}%c!gI;sd=qqGeq^-AeeDDRmiUW9b)zIA^vF z-$CRytQ_J`p5SO}?-MoT4xGLid?>2v^mzr)sZDSGd`K?2c?C@L+&srTPyIV(mA{3B zfY`^H)5O@h5_{w|@nq_4;X(7V zkyL*Q%&tr~M{1)j1H?JW68vbUaq>($YZ05~?yNrgWiqBjnzXnmUDTK6agz?I_yXc}ATCNUs2CzQR_!cIkIws=vH{Xfm9qC@DzoTpCsM%VEYrxhLv=u1)h`VqjK(I?%>?Nfp z^QYT_YRU|6H+2qD&OqdF&mw^tBpAV`&TF&2G ziFZ?5`4k>SyMBE?5+jV~{5bRq2+oXgi`Sg8PRoBR$ZEP(vZny221B5D)WUMnj#2Wd zaVR@rlwZt!Vc(0}!TC-rYSTTPRO9E2J1@x;U@I$bke^>VM(UiUDsSK;_afG?gJ966 zFxXe~(eGp#Js0$1Lc;Ln9v{0dlFC;vk9Cox+HWtsn4j-KG%+%tynGJ*Rq zT6*_!G&x5lB&5-(96Se<4$-H5fInAZLDX;Ve<^7i*;9rSfA9P@b6O`9N?wS%J-S_w zpK8_y{c!JXzvS6a(JKFOzh40XTl6t_iNhg(cP_@p{7Tecj{7bWqJg&)_#mxu~uAY}E|ZPr?w2wRy3m$5BT zk~?H=SuZbQkgm;hOM=JjY&1eC)q<2^n_9rU=tVhdIS~%-2-_y>U21Sj{R3#50LosU@gy8aBe zSt=;)bQy>=j$>BIv+O1JbzDSc8CL@0obt|*p6JdpaWBi?8M<8Tt3o5p#^8>gdE1Y}{d9hpAl~VyFJ+Y- zUBs*S;CXa;Jdyjb{e5oHzCiw|BpzUgBLl&A!$s=g%fcbi_)%J<9 zgN#cKhcy}B+D_}Q3ZW&&4F{~3u#vf781L7tZ#pGh_(V+hQYjQ=jz)44l^t<~Y>X}M z&!n8@KR>5z>pVa2NyCno{aC)uI5jU&LbFd8r%$mr&#J0-uO7)CPs!ZK&KL&GH=yzT zXN6I)ZX=#j4-h|1nQws$@3@7;e1Z+~-qf z4bHUd@UK{wob}B8$Hr$NCvzW|dfZN;x0QGV!3tUWdmvql*fm zyG2I~+EB)KNJ(0~RbB=D1{)uid-EQ>0v4-(=Z{j=nfkp!!78v$lgZqE)L4`{r3CXk z=+H$nT`Z1RRVQCrni;8Eq`UaFHQtXcZ5C+9MAD&B@eUJzBUd0W4Ctg86oLismhBGD zUuNF+Pmzp=+BLQm3eB4vABFCq{_`8Yc@HuqUXRbga3gO{&=uZSPe@tnl8*iGkg2o; z5$Q<&+=RoG*n5uB`C(DtzK(ZAts%^Jv#>1|k7cnnflQb`FP0V(WNz2rz49I$wl(e< z7Uz^grh~3L5|OrV;A*T?v_N!-(*pS>=19cTrLv9)*CgWruwZnY7^}A!1WBKR)4W~* z8*U`xT$K^?%`fqhu=orcHTFMheP(6(TU8AqNdG;R}h;7!$@sCfDV~^QM(;A-|sYBzeVXDsadOZ)|ltC-B>8d&k2{A*+-XMzDy2$ zoAS+W`sIEtv@-*eaiM;cq_enu1w21!dK`{A?o=^h7Rl4ScT+C%tWp~$ujbDx_$R2H z@Hug;EW55qfZ{8(!n$M74ZFd8A8R)2gN6co1oV+>)5q5DFFf_&g>D?3CYm>$DIwu zMa1JQizx}wo71UAO%tn%VhdRTSKEc^J*Ssvl%*=6gqBF2nT) zyiUdZc62-6Jh(RgM|z>1PJE2yc@}c<#q8t$!zgVyPvT1dPCTs0Vw}`RwoYi_$G%;D znSbiMCP6{H=~n!6jYyWVsxZI*CL!S>2@>P`h?^IZ%9jcv#hfzd%lm8vy`l>)eP5zS z$z{1~GbQ5MYwRU@$=Kk*mO&N8fA8H;bvE9d_(l!wMN+m++p!PhpHJ@lrZQD2n$~kT zYXo#j4SZzX-*e#}xf2rt(KS~B9c(^^?@km1n}vT2{74?a^ZP#O>D-1yB;aN)Q9rpWRMI)o!1=~MlKk+Lu;*qns+ z&yXB%TvUP(dYusSdaonCYNuwUtsrmU&f4w(n2SuUezQxCJZDF9=NATtCzqgXJ0WY@ zZrzsFqKb8n%{{BQLAzoTNVV%dMe0G^8n!oIVkVUuSX25SCeIqvbk{D0$jDv*gK-@y zvPw)fk$(R+vmTXAM6u}mVXLnI#y=e*eOtwqX*n7%<9D?E>9?`Cqs;x5YUe94eJ!Y` zF-KM@gvhsj1lglv+7H?V4_YQxtK{J#eQ|2tx#tgf)??oO=hI!K2b8IX=`A{pBIpt< zEAJqnCc5)XrY}J~BS(%QNLVcY<{M)7iJPo%(wb~~Qm5625BbR8Bt6^4ydJ9ZV)26E z((5rMGVs!yMwfnMRFXZzc!w6bKJ_6cp%5n%^lU*2Z$K&|v^#pHn){jM)sh9sg>Vsy z=l~Akf5k!+XEp@xm9mxd9_LE+DgHK+fUoH<+`nW>Mt@toDbax3eu!%-5k5P$v-*b% zWkx7F-p0S=2OFSF9o0gciRV98jYJ(7TA5JG3J_2pd{n43P-^svIHkJzhjMh8-t$dB zBOil_dw}Y-9~VLgif;fj>F?5?aIJfiN47CO zjRAk**uby|ETC{%{$N?r=j1xZwIRk$GnpshXzehbE6=2@<&*C_!{ld<@ghxz`D?_t z@$(7b3v6`dpPB(vCq)O9a9wgx5UhWuxqge4o&?m{hYU^a|Ljk_q%%Eq$Q7QSzkV)42mzZH}IaoG-pWs%;(Tzo^F! zbX)E;H8U*oE+j0tu@-CTxrY5wfz1eo&|RQj@Z6)j+u8grW2mA8JJNA5VhNPoC2~el zf)+y^DbiaTm!%+8Oi)^SYkq`76-<+3qQb`Fo6iXqKL^fFzN{BgY3798o7Wz=rd~N5 zj=a&&t3UP|1zZ#V4Z%(xY2s$Hr`j4c*;K1!mC{1a-VWwFWXdP*;WYbU3PqFGa;XA7}`~o@FCfb#jluzUP zE6W+OLK^&I5DuAScX0Sk{=Tv{4;PPl$K(yg2Rs(}M`5PPX;S2~zaP-h&|Q;F9ezx< zoPGR2r@=^gYY-U2f5?_0(OSvCU0~;24Kv7Xa?GGw=^)rlTxbax0v6^;dSE!KvI?N9 zB@oojCHKWS1`3PirxN9eb=LCMNSwUy&u%5W1p=RB!aB@Oxwbq>RG;=iM(IiXH6?2k zUGq!aH5dcI<0B0R9}~}(vt8J*OBtPl*uU7lhnEN9)xy#9?^Z=c>6{yt5p_*Q@NHHL zYyx)^p>KS8iOGV;vY|Ek9G!Hu_I|#*iLOb{_oK_G`x)!?d~S6%+3?kHkan_|{gAd%OW7xvG0jXNp)yE@M7`{xT+wMIebzy z)0@Uyk8R6`6Tjf_I$yZqojj|uNEBhDy&C@yk_G9NT+;5!B}9W&690 zt>xzs-a9{4;u6x+Ye^8%!hjLhQ4b6(;(j>haC?uNncgwRv zVJ{Jeir}2l)@_6`AhHHmvb~Q3@{e2=t+#S_e4w;!EU523zhXLPGPwkvcX{&B+X%Ua zWL@qyk?@b8YY+HJw3Zs?-XtiRf-=ZyE{5SHtMRX7x1VLJNM8Z?!-WQ%YrboLM>FI$ z8fL*|P^vZb3bku8RqN|`r`C=`$+JGJq2XH@f;!8oGRMYt)-uVmS4oF8B3IZw+b1P;lH`(0IMO)f4(G<*+l6Mx${2y-8XVT4W0yB!*;kv~cl zobgUv@&emk1rPawQUeUJ5m=f}2ho0!E^BNe;8#H4HzVwWvRyqd+>dMD)I)}UG#hBs zD+n-ji~%`^KZSTAFS|{MC&2Ue$91qKP$L8dziV$^yl2s>VaC%H0qX2mV=XVnPAw}Ye4SQ*Zr*@Wjb1bNqF zoR#X+M|g`re8u42y4@^j*v$4Q(=n!<&d0+hAZgXR%m)3yB`d0F8I)ot?7$zCAC&Y} zl;Y{^2fg3M9m3Rk7CKazn_6vq+02T))l2ui@FCj$5r=Y<#CrsFyAV`b!@YYN_> z4T=1e6KbiwhM>gPgQl7l{l#1EbUEB=)__wTu+cycPquKaXKA;IwFR!LL}Bwu(yF9a z1?3G{ISp@boWh5I7xZD5Y+sY~V52H6A5R;*<NEDx20LE?JgGz(z24v8VSCmE|CfS>mC+u8p0}`RC9S7^D0Xj3XuxdkE7`PBAlQ9 zY6;km^QADR_WUxRmUkV^56)-Ks{9+OCY%K>rjt8LJ ziA%;F@>G3z1r(zc=@GjdH@L3`pK*Kwai%wlo7b%>BB7VX%31vLARVK52(oQ4;JH`9 z`e>ha;}n&x(ZN^53U{Zb;=HBmt_R0+6TF}8KV{$G@uzK$;P#O z;UEfhj^Q4%p5C9YpN55{wjNl0XXmTx`->|kdXH4ooP##;Q*+_GRsQ=&*@rNjubj}@ z1$l9mX(myG9>f4W4+04RYzH)8_DLk>0NW&_$Ei?dq_QZ#-zp4RK#OC@36|>%#JsDVn8`&9ejbZ zdo~O|N^qL@gkd{6~|7jp(&Df3qpburE zYh_s58)Qd4XQb+|^>ti6hg(Z3nCUW2ELLY3^9DCw7t#+!dRdNtwn{F{70inZ^upiY zyR588=r0oF&gB6&w-`W4m$g_V*6-g@S~vS&=4H6cAmELMOC|RSQagoq8ju#+YdS(_L%hw$Of^*84yw_KS(*u zx&!;C`OvgmgOHTVI`=K925Nd1_S#yms|)vE0d)w!lN9HPvVu+c4vhon1Rl#>o@gKQ zBxW?vqtC<|oR?@zVKru$AFOI!*80)0%DM=OxHaZGop@aQ2@mEflM^6#32xi0TmBdm zi;Sghv879dTP&($8hcyvm`(JS@*27735ou2y{`b$Orz=)cyArk)ihg(M;=J}8mY!| zXy*$?4!1wD4@=*&t-%vtpo+ zWpC*M+90sUp{D@8e$gs0@s}rCM@0Hp>BRGf4W)#yCnyn>$jV!yLyl3kWuPT zXuH5>!Su1`1aK5LBe_7Ri!@>d%0JPs2G1+F80azR`T5kHjn)aDZGupr9E6h8BAg^_ zRTUIwA#RCPs&`#LoxDjuO3M<}@OPGRz)v^Bg8wb9AgSg$&~pB(_vr_Xb*$gFDa

NM^UXe?L(@N)O*`e(JAp44J+o<&%kD73g zb5z6!ZDmU;lTY-8{p!4?m!-vK@9Q;hJOV8Ivo{p>>gWZYn({ec28j16o(r%3Dz6x3 zO~J&d9SzjwCD>5wNIvsx0Z3F4orC?of!3Rn#LYT<<9&bDZ;eDD_xrR+hLW7r!>R31*NZmU9*JXtw|A2 zBe7Urm)5zW63Tm9q0d3>k$fv;-R z5e13yCuvKY>s;_Co1XoFf^sH(YgR(Tb`9;}!h=Ri9lt_R3O-iRKwtt8+eCxv^Ml5O zmf&A%rok0{VYOLT2OAY*Z8kpoWMFYB3w*;j`w$`^(^#iQ91);xEUv`#^!LN`kTke^?d z;YpA$yZeFyT`S3-c#aZiwaKKN&t`OYEKkp75=n?!mK?L0KXLtS5Z3sfNC7t+-X>=m z;=qz&yAJQ^n3Ixv^`hmS0z`09wIAE}I4T)8D7C@VMWEd^0Nag~&F?8Y=m!^#HS zRoiXZC1$q)w~?@P2h!r#1q#S_%FNS7Y#4TWeK2^?ZMK`s@$#J7elt07KN}*(;0_df z3?>I3Ax#!@!wBlb@gIjS-(!bjotj3TpWCcI)}EG8^mQa90EG|o=h7|YTZ%qeG_SHj zD(Hq33uR5I=#qmgvD37F7ts|q(`Dh9T3xq1sN_)>kM4Nb#)0+9jS%E@*d*C7gdDv6 z4irUD!QWA+e$I0GFVn$@A%9Qj+TGthD*i}S@LY&*75(zX@o$gzWW`X<^fTgq*2``2 z5su`zQtQ4YI?7Fj_(y~({wuMFIE%959=O&WGji;;fY`(!v97~Mw_ zS{8(LInYxC+|>RVO@$KgH0IZtV*~Va!Jk)NwAi#x+x!yrwN>L*O_ch&0q?16A+p4S zrkS0QK)ux*Jsw+)C7$S_5Sd5X@TicsF@HIU2(lm8)jQ<#(YK#_>T@6Wrij)9Mn$Ms z<{>QBAp3Tf@d>qEePHp%#}l$6!n(vOs>5^>i(~xk+jE7HGIwFL6)H_dt^{w}J8q+kE-9+y6 z@q6dk?SNguQ59!>IzY$Ug%yNI&ngvBf zUD=V#!n;^f9Ys37H-x~vUjc^;vw;Jl#a!KOhYE7yQ;i|?qGxJ_*{EQdPHD#zYshS- z>RgVw7H?O}Y+WN6Zj}?8IP<)X>uP0JNd^meUnca?XO^O?AVA+@CMNwL3x%i7uXduT zvNX8rMi%N@`uR?a|0F?5#+SsJTICp@QBHw#6Z{ywWdlvdzk;uUVjdM$H+_qH`bP`V zn{6_D*+nNT%ytTWx#&J%l3zs-#Fu&$wu(vNr2IxoRIz0E6)o*kV-;H&gq{wzI3l;b zVK7YGTd}3pFEs&KA#oyU*$H986@wV)N^chu;BaXGwgYw@)BkKtm4;+COj8-R8wC6? zH7t;6&Ld_ry9mcV^8#WtV%xo3Q9)*1hqPk%EA*i8dK&Ao?x(YlI!OEoc3WfWJ$KT0 z!hrI+E!EY8q#IhI>O6xF=pZv`S}>WX(dF5LI{ep`$09orgw0^4Ai=lkBg>+LaZ+X& zF|13bUwQ6Pbt@tOUfs6&7$HiddYQ_ST#W+H<{Li&oxhL@gWMMj_#B!b)f6PfRVufJ z%3PodN)?;vR9^%lPz6p_lm|VQz7f+}gqWqTD(ZW5{nwxk#f#(n2?9%ugyZL-rLP%w zzdefOa1TQ&od=~(w7mB=ic?3b#->N_thvDpYRYdp>C1$Q?R2|4eV&emFsBq82fu?) z%(wf^IwYNJE$&FgnDcP&b5^@AF2G^?>Uu|`;s)&DSsBXGu+`I#JZ!_otJw-ulrBNH zDmcM(0D!z20AW{-E>TIhjfKk}x~p<&N}e|mf^fylRP{>|JYB-371`m*QB|8K%MLJ% zrNFF73_1s33L15^sDhuDLd_XA2YYEGSN1Z#%ey8C+*B_aq)YQ1s#44>F*tLE4dNp zNb6B@^#KL2AEuC>aR^B|XH)Jhcz%0_9`*ksfbFJ0gF zroP!`VRejDsV0v=fnV|?^}~NCEPV&af_$+QzJr1C$^%;_qY~%XhOYp@x)ajS=~5EO zNS`sD!mXqt50(4E3+8|AW@pLeCU_^DU&pNG|3Vw7dx{9C0M@kSg7G-u!alKtj!dSr z^ri=Q6DQfgl@IP@W3k;HMGbGvKn(sXK=(Y>j+r)M0wnP1=kYR3P^t<4&RH3kb$bg` z>VJ*(E6SVa5^r*OqZB4cNwZWdMw3Om+%tqEJ;Xm8un%$EpyV&4UZaDos2>rx^bR5t zKN3{W{F~w@Ksyt?MXRi34%8q9s-bh|=Ue9H`{xb<(SuNaN5K0>&G8qfk>W(nM@E~v zm6b^9@)&(5$Oe^buZ{op=uw3vMy)f1omxi2!xY?f%dB$E+f2En96|^blxoDkv)ZN4;J>rN z@Cq|Kj*svRw?sIbv2_s|Y65sULu~cVV?Y=V#(#G~y{VK*xE~h+mLnWv5#k3CKOYjp zodZuP**OQPv23{;wU+QBiXlBe)n>oE*r|t->iz zw6m2;$&B);rRBbW})SbuwP<+06Xh9Izo*M|RZTL(n!&=7k<<%!jka zBCJU(s|&(IXF`~Z2+w88g^vLIuL5z3M%f^}C$+39Fqnfw&M+NPG9ofX4tJPVRDWN> zP|O)&3%p!PWmx{>yi~{;qgjV|r|$ft&@`KgxN7MSc8I+U?7gQ7LXwvghmd*@PU5gN zB7YsKsn#RT^dNx00h7P#hPosIHHLG&glBVrC(5m86yGz|s;YRa5Nj5Bz?M2M;wK}4 U(!yjiI|yG~RWvXH@VfYa0H15h3A!Pl zz=A-Nh=3bFNJl_KM{x5EzyTlt07waLtN((4@OF-ONXf`=X$x8a0TI#d)QQQcXzr5S z+WdzFkkH*BrRSC=V|d8OWAK7S#yun{b$o&x$jti~9vT*&oRUAu#3y@S{*i{EiRnuZ z&$KQ9!3SR6p9>1>da!av5%sILzVH2K^KS9qf&Z6tl3PlEjsQS-yJAA3|MCQMghce* z4AKt`WZ=Y%?tfnJ+$;bniEi!ai0A+iz-0-HM2ImD9`gULfZx$GILA_@%x!^$iQQjT zk;AS!X*^J$MVMzyNMo>!aW{&`Ly8gAvR)cvqf)}M%EGt(Z^d+usy3j3+1Q{O>1XA| zU;CD&91U7R;)4w1T-#7eO!EiR#zs!yc~dJoC(zEiQK{ACS7QzQzgdOR7&J{!njw{C z>#u=ry?*0Ea+NWBq@oE|^25$%Ed&)XJbN^xIO77q`a4*8M7!txPn1rbg2(0i{W~Q(|=IF#K+U{Vn-n89b>C zSrcP_S1D0e;UljV6!!4E`+t*~E_=TPcR=Jdp98Cg$~7!#9G4hWONdiQ6_k z=XwU5~-EM=U0g=-ma;s%R=SFmbn{%+UILyugj)AO92Zb(d%_yR4(SEtwR2r}GLUj8-N!Bwwi*J<>IzxCAooZ}X9*vKaw&Kzpshi#= zw=F1J-j5L4V(}$9?-zBScm9*xJUg70d}5>XX&t0wFIAi^qP}zBCYp4QL`3*F?3>cd zEQ=mfvHG$o>!KHU(e$m%p}4lJ*g11R^-}w*Nj6TbW&beB(`Zf*|Kv(u0uRhAOAOZA zju@dT-7F=;f)#zIMjfplrFUo5Hm#ojpa9AVcWd!O6;%4U6WC9H!g2HdCQ6altPgdP zK4ambiS~Se#5-gP2b;sw=Ay=<0b8EKtMYVe7x|dBQSL33NXQY)QD*qN49Fwv2>5g<=NJ|M`z1iSmm9jEuf73)_zkSA%y&}+| zYi>e<`i#!PT_-|ibD_}P_Jot_RYB6#N4*cW9i_3pi|c=>{$3Wx4a65IkTkszG9~|) zP)%_4&Pqv<^VX$di90W1k-6Om<@zL3K*0d9}h^b5DNNqFO-&9~q zc>}Zg6tl%H@Z1o zApBE$EVsi6F>^Vq>%5+X4AS$DvBQuMldiXPQzU4FOhcz+E#KEUmw4Of&Nd0ST>9^V zj@|@t%kZ@HB}4Uti2Z4lIu`GT?=KL-2_I)Bjr}Qx9BCbX56u6~YVxeRIffzJ8NbBn zn`)VM10XPN4{UMti5zjC{!!`1o+)<#QnnFwxBloqR$l9l{4|G=+0h=i;lxTd5<)8r zh01tm;L@gTshhOR_r5e8Ik=;vX!FS6x(`9brc}FZUjhm+p5mp8|0rfE?T+cM;>F@g zUgdRxSSrV;TyRnMPAyJz^jYQ=Z1&49j!(^e@=SG7qb@W9FVPROO6GSecA@bB;xvcR z7sueTD>zEs{sm2k=;qX+OYSjfNOuaq)!;_jy4n$>KCixz%NGQ7zPN7f2x9iS0pxS< zf)~onZve8V`+bnYGT_21^vkF{br(*rciP7C!jg?8jzzIl1sIxENMX6iF55yWD&UFh z*h#{ckjo9A`fC0L@N5rMJITPe_aMtgXDKVGvq!9kyYG+6jx7!awU|a<=S|6OER7V8 zF`aq8Tr=~yKTDt5!05@&tr1`wui;yolKrwKHM7}EyrBckGY>||G}jfCeZ<3?+kb=u z`9#0*+c{ii` zdq!3^TZC<fGpE`LSH7=V~lgc1}PjOhJVC?n2OVttRR!_YIsy16o+7ic4~f5IY{ zB>p^spR+22pg4mYz=+msXlAQ$v=u3}1zR_X9H(2}3MNg<*t7 zin;Qt7JU+CdlMOpsN_Yb!bN7$Q01nc4|;TVBKj0&puC`c|MtHRE^;*U=BA=&oUL5V zK-$7W|NKb0WeUY|T_)P~tD&Itj+ZQBZG}E>moiyP^je&oG0RKO?I@s3zP?8KjfDQ; zrFMKLuyMpbMxw_t?qqVoeMGD&H^aeubsc>crX3_fOwCt{RncBK;7v||=r(S;`iOha zE!w$WF<>TF9GSD^*>zK3Zgb6}U5l&bV>euJw%5Dw4Tna3 zB7FVX|2gxZ?)EL@N8bJFFWL$uF%CC?(AJ--2=4%O#L{+HOlFBf{7XOBP{?V~=+2qn z4Ilv2ZYo^6Tmv=KG^}@VdE$QZIncDAOlrXnd;rU`Cet1?RC7!IObTIlWlkCXq5R6- zqA`mdy8Uo7Of`N-p_<*lZgM($QR5&s{vX%dDj*Y$+;f%#RuOIgz^wG|ajn ziOjJ`PxCQJEYWEHSHpCiP&yB``GJ#01FKbU@h>fs*BjLUf8cY!f*E&nlj@N{JL-D8 zm4n0TqaPm0H1F@rTT^=fGPA4<1X+rUm5sfgBY9$?gyrSCng+MQd)oUB-@`4FM`6B+ zo}o&iN@4i>>qw}rgheF(XPLsMiSKt}32{+Gf_W#?aTtq5*LbBRMF;PhP7w!f@k$y( zcpf#__p`;;b~&rFi}<(v#!#crZh!;DO1>aJ#~fk0g>;1_g*RnrehJP;MrssiAIj4Q z%2$FEE2;K%%;oq}wOcGRQ!k-pUhB6>1U=cn32T%OoW|WXdg^th9ILE0R$YgWUzn(q zqU9;dud}=Xu}ugEuCtf^9M}gB_6@D; zogEp~GyGK3l8Ck&Nkfxp`%IK^RjUXpmpMAMvRtmdCns1+2Jppt;z^T5ei`;tbC*fV z2XMZ&qHJ6IU^H!U*A7u@#odJ+R?%$7rTd!(E`lA09^3$Q?#u+#Imai`Vw9Yj4wes4#@UN#=&l^x5H?xIsQ%nvt zef3@TmN{!pxTdI#?DZGC@Bb=R{A2)uJZ38KOmf5mpT5ey^pG2zmnYWNyUrWRrqCnk zT0J7rC6%7+H1$}FTGN;$qo-|x<3^Q+pRkLlJDR}B{*1{cP)>F+41aR9VU8+6{Egno zx}O=R`SfnqT4d&m8#Apg8F4I%VbHwSIScVOcxT>j^{*+5U6D3Sxl!9s1>wT48cQoX zHl7k)cOaQoeI~LcFnRCFsSn~c74G+#A{?3ilhs>|&=>BBg0dTz?y4hu{4nLt>sj05 zhh+?_yb*;3A!-G@Nqp&}ko=T*W1h50@56P({p^hw`Fg4f?0XCYt*KQaaMD%+U{@t< zib3vep1Vb`)n|lTmUC63kTO-ET9FH1A@X6nr{E$Ts+nrwdF{0ywNZNeIuxSQ7=Ao(4}BqY=D(?ZqowjUsh=l( zPav}F%S_=oE;{dI8LiD=>-K%9y+KVaJ$oA;mKj^s>U`o#&=kz5s2N4fA9wk?MfV~O6= zlCO?QXHy$X#bmiCrVq}O`gnu(b`@Lkk;!f04l(aD9o}$hYr%||;8HRa?-c+ZXHGvB zW%8=FvWAHrjxN?p)+%je6~0$P}jQ8lxF^W^mMA6f%}y8(b^ zJM!T%M$8XXI9-=SS1PHF#6NY$l zp3XoxwHbJR%?>B+Axq2Xc$OB@HTvoszIovNS7`nKc?}g0zt$AKPjlttlyrhDd@gVB z#Pko+qdc$TV z0TC4$A4&KHY`uwA5PFa?1gBe@;#>{0uzZf-Tc;<>)`Q-Se_DX6{s;0&vFEFWvOSN& z=8sHje>-0lr#T1vRWp`Rg@VBoj|{C0)!+OJds>yrOn$Hjx6pT|;uf-3Vm|Gv+fDn& z&oGwD3+D-JxW84rMFQzI|LblRr0q2Msdb^0xjB8ioj$Kd@Kd-_JogVQqG7wLw?|&P zsH=Iw8b2cFqXM&G(Q|PAmy5PLdv^w(&Ceft z;FrPJZkfh!*EeBl=aQ(l`JF2P3EVE2({m%0t`^t0T<|qPKB;stLv?3`q5M}TNXsxC zuyR!Qr=xx=OM(-b6M0EZx;aCu^X)d|8pnmBYL|}JW9l{xXS?#@)Uu!^q}I?9)w;KQ zfP8BqSc^iBfswADwO4N~%*SapMf>bJ=mf|{JqBg?PdZ{KdnnqxHG9K`T^PZV$iXh?sz zH|ahOo#QC`n(gC$Jz~98uG+Z_{ktajZ|>`)p;yd;rw^{;i5Z>ZAd-{3|T*5MTXFlrS^iw(wB%(_n^M=MD z6aHf=r_P7LQ9)8vzY}h_tq=eq5m(YvvTD<`u3{c+>Rp_`9e@ztsoz!jwGFiUGq-@g zUrwf-^F=Oo(+FjgAUA+sJ+U|MUD!-3Qq(s|-|Y+1rKXS@fKMx^_tZO~LEdS4 zdV72JDy^##s$MO1?+GPe8Zq&KC|~JXg(?7`xM5kXWNE)US7z{ASgnF>z4@mYhKykJ z_fR~Jpj)=*TXHt8|6bljkMHF@K0?+t$C{6?^JWIQLCdXOC4eu;u#@ z0jic0zBLxi{pZ(853B1^)d!W#O=(~YJ{XS|yF87dUf&o8McqEoEdQV-OeWpeFTnn; zdGPFQ{rP z`O=~*E74G!6NiD?oqPvBigC&M#Cx>IF{Q_cdY0M^Ij)LvYZKZl##-?`HB@@E#Nk#G z{BvD7_L^9;j7Uo=NOwBa5CaI(DJ3N_illUhGz=n*NJtDF(k(6V zjlb`G*ZTf?*Lwf>p1aRo>#V)+dG_7wJZIf~Z>Me-0WwuZ6-5990s+dH3%FeZXcW91 zYym)B9pDB401q=TxSavy0WcQUU&8D(%2M-sY0OPkH13+L*>NvRAWMm{@ObjL-j7<)~ zxra+3h))UCwt(YNQQr?r7!&fS8Kt3RWfKv5^3>8TI4m){bA;{zyRfK&jeAC2pp8+1+qk7;jw1pTKq>! z=#ea8AZZB6xHJD{X6ZQx{|7f%zx9E3M}~hcS%v*Auqty4NVP^3j{L{e?>;!FzXfQR ziUPi-v}64`+Ix1k@6Brwawd`QdJ8lMtiP;0G33MxjQqbwkkQo3$(2`FlqqG;>frt> zWvR@5lkFn_UElre{o2vX_Om{T<;8<8I{0!LSV5z;dR9@ERn2 zHjH=Ukqz!gB{c~>77JLrr!7+|sg`@+ileQVE$0VjVw8K&a=opZe=uiHkGJkb5={N* zWF)>%^`TLtfzT~5zH>(L=sd>ih}teC6?hfjECg!IbL?8c$kM>dgPq|Y9X@kkRp_nhuwUm*IR49 zJo!d-zQad<`>G7+u71Gv6~DHCw9HFpWa7u^)J!4z+JejU>(qJ}^U&!gk<)-=_+75| zbLR@4S*3PngMGitCOVhUZIxN~u~;z1OF@s%-tkHWI$}5TeTXa1{Q;UrFLswrvb@_N z2)8iy8^*Z4N09nXkmn6V;)XXr<^oJX)5^Gf?Z_?9 zZ)vwp5Wm`QOyw7E`Py$q`zl>NRZz{Wi{p#wl3H+@qziS!MQ82-LDWE6#a*(@1^ZO6 zVJ`1-wcyYlztx#DZjp2=>bKI2kKyy*oVldx{gtX7XVA4nNFb3SQzN~ky2*9WDN*ms z2~C|S)OG~D!5ifmpZg8){CBTuNXYg5>yt*`26etdT{7JQQBRjrthT*KRdaf|4(TOV zGHBF^Mj9j&1!u|~81Yy(UKWWx=qIjoN_D4_Sd?4`+aL#*6Ukq6Ux&#x$InGvQrYaa zA~Etzm9=0NHj2H9dMQBiI)uSRZ0%E(cQdne>}7|UZtsj^ukW)ij_m&F3c?yxN+)>#bRdiN?l)N#YeTeFJ_X`w%2jF>zlJy+f$|iR`Htgha zE%#^;(39Kv5?R+Vk9FE`QqD`ki@OXJ(8N-YP|>ShklU4>ur^>mX!|_3HPLHSe%d0c zWyWN>$P7Q>iCK+Kg3lBa-cR{HEagb`j4un~_pxI(=aYE(RXX5?Mpc^MX>waD+PxdJu%?8D(R z$wXgB8@;hCvPG!%){Moc{%~m&D}Qx%OCiPPd60X?gh>|?fb8iWnNPig8SgwU1f#wO zbx=;{RB|3MbFsjwsGowZ>`f+=Uh1>{ctHY+O1g98WU)@1{u|e)yKD1v6V@Au!$Y+L zUWIDW5Yi$(cqQXNoz%ftX7}pRQ5PEaZnj4zaZI`dy*tmrh1wE0*iV98bO-oppZ&~uVLFQ?)?36e?oa^v#E>JZ_{ z9=7D=m>yxI%zd&S9Vn_;cYqkC)Y$eh|5cf#gY&(*!LgXlNL`DxKp{H0k`95*5L3f$ z$quOxfofJU6cXWLS6Dv_(d;(G;hbyTjE9ugR&0m%*s<1e^9e!Aj~08FdD}K29nq9< z2V0_BAWb+SVj!&`nStamHaO#syh`0ru9dR~qjSUifeN|3r|OBRuN40L-0^PM+0s&$ zVK_k)#Y=T}6!O_SxK>s1#D2AIm2e-HIFtPL-L>&Cd=uJ-TT41IT|n7Hg?g(**mKu@ z4sV>#qpA~d6ogIQx#~AwRrpleQz36iW25)9cY$dTp8BS+{f3&qz@ANvJz+wwI`}K2 zqdgAZmv}Ah0HH%Tm0XY|_z6KYovS!&JM0Nr4Yp7OeAtJ-xKXU=2xvb#~SN zTv;EFhPyg{Oak7Pai}GqPSdNO8N~9R2jk(VIpvemi zb9Ed8$YE;gZ?qi(B%M8bzPFw=95&@oBdOL6S0X1|MD|6y?Fbpj;T24prDX(mJ%acd z^4nXCqr8T;@a^5*$8}E|hWvJ16RUIN6gOeN;0;?VD2fb)wb@6o$=Ouf8#4X&1MFLX z7^|kU{Y8TNKZ3Ts1@dM7rD#BOMI*)bIzne^z{EdRcWKTGiaCJyoXc&X9JABd(^{Sl z5aa%8h0-S-0~`))unNP*n%Y=r-*=|d8X5Mru3u<%D!*vAY=3IvlyruFj|skEVmZ|9 z+NK;EbB&d^{tkfSrTjBpCBC!JbHh#;}1(-ruJ!c zt|O4MWh5raC4Qqcmh;(vW+4H{IChgW|Fzef)p>x{X&yQGPTRLra zKZqaj;uL@Wem>w=_IdwZKHiUTzou*1*QmqfX_IMWoQ1fP8fOcxF#of;r4e;V`pgxOLFP374iWghzZWAwf9&&s@`^R|KJh=|MZbY*r1DpBKvv zO3cG{tZSb3NGsOu1DV^0dN_=Km>zB#ey+zIv~nD2(mOQwZa993*T+K4$38@#s2-dn zRaju*p;N7R(9Gl-LgEc>#grp)1T{~VHf+{=^>;UGf=?`HKxE_~xMcI@bNaL71)SBp z!_7`M>}_*mMvOEtk8jB{<;3A@zvdTZ)#vtmzA5ql)YFXmzG)Mz9AoACtpku+o~*<= zZ7(#-CP&}-?VM8iL-Q6WEDc=A@4fM~*5qCBOlKfY4&QiVp`Pb;vXxaW*3dg&ezIm* zL@Kl7o^!l$ruZS=J+iTBRUj3`RlFgND07?GETZHO_#7P-VJDiVmYd_K z87E;R{Vd@zD+~wZ1<33|8{1XJbPK{X)sz@=5Mb4W%8=Z`rp&HwJcHP1HAQVZwbbSl7L%285c=h2|(zILf9>qtDHdmi*Z;DI)v>z_L zoe{Xq>|!)ih?dy4>*;A6sByyLj;fTFW402i9b|Avz`EyX>n7LhWPL1ty4AW5r*Rc? z88BGcKTIFrnX}z(km?{@h;Ty>?-m_><1P0!P@Rf&NN64;ZEH1WFwz}j@RiLkDhMv^ z9p$oiH@TZ`n`GrS@)PA*YEaV?{j$0!Hqjwp%rRkKa;QCnVcI#cSlUE}dZ%BJvIUJI z43Uq|l$i2D4;1Jqi5egO7?oR~3k+r=Lil=)x1g`jULa()sg8cg50dqUX7#Fh1=5VJ zJ2N1Ut45CsmO!+a?dM;DfGV?Lew2ZRSn^PHIcYwvwA zE{XZm?{ZB*y8bg1$Wz%rE{ik6FZgN~vEF~dxyr|?td_xG(G~0L?6LDG)lx)4omyJv zli^lG>WnLDD0a?o-=uc;sYBH&KpoWMrCngjJvBQ&tlC(uzYRlh@;T68H}D2`h=8p1 z2@T}~rROaCsw=E?NmKUX$)a78V72peCFOKG^aYkbHDs#=YL5-_N|06D1B8~9(I=H9 z@Ad7(1vcY+EH3-Icb?SF9HUt@r>Oap!^}Nf%4i+t#0*+xNit6hlH0U@BC{?GrQa0k zUnu{KpYiVTB}gqee6*{X#9^VUA$C;D_sA$;PmEOTVb59F-n2E z)vid7y%eMRyF70u?hniJHT^mKCaAHS;P$RB*;AW7L3-WYSYtO3U$(2dxih1X!S>;(MI{&-F^H_y5}El9zCt1w|$|AqBK-^ z+9}^6@lIYLLTh7NMhiaL5=UQQ>GpDNp3J-N{zB2k4KsEo?iQN&Z<93Iz40l^{O57P z`zUU%)u{Ygkh?PNN!C>+W16om&g4Ls=Y_)jklnH1=^!aloBxIM^24d#)jo`NK42|$ zDlPLhr}+W(sP{;nivvT$!Yoj?s%oa|G4_uW<4qqX1r zK@cMu9FYpi556w?dbLwY zvw=SZR!I@CK+<$`yNctktEWbq#}f5TM!5oFXUiPRyk9WRGI8RLvYE(FkvVAjq*Pc} zv^dDc(My%jWY8gbY_qYg=FRu_p7Z|yyE}XK?9R*` z?A$xgJhS_;{ILz7%1X*e0$^ZZfb{19eCz<&67H7f0HB}%&;tMf`+0uK#~L68K!Ah) z7d{2@GeE&YK|w-7!Nb5n!y>{XA|k*eARr;5qaq=rAtNB5VxyvAU}9lmA)?^mVq@Z> zV`5?crvwb*GY=#b9268BCK3V?=Kr^R^a5zGz!jJT1Q;0rjs^yS2KF%s5CZ@h1k`6M z{!hR^A3#Du!@$D9f5v}D1;D^RYYhbpgMx$%1@)O690GuZLW71OgGFbh#08aA0l+kCR(MQcdHVOGmqMuS5S&K8yP7Eg0y}SV1%Z91H>i?6U`8KP&K`{1=Oc zPR0g>@deZXjmc^3ghfut&hb^n#1Wf9Of?{(ppR>YYUlc66+nde)Qtv#28aOnh(XW^ z#XyVy2Kn$iE0{f6NnaR+Sb4bUx8nP^`hQyS;DN#XirM18>(VR~X^MnyFXaX~WT3k^ zb#E^%F{@5)Pgm48#Nu+7=Ym8;Y4|Z#GWbr|FQ`&z;I(WhCQ`EM3(zW6?$i`~kh1V6 zL2%qVhymLA%B1vfWbtV5p(+YL#q-&}cH}>AfJniyd{K3a!HR)>`eA@_D;m%lpv47C za%VCENc;UM)$>DY05J6=C)-uiSnl5!VRPKh)f2{u98$b_gpIR$87SzK#RMvLDg4DJ z8j`;X7mrzCutYXOCUf;AFehk(*H>!q9G2Z5w^uJlEikN_k_Bmx{>dM`MTLu2NV%%= z*eJC`Q;WXuT)#Nddo^X$`t#J+VuJob?A`5tp%-YzE4r+A#nMcnX=iv5VuUEI zbe)P~!CuUovtxqSW8)b{JdPX&5v@k|e&HGK6o0gKT#Y-o50gH*T-r5% zZE;^GO*zN`p2{}S@MXE>W6#Z5T9#5VzY4eJUlvkHxwc{C@)=6OycZr;VHAIhce7?A zy}D^kdElZE(&Buyt{Mr|RFyd<9;;i3vc#iQa_w%qY^;_10Cd$2s~`nh?!|MQDwT=H z8oQ(|86!k~nJNootBw10qf|iWo(C^=kCh6h{5TQkO_UvRZNI0?b8<%ISJnOio`=2) zv|3W=m4k%1tK&{~*%I-{y;{+8KLC0Xm{V)If3?(7u47s4Q)3l94OK<+;nSLw6&K4h zQ-l@eJ~7%bccde({r)Hd^e6rwKnuY=S$=k6?0GC6L|)2*AC*j<2EuEryYlL@u~yrw zOr1E~m)P@ARDQ&U8tV_Byy+-{;9_A13)xj`@kKYrY`{iIpSX4ELcNkyqsoi; z@x|132r9DP;>f=Prel8^`(I4{$u`ws`U)SwJ)GfWd8Pd?41Yq351_yixKYwbCb3BE((9RY1qO2@jX-B zU$gu$u%!)M9ea#C`}xg~S8ZQVm%2Jk)_^)A_kdmho?HsMZGIUVeWTxvAsvO9kijXa zOn!%AYfT4eJ|JDzigvp&=#jE1*sS~K?W`-Jv`+9wUfSLe-7Rq|UuZ!D_lM{0B)eSJ z#Ww^N_s6AI;|u8gtfyTro^@S4Z%Ay&{lNeZ8^dnE{vw@Yb1;B2JG5LXQ=;Ts_jSj z;mDC$wX-Kw~iz6mL}dnlO}ZF^gcQ6UXX!YYXo-`cav{YjQd%I z<#UE225|!vPLHCe-6c7^cPd-8{!G)6mu#{pMUQgN_scPCGM5M*5FuT7C%9m&$miRg zb7?AEj{ao!@@SCEGAgcUI}AqaMd)f+)znlKYP1t*F6>AoyM#Mne0%6`b&CF z4r{BO*jZwMJ$k;Q-FpcKS!-nRWj{)Oy&F{9ib&D=Y&}@kDcGld066bhhODmYrRpuU26bZ$y3~GQqnIbl zO7t(d)v=rZKJ6t&WaWkE730-y9_K3U;hWX60K>xeE2r?8QWa{Q(L@vdj7!6#ijS7> z6@vFfP}gGx+(3jfIyhg-$~ z?lh`;yqBu54Pxf5ZrP>g)>7U`vFeGTs7Gs-z8uZei9=)oM*fLD^%{X4)k}paGadQ| zOJz$UV|42E$Vh^0RF*=90_GGNy;|aa$@g)+Etv1ALF_C_7i}^uErg6jo7xfq6Ik88$%W) z-R3P}~GkvIk&aZ)yBagb&S8CjGNhe1~Q z&nen)8-#8ty#hwgcN2;{_$`8 zlYU0+j|DAY(t^QGIw^GPayb-wo-~^NBl{WQFfNsJ^uxmVWz3l3U!_uxRZIfxRd74x zbqKl|7DFSdMwm22m_Xfy-PyRT#F=LJfv@BeF{@_YdX*xwh>+$%WJw12#<*U1JTLFv zutowwJoD?|{eYGP9Bu#-fZ>^*(@lNNkgOw^n{Kn*HIdS{w71FgX0m71%184Xe8*&0 z_|Yh@a_$}Nz^;6$cF8Z}IYptlB5ihz_pYjvomzEsqJ*Gu6q}lx^5!a5PHUudxRgfi zY;4{If!|dJrkjG(cq5y`=sZ!5B6Wzo(NvifgvTjGdJ>0~OJZn*nlcoZ-EMbEOR&ts%2l7t zEx@wQXq3iB&|#C+_QFW6_o!?A`uGq&SaxbQvWtc<3dI)Zs(S;9yYY5ijF(z=&ZrQBE(^6p>t z0@dqaK~!SOsQ%bXA^FJ27Xux>7T(;k0#6Z%-Z7Pe)^+2w>NHsPm6bDE??yV|q*oz$ z2HQ;1IQ~3cb!h&4(9>*)&`Tj0q~A?8CYn8@N(A`$ekDF}=G~$k;}B$i{c`+Io-?b4 zp#d-yTOjdnPAoA~blQWxsZ$B6^3%xn+JF0#B{l{>;tm&k=YAQpEo)nBnqHa0CTe9Q zPiE;T*bCcQ%E#R$8M9%gn6w`?ndD+B*OG_u141@36`i?Ix=l&SC}g}<)uCSE43_8S z1Gthp`sGf&my7IKpaD{qvqWyWxK)E!ljtSiqLdl~TUj+Fx3XpkB20?=4_FaU(vQ7Vg(qSBtGUp$-}c*`Z({XZYaF}gu#0qJbl|)A%$W-9YAnn*__y@k zu)btOl;-Lp^6oKG_{@&U2FaYN=hJg$CP#R6Q&QvagUf{|5RlU9^9U6MYiOz&Yf9G2 zD>qlDWLHVp%-GxJ7j*6rd3EJ&&1SyDILK<7hESV}OL#VzE(UixAPqE_>to#X-s711q``3XeHz1KXARNXHM$pa> zR5v)cChR`dixccFE-bFX(vK;ltY+Nb?9Yqw3;XaCB{*p*9Muoohi%`?g-msh-+GMU zR+9Safr>GeCcWz}QleQ(qKMMK0D`@`so=MXyxK&FM3{b>t|DrvW=G9-t|d)5aR5P% z7wF(0qi)MVgbQAH|lyTkDg8NrMZ)+*rk;zxHevc@(HdnIOh;DdO~#);}e&Z z9?8(OZuAcTCg-eXW6B^|XHBiAFTup7uTpv`3T%iSy=FSrpJ@Rq%b6ph9s$e3?3u1K z{D8Cdi6YupC)m_XW3|(DN@V^_vBjWB@n+NdMwI z)t-OsK6aR0>Q%Y0K)K%Vf~}sKJlK!g=oXlYn#jlqwkZVqHJ{?AUs1&SeQ0jS>df*J z;AaML{H59&l*vxbbh6VigI9Jr9H^8*AT9QX-o^)bhY1b;mKXbrPM;25-AY|_SUI&s zn>F=4=`LWoFbRy%C>&f63^>aob{QGdR55k0S*Izds{DmpCpef?3yyUI&td9kZn2pe zNxV5RMLK9|w2iu8w*1cTj2c`Hb`Y05b=;<)uQtSSrg2{~$3#IuZ>6rIcO7cE?#B^h zJ(rmDb0dr@5Kg|h-j=DYe16&SCVhnulybIIAG9E4IjcGs*Yk}>8OE{I|FQLy?M2|E znbFfmJ^Plh+C4Ak_`#(kPA{=1mU3{ss;owlKD8Lt~bnaW|F?J%*GG8EavyhLpZ zL6!jw!FJkv)f6v{j(1>~!E>*Sj&c@cj%U&JbWir_(3E$#($>P!UB&XeT0;u)p1QF& z&UvV>ty2NJUE`>u9l0L=FBeE6q}^_Nro1v$yv$5hb?jU!?jOi>c0sGCUx=mOxwb%a zx=r>zopF747jgU#|LRj${C1M(qmjO3WLq|T^~nrMwGGph%oHO{s?bq$v&DDAmuZq3 zT4;xJc2c>ywc`%n3W<~Y=E5&AajMtxBh{hN(xo;}adi`8K%wamQq|Jf;U+ER3HI_W zclcc80=2N$eElVT%TvZ9b5fg9n_=Ro@k(=(K8(Wtw??C#|@2({2t9k zd!Qg^;*u%~t1=6QtmQz{$k%3}hGmfo^;PozRHef`8|GHhQ{_iVBK?SjJc*b#W<2{3 z=q<4`Q+}Ul3vUWRcS$%WID`5^+30-ZeuZB~$dDJqv^)t7R zgwyNBam_{(9CYTRf|gL3;5K;3ui4zq@G`z>WMoi+ZNQ89C%RiM%n|9cN$8yZE>Db4 zpf?)>R~V)5zJH~F8h9R-^*N+JheqkZ$Ucp|GrGSPx29bQTae`WZS&;F?u{ies+XH_ z))29Ow89{hlvyk{*)AfppPA*b;&kZaO8(+{|1gsO48}(ujlJHX_tiYGEgONG9($MK zSjcX*MmP^X;y@0CWQGLy=n?y}RyIeW{_wA{N8l^`@Ek&i2PI2(Z9WX{T6$oeY-%rq z-szuGZKrP~3=|%kim5jVe`Bc*=o>?-A~~FO<|$O(N1ygyv)#l7C~(zI6dKr+Qsrd7 zbl&hpz;AZdy0rXs?JwC5nV)FNU~;%9xTqVY zcX(F4AYHDrZDM-eJc37Ag)%i29(s>`OrwNMZ_n30#Mo;+e8|Fr&zXLLb@7PiPbTyGri6W{#J19=W$|=w>f+rU}E}62VwHFDTmoh8K8uupy zR9DlT1z3BkKC=YJPr zu(nbgWnm+&Z~JM_;1-w5O7~?lhToUrod{mzk+Wh$&0S{1cBbS(u|{#e0m(8W?D-oH z^=hJG@a>;JZ!>fGXk9J@F)sYL%XguiM~0Jp-cq9|5=54F%_mgZ;}fyR2r^Lkmie)` zgZDawq1+=f)zZI&^*#1wLp6Vm{=}9BDQ{;v#%xI$Yq(f-*k61AO=-u)<;n$ei@Xc} z;us$alr=m}YV16mPrcq1goMA(2j>hB%57OzTys2Zu>I}dsO6OU9sWg!FHC;jgD0w( zxU33!-cUR%!clQdaHmm2-F6>iDZlM~uc#j4(wMLHP&dmgHIbQkOYw-LzXx`)3Ngd7 zi+!}jwPEt%$JY|Y66rr~>p46gb`vyxj&mhpTHvfi+3GJZ+olT|#s+2v?5eSm?o51E zxk?4q@r_P?Pyi=q#*e3lsbG^dN;B3%+2C4MnH|96aU|!fa_m(sxZ{)p@*?)QT=rQRdRy=Zf)Uq~ zmRDQ6QMwH}6_4Ok)9*{!ErJ>3^;UXYql;{BcU@l%Ogl^0%ov#l%RG>&1X=7LVHaa< zmUtHIu?`jz3XRM(oSilt0+CDr#Ry64_E;OkD-4lXa!< zOwES{4jEbf8)(Jj>CX?#M--+Rl2nj_*>`7|hUgpOy7?We%p^IqS3HP8CtMa%6$@1` zp(QLgDyEF0cP;#H1so_^dRbY>Jkg2;u_r%nY{q_ZmuZ_3#FU7~CoHTTM6IpNC7T>P zx^o@tP2$fRF7?G$c)gTg67%<7#_%&TGJ2!U^9Q>M&?}VD?)Tx%D;%c|*q7RFB=PPYZSo_oWSLZTjRl z8Rn(hT&ry0P}EE9GxNLT&i0|Nl8feFi(*e_mBymDJ`!?X2YIJhf8817j_TDFBzm*m>1opHi|0DzFG^!X0=$wV zE7Q7ytR_Eo3Rm8`!-Ww(m#=P=Ql|oeEQ6qfp5yR8g%tf{H*oy@5u{ic?#|__!0p~I z{6eQ9Fl5rjCC7&bVlmBcQ;k2WPCYz57G};`G=F40E#zz#*QEW|0wTYK93{bYN6=kI!{qa(4YEL3V$tdbdzH3;P+`W~6 zk&_)63f*^nw9cKDp^hR@Q9x`pHhDtOCCiZ~sEOW#v9Mou#{=yHVBhmnP3u6Hfjj0o zB656u5m-|(*!N(m^z!kGcusfmY_)2UB7|^BMwWrN9TwdCm8LL-do~lAjt|;{lsI?q zXR#dSW@Uxns-Hf_gT^n+NJHad6?V-7quIh80PRwaf3vkAQxsnx_1FiWKG&#j7OOWn*$k#1xdrRB6T zo1p)P22n|>TOwD_FLkO3!$OxrwQB>mO-|Krq(n4-jBDPQu2*cE;h8U=U3&7Et%53Z z@;7{jYbZc7M_NQfqg!jbIrhc^^seS$K0V^cb4~XCE^-sTSa}>5=E7oAbIma?B(i+; zhVVNU(@9}RuiqcjrX~mJwh9j8(jwrNN)jb-X8(m`R1}n~#Y!B>S^lPD%E^YdgZfMX z;t4?)-A5P*DDW4&y%_08KBzU|M6Rk4wB5B8PQTIkY5U0{&82{D)`#ibvHPqzppu+v zTRo?3ymuj1=#uG=(miMzhCEFvOE!tuXsDYb2W(vp%IUh&ebpxQ5O8W48Fj%dlhU;zP!5a&1a2VtV25Nj$=I?E3op zSQodnAjB*$4*out66cXQUr+t6U;N~koCm|DB6KQD8aAiOejR$qj$@fr&6)wcn1GRX6*1gzm*boFM@b+Lr3)*l0CtlUEEm=4G-7& zMECJhvQEm)Fo9O}@AZl%8A7(aDuzE3a&M(uf8?!)z)VSi6L#M=(CZXPi=|NINi%^c zSnanewN;!Gd*Y;gyY)qD&MrmnRm=c|7u~gU7n=(V>w#3~Ol6)NlqE#f;OMv|{*TF#C9o>#D2^7Nb}XA11x-5T)6b=k?^5(r>-mdz(k2#_ zhdakELrh+r1;W=O>(uu5*Z<2i3cryWwr-Y3Hm%EmKa~GTWCLfy;0U+Zg^AfX$}XB@c?fS^fj+i_i|eq%{_PJWrx+$? zZi)VQJHdvbI)#c8$pbtSe)%8ROG05q9oxz%e7CJ{7NwlGP2Bv~Cwp`57g}N@yh}AK z*^w5+$Oglkyxe(Kipo8#-7-~Avb)}(WorTQD8J0;Ac&tGL3Z=7``RF;Mt*5RrBwD> zP3J5Ed!2{lSfqZPP2?6@+9BKrkqRNYuyw>hm6vC(YOlWchDtu`D8tZ%CR;)&Dl6*E z5e$o@fQhBS$`3$?Vjs=F{8q6G?J%~WYe8xLo+@@RdFjAFI)*>Di=ym`F@y!h2vLx( zabN|mRet_$x2E$XwNNFVA3fQhb62(__(!EMQnMTKxO-@ZT7mo=^?=p7D7Q0sA__rl z4n+v}_1LPSz6F0?L34zsi&^Xo`Z)qs8(3rS2@zX`qF+~Emj*+V{NEG+i-5!Y16V6U z&@((rAsON$s0)&C^1(FocRNo52qAT-l)b zywc=);D0TWd=4@a^xB0Je~94z4}ekJ1FH5>kX%DYHFC#z3EOEoS>Mtn;!K2Xe6BP* z(aX)DrpP*KbH>HM+N8b^$6wl_MoBv0GQ%s>h-9+E1T1SzNx$m-f)77!v@t8Z5)c!=-7W9#7` z*7be8E-0gBM6Gp>xBC)7_p`$;Si@|Q(AFY*_K5^jzWg*4Zanq?n_NXW#h4|_MtrbI4 zT=ZjTF1#nb3jTW|x>8iOG+DNP7X>k#Dpihem>z#2vqWWX$ljzcl_?#ba#M+H9C4Ay zHZ*fv(J4CbBub1ho{y{&#n5y*h-h(6N>K&(uQcD+6ql2uq>|l;RYgY4atV}_Jb0ef@r-jo zamrd$C&}Gd`yM~ahklLK-HNb9uL!>oDqyWSTldfO1mzU}WPeIk+;z{ws;j<}n3Q#< z1ncy^E&yRAJ83W%qjHANf!ceNVp)$_k4!7wX$k&mmHK*>XSqmDxZ`8&7pcuSTtm7f z^)qoi#kA}HJy4>(>~^?PisYs%yeeH=9?8pP*!+Z{MHQ5%htYfV-w#IeDtSXN^HVdA zagNz=1XM>CLIkC#$62Vlox+Ji0kx#A38;a2idz(OLowFQ$sux$#7ZYZp<7Nym85M_ z>zm=4Z{AnP0mj4p&KNO5uM_EOi2I0ZAilV8l$Y5LfYW&9&}+*o@5EDO>x}G$Oos>= zlOV{1-?J!>YJK8BY=JK$nX0YSz@?!NL7UVAQ6&j&xYv%FJNJ*w=A@p`BKGqK5avp* z$Nq_HnEPn=uMCJqrz5=}t}UbXDf-d(F@`Z^K(yhMS-r$QkH)B2sl0GzJR8-FhQt1* zqZ8t&^hv>hu=oF?d2*o=?5#{PmTXXR$(;1BK>S^MV8#Uc!%h2A!H8m{l#UT=SBajs zIC|{YD@DyWla5RW7eq4r5tzQ}lClgXFcr@%v%l<#mS}auROa z*iz*}OxoRp%R>>qp?K6W$Q zJ}N)i#Q{Q;t6#iIg|Bzir=AJySb!+NcaKn~$;M#n^!h8)wx-gSsPgxu&BU^EEj#0T zsiF*e<&lf*mh!c;6qjykq-9@t5Bu5rSgwzi%RyF3^(H-@)+Y9zBOYaaBJIq`O1W$k z0xCw`Ow?OL#G3SN$mM?~EH(X#>l=>I56xL@fk~T>x<_DWP8njs1)&I+A#yc2D2(_0 z#s}A!?N`WAQKd}6Q}fU&+76r(n8qgw7a_xXq*(aI0yrqSTqio&Lsn&VWFA4kx!4It z5Bk3{@M8K_{vx4^MoBUe#C^?Vi3yhY)#K=6a>BP>mFAeuK<*fCqTeScJ2*h=Ll9dW zpW?6TKT9ZHo#b700Y!OH_^{dX zB#B~*t)jXeT959$NM-4&bv>+QcNd+b5a3t?uL?bb>)J#;_eZt_K`d5Vn*2p~9Ou%0 z+53pW3Fdrjg*dd~WYMvu3~vgF(wqOWXj33EF_=B;Ta2kEc)0MN-@b(6hs4TY?^$JW z9gxo5>J1~S*@rWAJ*nty_W;4GfYMXH2`JqeUG%{z>pFOtB>9ZwTJ|l<=dIDu86IwK zWz20@6`h7eSuuBVuA4nQW&Vugp@c-Ldt?Q<)9;I!NR#tHZUK9G%cNGQv>v2(Nl^n1wgZ99p!L{Cs9|V)wDk+cis-mdI{a54Ap{ zc`m$1<~`Rpog%tDl(IR<4ZDnzPjD!#O`IM!e^y*y`EB&ZX9^!aS<_M!uyXPNe9-gc zHMk5)iV@WI!!~H|hI!^~akf~yb6oPu<=K$fKY+$W5%#oBs9UVejRXaNRueGqQ& ztf>TYU+l(-?jfVVrOE%U8qjODlrp-BDHI_WZJuENa|TVT!>RUJ4tdF#Wb1~NeZS;T zOij(UPxNq_z^sw(8naV#{uv{O6T>`iOq1XcCUX|Ga})l>J}Vby6shY6UTRx+p;PKI zEIKb5Y>IAwsKwLg_b?FMo;&vGr4~;SV^`RBybf`%;x&fhIdZ+a@A2(oBc)6k|HuiV zE(pBu2X4Y@@$z=bxVD*dE<7ohj65&d@7xjO)jljLzzO- z_sR%8auU*{YT86F5KkC9w?C~T6uJ_c3iWZ*`OR#S0(SP7C$r;po?IcW}bxm)F-p$+!Ghr9v zQwq5<5;xDY?DrQb_+a#pJf+_kw@PUiH3Rs)A=%M?*&}~4SYxYqy>;Yl@KQWoN*fBE zGiI)7urW*tEEJCTKKl)?C3QL!8q&LJ?-EImV!q8v)e@J1PK&*WDT7P@?rp_R&GGLG zSg0E4zcfeCJUw)M&(n$v(EA;>Zh@)iTSn5~cKVf%BN6~%-saC8*1Sxs7j8iw1Xkw^ zS#o2xFvw-`Zq=Yw(K;GRP)+sooJuN4o5fs+MfNVn-oNxG9S86!M26wZbvwV9xR9m7 zjd?5Qa;9}2-}Po!4eo`I8$DwjN2rJk4L>pt5pjl%B;p>p(tNgvS}6j}RyrDCeE{9R z(GtVdIlxXX8oY4|J?>iYaJx`I9-VbuURE;Mqv)XsVSNrg#wRrU4ZN@;zE@^kPqs0i z4kOd|#wF~Lb@1UmG)tIU{V23KYA4*xm1_1bBf)Po?Z{t4XO}yoi`~el#vnXKI))J~ zEoG8u`~6i%vyfzcw^QjcD$l)6oQtd^Y0S*W$#D>J^e1@4lA}2FhEKwg#g8^q{^Gy1 zWqb7NS&4UaP%scxGT>%kzR1{;AY`Mf)nZQ*hlkG5AlZ3#VogRMe!E~hq_m>GDug2p zaCZ(^05~e;Z0W4&U`6RwQhH&h`Jz}K*ed7_DhBAb<;F1nz(GWgXtPB$m$W-y#W?)a z0GVT|og?SAB>m{2UlI0_;J*n&!T1qYVR1qIuGQ&9=N4b$ubH&$=vjp{yResNzu>PS zXB-ma@P}rX>80KwEWlPL;1R2TU8rhSDORROoFWld@AOsGB=<_@peJ65sBw}hkUNY)W3 zJ`a+03Rsp{>|zfpw4-1r9GDNFFgY%wXa=K{7}DwyjfKo1pzA7!dTSKpb0Q2%&hk<# z&TCga3Qcz-3x#j>?W^1it`L?{3pZ_=gcI3MVc6Yedk{l}XsU(%0K_Y3&LMr>F`7c5 zK})c6B7hI;StuUK#99C*S3l>B=}4kxDe6iQ7%{JG&STZxU^yZyRui^iT`YQ8-gd~# zG>zF=H@}x^A~6-;sYJ8aFs=yuqCpNaRx-@fh}5wtQOeE32e4gTm$2mHUR5kQwxY{& zCe>mNvzBwe%hs4{u=R%X%{46depi5$bw!FLqOGO*&GOO!%8SbEB<_h9CerrOfTHm+ z!zF>?n@xAudmXKNnc;mt@^24sr89&)Vy`*m(We*>lE32Pmv13caYDyo1mtGt_xZJ3 z^mn6&AP zEoJtTO4=}mj@rPP`FDyS42n#t*KNI`f>u!Qv?G8|J|j>Hgt{Fiirp!j(k|mt`X{QG zGkHh95prf3x)Opr8zb$9=vmKv7qN7EB6i1!R}cIR z(|0>0($ZWE)?VA@|9f)@?aCODH|vRn5{B}qpTUtwmYFOiD2GHva}-B;ImUfirtjk4 zuCKJ8<&^K|<-3>`3=E%Nab6;#(IL}a(v8ID5Hj^rG`xVBAnPjUdkyTCb~U)J_On9v z%gRfH(vq3Ehq#f@7eq2eq&~0toyUpOBGu!hnMt=2W0XyOBqFPxKa8pUl5i`rAec~X z8oa)(O*0D4S{c~#?YVFxtuuO`A_P-0h90fIvbDw%ZN+O?Iuy5oMQ@hL3P3dHI$UngHj@gq5A7rSD2AlYvf6_#xMF5ZQr0H{V&<5&cVj zaoy%`m}s?LaOqB3u;e7O#Vo!f2@3BAv;42CKy*QSlrFDv)t+lR{e3w&9W(&n%LH zKM)ChB~%GiOF_`X1#c;K5~V4m^aqm(0r>VHbBU$F!b6Y!5rQfDfo}t=0LCz^!;L5s zB5yAwSu!cKbf7U0A$^FZPvhD1?I@MhKm5ao_;p0}ksVP#Dckha_ zqB@_hWukR6R~;67{L7ySw8*NHLJ*rRdXuKC>_l?#t359|7iBPpHSE~e_I@BG6|rvgm4E2;p1?@DEmawDwJg$v~oD{mp1_h zEC(FO?~?U68!dN)%u*Nts`}6%`~Ri`)T?R1=*UR|?E%x}5n`3AuasR0swbWv7mq2a zNojfmQ|;FA!K4^Qyt&Ks?&EfPnd23~O%c}u&6@Mlh!fJCWt`j#v@#UqfT=}?VN+6c zeD;7SNT%g@PGn&u40qSD;~(cBmgJ#UrnzeY8|&P-#<3&4qd0Bx>0Ce1t$OX(EZZFQ zWY?wI++@qEZZ5WQ2P(z;Dvil<3O@r_Td+_yFpO*z)1v8p?M%v_^)}>s)Cz43GE~k7Uw4g= z6ED2~Uf_-rKF8OZM81_EM-w<=V943Z!FUw%*aY9@rr$F@O1io(MW>rH}8)pG$WKF(W7_bmJ-$_o$My=>Z<(SbR2Zf z;u#Nte55fsM!r%cN6ejjPj3F2zb2UUYB}@oeoF;N`}=R@-1K3t2xSLG>ZqT<`|Lsb z-Gw&KyGH}a5%9Emlgy|QB?=jOss8|YT&Kn$U#oULfPR(*e>?)$vv`68Gy=Wtsum*9+U!K_|I2uqo2zY54T#xg`#Z#Q7$R>y z-FwzcuLY6LXT4S%7t~>J+5Z7#W7?cBKY&LIgwuheX%SADTg&~gBj*hvJ)3a;a02H0 znjb)_L)q&P8qJ@q1daDr*0R@8R0yO7CoWl~)4C8F#k@*dl3d;-E99eC@+3?8@oHPr z`2F#7vPvDQjSX95Iy#l)M)gU6V09XXL-E`&gZCl+ZINQ4JtJ*JlU-t{rdzchTP;gs zgvqseLY_}|z}7f>r1H0-`~>vhgKH!Z250N69)!yM7>1n?sVH&N=($@GVUUa;=T*F) zGme;xWIs=bo1F_zr^fGd)ua^d(2|lS0r>9M$_-h9%4V07t~-Bjb^Zc6wbZoC#7q-c z^}CeTw_gFn>qM3+cCa@?-vB7`t9%$ud5XKHa(qW2R2ZW3^SH`o4h*x)21b|-PsL_x zOrrgXUwT1CKaqyczF;5Y#37ab)$=*b(U~vl*v$qBKZ~F4?EzmgtH7C==3v|FAbcB! z0Z|@PCyAGW-!jmzz1JJv@!*XZrEL`Y;=KFwzm8W?-nZcZr7mTqc*C249|7IhaHsw- z-j$Ea*PC$6V8)&Ht2H8wfQ(i>y~fc}$o6dW`i2fo9PcV%W|#EGA-7j1aGmsf%~n%0 zK<6=7bzJ;lkAY5hkSOf42blmUb&GaCT<>|MC$yxL4vFV+0t3m=Yh@$u7OU{UrGIU_ zI-tV8(jD0oeheg|OU$#(!}+7xJ13RAvJ|t&bCL$xk%oiC9_>n{E(Ubi=gSb&0@aDU zI?$tS5RZj`v@Cc?z)d*$=1Hw6&jXXO>`@~fJHZj%iSaFDKg9sailvVs(U3DAn*gS|i>&RbC zhEi8W2^V}UO{UQuVg;|;@PL_i;y5Ff^?>drartWS7rjFqxt$RLH03~wJdsX%iTZ(F zLaxz@tzgUoL~SeiI}r%7OVLUjUKT-CHk`&&8-8b19LzC!I0cVNA4zrL%~mMnU$p*A z=6x~(o(|sZ`U_`I6(AkGUEP*nwzJ@V)Hrfy?A4?(key#@d}V7(>$Lc3Yyd@0%f^}) zNm$swA%+ui=}G==jSs*>8BPc~f?nz^9%@zWd$bJcEPA8?mKM&!IuCV|Z(Yfd>Y9W} z#$DWeGXOP`6+wnLh)!W$*r<_w?Yx=H zh)_hlL!u=~@L~%dXi@q!o7vjCq%@k%#u;g1X2(e7diT~iGJhyJoGV`~J7sT@RKR4L zRO>5!kHl0g&^|-Uu^ej2K7VYcAY21ZfV0WH*lXpTz~qHA@6aXIMbBQ9=DS2k*Bz|q z>l*;589VPBTG{Y?^2XwUix8J{n1QDUk)Bf(8i|3P77#0>0bwp-NUZT#w`vC{@>)>gV98JWii=7HBF# zW0N8eT$rf7Zc$q|k)L321-eaj!}VT@mGALR3`W zo{=HJTf)9_NJo#q?0mIDENdS7Mczk!Co@#_)`?GZfBuH)!iXU*#OlS;LC*}AV z@t$4L>35=7=pO7x4tPuSa2Cbms`@=q*%bT*X2g1|!LQ7dg6aA#>^7XM-dTTeAt)>u z8=2?`TUa5;s`~gS-N-U{s-1hn^D;0YORDM-a)!l|Ro&J21Sr~nT>OX*naoQ0M9OPyGAqpA z35*1Nr>tEZ%d#ahe?Xm;uqsiBO{~cMI|P~a3Lg72jgRM~Ep4}DBE>Ep#2txSjWeZR z7G>nv?@{?k13nWE-w2T{s?KM77W(l_o75*y`O@nMC+h#j0ud86D=S8+B^+#GjaIrZ z>4jdjH*D`zmLB$FW-o zw~B%N7UJjN`cXeq2@+j|#5?*|X~<(o>ouiR;BKJ(Fzh55DSJOfy|i7%=@Wc&PW<{! zr}aHPIT5+zVr!g;3;5g?&WBc!C(R)R*Af&*n)g)fst1Fr`tk!#kB2~MnX_Q;1`Uwqr5MI}t9QKPto1P+pOX>H#9L)niS2(w)O0e7O{5gHK` z307M}WitrN&#Iq0Qbz9;!r_3XQYwYEIqbQma5$Q55`{LO=|k`fDKuvV%PpRLFU<_Z znRvt=8NKgxoH+1r;J078>_0H#a8rr+w#VSIp_wCp)PlLVr*75VqdT!oEY1%gYX2W| zoH!U>fok0=5zX~CPtp+ROsO;HyrG06e}ZNB?>mZ#PmMyT$A!Q1k11#cRgOq9feg%N z^EW(8=ci2Rw;2}dpW{B~#c>3?NbkovfV9WhNX!PIGzj>dBg6s%tigow> ZDWyBwewOFRd;otFC;@nRT8NL8{{cz}tGfUI literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/request_n_front_325x103.jpg b/3rdparty/libflac/doc/html/images/hw/request_n_front_325x103.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bfea9f60d6517d51de1e91a26f83e4d7dccfaf72 GIT binary patch literal 6406 zcmb7obx<43w{`-7;1IM}TiiWZaf$_(;8rLuZE-IZETt*#5DJ9g?i5;zwz#_%38bY! zfg&%IOW*IickayZulqb_cV_3ToY^_E`^>qSzgY)RX=}hV0Ki)a0tEqpn+*WHda%0- z0HCJ_;0FKzM7Ql0H%owr0DL^Wzjh1Itq~9r5P(1gBw#Qh5g7>?87T=VDLDl-6*&cj zf|Qhso(e)kOGigXM#*r8p7stkEgkLOO@R2fYd{3V1O&vi000QW2Lk_JwEy-%JbVx#n23P*)@@G(0OEo0Kwv^LN^;`Avu?cr z5CMdc4NNVjLPSGrFVdd6JGpTvg4)(f3tK-Di3RP6?>wLu2^s)U<-4sXL6^ zQtBE`e*V#g-5Xq{kE77_4c`urZVzDodxQVte;4)+qqF4Ga&6kB>({@c$zO z;z8K(sl`AlMg%m3bnN0uv<^Nm3qId00?6=h=R)uy042a>2?+Qf#IqxJ7`;zb#W6?8 z!WL53)O)_p=C7g`wbvgC)_v8p}U4XB1hz?Z2!fxvac0ROW?B4OEd-UR;tPG z(RoqKabOj||03|)CYb}QD>%@%%{oUd?SU!NkdHNNITeYM13-S=0HO?tSyV7yh9%Yk zi{2!r>f+E7K_vY8avzr-l(z&5=ngAx_b@wRb#B7r*#Uyx0&MF zBlJ(CMVMnC?o`fI<_6F&&`jK(C+U&2a62%+6Xu|9hSqz#i9L!T+?8Z{$vC30o%xg> zC4E^ubvR6u618>xVq1ht3a=qmIw4oiK4?(XPQ_-fMdmpqCUuzivPIqn_>eO9&1|@6 zjMbyd?eqINMaha0zBQ8$7=2gy>2NVsU+L?)cQh#vlCq2ryXMI{q$>s}sSi@VcW~nc zI$>xv%F|IrtTdmCqPR@dn?Obt+JQl2iXD?rinVz!PyGE#x+Rvx2Yku`Y%lc6v}ZZ* z8`6BZF8ij{wpswZLZl zoi(Bnh3S(i`xz2n{g?cOoLhMHXWy}w*UVu36zHg!T3!+^#YEri$A*^HPAn!lXUj1* zlwMCbJNOpd@;`spPH76f2a!ALhgNnYh_0qtoCRmbE{d4 zWvD5L1CGztY>5eEm~Q|VlzLFBg*bQrL=&)Hq0>|>l$?{cR)45xgs12;9h87~4SK#2 zLEQSW^iWxPJbtMo3hI9Vds(DFs3kqEC=*=5#u=2TR+gfzSsG8|z!3t`I2fl#VH!Oj zym8j^%<8ET`K11{%=w<(yLUdv15c(rjGGXIJWly)!$rHK-m@c<=)7<8E3k?do2R6r zn%q%TpnrK+pRW(vL8p>iIa|VL;cwHpAwv2_8Gm%Z98CC$edlAXV`o9(-USW-+h-_Q1;?I zr}Dg{V>e*u@H6#xn2j}xewUu%NZll+>h~fiY-U;W6-gu$fHiSThInkN1Hv01jb$}F zDdYUDVoY$~dx@G8D$#T$N+Z>rQj7oba>Ahrom&MIhrdwYUyqF{#7ZQ-<^y^yi8~A+ zn2+OV*%~}u*c3!^WJ(=dKiDKe1lboLn=dMHiQ{d?#t$4DQuYhX>!jpr+^ST$G4aS1 zM`^nk!D_>9-`?L|VxR8Dz}#9(lQB-Qla*yN(#Dl`MgaR! z?&jLbL9gkH`f>MP{3XXgUu$#H%V$6K13$>mJjmdFC$<->ulxky&6xurbV>w)hwoC$ z^Ljk+t4ZIUZ6g!oZuqiA(qOdE-{xJx5!n0Mp(9Uly1%`emNpa)9=cm53Ed8<&>c;z zaFX_pCpXB$slSC=c@(NQ7`zi?FEsaTPnrSgBew3fmz00w(Y@5`6a#oKvR5bn+On3; z`DDYFt#!}t$?CbXTmp0OiS=4s7L8WzhpLo=Ui_#fmo52`7L=$m_k!6%jQEa^LM^54 zRlCrs&fjOyt!gkHWy=@-@h57YfNp^*DKs@Zat9KbPFd)o^Y~+h${LA$HvHeOh2^B zA66w#AXT94NJq0Ua>b9=jl%`n8AhkOW3Do5bF4Rjht(!WLhNQ`+PN;z^P%%TS?Tn& z(dYw^X1?s`Ci?Ib$j|8Shs4sbLaAzADF1*(%O@p{nN&4;vZl<%`&pN<18_ZFj$LY#NJo#n?DLexswEY4K$7{SFY6d$Aeyp&}Tu zBj&7~h^6Cf<}y~Ow)}9R&Y4gAE_q_~E$-4|+>9oOTx+lmVbfbP<&nm~HHnrMW~7L2 zCE_F2G8_iLY8kk>EiG2>3|FVOy6wi|ABJ?_34QYJ>YvOvfevI<(H~KKv&s2-VJ7CC z5Bj74FV|S=k$6*%MZ8Ou9XNah35j;g-Pggb&MUHZ7zvi9JLu_aSXN06&73y9F|qP! zzW{%oiJ5B9spEtBZ8U$?^l{_r^F!6_6+_Af{gE#aWK&_Nf(ghjAcA%G#hgdrCn4KQ zYB_dqCrMLWc4R6mxHM2Tf(qWGIInam$JR70E9p_cOpa(v6O4~SqOJakh05s9rl-?p zxN6&T3GsS{IuQ2q09|T~y9Joo9=DRbOLRt)DVbeWNu-3$MTKpmJz# zq!TSJwbd*?`fcA)coNIDN!}fO$dQP-Z+(I*g}yBQqZteeUCIuD(msy?^w<1v~dP~LP_ zX6aS$D@|&iuu}WcnILcKYhkf{=_qLClZ5gy`ua%kEBge*=yyX?eZpPzybg(|8B+o7 za@cExR=VaTt|wAR*5AkNoy>(zCu$T4m5hTfpozVtRUCh|2JCR>g5RXM-M#3`>#}$G zrOcRlneytHFy(q#As;5oYO#1K8@{g*;m#lE+?7bXp|$D-&{{~`dl$0iT2Uk^m(O=@ z=$>6vBL7$^4omI4b>1t+#;tcD-)_2EQn_4;@(r>Q*)UTr6IYrp*?N~JoiE=K*j-NC z_+#Ywq%XWq4b2(%-4kNjo2bR(CFVL~u`0SC6lT-CLzC1rdX9W(^JVFYVOL>tvb0z0 zAU@xvo1;^EiHQ-B4~$qq?SqOMu$-Vf5SRfs3xZi>?W9iP4)}`kNY!`@UuV%bRR$qr zB;NP!G1CZ^pCS?|R!nb|C1mFsVjA4$PkfPx2*_a6diG)wS#2y$<4`XcPs8GDXC3WP z1&0^n!6bCr@B>%lj`K5ZhK2&>XuntURy`3+E~aTr4$Q0qe1P2Z{E++WN)t598PVh? z9K34oMVlW4W6hr(|FFDH)sP>(JO5Oso0#1yg;&!X;L zy~i^YA4ZnAb=EX$(4iLxleCHzrzdk#LOiUN-PH)tJQmEziPhCRDJZL783>Dt4va-k z?n4B_j7d2I%cjhUnM;eo2<3o4v+O`f`LSoi3?GyAn51zwiC)!SITjzqyV2xGrrL4? zSdysZLVJ3?Xo^2}3e}VybFS9JeN5UFJ+-B%F_->O0OB~V4glQS`p2= zSMKNYXH#!Ht#Kmx(JaSTvQdZA-?zTh3g0g^FtyFd%Cz23Pkqmj7st^o{^rfAZ1!#? zx>HKn^*y^2)M~o9e2@hKf9k=ow;q{xn_Lvm_(y?$$G$Qf`FmS!BUNR9->M??*M3Ia zWmZ8Ry~7`pP?oIHIXg%F2wenjTRmh!*=bULk|x3sTyDhaQlTm0@RM5d2@R8XjY9y} zS9w0`0=PRZ&Rv#E+pS7O)+;`$Sztr*8BR^x#PX86DS1Sw^a9cp(e zlX{BcI-UxPg*cvXj~{ASP$^R>Lq;OTA>P1($PmjEMM*v-dCMKjv`clg(5r1#y?3Vl zX>9!m-h~S%PVz=C%+M?vctu}E56V46{!8(K|8P|Jvg&8tnD+)-}Rdds_|Nx1bDX?@z#aPwu!xE%lpbIP16@ zC+`8BVRbB)Ac*I&^S!AX0Fkpu$*HYU*iy~CHEhE6(Z>QT)0f;*V=l|wP`eO{)}vVy zW!*+wVlJze&ScYPFSF`R8tsk{<~aF}mNB^zCO_{}8ieQwDAyi@ZL`Fd4K8r{TVGP5 zGj0B0tzbdNF<7Qq?1N7ifAX2Ee;l?w(7%0$c(}Z-v8f#U&eJDBqZT&+vFaZsL-#-X zB3#Og(Reb&c*ZKtU%q0d_FR-={|Nn~lx5%GoYycQ(zd%lRNUU1DrkE)u>G#%r-uV9 z+_IPvs>dnQrx-AZP+^8IDYtyHD>&3#|6{MOxBd31@U9)S;;}c|`aY#$F5mX3_|>3l zB}>R0saLVx_IMbHXUR9QIt~EW&&s-%OD#>KpQG$1 z6~cp-YZ_3&VTZ_`rnmTS8@-&$jhpt|+tiBZtW+}mxps2f;q+PrjPY?h;Vk>R$uKz? z^i|SYanHb9=gf;~7)^tmcfY{4Sc1Vf!eWeWy`^1+#m)}pXP;rf~0q0u#G1)^IgEkirn^}k2Jt{;5<~O@b9V&)dllOiVG$e-# zNCoN?4aQ`rV%PUCBKOF1bB3@_Q-ney_lSpF6^{xI$DH(XJ7v}RaPZ1+m9iS2!iJ3t z$@F-jWiSke8Q-?plk^9&NqA@0vo#v`!Mh$qHAz*!Q!CAR`jc^BX%)yfvz}2jn#FZ* zwp#YP2`p{t{r$L|fAxIMhxd-l%;gkMpOhIW%0}^E-Opc~rbt1yuv{lZ8T;nUF-&0>kl7*POwIq@6mheVT zJ3QI4`7So2Fh&+6RJ6}A2tO$`&ZpmoEF2Jcaw)q>OTeL;g3;bA9wRCht1!JDso`-NMfi_XggK!l*+-p zO}I^qc$1DfSiY)V_R2iG<|k63d+#CDRIQY#!E+ySJeUc^^~n%8rSk@WRFo-*)pA6z zN3P#~$}38g(k4TMrP3j7(bgVgLrj;YzbvaiRR^eO;r%)9`-Sb?RAe&T-v)-q@!QYspXpmu!@&&*g*Cj(mTJoGh zE1vIVzoOVOU6+iui8y9cnKJF(rQ}T>U3(NDIyVb9*GnY5652aJCKaEhHSOn#uN{j} zu#||;jF0|Sax`Vnl#QN~&PP9=Q_wTN_QS`%xJX@mX~Z(%6U8R~h#zcxvE*GeyHhd9 z=`xPxvM%>&!j%dFz)E{@O~BC!+R1rF`_DvFU|BI!W&}Mh&J6qtWEOzee`K^XV8dh_ zfDhkK5PzR|#~$u{hvw_S%H7@m;qmsT(G|@r(3C$!+e~9UrS1>BK8N~GoKz=3dqnqz zi}eoN<~tkd%8DN0*{%8lXzG;lwBdL~6#457=vlWZXgEh)Y3mxXZtGpVJo87jrfs7_ zGl1wN0Swlyvxwp3ww6_NHZsQF?mK>MLjFv{rPxL8 zTTbv>|GF_7fm}Wv&D!M9Wpgj-U6)KL7{`#gm)=8-TsghF-A{+?^B@%zQ~lwHPkhh) z^%*p>SzZOgBsb0T$WG{W4mC7i+Saa5V3N3{wCm-;&3DS3N~NePFL;`H2$8g31HxDf z4%v2-GQ740Kc9`fCfK(|We56;v&?8SDtk9dC8ie3cM&aLF*H6ds^T1T z)wq=-fYQwjyuAD_V5VvIb?{I7MO>Ekc9}wUJPmA$?>xJXM-64Fj}(&nE^bmmFH)bD z7=5lxsQB%Wo_;;AC@k`W<~8o^?9-U@SK?n@0bT)+_TBdCDebP~&G)*2~TvKbO_0P_A8G>+#!zKnBNsKFpO2O| zbdaBP0PqQQ6QzAIO73)XU1z#Lvpek1686P!0F8(>a$px$=j;#1Xt0a(4Zxk^y1(7Q zqGeouEar**@5F_^zxt!%}gg>%D>LFH2sqY)y*6n~6Uzn+}34H7df;?UKbQTqRPT|8Fy#{<|)Ht=bQ~LZ} zR2tQ_Jf9ge(uT6oGO>V9Y!*Hj`;>Frc6?SOR!IV0q(RN9Nu@CM-oP<4w+ z3Y!Nfr5e-P#+$XyIn43ZN(wl4+G;<3HAbLq0CSqqNX=3Ge$Gq!tOdGiuqbQqSlDNTO;JrDYaT=Qxj^#y(=bTV0EDx!XG z6~CT!s5MDph+KkqCz~l0djmL4FiTi&nVimEgHL~C%A*i%PR_t)xJ(y#`;_Mu1^hxR z2dVo9@isP+51)c4oJIsj5-=Ti{XHcMu1OsP@5%q;Cy|=PS$kX+np~0Wy@_}-xza2M WVf?Gu{)366|4~T)TUrO-Ec_SDtgR{l literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/rio_karma_279x254.jpg b/3rdparty/libflac/doc/html/images/hw/rio_karma_279x254.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fb11523d44dee344422cc9133eecf2c398ce1575 GIT binary patch literal 10570 zcma)h1yEdDv+kfn@FBR%AOV8A6Fj&>a2N=#!5xAJ*FXZp;2I>j1{*X%gF|q4_sjX; zz2`so-S=L-URAw!t*%3p6+c$x=%1OQR~l4lJ>2ciPeF<$_IFEFt&FfcJNutAvr z5)d{n2n52#CLkapA|RmrOKATV1Rxq3HWoH19v&$L5k3*c--iF+m#0nu2o3OvK!k(< z0w97AkU$7eJ%F_5{h=TrAUyB$zXS;x1r>;Zi1s}DzvRCR&ma9S8!iA50SOTq2?ZGq z85tGnc?Coy00@}|g;Np_Rh{;wnM-gY*Bd%~U~cu8hPi79!4GaJaMHLY&kC%|!cF=l zR15Ui!T>}>q`w~j5(E$;4H74wq&hMR7wXd-02Ari4nhI}!~wUmK~N@i#Q&krz|}oM z`KEb2S!x{p%N(3}HV|Lgko_$gq&a0}LmhsTk=LP45oHw9Y*xUDSTbe7T1v!_h{i{s z{z?r&I?cdBl)Z-9l48=;#{fr=z=gSf(rpw`e&YR*mQ7pMO?s7QSaoh-wfxS?DQN_8m3NIm2R|4rj)Xp|>)+l~oP3#^b zHkqUkYU>pC{FdUFjR4IH-AQVl=dNFJMvKhS$l|{||ru)5oZSS$%}WG+%_{tD5gehzRz7 zZf5KI6aR?gV)wcbIwmULb|M$NvD$5qrevF|hV85y1W>XssVq7Q)RK)+ay8s5Y17CP zmeSPtb|={#tVqiaEDGY)N5p^E8r!-%hsy$&ywrRR&-mxoB;u4@ETxZs#;`iFo>Vng zU4}})YYD}Amx^-8CX;P{qQ}RzTZJ9v`D$LM8z^zhiP*6!Pkv%UtDsx_za0bu-{dhg zY{~cA`&qmjP1JPcSTN|a8nONF~Soq!zIw)hVORwfF#OG%qEMB zsiQI2-ydzh>RV1)_N1wKInd;{+iSuM{XgD~7XZU7gq}?F%bTSvhCU&N426U_Feu~@ zey#5Kd^t4FgkzfTVu$r&9?G!3W96+^U9yiq`x~3DeNtY+FWm;bIzG6RU#^O0czms< zls@m#BUDTWk1D0+SGf!)D-^^hdAwOJA+Z`5*r961{x0j^8ejoY(&t;RJHMcWmCRn5X_Ss|@S z^C$6sH2(97uK}Gou+F!PrJ)AdzE8PX>T1+wr(<3fN!tEef6THosq4pDqLl1fFlsT$ z+>125bLx=SYPMgSS|wW#q7w0Az==7E)UP^}VtPnNQ~#%X00}4qRpbiLn33gbm&$7Y zy*P$T$s^m$#=;}txRW-nH8ZR4AgVKDCiVxm1<}i55eK8Zm~f>^v6GSY#3*m#Cjfq| z2M^x(hQs_jgF&=X=DT11GH8}zK@DNWpXLMZd!iKmkBa^9cLFybQt+`RTCd2*hhF+v z`|*^NR;niQ92)Dg!9TGVufcJSg5e?RbyE^-b)ojG}mODm6(=m$9a0uJd+{ZzTN$-4%?kzY=3Rj;*3`5~TG zeADp^i%tDQc$DQD2riN;j}$VX9Aa1V`8KeGDoMnUWR@< zmsWgADSI;QUtJ!@d}JJW^Z&On=ki%ykrP2S|0@6*`SZ}Ig>VPIdWgQm4;k25-vJBx zmeX!^_yg99#TreVM?X$aZD?pRa#H+_%nCm%4NNi{56R?7v>-*8WLFc;61Shr+tGjq z4^F9TF16eWbc2-uM3Y`>R=!VwO%B!{kUgPT>>Tk~WqgXEW`2s!)IAoGjiHS@TQrY^ z>Rk`kB?hQc))YCcO@^wBSz2rYLHeCKVkztxfFQ9da3s0LFHGcwUSqTw2&12hZ!ddroSi%{i5a~h7Wys`v(};)KI~OxWwY{W*2-*RQjP=2tU=F7 z&-J0^LE12oYwwYOz#5()^7aYPif}VYnBBiX=5#39L9g8WUSfF=p8wd)>Mv>l`EOW) ztm5fnX1-`n>kXt#-k`jMtv)+-{ZPpaX;QN&zeA?2ofir9pjBk1qER|n1u82$`KK$As;ZpgC))`&L;koHD zK5@$tl+T3cIHqxzP^bBDB({Jfp(t*D6FK6l##r4LfcLfT&&SG&4wLT7j+^Im+}iO^ z-*VwiX4&ka8%co3Fog4q>OAD2pD3hvpFjTe+WWGrTJfGNTxfOk*QdfgvV@}9!S?C0 zicQ@!oP!HhlZMLoJ%t+?#VUEDSY6AC*K^Gxj_9P7RPNW_g9sTFk(pXo;d-S|{$uv*krtqLX$3VjJUR#Qv z_vD!L&!t+os0#>deiBg##vbf(E<`Y+x`iy~rJC!79Fwr*&?r6y)U%#n)?WIUv1m)u z?MHVOo2nuOMq7-Y7hC@5Tjd5me7)1!GLrP-(gYuz-~s}Y&1CZht50#|N_o2ljUiss zIrF=B-u@kDfn)8ln@@ld50yWCv5LK($@>-M?1qf6>6yzXK=p3&`>b2tjno2faJs&w zsPwgQTkCMf{qv9SyL%B}Bg&#;9-{i*xO{=9VM+*3G+ zqI7Q4QVf;O{%O?ZmsjDrejdA6zWU5acz$w8$e*$ohszGjQJ~PBq z#18-R6dAc5RdEy!=bLH(b6UT70)(ljdGfnw&?U*aN{k}(BzK~R(k^-~9E|I53xZ6B zaD{LJVj&ZDkDZNR^XM;l5@?H#kjOaV}lA~V2S2WNPBE7 z%*?Fhb$>t0T8tRQ>G+Cbz{ud&q;!LAEW7E2@CSvUe=%LA>T+%qdeXCZR*D`9#giac zM*jITj0^lF@B-!-BEGA5Wpg`F8Uv=wB>++b2cf<(j8Y{+dnK^;%=@+lBIg4oLevAq z45}Hmo!i&%!t_i3jm9B3EdylWw3XlKH=_`PdZ(2J;&+$zdCL;rzDtn)PmAA=p#ygv zLNZBAS`TkW0x`0TYnW5Wp&LLZj5wm{uHZ}5Upb8>X=q(*C1>k{Z=~BVdAjATEDBi< zFx_5^*&}bG$%@=MNrY`9NCq5WANTdZV;p{dN)5ww$qEW%_r;apQhVzpo`L%Vski>4 zAfD`)Pfb;F0r`iT@>lBy(Rsr6rc5*C@_o*zUoxC+Q6YMXxec71qxiZ7q?0n=8tSuu zj~py^v$zf1i)|46=BCrvnmehXzWvtud;QbAy9QtouS zWVUSTy$~J6t6N8FM!fE?+vL&`{ItJ|`Qis04t#1ZZOHCN8G}`$x7Ri-bXbfksQ(7% z5cb9s19q#ySd>}a3b|A7Vvc}a_cVc8mjxl)f|R8m7yNgn$|kds{9>t zo}W7bidAR|Vp;zRoyL9-iZ&5A8!-ePKXaEqh+Mn&Lm0cD&!aU5m-)fg<~QLlG1=*? zs=`Im!;F1W!vQkImmju8+>zckX3ClOaO`J=A0!pgRDDju6nw$S8oKMD0@1)fs&DWX z4$=28S{2xe(;JdrK}>C+aT-%lfks7gd;7dr?wq<9-S z0nj9ZBFXc$-Gss@{}m?@vrOlu8h4KM&!8N};?`)pTc*N2R0%##(TBcB9nlsBDG!w( z!8)Y=s=Ux)zoS)e-(nF68KQrxbUUUMpY$qSI4@FX)t-1|h&~S`0T600qi%kHb#SS? z_0n1KVK}Jj#28bI76zYmRwYydt-o1Rf15kjsvXwrfc`heNOmD1ma}1h^kowBICSWs zvpRI>h73ejvOzwsHpj?$P`FfG=H!oQeICnAOo&4c)d$^$b8W0C#x3u%r_Xe2Ltz}u zy~O${Gx63ikx@fmG9f~|0|z|Txe@#xql`GY8?Wf;SL%&-I4%Qi;a=wtgEth1 z*4$RE7syfcLj-CPFkhuKGC#wJXERv_kzceg^@@Ze=+88UFl??TspMx{!J@IpjPPG( z5zg=OuUS#bJOP-za!6_254uxjz%sZos1}yUIS3W_Da9ubwmOfrQ)-LXT9~c@$yzFF z30y@Rk0wJN1OUm7Si~y%!K*fcbGZ$6=O@628I^hN3y3M%>+6iHof`@kwXzGX ze-k6kyC;A}s5l|kNZy_wABC|fWAHU8tC`V6!y^%IzWPS;uoy3jkNj=;7hCi|mlbmR zF`*c_Bq4Z&+E{Umj?mRVV%Ax2;?sz{L*NKISBH$o{szb!!3Mrsb1&tC%heHUk^C1 z*_LKQ;M_03480b$R5{{dwsI^}C9H?b^KMoBS||{ed^>|TY*=>WkH5K$CeW2T*bL=X zBL-DD4a?zW+4ZzVL>kOIsl6#fiM#O^)KL+^%tAQ3#q_ISCSVj){hKWgIo38iRoY_j zLrf!Qfk(Xvd@QFs_q?NXPlsiPLlO|`>_s~M?=1gie~3s17@lG*h+l?d2JLQ{w(v^x zA_+Jnh>eeS)Zujk2FibPP@G=PA2xKn9(_50@i|mCFsS%lDnY`>LQiZ zeQf*oC`~Wa3G@$@Iyw*pKp~%B&czQ9eN&lh9VFTJ70a4l4W&kL--cY7gu_ zC9j^hI&=m*QqrY5KKnuTXeR4X=lvg#%k5rM95n+b%89P46PO~Uv#>Z0Nt@r6Aa^!D z_+BWkgGCeXJkz-}7avf{3Uvm!mTu`E1s>>PG)nW5ing+d$~ozpg!^(-swyavgycg` zLR7+^0Bh;m;;5ypoE&vclNcrAljJ-Y=KW*+XnfGy_orKdj}P-|JQY*PQPvD6r|~q` z(Ub4$rX>HaLZGm;Urt%Y@Vp*ZGs}7cC=^$JJkrAo%>qNLv9s6IW)HkM>X zuwt`M7EZlztuDW}>K#a@=#A#2LSM639GQ8K5xG^HCC7BWE{4#^-#Ig;dCip`U#MEi zJ^FZ3AW2LT+H)pP;B*aw!IQ_#NO{@hwK#8;xqMw@(=!MUVb!&F?Ii=#!}iDt?+^W0l>7?$F<XULu>2V1j zv2UI~&x}qS=R-2pb{;U42N(sGlWT)1%8u~=|TL}=+vaYUZ5MHC6FYmy1wYeK zn?zqwbbuR*SSY9t3!ZtRWUlydo%Fg>(OxlO743qbwMZ%@UmMb53xlC|UJ~EV2UD%H z=B!W|f5o}1ai=?MhV{ZzA(RX+`DXru3TY+ne{)O{DsK;ooYfqIm26VxiOCP^E; zkU2aC#;XT22Iy;Pn`g0}s1m0U;gA`!u;ocvNP`cw(F9>M!l5tRj_D&~s)*jDdN=7y zpQKpH-linTH8)PT8+r9OrhBnFX<>)1(Aq|@0-hS2JzBTrgI|kp<#7CrEyr9QvEho zx1`TBtH;brPk%}yn#Kz=jheTTFK8ZSI>PH$Z1#!wKIIJ?s|1t1{Qzc1FoTwkF!1ji zwQ#N^Q`)@a$Zj13$ZKehmpk=sbrm>eD6+Sj`Q?R0ek$|S9WrxQKQFH*2kIVa8R{$p zeV2_OX@c*R3b_K98t&9dU#AWAUto!b$JDUuJ=BJhTe^Kq>ILC*HWU_%g;`e9nWXBl z%W+wnnG#o-t5xcptn~nDurR1lD0%hYY+dQ_xUz{M-j27V;K}>Y5`qbLkAZJ9{nfUd zmafW%K68U1+p4LoI5UzxTxTNNEwrlE-GiO*G}bg=<(m`e9sgQ4JXS}j`NM&B$X@}_ z7L8ZdZc#XJg?n~VpMKJJFWqJT!oAwiH`FDUH1vQV0@A)LuBm5T6R(DY`e$vc0=Y-I z{|st~Ly9~fRVVqn$}#ysIE~K_%f@A0AEgxtI>FbS@-<$;-fLKM6xck0$kwp;*oqN+ z7y6rS2SJB@_bgu|ibw|RF_D-bV_io4%u_O9CWH?_>_V{0m<%Pc*CG<@*Qr_tKlLfB ztBx-tX+dU*Pgfy|Q3*m;!E=JZlULQnF*p{Ef%8}SI(+&cuA`?}uSCRx`@X2gB_a7n zZ=a4|kCI1)JS3LoSfbf27`5{&4YOvX%;FR!5H#C=QGX~P3zJhY{Bh9gr|{G8^!qHf z;&7Q|w49K8vzw?mdWp?afQQ(8$c@tzzzLU9?_kZ2iPT0~>x%LuQ)Gv>OP!T9*Cj%s z$qH$BdRpa8W{2iLHT@zHhN!BFtT65`Ap$%aN>dB+Z(W}b2_x*f`mE9?^cg(f+mK_C zR7{Px;*)7xjT>aIVI#6AIe{Yz@!OiSV!sVW(IN>q4W-7|$CtN!xb1Ow{oT)7SiW_c z+?VO?Vv)?ijo;(H>cw$GVm#7!*P2BV<=AO8 z_CMA#mcHhO!vgs>S;Rjv*4H@bEzG5G6r2hoA9ze^bTQs{&TA2CPNwMjoOwj&UKdjK6N>rPpBrsXV*MVg?D!UpgMq|&n-!nk?p#dksnM$oT0V2fK`Pm z7_peHR)E^SmFC0- z3Ss>^B^Q_7-`cs$J*h4utVjO`!9ZlsU6G8xYVYAZ<#L|#i#V$8NNw`NP9=q$(n$$w z7Q~YdV62-KUesASXc&}2c7r=SAiufKN{1Mjwl~1W>2GvoL_RA=-i*C7*HXu%40^5i{aA8xUpAzvFycrCOZvk5B$*V-Kqz7M2#Wayo^#v z(&Jq8t=nn5dGh-MNdMQjzZ&@~wN75xF>Y79`KGP*ccv?$rqeQQcW*VvZ9$ava@bGl z{Vo+YFLNK(!hGP$sZy~>{3ayO+CDD`99`1cK0vz+)w^ z{O1|i;|Mth$yuM2yr15Kmf}XOebZjn$4^)zVIRErMLkM?0BwsuE?lxI!+Bk|7?u*F zrKxN;cc<5N`*IsKFzs1U&NIRr07Hn=tjnSBM=Q}nRLuRZrCO{vjI}-E%62Q~=Cpk=q<~^5iaHeF zOi*w1513&R*sh_IT`M6bF!jRyz(f4a$DWa*hV!*YP}--*^Y_}~%(2|Gm|UqV6_yyA zYZUXg>3AICFF`L?Uk>VBG+baY!>CBzv+=)vz~%);iu|}D#b~f}Y{PZ|J9#!Y45hpH zS|Jy-d#);6WtQjGdiK*r@?q8FzdxURRfS_0bN7%k^#xjc z>WO(DiY%*9ujN%So*P$Aj3^^pC>6=6i!QMKGlj03CW%)H+E|O@=A~`5c+Iik3*%|F zu=TU!FH-U6yDua0jZ-loO#Ic{v{bjV6@@u7X}_e4&dY~SIblDNI;lWr(YIDC64LW6 zI{HO%kAO2P@tVv{@^EIbp%P}>pw|jKHb3bNA&-P!wMY=Yp~FM)4F?VA&}cGEh{p@C z_XIegyFhQ`lc$a##Sf+Ajb?(sl?`GJ5(KcwYy9^%FS^O5EON)3flp7Qq8Mq8hWK*i z2^D$_vFrgkSLE4=dnk=`;&sf4<^k|+3SW0WCx;~;^*GwWAll`_a5?Qv)1UP>f~+08 zMb~5K2eTCs>ExX=NLE)GTD9-e*bY89YtnkZd0o!llY@e!VOKU}(eqjG#^iGBk?`f? z_tjIX^_cVvzvtYz3m&d&bXzp=1h{1ob$SpB$PQ#MD1K4Sg0X|&2RX*GBGzrnOuEaH(wvW zp>|fvbLHjNg;5I@nV?_#f6$j_Z|3c_D+G(6q3FkKn2lm!IA1R_-t& z3o|YGKl@~9e~`lhG2+}W3JJl1$bPDQAx=d0a~{dlcma%zkFCGKR4c}a#SSgsZ)jg- zu7{t)o9Y^dwO~`T9Vv_OMa<8tBtPb(hz7raCdDr&VggFd8xAM-v6l|ef;%IohG~C& zew`_`HZdSqrQNOL^AAjaM)%OL6c-*!rLj1M;C8KyCR~Mh-b_KQywE=~vA|zsm(ver z9>X)lOI*f&;t`X1OYOF?%;6`4T00i{81L7yAx`q zYrX-A8iF^OVv627?zzOjjwy^(1qGrn^TKC|NNPZ!g2WJ5T%iRNvHlEdb*LnlHQJ5p z;lwOZrK%QFnl*ZxTjaMe>awYmEQSkKfH{wqUHF4BnB%ikOhOJh`1YF`6h7-R(()>3 zdm%O_wV%oQEu+2u)zVkJ8WTt)G_o_Dqk5n>xNz#4@jXs?k8nCK8_e}O(585zTR`2_ zL6R|aem>1v-$<50*ltfrq$d#bFPHnibeQ9Vk>U%I(8WprHpe;sHeUB;Tv1HXh2et0 zd`1}PwG=(Hb4v`5lU~wpIF5TQS$cV7=J9)EXNU)*(J~ja7Q)0_E|~8J?5o5W)+YrB zU;#=aFsN;DKKz|)I#(f{qqWO4s`2}EF_E>qx$RT z*-Od|uF~47LGt>-TN%DzqQfmZ0=ngu?7O12VRgSIg>Z^-? zoaY-_cO*g7uf%yv_G)Kk>Y)8Q-||P)Gt)0xgNBe11*hSO?x&v|k)s$%}fL0CJ7P~3nz z@RFgH|2z)kxD?;pl}m3S*(WCIA-%@a==XSy4=yFQqBG8E97Cw|%$=~+oR1~vBMW`t zREi19k_NWL!?s&>=Csk!Bb!#HIw9nW>)Z^Y$I#>diFZBM;*<`3n0 zKd(M|`X|X-OtZXv=;Pe<3HW{;J(}0ct^p*6qYqMAY;9NsCbBSAkxrICzG-Z(L+p6M z+Aeq@3Gv!MqLKyKpw`%PSjez{r}oPkqoS_@c!z8pX5x^WLb{uPUwzOoz3{pESPmLg zGdQiPNW^MDP8i^H9a49wyxsU^PFUD&!2ukzE#Wo9kbcGfQi-S{ude=UISX2!^xA{I z%zj{)*Ym|iv73^L96|cXgAFPs2Zsj_yS)pZ^d>JR&tDBT{WI$GpWuhcE|Jwk8vJFZ zVMCH4F;eCn`Y9XLU`L`)+Y)LfNKJ~~cNImcR5d(}^AZ(PL^ksdZ5-B%ymL#2nyhiE42u;SppRSpw$3s{c9gp#G zXT4Yv#zPvKR=Gk8P&BX!G7`jVU011aby(;Ng z$-R=DUM8&uFFFchSLk?_8Z#DR@gznbDG*IH4C&*p2nynM5~UUfnCn@w@q9dn8gWtv z4|@$Wk%RqtD7XJEL9YN#pl_8RK4|x`jT}O1Z{F``L&c1&U(J7Wdi%+kLy{Z~TI`th zQb{3A?6bJP9F=Gy(N(tVkJX?>1o+FTTup~uVmO5}M zQLdG0R?_%qXnmBZH|< z1PFctY(TvU#U1>=)QOKi0ZvCnqbZkwN@3#T%QeC0>h@9}2LrI~m?&klRA&=aJ0Ayu jXwTHPX3(0@q{}}$6Gg6IaFQ}Yl|{|tzp)VUr`i7i@D6-e literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/sonos_family_RGB_325x200.jpg b/3rdparty/libflac/doc/html/images/hw/sonos_family_RGB_325x200.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8dfa0308ea2d99e91fceb66286233b80fbfb710e GIT binary patch literal 7843 zcmdUUWl$VUwB_I$ENB=Y1W1BAOkjWzf(&HvfnZ5+cXtaC9D=(KHV|ZR2qeH@!JQ9x z8(e}uzW1tj_q~7nZ}-;euIf6~_jKR7U45(jVdh~OK&B`Mkpo~n8W#o^0PwH^pqBNp zGy?#jPyh!20Kk82kM=MRkO5#}V*ZOq!+rz~J`N5xHVz>k9xgsHAu%x#Ara9N5(=^> zB;+JSL}b)tm2+&zo2Gp zMFwWPdPK`6Y+@Spd;Iv(De&K@J-YcnG%+x-a34kRA6YK)M-KB*6%!W|>%UfoLH@7i zqoA~*nj`L0%11eY(HDW84|4$GM=zM?6?2l19%EK_^q;+41*X&RMr!E ziis+JoS9P=-~%4)dj!CTs^U^Y=ZEw%!xZs4s4OY(reJYn+@oPe7fCm=jrfevKS;;yF-$14T)xryifF9>syMyTYa{-sIapwZ+N18e18m6wK_C0 znbe5#lCJAAo;xWKH0XQNh~A2~;bJ0F^?U$$w#lYkBDlP6 zyC`WEu1K@21gFGa`z{)VxAc|oEDO%@#{W?rdO?)MWf$@QNJmFkc>738;@}*xA)BqU zeu?ws6}Y8OC@=S0g&oSkmatoMuE9XTJ{KwsGV=cpny>`YVf%zoC=DbTXXD*D~;nw%ILnYz~Im~Za*0I(UI z@mX0GDA{h-)6zv2rE?Z#Ba#xG92V^{r(Ka9$Jizg5@iPe^B{Z@AAK#wSSpOr3TYmn zR_}W0ZE6!>kB-}nlg7hC_$uYM>%w$HF&MNmz9oLay0I*niyQ)x-Z|8|d{^MJu>ZjTqUI*xXhQ}p(Swx+CncFzaj_VCPTtu{3 zUspc>286lqXbfK?nS8m`PkU|*c2h%S>cdJ3C4E;Bf3L?9g2vC=cJ7mYX?v_NPq-7d zT|l+DqFF|r8()a0^m%E#{N8>@p)yqYMryG8CdEu$kNm%f5J%~Xe-U4b#?{*Y>8jRz zO~kY2zG^5`Sf1FAP~b2?58@W#OJ2$v-oGH_!XKD$EcJ{Qk%JZW(F;y!0d>@Y6lIMk!F_TGl<+$3!=g+S>*DLN0 zc>S5K=U%CNhk5V9fg>K3PL z@aH8C(Ag26|L@4lglZ$FJ`m4XcSMo^Vi9RtIjX4pB{#1a#S@ejZ+!k%?`hdJ zXzsIkFbJddG-f%det`btR#OLVR00|(4x5IK)Y;2jfSVA+-b(sP;ZJBmJrLj|9hFe` z5kyH(QS_B@`gXSN^2Hhn9`?n}bnm6N`ybKtYvA|wNeY?ogXqTC>UUZnsd{Q7N*bqt zA@er%N(?B49ZPg#oyLcGQ;>04`j`VPDe<|ftaDaL;H5SlEh;{Mf8Zn{1P;#UesiUj zBSJ-Op!x2{^(wg*g9Eea9A{*iL-=*hdhY(tpLbHH%MSpz$pvcDYRdn0Md6&tO`z4G zbWDBMO1|>tTb=_T{Q3F`4FBO9C7*?WOW01wx2uJB$ zPQ>^hn@0U|Ynhd=dhBZn22<#!j+EXGTqUoo>y($EA!ph(MpIO_$6k-~kQK{dZdOC{ z1AxtEqM77sTd$+f0H&mjF$6+O>N{%F*Dv_0*+kUGzSk?+HjVquAPc=a5gx`0U$7Mi z#Zs-Wbtuqha=^)Y7Smjt}rlvSI}+v2P0Y6DguRsUw!}bw(phvXW==qqW5uP1=_Ye zv&D9zKbsLS)f;Deow1(YTsW8EqW7nnT#M&{F<-u%S2cZNt;j3Pjz3%qRo!f+SU6ea zVr%(FFpNT=6?}ZqZ@6hS+|HeN0fiCZ>Q=@VRoNiBW86;lfgr(9^xKt1Sjmfs;-s^v zblSyV(;^~}c3R!#l@8<3w=03us8^iPgQ*Q8^>~LhgkBEP1C}#R5R`xlqtX_4vFbAk zZ+9~Zc6#o8&jy`R;H_? zn*NgIad4?2Xl4D2zrVmZs}->&W=|YPlzRgwquh&@;@={I`SmIAqEbXvqvU}KvniBS zT|lIVK)e#mB>{hLn9qZ!9D1TVa#poy;<|o0@c_vGgAkRV&qauXi_77)1ZfN(f^@`m zM2C)O_xCk6EyZ$<)HKtIueWBX8YUGNoz_rHO}O9`4JNT-Qi{p#$`WUp3?5xiGCU?H zLIVR$sX3-ed$eXGLWx8v_$G7o;`#UdM){9?;8{Eos>FbB{D5$x^@FOhdWkYCH?U_C zNl1sgr_kG*PAv*mx4)bl$U{Oi$;_VK^@^CJKQ0JE`ob0vOBf$@ZNX3F%Mt9ttq4T5u8QTp0n$Bj)HCmtjmg2@Y%UkhupjQFI7<&dwl8gu))2CTW zOT#IDkgnV}Kc?p^^EnDou~e&QUmga`uy;H3A4x>SKY-|#lCuSTD~X(udfOK1;}9hk z01AuP)}B=LQ;r!qW8A)2y=lr{XnOrD!;QjcZl?w>u{pY(O#C64HD|xc{C)MKo2mXY zgiDy9rtXfJpI>dBacpZ9q%W3lU;j;Gsy*e!_8tnNzL+4m{p(Pkq0se;DoG7~kW`Jo znG5%pFSz0(^6msm9}@lc7INjwQPE$`OV^%Io!II#Pdt=}!Fu_Msi=d3VKB4>ET>#u zSugHBMT7T=TLSyEt9>jUotD5(tuESK zSV}RFYW9q?&@Hw^J%W&luFZ>p=QWfi4!?!l-AknC%KW~}qJ1GVXW)(Ux2`pql z(XqPipgsXf#D9&OMdI^q*imx@Y8w9x)MEOoi5_;HbQ^MoO00fO5r#W?2!{S4KTG#} zeojVs16SUSfU1}lHmiPkRZ#ZD$8L`y_kzp`|A0u~N54zpP#<(NK7{I&dfe~BCC#o5 z=NSSl?6#Zm>6#9{9mP9LHl{G3qRj|wp)Qkzrca_-Ew8oKvq_q2u@;dwV|gcLQ#Z3B z;vV*lxXXg~yw|^$E@X4-Q)!$zM3)^S!GA6^)oR zV*#T2Kmu$>Y<6AFTtAjfbW5DS+Oah2zu64RUTBA<+kd%?(1Z5RIydWcu!pGHKBZ+b zek_<m03xQoc>xpQgj>b~xCLiv+x+iw+hS4o*E0N*b-5Y@yYy3@XmWfCs>v=fNxNpX9zF8dV;% z{%I0Tfr*dG*@(#2NlU>fjen|8hNT@1$b@_nHo-sk`)MCHKQcFHODG2HVGLAu^ft=j z#1}RlnlDC%5Kk>AY4FMrPaHMXor-^l0OugbcHVdxe}hZTmb!pL@z+D{qGmqftv3Qg z#w0VR{Iu`8++p6Zt15SwHLIO#5jTs`7|?KJc;wxk!D38Mvh|-2*#=za3HFkTZwemcoAyvzo~$K3}wS;8|cbF>xT- z?bW63sD;+1dvPE3mhD-*z0N0W%C)$7FOlbP${*#3+CyJTNU;xaRgKS17Yu*DC#9cn zxASybt}Q{IIqT}FG!NwjSgefUxo%Z;do{GmSXGMjW}VH#lsB`hue5^EtR58bGsKvp z7fNHx>&>&R<#Y08iNBYu*=XSgMFn=`enJZBY1z(NhD#&yshR(eI@}JXZ9K^J6P_z< z*-pDs|2+Ff$n660(3P;RTV{C@+I>))!eFp@Rzw9E5$w`EC?p~-+?nfSAFnWaXq9&@ zsH$|;!eHI1JM{nv|4Msea|)As%;x}cs4VCKu<=oF|5Sr`b3*4DMs^n~{q-(m*F2|> z*?eb0biW^dXi&N|X=lDODYYM!8(BVnuC=qIq;4eG<#0+AnUTHvR&t|p|FPf~jZPdN zfD-dh&lmgMlomVESMG7MBzu?#uIC=;s%(%$OAF{PJWF$8m}|mf1N1<12>$z5QhPY; zD(%ty_iUnjIFLCX22BnBk5W!*_PFEuQeABKb$%OLOB{l??_};?KL9w?%$HvBUb^H= zlb*nr*i#<>znAXZZ%buM#3A;uwx#I@K!2^R*oXn##qa%g_4K&;g?gk5CwM45Fvi^y ztJAC`|M?5j?D{(H==l(OI~PQGaY?lunmTw(#7LgcD>8+1qWRT_o#@Y}*%|fq6Ff(o zmH0=re_wz|0S?&T-h!_4EZM5J^@@bKn-wiLf?jsRUdIi*wzSrF@4?v0IxpOFZYeBG z&FM3s(vkY3FspJ!^RnrnpY3-8O zy+#gp7W>9JGJE?txcLPwOSmrez&$j*)^Z3w6+M-#7>QD5OVpectI>Gwr@xhaC>W}Y zy90ELK^_rbZ?>nEyV$PT%qP<+Gt8_=8gu4c4HwD2|M30}+@j5-iJq={J@n!gZI0kE zV^zJ?T6~IDeQ{8GQ*3lavf>*vYXUBAR>2ow_x1SeGP!B;+V9*AA0~dS{z5^7M)nfLPA;i#i%tev`KFb)w|U(cg;=9_Q;fE6c+Ecg z_`^Tvml9h&A#dhJaNz7AiVlW3@4P!1{Uz7|5G8a=#!{G(qJF{)P+UW){wA=sV!ismf=PO8p_H*B1npL**frJDI<3L6U$G`sDMqvldc}-z9^}qH2i}J%v4E zn3Hx?-A$`Og!$Xd1{XM3-WEPjSdh4fH8aPtn9X`0LC-4$ zo4n||$xE&2+ibLNxQk;dMnvjb`^1eYK)7|803XsOqgh^8wZ;9xh(or;1?LEPJe3d3 z-b8}gbP~o@KZ7`Zd$jW!ccszW8eW?I#QvptM%7Vz1;mP z4ALKgSf7^|+~y=gi?&#+CvLq(U%Gd38CdZ@sqw2<*hbwSjNdSB6sy$@8fUdN68*I& zN6q~}B3R1LvKG_QmeLa}P?4#67x}{0=#h)hG9Hx(U!2hNOCiTU+&&lAa*A8j$gXA` z6H9;M7=z3!Gm)wdVT*8)ggyz=Woj~exQo^v|XfFQZ7*h1(y`vt!}YwL=xQdF96T@F%tAUO}H?M|@?uZJ=(BJ2bSZXqg;; zOW2&9xOuW&Lh$=eiye}^qSEqwZ`NE+jB3BPG+UZ)o#agR3Nvq zeW_{t<4mm&fPH_0l_HS=HcYGH+7&R9G&{tAO@f%jJ#lPqe{s;Tbeb z%I8GnFmuzWe17WX{k>$|?paky$ahm15>z8b zjfbNDP%Wl@2{HkU$l>{UdpH<)&eLog3nxA8=G-+V3-7e0G(4dJwKB4jJrfldo3iCx zfa;H|wO(0?aieuG-x8pEv2&B>7%Ok0$B(AdUuokh&ot29jR{NxxA1n?rkV=sPx)^@ zrF-6SwEF#euRHg5IM5VOw?kW{&PbT+t(Jldg(PBMr=~J-Qouai_d?q6gYO8uv1jkMxxjdL6 zeiJfMht9zSg)l&En|>1+H;q42yzs1*4-Qxvj5=pDZY*7Pj+SRxo1m%=?vi3$uHJ|~ zQ3w63Go%`+H>4)z&DVyI=X2Ot{pbP?Sp9&t-d&w2({1usnHw2?_ ziN=XnKYQE2;vE%@;>tF}ZiPV;1LmPU+P+UEG*~Q-`F~2T7FGNz9J*A(){I){FmdJ0 z@Yu@M$Cdbd{yaS|+lpY*2QxLLmkrk=a)6=vnUb;`NXVNSN|65T&{tSv=bwvEaGlVh zF=&%?3f!W}z1`(RQ*UV;x8-@iA$S=K-K< ze@^YCG{IGb2&wICWoSg}0F%_VBPoslAjj{^29);4ro!*&ZTaq_I0vis3eGGnQD=rY zoAZ`*+hf1LEQD*8dG@bU!OzIFXh-{Uy^<98(8zWfxxaXlMW}O<3YR2adc-SmuNK8; z<~>^-ED^X{gVGfTTpVt#&)>QTOdLr(q+R=t~m>EpO;pzmwnY&d!}5* zz&PU4)Ct=05KTK}L<~K-yr-UB$4Jk$}HM4x(PLhuaBh>yN=!BR> z%evmkuajTjbMhPJk7JQmis0B@z(-7szz<-9~Ok>xEG4&^ri9c<*G^9;3xNefsi3a2b{`btFK`ox=h zAblHCh1?S&S2=A;N?4!gDUBtUBhmwFBvzu~iQ?6x@i|r*dA0iMowm&mLvZv)`)K0R zx^$!c{inpX=2N6}7eFdbrGh zIa2Aj!Pm2whO)&jVxJZzUK0&lIGSJaks=gjRG>CrSTilNE5R z_qc`Dp_2tMbLC%_@ShKbwAx;uIrHMPJo;CjRnG0|qK;OQN+8Zp-19A5ae$NWl6f;f z4vOURxui1aY=sQE>?hEg!V`@YvYJ;G%fw0kwUJS(vMU!A$k4BEbuSP#L|OEixcYdMKzdz^ zQv+F;ESE`*R&oiH-60`AbxaGuxf3QY&L|<7d+QoTTE|_3xF!sO48}kr*n;Smwk%YMMdS=td4cn-#jY?=Vt5- zNrJ$)UoSE-fLwyVud|^qlCUG5zrcLNC^9?YW#II|VW5}Yna!1zNe&2=Gte531%s{Fvw9+(k^YC@C-e{ou&o9d)hTb4iBx^dC~8 zB73*~IqN^o$?XwZ6Y82hvxZ5T*(l=ReGc7mMvg=Vkr{p&GPI7;6a0Wy78bm4=_k%( z6Acs)3rmRs)pi@LC6D;p8gq3m!I5l65=M!#Idw6HID-}D;yoxQ-k1xk_&*LsmLgCV z2lM6}d?T#2#F~VO8-e=nn1uXF`yF>b!gmY=#$nhaHR@s;Y)h2YY$|5CMNEMOK~kep zT=mrzwAM264r;LfjPZX(`Y1q-lq~p}wJFzqCbwh}e2+WIGRwg*p*?=GFRwq!Lyxi~1Bpht9U|mBMC9N@ugv%7YY4 z>)u`!T3V;eN#mumo4ye0>9Ls;=~FSUn}BuN7B7;?a0MxUEBxLFTuH$7Fv(`Hvitsi nT)mfRL$LJ{9b3&++zGV(7Hur|3>On2`#-*%{$CsVKg|9IBo%Qo literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/teclast-tl29_325x244.jpg b/3rdparty/libflac/doc/html/images/hw/teclast-tl29_325x244.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c780267646599e9f85fadaebb202eb89292ce511 GIT binary patch literal 12000 zcmb7q1yEeim+lZO!3pjjAOr~R5CVkYJ~#w-cP9`uVX!ceAq-*g!5sz-?yiFc26xv$ zUVi_5Z{NP%+N!sG&%IT*`kYgJ`*xo`-QV|T{?9J}k@7pGcK|drG{F167vRqtfLy`f z!4?2eQvnRQq4$iY@IHUxGctjMWl#~>t z)lx(N zG<0+{OiYZYn3(_4`9~cClb8wXIiIW+HVLzZ2Pyx@iMQI8p2;~?Kgn2F1$3UuMXa5` z*8iGQ|26r?`M>)H0MPz1$NF2xNBq~-6EyTE7?>DnnE%rFTSv@<@thA+mV{aBuV0Ig zRV;6lC$I#xb52hGAOU#je@%$di2*Wz2kqFW;s1XUIh<1cg5v#ERc@R|htYX(Lk!Wv z(C_&^(NIPUe17}=T_+ldL&lkCgQ)u@?c0Gj@)-Y}4C4E^Y{jQConyD}33LNfO6>Pu z5V%OX6uPmKv>Ye>o_68Gm#?`7@f0ObwwK1pq$sgK#&2m5Q$Kj!-S+ZUYb6z>H|6M; z>J9o?k{K?_$PaU(HEDnng%1`-*(uC6tyajZ7{Q3Cj>w*n|E3L?n0h9prM$%uQHWU6 zysSy1OWG^>>Ua_LzJ!3 z=Gz!k{{ftK`(>RyYn+^ptKFl9w-yAUM9XA1#{OH$0)!9mvB-=vP1O z-_QU=WO^SGlzSSwC44;)>&ja9>wnp!hBW#XG+3O)8j}gq_(@m|yoT{yY0oqN0kHOY zhtdM+)E-xrJ3p+He+}!2+$s@{uj`3-otQl|^|4aHgHZ-3QhW+S&IEZ3h)tgkmS63Z zF}E=&1Z5U+4ec8;cKznrBeSKM_3N%G$f$JlaMOf=8tV?dOk}Aep1&Zgd+}X)z-f_+ za;y3m-Z1quhzCoU9ig6ggDDIi(;5LBA-ewlvn2G~KXJl|e61&wywJS{DI5{_VRC@e6>l3ZG!UX%fm<_j)B#4jx^ z?Pv6bMKjP0PEQ|BSq{07mc^t8@y2a$6gxSzNs_qQME5Qo^MD-@;M(5F<2~!8u~b=Q z{P{gg8yC4>PIW`fyo^4Zu+G`V`K~FWmYa~qs!H{p`*;xxV{nIFQ8! zXfTP2>RSQBLNc0taWX&YwnY3!gp^lLh|sGH8_-giTnF5#-gl?Gg0A}0OcSWxf2zcV9j?;F%7PVUe)_0;`?B2#Q!S*~0YbOb2eJFTbGu`DG4pvK&Di8^( z?)B_C-8?mtKm3_aJL_9(R1Xg{ogEIk37wb@B=e|S;W$#GALCfvrm1z;9;6|akNppE z0(WR-RxrI$kidEklf|)FbD=C7GqKD@?~Ulu4~gzz{TE2rMb`%Wo6^(ji0AGM$C8N) z_)VKWXVoZ){0cZ2rtcM0bMq>ev(P)_VDsxZzRH$FE`7Z2G*U|=v{q9f@cI7N+)Q;A z?CamN5xez%%Doxi81oA^Y0>@8*Q@FcvcdFFo_Hs^Ir|<9*7WB}>&js9VcJb#fE)4a zg{c)4qo6H*uWZ7A)aIRP$NFfL=h1?W-mCmvpE7EPDFro$+O3vuU|SftGrq^CxFE$> zo(6&2Kz|_m%la-DSeMR?%Qn;UTF1lHBLCF9aN0VNH!-<_Dhef|`+JtPj=+KGSL9Zi zu`8u@U%6Em-KG3C+q;+jz95}zJHzSfOtXRLjY6%T%cR=FH)iN@z5IlF@3Yi1HxlE_ zE|TYx6ysbDB~X}iDFwtbmk2Rd-j9v6~U{-x;C&3YO6TC|DRI~&2OY|;uwZ`=^)mg;Yx zG!>tPdKz>5bU%B^eJ&yXs_v)j&DLtkYYiR$Ok|mm9)3}b4th4|c%(3z^jh>6-!tA6 z1u{1Qjohs37=f*tOtnyhbAp?ns#VSlE)No3V;R}75^fbkmge-vO1fv1tbx35*G-le z-gpJio*P2V=-f&i#bVMCoI>$xQ{yMUfviUhAP(|4nyJFayibAJ#8CwPH?!6a~(fkA8UIQ?sqO4v}o_1k3 z;3rSnjrR>#_ioy0Pp)?Rd_5v%oq909k8N8;qQ(3qOy+GV_NwTU#Y ze^$%V*Y94%-XWQXViRE5;Ljo7rC@wT_anDF=`M|vCc9Az7^h>zcdBB274q6_;MnB< zvqoT_^BXTKo>DCv(O$J~M1=f$wm;(Put&v(j&k?XctTq8Dl=_xpN)hux0sJFVVOIz zb31H6@x{W7wlQ;qaq~RN3Elb_q~td#y4J^)DJ}ir*0p>AZEIyUb27+ObrdjDhvqwN_DDo4a0gFMKI1G1 z)?iQqF_vJBIFHOZnAjC^yGUQ{!)-&qJt*nb=Yr??Hpckk+sGGvhYY!Sc#t@t%MsD# z0B+Y1(KMUnOcJ3+V+M!ZsI$ERJdJp(YqLXrDS;I~7wH)G{9hHWbmzYt>mK8s^g8W_ zwfhKekA^PUTI#56KJd4_!&g_#7HV-kZS*(f3{8K9s`U>%-rc_bnDAhHX2yUQ*@OEj z;S6>2;<7t;P2n*xK!tYs98bXh7^cBoX%m#2RCh=8b={U2Dnjfx`uox>>fQIZ6N5M@ zgsoBb)rVzz0*3fqf%RDs!E{T5$Nk3Nq}?L{cB!=13Ce!}_DD)sqU*0-K{|>pU2ET< zWp`#d2BnK~damDfktGZyeXWh^ZR!j{E$S#Y{!55@{!G129o%7v^D3H8{gHl(a_HGP z?c3c8A9rBK!tM)@y$L^kpEc=Q@Bb4a7)C+!r973si6JmPsU)1jw&${dx;_@{_2P^3 zF@+buc}~u;KVE9X2V5I_43^NF8L2BD2OSX{j*IIw)t>%Zd`l1`kHseQvRrWTO>!H( zIxSAG!LY+FaKe5`I*L_Cng#rv%vN}|0iwPJM#dIWCg*_mM9I?BQ4Aj+IZS^plLO;G z^kACVKLE+l6HqzD>m5M@i+R7;H8qz;n`x_qw*1D1>4{FP-!4Ij_CD<_96r>}}{ zi4a0{Y0aVaI%@IH~P^IaB6jmJ%|8LFGZU&06jSWx2^P#8XwbAH}08URhVf zebaX1uQF$PY1C+zlq6=Z2rl0KEk9e)5@g6@*<4TgQySHL_g@Kkeh zN1KGx?_zmm^uQG}8<>N5`tV-npdQjFFwSAix$^zZhHK7KASxzq{eW!8rmBe+2nImyWU8e+bDe&C&HAt`a+q?iZRf6U6BP z-I8F2i^IYi7oQBv)7#v*548ihpl1$-x-;d3i7g&XpcVT~Xo<=@l>2!V(qqge6R8G^ z2a8boZTLIzxr#>gp%k$_886HogWe$_5Occ_q~?-UNSTva*anuaRY5NJL0^B_{=3&0 z0)Y%1>_ceLPCfVB{*@9uV9MOJP^zt!U_}C2k?Z*x>96lX%p+n@>ZgDIPTk5{mk`7_4Lai+&%)qqLe1Ao z<;ySjtK<^0)vI(^uUz&19bU2uBb5|j)FikUXR}sSx*~sXKa&&~0xpShn0<*82oLH= zyS~At9Qa@#WWbk=3wa|p+C(*7F4Z96qgOlQDXF;BeM0FM%i~TfC5;<8x|7h7d6$PO zD+Y;W^efhKC^Bucf_6jaaEsJga%6CCt$2!{4b@D$P=DRa5mj#Gp1r35j73nj)1 zh8HWz*&-TJ^8Qze@IvqUX(O(@oN_!?_aHiOqYtKI9znD!0d0KU3--R|?Bc#)6Eh*l zQ%+QobEKz>qFKC{gUM9J*;VSt1m%odJLQepK)?Gw@YP7wHO~0LOU3FApP|0kM5c3n zW8moGp}+U*xEFtu0Z8-Ogg3B)LD(=6OvC>DRI}w5SCgjHAoh2dX5+67T6zOhY>Q^I zwu32HVOcB%w zIBe_-iIw&E+&f~K1yLg2o4RL2%{9|?**Y%bcldoh@@0a5=rZ33lo&eEGcB7B#4kvg zdR-6R!jAS$#QhBwyE~N^?K$c(wkZoCoBiI${_0B|sz|bPLVQ(a6pw9#Uy#leYQfbOouyL4GBjr&GA=2vwzdzJzV0^!}2+V3dSjlI=;@V`FKc9Z$$<7BBnyrNDySCqYc~T$D-% zvn;A0?`fn`(#|-R@>ESdGt>4e99qa$5q9(kp!Se$S>pIU#H;6(>C>UHu9OzzSGB;# zj)Kp;+bowJ# zY0eBk$d!b5?Je1SJ$ge>R8gNo9Uo%t{cB7W!Eex(tXoo5l?&lv7ol8-9V$bcviJga zJaFwz=El}3u4j(LKZ&udsgj1N3Y(DiE66h}+P*Il6t9qK$;FjoGlI;@nIEP>{BI>6 zE6>*>nmy``>!TMB8Yqn=*@2=#6VNirblOF_sPcsdzk?Ces=h7>?BNIS413vrE*-Dx9$nS1H}P(dre|70 zi>iJHStVpdDjJ+1Uvf#$m&8dxqp3Fb;8vlYasq4&?oZm)`Hi6|p(T>Z#{?^>tgar5 z-G66Jzz=RVtE9J(Mdx!%h#{+2E5d^g=c_a)7Gczi;|s(Vc^`zE?i=v{I)r~JdFHJw z&P@G+O^@K;tRgR(>P380BdkiJ^I2i2@rM__W0jj1EIKMOP==Z;_BP13$l?=sI(yN`l$zHCnoF2HeFCJ>Y z^OaGsCEg_AC94BKjJc7(2TPH#cWG-gb01TDLpQKj{{YT%J?e7l3Xuk9<^_c^v&QAR zkEH~+oDROx@i{+B;a@}_sALmXq1lk^m%}PDtxn;ruG=3sLb_BDvV};1(Ft?8Mp3Vu{S{Z?1eEe>iL%?bJ{5VZ^+fd%INmuysnGE3c~3 zYP`Ses+&BcsjHx+!8l}{@UtUPv-)4*f(h`2PE)f!*K&z9By>!u^y^K29y?y@NW0!@ zvR)u3s`z=2q`btvm#lzCBD)}r_TD9k|76HxAzEx?W>U+8d%tOJ!gHXQN`MYuS5Yov z4v##0zF1C;jZQ7E>BJWHS-W>lKt4!Lc&PHYMUTJy4?s)H zGeA7$Y<^&8#r5U`Pqy=du?v)(iblc3_BHiv!ZqP^xyokdn2Wj6#GS3A;Fo0$0coZ* z_7e_j+>sDD4Jpd0n^GB+F+JPSGGcC;S8+C1_=4!K;<sz=7AtT&@ulpXw#eXXznGsr*bPMPO%Tf%`~j$&`_JD)$CS4h z*;9n=?gegg{lEdiKyLhiqOVgL#Q7Dp79J<|K+o9cS+mo7IG+eO?S1My*xz@%TjvQ=NtizUWGCPE}!9-pu($nw~w7!n>?9kB;)~JhTO0 ziDL)HKbQM##@8P~Ea6ZN^i@{*+{nAW3q>B&Y5V}Xd|lYFz{;o15gp>4 z8Joe@&{Xb{x_7t^TuGP;WhqYRBinum+iYxh!R4-iLc{At-gNB6|3Ev6dGSuvjZ7O_ z05h^b5}}x0hpP=LbI_~K5R77--=M?;&Tw8^9h5Hy_L(|2719MO;>>Kp9CsZLeLQ+J z^pqbKEW?ihlUPwpO4xE0WUxpZ2Uh2lF|&R-(YHo^Sv&3sdKN$2jT!?-xFJn`VIem@ zL4d>bFBAm1ARG^;_CEqbzL{cUS8Wqm?1VbLsFF5X8*vu?tZn*auJ-GqtU6<3@95P%130;>+k!^jMn(L%rdF3w} z?7Fc9WrSn;2)T}`vow)N;euGooV@9^t(K*OaWGdV+>kHP)I4J~2+5_|eup{adn7c> zbAgAIRsoKOZjZ}4Sdjx=$-k4I=L0q64CxO>x?&KgJ?$5@Gu|nauGOU!JwH<$Oad5^ zwMz(qi02}eM*gDiT+gea)cvO%r=ITXq^d4~NGHD6)50k)pAD6K2$7eOubO8dvx#xc z5&{S5AyVEmB}X+^g`-I+ZJ(M1cv!dQ>U8Z%2~6Kfr{lN1kV0Ap+zA2qX()~Eiuutc|puGq`E&A?8S zkJ1ufvicbVyw$mbyLzU7=^MIV-1hgq#=FKPx!peiluRZsQYKxXb$H9LU_fH4bu`mV znz%XpF+Cx_1dQl$Z89zl_R{R7q$BQv1*yxPjp@yq6Wt!13#2TbH+eQ5`DlsfoDTl_ z>#EVKr0LXLCT`A(eohONwe~Jhg>E$eVp8taq%^zZR_d|0{_>}|O6TPjxTdkX0gHtn z_WSoN40y$g(Ti63K58~9G+DD#2<^~f*QYXxdx)qzV)Lp>6~@O84l1XJ_Ys0SZtoqaT@6TLc`X$(Zx; zTsc6{{ZcZ?8}~)0mS*qEE0F)vYyyh@iiKYO{K8OQtqBC;Q>$^W7Z!Lo)P$J0Ha?fX z@oB$UJ|w$R842k$v@3?>=S&VBq+7Ixa^(2A$iMkJ+*&m7ygF|Rt*qlvJ|ph^Oqfsh zYwC=pSm33d%9(aloT6>SGg-!0{ujnhYFM@RxlY)7z`u0d+MvnJ1Yfc+52QYfcnr~iU*a7@dfyqg= z_BIHs+-=frH~>azsk$x7q&xtiq(mQhnr*MVAUS=QUMwrXdaffZuWUQ8)z)&I+!V8m z$9Qj_HKW_!W$k;YC-HgLB;e9+|N)VKMEg6*em{%-U;2e@r>w8Pd=6aA9 zWNJRKOdXrMpIR&}YwQb#y+0U+MerlzPnZj0vk!YkTbHq)E2BnSeWLIBT%SZs^ViOEei@e38IWN40H|`u{xT+uKpMUqcoWOOS|XRCF}+z}1~ z*Ep?|QY#R7;!C4n}Xc6%lL?$NRoBJPy3cXQR^)Q(b-^$0M>I!W!|8fC`- z`ozRD}M##~YdC{+M|4n1B7IcS` zF%FVd7l>3BNQYB3<1CjPRwZcn{QSHUjE;rQ=IU(H)Ii6rN@io&wXT~f0q@1`@_KL7 zT!b^CCtBg5E+A>3S7i2Mhy>EPt5k8xPi( zLAsO_7J^|;U(3NTt(Z5o5(963&7s~eTwxVL>S;}zzj@v@6o)dikcq}#X>C-LAaVL; z^)}GMI|T9Ve*reI6~2YPo;@4qiHTS-5_W|*_$nvv{u1Bp>OOu``l`70;N-|2c3eVN zurCxK?Ya^9k;Hwmj*Dd(|I_L^bfy2zhH1)3o&GDS^8k;1*t(@JJL7s1zsW6S zY|k@HG{bP%66P9)2z-EYu(ul=-YdvE9Pwc%<}gkiNXeS0IMoX`+ivl?3yi0(71@t_ z6YOX`htEuO8B+LZkE~so2zrI!6dq!Y-iX-IZ5Vd@;H|H+oW0b9ExBBh@4or!Ca)1K zdz785$*&>!)>jGMZweXcpHtutHW3wwPOlX3H7hJV?;zNKx#=t}U^ zLYzUXqZHv%*1TvE0{`;Fe*nvh{bVSNb#6wecGlmpY`J=FvZ*;uZ~SBUJHME{22?}f zFxu~TVYhE^N+;=j_Ic?o**=>uCRmSyh1YP{*PQeY{_5z0u0W%Zj!Uema3~4UA$((neF@t zXT=F)^ge(jOyl{u_5k(3 zhcrZFj8Mm8k(ev;%7;z*!R2HA$!Q2Lg~&*&V#=2GljW@@L{Pa?%*NZVg8DS_I(+No zLKDp^QOHMzdoJjzu&a^O?oMQ0;kscWiL?bVH!kapHQ&ys(!i{0`v_pW0*ke%?9ThB z1?o@4N@{BC?Re^!_6A4w<50n2*$rcRBTvqSQ=Mu`tH&i(w_HtYIlP)?ViD=!2;@&i z75UM}xPSK~TJOBfhE9!+zU2RW z{F(F{E;X_wQEYV)Y}sRm6t?EV2yy=|rVmbv3e2qkmvO{EKYj&nd@}i3b_+g34sRw+ zEUKy;d!v2%JWE^dK^9P=q?nv5&9S^XeUjzP2~k!eEk0~Dn%y!c_~csN9j zd{d~4YQ_F!;5z0gGRoW~4IDT(xy0yA(vbY?_;o;3(YJ%-)sd6--;vqymnDbf1NZN2i@sbq>09 zw;y-Q+usGB1D#0|@K>|C(81pH`4~R>jm1dIT>GHtZ}dC2WrCL^dhIRHx93~l^s&5| z=nFo708Y3s;?WgcBpvs#(A$2kA5V>hCeFJK9~iTd*c29$iQqZuixPx}_WzpLg}-3( z@TS7}g_WShrlO*J7mmkGw|Yx2C>@!-lVgiaiGS%vL~{n^^<%ih<@n!7&%fb4%=nn= zox6?+y%SsxJpMGJEPSKb6Un)WMbo^(Dmx`bDe=`5T1zmh5WyI2=^Bkmx4)4h)4`ei zFt-5#MLqR}KBLJ+Ny(Z+uZ}H`Xm~k;!>5gx+y}w9AWs0G! zf=GJ@^(*-V>i5eG3>BLB1YW__KtuK?InCpZYpH_%re|DctnzHm@oz5ZKS6k5@(glk z?$ykn8aM9mRF}YNXM4-~K4}&whvl_s#j02HWnjf+s=F8&RTtf7HY+%93wd=|; z{+5X|OVa3icOoAoC@P(Q*G{goN2C0bwuDvXtT3E@ec3zk5xbD@mcY|po|3b&2iQ|% zWB!tq>J_)WmoM|(@1k3?xL3T=tl^>YQm50EFQ<-1;ko_TJ~iC=Pjot5!;tF96^Hr3 z@GUixhBc@_Gb_*E(`R=MLBZ?5Av!sZ`g9tQyEVlNJOyEYA=Hk{nPeiHRSKmOQ;L|C zb=7+jbD9orciHYBr309et%}z|w78K+x{~6>!q#Z+fQRL+gWZaSw`V0PhdxKSdPU2G zlP3uQZc45@ru3ra@4E|tM^7K9P8(kWzYnPkd9$zB6>7$6Usrl`L>O}+;GLj z^7pX9*y3)zW*08I^w=LC``iPhmL9NTGh%{Z^^@b;iYl@yc%-Lz{2UPK*+fP%^5x14 z^469jWXVW~+T<;VdtUhd((B!55ir)bOU>$QI&L+c&n2`>pSJJ(M?Iyd+AVI&z7X|c zsKt{Diy~jo)_wp)BLCl^`4^CU%2mv{Uu;uQ8ZEZF>EMJ4@}wnXCgYxN;Qo>%o?J(v zmbFb@QIyMIm$|Un9q^-Zk*nBMS4(evjP~NJRxIV+K@8^YRKxvY`9R&u@DOITrG;~y zz%cz>3p6UvN<9$9HVkKkH5!M-&szt7b#Zr|X!E@PLHH1E*N-{!v1r*8kMMq-23ZWC{i4 z#^B-Tdd22Y*b1tdOi_Ea=np^|J6rE|@j-7q^NVh?tQ<|Zr{Y1HM~lVD;8YT=m^A~4 z`1!hNs(Dnd6K4*5=y0Zeaz-(Wj^>1LE$0%=hhWg4LPH>3;Ldt*WfIEqq! zL0b-aeV5MHA(ppCh?(eH7!L{C=r4TW}pYc!ej7kY#gyeK&BjYkIo5Lw1rhoAMsusG)#cC)2}P77#y0 zlwPKC5!aS&aEmY5*Q%=iV7Na zs+KQ87PGqiJ;zMw6y<(mZy~ZT=DZ4#g8|%^-k^p!x$nEQMpxnfM=0}%2NfNcys~=4 zvN?vHV8!R=V9#2ya>_moxpTVxD&)(o>eAdQJqRP)GDz%W(7SKF{_wVCU*1}BTWSbA zUZhj3SBZTsieoCrmui6wCfpU!tW#f}N3`?laK(vGbA`%0mnkk;5Gx#@nPD-rY-J59 z%(H^;_1$Y_(OhT!%$<2NWPMrgoF4Zn+>z62k}>$U8C96V*5D-f1|NX-1MR;f$zsT2 znhN@8W^C}#c0t^?pg+od7*27XY|Tm4B}GP$_8#?PBi)_^_x*}UV~jVOgzVYX9VAt4 z)Na^e%fQm>_0x@DA0v5_fBqm~XMY;KZL_LjQ8gu})8c5-VT?}G%F;?LWGtGCFxgxw zeG(DFFmF{O@OU1bKrhEW@_b=jb4pWoX;OYZcl15Fc3|po>DT|3Q2a)onyY+hv7D^4 zv0gcFoNx8bSs(qUGf}+-3BmmG#`vMjy;HB`Pn3|``+~kXv~UkOm9*+PIp>7o9|a)5 bdCU4lNusuY8stAP9RE`o{~y0b{#p268gVU+ literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/transporter_hero_grey_325x208.jpg b/3rdparty/libflac/doc/html/images/hw/transporter_hero_grey_325x208.jpg new file mode 100644 index 0000000000000000000000000000000000000000..558413b706b28f50dbad41ce3c92f69e4b2671c6 GIT binary patch literal 9984 zcmeHtWmsHIu;vhC2=2iN9}p}MoWa9KfRJGrG`Izq8C(Z~B|r!a5+pbTcL{F6g1aTi z0E6og++oSRclZ9;XP@2wTc_%DRo8o}y81llbpPo4-}lP^vNuX9N&qY@EWqoB3viDH z&?tJ_SpxtN2!ICw0N_8!1KrO96ad(d9{uG9!g*j^d|X@{99#k*5D%Y-fQX2YfRK=w zgo2Eigq(zskc@_moRW%~nwp682`vp3Ed>=d)!!gk*bmR(;6BF1eN076NKEzrO!w^o za(uuTmLfJ5E8r117B)H7eK&v^fCa$9eJBI#KgauU$HsbugNp}zj8E|3Hy{IGVPj)q z<31+9$0x?Y20Y*&J=8#s2c%%7q!N_Zz<>OYxl7!a@kweLp;ubkL9y8rv~2AEDrkO) zf1;?YqZ^V?MJFu&_MN4xTkyw@u0JB~9^a}vrygR{{Z0Eo|10xD@V~JiT>Rt@X&w?| z<6u1k{-+;{{1G+!4sewpjvx5{ z`TsNn-0=f=T3mFhSynWUDaZ(f$IE6 zO{c`DL|ANrKYRNRZ{Zi)lm92opOhc`XOUM(xM=vDYI za$4A3cOs?Hs&4k?qC`(J-iFtv-d0;Y1DNC6UBeu89}({FPI{%s`rPnJ~e2EM8f4r#D(`m8*Bn4-!ku?zwP0@ zBJ@(^qw+Xp`<3@90-)=vcl7Yit?sfP?d@f{_K-M|QWAtzaP@o-c=Xtq)rK zkf>^(tv%__b(ZPosqg=M%Pgl;KD9D04AtVwzoe7y%!4uB16Vn~>cDtyH(9d34DrZ= z<@)+JsNfW0i2*TRhGg@+^E211jtPPfRpk1>8`REu|6zt#h!$Qx_UjCNKqU?F5YVgK z{c9>v0(ri~`r@nqn{X6Z{4biJ$ma5~Kiw%$A?hJ6cx$xi)fG>4>fjb?$3W%ZE6M0o z$X5D}dRs)n#^e>JZ@g6$AFe(lx4jHuE119#W`EMUmG&PlV-F}%*)im`&YMYOBoOu_um8qvmz$8OmEv;3XC$me z(lc5&tPE|M&rd8ac9M@v%+N!vqxhcQntQ#46&b)A9Ba;b9ScI&VK}AC&UQ|7dA-dp z@H&F<9ShP=`>|o!!x9AA8e~s0_PgvwQrXA6_~Z@l)H0A62Fa$8m|h02G?!m%yIZ^R zN7(x3lVa1DbqFkfN#3#+axq}<``gN|M|f;S;WtUZxGmG?beYrEX2v^x8|F7Yt<|k9 z!k2VQ2J_9bGIm~x8BUJ*OlN#8q*3}mJTvDxmn-6<4r*ZN9|cvJd?I%!6RG`XZ+h8}c)RWX?VS8@!f1*N-700ak@)+wBk5*&69xv}z_FpK`q}$qoO4 za<_Xg<{><{4$}p!Av)YHd|RykDH+B698lTN?L(PzHG8sK~^knw4C=W>yvI0@lnDVW+W{ zojG3ueg6bru+n6B&JztUlXoC}4}_Orw0&iMBN+`Zl{p`7W*OU#y{1;Ke*@OTT=$?* zmnn`uTstyNmFFnWKLNwz*Nk^4E^nSnA~;;6!qPiud7KKP&zw?lmKZxd%iW0OR7I_Ss(kQt*R2;o4{p_Ka~H z{(~IYEK1zL3sZ3x@x*JiZtGz6v-fSn-MEQN#4E(cyc_>$v$m|7{XttHVk6a6u2+Pm zDYGpNL49-!S&%`Ume-opXIDBDKfyE3i8J*08Pm@w>i2ahlA$|z85^nRvK*u2tUFC$ zH?IX{9J-(ok@mqK2-a475^}D$C5P5hoj>ub-`Gwetmh?$^@TpEqtIJ?BXAD@#>XB+ zg~%xWUj1-Q8Z2cv^8}?(mh9NNVBLsV`jklErFwMxn|omcFWAp&^NyouF-oeqzaUVn z(yBQy4#b>UWPh&sT}LEI)iB+obz)K|YI+^RnJNV7dP>ayl(`(sqxQ<0-_fFA{9Il` zy$_{!vF6_V@zPBmtH9@Hi%a`Ovqz+nr;n(I*d}=!8z$qs%H+gbX_Z`f_EGf{1=W6V z11Kp>BoN#YX|}o?DpOoZI)<`_)0r)J8c!Q91{i9e3WmS8t z^o`okBI@hw8`dPSMs+?OBE+9)DK5QR>qpnuy5}Anp+5HHpL^aPme3h&kkRlhbT^T%_`&|5L4hB{BEeI6Ar-L-6 z|2YR*enC5<=x`##ypxQ@!e^(n-4m2h#q1Fk&fQP_gkO8j88aW#u52WUP>2Wi0htJ0 zkj$`+sp*|}@0`=@{r8!g757$lhIbr1D-&9hllVS{Jf|B>&HR8zs^m*;Gj1r9U#DgC zj6Na0mWZOa>4J&vs~g(Y{3p7Nu;rgI5N|zneQ;)%zk+2wyJ_o|mrv<5G47Oujdqf? zB0{OZ#k8?qG>na%gwZWwbkR}Fm)CI9f=6$)xxX=c&9XTwNd&81Do6r7);I#XK)9cJ zJj>z!d~pw$a-Kg)`}IUH!3+4(>w`<(^VX5YE&zH)8l2oDl$=D6Kc3VSTMc?;Me73h zw&|%7WM)p6m`c7vPwoAB`}-sh(sAC*;G{81sZYxn`87R*-Kn;F=W6+^%Ws1E`Q(mb@qod_bGQnjLGk|M^XR1eiRN+>!u!?jlQz(-5H}>4t zKivh0PPcH|Z96t5VvzGz$BfSYr1h7%;-cj0CRvx~!c_@4FDHJv62Q&DLBF-I2V4{qa45ZqEzs#s(Q{d+KPW z73Ekt8fsTOU3w1Dfx=w{64$C#|IitFd->CGTbYzLMbOx_^ zju@xkltDxU(m>V(sfp3Fr=RmtcxlJh>5v9wbT6TI6DC7v8ir=jStaz=cK1ftH$w_N z4Fe_(VrL@eGzg>Q3#<&&aHaZOuoenl+V!})bmiHW9coQArNpR@>KJk;ZIKNlb#ei} z=TMVqCy&DsmygMvE-6U`;KD9b{82S;%uvCE>!*^Ua*9+Pce11L3GL21&G$H%8m#tZ zkFt@ZF&$k41mx#T@_Kzr>p-JDC)J-eSse3Ch8%`jPv~2qy+EUlR$(tAd`B9JX!sL1 z`+cU%Sesv53Y(Q|gw3Hspjikm_2q(u6AeH4v%jk^GS606JP9ccu8yl)yAH9_$K~)B zUJ-;_jV!JUw=f!ZF#&ls3gC37v0F|mSejd8>EY%IBOk=Mw1i8Qk7A*n2VbLup?dm*k2`%lx35YiOaF0S zFO?>k*Ae5|hgop{o;9G|gv1%`qcg9fi{3GBzi-44*BFZxxfc5O8V?tk%}$dQRw?T| zvoq$?dF>>QP;+67M$CD6Z!6{%DKQ`W2W!}UP^gyOC>v){6QJoW1K z5ScT4W4m(!{_$*z<|<4C6m`h-GUgFNsOMINX*px!LKjgI_e1;FG^9tr#4`3Cuuu0` zZn3J|;;?bw?MEwHxC*AN->0b3D7!qz*-F)L9?1q81iP(w@Ro-;UZpUA>fI7m0MW4| z-Y%Y)4K&VyOJ7Gn&Uy~5VXs6F53?~m6>8vR#aK|c-=#ih5iI$7D;o*=-CG+Aa-FXV zKTlKm9ye1-F(He8xcO+dHubb@h$xObn>0g(d&41}Y9s+YDkP2|S-}$?tKG3&Wul2U z9kkG@=e@OZPoV5jj3Jr>p@0ABeM8duu_I=G%QDAq1?`3^5 zutfE;t57_WkS2n!g8rOOKm3rsO(OrXxwsoP`8H>@sfn6(FY?oviBNd8{m!NNdXOi%YhrB>aML{j@sVbDGhfN42+QI-T$1VdOh%-NMb4@F|j zB&Wt#w>_*EVUb_KmqISAqanQ&(r*4LnC=sA*gR$L>gILbJ)r9rCN79f90m8u6FDMy zI5Ym;tj%(IWV##_6e#Iy+~QrvUp&vZ`PQ&_tJu6CG$pV4G24e9UOvaYg6|2#7fB)k z2u7WB{jd1~Th6^)Bi0+TBZhAlxliu0vl_L>o7#BvaTZYDzk<_1l?Q>ZyXv7NX%?Yx zaXah42_6umZn}bmi62Z1BkY+q<+?v*4#R#mqbK(&ti2$m_E!$XrFatUgBqHLiCUdY zAK6;c6-r|yf6br*y##G#qG#5mx0i-Rq=)%r1)-B zkIxxu8yc&)6olpjh25)HVWGC8sc2Fz!VRdWoGYK$=(Cb(`hPQHYXw_sjd3*T-dQ~E zcL>Y$tDjNoM*}x%{+e>kvppMj>z-?(=R()d)=R$u)?IZ1x<0P=~ z;KBj71h2l8pSRD6I~#N-!!_ghdQO&!I>$iEP~>K2)_uRcN%yD7yE^aD=bblj5c$j~ zAyadg91fpne4BFqDKYi%$<6YF^e_V!>c-4&Z3KZ`4;@QwcA1r-n@@u$qi!TyMe8BD zW??DXZ$Gcs4zDdKdf-_%hUEe?iGL_mt?)uiPN{V626Rh9@% z+KC0TV&fDl%JK+3u7s>F$`Pepl!gu=z-$)^H05@D$i)HPG>xi?7VYMw61VmX)x|#+ zd$?tb?aUM#{7DhJ(;7t$Z=uHOm}GlPA*o#ny|jw(y;D0|CCVTCuIFdbwrA0^Fp>N+ zdJ`3+Ye?H(KNCYe@5&2eV(FJ1v?Mq+w-z{$zBTPY-S;&#BJ{RH9PD|G{#hOxV8beN zQn!u99$bMe=)B0j<1A`=zbNHxW#^x>17SQvBzP7Ud_t0Jtk3_6ld|wMJhO5XwQjDp zzmn%rN)3(pBfnUdomPeP(s=%K%`@2TxAMPJ_Wn|?8_a%9peWm46X}gUXJ0SxFsv|# z@582d-Ew!VZeim|bzVGg2O*Ag*la!y#$ZPuz$!=mn|DjK0rK=D3S!YUEvJ*UR)#0q zPgdZUe^9d{sV*SqJl0wU70%WZ1fb-qSXM~A&O+MPluKMh#fk{Cl2 zcu31Lc^qyYi9{4=}Xeh)B(?o<9@n$HO6-+v!)PIWg<_)*z;24y59=HV)< zl64j?6?(Q4@TDXvKV**kT~31qe9h8vaZ5SkHT1Uo2G8?g{DuMbKB;S;szKe02!=*6 zh&8jYWnXV0LOl;|8I125+OCWU!<_3D)5pI{^&h#K`ja|mEFRveR_Glmo=>{-abFO? zw(bGXbSsKqw3W+rO8H@PT0i+ACfAmlZEu>_{P~Q#u`}BLHKl|v5ltV9aSlu?I17E6Si_Uz( zjg_bZj(41p-xE^OQr>9i^2IQ6x!-j3U0Sm&cnM)^%uD-nv&_Rny--aiPJ(d#XlZ+ZpG;JU+`%mrYgH}LkS`~tLY z^(OPzmAA~dB73QZ0$9|A0bYZTJ$LWzPjigG{LAgJgv^%7>sS0V{R=jAwxOok4)oF< zB6s6(d#OmVVJ#a<#cW zn8CTNuT$S&WD%N@Q57dkQ1rp_XA6Gs$1eAf3`RU<`8|D_HxUK{FZvWNOJBH?C)3Nb zwg~rf?sAqXzT0VXa2GptsR&iU6{DSGtX7WN#OifNwgjMcCY|+4_@}K=xQ3QFYlG=h z>$V*G(&CIOAhU**>we|w{cG;m0K}w3U z+A8llf}S1|XtEmHizf0f{AKf^7V>Pimb-j)c$a&H6g!mtvwzm@bMIr_Okr@ZzQLTm zr^JLbCdm?AQZC$ubUBqwcle$(%e`fTRI#V!{@oka&`i6_6w=*z?Vnst+TXKx56JP_ zX)e4467=ZOe2D_jXA(02?Q#sRomm0y!PB&8Wb*-vF4NMyv8!N&n6MOnL zUlcAaO0^S_9l1KRB_d;=AMyk2p`dOGKe2=)Hh)7auLweD0w% z{*~JYq{a_-T6Smjicwn@jeapNTe;&6CL_HZH&m%-gFQB^nbMs(M z5qOwju4q>{Ee`goL36ifQwTM2pX$~Qc3Ov8FNM*9nK!>3qw!p+X$YoziAb$pE5&n# z7&T+V`IKVe!ss=6rpihCge3n{l31S|i!kjfzKb(wR^Y_rBP;vyAg3C2%|SyMDj|U; z6E)?5&GaKYWguu7-38ibDway(#1%PG9ed~S_&t!(BBC;GDix9uoUh~c$73yEzfks;ht3n>su5gVoqWt`JHK7GC}HX{hR z;`-f)g4t9w8C-%P$|6mZ>tiZYt^x*rEwWi5hq%^#n5K87@*2bw`QF9sh5W@F-L0c9 zI6G`{9<3s23E3x&7_`VeM8;#gI6m-?3mgxrf^+;8jXQHkHHi{P0h0f=Gv9c|fG*#R zT51Y245MU)qYt#gO{`MctEXL`srR!GdeN~GFA?u8ZucgrFqrrP?*Uf)tUfj(5E&`f zxMu@>sFuz%APoy;RZO0hbk4EyN$G;<;8QW>_6y68ah-RGuiMeR}F|It7PTVc#UXm_-{%2c6wk8cb8FtttW)TB; zn+0}dv2Eq2FeE=Tdi}Y?6&8C1b+z$U1${X^;*~2sE0(z$Z(*Xujx$5%5V&WaG` zJ*wD$g;WG9vAfp}d+j-SO_;92cGX3rJ|4-$?@{zeZHwcbVp=$y#w-8ZUSN$(V4$+WlqzFc zu_)z$Wo+D&%oAsz8NeC4yVCxtu;6(AP*hH}i@xD9R(sT|w+_d(m+GBR|_HR2AUiW{>WjPYMo zr~(=B8km7kgF(UgIOM2ZvCZZMr?K^9ca`;Ba`OsvsC3i{QERH^KWE{F>3bPD zv%i15)6^0|Cer@HQ1z;(r{g!E-N+`n!85#2HT+xc0g)X)2s<~PK4owWP)Cyai%m}5 z2<1`78^4gJwU&OXq>$zV)FiUV<4V60JbfWMXX?86VeaQEQOV$`xroA?wPX#-wTPDs zaahlt`{+O;zM9YC-f=b$qZZd@4VxIem|0yDAmGK_S!0nhx9lcW;0Dy`AoP#n4bm`lrX-4qj;{$ALzhpg1)EBUE!MG$QxVr$oA*nlLmXXOBg* zaNONE^Id#N=;s_xtVWrjlGIic5t@`zktBazvsxXJue{~%e_qR>-8wXpwAeIQ#|qBw8s!TV$lP?DnARxsL8a#U?-J58U3(>L2uH}N=T-?bP7v<=12kpnO*75Zc`YzaeM%iSZ_icC=@W~|F3lisQB$L5HjoXhSz11uEf_GB ztF<;n@goGSXPbk?3~h=iC6^3Mmfa%ew%3?dfr0;?UAV*A5@}bEcy(NJv^}B?!~ip_ z6)ctHjQv-yJXH>?Kjz%LlzV9ib{HRt~q7vpYnWi93aBf!+YWABWo~W|0p6#YPt!@l)^V&eZPUe3D3!)vN>) z*vdcxz~Fg~Ux-`D18X7^*`jmm|rNL9Q9B;>kxcond2XhubNQ+Y|ZW;Z@4*UYblKyB^H-$tZr&@|CZsu(*J72UwB^bz#z zmSt;~Z5;QwuY|hm$W)C%h{j|WtUPde2x zM818U*&yzn-!eU4E}~m`$&oxgapdUpo+z#k2n32Q(gK5)m0SyZ=14^nF9uuNHlbP~ zabI~bWWSPGv@{Xla;Z~uHn!A#<$mE(Q$tE#=WtFWd#tw$j` zDCW^sbbQ6rG6BX&aW2Ls1QP#{M=~v_-7+h?V02@-#2C{4N8X`GXn`hX-C|3{CRjjS zX@lO*f&nS9Vg&3kCVJHv#hDwZZW2x)!4OBPCvWkNxRW-B>k<1}Fpy(Sha86l9N}vI za&7vR8Tq=l9}T8${G={pYdlASnMy#GY;qJr3 z5}%kmr>ciNP;^_7{jt(LKwR%fb?=hShT{mNuJ`t<>=g|?R|gtiO?qi|z0)$D?m776 zOz(PIv1FL-4ptS-QR#m|71>MZA0IFfHNfLFQobI9}1aj=K&}vq~ zYe?FI*IvG&>NLlG{DJ5hnZVbVoy=IkuJ;F<*E5*JnP4=|RH*Of=o4eixw{B&x!hv{3FbT4k221$T1(UQbx=_PnOj4I<*~X$iIe`9Va1%K>F*D{51mq0 z$K+h}J9ALgws$|4YMbj!l{D;<;8R2`+F}F*k~^~t&TIwwen>e5dET*oDeAe87%UmQ z!P<0Hc1vk}Yg<{!GFg$CJzvW1J}Y5<>)yfJxh&hk{G#t_w9@6oZ2LxGO%nm43!{6k zzA;7G#(8)4jdvUO0L|e#?S6e-Do9pCEyfuj8DS!Kt6s2>v0}*Q|GDw|>&b;8n{UPL zu7iD3N*3M@xt`m6(n?CC)R?bIt5qL5xj%H`QR368J~h|DA|wAVRzG>VdP*E2^|4bK zLivoYZ=Ieg`q|sutt;V4MYVt;r-vQs#@J0y>X`6U#{`cVjXB9X?T6M~nNS;O8kvP#lE{%F zdl1SL;lH@QrtDwbe>h~jDMhohu%^mizQXyxX54>+;*z=Oxa0m`n*Tf#BzHgiKL8)> B5`zE$ literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/tvix-4000_325x204.jpg b/3rdparty/libflac/doc/html/images/hw/tvix-4000_325x204.jpg new file mode 100644 index 0000000000000000000000000000000000000000..576e7b801e12c0b0db5ef18ecccf5f8b7c850c5d GIT binary patch literal 7685 zcmb7Jbx>T*vR`Cb0>RxOu=wI`K|*lXV1XYcq`L)t(0165UK=J7T{9OXb0Wi>k7(jFk z3?K#wgn@~LkA?N@85S`v-gA61VsdgaVp38{8ZaFt6(cn%DLp4WBQpydI~xTZga^XP z17>Ao{RadE1Oj1UVi93s5wTK|QnLQP>2D{10245bB9Dgh0)R?@f<}Pyw+BEC0HC4( zQ2_rzXs9Sp^95l(NnhgwP|#4(&_U==Z4}_sM<{@&CIOI;0fSdY3q)iAkI$_ke!&;S zD69Rhwu?kg#}$z`!35@qx&?nfI~TB=+}M1=A%9wrf0pDw2;~XqNdhMLr~hdX477g< zQ3y~88J^J5i1>oyYhIk4|6K$;M|&EW0F40f5^!mRABy^4oVN?WSHf0U;zGDUkl72R z1<1l`e@z|0F8@s=Jswp>V0hs}M&^P&eGgmUuT6*Wi{@-58VhWdoPBP~Lq&ou_j33K zFYhBg>4-v<)@+?5Se2+L!x@)Wky|-Z_Yg&ki+WsZ0HyZT_&wC?! zEa@0Z$z`%-4zl0K1iQDTsDwM#BQcHHHHt+Z%q_-cavJsMnqd}7(Eu(_SUjUbN>nhND$;?Ve z(|t8XvfRp!44qYU!}~g%rni_9hm^$_O=Bj;OTcc})W%j!WigEp(6hoHIDFo4bGP_t z7cz~@0N!>{rcH&X^j{CMi-nyJrSWf7<&9~(kG#5&tivvefb&XLHAN?Y415%QjPzKP zsRXrAJWS$?e7Hu5+ ztcwdL?W`0nQmfeUg7n|HrM_*cpcD*APyp0i5vl0#Zx_d3DE>+vg)=1#C$_PFT+qt_ zp-R&`Q%^4nc=VpO)lk5SP2*v9NC|@EW!&cJco;hn!$jnhUt{~_*-pOYRLiRydebD% zRPz!Gw{)5L9KCYP@#WRO07THU;e%~Ecju{~7oFFkJThR?G~WlR+A@@;6KnA~gM~>{5Yj?5;&*J@ zHy!MRcAcrJ>u*Dx!6}9N`uvG{76{?gD9zIspwew*P4l*uED^}QaGwe-1-Dgce~j$~ z%h`$*TVp;(8J%3D_5rs|Ke<0nGJw8#WzN&0Xh!_>fw*h$TDO6~USV>H*@ z@ydEiDV{?%y_zr3B99DBo0r5))4$O3OwUOKP~*`1FM9)bX{!3*{=UsKP~6nK$1Uo~ zSsqtgR{j+R_t>}fRRLfI4=yr45A)xXp3RTOZF4V&0`5ybV6I~2&ztmNe67wLC7tTk zQY~&s0XC4$MgB>kc?SbHn`^z29gMj#QftEL;=yjumq}UNbvgZ+r$_9jqE?A}JQ&L6 z;7&6L#4oYp6GV3rmTO?zck6$H+OLe{s{XJWK)$-xu(mLtRSaB48K;#%#iYXRCFH72 zfjB{ca)qV&BpOW<$s$%3yNRE~dpLWV8-ZFDU|cisXi!dqn;(*DsoDpKk%k^r;b62P zzy+7e@J~W_W zc^k%#+v?T?ZtXPL3&Im369b0#*q@$M?`1~nf50}>CmH4T7(|8`knBsw`o#=yh(>Z< zD^_Yq1o^ZC4^6g7j8>9zD#80tNdSEhzerW6(0|o#FQlGvD;Ud*@SJ3G)j3lkPlmK~)^31vcT_rfu;41AG{o?LU z#g~OeST$0N^n8?jFY`|_2h=OM)Cw%&)*4uIAy^}8buR>>!Im#q{B1JRRWR!~_U2sZ zW?DothUNC;RQ_}M0+h<}-NBvcd3(X1Q)lqh+tB{KEq_A6qc|I2Hyh62<}=F0J6e$g zalMS@09715h37l;+_QYb0GvvXCY*tYZCA%%-Ri16v9;G7)BH1r9iS4clQ~p@n&`f> zV2L^Hl<;&Fq=NI;XgsgT7X1r(?9(*zUoLJ+c4ru?N>STpLtL&)Jk54VRd!NjttN2; z6!kUVUas0<7b&S|FuD%S3Or2=v|UtM?Ma~I*Eb`(m0Rs@KzF3+HqIrSgH5&P{-V$8 zz3&Rk!tJ)FZRROj8$Y$iIqGIP`!)OsSJaiDgP(fHe?TfC+9a5Svrc;*5tJG|EGoFM z+M<_{;&>FZBMPE1+;Rpeq+tWN({>i5#m-MO8D5saC%#mAE#RWx;^@**rJmO}-F%GW z{D_vT4q^1BKUvOg7QyLRUNiP`l>xXmBTpH*2VQ-Akq^5_=nHl7T^yWpwV*p-ZhK%tnbWHT%J5b@L#SVto3%3pR;KewNoxixpfsUG>-YmChl|2e71Ph}Z5Y$ZP&oL;m~$OkCRPiik8Jl#u+sW6RJ zFrZP4)3ZkM%>KAT+luby{<_lR&(c$l-QO@^v?8^*L1ZYFU&?YF?e?C-r#z9ofkcyb zOz(O4$yf1y;u$kV#L1N$qls5+Run}&s0-a}(rd}gPK}wxOqf(WT?wdmviYo4%jH{I zBC$V0B6t^+dE+P7E~^?tN*2cB{M8yXyQ&QH%-mP^e9*;D>1ML3ictwjChfs^rhAeU=`n_+wkIvrS4T?I||N-01$`UIAhS z>(ff=$jHK*&;8`aQnUnFc(}r(mQ3D`4!#rk6C+d&icVYK`ia~@{*jJ3w`x`qAQGDV zelpt}iE@s@Fn#N{C?aQAvE|midlIY*HPE zoeLYItq)_Fc%(z>`_$nO3|-{`rO;`Cz2)u`5jyQPc?SsfdA6@`&=_OImV-}Dz1>K* z>~i7i4efYw=FIZE=$E;MppLxI&%A&1LG7q9LGRAl*MA`EOE&c?qQ6vd7!{`sKkN+H ze!gfmI0$QEo%1cDuyAWvEYF3pgB42!o7P(NtUT4Fn(TOf5abrylwLa0VXcd!;U_y( z&&KEYc!enaNq!$nU0fslPdE;11t!wxf(ph%UodcY8VD}cJZ$4RzE9iN{=<=W`QhbP zyEem(opQ=qXT-R#Ir`BRoA^h?Ke)yNUQ~aO@snfib-c8Cs&{^|M%1;Ti_w`US8Oq^ z@)VE56N>@L@vNgxcy3{b1+8*@BWjcQljH6Z#LTfA{2rghgjc?`HvVoSB4ap%lGHEC z>4*c?7pNsFYjuCyMRo@4-;b@COCb#@BUD{_nLR}mxd81y3LJ`fwC!_vU-hMLdpC<2 z_YhY{FJ>1|yiUS@bu8S_`z@#Zi_nUe3anO?+>i5A?mc+W3fCdR1tJj>wX!XLNY%N{_JxPJ2{M+d-VGwYvr{Sv`NIf zSaKzM0&XaTXr!ARx`qX>>Cj6Sp>VK6TuyNH`W~5I51Hhw7RM9BD;g$ZqbL z-Hs9V8BgGfooT}V0=}T78)%M*b*_6$=B`>2mhyr^PUR?^zLmJVWOUn0QZ{5?=i5H$ zso?&0Xie5J;O;x9`l6-oH$;d`aQR{iSM@Idr7@bSQg|&eLpMKb$Uu!1)th$5_|Piu zZovY+N4cl6XMNCZ{79;rzw1PL*XT`xK_$(S7xOyXmLNPCF&8{XWbPddn6QgM?UN2k znN_|S-06_T&6O20G&y}k4U12l&&bUNo=o%`9rRj9v1SgcYvFJUowG(Xw8YvFcNa$K zqsg?ew(*iKmo~0`hT<(Qx(4RcZv0^ibZC=5t7MrFcypa}@{ob&m9DVUX89hA6IaDG z9kCn?#QKOS$sEc+@Jxzis37%F4 zvotzZy5KmDHP?8dISo$MJUCJFi&hYlwHGv0*wSNUcE^;yOQFR5N`anw#EGHRrtMrr z<44kbU3y1FYcser|9o`C6;y(4@SctTtezbxRtTEvr(iaYcQIODSKyJAF>!{?bkLWd zbbVg33c-H+TQ{%_wUI0KwNqo4!sGTAnfV&%!{M99y1ukpui(~R>X%BhOVO{gBg$B4 z+>PX^VSf5@nBRA*N}{lAdwwZ$0Uu^@<~$nKoP-l{ut|3@KKHqhaeTdWsGC@C7H}J$ zO&e(6Z3}FR4gW5V^3t$E=}>!3v3os$Y*G%*vS-yYaXxOtRXhz>>(_AAIZb-kKHIQk zNO&)T$3N8>oLSM6t-K|#{8mQ|7wVA@Qjk@{9D?NdLustD_u~n!ksWN672nkLGt3tKwH0U!k!a zQt8(nYm-c(jl+{%{Mh^O5lAP^)`01xfy^f@gliuoZhnZ;-5=&Ph+e8#R>0xd*vAd{ z-quj5y)#mQx7=-Y2gm5?kiSf*gjFeVl6PWdQJ7F)`HhX`VZ8>$vgXFRXZuvDjB;G5 znv6q$l*=RhkqA&-t&KAX+0-uZ0u+a=1fYfphvFza9H|!u{Zj9@u<(x+HJbf|@S$J3 zr~M?vX3V`1A>6z6Xkc#hy#W%kuo1M;Vp&s~xRV$|ohFW46u>NQfegY_Trr916X`GW z@Izm{J*#w{w9e`Y{1u+Jk9TVzvj0-Cca7-;0HZ+pu+0ychZ*8IO<$b1eS_c=u&Aj7T()8m1k`^z98CR=0k_<*e(wK(z65 z9FYGIQ1Yy|%Y53KU~1O9j85KpOabZj*?ba-CldQQ8UnbGEVdUe>(|I^LC1B2LZ)6j z7IP;(HWx7~hFUyvPCaX2t>AjAqg0x(xQ`_);?Iz~jzVSzVzaINt^99sV=s%VB>aTm zqQ)EwyE_d>3b~6v5{^W^NOXAGu27tlsfCFemZ!$0q@2y3G~41foI0GYqUfIwT3A-t z+HnJ{#h2dUW?_5wi197@Iv_Q%kTC)m4XehpWfAMmNZQTCMaojwmv#iU=LV&}i&PEu zROTc@1wPCQBHM4UeU}T^;$*ZqgciN!9W$vv9sj_2Y`)|$;jr23e+xVFd;3TGePUi~ zCDY-iUf9jO&r1S**m5O@iDYZ}+2PMW@gJf#ZhH#$FWZgu$* zme$mhTO3^R%AbVv1QkV^x#pE#iyau{mzgIaGKIsM2_?v^dpT$%DIn95$)Jya0T*Ou zM3!q_bdiqj?TIDj*Y-k9yxcB$aOR%~ksEAa!8^mCGzR_xN0)DR&uX}+kKu*+O{Rl~ z)Ma>%UEv%B<~LRIPB3casq_2Kr-ez|BSrpBsNe4#Id@{l4=Wd#m)5A8Zx9ThMSsxQ z5*-p5PMp z2|IHSrG$OCcy)_aIi4W?lHko za@3(q4<&(a49|Fh4sIk&x(VE(HUN_${3shri+qan^P3Vo2L^Iw^U7X$IY`?vrwmfUDvPrG*(~pZ#-q-r`?7pp?#2?U>n8ibnWI&1 zjgox7@H~izJfas{!Pj=hYL{s&j46mFS`$G;IzF#(p2dRdL>oAYJvwTE! ztuvka#|dPU9#qd5<5b@!d<&6e9Ni$^4!^YoGK`V7pCETv4=l>C9>eVl>^vzxOXi#q z^-xO~KM>TcP`qmvnw~TmGmryAglt-d{VHLT06_E&`xSybJB@{W2ahDcNtTx+@`Nd5yoa+} zTB9@uN{R=}He(B~TpUrga2{o}RxGZX=@jwt#z(>>wBplS-)v7`CzP1JXgL;yJ->zG znBU>}pVUy%1xbC7sx3w_K#th0V2W9L!P>r=90vqi??&#l{CcGJbxxb3m>Dbe&P)Q! zjMh>g6WVy>`~1Y(Jeb_}v`@}j>o2pzo22~<*h?|J9Fr`;ot5>|)uR+iYB|Cf6sIgB z(TjeWzv;PkKj(U~Q`1IMm*9lK#0aQGNLnM8!Wk9~{J)>w+LpWv&JyZ-?ld?X)J$&$ z5r;zMjGjU&0L%dW4d3iDm^|bu0pMyJ_rFz;3~DGb{behDsB|a;x{8bzufUnAEVh?U z{h3k#l?Kp1lsuK^Ity#oku8Q4g6_&-Gj4>1L)m1>GZ^Q)NRH=VoOt{3L&e@MF5*F} zIP_s|*(bQQCb}rtILB^1By7&zNq0OTts&+olZA6iN8a3_CkIUtdSg-@%5PE7uGQWE z8>KhL8{4NMf0!i2BLMtR7?Z~wy*&{pp)b)KJv8lRk#lBf^pMwVzWMT6pO)Qiwh-$kfPtsDm{M*d$Zo&PftnE@-c0V{N6e9e%l zryIThPE~~xu;c2m15uYzRp#-~cfq2-uW|Kf`n5U&X9lB6uFox})g(v~=l#?!-!v7p zW0aW&P3eBpP~L-B>BA}1vVzOXf5Q50rK zZ7kp%y>-xDK!@565hT(8#+G(N(p%n4#o^WBJiq2fw1%j!oQ#wT11}V-0g&su{QDn7M>B9`QN{1wcjb*Ej;ikb zwT11+S)S=NIewodek)^hMSDtE5J#6++T45|nWmc&crbem#LiP7chJp^;9(Y*&P)7R z#4HN#C;g{l>qT8gZVQ8(b3zb<>4{ia3|g3ye4z~Z44BgYW_I>cVgfLvSLw;$kr6kM zuz*|8skKdXs1cX=a3#2ot4f^A$un*j9bc7k$cds~Fm%!^NP~glTJ1e?c#dkceFH)$ z3u}KLPyWp}(hHS?#Z|2B0dDCce8P-vVWt*zT5S{E)x@9paOEc~oj93ZNbf(&R?=ku Mq6G+L0R3I~A6X_(wEzGB literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/hw/vibez_nofm_combi_black_b_325x220.jpg b/3rdparty/libflac/doc/html/images/hw/vibez_nofm_combi_black_b_325x220.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2be9e4365db1759059b3ca648f0ceec8e5ac7081 GIT binary patch literal 10940 zcmbt)Wn5cJ*KcsQqD2Cwr7c?A6N(ovuA#-9;7$dK7J{_67S~YRokD>^aCdiiz2Thm zocH-~-w*e9Cu?W__sE*H*Q}X6vu5rm?iT>W@-lKV02CAyKrHeHxL-uAkoK@L2LP0m z04x9i02_dVLIglXB247vg+lxnCP3m(D31VW$U6%12SA|)VElyv02m6*zc?1<ai@25A*_20kfdD&Rr7hnoJr ziGycze1i$zjqeKD#NWwzahtA2(%@v9EA9+zRBhmlG)X^va+`r{Q<%mZ8 z4^LG7X!L*M!O+%w{ZkiGThTcGU}7Z3{Wp(tI?CVi_xAumI_iIPgL0CN_Age- zApAGKRtC|(*f4|mAD&2kXZ^zmDIXvU^`Cg82D8xq3uFF+A2R(N9(4R0c|Eif%6~M; z#l^tIEzBz*%*FGscK+D-XO0B?tk6yrvZ`xG*r|FLI!jsVPIom zprd2pVqsxoZ07$R_Gbqw%C{F;WBq(SkDEA!zAW~EmbTniq`#0cVU}9k- zt3$;_rt1>}P|(m&(9v-)u<`Km{(3c3i9Y8$5V;Y@>X&l zHDePezrklrl2Xq8(cd!4+9)Vrs++oe`JP#^ctG`nmtR9Gt9@wc5Xqbd*}0K5qy1Oq zC=bjrv5<*8B*-KbRCEj!46KI^{7^M22^Sjr6LE}3s*a_Dn2bhIt)yhU5GD``jn)3Quy19d=b#~p(^(p6093(|ITb#Yk>hnen&WQo?q z@?BCbqP-Y`hrgKy#cqY1HuY6Br5D)HXgXI7kM=N9S$Z!Mx?w6~%4y4o1%C?0_78|S z-J5j@MBpve7)VPy3vX<+M2la}9Lx_r!9*LmzLdo;fg#L4r#lhmd*?Ww@c_Jg${|f> zWrd!c(u%DUgECx)o-!5QR_+I*{HjBSE(?j@oqeTT)P&N#YPAwR(%`wgOptaPw@em}pfIXzde=GZLp6*htwPsEDB0 z=6qupq_-t8h9DzK^hzLP%nB%GI{LlWS(*NAhN3iaH07;X19%qh?KK`liBpjKAuTiN zPnEhtZ?Nm*xjDFi>+)I{;h$s$eV4#5KAB~EKRZuj8ogswzN#i<DMt_i|0pZhpJ20%Es>;gX_dKpij+T0?!ui>^5n^kOnd=y8xqWYRT_u7`^16Y=}B=0`X+Nf^jgw8ms-WQ0=ce~I2 zXy~l!y0+1+MNE7-LTu-q5#Jj0W(P(p?zm`EMN-m?`-@*Df#&cG_bLmSEnVppSc+Vu z10~%OV#+M6!#f zIJy$-$H0inz(~Y2v`n5etE$V@@%CrK`EscxQ2>!GIrUSMu@nqBF=^j1C+hmbc!x7p z8SxE7y0FCHR`_zIwQVVxJ9VeN6<#T#&&HQYkMz%G>gF?1WzlYhjjwf(xOe$aa`VF@ z`@3}}jk#*)beuf`xd*?EaEd5X&bGDd%Br9gXU2X<(92Q9)GXOMygBm&ePy|<)U54y z70pVZ7LBv$r!QijpAoPfvMX`h6>)&)@d?zckf$!4(=!iA089{Bbv!g7yG*^>MKt(d zUoxWpx^6cNua}gS=sM_i%r~XlWdrIr7hqND)`S-qX{DGn5DdjP!%~0AVboEae%f*D zzI~DA)Ri=$-$(dmIJ{G^aP}a$SQrwmx^PqHakt~8^~lL;aq*1w969J;K}6JMzZb2nM+D+!`5qmG;%!7ni z?2b_E<@(qj$?n_hMe3=?a@A!t;`+Fzzzf(}}dKNL; z^3RcKb8RdUiGFPaHl@S8@AeWi71Sj`lP4#tO3$KX42L|D+k*gD>HdA*%G&Ma>s+U8Sf3O9>99P0_tfto}3*zlnuR= zCYQ7l$LHafb>KX1LA>qPPK*0=SlZR+5q}SOmkFcY6Ixw8n%_KCbBihu-A&Pa+pVgp zpmw?Wq(;ihl!%V(Q*4k)pBol`suA@3^S+@lNVkMHpQPOD=|egl+N)m+$e`V;mA1Tl#o7oVenR>61GipS+0{kRxdj$@G^+3 z8m|ap_2TDm#{*6FTepw5J+|Xg8jr(Zd9{jNPA$K`0Oe)2?R{u8XZc%-2G{e;c<6Q= z?g1-WGuh^QjA6lkpG#bMT-+k+=IH#kbZFOj&zkcy=OjXU`;MwDX~YXtJt0E2@TC{2 zkmQ={OK;Rd8vUQQab;D4xp@)40q=>cfOH@QaplMOito{WzSPXmXHUm6Dx`tr8;qyE zVXsSc{uZMY{hg9o4|b(T^0YLdm}Yx}yBDKSZP=eq6aN-1+k%n$9>AOn>W7|uA9W9J zJAm57LVnmz*(jMdGD-9JnE8XPmKG8k+am&6KB(Gr50goWKYZG4I>+1+DB`AFX`baC zR_X7GuW@w7HPrTlI|Hz%men+@iLK2mWUp00u5DuxelAddu_}J55s?` z)=u^&@YK@M3$R+Axb^2wF&UghjtP<{34vlEN1o)HzkQ( z-CYREQKNCHL>EKG;7^qn_LYGU_*nFw27f2X>`LuDz`8VV*sf>EY-+b-|78N?$wg7r z;u}98G1A-!^~OBXaIKlymu{Fsi{ms0 zfb%uoV-LiGHI=DqU)xY?IiveSza}vBE+JM!3Qorg@4UK_U=qOe`$IwJ0rZ` z24Y6!Xmwc}kPAG|ORH%nZdfmP^Z~ELyu>2H%!$giku(v9QAmi_^s>;1u}RL}#+uP( zP`(W~Ue5lcJ)ZUCW4W$ew*}kgS~JNJm^HkiQ-Ee%?pPZ$AvB zYfEnOss07!^9YYf_I<6r1njck!JKDDWwmt_dxIl(n#zbm|I^~Pvn*5XCSkFc5L$ag zDfP}w5}5&+>E};$?FaXO&;qoPup&^Al~@s?c|2q9WSuV3j%vQvs&A~8>{DSDw`i`8A-R4mF@gG}I#XJv z%mL0s4)~UO2x@6{1{By@`MPV*;ntbVn(w+bTg$RKGt1sX{~3oBu&TD%I^i@|n33UO z2KcnuOY0=*_jYb-fiDy9+{Plkb!dG=3~86ums`AyVUzjuyH9uW&@J*rRt~3jhfrB{ zSyg=dB^Peb2%w+#h9R0$Dot8kllC%Yuk$cX|FY9=*kxhpXhorKA`wNJ+;rBaoQtT0 zWDAj~=OhSXk;bPnO#R((Vh+z2#B0ns_{_F_cGZGIXw92vQ_rA|kXOypwOP9nW4xaxR52Yn#NzL_lxt#Uu7o z9kp)eykhcpa*o@|&trqKCcydhQNj0sD&ugOpB`d4yxv2)zgIgplJ*nA?}m~zb6);E zhl}uCTV9@?8=w2=FhKr@=nR*+KtDkb#DVuyM~(wT&;_jS0%so2^{vKc`&s^=e#7G^_{qVer#Gu_>&bB|K5sMxl4*%O*V1* zyYn|7F!aT7OINTz{lq-_K1*0UNFIN^n3v;tXV<=~WncQ^I$rSYF3UYY zJPeGx75w`Y)M_|KCZUWt^KgdIWWQ z-#s81bomaY(TqxUFV!YiY=mB9%%2|ODO&geDw?kc>w$s_X6CrT?EYI33no`@}Xs+XnK z)@(LUlBnGB$eVn(gxJIo%_Z>MMZb%& zA{enBmRLuCiKgoXheBG;i(vX^ zBZpC2n`A+3ITBA98LCgeFxt4j2FWDKTwiG6RBx8b%05%F7fhCIl*u?8h%2c*$1P-o zcQ~6{``i&9C+*VS1{f|Fh2ZCEKH45xjX1^X*Nhdbi+G7_+$Ltdh&p>HZcqcB#~D%n zJ>XNswoayMo_CDE&C8RG69m@v2n#eeK7;XLlI~tp zCN>#i*g6xFh{Ea_5lSWAU&fMA&f>%rTyy+iJKeP3aUSQhFc)Bznfo6&BKr|-J^O9p zyt;n-Ct>Tkq)W%jdF#4{7t2B7I~ORwXITh823r?vt}f(vRN2Ho^NIHk`WP!amBl6B zM=y1xlRsMT1WPxsdr5nveWH?XOso9D<)TC zFNamnnImW>tUh^#9s2rM+iCqr&m!kNmvotSTPn&3=IQ;s;Fr~hRyG{?e%NWEN0Gmm z!m|r6D%?BMctj6cye450=WoqpTlFBbq{-8{L5d35!nJE6MQ^-Wf z5M=b@opC6dE`fgj7I2XWHqfnn_=%f{lH*BK1-j?XVZ5|wuFN^1-|2|5*u0*P z>u0&#W}nqV3f`lC6M^Y<)i$h0U7++k09I>JveVx?X{JOCgevX2pa6`{XI4%T)#-DN5~F-O2kT-L7jw{4Wb_S2<7L#vB^JtMaiwBu1DDms5&&=Zt`aFbNMRAtwVoxuAkWtmewu2RFLN z*5|EgeoD`g^X-6zkE#nIodD#7gCZaVhRKN`d%YXE?0`G8h98GZY67vne)}U@pyr!< zfZp&o`dOcIRxc<>e#C9)II1A28gt!PFYAMNn%*yJYne6n#kq0$h~Dz;Om%~bE+di$ zm!mjs(%A?#JG9E3X!Zm|X4tNQ7|BG{rN?lH7N}!>9K^RH==?@B_-P*etD8apl=SXt zCAqDyD9;}p4p>TNK!*_m`lI8JbTY2y6OKlGQ&!EpncrLQXnIYf-#?~$Zb=i7Wtxlw7%z={ah+zS%j*dA3$tx+xM8)+!kyYqAm7@oV5nT=bM{K( zh!EIE>UiPix!3RY@n)Lm1z81ig|fr#FXYr^Eo*+?@E*jkn#u_9%_Ioq50W)X93;1QkBB>gb&t+#R`78R-@V_qEeJB5X9f%{jLlg(iB zZS|-dNzJ{{_mDBSU*OI{m%R*_EUvZw^kcown=31tcGi#4a&!yKWx07UIQCk=ZtP=f zVAszTp)6BkU)+^Gw~QWazZ736Il6yMfv75Gi?VR0m~rT@#7y8(;ihT+N*o z?1lH&ps6g^`d8k~>aoZcJI$pKtGnFOI+^oSD{>pUJuPgnDoqL9`grW-YeQz2H=RsK zw|f$I*$%Ga_fm%Z@guI%wgy$wjR<3V*C zw<d~{%M$8ua$HJxpHE@zyY+GPsQ z&HgBRH1q6dAn4Yf;4uN>t>6xhn>7=J@)-$=PvehWcF|Uj%Tl8IO!*xNG9p0GD<&W)7nQlmRWjm z#JS%oa~-k>e`MLKzsxq7z6Wrx<~|44d9Lao`yM`+y611J;S;tu;#d7 ziKr-X@EQ`KK0O&mB(lz8aaN7D1_*@g>&jyFDmW{*&-<(F!VbQsD2v5gkJwjOcWDkzZ!aN|TVzC%$)YZvSB@(H z8-}>wEJsk*wX}KSuQ9(lmnfc$k37*q4g!2U7wl!g{gHgzIQ~tQB@FVgl7N1fUmE;I zC}9RGH!rwqPfOCP0^@*h;2D%YlYoJ+$MZqUG` zp}ZrIflH`sX3(Yjhtg1Mt%QGOKz)lCX@SR;oy&3O%r?-b#!xmme4!xhO8iP|tjTIN zRlo~!;$)a3R;trm3-40fGda>EXAw_k&pL2bSxTDOXivsTFA2W3G8LOtD3?o??tYk7 ziB&p1o%iaEI?u~my-Rr8m`dt&57@UWH+=pHys2Sw8C%GjZRv`COHZ|f9Q!b84e=Xg zu4Rt-ubwvtiWFDDqn3x;S~)K|s@;s4b}4yDFz|Fl0uitBZbQQ+-&Ba6#a6r=>a3SC zSU*~kFR>K151kZgIbIV3knN35LU(1=w5D8&&TVKm3q_S3ml-bKcMgY8V_&wMUU6zB z_-naC#YV*a$iIq9% zQV*Lj=yn$pK&5jVk9$CGZ0yJFOw}N5yMj6c=7r4M=mK{~5?Un=M}TQ6Bwl|(4DIU!g9{wzMmV>oRBCT+HoodP65tBfe-P%5X>0 z3D|wc9yKGpWGRp{dE#H7SNlXPSB3S%Xni>ee_m~R@Jp}82CWd;rL@wwOh@eaz({Za zdBkaPEd1K;(2KQEDfa!|6A+J{fu|D|DB;A&>rB7!t4j)mZ*w>B*ebbI>vxxsLet4b z7gVkn;I_g{Q!hGB1FF%~o=TIYV{(O%jVk7R-B%64F*(3uyou`AyTK={2QI3*UVnq; z=j2tlTf+ihfaO0etqbzRue?T!B{#B|dG$zpaJXCLG0bXl)1NDj(4*z-EHyo!9J3%* zFf4}TB)cT-F*T`v-R@`ITF&jnQu1f>i9Ttwg{a75Um5{yg#V#U~;HOj7 z6D544rPx3}*KYObkW*BE8Nt)=(D zzQ&N4SC&Y{;w`DS(?p~*gn)jIxQHAM*Bo(}t6X*Tlq~W%e{2lw^HBb1$HId+Lebim zV7`GzG%oMz)79LVXL`;iW3Dr<(Cvk<+~T>Ln{T#C_o0i+jf5>%zY!xVG;CbZ{{f5* zp#ExDI?3eC+n-!HrqS+^7%If^9q!_&k$lLP{^+a zEz*kTqJQ!_j1+Qb)6P37&e5G`-H2cAc-LaEN66@;g6ZL$x|++EJDuOdR&KEXLC?nf0MY2norziFIy10+@;bs;3W;^ zdZ>*RyA|V$%JmaN`r82BLdD>}K4=7w4*WKHl2URlH96lSz2d2*eNX#s$rYVT=KzRC zsp6}+@3Q5=#b+#W%0u12;mh_r->*ZRt0db2jq;n7Est|J)GU%?$PS5IU}CQgJQ}%D zkJm(DMAs#i7w|mB#iuN9d`R`^T5O8nv2tSjjVj-`!kpxgYx;Ufvf8t+*o>%)EfkSn zky3#NyxB=7>JG_#yS*yzVe$oFQsSqR9Q|~Nh`oxIG?m|EF2(p2zn|xQPJ>ZQT?iGe z?KUb$IzBd|b&YvZADH+W%zrKL`$Q3L4@{V%d|gI?s8l9nIzK5X z$g9Rhqd~)!{p1ZH$m9-J29A)P&+i3V6Qx$Hb&bCh>X}WMK>8q#lvG=zDbVJ=>0iK- ze^i8UUL`abi*J~|U!GeUrPgd9*8?l8jqgn*46ae@n6f+WL9vDfPBco`xupIYdoao8 z6eNEY6g%>3twLw0`Am`~dn?swwWjwb7f8pkD5Xov~QH(*8goNDr9J9buxv- z3^{-SjnFlr+ETXOD^mr*qTG~H^CrDbA>{OJR_?G|(F3^QsO0g* zg{TFoXg{$Nb>vB)z2tOXIhKibTv(mhoP>A&>dX+;m; z-G9`7s+yn5DdRbU)GQ(i$StOpLlyR-kZq^Scu3?&OlHL^Gv1XNOw@CC#;S7%y6I=r z_QRQVvsPh=Dk{Hw63-hv$shU0=Lh9Ja}+t05pu-fDx`GmVMA_5Vvo(|1g0XYcR^ms zfzm2&p^pvsa;h>?!firMuqueG$4YQ8Zkiy;x`Ibfvhs`B=>qm`uugGPW4XS)Z&8M(%G{-UGa5 zziU|UaxqQKF*)ZiGs1;^PCol5nVSn8a)w1sfeiXgT#D@`@8@2Tt_pw*OOu^-+{$$tS)q1$Otr0A z0Y~;P$g5#p=il1ay~xv?@=a+~q87vHvgJpN8cTMKBNTKCxHw52E(t(E2N4q@zVZRJ zom+8zH8xdSUvEV#+-lN>9vh10nYcs6W(|dSeFhXFjHUBEE2o)ltETjQ@$qvqvO|8h z`^2)O3RaF z!KZotzn^@2XIcF2r>`o1@_3z7Q>%K1PiS64(86+7sQAk7If(5u@OM^a}G$J!yeGzgQVWtduTonirOsvtf6lc$EDCzmhu*Y(>=X z9l`A_gz^bMnX!_A+_7H7jNU&l^QiQdv6h^a_Q+E+W9R-y*zll$jySnImf7 zMh~>|YS6y_Bpm#CV2n;ce&NE-MO7^*B2{mIcHgS|EH5SQ5z@U=Bc6Lbu=l>tL`B_m z@Wd|fTgY&?nawm=nCEd;mS?-3if%{;?-|7@-IK47ZT4?7t5tIBO5S!iSwD)xPfkxf z)+96BfHU5D-rU)V^(NnhH*OEusx28@;;c=cKzpjRVnIRG^`LqAT6>y)t3eXSe3-UL zH%jlLjq1l}fK zUauL)ZEc8pFIQM!o&Bn|FMM3xx){QzSmh=+R927;+gNiH0&|Rq^*E0|p+zeXK9yIF z8q(?`HO{G+Vty1t`#u61QHSzf`8jzAD+Ej}D zYRzVrDMnAxgOAPsv0c5{(XN8xsBZG%k}H=mGnFzS?a+{(EPpbopHM)0H3IFHKx$>0 z52JtX&yh)(^XGj_G4j;nKDMoTe%6J$yHl^d(E`FB1vO*SrknYbY>MGwk)9=j-OpTM zH^5&ES8je8(>8&)35r7%?`zHq@p2NSRmtB=VXW4;%%W_F-gQtwTI=G1Po#`Y!n18* z?1idTX2^F0!N$e0-mGwqKki8cvIOe7Th2ig zploBWzCW%bglrk934d-HX}V4ga+=`LUMyGIt+yUc+MV0Crv2ugWwDX8USR<(-m%lR z<<7p$Q-;y)z}UjTl@Bh)tp!QG)+pm$2z3%r0Qf^Rl5rG^poE^onp96NDt6Y z#&{R~(Z1K<0d-?o$*{0FRg@*m{?LPg{Ti-6*oUchn??J6z alGKCUnKS;$L=vn2+ZnI_m-vtOlm7?DHV#+- literal 0 HcmV?d00001 diff --git a/3rdparty/libflac/doc/html/images/logo100.gif b/3rdparty/libflac/doc/html/images/logo100.gif new file mode 100644 index 0000000000000000000000000000000000000000..a078a4bc5ed95746f878ecb6310bfd511f138e5c GIT binary patch literal 2411 zcmV-x36%CnNk%w1Vd(&50K@HBbV{xInonoc%I$i;By4sIE}PFiF%->iyI*SUdrqgv z8RWXj5^*>_fFA*RgjZQ|g&q+F92Aa^kO+m7Id^$;5dn~!n-4Px788De8I*OFbrBkz ztdD~!9-*Tj7p)eic87R#6RWMi7bu#)thczwXdVT`%%vtD%$&x^)LtHq(Z8P0*^txK z;8WM#zaJ;i$jV#^bQ%6Pe(AX4V-_6_NdEG0vY$#XELFICqGO~? zP7`V_ya`a(C7lFwQ2fctfY6jg9U6VH(@BnlOd)Z2+D&6rBso)5Er=s)E1DxvcKuo< zEQ+x>EXd^GV1k9ac<-VWp*EXWwm;mSfO{h*LJog1t_3W`p1l|I9N)Wvwc9HgeWN92 z3^+5h3wvL9CbpULSAM9ZhVtdjMZ7;g;yLsR z(#cT|-onEK1KjCDmn2JAV1O^=T>el%P%zBLTypotXCHJi#FCd>>1c4_g(_5+kP8Nw z<;VvS9N~cj2$FPx0R*z(UZqNg;t8n>6MRZRrJA`AXI5Lq;Hj$Kh^i!*4~og;3n6~WDl@Io>WHE)%qlDe zshMEgZMliC>}(_K#v2Bh{;B#aX)Q>4ET<_LD{QQ8(0VOvEvTt#sA(R%Nug(CAZ`k; z*2;pD!g5;z0*Ge14GPcVR@=1A-Vms@@bV~(x)kh-LcC9!bY!WG-l{8wm%h8O!6yVr ztHUP@jPRx_FnVX6(Yc_ppyOJ{LMs=1@SPtp7r^j7DBz2*BPE6m@yMsH;DN9yf2e}H z=ov6UmnBSqDMA`8%~X2kF>{#;B9}^XaW0rUY0%QJkg5g`*ty-b14E&vuh za588uR4uWoyRu;6hFUX&7~Xery~$>M*Wf{l*$_*D)B4Q0f(2?Z=;F>+_e_I699Ju4 z5_uD2xCkPVlx(s7wS2Dg+!22{v7R?jzTf3Zlx>j--ga{~3}hp1tLgGZUUv(j948&ZI9Gm-HFdBG*2U-qIHA5dc41hpRY>sfz5SCN_r<$4OxU9SEWjJ3xXV3UL7=7=RIjSi~hFaRoFKpbbZW!E&L zvAbC&O-Th#3el5ibR-!?=|?EC5`qRpp%qs-Nkz^Q0Hc&8A88p$TlVsl(Mu%&4d4I+ zT=H)uK%`cDIZR;IQjDRrW-(Qu$rZ4X1eeqR@&KR+U0N!R2%%;tA(=;Eu9KMUG-fv_ z$%1ck4k1>81>(Blrk@Sa2(DxzI~ys2J-$<$@#N+$KlmpA#E%@?Q^7u?VFJ`tK>`EF zsQyL=K!S~GR01OqfJZah(UF2wo&XGFLl;O4I+{!$CJ-SjT*|=`bklG0;!8TlnSzIQ z!vw}-22UG!(}J;XW?QuBbV|TdW@sR(fGO(5j!F)2N%5!c)7}&UO2mPF(w(pLYAjJ2 z4SIT$KMSqrQcIviRt(h#T!kele;G`&GQ+GmeZ)7~>Ij-%H5(_GCtD~QQw(-Wv;g2MEArVNC$(m? z2<@yv!^+vO+Lai1HR@y20kRgDvlWzVYBw&xB^4C#5pXkXHWxcvf!21cjGd=S{z(gf zUR5=zf-MIM2>FxsRqrn40d5Om%iQIHwv>&5>W=9`NN0qY?}G-tX?*c;Kcd> zG$i1B0yrIOsCI@fi1&-*yG}P6^MkbP+)QZ{Oz=}}N7 z3V?YR87vhbARJ4CKmPy#nHe8|fPiptaA06yP*70+|NsC006;)M@9*zGJqs`}FyG(b z&(F^^pezs&5Wl~_A^8LW00000EC2ui00seq000I4ARvxpX`X1Ru59bRa4gSsZQppV z?|kq7zJg*%90HHXq;knbDIU-$v`MX6uUOJk8qFRxmq^6$DSr&!v>LbNKGrx7gHO2C(fbB)FaAo%pB6K5yRVd z#?{By+25=m-sa)rxa6cB+UBh3-|OtC3K07H`lze&tn2{*DDa*^KokISizct&!G~%* z{8ESsoe6>vGwz8%v6Y954K{-6e03MVnLZDtO!p97vGs;ds+eM44VhJIR2W@te0aHm zfS9*%*I_NYCasgRJUSX^1Y<7UG?Ht8D1R;>js*v4G$L< z1t>GIj+qD&E~t(ehQO>lW!y?%EPUIh;xlK23DA5S2LocSP#|FR+j+!5yGwJ};`Rv& zgs5U5Kv{_fOKk0RkO5$wvx0pl$o@xF0R8=Nfr2j)K;H-rEMVb<7M6e^hLjbM!G|Dz zs8)fQ)JD%X6Dmbw1qMvFLjw>}#or1USYYFgHkN=Rjv0(l!(v%+U%FRsxX1Dg1RU!xp*|lt(M5Xx$c}Z zNa`rKkgjkkrqimxCAxNKT5PQ%Y>OqpFtiuwwIhHjLX2o`(1J_+R`5y+#&&w6vfake zK&uFgpfCUi3;Sw<5tpk%g&Sr_Ldq6W#sC5^#|-lfVjk=)iZ4VAB?{w~TcuAw}HU5pJM>)-+7#QZ!0px-bEg9ijEc{ZU03yf{X zI;f5bDnfH`l7+F?Sk<-&`yi;BFJk_4`~7#!O^54JJ=E9 zen}XiyVeK19H6iktg|46J}8YD0bqucD?$Ct;jk;{&~!XBVf&tC8zBNf0xy&X1~!32 zVyvT!9mM{^6Fn70c%9ISD@@`FJn%zce4tJ&9044+AwB%{j)eTXK^yC!LOf9s1r7L{ zu-1`4Ry6Sng4+<`Qsy$5$t*Z%^kV=~pn)v5Y8^zR#l&zUgFRNDkCO9Z3NlwRz>&a{ z;NzrhA{k0xIK-1lS_djs*-2LF%6%dzq_AA%Nl@}2ksMlC;V8ti1(3i)hZE5YdKpAq zZmg7rAQ>*1U@SQ4503!LV+xoFz&M@~n$au)H=XFaYwoawW<)3ITrkengezL$tbjDX zVLob>GlJ~XCJNeFnQneX7-CMtbT(`nio-_1nqS%45C}XddZ`yBe+`_ z9s809FjoW~0Novms{#ge;J^qzFat=C-~=yN1O{&Kfk_Zy3D0-7yXvVSo@)Yv0>ifq z1jv3UaJH{`IJ+jOaDyK#0tqX41S(E2g-t+1B2*@mH~j}1+4(gVs`P8pG;;8qdCeEjq+gQIp+pw*hx490G=8Ctmi&A*vx)r zCx+c8NS(1@j^t7m3Kl(rF+-TopFXps(|j{;iU8B4q@0IaMPNv;n9&m6v#1pf>X8DP ztM1cpsvlNqOr@05EpBwEBTegB?{(6*?(raby6Y5sI@qyxw2Y;VU?@*=wYN5OJU{t@ zl}0RtB>;AkgY9QZFO6i%;>zZv4R zm`uCtV1o+)xj?>cfCFYu^O^Uj-}TlvdHH?se~Yr43~%krwTS+RmCN%uM!)X?%l+z3 zll$D%Zt|#2j$^9lSJ_atiqUgWi6I4`$j=^kw1@rZsMq+$}-)X6^WQDfi(0f5flj!=lht6gutq$Gfxfq}p0vJgTx zz}goNgbNs;@5D7gcL{%FST~*Ng-3n0yS?-uD1P)?ia-GVc6hz|MbQ;e)YE>gX=rk?5<8d_s8D? z@0XtR(bqot*T3no3%>ZZX21Ny?SA6VTK)5%{{a}l|Nj2-{{R%`fBgr5?A32PCtvxO zfC{*P45&obfnvSYdNE*ojzEEXCxJR}0f|-?I^i}y5OF$?Wse|&M+AaN5CQlVI5k&u z{jq{H_gOADb0i>hF*t!o_kodDJad)>B#0bscN!@Oc=h*u*%yB+FabvK0f;aG1h5=p zaRJK_0Pvv!QFu8ZNC9Oah51DWXP_Ebh;{O1_=YK9elLc8(9z!8lw6~P#BN%M~tU_Ls52)D8cQ}G?E@DUd&0uKoQ z8$%ol=`jvO0IgkvAtmh$X<1B`69yfj|~fi9?16W_f4Y_dAogwPA~7;z+M2_rxO-$4PN5n$Y=0S%c-GgL2r9`8Y11Nh!_QncV4-{^gMsP$m+9Fp3yv;Fq4L>6RwK z5t}eBAbFMWX_w78o(XB60KonM8_)>kfsdNWo5b;oM}z?rLm;BS5r~iw-LR1f5<;tR zoc9T#91)q}g8|Y(mM6d^Q!_5ZNsAuP053U(}qH#WLE5l2cDKvg8#F93EXn@{*er50eNbjRKvS zDOv^tfsL|BSp#0nV+SQVpg^i!zrdyKhnDZRmfg4l%SR!vQb1ruK>9KrxTi!0R04A< zL;V2;>o7n}qNgVVry2ksY^MQvdI1eUr~npxM`Wlg00vC5e2VIkdvmCPSf`a5sq|;2 z_GfNv*?`-3p0dWNX(j5Z)wh2F_ + + + + + + + + + + + + + + + FLAC - Free Lossless Audio Codec + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ + + + + + + + +
+ +
+ +
+
+ FLAC stands for Free Lossless Audio Codec, an audio format similar to MP3, but lossless, meaning that audio is compressed in FLAC without any loss in quality. This is similar to how Zip works, except with FLAC you will get much better compression because it is designed specifically for audio, and you can play back compressed FLAC files in your favorite player (or your car or home stereo, see supported devices) just like you would an MP3 file.
+
+ FLAC stands out as the fastest and most widely supported lossless audio codec, and the only one that at once is non-proprietary, is unencumbered by patents, has an open-source reference implementation, has a well documented format and API, and has several other independent implementations.
+
+ See About FLAC for more, or Using FLAC for how to play FLAC files, rip CDs to FLAC, etc. +
+ +
+ +
+ +
+ +
+
+ FLAC 1.2.1 released  New in this release is support for all RIFF/AIFF metadata, including Broadcast Wave Format (BWF). There are many other small improvements and bug fixes; see the changelog entry for complete details.
+
+ The new Denon AVR-4308DAB receiver supports FLAC.
+
+ Sound Forge 9.0b supports FLAC, for both reading and writing.
+
+ An installer for flac-1.1.4 on OS X is now available. This includes universal binaries that will work on both Intel and PowerPC machines. A 1.2.0 update will be available soon.
+
+ Czech Radio has released complete recordings of Bach's Brandenburg concertos in FLAC format, free to download.
+
+ A handful of new devices support FLAC: for home stereo, there are Denon's upcoming tabletop players SE-32 and SE-52 and Escient's FireBall SE500; for portables, the Blast from OPPO, Hyundai's NH-260, the Zarva MV209, this generically-named Portable Media Player, and the Gemei X-750.
+
+ last updated 2007-Sep-17 +
+ +
+ +
+ +
+
+ news +
+
+
+ 17-Sep-2007 :
FLAC 1.2.1 released

+ 16-Aug-2007 :
Sound Forge 9.0b supports FLAC

+ 03-Aug-2007 :
Czech Radio releases free FLAC recordings

+ 23-Jul-2007 :
FLAC 1.2.0 released

+ 13-Feb-2007 :
FLAC 1.1.4 released

+ 27-Nov-2006 :
FLAC 1.1.3 released

+ 25-Oct-2006 :
Winamp 5.31 ships with FLAC support

+ 20-Dec-2005 :
Volvo's Digital Jukebox plays FLAC

+ 21-Sep-2005 :
Live2496 now records directly to FLAC

+ 10-Aug-2005 :
Olive's new Symphony component supports FLAC

+ 11-May-2005 :
YME supports FLAC and Vorbis

+ 10-May-2005 :
PONTIS' MS330 supports FLAC and Vorbis

+ 02-May-2005 :
Sonos now supports FLAC and Vorbis

+ 23-Apr-2005 :
iAUDIO X5 portable supports FLAC and Vorbis

+ 09-Mar-2005 :
Squeezebox2 supports FLAC on the box

+ 05-Feb-2005 :
Version 1.1.2 released

+ (all news) +
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/itunes.html b/3rdparty/libflac/doc/html/itunes.html new file mode 100644 index 0000000..2180ace --- /dev/null +++ b/3rdparty/libflac/doc/html/itunes.html @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + FLAC - itunes + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ flac + itunes +
+
+
+ Would you like iTunes to support FLAC? So would we!
+
+ Due to the design of iTunes, only Apple can add support for FLAC [1]. And why wouldn't they? FLAC usage is accelerating, many bands like Pearl Jam, Phish, Dave Matthews Band, Metallica -- the same hip, influential people whose fans Apple courts -- are already distributing music in FLAC format, and users are clamoring for it in the iTunes forums:
+
    +
  • [2] "I have seen a lot of people on live music message boards turn away from the iPod because there are other music players that support FLAC. I am on the verge... and I am an Apple die-hard!"
  • +
  • [3] "If your source material is FLAC (as many bands have gone this way to distribute online music) your choice is to use another music player ..."
  • +
  • [4] (many more requests)
  • +
+ Make your voice heard! Fill out the iTunes feedback form (politely!) and let them know. Feel free to also direct them to this page. We at the FLAC project stand ready to help as well.
+
+
+
+ [1] XiphQT, through tremendous effort by developers, goes as far as possible in allowing some playback capability via QuickTime. But proper iTunes support -- tag handling, no import delays, etc. -- is not possible without Apple.
+
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/license.html b/3rdparty/libflac/doc/html/license.html new file mode 100644 index 0000000..9cc4c75 --- /dev/null +++ b/3rdparty/libflac/doc/html/license.html @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + FLAC - license + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ license +
+
+
+ FLAC is a free codec in the fullest sense. This page explicitly states all that you may do with the format and software.
+
+ The FLAC and Ogg FLAC formats themselves, and their specifications, are fully open to the public to be used for any purpose (the FLAC project reserves the right to set the FLAC specification and certify compliance). They are free for commercial or noncommercial use. That means that commercial developers may independently write FLAC or Ogg FLAC software which is compatible with the specifications for no charge and without restrictions of any kind. There are no licensing fees or royalties of any kind for use of the formats or their specifications, or for distributing, selling, or streaming media in the FLAC or Ogg FLAC formats.
+
+ The FLAC project also makes available software that implements the formats, which is distributed according to Open Source licenses as follows:
+
+ The reference implementation libraries are licensed under the New BSD License. In simple terms, these libraries may be used by any application, Open or proprietary, linked or incorporated in whole, so long as acknowledgement is made to Xiph.org Foundation when using the source code in whole or in derived works. The Xiph License is free enough that the libraries have been used in commercial products to implement FLAC, including in the firmware of hardware devices where other Open Source licenses can be problematic. In the source code these libraries are called libFLAC and libFLAC++.
+
+ The rest of the software that the FLAC project provides is licensed under the GNU General Public License (GPL). This software includes various utilities for converting files to and from FLAC format, plugins for audio players, et cetera. In general, the GPL allows redistribution as long as derived works are also made available in source code form according to compatible terms.
+
+ Neither the FLAC nor Ogg FLAC formats nor any of the implemented encoding/decoding methods are covered by any known patent.
+
+ FLAC is one of a family of codecs of the Xiph.org Foundation, all created according to the same free ideals. For some other codecs' descriptions of the Xiph License see the Speex and Vorbis license pages.
+
+ If you would like to redistribute parts or all of FLAC under different terms, contact Josh Coalson. +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/links.html b/3rdparty/libflac/doc/html/links.html new file mode 100644 index 0000000..2e4c447 --- /dev/null +++ b/3rdparty/libflac/doc/html/links.html @@ -0,0 +1,485 @@ + + + + + + + + + + + + + + + + FLAC - links + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ links +
+
+
+ The links page is the place for all things FLAC. The hardware section lists the home stereo, car stereo, and portable devices that support the FLAC format. The music section has links to artists, labels, and legal trading/sharing sites that offer works encoded in FLAC. The software section is a loosely categorized list of open-source software that supports the FLAC format. Some of the most popular (some non-free) software can be found on the download page in the extras section. +
+ +
+ +
+ +
+
+ hardware +
+
+
+ Below are some devices that support the FLAC format. For the ones we have hands-on experience with, there is a linked review (see all reviews). Manufacturers, if you would like your product reviewed here, please contact us.
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Home stereo:
Squeezebox
(our review)
Transporter
(our review)
Sonos
(our review)
EscientHifidelioOlive
Arcus DAR300BlackbirdMcIntosh MS300
Helios X5000Netgear EVA8000ReQuest
MediaREADY MCZensonic Z500Ziova
SooloosHD MediaBoxTViX 4/5000 Series
+
+ Other home stereo: + +
+
+ Car stereo: + +
Portable/Handheld:
Cowon iAUDIOi-Station mini DXIwod G10
KNC HR-2800Meizu M6 MiniplayerOnda VX737
Rio KarmaTeclast TL-29TrekStor Vibez
Bluedot BMP-1430
+
+ Other Portable/Handheld: + +
+
+ Other: +
    +
  • Numark's DJ equipment like the HDX and CDX turntables with integrated hard drive and CD player, and the HDMIX mixer
  • +
  • The Pico CD/DVD Duplicator
  • +
+
+ Reviews:
+ The main purpose of these reviews is to give an idea of how well particular devices support FLAC. Other subjective comments here are based on our general impressions and are not meant to be thorough or authoritative. We only review devices we have tested directly ourselves.
+
+
Sonos: A very slick networked audio system. Each ZonePlayer connects to an amplifier or speakers, accessing music over the network. ZonePlayers are controlled by a wireless remote with color LCD and clickwheel; they can network together wired or wireless and play in sync or independently. FLAC support is excellent; nearly the full subset (i.e. mono and stereo files, sample rates from 16kHz-48kHz, 16-bits per sample) including all standard encoding modes are supported. Also supported: gapless playback, FLAC tags, and ReplayGain.
+
+
Squeezebox: A fantastic networked audio player from Slim Devices with analog and digital outputs for connecting to an amplifier/receiver. Has an easy-to-read vacuum fluorescent display, wired or wireless networking, multi-room synchronization, and a bunch of other features. The server-side software, SlimServer, is open-source, runs on Windows, Mac OS X, Linux, etc. and has an active community. FLAC support is excellent; nearly the full subset (i.e. mono and stereo files, sample rates from 8kHz-48kHz, 16- and 24-bits per sample) including all standard encoding modes are supported. Also supported: gapless playback, FLAC tags, ReplayGain, automatic transcoding on the server of many audio formats to FLAC for transmission to the box, and external cuesheet support (internal cuesheet support is in the works).
+
+ Transporter: Top-of-the-line networked audio player from Slim Devices. Offers all the features of the Squeezebox (see just above), but loaded with pro-grade connectors (including balanced analog outputs and optical/coax/BNC/XLR digital ins and outs), top-end components, and a larger display. FLAC support is also excellent; all standard FLAC encoding modes and tags are supported, as are gapless playback, ReplayGain, cuesheets ... everything the Squeezebox supports, plus support for sample rates up to 96kHz.
+
+ + + + + +
Compression
modes
ChannelsSample
rates
Sample
resolution
GaplessFLAC tagsCover artReplayGainCuesheets
Sonos0-8stereo,mono16kHz-48kHz16bpsYYNYN
Squeezebox0-8stereo,mono8kHz-48kHz16bps, 24bpsYYNYY (external)
Transporter0-8stereo,mono8kHz-96kHz16bps, 24bpsYYNYY (external)
+
+ +
+ +
+ +
+
+ music +
+
+
+ Several labels and artists have adopted FLAC as a distribution format for their works, offering them for sale or free download online. And many online trading communities that share legal, band-sanctioned recordings of live shows distribute them in FLAC format. These are just some of them.
+
+ Artists + + Labels and Stores + + Venues: + + Communities: + +
+ +
+ +
+ +
+
+ software +
+
+
+ A large and growing list of software supports the FLAC format. This list is a sample of open-source software supporting FLAC. Some of the most popular non-free software can be found on the download page in the extras section.
+
+ Audio encoders/decoders/converters/taggers: +
    +
  • BonkEnc: Windows CD ripper, audio encoder and converter
  • +
  • EasyTAG versatile tagger
  • +
  • Entagged, a Java audio file tagger
  • +
  • etree-scripts: command-line tools for verifying, tagging, converting, and burning lossless audio files
  • +
  • FLAC frontend (Windows GUI)
  • +
  • Flac-Jacket: a set of scripts for creating FLAC files and an HTML index
  • +
  • FLACTAG: tags single album FLAC files with embedded CUE sheets using data from the MusicBrainz service
  • + +
  • MacFLAC Mac OS X FLAC distribution
  • +
  • MediaCoder converts between many audio and video formats.
  • +
  • MP3FS, a read-only FUSE filesystem which can transcode FLAC to MP3 on the fly
  • +
  • rawrec/rawplay recording/playback tools
  • +
  • sonice FLAC to Vorbis transcoder
  • +
  • Split_wav WAV+CUE splitter
  • +
  • Tag comprehensive tagger (frontend available)
  • +
  • XLD (X Lossless Decoder), a Universal Binary command-line decoder for Mac OS X
  • +
+ Audio editors: + + Audio players/servers: + + CD ripping/burning: +
    +
  • Arson: KDE ripper/burner
  • +
  • AutoFLAC: automated ripping and encoding to FLAC with EAC (ExactAudioCopy); also has a write mode for burning back to CD for an exact copy
  • +
  • CDex: ripper for Windows can rip to FLAC via external command
  • +
  • crip: console ripper/encoder/tagger
  • +
  • Flacattack: an all-in-one tool that works with EAC (ExactAudioCopy) to encode a CD image to FLAC, embed the cuesheet, add ReplayGain, create lossy files, etc. all in a customizable directory structure
  • +
  • grip: ripper for Linux can rip to FLAC via external command
  • +
  • K3B: CD/DVD creator for Linux
  • +
  • MAREO multi-format encoder for EAC
  • +
  • Max, a CD ripper and encoder for OS X
  • +
  • Omni Encoder, a graphical multi-format encoder for EAC
  • +
  • rip command-line ripper/encoder
  • +
  • RipIT, a console-based front-end to several ripping and encoding tools
  • +
  • Wack, the successor to Flacattack which can encode to multiple formats at once
  • +
+ Organizers: +
    +
  • Ampache, a PHP-based tool for managing, updating and playing files via a web interface
  • +
  • GNUpod includes on-the-fly FLAC conversion to iPod
  • +
  • MPEG Audio Collection
  • +
  • prokyon3, a Qt-based music manager and tag editor
  • +
  • Rhythmbox, music management application for GNOME
  • +
+ Plugins, developer tools and libraries: + + Scientific, Audio Analysis: +
    + +
  • HASAS HydroAcoustical Signal Analysis System
  • +
+ +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/news.html b/3rdparty/libflac/doc/html/news.html new file mode 100644 index 0000000..0d84c32 --- /dev/null +++ b/3rdparty/libflac/doc/html/news.html @@ -0,0 +1,697 @@ + + + + + + + + + + + + + + + + FLAC - news + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ news +
+
+
+ + 17-Sep-2007: +
    +
  • + FLAC 1.2.1 released  New in this release is support for all RIFF/AIFF metadata, including Broadcast Wave Format (BWF). There are many other small improvements and bug fixes; see the changelog entry for complete details. +
  • +
+ + 16-Aug-2007: + + + 03-Aug-2007: + + + 23-Jul-2007: +
    +
  • + FLAC 1.2.0 released  New in this release are small speed improvements, and some new options and bug fixes. Also the decoder has been updated to pave the way for some format improvements, so if your software supports FLAC be sure to check it out. See the changelog entry for complete details. +
  • +
+ + 13-Feb-2007: +
    +
  • + FLAC 1.1.4 released  Increased compression and dramatic speedups for both encoding and decoding are the big improvements in FLAC 1.1.4. There are also several new options and bugfixes. See the changelog entry for complete details. +
  • +
+ + 27-Nov-2006: +
    +
  • + FLAC 1.1.3 released  Almost 2 years in the making, FLAC 1.1.3 is a major release with improved compression, improved cover art and multichannel support, better recovery for corrupted files, many new features and options in the command-line tools, and several bug fixes. For developers, the decoder and encoder APIs have also been simplified and there is a new porting guide. See the changelog entry for complete details. +
  • +
+ + 25-Oct-2006: +
    +
  • + Winamp 5.31 ships with FLAC support
    +
    + Winamp 5.31 now includes Nullsoft FLAC plugins for encoding and decoding. The decoder is based on our reference decoder plugin. However the current encoder plugin is based on a pre-release of flake and we recommend to not use it for archival yet. +
  • +
+ + 20-Dec-2005: +
    +
  • + Volvo's Digital Jukebox plays FLAC
    +
    + Want some FLAC with your Volvo? Volvo's Digital Jukebox, developed with PhatNoise, is fully integrated with the car's audio system and available for the S60, V70, XC70, and S80. PhatNoise's PhatBox in 2002 was the first device to support FLAC natively and has gained a loyal following. The Digital Jukebox and PhatBox also support Ogg Vorbis. +
  • +
+ + 21-Sep-2005: +
    +
  • + Live2496 now records directly to FLAC
    +
    + Live2496, a program that can record 24-bit audio up to 96kHz on a Pocket PC (using Core Sound's PDAudio interface) now supports recording directly to FLAC. +
  • +
+ + 10-Aug-2005: +
    +
  • + Olive's new Symphony component supports FLAC
    +
    + The new Symphony wireless digital music center by Olive supports FLAC. +
  • +
+ + 11-May-2005: +
    +
  • + YME supports FLAC and Vorbis
    +
    + Yahoo! Music Engine supports FLAC and Ogg Vorbis, for playback and ripping/encoding. +
  • +
+ + 10-May-2005: +
    +
  • + PONTIS' MS330 supports FLAC and Vorbis
    +
    + The new MS330 Media Server from PONTIS supports FLAC and Ogg Vorbis. In addition to playing from the internal hard disk, CD drive, and 6-in-1 flash card slot, it can also be connected to a network, and even a TV for graphical navigation, cover art, photo viewing, etc. +
  • +
+ + 02-May-2005: + + + 23-Apr-2005: +
    +
  • + iAUDIO X5 portable supports FLAC and Vorbis
    +
    + The new portable iAUDIO X5 from COWON supports FLAC and Ogg Vorbis. +
  • +
+ + 09-Mar-2005: +
    +
  • + Squeezebox2 supports FLAC on the box
    +
    + Slim Devices' new Squeezebox2 supports FLAC decoding on the box, reducing the amount of precious wireless bandwidth required for FLAC playback. +
  • +
+ + 05-Feb-2005: +
    +
  • + FLAC 1.1.2 released  New in this release are small decoding speedups for all platforms, small encoding speedups in fast (non-LPC) mode, streaming support in the XMMS plugin, and several bug fixes. For developers there are also a few additions and changes to the metadata API to make working with tags easier. See the changelog entry for complete details. This release actually wasn't supposed to happen so soon, but needed to be made to fix library naming and build problems in FLAC 1.1.1 that caused trouble for package maintainers, so unless you are having trouble with one of the particular bugs that got fixed in 1.1.2 then there is not much of a need to upgrade. +
  • +
+ + 17-Jan-2005: + + + 12-Nov-2004: +
    +
  • + Escient's new FireBall E2-300 supports FLAC
    +
    + Escient has a new home stereo component that supports FLAC, the FireBall E2-300. +
  • +
+ + 02-Nov-2004: +
    +
  • + New Mindawn music store offers FLAC and Vorbis
    +
    + Mindawn, a new online music service offering FLAC and Ogg Vorbis, is now open. They also have a multi-platform (Windows, Linux, Mac OS X) CD ripper/encoder and are finishing up a multi-platform player. +
  • +
+ + 01-Oct-2004: +
    +
  • + FLAC 1.1.1 released  There is a new changelog with a complete list of changes/fixes/improvements, but here is a summary of some of the main ones: +
      +
    • Better Ogg FLAC support including seeking and an official Ogg FLAC mapping.
    • +
    • Significant decoding speedup (almost 2x) on PowerPC (includes Macs with G4/G5).
    • +
    • Speedups in the plugins.
    • +
    • Several new options to flac and metaflac by popular demand.
    • +
    • Several API additions requested by developers.
    • +
    • Many bugfixes.
    • +
    +
  • +
+ + 27-Jul-2004: + + + 21-Jun-2004: + + + 03-Mar-2004: + + + 03-Feb-2004: + + + 19-Nov-2003: +
    +
  • + PhatNoise's new Home Digital Media Player supports FLAC
    +
    + PhatNoise (makers of the PhatBox, which also plays FLAC) just released their Home Digital Media Player. It includes a DMS cartridge slot so you can pop out your FLAC tunes and pop 'em in your car. +
  • +
+ + 18-Nov-2003: +
    +
  • + Slim's new 'Squeezebox' supports FLAC
    +
    + Slim Devices' new Squeezebox, the wireless follow-on to the SliMP3 networked audio player, is available and supports FLAC and Ogg Vorbis. +
  • +
+ + 11-Nov-2003: +
    +
  • + Primus offers live shows in FLAC
    +
    + Primus is offering soundboard recordings from 2003 Tour de Fromage in FLAC and MP3 on primuslive.com. More info here and here. +
  • +
+ + 13-Oct-2003: + + + 11-Aug-2003: +
    +
  • + New Rio Karma supports FLAC
    +
    + Rio has announced a new portable, the Rio Karma, which supports FLAC and Ogg Vorbis. +
  • +
+ + 23-Jun-2003: +
    +
  • + livephish.com offers FLAC shows
    +
    + livephish.com is now offering soundboard recordings of live shows in FLAC format in addition to MP3. +
  • +
+ + 09-Feb-2003: + + + 29-Jan-2003: +
    +
  • + FLAC has joined the Xiph project  See here for the press release.
    +
    + Xiph.org is behind other free codecs such as Vorbis, Theora, and Speex. Our merger with Xiph will bring FLAC into the ranks and lead to better integration with the Ogg multimedia framework.
    +
    + Note that the FLAC format is not changing, native FLAC will continue to exist, and the command-line tools and plugins will continue to work as before. The codec libraries will now be available under Xiph's BSD-like license.
    +
    + Over the next few days we will be transitioning normal operations off SourceForge and over to Xiph.org; first will be CVS and the web pages, followed by the mailing lists, bug tracker, and file release area. We will keep a mirror here until the transition is complete. It's OK to send patches to the flac-dev list but they won't be able to be integrated until CVS is fully moved over. +
  • +
+ + 26-Jan-2003: +
    +
  • + FLAC 1.1.0 released  I didn't get everything in that I wanted, but it's high time for a release.
    +
    + Note that the minor version has incremented, meaning forward compatibility was broken (forward compatibility means an earlier decoder can play all streams made by a later decoder). This is only because of a bug in 1.0.4 and prior where the decoder could not properly skip unknown metadata. The stream format itself has not changed and FLAC is still fully backward-compatible. All it means is that a FLAC file containing cue sheet metadata will not decode in older decoders. This bug is fixed in 1.1.0.
    +
    + Here's what's new:
    +
    + General: +
      +
    • All code is now Valgrind-clean!
    • +
    • New CUESHEET metadata block for storing CD TOC and index point information. Now a CD can be completely backed up to a single FLAC file for archival.
    • +
    • ReplayGain support.
    • +
    • Better compression of 24-bit files.
    • +
    • More complete AIFF support.
    • +
    • 3DNow! optimizations enabled by default.
    • +
    • Complete MSVC build system with .dsp projects for everything, which can build both static libs and DLLs, and in debug or release mode, all in the same source tree.
    • +
    + flac: +
      +
    • Can now decode FLAC to AIFF; new --force-aiff-format option.
    • +
    • New --cuesheet option for reading and storing a cuesheet when encoding a whole CD. Automatically creates seek points for track and index points unless --no-cued-seekpoints is used.
    • +
    • New --replay-gain option for calculating ReplayGain values and storing them as tags.
    • +
    • New --until option complements --skip to stop decoding at a specified point in the stream.
    • +
    • --skip and --until now also accept mm:ss.ss format.
    • +
    • New -S #s flavor to specify seekpoints every '#' number of seconds.
    • +
    • flac now defaults to -S 10s instead of -S 100x for the seek table.
    • +
    • flac now adds a 4k PADDING block by default (turn off with --no-padding).
    • +
    • Fixed a bug with --skip and AIFF-to-FLAC encoding.
    • +
    • Fixed a bug where decoding a FLAC file whose total_samples==0 in the STREAMINFO would corrupt the WAVE header.
    • +
    + metaflac: +
      +
    • New --import-cuesheet-from option for reading and storing a cuesheet to a FLAC-encoded CD. Automatically creates seek points for track and index points unless --no-cued-seekpoints is used.
    • +
    • New --export-cuesheet-to option for writing a cuesheet from a FLAC file for use with CD authoring software.
    • +
    • New --add-replay-gain option for calculating ReplayGain values and storing them as tags.
    • +
    • New --add-seekpoint option to add seekpoints to an existing FLAC file. Includes new --add-seekpoint=#s flavor to add seekpoints every '#' number of seconds.
    • +
    + XMMS plugin: +
      +
    • Configurable sample resolution conversion with dither.
    • +
    • ReplayGain support with customizable noise shaping, pre-amp, and optional hard limiter.
    • +
    • New Vorbis comment editor.
    • +
    • File info now works.
    • +
    • Bitrate now shows the smoothed instantaneous bitrate.
    • +
    • Uses the ARTIST tag if there is no PERFORMER tag.
    • +
    + Winamp2 plugin: +
      +
    • Configurable sample resolution conversion with dither.
    • +
    • ReplayGain support with customizable noise shaping, pre-amp, and optional hard limiter.
    • +
    • File info now works.
    • +
    • Uses the ARTIST tag if there is no PERFORMER tag.
    • +
    + Libraries (developers take note!): +
      +
    • All code and tests are instrumented for Valgrind. All tests run Valgrind-clean, meaning no memory leaks or buffer over/under-runs.
    • +
    • Separate 64-bit datapath through the filter in libFLAC for better compression of >16 bps files.
    • +
    • FLAC__metadata_object_new(FLAC__METADATA_TYPE_VORBIS_COMMENT) now sets the vendor string.
    • +
    • The documentation on the usage of FLAC::Iterator::get_block() in libFLAC++ has an important correction. If you use this class make sure to read this.
    • +
    +
  • +
+ + 24-Sep-2002: +
    +
  • + FLAC 1.0.4 released  There are a lot of improvements since 1.0.3; let's get right to it:
    +
    + Plugins: +
      +
    • Support for Vorbis comments, ID3 v1 and v2 tags.
    • +
    • Configurable title formatting and charset conversion in XMMS plugin.
    • +
    • Support for 8- and 24-bit FLAC files. There is a compile-time option for raw 24-bit output or 24bps-to-16bps linear dithering (the default).
    • +
    + flac: +
      +
    • Improved option parser (now uses getopt).
    • +
    • AIFF input support (thanks to Brady Patterson).
    • +
    • Small decoder speedup.
    • +
    • --sector-align now supported for raw input files.
    • +
    • New -T, --tag options for adding Vorbis comments while encoding.
    • +
    • New --serial-number option for use with --ogg.
    • +
    • Automatically writes vendor string in Vorbis comments.
    • +
    • Drastically reduced memory requirements.
    • +
    • Fixed bug where extra fmt/data chunks that were supposed to be skipped were not getting skipped.
    • +
    • Fixed bug in granulepos setting for Ogg FLAC streams.
    • +
    • Fixed memory leak when encoding multiple files with -V.
    • +
    + metaflac: +
      +
    • UTF-8 support in Vorbis comments.
    • +
    • New --import-vc-from and --export-vc-to commands for importing/exporting Vorbis comments from/to a file. For example, the following can be used to copy tags back and forth:
      + + metaflac --export-vc-to=- --no-utf8-convert file.flac | vorbiscomment --raw -w file.ogg
      + vorbiscomment --raw -l file.ogg | metaflac --import-vc-from=- --no-utf8-convert file.flac
      +
      +
    • +
    • Fixed bug #606796 where metaflac was failing on read-only files.
    • +
    + Libraries: +
      +
    • All APIs now meticulously documented via Doxygen. See here.
    • +
    • New libOggFLAC and libOggFLAC++ libraries. These wrap around libFLAC to provide encoding and decoding of Ogg FLAC streams, providing interfaces similar to the ones of the native FLAC libraries. These are also documented via Doxygen.
    • +
    • New FLAC__SeekableStreamEncoder and FLAC__FileEncoder in libFLAC simplify common encoding tasks.
    • +
    • New verify mode in all encoders.
    • +
    • FLAC__stream_encoder_finish() now resets the defaults just like the stream decoders.
    • +
    • Drastically reduced memory requirements of encoders and decoders.
    • +
    • Encoder now automatically writes vendor string in VORBIS_COMMENT block.
    • +
    • Encoding speedup of fixed predictors and MD5 speedup for 16bps mono/stereo signals on x86 (thanks to Miroslav Lichvar).
    • +
    • Fixed bug in metadata interface where a bps in STREAMINFO > 16 was incorrectly parsed.
    • +
    • Fixed bug where aborting stream decoder could cause infinite loop.
    • +
    • Behavior change: simplified decoder *_process() commands.
    • +
    • Behavior change: calling FLAC__stream_encoder_init() calls write callback once for "fLaC" signature and once for each metadata block.
    • +
    • Behavior change: deprecated do_escape_coding and rice_parameter_search_distance in encoder.
    • +
    +
  • +
+ + 22-Aug-2002: +
    +
  • + Rio Receiver  FLAC support has been added to the Rio Receiver and Dell Digital Audio Receiver via David Flowerday's RioPlay client. See here for the announcement. +
  • +
+ + 03-Jul-2002: +
    +
  • + FLAC 1.0.3 released  Although by version number only a 0.0.1 increment, this release is significant. Remember, micro-revisions mean the FLAC format remains both forward and backward compatible, however, the libFLAC API has changed for the better.
    +
    + New features: +
      +
    • 24-bit input support restored in flac.
    • +
    • Decoder speedup in libFLAC, which is directly passed on to the command-line decoder and plugins.
    • +
    • New -F option to flac to continue decoding in spite of errors.
    • +
    • Correctly set granulepos in Ogg packets so seeking Ogg FLAC streams will be easier.
    • +
    • New VORBIS_COMMENT metadata block for tagging with Vorbis-style comments.
    • +
    • Vastly improved metaflac, now with many editing and tagging options.
    • +
    • Partial id3v1 support in Winamp plugins.
    • +
    • Updated Winamp 3 plugin.
    • +
    • Note: new semantics for -P option in flac.
    • +
    • Note: removed -R option in flac.
    • +
    + New library features: +
      +
    • Previously mentioned decoder speedup in libFLAC.
    • +
    • New metadata interface to libFLAC for manipulating metadata in FLAC files.
    • +
    • New libFLAC++ API, an object wrapper around libFLAC.
    • +
    • New VORBIS_COMMENT metadata block for tagging with Vorbis-style comments.
    • +
    • Customizable metadata filtering by type in decoders.
    • +
    • Stream encoder can take an arbitrary list of metadata blocks, instead of just one SEEKTABLE and/or PADDING block.
    • +
    + Bugs fixed: +
      +
    • Fixed bug with using pipes under Windows.
    • +
    • Fixed several bugs in the plugins and made them more robust in general.
    • +
    • Fixed bug in flac where decoding to WAVE of a FLAC file with 0 for total_samples in the STREAMINFO block yielded a WAVE chunk of 0 size.
    • +
    • Fixed bug in Ogg packet numbering.
    • +
    +
  • +
+ + 13-Feb-2002: +
    +
  • + FLAC goes hardware!  PhatNoise has become the first commercial hardware platform to support FLAC. Firmware is now available for the Phatbox player to play FLAC files. See here for details. +
  • +
+ + 03-Dec-2001: +
    +
  • + FLAC 1.0.2 released  This release is only to fix a bug that was causing some of the plugins to crash sporadically. It can also affect libFLAC users that reuse one file decoder instance for multiple files; see here for more. +
  • +
+ + 14-Nov-2001: +
    +
  • + FLAC 1.0.1 released  The core codec is unchanged but there have been some features added and some bugs fixed:
    +
    + New features for users: +
      +
    • Support for Ogg-FLAC, i.e. flac can now read and write FLAC streams using Ogg as the transport layer.
    • +
    • New Winamp 3 plugin based on the Wasabi Beta 1 SDK.
    • +
    • New utilities for adding FLAC support to the Monkey's Audio GUI (see how).
    • +
    • Mac OS X support. The download area now contains an OS X binary release.
    • +
    • Mingw32 support.
    • +
    • Better handling of MS-specific 'fmt' chunks in WAVE files.
    • +
    + New features for developers: +
      +
    • Added a SeekableStreamDecoder layer between StreamDecoder and FileDecoder. This makes it easier to use libFLAC in situations where files have been abstracted away. See the latest documentation for more. The interface for the StreamDecoder and FileDecoder remain the same and are still binary-compatible with libFLAC 1.0.
    • +
    • Drastically reduced the stack requirements of the encoder.
    • +
    + Bug fixes: +
      +
    • Fixed a serious bug with flac and raw input where the encoder was trying to rewind when it shouldn't, which would add 12 junk samples to the encoded file. This was not present in WAVE encoding.
    • +
    • Fixed a minor bug in libFLAC with setting the file name to stdin on a file decoder.
    • +
    • Fixed a minor bug in libFLAC where multiple calls to setting the file name on a file decoder caused leaked memory.
    • +
    • Fixed a minor bug in metaflac, now correctly skips an id3v2 tag if present.
    • +
    • Fixed a minor bug in metaflac, now correctly skips long metadata blocks.
    • +
    +
  • +
+ + 20-Jul-2001: +
    +
  • + FLAC 1.0 is out!  It's finally here. There are a few new features but mostly it is minor bug fixes since 0.10: +
      +
    • New '--sector-align' option to flac which aligns a group of encoded files on CD audio sector boundaries.
    • +
    • New '--output-prefix' option to flac to allow the user to prepend a prefix to all output filenames (useful, for example, for encoding/decoding to a different directory).
    • +
    • Better WAVE autodetection (doesn't rely on ungetc() anymore).
    • +
    • Cleaner one-line encoding/decoding stats.
    • +
    • Changes to the libFLAC interface and type names to make binary compatibility easier to maintain in the future.
    • +
    • New '--sse-os' option to 'configure' to enable faster SSE-based routines.
    • +
    • Another (hopefully last) fix to the Winamp 2 plugin.
    • +
    • Slightly improved Rice parameter estimation.
    • +
    • Bug fixes for some very rare corner cases when encoding.
    • +
    +
  • +
+ + 07-Jun-2001: +
    +
  • + FLAC 0.10 released.  This is probably the final beta. There have been many improvements in the last two months: +
      +
    • Both the encoder and decoder have been significantly sped up. Aside from C improvements, the code base now has an assembly infrastructure that allows assembly routines for different architectures to be easily integrated. Many key routines have now have faster IA-32 implementations (thanks to Miroslav).
    • +
    • A new metadata block SEEKTABLE has been defined to hold an arbitrary number of seek points, which speeds up seeking within a stream.
    • +
    • flac now has a command-line usage similar to 'gzip'; make sure to see the latest documentation for the new usage. It also attempts to preserve the input file's timestamp and permissions.
    • +
    • The -# options in flac have been tweaked to yield the best compression-to-encode-time ratios. The new default is -5.
    • +
    • flac can now usually autodetect WAVE files when encoding so that -fw is usually not needed when encoding from stdin.
    • +
    • The WAVE reader in flac now just ignores (with a warning) unsupported sub-chunks instead of aborting with an error.
    • +
    • Added an option '--delete-input-file' to flac which automatically deletes the input after a successful encode/decode.
    • +
    • Added an option '-o' to flac to force the output file name (the old usage of "flac - outputfilename" is no longer supported).
    • +
    • Changed the XMMS plugin to send smaller chunks of samples (now 512) so that visualization is not slow.
    • +
    • Fixed a bug in the stream decoder where the decoded samples counter got corrupted after a seek.
    • +
    + It should be a short hop to 1.0. +
  • +
+ + 31-Mar-2001: +
    +
  • + FLAC 0.9 released.  There were some format changes that broke backwards compatibility but these should be the last (see below). Also, there have been several bug fixes and some new features: +
      +
    • FLAC's sync code has been lengthened to 14 bits from 9 bits. This should enable a faster and more robust synchronization mechanism.
    • +
    • Two reserved bits were added to the frame header.
    • +
    • A CRC-16 was added to the FLAC frame footer, and the decoder now does frame integrity checking based on the CRC.
    • +
    • The format now includes a new subframe field to indicate when a subblock has one or more 0 LSBs for all samples. This increases compression on some kinds of data.
    • +
    • Added two options to the analysis mode, one for including the residual signal in the analysis file, and one for generating gnuplot files of each subframe's residual distribution with some statistics. See the latest documentation.
    • +
    • XMMS plugin now supports 8-bit files.
    • +
    • Fixed a bug in the Winamp2 plugin where the audio sounded garbled.
    • +
    • Fixed a bug in the Winamp2 plugin where Winamp would hang sporadically at the end of a track (c.f. bug #231197).
    • +
    + FLAC is on track for an official 1.0 release soon. +
  • +
+ + 05-Mar-2001: +
    +
  • + FLAC 0.8 released.  This release is a result of extensive testing and fixes several bugs encountered when pushing the encoder to the limit. I'm pretty confident in the stability of the encoder/decoder now for all kinds of input. There have also been several features added. Here is a complete list of the changes since 0.7: +
      +
    • Created a new utility called metaflac. It is a metadata editor for .flac files. Right now it just lists the contents of the metadata blocks but eventually it will allow update/insertion/deletion.
    • +
    • Added two new metadata blocks: PADDING which has an obvious function, and APPLICATION, which is meant to be open to third party applications. See the latest format docs for more info, or the new id registration page.
    • +
    • Added a -P option to flac to reserve a PADDING block when encoding.
    • +
    • Added support for 24-bit files to flac (the FLAC format always supported it).
    • +
    • Started the Winamp3 plugin.
    • +
    • Greatly expanded the test suite, adding more streams (24-bit streams, noise streams, non-audio streams, more patterns) and more option combinations to the encoder. The test suite runs about 30 streams and over 5000 encodings now.
    • +
    • Fixed a bug in libFLAC that happened when using an exhaustive LPC coefficient quantization search with 8 bps input.
    • +
    • Fixed a bug in libFLAC where the error estimation in the fixed predictor could overflow.
    • +
    • Fixed a bug in libFLAC where LPC was attempted even when the autocorrelation coefficients implied it wouldn't help.
    • +
    • Reworked the LPC coefficient quantizer, which also fixed another bug that might occur in rare cases.
    • +
    • Really fixed the '-V overflow' bug (c.f. bug #231976).
    • +
    • Fixed a bug in flac related to the decode buffer sizing.
    • +
    + FLAC is very close to being ready for an official release. The only known problems left are with the Winamp plugins, which should be fixed soon, and pipes with MSVC. +
  • +
+ + 12-Feb-2001: +
    +
  • + FLAC 0.7 released.  This is mainly a bug fix release, specifically: +
      +
    • Fixed a bug that happened when both -fr and --seek were used at the same time.
    • +
    • Fixed a bug with -p (c.f. bug #230992).
    • +
    • Fixed a bug that happened when using large (>32K) blocksizes and -V (c.f. bug #231976).
    • +
    • Fixed a bug where encoder was double-closing a file.
    • +
    • Expanded the test suite.
    • +
    • Added more optimization flags for gcc, which should speed up flac.
    • +
    +
  • +
+ + 28-Jan-2001: +
    +
  • + FLAC 0.6 released.  The encoder is now much faster. The -m option has been sped up by 4x and -r improved, meaning that in the default compression mode (-6), encoding should be at least 3 times faster. Other changes: +
      +
    • Some bugs related to flac and pipes were fixed (see here for the discussion).
    • +
    • A "loose mid-side" (-M) option to the encoder has been added, which adaptively switches between independent and mid-side coding, instead of the exhaustive search that -m does.
    • +
    • An analyze mode (-a) has been added to flac. This is useful mainly for developers; currently it will dump info about each frame and subframe to a file. It's a text file in a format that can be easily processed by scripts; a separate analysis program is in the works.
    • +
    • The source now has an autoconf/libtool-based build system. This should allow the source to build "out-of-the-box" on many more platforms.
    • +
    +
  • +
+ + 15-Jan-2001: +
    +
  • + FLAC 0.5 released.  This is the first beta version of FLAC. Being beta, there will be no changes to the format that will break older streams, unless a serious bug involving the format is found. What this means is that, barring such a bug, streams created with 0.5 will be decodable by future versions. This version also includes some new features: +
      +
    • An MD5 signature of the unencoded audio is computed during encoding, and stored in the Encoding metadata block in the stream header. When decoding, flac will now compute the MD5 signature of the decoded data and compare it against the signature in the stream header.
    • +
    • A test mode (-t) has been added to flac. It works like decode mode but doesn't write an output file.
    • +
    +
  • +
+ + 23-Dec-2000: +
    +
  • FLAC 0.4 released.  This version fixes a bug in the constant subframe detection. More importantly, a verify option (-V) has been added to flac that verifies the encoding process. With this option turned on, flac will create a parallel decoder while encoding to make sure that the encoded output decodes to exactly match the original input. In this way, any unknown bug in the encoder will be caught and flac will abort with an error message.
  • +
+ + 10-Dec-2000: +
    +
  • FLAC debuts on SourceForge.  The FLAC project is now being hosted on SourceForge. Visit the FLAC project page to join the mailing list or sign up as a developer.
  • +
+
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/ogg_mapping.html b/3rdparty/libflac/doc/html/ogg_mapping.html new file mode 100644 index 0000000..587d512 --- /dev/null +++ b/3rdparty/libflac/doc/html/ogg_mapping.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + FLAC - ogg mapping + + + + + + +
+ + + +
+  english  | +  russian  +
+ +
+ +
+
+ ogg mapping +
+
+
+ This page specifies the way in which compressed FLAC data is encapsulated in an Ogg transport layer. It assumes basic knowledge of the FLAC format and Ogg structure and framing.
+
+ The original FLAC format includes a very thin transport system. This system of compressed FLAC audio data mixed with a thin transport has come to be known as 'native FLAC'. The transport consists of audio frame headers and footers which contain synchronization patterns, timecodes, and checksums (but notably not frame lengths), and a metadata system. It is very lightweight and does not support more elaborate transport mechanisms such as multiple logical streams, but it has served its purpose well.
+
+ The native FLAC transport is not a transport "layer" in the way of standard codec design because it cannot be entirely separated from the payload. Though the metadata system can be separated, the frame header includes both data that belongs in the transport (sync pattern, timecode, checksum) and data that belongs in the compressed packets (audio parameters like channel assignments, sample rate, etc).
+
+ This presents a problem when trying to encapsulate FLAC in other true transport layers; the choice has to be made between redundancy and complexity. In pursuit of correctness, a mapping could be created that removed from native FLAC the transport data, and merged the remaining frame header information into the audio packets. The disadvantage is that current native FLAC decoder software could not be used to decode because of the tight coupling with the transport. Either a separate decoding implementation would have to be created and maintained, or an Ogg FLAC decoder would have to synthesize native FLAC frames from Ogg FLAC packets and feed them to a native FLAC decoder.
+
+ The alternative is to treat native FLAC frames as Ogg packets and accept the transport redundancy. It turns out that this is not much of a penalty; a maximum of 12 bytes per frame will be wasted. Given the common case of stereo CD audio encoded with a blocksize of 4096 samples, a compressed frame will be 4-16 Kbytes. The redundancy amounts to a fraction of a percent.
+
+ In the interest of simplicity and expediency, the second method was chosen for the first official FLAC->Ogg mapping. A mapping version is included in the first packet so that a less redundant mapping can be defined in the future.
+
+ It should also be noted that support for encapsulating FLAC in Ogg has been present in the FLAC tools since version 1.0.1. However, the mappings used were never formalized and have insurmountable problems. For that reason, Ogg FLAC streams created with flac versions before 1.1.1 should be decoded and re-encoded with flac 1.1.1 or later (flac 1.1.1 can decode all previous Ogg FLAC files, but files made prior to 1.1.0 don't support seeking). Since the support for Ogg FLAC before FLAC 1.1.1 was limited, we hope this will not result in too much inconvenience.
+
+ Version 1.0 of the FLAC-to-Ogg mapping then is a simple identifying header followed by pure native FLAC data, as follows: +
    +
  • + The first packet of a stream consists of: +
      +
    • The one-byte packet type 0x7F
    • +
    • The four-byte ASCII signature "FLAC", i.e. 0x46, 0x4C, 0x41, 0x43
    • +
    • A one-byte binary major version number for the mapping, e.g. 0x01 for mapping version 1.0
    • +
    • A one-byte binary minor version number for the mapping, e.g. 0x00 for mapping version 1.0
    • +
    • A two-byte, big-endian binary number signifying the number of header (non-audio) packets, not including this one. This number may be zero (0x0000) to signify 'unknown' but be aware that some decoders may not be able to handle such streams.
    • +
    • The four-byte ASCII native FLAC signature "fLaC" according to the FLAC format specification
    • +
    • The STREAMINFO metadata block for the stream.
    • +
    + This first packet is the only packet in the first page of the stream. This results in a first Ogg page of exactly 79 bytes at the very beginning of the logical stream. +
  • +
  • + This first page is marked 'beginning of stream' in the page flags. +
  • +
  • + The first packet is followed by one or more header packets. Each such packet will contain a single native FLAC metadata block. The first of these must be a VORBIS_COMMENT block. These packets may span page boundaries but the last will finish the page on which it ends, so that the first audio packet begins a page. The first byte of these metadata packets serves also as the packet type, and has a legal range of (0x01-0x7E,0x81-0xFE). +
  • +
  • + The granule position of these first pages containing only headers is zero. +
  • +
  • + The first audio packet of the logical stream begins a fresh Ogg page. +
  • +
  • + Native FLAC audio frames appear as subsequent packets in the stream. Each packet corresponds to one FLAC audio frame. The first byte of each packet serves as the packet type. Since audio packets are native FLAC frames, this first byte will be always 0xFF according to the native FLAC format specification. +
  • +
  • + The last page is marked 'end of stream' in the page flags. +
  • +
  • + FLAC packets may span page boundaries. +
  • +
  • + The granule position of pages containing FLAC audio follows the same semantics as that for Ogg-encapsulated Vorbis as described here. +
  • +
  • + Redundant fields in the STREAMINFO packet may be set to zero (indicating "unknown" in native FLAC), which also facilitates single-pass encoding. These fields are: the minimum and maximum frame sizes, the total samples count, and the MD5 signature. "Unknown" values for these fields will not prevent a compliant native FLAC or Ogg FLAC decoder from decoding the stream. +
  • +
+ It is intended that the first six bytes of any version of FLAC-to-Ogg mapping will share the same structure, namely, the four-byte signature and two-byte version number.
+
+ There is an implicit hint to the decoder in the mapping version number; mapping versions which share the same major version number should be decodable by decoders of the same major version number, e.g. a 1.x Ogg FLAC decoder should be able to decode any 1.y Ogg FLAC stream, even when x<y. If a mapping breaks this forward compatibility the major version number will be incremented. +
+ +
+ + + + + + diff --git a/3rdparty/libflac/doc/html/ru/Makefile.am b/3rdparty/libflac/doc/html/ru/Makefile.am new file mode 100644 index 0000000..1eaaef2 --- /dev/null +++ b/3rdparty/libflac/doc/html/ru/Makefile.am @@ -0,0 +1,36 @@ +# FLAC - Free Lossless Audio Codec +# Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This file is part the FLAC project. FLAC is comprised of several +# components distributed under difference licenses. The codec libraries +# are distributed under Xiph.Org's BSD-like license (see the file +# COPYING.Xiph in this distribution). All other programs, libraries, and +# plugins are distributed under the GPL (see COPYING.GPL). The documentation +# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the +# FLAC distribution contains at the top the terms under which it may be +# distributed. +# +# Since this particular file is relevant to all components of FLAC, +# it may be distributed under the Xiph.Org license, which is the least +# restrictive of those mentioned above. See the file COPYING.Xiph in this +# distribution. + +AUTOMAKE_OPTIONS = foreign + +docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)/html/ru + +doc_DATA = \ + authors.html \ + comparison.html \ + developers.html \ + documentation.html \ + download.html \ + features.html \ + format.html \ + goals.html \ + id.html \ + index.html \ + links.html \ + news.html + +EXTRA_DIST = $(doc_DATA) diff --git a/3rdparty/libflac/doc/html/ru/Makefile.in b/3rdparty/libflac/doc/html/ru/Makefile.in new file mode 100644 index 0000000..fcca596 --- /dev/null +++ b/3rdparty/libflac/doc/html/ru/Makefile.in @@ -0,0 +1,411 @@ +# Makefile.in generated by automake 1.7.9 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# FLAC - Free Lossless Audio Codec +# Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This file is part the FLAC project. FLAC is comprised of several +# components distributed under difference licenses. The codec libraries +# are distributed under Xiph.Org's BSD-like license (see the file +# COPYING.Xiph in this distribution). All other programs, libraries, and +# plugins are distributed under the GPL (see COPYING.GPL). The documentation +# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the +# FLAC distribution contains at the top the terms under which it may be +# distributed. +# +# Since this particular file is relevant to all components of FLAC, +# it may be distributed under the Xiph.Org license, which is the least +# restrictive of those mentioned above. See the file COPYING.Xiph in this +# distribution. + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../../.. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_FALSE = @DEBUG_FALSE@ +DEBUG_TRUE = @DEBUG_TRUE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@ +DOXYGEN = @DOXYGEN@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FLAC__TEST_LEVEL = @FLAC__TEST_LEVEL@ +FLAC__TEST_WITH_VALGRIND = @FLAC__TEST_WITH_VALGRIND@ +FLaC__CPU_IA32_FALSE = @FLaC__CPU_IA32_FALSE@ +FLaC__CPU_IA32_TRUE = @FLaC__CPU_IA32_TRUE@ +FLaC__CPU_PPC_FALSE = @FLaC__CPU_PPC_FALSE@ +FLaC__CPU_PPC_TRUE = @FLaC__CPU_PPC_TRUE@ +FLaC__CPU_SPARC_FALSE = @FLaC__CPU_SPARC_FALSE@ +FLaC__CPU_SPARC_TRUE = @FLaC__CPU_SPARC_TRUE@ +FLaC__HAS_AS_FALSE = @FLaC__HAS_AS_FALSE@ +FLaC__HAS_AS_TRUE = @FLaC__HAS_AS_TRUE@ +FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@ +FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@ +FLaC__HAS_DOCBOOK_TO_MAN_FALSE = @FLaC__HAS_DOCBOOK_TO_MAN_FALSE@ +FLaC__HAS_DOCBOOK_TO_MAN_TRUE = @FLaC__HAS_DOCBOOK_TO_MAN_TRUE@ +FLaC__HAS_DOXYGEN_FALSE = @FLaC__HAS_DOXYGEN_FALSE@ +FLaC__HAS_DOXYGEN_TRUE = @FLaC__HAS_DOXYGEN_TRUE@ +FLaC__HAS_GAS_FALSE = @FLaC__HAS_GAS_FALSE@ +FLaC__HAS_GAS_TRUE = @FLaC__HAS_GAS_TRUE@ +FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@ +FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@ +FLaC__HAS_NASM_FALSE = @FLaC__HAS_NASM_FALSE@ +FLaC__HAS_NASM_TRUE = @FLaC__HAS_NASM_TRUE@ +FLaC__HAS_OGG_FALSE = @FLaC__HAS_OGG_FALSE@ +FLaC__HAS_OGG_TRUE = @FLaC__HAS_OGG_TRUE@ +FLaC__HAS_XMMS_FALSE = @FLaC__HAS_XMMS_FALSE@ +FLaC__HAS_XMMS_TRUE = @FLaC__HAS_XMMS_TRUE@ +FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE@ +FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE@ +FLaC__NO_ASM_FALSE = @FLaC__NO_ASM_FALSE@ +FLaC__NO_ASM_TRUE = @FLaC__NO_ASM_TRUE@ +FLaC__SSE_OS_FALSE = @FLaC__SSE_OS_FALSE@ +FLaC__SSE_OS_TRUE = @FLaC__SSE_OS_TRUE@ +FLaC__SYS_DARWIN_FALSE = @FLaC__SYS_DARWIN_FALSE@ +FLaC__SYS_DARWIN_TRUE = @FLaC__SYS_DARWIN_TRUE@ +FLaC__SYS_LINUX_FALSE = @FLaC__SYS_LINUX_FALSE@ +FLaC__SYS_LINUX_TRUE = @FLaC__SYS_LINUX_TRUE@ +FLaC__USE_3DNOW_FALSE = @FLaC__USE_3DNOW_FALSE@ +FLaC__USE_3DNOW_TRUE = @FLaC__USE_3DNOW_TRUE@ +FLaC__USE_ALTIVEC_FALSE = @FLaC__USE_ALTIVEC_FALSE@ +FLaC__USE_ALTIVEC_TRUE = @FLaC__USE_ALTIVEC_TRUE@ +FLaC__WITH_CPPLIBS_FALSE = @FLaC__WITH_CPPLIBS_FALSE@ +FLaC__WITH_CPPLIBS_TRUE = @FLaC__WITH_CPPLIBS_TRUE@ +GAS = @GAS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +MINGW_WINSOCK_LIBS = @MINGW_WINSOCK_LIBS@ +NASM = @NASM@ +OBJEXT = @OBJEXT@ +OBJ_FORMAT = @OBJ_FORMAT@ +OGG_CFLAGS = @OGG_CFLAGS@ +OGG_LIBS = @OGG_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XMMS_CFLAGS = @XMMS_CFLAGS@ +XMMS_CONFIG = @XMMS_CONFIG@ +XMMS_DATA_DIR = @XMMS_DATA_DIR@ +XMMS_EFFECT_PLUGIN_DIR = @XMMS_EFFECT_PLUGIN_DIR@ +XMMS_GENERAL_PLUGIN_DIR = @XMMS_GENERAL_PLUGIN_DIR@ +XMMS_INPUT_PLUGIN_DIR = @XMMS_INPUT_PLUGIN_DIR@ +XMMS_LIBS = @XMMS_LIBS@ +XMMS_OUTPUT_PLUGIN_DIR = @XMMS_OUTPUT_PLUGIN_DIR@ +XMMS_PLUGIN_DIR = @XMMS_PLUGIN_DIR@ +XMMS_VERSION = @XMMS_VERSION@ +XMMS_VISUALIZATION_PLUGIN_DIR = @XMMS_VISUALIZATION_PLUGIN_DIR@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +AUTOMAKE_OPTIONS = foreign + +docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)/html/ru + +doc_DATA = \ + authors.html \ + comparison.html \ + developers.html \ + documentation.html \ + download.html \ + features.html \ + format.html \ + goals.html \ + id.html \ + index.html \ + links.html \ + news.html + + +EXTRA_DIST = $(doc_DATA) +subdir = doc/html/ru +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DATA = $(doc_DATA) + +DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/html/ru/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +docDATA_INSTALL = $(INSTALL_DATA) +install-docDATA: $(doc_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(docdir) + @list='$(doc_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f"; \ + $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f; \ + done + +uninstall-docDATA: + @$(NORMAL_UNINSTALL) + @list='$(doc_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(docdir)/$$f"; \ + rm -f $(DESTDIR)$(docdir)/$$f; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(docdir) +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-docDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-docDATA uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-docDATA install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-docDATA uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/3rdparty/libflac/doc/html/ru/authors.html b/3rdparty/libflac/doc/html/ru/authors.html new file mode 100644 index 0000000..43835f4 --- /dev/null +++ b/3rdparty/libflac/doc/html/ru/authors.html @@ -0,0 +1,112 @@ + + + + + + + + + + +FLAC: àâòîðû + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|íà÷àëî |íîâîñòè |ôàéëû |õàðàêòåðèñòèêè |öåëè |ôîðìàò |
|id |ñðàâíåíèå |ðàçðàáîòêà |äîêóìåíòàöèÿ |ññûëêè | + àâòîðû |
+ +

+ + + + + +
|english | + ðóññêèé |

+ + +

FLAC: àâòîðû

+ +

FLAC (http://flac.sourceforge.net/) - ñâîáîäíûé àóäèî êîäåê, ñæèìàþùèé áåç ïîòåðü, ðàçðàáîòàííûé Äæîøåì Êîëñîíîì (Josh Coalson).

+ +

Äðóãèå ó÷àñòíèêè ïðîåêòà:

+ +
+ +

Ìèðîñëàâ Ëè÷âàð (Miroslav Lichvar) +

+
  • Íåñêîëüêî âåðñèé ïðîöåäóð èç áèáëèîòåêè libFLAC íà àññåìáëåðå äëÿ àðõèòåêòóðû IA-32.
  • +

    + +

    Ìýò Öèììåðìàíí (Matt Zimmerman) +

    +
  • Ñèñòåìà ñáîðêè libtool/autoconf/automake.
  • +

    + +

    Àíäðåé Àñòàôüåâ (Andrey Astafiev) +

    +
  • Ïåðåâîä äîêóìåíòàöèè íà ðóññêèé ÿçûê.
  • +

    + +

    Áðýäè Ïàòòåðñîí (Brady Patterson) +

    +
  • Ïîääåðæêà ôîðìàòà AIFF.
  • +

    + +

    Äàéñóêå Øèìàìóðà (Daisuke Shimamura) +

    +
  • Ïîääåðæêà id3 v1/v2 è i18n â ïëàãèíå XMMS.
  • +

    + +

    X-Fixer

    +
    +
  • Ñèñòåìà íàñòðîéêè, ðåäàêòèðîâàíèå òåãîâ è èíôîðìàöèÿ î ôàéëå â ïëàãèíå äëÿ Winamp2.

    +
  • +
    + +

     Copyright (c) 2000,2001,2002,2003,2004,2005,2006,2007 Josh Coalson

    + + + diff --git a/3rdparty/libflac/doc/html/ru/comparison.html b/3rdparty/libflac/doc/html/ru/comparison.html new file mode 100644 index 0000000..c8d1abe --- /dev/null +++ b/3rdparty/libflac/doc/html/ru/comparison.html @@ -0,0 +1,864 @@ + + + + + + + + + + +FLAC: ñðàâíåíèå + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    |íà÷àëî |íîâîñòè |ôàéëû |õàðàêòåðèñòèêè |öåëè |ôîðìàò |
    |id | + ñðàâíåíèå |ðàçðàáîòêà |äîêóìåíòàöèÿ |ññûëêè |àâòîðû |
    + +

    + + + + + +
    |english | + ðóññêèé |

    + + +

    FLAC: ñðàâíåíèå

    + +

    Öåëüþ ýòîé ñòðàíèöû ÿâëÿåòñÿ ñðàâíåíèå FLAC ñ äðóãèìè àíàëîãè÷íûìè êîäåêàìè. Èññëåäîâàíèå çàòðàãèâàåò íå òîëüêî óðîâåíü è âðåìÿ êîäèðîâàíèÿ/äåêîäèðîâàíèÿ, íî è äðóãèå âàæíûå äëÿ ïîëüçîâàòåëÿ âîçìîæíîñòè êîäåêîâ. Âûáèðàÿ äëÿ ñåáÿ êîäåê, ïîìíèòå î ñëåäóþùåì:

    + +

    +
  • Íàñêîëüêî ÿ çíàþ, òîëüêî äâà êîäåêà (FLAC è WavPack) ïîëíîñòüþ ñâîáîäíû è àêòèâíî ïîääåðæèâàþòñÿ (èñõîäíûå òåêñòû Shorten è Monket's Audio äîñòóïíû, íî ëèöåíçèÿ áîëåå îãðàíè÷åíà). Áîëüøèíñòâî ïðåäîñòàâëÿþò áåñïëàòíûå ñêîìïèëèðîâàííûå ïðîãðàììû áåç äîñòóïà ê èñõîäíûì êîäàì, ñëåäîâàòåëüíî, âûáèðàÿ èõ, âû ïîïàäàåòå â çàâèñèìîñòü îò ïðîèçâîäèòåëÿ. Ó âàñ óæå íå áóäåò øàíñà ïîðòèðîâàòü ïðîãðàììó íà äðóãóþ îïåðàöèîííóþ ñèñòåìó èëè èñïðàâèòü îøèáêó, åñëè îíà ïîÿâèòñÿ è ýòîãî íå çàõî÷åò ñäåëàòü àâòîð. Ýòî ìîæåò îêàçàòüñÿ ñåðüåçíûì íåäîñòàòêîì, åñëè ôîðìàò íå ÿâëÿåòñÿ âñåìèðíî ïðèçíàíûì.
  • + +
  • Óðîâåíü è âðåìÿ ñæàòèÿ äëÿ flac õàðàêòåðèçóþò òîëüêî êîíêðåòíóþ âåðñèþ êîäåðà. Îíè íå âûÿâëÿþò ïðåäåëà äëÿ âñåõ êîäåðîâ è ôîðìàòà FLAC, òàê êàê ôîðìàò îòêðûòûé è ðàñøèðÿåìûé è êàæäûé ìîæåò íàïèñàòü óëó÷øåííóþ âåðñèþ. Ìîæíî ñ áîëüøîé äîëåé óâåðåííîñòè ñêàçàòü, ÷òî êîäåê áóäåò óëó÷øàòüñÿ.
  • + +
  • Ïîääåðæêà ïîòîêîâîãî ôîðìàòà ó FLAC äàåò åìó äîïîëíèòåëüíîå ïðåèìóùåñòâî íàä òåìè êîäåêàìè, êîòîðûå òàêîé âîçìîæíîñòè íå èìåþò.
  • +

    + +

    ß ïîñòàðàþñü îáíîâëÿòü èíôîðìàöèþ íà ýòîé ñòðàíèöå êàê ìîæíî ÷àùå, îäíàêî, åñëè âû çàìåòèòå êàêóþ-ëèáî íåòî÷íîñòü, ñîîáùèòå ìíå è ÿ èñïðàâëþ åå.

    + +

    Ðàññìàòðèâàåìûå êîäåðû (êðîìå flac):

    + +

    +
  • Bonk - îòêðûòûé êîäåê. Íåò îòäåëüíîé áèáëèîòåêè è ïîääåðæêè ïëåéåðà.
  • + +
  • Kexis - îòêðûòûé êîäåê. Ïîõîæå, ÷òî ïðîåêò ïðåêðàòèëñÿ íà íà÷àëüíîé ñòàäèè ðàçðàáîòêè. Íåò ïîääåðæêè ïëåéåðà.
  • + +
  • La - çàêðûòûé ñèììåòðè÷åñêèé, àäàïòèâíûé êîäåê. Ïðåäîñòàâëÿþòñÿ ñêîìïèëèðîâàííûå âåðñèè äëÿ Windows è Linux. Äàåò ìàêñèìàëüíûé óðîâåíü ñæàòèÿ, íî ðàáîòàåò î÷åíü ìåäëåííî.
  • + +
  • LPAC - ïîñòàâëÿåòñÿ òîëüêî ñêîìïèëèðîâàííûì. Äîñòóïíû âåðñèè íå òîëüêî äëÿ Windows, õîòÿ ïëàãèí åñòü òîëüêî äëÿ Winamp.
  • + +
  • Monkey's Audio - ñèììåòðè÷åñêèé, àäàïòèâíûé êîäåê ñ õîðîøèì óðîâíåì ñæàòèÿ. Èñõîäíûå òåêñòû äîñòóïíû ïî îãðàíè÷åííîé ëèöåçèè. Äîñòóïíû äâå âåðñèè: îò ñîçäàòåëÿ ïðîåêòà Ìýòòà Îøëåíäà è îò Ôðàíêà Êëåììà.  òåñòàõ èñïîëüçîâàëàñü îðèãèíàëüíàÿ âåðñèÿ.
  • + +
  • Ogg Squish - îòêðûòûé êîäåê, íî áîëåå íåïîääåðæèâàåìûé. Òåñòèðóåìàÿ âåðñèÿ 0.98 áûëà ïîñëåäíåé, êîòîðóþ ìîæíî íàéòè. Âåðñèè äëÿ Windows íå áûëî, íî ñóäÿ ïî ðåçóëüòàòàì, ïîëó÷åííûì ïîä Unix, ýòî "áûñòðûé" êîäåê.
  • + +
  • optimFROG - çàêðûòûé êîäåê äëÿ Windows è Linux ñ ïëàãèíàìè äëÿ Winamp è XMMS. Ìåäëåííûé, íî èìååò âûñîêèé óðîâåíü ñæàòèÿ.
  • + +
  • Pegasus-SPS - çàêðûòûé êîäåê òîëüêî äëÿ Windows.
  • + +
  • RKAU - çàêðûòûé êîäåê òîëüêî äëÿ Windows. Íå îáíîâëÿëñÿ â òå÷åíèå 2 ëåò.
  • + +
  • Shorten - íàèáîëåå ðàñïðîñòðàíåííûé êîäåê ñ äîñòóïíûìè èñõîäíûìè òåêñòàìè.
  • + +
  • WaveZIP - çàêðûòûé àðõèâàòîð òîëüêî äëÿ Windows. Èñïîëüçóåò äâèæîê MUSICompress[tm], êîòîðûé, ïðåäïîëîæèòåëüíî, çàïàòåíòîâàí. ß õîòåë ñäåëàòü ññûëêó íà êîìïàíèþ, íàïèñàâøóþ WaveZIP (GadgetLabs), íî îíè çàâåðøèëè ñâîþ äåÿòåëüíîñòü (ìîæåò, ïîòîìó ÷òî ïûòàëèñü ïðîäàòü òî, íå äîëæíî íè÷åãî ñòîèòü).
  • + +
  • WavPack - îòêðûòûé êîäåê òîëüêî äëÿ Windows, âûïóùåííûé ïîä ëèöåíçèåé BSD. Èìååò õîðîøåå ñîîòíîøåíèå ìåæäó óðîâíåì è âðåìåíåì ñæàòèÿ.
  • +

    + +

    ß íå ñìîã äîñòàòü êîïèè êîäåêîâ AudioPack è WavARC.

    + +

    Åñëè íå ïðèíèìàòü âî âíèìàíèå óðîâåíü è ñêîðîñòü ñæàòèÿ (êàê âû óâèäèòå ïîçæå, áîëüøèíñòâî êîäåêîâ èìåþò ñõîäíóþ ïðîèçâîäèòåëüíîñòü), òî ñóáúåêòèâíàÿ êàðòèíà, îñíîâàííàÿ íà áàçîâûõ âîçìîæíîñòÿõ áóäåò âûãëÿäåòü ñëåäóþùèì îáðàçîì. Îñíîâíîå ïðåèìóùåñòâî èìåþò ñâîáîäíûå êîäåêè, òàê êàê ýòî ïðåäîñòàâëÿåò Âàì âîçìîæíîñòü äîáàâëÿòü âñå, ÷òî íåîáõîäèìî. Êðîìå òîãî, ïðîåêòû ñ îòêðûòûìè èñõîäíèêàìè îáû÷íî ðàçâèâàþòñÿ è óëó÷øàþòñÿ áûñòðåå. Âòîðîé âàæíûé äëÿ ïîëüçîâàòåëÿ ôàêòîð - ýòî ïîääåðæêà ðàçíûõ îïåðàöèîííûõ ñèñòåì è/èëè âîçìîæíîñòü èñïîëüçîâàíèÿ ïëàãèíîâ äëÿ ïëåéåðîâ.

    + +

    Òàáëèöà 1. Ñðàâíåíèå âîçìîæíîñòåé êîäåêîâ.

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +Êîäåê +Äîñòóïíû òåêñòû? +Äîñòóïíû ïëàãèíû? +Àïïàðàòíàÿ ïîääåðæêà? +Ïîòî÷íîñòü? +Ïîèñê? +Öåíà +Ïîääåðæêà ÎÑ
    flac v1.1.0äà (OSI)äà (XMMS, AlsaPlayer, Winamp, MacAmp Lite, dBpowerAMP, Foobar2000, Apollo)äà (PhatBox, Kenwood MusicKeg, Rio Receiver, Dell Digital Audio Receiver, Turtle Beach AudioTron)äàäàñâîá.Linux, Windows, Mac OS X, *BSD, Solaris, OS/2, BeOS è äðóãèå
    Shorten v3.2äà (îãðàíè÷.)äà (Winamp, XMMS)íåòíåòäà (òîëüêî v3)ñâîá.Linux, Windows, Mac OS 9, Mac OS X, *BSD, Solaris è äðóãèå
    WavPack v3.97aäàäà (Winamp)íåòíåòäàñâîá.Windows
    Monkey's Audio v3.96äà (îãðàíè÷.)äà (Winamp, MediaJukebox, dBpowerAMP)íåòíåòäàáåñïë.Windows, Linux
    Ogg Squish 0.98äàíåò?íåòäàäàñâîá.Linux, Windows, äðóãèå UNIX
    Bonk 0.5äàäà (XMMS)íåòíåòíåòñâîá.Linux, Windows, äðóãèå UNIX
    La 0.3cíåòäà (Winamp, XMMS)íåòíåòäàáåñïë.Windows, Linux
    optimFrog 4.21íåòäà (Winamp, XMMS)íåòíåòäàáåñïë.Windows, Linux
    LPAC v1.31 (codec 3.0)íåòäà (Winamp)íåòíåò?äàáåñïë.Windows, Linux, Solaris
    RKAU v1.07íåòäà (Winamp)íåòíåòäàáåñïë.Windows
    Kexis 0.2.2äàíåòíåòíåòíåòñâîá.Linux, Windows, äðóãèå UNIX
    WaveZIP v2íåòíåòíåòíåòíåòáåñïë. (24-áèò çà $)Windows
    Pegasus-SPSíåòíåòíåòíåòíåò$39 (trial)Windows

    + +

    Äëÿ òåñòèðîâàíèÿ èñïîëüçîâàëñÿ PII-333 ñ 256Má è ÎÑ Windows NT SP5. Ê ñîæàëåíèþ, èìåííî Windows ÿâëåòñÿ åäèíñòâåííîé îïåðàöèîííîé ñèñòåìîé, ïîä êîòîðîé ìîãóò ðàáîòàòü âñå êîäåêè è ãäå ìîæíî äîáèòüñÿ ðàâíûõ óñëîâèé ðàáîòû.

    + +

    Âõîäíûìè äàííûìè ÿâëÿþòñÿ òîëüêî ôàéëû, çàïèñàííûå ñ àóäèî-CD.  áóäóùåì ìîãóò ïîÿâèòüñÿ òåñòû äëÿ äðóãèõ âèäîâ èíôîðìàöèè (íàïðèìåð, ðå÷ü, äðóãèå ÷àñòîòû äèñêðåòèçàöèè è ò.ä.). Ïðåäñòàâëåíû 14 òðåêîâ ðàçëè÷íûõ ñòèëåé.

    + +

     ïåðâîé òàáëèöå ïðèâåäåíû îáùèå ðåçóëüòàòû ïî âñåì òðåêàì.  îñòàëüíûõ òàáëèöàõ ïðèâåäåíû ðåçóëüòàòû äëÿ êàæäîãî òðåêà.  îáùåé òàáëèöå ïðèâåäåíî áîëüøîå êîëè÷åñòâî ðåæèìîâ, à íà îñòàëüûõ ëèøü ñàìûå èíòåðåñíûå

    + +

     îáùåé òàáëèöå ðåçóëüòàòû îòñîðòèðîâàíû ïî óðîâíþ ñæàòèÿ, êîòîðîå âû÷èñëÿåòñÿ êàê ñðåäíåå èç óðîâíåé äëÿ âñåõ òðåêîâ, ÷òîáû äëèííûå òðåêè íå èìåëè áîëüøåãî âåñà ïðè òåñòèðîâàíèè.  òàáëèöàõ äëÿ îòäåëüíûõ òðåêîâ ïðèâåäåí óðîâåíü ñæàòèÿ ( = ðàçìåð ñæàòîãî ôàéëà / ðàçìåð íåñæàòîãî ôàéëà).

    + +

    Íåîáõîäèìî ñäåëàòü íåñêîëüêî çàìå÷àíèé:

    +