From 1c299d5a5c493986ca4a19bd55a69281dabada86 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 17 Sep 2008 08:44:51 +0000 Subject: merge Sakari's (sbergen) branch back into 3.0, removing libsndfile and adding taglib git-svn-id: svn://localhost/ardour2/branches/3.0@3736 d708f5d6-7413-0410-9779-e7cbd77b26cf --- SConstruct | 24 +- gtk2_ardour/SConscript | 12 +- gtk2_ardour/about.cc | 4 +- gtk2_ardour/ardour.menus | 8 +- gtk2_ardour/ardour_dialog.cc | 15 +- gtk2_ardour/ardour_dialog.h | 3 + gtk2_ardour/ardour_ui.cc | 19 + gtk2_ardour/ardour_ui.h | 3 + gtk2_ardour/ardour_ui_ed.cc | 11 +- gtk2_ardour/editor.cc | 4 +- gtk2_ardour/editor.h | 19 +- gtk2_ardour/editor_actions.cc | 4 +- gtk2_ardour/editor_export_audio.cc | 96 +- gtk2_ardour/editor_markers.cc | 22 +- gtk2_ardour/location_ui.cc | 1 - gtk2_ardour/main.cc | 4 +- gtk2_ardour/public_editor.h | 16 +- libs/ardour/SConscript | 18 + libs/ardour/ardour/audioregion.h | 3 +- libs/ardour/ardour/midi_region.h | 3 +- libs/ardour/ardour/session.h | 40 +- libs/ardour/ardour/types.h | 5 + libs/ardour/audioregion.cc | 120 +- libs/ardour/enums.cc | 106 + libs/ardour/session.cc | 4 +- libs/ardour/session_export.cc | 644 +- libs/ardour/session_state.cc | 22 +- libs/ardour/session_time.cc | 2 +- libs/libsndfile/AUTHORS | 14 - libs/libsndfile/ChangeLog | 6107 ----- libs/libsndfile/Mingw-make-dist.sh | 113 - libs/libsndfile/NEWS | 126 - libs/libsndfile/README | 71 - libs/libsndfile/SConscript | 56 - libs/libsndfile/acinclude.m4 | 579 - libs/libsndfile/aclocal.m4 | 72 - libs/libsndfile/compile | 107 - libs/libsndfile/config.guess | 1497 -- libs/libsndfile/config.sub | 1608 -- libs/libsndfile/configure | 13933 ----------- libs/libsndfile/configure.ac | 541 - libs/libsndfile/depcomp | 479 - libs/libsndfile/install-sh | 294 - libs/libsndfile/libsndfile.spec.in | 69 - libs/libsndfile/missing | 336 - libs/libsndfile/mkinstalldirs | 111 - libs/libsndfile/sndfile.pc.in | 11 - libs/libsndfile/src/G72x/ChangeLog | 50 - libs/libsndfile/src/G72x/README | 0 libs/libsndfile/src/G72x/README.original | 94 - libs/libsndfile/src/G72x/g721.c | 162 - libs/libsndfile/src/G72x/g723_16.c | 169 - libs/libsndfile/src/G72x/g723_24.c | 146 - libs/libsndfile/src/G72x/g723_40.c | 160 - libs/libsndfile/src/G72x/g72x.c | 652 - libs/libsndfile/src/G72x/g72x.h | 99 - libs/libsndfile/src/G72x/g72x_priv.h | 118 - libs/libsndfile/src/G72x/g72x_test.c | 222 - libs/libsndfile/src/GSM610/COPYRIGHT | 16 - libs/libsndfile/src/GSM610/ChangeLog | 56 - libs/libsndfile/src/GSM610/README | 36 - libs/libsndfile/src/GSM610/add.c | 248 - libs/libsndfile/src/GSM610/code.c | 97 - libs/libsndfile/src/GSM610/config.h | 33 - libs/libsndfile/src/GSM610/decode.c | 67 - libs/libsndfile/src/GSM610/gsm.h | 58 - libs/libsndfile/src/GSM610/gsm610_priv.h | 308 - libs/libsndfile/src/GSM610/gsm_create.c | 44 - libs/libsndfile/src/GSM610/gsm_decode.c | 366 - libs/libsndfile/src/GSM610/gsm_destroy.c | 31 - libs/libsndfile/src/GSM610/gsm_encode.c | 456 - libs/libsndfile/src/GSM610/gsm_option.c | 74 - libs/libsndfile/src/GSM610/long_term.c | 951 - libs/libsndfile/src/GSM610/lpc.c | 341 - libs/libsndfile/src/GSM610/preprocess.c | 115 - libs/libsndfile/src/GSM610/rpe.c | 490 - libs/libsndfile/src/GSM610/short_term.c | 427 - libs/libsndfile/src/GSM610/table.c | 69 - libs/libsndfile/src/Symbols.darwin | 36 - libs/libsndfile/src/Symbols.linux | 42 - libs/libsndfile/src/aiff.c | 1482 -- libs/libsndfile/src/alaw.c | 544 - libs/libsndfile/src/au.c | 453 - libs/libsndfile/src/avr.c | 254 - libs/libsndfile/src/broadcast.c | 89 - libs/libsndfile/src/caf.c | 538 - libs/libsndfile/src/command.c | 367 - libs/libsndfile/src/common.c | 1290 - libs/libsndfile/src/common.h | 766 - libs/libsndfile/src/config.h.in | 247 - libs/libsndfile/src/cygsndfile.def | 39 - libs/libsndfile/src/dither.c | 535 - libs/libsndfile/src/double64.c | 1009 - libs/libsndfile/src/dwd.c | 210 - libs/libsndfile/src/dwvw.c | 671 - libs/libsndfile/src/file_io.c | 1537 -- libs/libsndfile/src/flac.c | 1345 - libs/libsndfile/src/float32.c | 961 - libs/libsndfile/src/float_cast.h | 262 - libs/libsndfile/src/g72x.c | 615 - libs/libsndfile/src/gsm610.c | 628 - libs/libsndfile/src/htk.c | 225 - libs/libsndfile/src/ima_adpcm.c | 976 - libs/libsndfile/src/interleave.c | 306 - libs/libsndfile/src/ircam.c | 331 - libs/libsndfile/src/libsndfile.def | 39 - libs/libsndfile/src/macbinary3.c | 58 - libs/libsndfile/src/macos.c | 63 - libs/libsndfile/src/mat4.c | 394 - libs/libsndfile/src/mat5.c | 507 - libs/libsndfile/src/ms_adpcm.c | 834 - libs/libsndfile/src/nist.c | 367 - libs/libsndfile/src/ogg.c | 44 - libs/libsndfile/src/paf.c | 843 - libs/libsndfile/src/pcm.c | 2899 --- libs/libsndfile/src/pvf.c | 199 - libs/libsndfile/src/raw.c | 111 - libs/libsndfile/src/rx2.c | 326 - libs/libsndfile/src/sd2.c | 613 - libs/libsndfile/src/sds.c | 993 - libs/libsndfile/src/sf_unistd.h | 67 - libs/libsndfile/src/sfconfig.h | 108 - libs/libsndfile/src/sfendian.h | 256 - libs/libsndfile/src/sndfile.c | 2709 --- libs/libsndfile/src/sndfile.h.in | 554 - libs/libsndfile/src/stamp-h1 | 1 - libs/libsndfile/src/strings.c | 204 - libs/libsndfile/src/svx.c | 410 - libs/libsndfile/src/txw.c | 379 - libs/libsndfile/src/ulaw.c | 1047 - libs/libsndfile/src/voc.c | 878 - libs/libsndfile/src/vox_adpcm.c | 537 - libs/libsndfile/src/w64.c | 578 - libs/libsndfile/src/wav.c | 1632 -- libs/libsndfile/src/wav_w64.c | 494 - libs/libsndfile/src/wav_w64.h | 283 - libs/libsndfile/src/wve.c | 125 - libs/libsndfile/src/xi.c | 1204 - libs/midi++2/jack_midiport.cc | 6 +- libs/taglib/AUTHORS | 11 + libs/taglib/CMakeLists.txt | 56 + libs/taglib/COPYING.LGPL | 481 + libs/taglib/COPYING.MPL | 470 + libs/taglib/ConfigureChecks.cmake | 28 + libs/taglib/INSTALL | 167 + libs/taglib/Makefile.am | 54 + libs/taglib/Makefile.cvs | 14 + libs/taglib/Makefile.in | 862 + libs/taglib/SConscript | 146 + libs/taglib/acinclude.m4 | 11888 +++++++++ libs/taglib/aclocal.m4 | 875 + libs/taglib/admin/Doxyfile.am | 102 + libs/taglib/admin/Doxyfile.global | 192 + libs/taglib/admin/Makefile.common | 37 + libs/taglib/admin/acinclude.m4.in | 5997 +++++ libs/taglib/admin/am_edit | 2445 ++ libs/taglib/admin/bcheck.pl | 157 + libs/taglib/admin/compile | 142 + libs/taglib/admin/conf.change.pl | 191 + libs/taglib/admin/config.guess | 1464 ++ libs/taglib/admin/config.pl | 238 + libs/taglib/admin/config.sub | 1575 ++ libs/taglib/admin/configure.in.bot.end | 45 + libs/taglib/admin/configure.in.min | 57 + libs/taglib/admin/cvs.sh | 661 + libs/taglib/admin/debianrules | 43 + libs/taglib/admin/depcomp | 530 + libs/taglib/admin/deps.am | 19 + libs/taglib/admin/detect-autoconf.pl | 257 + libs/taglib/admin/doxygen.sh | 883 + libs/taglib/admin/install-sh | 401 + libs/taglib/admin/libtool.m4.in | 5891 +++++ libs/taglib/admin/ltmain.sh | 6389 +++++ libs/taglib/admin/missing | 353 + libs/taglib/admin/mkinstalldirs | 158 + libs/taglib/admin/nmcheck | 371 + libs/taglib/admin/oldinclude.m4.in | 192 + libs/taglib/admin/pkg.m4.in | 57 + libs/taglib/admin/ylwrap | 223 + libs/taglib/autom4te.cache/output.0 | 24266 ++++++++++++++++++ libs/taglib/autom4te.cache/output.1 | 24266 ++++++++++++++++++ libs/taglib/autom4te.cache/requests | 354 + libs/taglib/autom4te.cache/traces.0 | 15109 ++++++++++++ libs/taglib/autom4te.cache/traces.1 | 1756 ++ libs/taglib/bindings/CMakeLists.txt | 1 + libs/taglib/bindings/Makefile.am | 1 + libs/taglib/bindings/Makefile.in | 606 + libs/taglib/bindings/README | 6 + libs/taglib/bindings/c/CMakeLists.txt | 59 + libs/taglib/bindings/c/Makefile.am | 26 + libs/taglib/bindings/c/Makefile.in | 668 + libs/taglib/bindings/c/configure.in.in | 1 + libs/taglib/bindings/c/tag_c.cpp | 277 + libs/taglib/bindings/c/tag_c.h | 288 + libs/taglib/bindings/c/taglib_c.pc.cmake | 12 + libs/taglib/bindings/c/taglib_c.pc.in | 11 + libs/taglib/cmake/modules/FindCppUnit.cmake | 28 + libs/taglib/config-taglib.h.cmake | 9 + libs/taglib/config.h.in | 64 + libs/taglib/configure | 24271 +++++++++++++++++++ libs/taglib/configure.files | 3 + libs/taglib/configure.in | 220 + libs/taglib/configure.in.bot | 8 + libs/taglib/configure.in.in | 133 + libs/taglib/doc/README | 1 + libs/taglib/doc/api-footer.html | 4 + libs/taglib/doc/api-header.html | 41 + libs/taglib/doc/taglib-api.css | 395 + libs/taglib/doc/taglib.doxygen | 208 + libs/taglib/doc/taglib.png | Bin 0 -> 3451 bytes libs/taglib/examples/CMakeLists.txt | 78 + libs/taglib/examples/Makefile.am | 18 + libs/taglib/examples/Makefile.in | 677 + libs/taglib/examples/framelist.cpp | 106 + libs/taglib/examples/strip-id3v1.cpp | 40 + libs/taglib/examples/tagreader.cpp | 77 + libs/taglib/examples/tagreader_c.c | 77 + libs/taglib/examples/tagwriter.cpp | 139 + libs/taglib/stamp-h.in | 0 libs/taglib/subdirs | 4 + libs/taglib/taglib-config.cmake | 55 + libs/taglib/taglib-config.in | 55 + libs/taglib/taglib.pc.cmake | 11 + libs/taglib/taglib.pc.in | 11 + libs/taglib/taglib/CMakeLists.txt | 160 + libs/taglib/taglib/Makefile.am | 26 + libs/taglib/taglib/Makefile.in | 794 + libs/taglib/taglib/ape/CMakeLists.txt | 1 + libs/taglib/taglib/ape/Makefile.am | 11 + libs/taglib/taglib/ape/Makefile.in | 623 + libs/taglib/taglib/ape/ape-tag-format.txt | 170 + libs/taglib/taglib/ape/apefooter.cpp | 236 + libs/taglib/taglib/ape/apefooter.h | 173 + libs/taglib/taglib/ape/apeitem.cpp | 229 + libs/taglib/taglib/ape/apeitem.h | 204 + libs/taglib/taglib/ape/apetag.cpp | 266 + libs/taglib/taglib/ape/apetag.h | 162 + libs/taglib/taglib/audioproperties.cpp | 51 + libs/taglib/taglib/audioproperties.h | 110 + libs/taglib/taglib/fileref.cpp | 203 + libs/taglib/taglib/fileref.h | 262 + libs/taglib/taglib/flac/CMakeLists.txt | 1 + libs/taglib/taglib/flac/Makefile.am | 14 + libs/taglib/taglib/flac/Makefile.in | 625 + libs/taglib/taglib/flac/flacfile.cpp | 431 + libs/taglib/taglib/flac/flacfile.h | 201 + libs/taglib/taglib/flac/flacproperties.cpp | 150 + libs/taglib/taglib/flac/flacproperties.h | 92 + libs/taglib/taglib/mpc/CMakeLists.txt | 1 + libs/taglib/taglib/mpc/Makefile.am | 14 + libs/taglib/taglib/mpc/Makefile.in | 625 + libs/taglib/taglib/mpc/mpcfile.cpp | 325 + libs/taglib/taglib/mpc/mpcfile.h | 175 + libs/taglib/taglib/mpc/mpcproperties.cpp | 140 + libs/taglib/taglib/mpc/mpcproperties.h | 85 + libs/taglib/taglib/mpeg/CMakeLists.txt | 4 + libs/taglib/taglib/mpeg/Makefile.am | 17 + libs/taglib/taglib/mpeg/Makefile.in | 753 + libs/taglib/taglib/mpeg/id3v1/CMakeLists.txt | 1 + libs/taglib/taglib/mpeg/id3v1/Makefile.am | 12 + libs/taglib/taglib/mpeg/id3v1/Makefile.in | 623 + libs/taglib/taglib/mpeg/id3v1/id3v1genres.cpp | 219 + libs/taglib/taglib/mpeg/id3v1/id3v1genres.h | 66 + libs/taglib/taglib/mpeg/id3v1/id3v1tag.cpp | 248 + libs/taglib/taglib/mpeg/id3v1/id3v1tag.h | 180 + libs/taglib/taglib/mpeg/id3v2/CMakeLists.txt | 4 + libs/taglib/taglib/mpeg/id3v2/Makefile.am | 26 + libs/taglib/taglib/mpeg/id3v2/Makefile.in | 766 + .../taglib/taglib/mpeg/id3v2/frames/CMakeLists.txt | 11 + libs/taglib/taglib/mpeg/id3v2/frames/Makefile.am | 31 + libs/taglib/taglib/mpeg/id3v2/frames/Makefile.in | 656 + .../mpeg/id3v2/frames/attachedpictureframe.cpp | 170 + .../mpeg/id3v2/frames/attachedpictureframe.h | 220 + .../taglib/mpeg/id3v2/frames/commentsframe.cpp | 178 + .../taglib/mpeg/id3v2/frames/commentsframe.h | 168 + .../frames/generalencapsulatedobjectframe.cpp | 176 + .../id3v2/frames/generalencapsulatedobjectframe.h | 174 + .../mpeg/id3v2/frames/relativevolumeframe.cpp | 236 + .../taglib/mpeg/id3v2/frames/relativevolumeframe.h | 274 + .../mpeg/id3v2/frames/textidentificationframe.cpp | 271 + .../mpeg/id3v2/frames/textidentificationframe.h | 258 + .../id3v2/frames/uniquefileidentifierframe.cpp | 118 + .../mpeg/id3v2/frames/uniquefileidentifierframe.h | 113 + .../taglib/mpeg/id3v2/frames/unknownframe.cpp | 84 + .../taglib/taglib/mpeg/id3v2/frames/unknownframe.h | 79 + .../id3v2/frames/unsynchronizedlyricsframe.cpp | 162 + .../mpeg/id3v2/frames/unsynchronizedlyricsframe.h | 157 + .../taglib/mpeg/id3v2/frames/urllinkframe.cpp | 192 + .../taglib/taglib/mpeg/id3v2/frames/urllinkframe.h | 172 + libs/taglib/taglib/mpeg/id3v2/id3v2.2.0.txt | 1660 ++ libs/taglib/taglib/mpeg/id3v2/id3v2.3.0.txt | 2022 ++ libs/taglib/taglib/mpeg/id3v2/id3v2.4.0-frames.txt | 1734 ++ .../taglib/mpeg/id3v2/id3v2.4.0-structure.txt | 733 + .../taglib/mpeg/id3v2/id3v2extendedheader.cpp | 71 + .../taglib/taglib/mpeg/id3v2/id3v2extendedheader.h | 93 + libs/taglib/taglib/mpeg/id3v2/id3v2footer.cpp | 60 + libs/taglib/taglib/mpeg/id3v2/id3v2footer.h | 82 + libs/taglib/taglib/mpeg/id3v2/id3v2frame.cpp | 549 + libs/taglib/taglib/mpeg/id3v2/id3v2frame.h | 414 + .../taglib/taglib/mpeg/id3v2/id3v2framefactory.cpp | 407 + libs/taglib/taglib/mpeg/id3v2/id3v2framefactory.h | 167 + libs/taglib/taglib/mpeg/id3v2/id3v2header.cpp | 243 + libs/taglib/taglib/mpeg/id3v2/id3v2header.h | 175 + libs/taglib/taglib/mpeg/id3v2/id3v2synchdata.cpp | 63 + libs/taglib/taglib/mpeg/id3v2/id3v2synchdata.h | 70 + libs/taglib/taglib/mpeg/id3v2/id3v2tag.cpp | 474 + libs/taglib/taglib/mpeg/id3v2/id3v2tag.h | 300 + libs/taglib/taglib/mpeg/mpegfile.cpp | 593 + libs/taglib/taglib/mpeg/mpegfile.h | 277 + libs/taglib/taglib/mpeg/mpegheader.cpp | 276 + libs/taglib/taglib/mpeg/mpegheader.h | 166 + libs/taglib/taglib/mpeg/mpegproperties.cpp | 252 + libs/taglib/taglib/mpeg/mpegproperties.h | 118 + libs/taglib/taglib/mpeg/xingheader.cpp | 115 + libs/taglib/taglib/mpeg/xingheader.h | 100 + libs/taglib/taglib/ogg/CMakeLists.txt | 6 + libs/taglib/taglib/ogg/Makefile.am | 21 + libs/taglib/taglib/ogg/Makefile.in | 757 + libs/taglib/taglib/ogg/flac/CMakeLists.txt | 2 + libs/taglib/taglib/ogg/flac/Makefile.am | 13 + libs/taglib/taglib/ogg/flac/Makefile.in | 604 + libs/taglib/taglib/ogg/flac/oggflacfile.cpp | 269 + libs/taglib/taglib/ogg/flac/oggflacfile.h | 118 + libs/taglib/taglib/ogg/oggfile.cpp | 336 + libs/taglib/taglib/ogg/oggfile.h | 112 + libs/taglib/taglib/ogg/oggpage.cpp | 256 + libs/taglib/taglib/ogg/oggpage.h | 203 + libs/taglib/taglib/ogg/oggpageheader.cpp | 323 + libs/taglib/taglib/ogg/oggpageheader.h | 232 + libs/taglib/taglib/ogg/speex/CMakeLists.txt | 1 + libs/taglib/taglib/ogg/speex/Makefile.am | 12 + libs/taglib/taglib/ogg/speex/Makefile.in | 623 + libs/taglib/taglib/ogg/speex/speexfile.cpp | 112 + libs/taglib/taglib/ogg/speex/speexfile.h | 99 + libs/taglib/taglib/ogg/speex/speexproperties.cpp | 170 + libs/taglib/taglib/ogg/speex/speexproperties.h | 89 + libs/taglib/taglib/ogg/vorbis/CMakeLists.txt | 1 + libs/taglib/taglib/ogg/vorbis/Makefile.am | 12 + libs/taglib/taglib/ogg/vorbis/Makefile.in | 623 + libs/taglib/taglib/ogg/vorbis/vorbisfile.cpp | 117 + libs/taglib/taglib/ogg/vorbis/vorbisfile.h | 118 + libs/taglib/taglib/ogg/vorbis/vorbisproperties.cpp | 183 + libs/taglib/taglib/ogg/vorbis/vorbisproperties.h | 125 + libs/taglib/taglib/ogg/xiphcomment.cpp | 313 + libs/taglib/taglib/ogg/xiphcomment.h | 202 + libs/taglib/taglib/tag.cpp | 83 + libs/taglib/taglib/tag.h | 173 + libs/taglib/taglib/taglib.pro | 218 + libs/taglib/taglib/taglib_export.h | 39 + libs/taglib/taglib/tagunion.cpp | 185 + libs/taglib/taglib/tagunion.h | 95 + libs/taglib/taglib/toolkit/CMakeLists.txt | 1 + libs/taglib/taglib/toolkit/Makefile.am | 16 + libs/taglib/taglib/toolkit/Makefile.in | 635 + libs/taglib/taglib/toolkit/taglib.h | 177 + libs/taglib/taglib/toolkit/tbytevector.cpp | 677 + libs/taglib/taglib/toolkit/tbytevector.h | 409 + libs/taglib/taglib/toolkit/tbytevectorlist.cpp | 102 + libs/taglib/taglib/toolkit/tbytevectorlist.h | 91 + libs/taglib/taglib/toolkit/tdebug.cpp | 55 + libs/taglib/taglib/toolkit/tdebug.h | 71 + libs/taglib/taglib/toolkit/tfile.cpp | 564 + libs/taglib/taglib/toolkit/tfile.h | 271 + libs/taglib/taglib/toolkit/tlist.h | 252 + libs/taglib/taglib/toolkit/tlist.tcc | 316 + libs/taglib/taglib/toolkit/tmap.h | 200 + libs/taglib/taglib/toolkit/tmap.tcc | 196 + libs/taglib/taglib/toolkit/tstring.cpp | 786 + libs/taglib/taglib/toolkit/tstring.h | 456 + libs/taglib/taglib/toolkit/tstringlist.cpp | 123 + libs/taglib/taglib/toolkit/tstringlist.h | 115 + libs/taglib/taglib/toolkit/unicode.cpp | 303 + libs/taglib/taglib/toolkit/unicode.h | 149 + libs/taglib/taglib/trueaudio/CMakeLists.txt | 1 + libs/taglib/taglib/trueaudio/Makefile.am | 14 + libs/taglib/taglib/trueaudio/Makefile.in | 625 + libs/taglib/taglib/trueaudio/trueaudiofile.cpp | 274 + libs/taglib/taglib/trueaudio/trueaudiofile.h | 180 + .../taglib/trueaudio/trueaudioproperties.cpp | 136 + libs/taglib/taglib/trueaudio/trueaudioproperties.h | 93 + libs/taglib/taglib/wavpack/CMakeLists.txt | 1 + libs/taglib/taglib/wavpack/Makefile.am | 15 + libs/taglib/taglib/wavpack/Makefile.in | 626 + libs/taglib/taglib/wavpack/wavpackfile.cpp | 270 + libs/taglib/taglib/wavpack/wavpackfile.h | 164 + libs/taglib/taglib/wavpack/wavpackproperties.cpp | 143 + libs/taglib/taglib/wavpack/wavpackproperties.h | 94 + libs/taglib/tests/CMakeLists.txt | 35 + libs/taglib/tests/Makefile.am | 27 + libs/taglib/tests/Makefile.in | 699 + libs/taglib/tests/data/005411.id3 | Bin 0 -> 38402 bytes libs/taglib/tests/data/broken-tenc.id3 | Bin 0 -> 400 bytes libs/taglib/tests/data/click.mpc | Bin 0 -> 1588 bytes libs/taglib/tests/data/empty.ogg | Bin 0 -> 4328 bytes libs/taglib/tests/data/empty.spx | Bin 0 -> 24301 bytes libs/taglib/tests/data/empty.tta | Bin 0 -> 79538 bytes libs/taglib/tests/data/mpeg2.mp3 | Bin 0 -> 16384 bytes libs/taglib/tests/data/no-tags.flac | Bin 0 -> 4692 bytes libs/taglib/tests/data/unsynch.id3 | Bin 0 -> 320 bytes libs/taglib/tests/data/xing.mp3 | Bin 0 -> 8208 bytes libs/taglib/tests/main.cpp | 46 + libs/taglib/tests/test_bytevector.cpp | 178 + libs/taglib/tests/test_fileref.cpp | 101 + libs/taglib/tests/test_id3v1.cpp | 25 + libs/taglib/tests/test_id3v2.cpp | 265 + libs/taglib/tests/test_list.cpp | 58 + libs/taglib/tests/test_map.cpp | 27 + libs/taglib/tests/test_mpeg.cpp | 25 + libs/taglib/tests/test_string.cpp | 135 + libs/taglib/tests/test_synchdata.cpp | 88 + libs/taglib/tests/test_trueaudio.cpp | 26 + libs/taglib/tests/utils.h | 25 + 412 files changed, 180846 insertions(+), 68546 deletions(-) delete mode 100644 libs/libsndfile/AUTHORS delete mode 100644 libs/libsndfile/ChangeLog delete mode 100755 libs/libsndfile/Mingw-make-dist.sh delete mode 100644 libs/libsndfile/NEWS delete mode 100644 libs/libsndfile/README delete mode 100644 libs/libsndfile/SConscript delete mode 100644 libs/libsndfile/acinclude.m4 delete mode 100644 libs/libsndfile/aclocal.m4 delete mode 100755 libs/libsndfile/compile delete mode 100755 libs/libsndfile/config.guess delete mode 100755 libs/libsndfile/config.sub delete mode 100755 libs/libsndfile/configure delete mode 100644 libs/libsndfile/configure.ac delete mode 100755 libs/libsndfile/depcomp delete mode 100755 libs/libsndfile/install-sh delete mode 100644 libs/libsndfile/libsndfile.spec.in delete mode 100755 libs/libsndfile/missing delete mode 100755 libs/libsndfile/mkinstalldirs delete mode 100644 libs/libsndfile/sndfile.pc.in delete mode 100644 libs/libsndfile/src/G72x/ChangeLog delete mode 100644 libs/libsndfile/src/G72x/README delete mode 100644 libs/libsndfile/src/G72x/README.original delete mode 100644 libs/libsndfile/src/G72x/g721.c delete mode 100644 libs/libsndfile/src/G72x/g723_16.c delete mode 100644 libs/libsndfile/src/G72x/g723_24.c delete mode 100644 libs/libsndfile/src/G72x/g723_40.c delete mode 100644 libs/libsndfile/src/G72x/g72x.c delete mode 100644 libs/libsndfile/src/G72x/g72x.h delete mode 100644 libs/libsndfile/src/G72x/g72x_priv.h delete mode 100644 libs/libsndfile/src/G72x/g72x_test.c delete mode 100644 libs/libsndfile/src/GSM610/COPYRIGHT delete mode 100644 libs/libsndfile/src/GSM610/ChangeLog delete mode 100644 libs/libsndfile/src/GSM610/README delete mode 100644 libs/libsndfile/src/GSM610/add.c delete mode 100644 libs/libsndfile/src/GSM610/code.c delete mode 100644 libs/libsndfile/src/GSM610/config.h delete mode 100644 libs/libsndfile/src/GSM610/decode.c delete mode 100644 libs/libsndfile/src/GSM610/gsm.h delete mode 100644 libs/libsndfile/src/GSM610/gsm610_priv.h delete mode 100644 libs/libsndfile/src/GSM610/gsm_create.c delete mode 100644 libs/libsndfile/src/GSM610/gsm_decode.c delete mode 100644 libs/libsndfile/src/GSM610/gsm_destroy.c delete mode 100644 libs/libsndfile/src/GSM610/gsm_encode.c delete mode 100644 libs/libsndfile/src/GSM610/gsm_option.c delete mode 100644 libs/libsndfile/src/GSM610/long_term.c delete mode 100644 libs/libsndfile/src/GSM610/lpc.c delete mode 100644 libs/libsndfile/src/GSM610/preprocess.c delete mode 100644 libs/libsndfile/src/GSM610/rpe.c delete mode 100644 libs/libsndfile/src/GSM610/short_term.c delete mode 100644 libs/libsndfile/src/GSM610/table.c delete mode 100644 libs/libsndfile/src/Symbols.darwin delete mode 100644 libs/libsndfile/src/Symbols.linux delete mode 100644 libs/libsndfile/src/aiff.c delete mode 100644 libs/libsndfile/src/alaw.c delete mode 100644 libs/libsndfile/src/au.c delete mode 100644 libs/libsndfile/src/avr.c delete mode 100644 libs/libsndfile/src/broadcast.c delete mode 100644 libs/libsndfile/src/caf.c delete mode 100644 libs/libsndfile/src/command.c delete mode 100644 libs/libsndfile/src/common.c delete mode 100644 libs/libsndfile/src/common.h delete mode 100644 libs/libsndfile/src/config.h.in delete mode 100644 libs/libsndfile/src/cygsndfile.def delete mode 100644 libs/libsndfile/src/dither.c delete mode 100644 libs/libsndfile/src/double64.c delete mode 100644 libs/libsndfile/src/dwd.c delete mode 100644 libs/libsndfile/src/dwvw.c delete mode 100644 libs/libsndfile/src/file_io.c delete mode 100644 libs/libsndfile/src/flac.c delete mode 100644 libs/libsndfile/src/float32.c delete mode 100644 libs/libsndfile/src/float_cast.h delete mode 100644 libs/libsndfile/src/g72x.c delete mode 100644 libs/libsndfile/src/gsm610.c delete mode 100644 libs/libsndfile/src/htk.c delete mode 100644 libs/libsndfile/src/ima_adpcm.c delete mode 100644 libs/libsndfile/src/interleave.c delete mode 100644 libs/libsndfile/src/ircam.c delete mode 100644 libs/libsndfile/src/libsndfile.def delete mode 100644 libs/libsndfile/src/macbinary3.c delete mode 100644 libs/libsndfile/src/macos.c delete mode 100644 libs/libsndfile/src/mat4.c delete mode 100644 libs/libsndfile/src/mat5.c delete mode 100644 libs/libsndfile/src/ms_adpcm.c delete mode 100644 libs/libsndfile/src/nist.c delete mode 100644 libs/libsndfile/src/ogg.c delete mode 100644 libs/libsndfile/src/paf.c delete mode 100644 libs/libsndfile/src/pcm.c delete mode 100644 libs/libsndfile/src/pvf.c delete mode 100644 libs/libsndfile/src/raw.c delete mode 100644 libs/libsndfile/src/rx2.c delete mode 100644 libs/libsndfile/src/sd2.c delete mode 100644 libs/libsndfile/src/sds.c delete mode 100644 libs/libsndfile/src/sf_unistd.h delete mode 100644 libs/libsndfile/src/sfconfig.h delete mode 100644 libs/libsndfile/src/sfendian.h delete mode 100644 libs/libsndfile/src/sndfile.c delete mode 100644 libs/libsndfile/src/sndfile.h.in delete mode 100644 libs/libsndfile/src/stamp-h1 delete mode 100644 libs/libsndfile/src/strings.c delete mode 100644 libs/libsndfile/src/svx.c delete mode 100644 libs/libsndfile/src/txw.c delete mode 100644 libs/libsndfile/src/ulaw.c delete mode 100644 libs/libsndfile/src/voc.c delete mode 100644 libs/libsndfile/src/vox_adpcm.c delete mode 100644 libs/libsndfile/src/w64.c delete mode 100644 libs/libsndfile/src/wav.c delete mode 100644 libs/libsndfile/src/wav_w64.c delete mode 100644 libs/libsndfile/src/wav_w64.h delete mode 100644 libs/libsndfile/src/wve.c delete mode 100644 libs/libsndfile/src/xi.c create mode 100644 libs/taglib/AUTHORS create mode 100644 libs/taglib/CMakeLists.txt create mode 100644 libs/taglib/COPYING.LGPL create mode 100644 libs/taglib/COPYING.MPL create mode 100644 libs/taglib/ConfigureChecks.cmake create mode 100644 libs/taglib/INSTALL create mode 100644 libs/taglib/Makefile.am create mode 100644 libs/taglib/Makefile.cvs create mode 100644 libs/taglib/Makefile.in create mode 100644 libs/taglib/SConscript create mode 100644 libs/taglib/acinclude.m4 create mode 100644 libs/taglib/aclocal.m4 create mode 100644 libs/taglib/admin/Doxyfile.am create mode 100755 libs/taglib/admin/Doxyfile.global create mode 100644 libs/taglib/admin/Makefile.common create mode 100644 libs/taglib/admin/acinclude.m4.in create mode 100644 libs/taglib/admin/am_edit create mode 100644 libs/taglib/admin/bcheck.pl create mode 100755 libs/taglib/admin/compile create mode 100644 libs/taglib/admin/conf.change.pl create mode 100755 libs/taglib/admin/config.guess create mode 100644 libs/taglib/admin/config.pl create mode 100755 libs/taglib/admin/config.sub create mode 100644 libs/taglib/admin/configure.in.bot.end create mode 100644 libs/taglib/admin/configure.in.min create mode 100644 libs/taglib/admin/cvs.sh create mode 100755 libs/taglib/admin/debianrules create mode 100755 libs/taglib/admin/depcomp create mode 100644 libs/taglib/admin/deps.am create mode 100755 libs/taglib/admin/detect-autoconf.pl create mode 100644 libs/taglib/admin/doxygen.sh create mode 100755 libs/taglib/admin/install-sh create mode 100644 libs/taglib/admin/libtool.m4.in create mode 100644 libs/taglib/admin/ltmain.sh create mode 100755 libs/taglib/admin/missing create mode 100755 libs/taglib/admin/mkinstalldirs create mode 100755 libs/taglib/admin/nmcheck create mode 100644 libs/taglib/admin/oldinclude.m4.in create mode 100644 libs/taglib/admin/pkg.m4.in create mode 100755 libs/taglib/admin/ylwrap create mode 100644 libs/taglib/autom4te.cache/output.0 create mode 100644 libs/taglib/autom4te.cache/output.1 create mode 100644 libs/taglib/autom4te.cache/requests create mode 100644 libs/taglib/autom4te.cache/traces.0 create mode 100644 libs/taglib/autom4te.cache/traces.1 create mode 100644 libs/taglib/bindings/CMakeLists.txt create mode 100644 libs/taglib/bindings/Makefile.am create mode 100644 libs/taglib/bindings/Makefile.in create mode 100644 libs/taglib/bindings/README create mode 100644 libs/taglib/bindings/c/CMakeLists.txt create mode 100644 libs/taglib/bindings/c/Makefile.am create mode 100644 libs/taglib/bindings/c/Makefile.in create mode 100644 libs/taglib/bindings/c/configure.in.in create mode 100644 libs/taglib/bindings/c/tag_c.cpp create mode 100644 libs/taglib/bindings/c/tag_c.h create mode 100644 libs/taglib/bindings/c/taglib_c.pc.cmake create mode 100644 libs/taglib/bindings/c/taglib_c.pc.in create mode 100644 libs/taglib/cmake/modules/FindCppUnit.cmake create mode 100644 libs/taglib/config-taglib.h.cmake create mode 100644 libs/taglib/config.h.in create mode 100755 libs/taglib/configure create mode 100644 libs/taglib/configure.files create mode 100644 libs/taglib/configure.in create mode 100644 libs/taglib/configure.in.bot create mode 100644 libs/taglib/configure.in.in create mode 100644 libs/taglib/doc/README create mode 100644 libs/taglib/doc/api-footer.html create mode 100644 libs/taglib/doc/api-header.html create mode 100644 libs/taglib/doc/taglib-api.css create mode 100644 libs/taglib/doc/taglib.doxygen create mode 100644 libs/taglib/doc/taglib.png create mode 100644 libs/taglib/examples/CMakeLists.txt create mode 100644 libs/taglib/examples/Makefile.am create mode 100644 libs/taglib/examples/Makefile.in create mode 100644 libs/taglib/examples/framelist.cpp create mode 100644 libs/taglib/examples/strip-id3v1.cpp create mode 100644 libs/taglib/examples/tagreader.cpp create mode 100644 libs/taglib/examples/tagreader_c.c create mode 100644 libs/taglib/examples/tagwriter.cpp create mode 100644 libs/taglib/stamp-h.in create mode 100644 libs/taglib/subdirs create mode 100644 libs/taglib/taglib-config.cmake create mode 100644 libs/taglib/taglib-config.in create mode 100644 libs/taglib/taglib.pc.cmake create mode 100644 libs/taglib/taglib.pc.in create mode 100644 libs/taglib/taglib/CMakeLists.txt create mode 100644 libs/taglib/taglib/Makefile.am create mode 100644 libs/taglib/taglib/Makefile.in create mode 100644 libs/taglib/taglib/ape/CMakeLists.txt create mode 100644 libs/taglib/taglib/ape/Makefile.am create mode 100644 libs/taglib/taglib/ape/Makefile.in create mode 100644 libs/taglib/taglib/ape/ape-tag-format.txt create mode 100644 libs/taglib/taglib/ape/apefooter.cpp create mode 100644 libs/taglib/taglib/ape/apefooter.h create mode 100644 libs/taglib/taglib/ape/apeitem.cpp create mode 100644 libs/taglib/taglib/ape/apeitem.h create mode 100644 libs/taglib/taglib/ape/apetag.cpp create mode 100644 libs/taglib/taglib/ape/apetag.h create mode 100644 libs/taglib/taglib/audioproperties.cpp create mode 100644 libs/taglib/taglib/audioproperties.h create mode 100644 libs/taglib/taglib/fileref.cpp create mode 100644 libs/taglib/taglib/fileref.h create mode 100644 libs/taglib/taglib/flac/CMakeLists.txt create mode 100644 libs/taglib/taglib/flac/Makefile.am create mode 100644 libs/taglib/taglib/flac/Makefile.in create mode 100644 libs/taglib/taglib/flac/flacfile.cpp create mode 100644 libs/taglib/taglib/flac/flacfile.h create mode 100644 libs/taglib/taglib/flac/flacproperties.cpp create mode 100644 libs/taglib/taglib/flac/flacproperties.h create mode 100644 libs/taglib/taglib/mpc/CMakeLists.txt create mode 100644 libs/taglib/taglib/mpc/Makefile.am create mode 100644 libs/taglib/taglib/mpc/Makefile.in create mode 100644 libs/taglib/taglib/mpc/mpcfile.cpp create mode 100644 libs/taglib/taglib/mpc/mpcfile.h create mode 100644 libs/taglib/taglib/mpc/mpcproperties.cpp create mode 100644 libs/taglib/taglib/mpc/mpcproperties.h create mode 100644 libs/taglib/taglib/mpeg/CMakeLists.txt create mode 100644 libs/taglib/taglib/mpeg/Makefile.am create mode 100644 libs/taglib/taglib/mpeg/Makefile.in create mode 100644 libs/taglib/taglib/mpeg/id3v1/CMakeLists.txt create mode 100644 libs/taglib/taglib/mpeg/id3v1/Makefile.am create mode 100644 libs/taglib/taglib/mpeg/id3v1/Makefile.in create mode 100644 libs/taglib/taglib/mpeg/id3v1/id3v1genres.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v1/id3v1genres.h create mode 100644 libs/taglib/taglib/mpeg/id3v1/id3v1tag.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v1/id3v1tag.h create mode 100644 libs/taglib/taglib/mpeg/id3v2/CMakeLists.txt create mode 100644 libs/taglib/taglib/mpeg/id3v2/Makefile.am create mode 100644 libs/taglib/taglib/mpeg/id3v2/Makefile.in create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/CMakeLists.txt create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/Makefile.am create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/Makefile.in create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/attachedpictureframe.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/attachedpictureframe.h create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/commentsframe.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/commentsframe.h create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.h create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/relativevolumeframe.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/relativevolumeframe.h create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/textidentificationframe.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/textidentificationframe.h create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.h create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/unknownframe.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/unknownframe.h create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.h create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/urllinkframe.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v2/frames/urllinkframe.h create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2.2.0.txt create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2.3.0.txt create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2.4.0-frames.txt create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2.4.0-structure.txt create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2extendedheader.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2extendedheader.h create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2footer.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2footer.h create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2frame.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2frame.h create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2framefactory.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2framefactory.h create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2header.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2header.h create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2synchdata.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2synchdata.h create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2tag.cpp create mode 100644 libs/taglib/taglib/mpeg/id3v2/id3v2tag.h create mode 100644 libs/taglib/taglib/mpeg/mpegfile.cpp create mode 100644 libs/taglib/taglib/mpeg/mpegfile.h create mode 100644 libs/taglib/taglib/mpeg/mpegheader.cpp create mode 100644 libs/taglib/taglib/mpeg/mpegheader.h create mode 100644 libs/taglib/taglib/mpeg/mpegproperties.cpp create mode 100644 libs/taglib/taglib/mpeg/mpegproperties.h create mode 100644 libs/taglib/taglib/mpeg/xingheader.cpp create mode 100644 libs/taglib/taglib/mpeg/xingheader.h create mode 100644 libs/taglib/taglib/ogg/CMakeLists.txt create mode 100644 libs/taglib/taglib/ogg/Makefile.am create mode 100644 libs/taglib/taglib/ogg/Makefile.in create mode 100644 libs/taglib/taglib/ogg/flac/CMakeLists.txt create mode 100644 libs/taglib/taglib/ogg/flac/Makefile.am create mode 100644 libs/taglib/taglib/ogg/flac/Makefile.in create mode 100644 libs/taglib/taglib/ogg/flac/oggflacfile.cpp create mode 100644 libs/taglib/taglib/ogg/flac/oggflacfile.h create mode 100644 libs/taglib/taglib/ogg/oggfile.cpp create mode 100644 libs/taglib/taglib/ogg/oggfile.h create mode 100644 libs/taglib/taglib/ogg/oggpage.cpp create mode 100644 libs/taglib/taglib/ogg/oggpage.h create mode 100644 libs/taglib/taglib/ogg/oggpageheader.cpp create mode 100644 libs/taglib/taglib/ogg/oggpageheader.h create mode 100644 libs/taglib/taglib/ogg/speex/CMakeLists.txt create mode 100644 libs/taglib/taglib/ogg/speex/Makefile.am create mode 100644 libs/taglib/taglib/ogg/speex/Makefile.in create mode 100644 libs/taglib/taglib/ogg/speex/speexfile.cpp create mode 100644 libs/taglib/taglib/ogg/speex/speexfile.h create mode 100644 libs/taglib/taglib/ogg/speex/speexproperties.cpp create mode 100644 libs/taglib/taglib/ogg/speex/speexproperties.h create mode 100644 libs/taglib/taglib/ogg/vorbis/CMakeLists.txt create mode 100644 libs/taglib/taglib/ogg/vorbis/Makefile.am create mode 100644 libs/taglib/taglib/ogg/vorbis/Makefile.in create mode 100644 libs/taglib/taglib/ogg/vorbis/vorbisfile.cpp create mode 100644 libs/taglib/taglib/ogg/vorbis/vorbisfile.h create mode 100644 libs/taglib/taglib/ogg/vorbis/vorbisproperties.cpp create mode 100644 libs/taglib/taglib/ogg/vorbis/vorbisproperties.h create mode 100644 libs/taglib/taglib/ogg/xiphcomment.cpp create mode 100644 libs/taglib/taglib/ogg/xiphcomment.h create mode 100644 libs/taglib/taglib/tag.cpp create mode 100644 libs/taglib/taglib/tag.h create mode 100644 libs/taglib/taglib/taglib.pro create mode 100644 libs/taglib/taglib/taglib_export.h create mode 100644 libs/taglib/taglib/tagunion.cpp create mode 100644 libs/taglib/taglib/tagunion.h create mode 100644 libs/taglib/taglib/toolkit/CMakeLists.txt create mode 100644 libs/taglib/taglib/toolkit/Makefile.am create mode 100644 libs/taglib/taglib/toolkit/Makefile.in create mode 100644 libs/taglib/taglib/toolkit/taglib.h create mode 100644 libs/taglib/taglib/toolkit/tbytevector.cpp create mode 100644 libs/taglib/taglib/toolkit/tbytevector.h create mode 100644 libs/taglib/taglib/toolkit/tbytevectorlist.cpp create mode 100644 libs/taglib/taglib/toolkit/tbytevectorlist.h create mode 100644 libs/taglib/taglib/toolkit/tdebug.cpp create mode 100644 libs/taglib/taglib/toolkit/tdebug.h create mode 100644 libs/taglib/taglib/toolkit/tfile.cpp create mode 100644 libs/taglib/taglib/toolkit/tfile.h create mode 100644 libs/taglib/taglib/toolkit/tlist.h create mode 100644 libs/taglib/taglib/toolkit/tlist.tcc create mode 100644 libs/taglib/taglib/toolkit/tmap.h create mode 100644 libs/taglib/taglib/toolkit/tmap.tcc create mode 100644 libs/taglib/taglib/toolkit/tstring.cpp create mode 100644 libs/taglib/taglib/toolkit/tstring.h create mode 100644 libs/taglib/taglib/toolkit/tstringlist.cpp create mode 100644 libs/taglib/taglib/toolkit/tstringlist.h create mode 100644 libs/taglib/taglib/toolkit/unicode.cpp create mode 100644 libs/taglib/taglib/toolkit/unicode.h create mode 100644 libs/taglib/taglib/trueaudio/CMakeLists.txt create mode 100644 libs/taglib/taglib/trueaudio/Makefile.am create mode 100644 libs/taglib/taglib/trueaudio/Makefile.in create mode 100644 libs/taglib/taglib/trueaudio/trueaudiofile.cpp create mode 100644 libs/taglib/taglib/trueaudio/trueaudiofile.h create mode 100644 libs/taglib/taglib/trueaudio/trueaudioproperties.cpp create mode 100644 libs/taglib/taglib/trueaudio/trueaudioproperties.h create mode 100644 libs/taglib/taglib/wavpack/CMakeLists.txt create mode 100644 libs/taglib/taglib/wavpack/Makefile.am create mode 100644 libs/taglib/taglib/wavpack/Makefile.in create mode 100644 libs/taglib/taglib/wavpack/wavpackfile.cpp create mode 100644 libs/taglib/taglib/wavpack/wavpackfile.h create mode 100644 libs/taglib/taglib/wavpack/wavpackproperties.cpp create mode 100644 libs/taglib/taglib/wavpack/wavpackproperties.h create mode 100644 libs/taglib/tests/CMakeLists.txt create mode 100644 libs/taglib/tests/Makefile.am create mode 100644 libs/taglib/tests/Makefile.in create mode 100644 libs/taglib/tests/data/005411.id3 create mode 100644 libs/taglib/tests/data/broken-tenc.id3 create mode 100644 libs/taglib/tests/data/click.mpc create mode 100644 libs/taglib/tests/data/empty.ogg create mode 100644 libs/taglib/tests/data/empty.spx create mode 100644 libs/taglib/tests/data/empty.tta create mode 100644 libs/taglib/tests/data/mpeg2.mp3 create mode 100644 libs/taglib/tests/data/no-tags.flac create mode 100644 libs/taglib/tests/data/unsynch.id3 create mode 100644 libs/taglib/tests/data/xing.mp3 create mode 100644 libs/taglib/tests/main.cpp create mode 100644 libs/taglib/tests/test_bytevector.cpp create mode 100644 libs/taglib/tests/test_fileref.cpp create mode 100644 libs/taglib/tests/test_id3v1.cpp create mode 100644 libs/taglib/tests/test_id3v2.cpp create mode 100644 libs/taglib/tests/test_list.cpp create mode 100644 libs/taglib/tests/test_map.cpp create mode 100644 libs/taglib/tests/test_mpeg.cpp create mode 100644 libs/taglib/tests/test_string.cpp create mode 100644 libs/taglib/tests/test_synchdata.cpp create mode 100644 libs/taglib/tests/test_trueaudio.cpp create mode 100644 libs/taglib/tests/utils.h diff --git a/SConstruct b/SConstruct index aae2040622..cfc44857b3 100644 --- a/SConstruct +++ b/SConstruct @@ -261,16 +261,16 @@ def create_stored_revision (target = None, source = None, env = None): if os.path.exists('.svn'): rev = fetch_svn_revision ('.'); try: - text = "#ifndef __ardour_svn_revision_h__\n" - text += "#define __ardour_svn_revision_h__\n" - text += "static const char* ardour_svn_revision = \"" + rev + "\";\n"; - text += "#endif\n" - print '============> writing svn revision info to svn_revision.h\n' - o = file ('svn_revision.h', 'w') + text = "#include \n" + text += "namespace ARDOUR {\n"; + text += "extern const char* svn_revision = \"" + rev + "\";\n"; + text += "}\n"; + print '============> writing svn revision info to libs/ardour/svn_revision.cc\n' + o = file ('libs/ardour/svn_revision.cc', 'w') o.write (text) o.close () except IOError: - print "Could not open svn_revision.h for writing\n" + print "Could not open libs/ardour/svn_revision.cc for writing\n" sys.exit (-1) else: print "You cannot use \"scons revision\" on without using a checked out" @@ -1163,6 +1163,9 @@ else: libraries['sndfile-ardour'] = LibraryInfo(LIBS='libsndfile-ardour', LIBPATH='#libs/libsndfile', CPPPATH=['#libs/libsndfile', '#libs/libsndfile/src']) + libraries['taglib'] = LibraryInfo(LIBS='libtaglib', + LIBPATH='#libs/taglib', + CPPPATH=['#libs/taglib/headers','#libs/taglib/headers/taglib']) # libraries['libglademm'] = LibraryInfo(LIBS='libglademm', # LIBPATH='#libs/libglademm', # CPPPATH='#libs/libglademm') @@ -1178,6 +1181,7 @@ else: subdirs = [ 'libs/sigc++2', 'libs/libsndfile', + 'libs/taglib', 'libs/pbd', 'libs/midi++2', 'libs/ardour', @@ -1399,6 +1403,12 @@ env.Alias ('srctar', srcdist) env.AddPreAction (env['DISTTREE'], Action ('rm -rf ' + str (File (env['DISTTREE'])))) env.AddPostAction (srcdist, Action ('rm -rf ' + str (File (env['DISTTREE'])))) +# +# Update revision info before going into subdirs +# + +create_stored_revision() + # # the subdirs # diff --git a/gtk2_ardour/SConscript b/gtk2_ardour/SConscript index 136fe6a3db..1a832b12ae 100644 --- a/gtk2_ardour/SConscript +++ b/gtk2_ardour/SConscript @@ -53,6 +53,7 @@ gtkardour.Merge ([ libraries['samplerate'], libraries['sigc2'], libraries['sndfile-ardour'], + libraries['taglib'], libraries['sysmidi'], libraries['vamp'], libraries['vamphost'], @@ -170,10 +171,12 @@ editor_tempodisplay.cc editor_timefx.cc engine_dialog.cc enums.cc -export_dialog.cc -export_range_markers_dialog.cc -export_region_dialog.cc -export_session_dialog.cc +export_format_dialog.cc +export_main_dialog.cc +export_channel_selector.cc +export_filename_selector.cc +export_format_selector.cc +export_timespan_selector.cc gain_meter.cc generic_pluginui.cc ghostregion.cc @@ -220,6 +223,7 @@ route_time_axis.cc route_ui.cc selection.cc send_ui.cc +session_metadata_dialog.cc sfdb_ui.cc simpleline.cc simplerect.cc diff --git a/gtk2_ardour/about.cc b/gtk2_ardour/about.cc index 416e9925d2..ae8c7f503b 100644 --- a/gtk2_ardour/about.cc +++ b/gtk2_ardour/about.cc @@ -27,6 +27,7 @@ #include +#include #include #include #include @@ -34,7 +35,6 @@ #include "utils.h" #include "version.h" -#include "svn_revision.h" #include "about.h" #include "rgb_macros.h" #include "ardour_ui.h" @@ -215,7 +215,7 @@ About::About () set_website_label (_("visit http://www.ardour.org/")); set_version ((string_compose(_("%1\n(built from revision %2)"), VERSIONSTRING, - ardour_svn_revision))); + svn_revision))); #ifdef WITH_PAYMENT_OPTIONS diff --git a/gtk2_ardour/ardour.menus b/gtk2_ardour/ardour.menus index 0fed527367..a37645dca8 100644 --- a/gtk2_ardour/ardour.menus +++ b/gtk2_ardour/ardour.menus @@ -10,15 +10,17 @@ + + + + - - - + diff --git a/gtk2_ardour/ardour_dialog.cc b/gtk2_ardour/ardour_dialog.cc index bc24389948..43fdf85c94 100644 --- a/gtk2_ardour/ardour_dialog.cc +++ b/gtk2_ardour/ardour_dialog.cc @@ -29,17 +29,13 @@ ArdourDialog::ArdourDialog (string title, bool modal, bool use_seperator) : Dialog (title, modal, use_seperator) { - session = 0; - - set_type_hint(Gdk::WINDOW_TYPE_HINT_DIALOG); + init (); } ArdourDialog::ArdourDialog (Gtk::Window& parent, string title, bool modal, bool use_seperator) : Dialog (title, parent, modal, use_seperator) { - session = 0; - - set_type_hint(Gdk::WINDOW_TYPE_HINT_DIALOG); + init (); set_position (Gtk::WIN_POS_CENTER_ON_PARENT); } @@ -80,3 +76,10 @@ ArdourDialog::on_show () Dialog::on_show (); } + +void ArdourDialog::init () +{ + session = 0; + set_type_hint(Gdk::WINDOW_TYPE_HINT_DIALOG); + set_border_width (10); +} diff --git a/gtk2_ardour/ardour_dialog.h b/gtk2_ardour/ardour_dialog.h index 264dcfcd58..b2c531b0d0 100644 --- a/gtk2_ardour/ardour_dialog.h +++ b/gtk2_ardour/ardour_dialog.h @@ -54,6 +54,9 @@ class ArdourDialog : public Gtk::Dialog virtual void session_gone () { set_session (0); } + + private: + void init (); }; #endif // __ardour_dialog_h__ diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 9ed6d0e599..6c59837abc 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -91,6 +91,7 @@ typedef uint64_t microseconds_t; #include "gui_thread.h" #include "theme_manager.h" #include "bundle_manager.h" +#include "session_metadata_dialog.h" #include "gain_meter.h" #include "route_time_axis.h" @@ -2008,6 +2009,24 @@ ARDOUR_UI::save_template () } } +void +ARDOUR_UI::edit_metadata () +{ + SessionMetadataEditor dialog; + dialog.set_session (session); + editor->ensure_float (dialog); + dialog.run (); +} + +void +ARDOUR_UI::import_metadata () +{ + SessionMetadataImporter dialog; + dialog.set_session (session); + editor->ensure_float (dialog); + dialog.run (); +} + void ARDOUR_UI::fontconfig_dialog () { diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 6be85f6a80..86c9799cb8 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -570,6 +570,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI void open_session (); void open_recent_session (); void save_template (); + + void edit_metadata (); + void import_metadata (); void session_add_audio_route (bool disk, int32_t input_channels, int32_t output_channels, ARDOUR::TrackMode mode, uint32_t how_many); void session_add_midi_route (bool disk, uint32_t how_many); diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 504205dbf4..9f9ac269f1 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -136,16 +136,17 @@ ARDOUR_UI::install_actions () act = ActionManager::register_action (main_actions, X_("SaveTemplate"), _("Save Template..."), mem_fun(*this, &ARDOUR_UI::save_template)); ActionManager::session_sensitive_actions.push_back (act); - act = ActionManager::register_action (main_actions, X_("ExportSession"), _("Export session to audiofile..."), mem_fun (*editor, &PublicEditor::export_session)); + act = ActionManager::register_action (main_actions, X_("Metadata"), _("Metadata")); ActionManager::session_sensitive_actions.push_back (act); - act = ActionManager::register_action (main_actions, X_("ExportSelection"), _("Export selection to audiofile..."), mem_fun (*editor, &PublicEditor::export_selection)); + act = ActionManager::register_action (main_actions, X_("EditMetadata"), _("Edit Metadata"), mem_fun(*this, &ARDOUR_UI::edit_metadata)); ActionManager::session_sensitive_actions.push_back (act); - ActionManager::time_selection_sensitive_actions.push_back (act); - act = ActionManager::register_action (main_actions, X_("ExportRangeMarkers"), _("Export range markers to audiofile..."), mem_fun (*editor, &PublicEditor::export_range_markers)); + act = ActionManager::register_action (main_actions, X_("ImportMetadata"), _("Import Metadata"), mem_fun(*this, &ARDOUR_UI::import_metadata)); + ActionManager::session_sensitive_actions.push_back (act); + + act = ActionManager::register_action (main_actions, X_("ExportAudio"), _("Export to audiofile(s)..."), mem_fun (*editor, &PublicEditor::export_audio)); ActionManager::session_sensitive_actions.push_back (act); - ActionManager::range_sensitive_actions.push_back (act); act = ActionManager::register_action (main_actions, X_("Export"), _("Export")); ActionManager::session_sensitive_actions.push_back (act); diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 3151b6d5c7..170e9b57e2 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -295,8 +295,6 @@ Editor::Editor () _show_waveforms = true; _show_waveforms_recording = true; first_action_message = 0; - export_dialog = 0; - export_range_markers_dialog = 0; show_gain_after_trim = false; ignore_route_list_reorder = false; no_route_list_redisplay = false; @@ -2117,7 +2115,7 @@ Editor::add_selection_context_items (Menu_Helpers::MenuList& edit_items) items.push_back (SeparatorElem()); items.push_back (MenuElem (_("Consolidate range"), bind (mem_fun(*this, &Editor::bounce_range_selection), true))); items.push_back (MenuElem (_("Bounce range to region list"), bind (mem_fun(*this, &Editor::bounce_range_selection), false))); - items.push_back (MenuElem (_("Export range"), mem_fun(*this, &Editor::export_selection))); + items.push_back (MenuElem (_("Export range"), mem_fun(*this, &Editor::export_range))); } diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index b957c995a0..6385b37ef8 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -98,8 +98,6 @@ class PlaylistSelector; class Marker; class GroupedButtons; class AutomationLine; -class UIExportSpecification; -class ExportDialog; class Selection; class TimeSelection; class TrackSelection; @@ -272,12 +270,11 @@ class Editor : public PublicEditor #endif /* export */ - - /* these initiate export ... */ - void export_session(); - void export_selection(); - + void export_audio (); + void export_selection (); + void export_range (); + void export_region (); void add_toplevel_controls (Gtk::Container&); Gtk::HBox& get_status_bar_packer() { return status_bar_hpacker; } @@ -1566,7 +1563,6 @@ public: void marker_menu_set_from_playhead (); void marker_menu_set_from_selection (); void marker_menu_range_to_next (); - void marker_menu_export_range (); void new_transport_marker_menu_set_loop (); void new_transport_marker_menu_set_punch (); void update_loop_range_view (bool visibility=false); @@ -1994,15 +1990,8 @@ public: /* audio export */ - ExportDialog *export_dialog; - ExportDialog *export_range_markers_dialog; - - void export_range (nframes64_t start, nframes64_t end); - void export_range_markers (); - int write_region_selection(RegionSelection&); bool write_region (string path, boost::shared_ptr); - void export_region (); void bounce_region_selection (); void bounce_range_selection (bool replace); void external_edit_region (); diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index a1a7092eb0..80b76369d0 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -492,9 +492,9 @@ Editor::register_actions () redo_action = act = ActionManager::register_action (editor_actions, "redo", _("Redo"), bind (mem_fun(*this, &Editor::redo), 1U)); ActionManager::session_sensitive_actions.push_back (act); - act = ActionManager::register_action (editor_actions, "export-session", _("Export Session"), mem_fun(*this, &Editor::export_session)); + act = ActionManager::register_action (editor_actions, "export-audio", _("Export Audio"), mem_fun(*this, &Editor::export_audio)); ActionManager::session_sensitive_actions.push_back (act); - act = ActionManager::register_action (editor_actions, "export-range", _("Export Range"), mem_fun(*this, &Editor::export_selection)); + act = ActionManager::register_action (editor_actions, "export-range", _("Export Range"), mem_fun(*this, &Editor::export_range)); ActionManager::session_sensitive_actions.push_back (act); act = ActionManager::register_action (editor_actions, "editor-separate", _("Separate"), mem_fun(*this, &Editor::separate_region_from_selection)); diff --git a/gtk2_ardour/editor_export_audio.cc b/gtk2_ardour/editor_export_audio.cc index c1d0c56833..ac68f6d907 100644 --- a/gtk2_ardour/editor_export_audio.cc +++ b/gtk2_ardour/editor_export_audio.cc @@ -24,9 +24,7 @@ #include -#include "export_session_dialog.h" -#include "export_region_dialog.h" -#include "export_range_markers_dialog.h" +#include "export_main_dialog.h" #include "editor.h" #include "public_editor.h" #include "selection.h" @@ -36,7 +34,6 @@ #include #include -#include #include #include #include @@ -55,78 +52,59 @@ using namespace PBD; using namespace Gtk; void -Editor::export_session() +Editor::export_audio () { - if (session) { - export_range (session->current_start_frame(), session->current_end_frame()); - } + ExportMainDialog dialog (*this); + dialog.set_session (session); + dialog.run(); } void Editor::export_selection () { - if (session) { - if (selection->time.empty()) { - MessageDialog message (*this, _("There is no selection to export.\n\nSelect a selection using the range mouse mode")); - message.run (); - return; - } - - export_range (selection->time.front().start, selection->time.front().end); - } + ExportMainDialog dialog (*this); + dialog.set_session (session); + dialog.select_timespan (X_("selection")); + dialog.run(); } void -Editor::export_range (nframes64_t start, nframes64_t end) +Editor::export_range () { - if (session) { - if (export_dialog == 0) { - export_dialog = new ExportSessionDialog (*this); - export_dialog->connect_to_session (session); - } - - export_dialog->set_range (start, end); - export_dialog->start_export(); - } -} + Marker* marker; -/** Export the first selected region */ -void -Editor::export_region () -{ - if (selection->regions.empty()) { - return; + if ((marker = reinterpret_cast (marker_menu_item->get_data ("marker"))) == 0) { + fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg; + /*NOTREACHED*/ } - boost::shared_ptr r = selection->regions.front()->region(); - - ExportDialog* dialog = new ExportRegionDialog (*this, r); - - dialog->connect_to_session (session); - dialog->set_range (clicked_regionview->region()->first_frame(), clicked_regionview->region()->last_frame()); - dialog->start_export(); + Location* l; + bool is_start; + + if (((l = find_location_from_marker (marker, is_start)) != 0) && (l->end() > l->start())) { + ExportMainDialog dialog (*this); + dialog.set_session (session); + dialog.select_timespan (l->id().to_s()); + dialog.run(); + } } +/** Export the first selected region */ void -Editor::export_range_markers () +Editor::export_region () { - if (session) { - - if (session->locations()->num_range_markers() == 0) { - MessageDialog message (*this, _("There are no ranges to export.\n\nCreate 1 or more ranges by dragging the mouse in the range bar")); - message.run (); - return; - } - - - if (export_range_markers_dialog == 0) { - export_range_markers_dialog = new ExportRangeMarkersDialog(*this); - export_range_markers_dialog->connect_to_session (session); - } - - export_range_markers_dialog->start_export(); - } -} +// if (selection->regions.empty()) { +// return; +// } +// +// boost::shared_ptr r = selection->regions.front()->region(); +// +// ExportDialog* dialog = new ExportRegionDialog (*this, r); +// +// dialog->connect_to_session (session); +// dialog->set_range (clicked_regionview->region()->first_frame(), clicked_regionview->region()->last_frame()); +// dialog->start_export(); +} int Editor::write_region_selection (RegionSelection& regions) diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc index 8d86a0fbb2..508d73a01a 100644 --- a/gtk2_ardour/editor_markers.cc +++ b/gtk2_ardour/editor_markers.cc @@ -636,7 +636,7 @@ Editor::build_range_marker_menu (bool loop_or_punch) } items.push_back (SeparatorElem()); - items.push_back (MenuElem (_("Export Range"), mem_fun(*this, &Editor::marker_menu_export_range))); + items.push_back (MenuElem (_("Export Range"), mem_fun(*this, &Editor::export_range))); items.push_back (SeparatorElem()); if (!loop_or_punch) { @@ -814,26 +814,6 @@ Editor::marker_menu_set_playhead () } } -void -Editor::marker_menu_export_range () -{ - Marker* marker; - - if ((marker = reinterpret_cast (marker_menu_item->get_data ("marker"))) == 0) { - fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg; - /*NOTREACHED*/ - } - - Location* l; - bool is_start; - - if ((l = find_location_from_marker (marker, is_start)) != 0) { - if (l->is_range_marker()) { - export_range (l->start(), l->end()); - } - } -} - void Editor::marker_menu_range_to_next () { diff --git a/gtk2_ardour/location_ui.cc b/gtk2_ardour/location_ui.cc index 451a85efd7..31ef2b7cc5 100644 --- a/gtk2_ardour/location_ui.cc +++ b/gtk2_ardour/location_ui.cc @@ -636,7 +636,6 @@ LocationUI::LocationUI () get_vbox()->pack_start (location_hpacker); - location_vpacker.set_border_width (10); location_vpacker.set_spacing (5); location_vpacker.pack_start (loop_edit_row, false, false); diff --git a/gtk2_ardour/main.cc b/gtk2_ardour/main.cc index 0edf450cd1..edbdcd58cb 100644 --- a/gtk2_ardour/main.cc +++ b/gtk2_ardour/main.cc @@ -31,6 +31,7 @@ #include +#include #include #include #include @@ -41,7 +42,6 @@ #include #include -#include "../svn_revision.h" #include "version.h" #include "utils.h" #include "ardour_ui.h" @@ -324,7 +324,7 @@ int main (int argc, char *argv[]) cout << _("Ardour/GTK ") << VERSIONSTRING << _("\n (built using ") - << ardour_svn_revision + << svn_revision #ifdef __GNUC__ << _(" and GCC version ") << __VERSION__ #endif diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h index 937399e94f..253c033eb8 100644 --- a/gtk2_ardour/public_editor.h +++ b/gtk2_ardour/public_editor.h @@ -38,7 +38,6 @@ namespace ARDOUR { class Session; - class ExportSpecification; class Region; class Playlist; class RouteGroup; @@ -206,16 +205,15 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway virtual bool show_measures () const = 0; virtual bool redraw_measures () = 0; - /** Open an export dialogue for the whole session */ - virtual void export_session () = 0; - - /** Open an export dialogue for currently selected time range, if there - * is one; if not an error is displayed to the user. - */ + /** Open main export dialog */ + virtual void export_audio () = 0; + + /** Open export dialog with current selection pre-selected */ virtual void export_selection () = 0; + + /** Open export dialog with current range pre-selected */ + virtual void export_range () = 0; - /** Open an export dialogue for marked ranges */ - virtual void export_range_markers () = 0; virtual void register_actions () = 0; virtual void add_toplevel_controls (Gtk::Container&) = 0; virtual void set_zoom_focus (Editing::ZoomFocus) = 0; diff --git a/libs/ardour/SConscript b/libs/ardour/SConscript index ca6fc0553e..3177f05976 100644 --- a/libs/ardour/SConscript +++ b/libs/ardour/SConscript @@ -37,6 +37,7 @@ audio_buffer.cc audio_diskstream.cc audioengine.cc audiofilesource.cc +audiofile_tagger.cc audio_library.cc audio_playlist.cc audio_port.cc @@ -51,6 +52,7 @@ automation_control.cc automation_event.cc base_audio_port.cc base_midi_port.cc +broadcast_info.cc buffer.cc buffer_set.cc chan_count.cc @@ -64,6 +66,19 @@ default_click.cc directory_names.cc diskstream.cc enums.cc +export_channel_configuration.cc +export_file_io.cc +export_filename.cc +export_format_base.cc +export_format_manager.cc +export_formats.cc +export_format_specification.cc +export_handler.cc +export_processor.cc +export_profile_manager.cc +export_status.cc +export_timespan.cc +export_utilities.cc filename_extensions.cc filesystem_paths.cc filter.cc @@ -124,6 +139,7 @@ session_command.cc session_directory.cc session_events.cc session_export.cc +session_metadata.cc session_midi.cc session_process.cc session_state.cc @@ -139,6 +155,7 @@ sndfilesource.cc sndfileimportable.cc source.cc source_factory.cc +svn_revision.cc tape_file_matcher.cc template_utils.cc tempo.cc @@ -318,6 +335,7 @@ ardour.Merge ([ libraries['samplerate'], libraries['sigc2'], libraries['sndfile-ardour'], + libraries['taglib'], libraries['vamp'], libraries['vamphost'], libraries['xml'] diff --git a/libs/ardour/ardour/audioregion.h b/libs/ardour/ardour/audioregion.h index 81b7ef7c57..f8bd8a1794 100644 --- a/libs/ardour/ardour/audioregion.h +++ b/libs/ardour/ardour/audioregion.h @@ -30,12 +30,13 @@ #include #include #include -#include class XMLNode; namespace ARDOUR { +using std::vector; + class Route; class Playlist; class Session; diff --git a/libs/ardour/ardour/midi_region.h b/libs/ardour/ardour/midi_region.h index cd2b0d6132..44f775dc1c 100644 --- a/libs/ardour/ardour/midi_region.h +++ b/libs/ardour/ardour/midi_region.h @@ -30,11 +30,12 @@ #include #include #include -#include #include class XMLNode; +using std::vector; + namespace ARDOUR { class Route; diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 08315c3010..a8601a562a 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -51,6 +51,7 @@ #include #include +#include #include #include #include @@ -108,8 +109,9 @@ class MidiRegion; class SMFSource; class SessionDirectory; +class SessionMetadata; +class ExportHandler; -struct ExportSpecification; struct RouteGroup; using std::vector; @@ -457,7 +459,7 @@ class Session : public PBD::StatefulDestructible XMLNode& get_template(); /// The instant xml file is written to the session directory - void add_instant_xml (XMLNode&); + void add_instant_xml (XMLNode&, bool write_to_config = true); XMLNode * instant_xml (const std::string& str); enum StateOfTheState { @@ -554,7 +556,7 @@ class Session : public PBD::StatefulDestructible void set_smpte_offset_negative (bool); bool smpte_offset_negative () const { return _smpte_offset_negative; } - nframes_t convert_to_frames_at (nframes_t position, AnyTime&); + nframes_t convert_to_frames_at (nframes_t position, AnyTime const &); static sigc::signal StartTimeChanged; static sigc::signal EndTimeChanged; @@ -616,14 +618,27 @@ class Session : public PBD::StatefulDestructible bool sample_rate_convert (import_status&, string infile, string& outfile); string build_tmp_convert_name (string file); + /* Export stuff */ + SlaveSource post_export_slave; nframes_t post_export_position; + ExportStatus export_status; + + boost::shared_ptr get_export_handler (); + void release_export_handler (); + int pre_export (); - int start_export (ARDOUR::ExportSpecification&); - int stop_export (ARDOUR::ExportSpecification&); - void finalize_export (); + int start_audio_export (nframes_t position, bool realtime); + int stop_audio_export (); + void finalize_audio_export (); + void abort_audio_export (); + + sigc::signal ProcessExport; + sigc::signal ExportFinished; static sigc::signal Exported; + sigc::connection export_freewheel_connection; + sigc::connection export_abort_connection; void add_source (boost::shared_ptr); void remove_source (boost::weak_ptr); @@ -1051,7 +1066,8 @@ class Session : public PBD::StatefulDestructible void process_without_events (nframes_t); void process_with_events (nframes_t); void process_audition (nframes_t); - int process_export (nframes_t, ARDOUR::ExportSpecification*); + void process_export (nframes_t); + int process_export_fw (nframes_t); /* slave tracking */ @@ -1076,8 +1092,8 @@ class Session : public PBD::StatefulDestructible void set_slave_source (SlaveSource); bool _exporting; - - int prepare_to_export (ARDOUR::ExportSpecification&); + bool _exporting_realtime; + boost::shared_ptr export_handler; void prepare_diskstreams (); void commit_diskstreams (nframes_t, bool& session_requires_butler); @@ -1724,6 +1740,12 @@ class Session : public PBD::StatefulDestructible void sync_order_keys (); static bool _disable_all_loaded_plugins; + + /* Metadata */ + + SessionMetadata * _metadata; + public: + SessionMetadata & metadata () { return *_metadata; } }; } // namespace ARDOUR diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h index d94683f427..06c055bbe6 100644 --- a/libs/ardour/ardour/types.h +++ b/libs/ardour/ardour/types.h @@ -342,6 +342,11 @@ namespace ARDOUR { FormatInt16 }; + enum CDMarkerFormat { + CDMarkerNone, + CDMarkerCUE, + CDMarkerTOC + }; enum HeaderFormat { BWF, diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc index cbf2e44c5f..271544297d 100644 --- a/libs/ardour/audioregion.cc +++ b/libs/ardour/audioregion.cc @@ -1024,65 +1024,67 @@ AudioRegion::read_raw_internal (Sample* buf, nframes_t pos, nframes_t cnt) const int AudioRegion::exportme (Session& session, ARDOUR::ExportSpecification& spec) { - const nframes_t blocksize = 4096; - nframes_t to_read; - int status = -1; - - spec.channels = _sources.size(); - - if (spec.prepare (blocksize, session.frame_rate())) { - goto out; - } - - spec.pos = 0; - spec.total_frames = _length; - - while (spec.pos < _length && !spec.stop) { - - - /* step 1: interleave */ - - to_read = min (_length - spec.pos, blocksize); - - if (spec.channels == 1) { - - if (read_raw_internal (spec.dataF, _start + spec.pos, to_read) != to_read) { - goto out; - } - - } else { - - Sample buf[blocksize]; - - for (uint32_t chan = 0; chan < spec.channels; ++chan) { - - if (audio_source(chan)->read (buf, _start + spec.pos, to_read) != to_read) { - goto out; - } - - for (nframes_t x = 0; x < to_read; ++x) { - spec.dataF[chan+(x*spec.channels)] = buf[x]; - } - } - } - - if (spec.process (to_read)) { - goto out; - } - - spec.pos += to_read; - spec.progress = (double) spec.pos /_length; - - } - - status = 0; - - out: - spec.running = false; - spec.status = status; - spec.clear(); - - return status; + // TODO EXPORT +// const nframes_t blocksize = 4096; +// nframes_t to_read; +// int status = -1; +// +// spec.channels = _sources.size(); +// +// if (spec.prepare (blocksize, session.frame_rate())) { +// goto out; +// } +// +// spec.pos = 0; +// spec.total_frames = _length; +// +// while (spec.pos < _length && !spec.stop) { +// +// +// /* step 1: interleave */ +// +// to_read = min (_length - spec.pos, blocksize); +// +// if (spec.channels == 1) { +// +// if (read_raw_internal (spec.dataF, _start + spec.pos, to_read) != to_read) { +// goto out; +// } +// +// } else { +// +// Sample buf[blocksize]; +// +// for (uint32_t chan = 0; chan < spec.channels; ++chan) { +// +// if (audio_source(chan)->read (buf, _start + spec.pos, to_read) != to_read) { +// goto out; +// } +// +// for (nframes_t x = 0; x < to_read; ++x) { +// spec.dataF[chan+(x*spec.channels)] = buf[x]; +// } +// } +// } +// +// if (spec.process (to_read)) { +// goto out; +// } +// +// spec.pos += to_read; +// spec.progress = (double) spec.pos /_length; +// +// } +// +// status = 0; +// +// out: +// spec.running = false; +// spec.status = status; +// spec.clear(); +// +// return status; + return 0; } void diff --git a/libs/ardour/enums.cc b/libs/ardour/enums.cc index 0781f8c8e1..350c6dba9a 100644 --- a/libs/ardour/enums.cc +++ b/libs/ardour/enums.cc @@ -29,6 +29,9 @@ #include #include #include +#include +#include +#include using namespace std; using namespace PBD; @@ -59,6 +62,7 @@ setup_enum_writer () LayerModel _LayerModel; SoloModel _SoloModel; SampleFormat _SampleFormat; + CDMarkerFormat _CDMarkerFormat; HeaderFormat _HeaderFormat; PluginType _PluginType; SlaveSource _SlaveSource; @@ -86,6 +90,18 @@ setup_enum_writer () Region::PositionLockStyle _Region_PositionLockStyle; Track::FreezeState _Track_FreezeState; AutomationList::InterpolationStyle _AutomationList_InterpolationStyle; + AnyTime::Type _AnyTime_Type; + ExportFilename::TimeFormat _ExportFilename_TimeFormat; + ExportFilename::DateFormat _ExportFilename_DateFormat; + ExportFormatBase::Type _ExportFormatBase_Type; + ExportFormatBase::FormatId _ExportFormatBase_FormatId; + ExportFormatBase::Endianness _ExportFormatBase_Endianness; + ExportFormatBase::SampleFormat _ExportFormatBase_SampleFormat; + ExportFormatBase::DitherType _ExportFormatBase_DitherType; + ExportFormatBase::Quality _ExportFormatBase_Quality; + ExportFormatBase::SampleRate _ExportFormatBase_SampleRate; + ExportFormatBase::SRCQuality _ExportFormatBase_SRCQuality; + ExportProfileManager::TimeFormat _ExportProfileManager_TimeFormat; #define REGISTER(e) enum_writer->register_distinct (typeid(e).name(), i, s); i.clear(); s.clear() #define REGISTER_BITS(e) enum_writer->register_bits (typeid(e).name(), i, s); i.clear(); s.clear() @@ -213,6 +229,11 @@ setup_enum_writer () REGISTER_ENUM (FormatInt16); REGISTER (_SampleFormat); + REGISTER_ENUM (CDMarkerNone); + REGISTER_ENUM (CDMarkerCUE); + REGISTER_ENUM (CDMarkerTOC); + REGISTER (_CDMarkerFormat); + REGISTER_ENUM (BWF); REGISTER_ENUM (WAVE); REGISTER_ENUM (WAVE64); @@ -386,4 +407,89 @@ setup_enum_writer () REGISTER_CLASS_ENUM (AutomationList, Curved); REGISTER (_AutomationList_InterpolationStyle); + REGISTER_CLASS_ENUM (AnyTime, SMPTE); + REGISTER_CLASS_ENUM (AnyTime, BBT); + REGISTER_CLASS_ENUM (AnyTime, Frames); + REGISTER_CLASS_ENUM (AnyTime, Seconds); + REGISTER (_AnyTime_Type); + + REGISTER_CLASS_ENUM (ExportFilename, D_None); + REGISTER_CLASS_ENUM (ExportFilename, D_ISO); + REGISTER_CLASS_ENUM (ExportFilename, D_ISOShortY); + REGISTER_CLASS_ENUM (ExportFilename, D_BE); + REGISTER_CLASS_ENUM (ExportFilename, D_BEShortY); + REGISTER (_ExportFilename_DateFormat); + + REGISTER_CLASS_ENUM (ExportFilename, T_None); + REGISTER_CLASS_ENUM (ExportFilename, T_NoDelim); + REGISTER_CLASS_ENUM (ExportFilename, T_Delim); + REGISTER (_ExportFilename_TimeFormat); + + REGISTER_CLASS_ENUM (ExportFormatBase, T_None); + REGISTER_CLASS_ENUM (ExportFormatBase, T_Sndfile); + REGISTER (_ExportFormatBase_Type); + + REGISTER_CLASS_ENUM (ExportFormatBase, F_None); + REGISTER_CLASS_ENUM (ExportFormatBase, F_WAV); + REGISTER_CLASS_ENUM (ExportFormatBase, F_W64); + REGISTER_CLASS_ENUM (ExportFormatBase, F_AIFF); + REGISTER_CLASS_ENUM (ExportFormatBase, F_AU); + REGISTER_CLASS_ENUM (ExportFormatBase, F_IRCAM); + REGISTER_CLASS_ENUM (ExportFormatBase, F_RAW); + REGISTER_CLASS_ENUM (ExportFormatBase, F_FLAC); + REGISTER_CLASS_ENUM (ExportFormatBase, F_Ogg); + REGISTER (_ExportFormatBase_FormatId); + + REGISTER_CLASS_ENUM (ExportFormatBase, E_FileDefault); + REGISTER_CLASS_ENUM (ExportFormatBase, E_Little); + REGISTER_CLASS_ENUM (ExportFormatBase, E_Big); + REGISTER_CLASS_ENUM (ExportFormatBase, E_Cpu); + REGISTER (_ExportFormatBase_Endianness); + + REGISTER_CLASS_ENUM (ExportFormatBase, SF_None); + REGISTER_CLASS_ENUM (ExportFormatBase, SF_8); + REGISTER_CLASS_ENUM (ExportFormatBase, SF_16); + REGISTER_CLASS_ENUM (ExportFormatBase, SF_24); + REGISTER_CLASS_ENUM (ExportFormatBase, SF_32); + REGISTER_CLASS_ENUM (ExportFormatBase, SF_U8); + REGISTER_CLASS_ENUM (ExportFormatBase, SF_Float); + REGISTER_CLASS_ENUM (ExportFormatBase, SF_Double); + REGISTER_CLASS_ENUM (ExportFormatBase, SF_Vorbis); + REGISTER (_ExportFormatBase_SampleFormat); + + REGISTER_CLASS_ENUM (ExportFormatBase, D_None); + REGISTER_CLASS_ENUM (ExportFormatBase, D_Rect); + REGISTER_CLASS_ENUM (ExportFormatBase, D_Tri); + REGISTER_CLASS_ENUM (ExportFormatBase, D_Shaped); + REGISTER (_ExportFormatBase_DitherType); + + REGISTER_CLASS_ENUM (ExportFormatBase, Q_None); + REGISTER_CLASS_ENUM (ExportFormatBase, Q_Any); + REGISTER_CLASS_ENUM (ExportFormatBase, Q_LosslessLinear); + REGISTER_CLASS_ENUM (ExportFormatBase, Q_LosslessCompression); + REGISTER_CLASS_ENUM (ExportFormatBase, Q_LossyCompression); + REGISTER (_ExportFormatBase_Quality); + + REGISTER_CLASS_ENUM (ExportFormatBase, SR_None); + REGISTER_CLASS_ENUM (ExportFormatBase, SR_22_05); + REGISTER_CLASS_ENUM (ExportFormatBase, SR_44_1); + REGISTER_CLASS_ENUM (ExportFormatBase, SR_48); + REGISTER_CLASS_ENUM (ExportFormatBase, SR_88_2); + REGISTER_CLASS_ENUM (ExportFormatBase, SR_96); + REGISTER_CLASS_ENUM (ExportFormatBase, SR_192); + REGISTER (_ExportFormatBase_SampleRate); + + REGISTER_CLASS_ENUM (ExportFormatBase, SRC_SincBest); + REGISTER_CLASS_ENUM (ExportFormatBase, SRC_SincMedium); + REGISTER_CLASS_ENUM (ExportFormatBase, SRC_SincFast); + REGISTER_CLASS_ENUM (ExportFormatBase, SRC_ZeroOrderHold); + REGISTER_CLASS_ENUM (ExportFormatBase, SRC_Linear); + REGISTER (_ExportFormatBase_SRCQuality); + + REGISTER_CLASS_ENUM (ExportProfileManager, SMPTE); + REGISTER_CLASS_ENUM (ExportProfileManager, BBT); + REGISTER_CLASS_ENUM (ExportProfileManager, MinSec); + REGISTER_CLASS_ENUM (ExportProfileManager, Frames); + REGISTER_CLASS_ENUM (ExportProfileManager, Off); + REGISTER (_ExportProfileManager_TimeFormat); } diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 311e272903..ffa7d17761 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #include @@ -143,7 +144,8 @@ Session::Session (AudioEngine &eng, _total_free_4k_blocks (0), _bundle_xml_node (0), _click_io ((IO*) 0), - main_outs (0) + main_outs (0), + _metadata (new SessionMetadata()) { bool new_session; diff --git a/libs/ardour/session_export.cc b/libs/ardour/session_export.cc index 0111e4ed0b..aed32e278b 100644 --- a/libs/ardour/session_export.cc +++ b/libs/ardour/session_export.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 1999-2002 Paul Davis + Copyright (C) 1999-2008 Paul Davis 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 @@ -17,35 +17,18 @@ */ -/* see gdither.cc for why we have to do this */ - -#define _ISOC9X_SOURCE 1 -#define _ISOC99_SOURCE 1 -#include -#undef _ISOC99_SOURCE -#undef _ISOC9X_SOURCE -#undef __USE_SVID -#define __USE_SVID 1 -#include -#undef __USE_SVID - -#include -#include -#include - #include #include #include -#include +#include +#include +#include +#include #include #include #include -#include -#include -#include -#include #include #include #include @@ -56,415 +39,28 @@ using namespace std; using namespace ARDOUR; using namespace PBD; -static int -convert_spec_to_info (ExportSpecification& spec, SF_INFO& sfinfo) -{ - if (spec.path.length() == 0) { - error << _("Export: no output file specified") << endmsg; - return -1; - } - - /* XXX add checks that the directory path exists, and also - check if we are overwriting an existing file... - */ - - sfinfo.format = spec.format; - sfinfo.samplerate = spec.sample_rate; - sfinfo.frames = spec.end_frame - spec.start_frame + 1; - sfinfo.channels = min (spec.channels, 2U); - - return 0; -} - -ExportSpecification::ExportSpecification () +boost::shared_ptr +Session::get_export_handler () { - init (); -} - -ExportSpecification::~ExportSpecification () -{ - clear (); -} - -void -ExportSpecification::init () -{ - src_state = 0; - pos = 0; - total_frames = 0; - out = 0; - channels = 0; - running = false; - stop = false; - progress = 0.0; - status = 0; - dither = 0; - start_frame = 0; - end_frame = 0; - dataF = 0; - dataF2 = 0; - leftoverF = 0; - max_leftover_frames = 0; - leftover_frames = 0; - output_data = 0; - out_samples_max = 0; - data_width = 0; - do_freewheel = false; -} - -void -ExportSpecification::clear () -{ - if (out) { - sf_close (out); - out = 0; - } - - if (src_state) { - src_delete (src_state); - src_state = 0; - } - - if (dither) { - gdither_free (dither); - dither = 0; - } - - if (output_data) { - free (output_data); - output_data = 0; - } - if (dataF) { - delete [] dataF; - dataF = 0; - } - if (dataF2) { - delete [] dataF2; - dataF2 = 0; - } - if (leftoverF) { - delete [] leftoverF; - leftoverF = 0; - } - - freewheel_connection.disconnect (); - - init (); -} - -int -ExportSpecification::prepare (nframes_t blocksize, nframes_t frate) -{ - char errbuf[256]; - GDitherSize dither_size; - - frame_rate = frate; - - if (channels == 0) { - error << _("illegal channel count in export specification") << endmsg; - return -1; - } - - if (start_frame >= end_frame) { - error << _("illegal frame range in export specification") << endmsg; - return -1; - } - - if ((data_width = sndfile_data_width(format)) == 0) { - error << _("Bad data width size. Report me!") << endmsg; - return -1; - } - - switch (data_width) { - case 8: - dither_size = GDither8bit; - break; - - case 16: - dither_size = GDither16bit; - break; - - case 24: - dither_size = GDither32bit; - break; - - default: - dither_size = GDitherFloat; - break; + if (!export_handler) { + export_handler.reset (new ExportHandler (*this)); } - - if (convert_spec_to_info (*this, sfinfo)) { - return -1; - } - - /* XXX make sure we have enough disk space for the output */ - - if ((out = sf_open (path.c_str(), SFM_WRITE, &sfinfo)) == 0) { - sf_error_str (0, errbuf, sizeof (errbuf) - 1); - error << string_compose(_("Export: cannot open output file \"%1\" (%2)"), path, errbuf) << endmsg; - return -1; - } - - dataF = new float[blocksize * channels]; - - if (sample_rate != frame_rate) { - int err; - - if ((src_state = src_new (src_quality, channels, &err)) == 0) { - error << string_compose (_("cannot initialize sample rate conversion: %1"), src_strerror (err)) << endmsg; - return -1; - } - - src_data.src_ratio = sample_rate / (double) frame_rate; - out_samples_max = (nframes_t) ceil (blocksize * src_data.src_ratio * channels); - dataF2 = new float[out_samples_max]; - - max_leftover_frames = 4 * blocksize; - leftoverF = new float[max_leftover_frames * channels]; - leftover_frames = 0; - - } else { - out_samples_max = blocksize * channels; - } - - dither = gdither_new (dither_type, channels, dither_size, data_width); - - /* allocate buffers where dithering and output will occur */ - - switch (data_width) { - case 8: - sample_bytes = 1; - break; - - case 16: - sample_bytes = 2; - break; - - case 24: - case 32: - sample_bytes = 4; - break; - - default: - sample_bytes = 0; // float format - break; - } - - if (sample_bytes) { - output_data = (void*) malloc (sample_bytes * out_samples_max); - } - - pos = start_frame; - end_frame = end_frame; - total_frames = end_frame - start_frame; - running = true; - do_freewheel = false; /* force a call to ::prepare_to_export() before proceeding to normal operation */ - - return 0; -} - -int -ExportSpecification::process (nframes_t nframes) -{ - float* float_buffer = 0; - uint32_t chn; - uint32_t x; - uint32_t i; - sf_count_t written; - char errbuf[256]; - nframes_t to_write = 0; - int cnt = 0; - - do { - - /* now do sample rate conversion */ - - if (sample_rate != frame_rate) { - - int err; - - src_data.output_frames = out_samples_max / channels; - src_data.end_of_input = ((pos + nframes) >= end_frame); - src_data.data_out = dataF2; - - if (leftover_frames > 0) { - - /* input data will be in leftoverF rather than dataF */ - - src_data.data_in = leftoverF; - - if (cnt == 0) { - - /* first time, append new data from dataF into the leftoverF buffer */ - - memcpy (leftoverF + (leftover_frames * channels), dataF, nframes * channels * sizeof(float)); - src_data.input_frames = nframes + leftover_frames; - } else { - - /* otherwise, just use whatever is still left in leftoverF; the contents - were adjusted using memmove() right after the last SRC call (see - below) - */ - - src_data.input_frames = leftover_frames; - } - - } else { - - src_data.data_in = dataF; - src_data.input_frames = nframes; - - } - - ++cnt; - - if ((err = src_process (src_state, &src_data)) != 0) { - error << string_compose (_("an error occured during sample rate conversion: %1"), - src_strerror (err)) - << endmsg; - return -1; - } - - to_write = src_data.output_frames_gen; - leftover_frames = src_data.input_frames - src_data.input_frames_used; - - if (leftover_frames > 0) { - if (leftover_frames > max_leftover_frames) { - error << _("warning, leftover frames overflowed, glitches might occur in output") << endmsg; - leftover_frames = max_leftover_frames; - } - memmove (leftoverF, (char *) (src_data.data_in + (src_data.input_frames_used * channels)), - leftover_frames * channels * sizeof(float)); - } - - float_buffer = dataF2; - - } else { - - /* no SRC, keep it simple */ - - to_write = nframes; - leftover_frames = 0; - float_buffer = dataF; - } - - if (output_data) { - memset (output_data, 0, sample_bytes * to_write * channels); - } - - switch (data_width) { - case 8: - case 16: - case 24: - for (chn = 0; chn < channels; ++chn) { - gdither_runf (dither, chn, to_write, float_buffer, output_data); - } - break; - - case 32: - for (chn = 0; chn < channels; ++chn) { - - int *ob = (int *) output_data; - const double int_max = (float) INT_MAX; - const double int_min = (float) INT_MIN; - - for (x = 0; x < to_write; ++x) { - i = chn + (x * channels); - - if (float_buffer[i] > 1.0f) { - ob[i] = INT_MAX; - } else if (float_buffer[i] < -1.0f) { - ob[i] = INT_MIN; - } else { - if (float_buffer[i] >= 0.0f) { - ob[i] = lrintf (int_max * float_buffer[i]); - } else { - ob[i] = - lrintf (int_min * float_buffer[i]); - } - } - } - } - break; - - default: - for (x = 0; x < to_write * channels; ++x) { - if (float_buffer[x] > 1.0f) { - float_buffer[x] = 1.0f; - } else if (float_buffer[x] < -1.0f) { - float_buffer[x] = -1.0f; - } - } - break; - } - - /* and export to disk */ - - switch (data_width) { - case 8: - /* XXXX no way to deliver 8 bit audio to libsndfile */ - written = to_write; - break; - - case 16: - written = sf_writef_short (out, (short*) output_data, to_write); - break; - - case 24: - case 32: - written = sf_writef_int (out, (int*) output_data, to_write); - break; - - default: - written = sf_writef_float (out, float_buffer, to_write); - break; - } - if ((nframes_t) written != to_write) { - sf_error_str (out, errbuf, sizeof (errbuf) - 1); - error << string_compose(_("Export: could not write data to output file (%1)"), errbuf) << endmsg; - return -1; - } - - - } while (leftover_frames >= nframes); - - return 0; + return export_handler; } -int -Session::start_export (ExportSpecification& spec) +void +Session::release_export_handler () { - if (!_engine.connected()) { - return -1; - } - - if (spec.prepare (current_block_size, frame_rate())) { - return -1; + if (!_exporting) { + export_handler.reset(); } - - spec.freewheel_connection = _engine.Freewheel.connect (sigc::bind (mem_fun (*this, &Session::process_export), &spec)); - - cerr << "Start export at pos = " << spec.pos << endl; - - return _engine.freewheel (true); -} - -int -Session::stop_export (ExportSpecification& spec) -{ - /* don't stop freewheeling but do stop paying attention to it for now */ - - spec.freewheel_connection.disconnect (); - spec.clear (); /* resets running/stop etc */ - - Exported (spec.path, name()); - - return 0; } int Session::pre_export () { + wait_till_butler_finished (); /* take everyone out of awrite to avoid disasters */ @@ -489,39 +85,41 @@ Session::pre_export () post_export_position = _transport_frame; Config->set_slave_source (None); + + _exporting = true; + export_status.running = true; + export_abort_connection = export_status.Aborting.connect (sigc::mem_fun (*this, &Session::abort_audio_export)); return 0; } -int -Session::prepare_to_export (ExportSpecification& spec) +int +Session::start_audio_export (nframes_t position, bool realtime) { - int ret = -1; - /* get everyone to the right position */ { boost::shared_ptr dsl = diskstreams.reader(); for (DiskstreamList::iterator i = dsl->begin(); i != dsl->end(); ++i) { - if ((*i)-> seek (spec.start_frame, true)) { + if ((*i)-> seek (position, true)) { error << string_compose (_("%1: cannot seek to %2 for export"), - (*i)->name(), spec.start_frame) + (*i)->name(), position) << endmsg; - goto out; + return -1; } } } - cerr << "Everybdy is at " << spec.start_frame << endl; - /* we just did the core part of a locate() call above, but for the sake of any GUI, put the _transport_frame in the right place too. */ - _transport_frame = spec.start_frame; - _exporting = true; + _transport_frame = position; + + _exporting_realtime = realtime; + export_status.stop = false; /* get transport ready. note how this is calling butler functions from a non-butler thread. we waited for the butler to stop @@ -535,144 +133,107 @@ Session::prepare_to_export (ExportSpecification& spec) post_transport (); /* we are ready to go ... */ + + if (!_engine.connected()) { + return -1; + } - ret = 0; + if (realtime) { + last_process_function = process_function; + process_function = &Session::process_export; + } else { + export_freewheel_connection = _engine.Freewheel.connect (sigc::mem_fun (*this, &Session::process_export_fw)); + return _engine.freewheel (true); + } - out: - return ret; + return 0; } -int -Session::process_export (nframes_t nframes, ExportSpecification* spec) +void +Session::process_export (nframes_t nframes) { - uint32_t chn; - uint32_t x; - int ret = -1; - nframes_t this_nframes; + try { - cerr << "Export process at pos = " << spec->pos << " _exporting = " - << _exporting << " running = " << spec->running << " stop = " - << spec->stop << endl; - - /* This is not required to be RT-safe because we are running while freewheeling */ - - if (spec->do_freewheel == false) { - - /* first time in export function: get set up */ - - if (prepare_to_export (*spec)) { - spec->running = false; - spec->status = -1; - return -1; + if (export_status.stop) { + stop_audio_export (); + return; } - - spec->do_freewheel = true; - } - - if (!_exporting) { - /* finished, but still freewheeling */ - cerr << "\tExport ... not exporting yet, no_roll() for " << nframes <running || spec->stop || (this_nframes = min ((spec->end_frame - spec->pos), nframes)) == 0) { - cerr << "\tExport ... not running or at end, no_roll() for " << nframes <dataF, 0, sizeof (spec->dataF[0]) * nframes * spec->channels); - - /* foreach output channel ... */ + process_without_events (nframes); - for (chn = 0; chn < spec->channels; ++chn) { - - ExportPortMap::iterator mi = spec->port_map.find (chn); - - if (mi == spec->port_map.end()) { - /* no ports exported to this channel */ - continue; - } - - vector& mapped_ports ((*mi).second); - - for (vector::iterator t = mapped_ports.begin(); t != mapped_ports.end(); ++t) { - - /* OK, this port's output is supposed to appear on this channel - */ + /* handle export */ + + ProcessExport (nframes); - AudioPort* const aport = dynamic_cast((*t).first); - MidiPort* const mport = dynamic_cast((*t).first); - if (aport != 0) { - Sample* port_buffer = aport->get_audio_buffer().data(); + } catch (ExportFailed e) { - /* now interleave the data from the channel into the float buffer */ + std::cerr << e.what() << std::endl; + stop_audio_export(); + finalize_audio_export(); - for (x = 0; x < nframes; ++x) { - spec->dataF[chn+(x*spec->channels)] += (float) port_buffer[x]; - } - } else if (mport != 0) { - cerr << "EXPORT MIDI PORT" << endl; - } - } } +} - cerr << "\tprocess " << nframes << endl; +int +Session::process_export_fw (nframes_t nframes) +{ + process_export (nframes); + return 0; +} - if (spec->process (nframes)) { - goto out; +int +Session::stop_audio_export () +{ + if (_exporting_realtime) { + process_function = last_process_function; + } else { + export_freewheel_connection.disconnect(); } - - spec->pos += nframes; - spec->progress = 1.0 - (((float) spec->end_frame - spec->pos) / spec->total_frames); - - cerr << "\t@ " << spec->pos << " prog = " << spec->progress << endl; - /* and we're good to go */ + /* can't use stop_transport() here because we need + an immediate halt and don't require all the declick + stuff that stop_transport() implements. + */ - ret = 0; + realtime_stop (true); + schedule_butler_transport_work (); - out: - if (ret) { - sf_close (spec->out); - spec->out = 0; - unlink (spec->path.c_str()); - spec->running = false; - spec->status = ret; - _exporting = false; + if (!export_status.aborted()) { + ExportFinished (); } + + return 0; - return ret; } void -Session::finalize_export () +Session::finalize_audio_export () { - _engine.freewheel (false); _exporting = false; + export_status.running = false; - /* can't use stop_transport() here because we need - an immediate halt and don't require all the declick - stuff that stop_transport() implements. - */ + if (!_exporting_realtime) { + _engine.freewheel (false); + _exporting_realtime = false; + } - realtime_stop (true); - schedule_butler_transport_work (); + /* Clean up */ + + ProcessExport.clear(); + ExportFinished.clear(); + export_freewheel_connection.disconnect(); + export_abort_connection.disconnect(); + export_handler.reset(); /* restart slaving */ @@ -682,3 +243,10 @@ Session::finalize_export () locate (post_export_position, false, false, false); } } + +void +Session::abort_audio_export () +{ + stop_audio_export (); + finalize_audio_export (); +} diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 8ebf3ab07b..3d5e7fb24e 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -64,6 +64,7 @@ #include #include #include +#include #include #include #include @@ -77,7 +78,6 @@ #include #include #include -#include #include #include #include @@ -200,6 +200,7 @@ Session::first_stage_init (string fullpath, string snapshot_name) _play_range = false; waiting_to_start = false; _exporting = false; + _exporting_realtime = false; _gain_automation_buffer = 0; _pan_automation_buffer = 0; _npan_buffers = 0; @@ -537,6 +538,10 @@ Session::create (bool& new_session, const string& mix_template, nframes_t initia } } + + /* Instantiate metadata */ + + _metadata = new SessionMetadata (); /* set initial start + end point */ @@ -977,6 +982,8 @@ Session::state(bool full_state) node->add_child_nocopy (get_options()); + node->add_child_nocopy (_metadata->get_state()); + child = node->add_child ("Sources"); if (full_state) { @@ -1202,6 +1209,7 @@ Session::set_state (const XMLNode& node) Path extra Options/Config + Metadata Locations Sources AudioRegions @@ -1229,6 +1237,12 @@ Session::set_state (const XMLNode& node) error << _("Session: XML state has no options section") << endmsg; } + if ((child = find_named_node (node, "Metadata")) == 0) { + warning << _("Session: XML state has no metadata section (2.0 session?)") << endmsg; + } else if (_metadata->set_state (*child)) { + goto out; + } + if ((child = find_named_node (node, "Locations")) == 0) { error << _("Session: XML state has no locations section") << endmsg; goto out; @@ -2895,10 +2909,12 @@ Session::controllable_by_id (const PBD::ID& id) } void -Session::add_instant_xml (XMLNode& node) +Session::add_instant_xml (XMLNode& node, bool write_to_config) { Stateful::add_instant_xml (node, _path); - Config->add_instant_xml (node); + if (write_to_config) { + Config->add_instant_xml (node); + } } XMLNode* diff --git a/libs/ardour/session_time.cc b/libs/ardour/session_time.cc index a388e31d80..77b58853c7 100644 --- a/libs/ardour/session_time.cc +++ b/libs/ardour/session_time.cc @@ -568,7 +568,7 @@ Session::jack_timebase_callback (jack_transport_state_t state, } ARDOUR::nframes_t -Session::convert_to_frames_at (nframes_t position, AnyTime& any) +Session::convert_to_frames_at (nframes_t position, AnyTime const & any) { double secs; diff --git a/libs/libsndfile/AUTHORS b/libs/libsndfile/AUTHORS deleted file mode 100644 index 95770ab52d..0000000000 --- a/libs/libsndfile/AUTHORS +++ /dev/null @@ -1,14 +0,0 @@ -The main author of libsndfile is Erik de Castro Lopo . - -The code in the src/GSM610 directory was written by Jutta Degener - and Carsten Bormann . -They should not be contacted in relation to libsndfile or the GSM 6.10 code -that is part of libsndfile. Their original code can be found at: - - http://kbs.cs.tu-berlin.de/~jutta/toast.html - -Code in the src/G72x directory was released by Sun Microsystems, Inc. to the -public domain. Minor modifications were required to integrate these files -into libsndfile. The changes are listed in src/G72x/ChangeLog. - - diff --git a/libs/libsndfile/ChangeLog b/libs/libsndfile/ChangeLog deleted file mode 100644 index df89771c7a..0000000000 --- a/libs/libsndfile/ChangeLog +++ /dev/null @@ -1,6107 +0,0 @@ -2006-04-29 Erik de Castro Lopo - - * tests/util.tpl - Add function testing function exit_if_true(). - - * tests/floating_point_test.tpl - Fix a problem where the test program was not exiting when the test failed. - -2006-04-15 Erik de Castro Lopo - - * src/sndfile.h.in src/sndfile.c src/common.h src/command.c - Implement new commands SFC_GET_SIGNAL_MAX and SFC_GET_MAX_ALL_CHANNELS. - - * doc/commands.html - Document new commands. Other minor updates. - - * tests/peak_chunk_test.c - Update tests for new commands. - -2006-04-02 Erik de Castro Lopo - - * tests/peak_chunk_test.c - Add test for RIFX and WAVEX files. - Try and confuse the PEAK chunk writing by enabling and disabling it. - - * src/sndfile.c - Fix a bug where enabling and disabling PEAK chunk was screwing up. - -2006-03-31 Erik de Castro Lopo - - * src/sndfile.h.in - Add the block of 190 reserved bytes into this struct to allow for - future expansion. - - * src/wav.c src/sndfile.c src/broadcast.c - Significant cleanup of broadcast wave stuff. - - * examples/sndfile-info.c - Fix print message. - - * tests/command_test.c tests/Makefile.am - Complete bext tests, hook test in test suite. - -2006-03-30 Erik de Castro Lopo - - * src/sndfile.h.in - Make coding_history field of SF_BROADCAST_INFO struct a char array instead - of a char pointer. - - * src/sndfile.c src/common.h src/wav.c - Clean up knock on effects of above chnage. - - * examples/sndfile-info.c - Add -b command line option to usage message. - Clean up output of broadcast wave info. - - * src/wav.c - Ignore and skip the 'levl' chunk. - -2006-03-26 Erik de Castro Lopo - - * configure.ac - Fix handling of --enable and --disable configure args. Thanks to Diego - 'Flameeyes' Pettenò who sent the patch. - -2006-03-22 Erik de Castro Lopo - - * doc/win32.html - Make it really clear that although the MSVC++ cannot compile libsndfile, - the precompiled DLL can be used in C++ programs compiled with MSVC++. - -2006-03-18 Erik de Castro Lopo - - * src/aiff.c - Fix bug in writing of INST chunk in AIFF files. - Fix potential bug in writing MARK chunks. - - * src/sndfile.c - Make sure the instrument chunk can only be written at the start of the file. - - * tests/command_test.c - Add check of log buffer. - - * tests/utils.tpl - Add usage of space character to psf_binheader_writef. - -2006-03-17 Erik de Castro Lopo - - * src/Makefile.am tests/Makefile.am - Remove --source-time argument from autogen command lines. - - * src/broadcast.c - New file for EBU Broadcast chunk in WAV files. - - * src/sndfile.c src/sndfile.h.in src/wav.c src/common.h - Add patch from Paul Davis implementing read/write of the BEXT chunk. - -2006-03-16 Erik de Castro Lopo - - * Win32/README-precompiled-dll.txt - New file descibing how to use the precompiled DLL. - - * Win32/Makefile.am - Add Win32/README-precompiled-dll.txt to EXTRA_DIST files. - - * configure.ac - Bump version to 1.0.15. - -2006-03-11 Erik de Castro Lopo - - * src/wav.c - On read, only add the endian flag if the file is big endian. - - * src/ms_adpcm.c - Fixed writing of APDCM coeffs in RIFX files. - - * tests/write_read_test.tpl tests/lossy_comp_test.c - Add tests for RIFX files. - -2006-03-10 Erik de Castro Lopo - - * Mingw-make-dist.sh - Bunch of improvements. - - * doc/win32.html - Update MinGW program versions. - -2006-03-09 Erik de Castro Lopo - - * src/create_symbols_file.py - Fix the library name in created win32 DEF file. Add correct DLL name for - Cygwin DLL. - - * Win32/Makefile.am tests/Makefile.am - Remove redundant files, add win32_ordinal_test to test suite. - - * tests/win32_ordinal_test.c - Update to do test in cygsndfile-1.dll as well. - - * doc/win32.html - Fix typo, mention that -mno-cygwin with the Cygwin compiler does not work. - - * src/wav.c src/wav_w64.c src/sndfile.c src/sndfile.h.in - Apply large patch from Jesse Chappell which adds support for RIFX files. - -2006-03-08 Erik de Castro Lopo - - * Makefile.am - Add Mingw-make-dist.sh to the extra dist files. - - * configure.ac - Fix setting SHLIB_VERSION_ARG for MinGW. - - * tests/win32_ordinal_test.c - New test program to test that the win32 DLL ordinals agree with the DEF - file. - -2006-03-04 Erik de Castro Lopo - - * src/common.h - Add a static inline function to convert an int to a size_t. This will be - a compile to nothing on 32 bit CPUs and a sign extension on 64 bit CPUs. - - * src/aiff.c src/avr.c src/common.c src/xi.c src/gsm610.c - Fix an ia64 problem where a varargs function was being passed an int in - some places and a size_t in other places. - - * src/sd2.c - Add a workaround for situations where OSX seems to add an extra 0x52 bytes - to the start of the resource fork. - -2006-02-19 Erik de Castro Lopo - - * Mingw-make-dist.sh - Add a shell script to build the windows binary/source ZIP file. - - * doc/index.html - Add download link for windows binary/source ZIP file. Add links for GPG - signatures. - - * doc/win32.html - Remove info about building using microsoft compiler. - - * configure.ac - Bump version to 1.0.14. - -2006-02-11 Erik de Castro Lopo - - * src/sd2.c - Improve logging of errors in resource fork parser. - -2006-01-31 Erik de Castro Lopo - - * Win32/Makefile.msvc - Replace au_g72x.* with g72x.*. Thanks to ussell Borogove. - -2006-01-29 Erik de Castro Lopo - - * src/common.c - Make sure return values are initialised header buffer is full. - - * src/wav.c - Add workarounds for messed up WAV files. - -2006-01-21 Erik de Castro Lopo - - * Win32/config.h - Undef HAVE_INTTYPES_H for win32. - - * tests/command_test.c - Don't exit on error in instrument test for XI files. - - * configure.ac - Bump version to 1.0.13. - - * doc/*.html NEWS README - Update version numbers. - -2006-01-19 Erik de Castro Lopo - - * src/xi.c - Start work on add read/write of instrument chunks. - - * src/command_test.c - Add tests for XI instrument chunk. - - * tests/largefile_test.c tests/Makefile.am - Add new test and hook it into the build system. This test will not be run - automatically because it requires 3 Gig of disk space and takes 3 minutes - to run. - -2006-01-10 Erik de Castro Lopo - - * examples/sndfile-play.c - Fix calculation of samples remaining in win32 code. Thanks Axel Roebel. - - * src/common.h - Make sure length of header buffer can hold header plus strings. Thanks Axel - Roebel. - -2006-01-09 Erik de Castro Lopo - - * src/sndfile.h.in src/aiff.c src/wav.c - Apply a patch from John Fitch (Csound project). - Add detune field to SF_INSTRUMENT struct. - Add reading/writing instrument chunks to WAV files. - - * tests/command_test.c - Update SF_INSTRUMENT tests. - - * tests/Makefile.am - Hook instrument tests into test suite. - -2006-01-05 Erik de Castro Lopo - - * configure.ac - Check for because some broken systems (like Solaris) don't have - which is the 1999 ISO C standard file containing int64_t. - - * src/sfendian.h src/common.h - Use if is not available. - -2005-12-30 Erik de Castro Lopo - - * tests/peak_chunk_test.c - Extend and clean up tests. - - * src/sndfile.c - Fix a bug that prevented the turning off of PEAK chunks. - -2005-12-29 Erik de Castro Lopo - - * tests/error_test.c - Make the test distclean correct. - - * src/file_io.c - Fix an SD2 MacOSX bug (reported by vince schwarzinger). - -2005-12-28 Erik de Castro Lopo - - * src/aiff.c tests/command_test.c - Apply a big patch from John ffitch (Csound project) to add reading and - writing of instrument chunks to AIFF files. Also update the test. - -2005-12-10 Erik de Castro Lopo - - * tests/aiff_rw_test.c tests/virtual_io_test.c tests/utils.tpl - Move test function dump_data_to_file() to utils.tpl. - - * tests/error_test.c tests/Makefile.am - Updates, including a new test to test that sf_error() returns a valid error - number. - -2005-12-07 Erik de Castro Lopo - - * examples/list_formats.c - Make sure the SF_INFO struct is memset to all zero before being used. - Thanks to Stephen F. Booth. - - * src/sndfile.c - Make the return value of sf_error() match the API documentation. - -2005-11-19 Erik de Castro Lopo - - * examples/sndfile-convert.c - Allow conversion to raw gsm610. - - * src/common.h src/sndfile.c src/au.c - Remove au_nh_open() and all references to it (wasn't working anyway). - - * tests/headerless_test.c - Add new test for file extension based detection. - - * src/sndfile.c - Rejig file extension based file type detection. - -2005-11-16 Erik de Castro Lopo - - * src/sndfile.c - Add "gsm" as a recognised file extension when no magic number can be found. - - * tests/lossy_comp_test.c tests/Makefile.am - Test headerless GSM610. - -2005-11-13 Erik de Castro Lopo - - * doc/api.html - Fix a minor typo and a minor error. Thanks Christoph Kobe and John Pavel. - -2005-10-30 Erik de Castro Lopo - - * src/wav_w64.c - Add more reporting of 'fmt ' chunk for G721 encoded files. - - * src/wav.c - Gernerate a more correct 20 byte 'fmt ' chunk rather than a 16 byte one. - -2005-10-29 Erik de Castro Lopo - - * src/G72x/g72x.[ch] - Minor cleanup of interface. - -2005-10-28 Erik de Castro Lopo - - * src/ogg.c - Removed the horribly broken and non-functional OGG implementation when - --enable-experimental was enabled. When OGG does finally work it will be - merged. - - * src/caf.c - Fix a memory leak. - -2005-10-27 Erik de Castro Lopo - - * src/g72x.c src/G72x/*.(c|h) src/common.h src/sndfile.c src/wav.c src/au.c - Add support for G721 encoded WAV files. - - * doc/index.html - Update support matrix. - - * tests/lossy_comp_test.c - For file formats that support it, add string data after the audio data and - make sure it isn't treated as audio data on read. - - * src/gsm610.c - Add code to ensure that the container close function (ie for WAV files) gets - called after the codec's close function. This allows GSM610 encoded WAV files - to have string data following the audio data. - Add an AIFF specific check on psf->datalength. - - * src/wav.c - Simplify wav_close function. - - * src/aiff.c - Make sure the tailer data gets written at an even file offset. Pad if - necessary. - - * src/common.h - Replace the close function pointer in SF_PRIVATE with separate functions - codec_close and container_close. The former is always called first. - - * src/*.c - Fix knock on effects of above. - -2005-10-26 Erik de Castro Lopo - - * examples/sndfile-info.c - Complete dumping SF_INSTRUMENT data. - - * src/dwvw.c src/ima_adpcm.c src/gsm610.c src/ms_adpcm.c - Add extra checks in *_init function. - - * tests/lossy_comp_test.c - Add a string comment to the end of the files to make sure that the decoder - doesn't decode beyond the end of the audio data section. - -2005-10-25 Erik de Castro Lopo - - * examples/sndfile-info.c - Minor code cleanup. - Start work on dumping SF_INSTRUMENT data. - -2005-10-23 Erik de Castro Lopo - - * src/sndfile.h.in src/common.h src/common.c - Update definition of SF_INSTRUMENT struct and create a function to allocate - and initialize the struct (input from David Viens). - Clean up definition of SF_INSTRUMENT struct. - - * src/wav.c src/wav_w64.c - Add support for Ambisoncs B WAVEX files (David Viens). - - * src/aiff.c src/wav.c src/wav_w64.c - Start work on reading/writing the SF_INSTRUMENT data. - - * src/sndfile.c - Add code to get and set SF_INSTRUMENT data. - - * tests/command_test.* tests/Makefile.am - Add test for set and getof SF_INSTRUMENT data. - The file command_test.c is no longer autogen generated. - -2005-10-15 Erik de Castro Lopo - - * src/gsm610.c - Minor cleanup. - -2005-10-14 Erik de Castro Lopo - - * tests/lossy_comp_test.c - Minor cleanup. - -2005-10-13 Erik de Castro Lopo - - * src/*.c - Ensure sfconfig.h is included before any other header file. - - * src/file_io.c - Add comments documenting the three sections of the file. - - * src/gsm610.c - Make sure SF_FORMAT_WAVEX are handled correctly. - -2005-10-07 Erik de Castro Lopo - - * configure.ac - Add options to allow disabling of FLAC and ALSA. Suggested by Ben Greear. - -2005-09-30 Erik de Castro Lopo - - * tests/locale_test.c - Modify the way the unicode strings were encoded so that older compilers - do not complain. Thanks Axel Roebel. - - * configure.ac - Bump the version to 1.0.12 for release. - - * NEWS README Win32/config.h doc/(FAQ|index.html|command|api).html - Update version numbers. - -2005-09-26 Erik de Castro Lopo - - * src/flac.c - Fix valgrind error and minor cleanup. - -2005-09-25 Erik de Castro Lopo - - * src/(au|paf|aiff|w64|wav|svx).c - Make sure structs are initialised. - -2005-09-24 Erik de Castro Lopo - - * configure.ac - Make -Wdeclaration-after-statement work with --enable-gcc-werror configure - option. - Add -std=gnu99 (C99 plus posix style stuff like gmtime_r) to CFLAGS if the - compiler supports it. - -2005-09-23 Erik de Castro Lopo - - * configure.ac acinclude.m4 - Add -Wdeclaration-after-statement to CFLAGS if the compilers supports it. - -2005-09-22 Erik de Castro Lopo - - * tests/util.(tpl|def) - Make the test_write_*_or_die() functions const safe. - -2005-09-21 Erik de Castro Lopo - - * src/nist.c - Make sure the data offset is read from the file header. Thanks to - David A. van Leeuwen for a patch. - -2005-09-20 Erik de Castro Lopo - - * configure.ac src/sfconfig.h - Check for and the function setlocale(). - Set config variables to zero if not found. - - * tests/locale_test.c tests/Makefile.am - Add new test program and hook into build/test system. - -2005-09-18 Erik de Castro Lopo - - * src/common.h src/file_io.c - On windows, use windows specific types for file handles. - Add functions psf_init_files() and psf_use_rsrc(). - - * src/sd2.c - Make resource fork handling independant of file desciptor/handles. - - * src/sndfile.c src/test_file_io.c - Fix knock on effects. - -2005-09-06 Erik de Castro Lopo - - * src/float_cast.h - The lrint and lrintf implementations in Cygwin are both buggy and slow. - Add replacements which were pulled from the Public Domain MinGW math.h - header file. - -2005-09-05 Erik de Castro Lopo - - * tests/(lossy_comp_test|virtual_io_test).c - More Valgrind fixups. - - * configure.ac - Simplify and correct configuring for Cygwin. - - * Win32/config.h Win32/sndfile.h Win32/Makefile.msvc - Update build for MSVC. - -2005-09-04 Erik de Castro Lopo - - * tests/lossy_comp_test.c - Make sure to close SNDFILE when exiting test when file format is not seekable. - - * tests/(aiff_rw_test|virtual_io_test).c - Do a few valgrind fix ups. - -2005-09-03 Erik de Castro Lopo - - * src/float32.c src/double64.c - Replace floating point equality comparisons with greater/less comparisons. - Found by John Pavel using the Intel compiler. - - * src/sfconfig.h - New file to clean up issues surrounding autoconf generated preprocessor - symbols. - - * src/*.(c|h) tests/*.(c|tpl) examples/*.c - Fixed a bunch of other stuff found by John Pavel using the Intel compiler. - - * src/file_io.c - Remove Mac OS9 Metrowerks compiler specific hacks. - -2005-08-31 Erik de Castro Lopo - - * src/w64.c - Cast integer literal to sf_count_t in call to psf_binheader_writef() to - prevent Valgrind error. - -2005-08-30 Erik de Castro Lopo - - * doc/command.html - Improve documentation of SF_GET_FORMAT_SUBTYPE. - -2005-08-26 Erik de Castro Lopo - - * examples/sndfile-convert.c - Allow files to be converted to SD2 format. - - * src/sd2.c - Fix a bug in reading and writing of SD2 files on little endian CPUs. - Thanks to Matthew Willis for finding this. - -2005-08-25 Erik de Castro Lopo - - * doc/api.html - Update Note2 to point to SFC_SET_SCALE_FLOAT_INT_READ. - -2005-08-16 Erik de Castro Lopo - - * configure.ac - Use $host_os instead of $target_os (thanks to Mo De Jong). - -2005-08-15 Erik de Castro Lopo - - * src/Makefile.am - Apply a patch from Mo DeJong to allow building outside of the source dir. - - * src/file_io.c - Fix psf_fsync() for win32. - - * src/wav.c src/wav_w64.(c|h) - Move some code from wav.c to wav_w64.c to improve the log output of files of - type WAVE_FORMAT_EXTENSIBLE. - -2005-08-10 Erik de Castro Lopo - - * src/create_symbols_file.py - Make sure sf_write_fsync is an exported symbol. - - * examples/sndfile-convert.c - Add support for writing VOX adpcm files. - -2005-07-31 Erik de Castro Lopo - - * doc/api.html - Document the new function sf_write_sync(). - - * doc/FAQ.html - Do you plan to support XYZ codec. - -2005-07-28 Erik de Castro Lopo - - * src/sndfile.h.in src/sndfile.c - Add function sf_write_sync() to the API. - - * src/common.h src/file_io.c - Low level implementation (win32 not done yet). - - * tests/write_read_test.tpl - Use the new function in the tests. - -2005-07-24 Erik de Castro Lopo - - * src/common.h src/double64.c src/float32.c src/sndfile.c - Change the way PEAK chunk info is stored. Peaks now stored as an sf_count_t - for position and a double as the value. - - * src/aiff.c src/caf.c src/wav.c - Fix knock on effects of above changes. - - * src/caf.c - Implement 'peak' chunk for file wuth data in SF_FORMAT_FLOAT or - SF_FORMAT_DOUBLE format. - -2005-07-23 Erik de Castro Lopo - - * src/nist.c - Fix a bug where a variable was being used without being initialized. - - * src/flac.c - Add extra debug in sf_flac_meta_callback. - Make a bunch of private functions static. - - * src/aiff.c src/wav.c - Fix allocation for PEAK_CHUNK (bug found using valgrind). - -2005-07-21 Erik de Castro Lopo - - * src/common.h - Move the peak_loc field of SF_PRIVATE to the PEAK_CHUNK struct. - Remove had_peak field of SF_PRIVATE, use pchunk != NULL instead. - Rename PEAK_CHUNK and PEAK_POS to PEAK_CHUNK_32 and PEAK_POS_32. - - * src/aiff.c src/caf.c src/wav.c src/float32.c src/double64.c - Fix knock on effects from above. - -2005-07-19 Erik de Castro Lopo - - * src/wav.c - Prevent files with unknown chunks from being opened read/write. - -2005-07-14 Erik de Castro Lopo - - * src/flac.c - Do not use psf->end_of_file because it never gets set to anything. - - * src/common.h - Remove unused SF_PRIVATE field end_of_file. - -2005-07-12 Erik de Castro Lopo - - * src/common.c - Change the 'S' format specifier of psf_binheader_writef() to write AIFF - style strings (no terminating character). - - * src/aiff.c - Move to new (correct) AIFF string style. Thanks to Axel Roebel for being - so persistent on this issue. - -2005-07-11 Erik de Castro Lopo - - * src/sndfile.c - Allow SFE_UNSUPPORTED_FORMAT as an error from sf_open(). - - * doc/api.html doc/command.html - Documentation updates (thanks to Kyroz for promoting these updates). - - * src/mat5.c - Modify the way the header is written. - -2005-07-10 Erik de Castro Lopo - - * src/caf.c - Add a 'free' chunk to the written file so that the audio data starts at - an offset of 0x1000. - - * src/sndfile.c - Allow SFE_UNSUPPORTED_FORMAT as an error from sf_open(). - -2005-07-09 Erik de Castro Lopo - - * src/caf.c src/sndfile.c - Add support for signed 8 bit integers. - - * tests/write_read_test.tpl - Add test for signed 8 bit integers in CAF files. - - * doc/index.html - Update matrix for signed 8 bit integers in CAF files. - -2005-07-08 Erik de Castro Lopo - - * src/sndfile.c - Update sf_check_format() to support CAF. - - * examples/sndfile-convert.c - Add support for ".caf" file extension. - - * doc/index.html - Add Apple CAF to the support matrix. - - * src/caf.c - Add file write support. - - * src/common.c - Fix printing of Frames. - - * tests/Makefile.am tests/write_read_test.tpl tests/lossy_comp_test.c - tests/header_test.tpl misc_test.c - Add tests for CAF files. - -2005-07-07 Erik de Castro Lopo - - * doc/FAQ.html - Fix Q/A about reading/writing memory buffers. - - * src/caf.c - Bunch of work to support reading of CAF files. - -2005-07-04 Erik de Castro Lopo - - * src/(aiff|ima_adpcm|mat4|mat5|ms_adpcm).c examples/sndfile-play.c - Fix sign conversion errors reported by gcc-4.0. - - * src/caf.c - New file for Apple's Core Audio File format. - - * src/sndfile.c src/common.h src/sndfile.h.in src/Makefile.am - Hook new file into build system. - -2005-06-21 Erik de Castro Lopo - - * src_wav_w64.c - Fix handling of stupidly large 'fmt ' chunks. Thanks to Vadim Berezniker - for supplying an example file. - - * src/common.h src/sndfile.c - Remove redundant error code SFE_WAV_FMT_TOO_BIG. - -2005-06-20 Erik de Castro Lopo - - * src/sndfile.h.in src/common.h src/sndfile.c - Add public error value SF_ERR_MALFORMED_FILE. - - * src/sndfile.c - When parsing a file header fails and we don't have a system error, then set - the error number to SF_ERR_MALFORMED_FILE (suggested by Kyroz). - - * configure.ac - Allow sqlite support to be disabled in configure script. - - * regtest/database.c regtest/sndfile-regtest.c - Fix compiling when sqlite is missing. - -2005-06-11 Erik de Castro Lopo - - * src/file_io.c - Fix psf_is_pipe() and return value of psf_fread() when using virtual i/o. - - * src/sndfile.c - Fix VALIDATE_AND_ASSIGN_PSF macro for virtual i/o. - - * tests/virtual_io_test.c - Fill in skeleton test program. - - * tests/Makefile.am - Move virtual i/o tests to end of tests with stdio/pipe tests. - - * src/(sndfile.h.in|file_io.c|common.h|sndfile.c) tests/virtual_io_test.c - Rename some of the virtual i/o functions and data types. - -2005-06-10 Erik de Castro Lopo - - * src/sndfile.c - Fix the return values of sf_commands : SFC_SET_NORM_DOUBLE, - SFC_SET_NORM_FLOAT, SFC_GET_LIB_VERSION and SFC_GET_LOG_INFO. Thanks to - Kyroz for pointing out these errors. - - * doc/command.html - Correct documented return values for SFC_SET_NORM_DOUBLE and - SFC_SET_NORM_FLOAT. Thanks to Kyroz again. - -2005-05-17 Erik de Castro Lopo - - * regtest/* - Add new files for sndfile-regtest program. - - * configure.ac Makefile.am - Hook regetest into build. - - * src/wav.c src/common.c - Fix a regression where long ICMT chunks were causing the WAV parser - to exit. - -2005-05-15 Erik de Castro Lopo - - * libsndfile.spec.in - Add html docs to the files section as suggested by Karsten Jeppesen. - - * src/aiff.c - Fix parsing of odd length ANNO chunks. - -2005-05-13 Erik de Castro Lopo - - * src/common.h - Change the include guard to prevent clashes with other code. - -2005-05-12 Erik de Castro Lopo - - * examples/sndfile-play.c - Improve error handling in code for playback under Linux/ALSA. - -2005-05-10 Erik de Castro Lopo - - * src/ircam.c - Fix writing of IRCAM files on big endian systems (thanks to Axel Roebel). - - * src/wav.c - Add workaround for files created by the Peak audio editor on Mac which can - produce files with very short LIST chunks (thanks to Jonathan Segel who - supplied the file). - -2005-04-30 Erik de Castro Lopo - - * src/aiff.c - Apply a patch From David Viens to make the parsing of basc chunks more - robust. - - * src/wav.c - Another patch from David Viens to write correct wavex channel masks for - the most common channel configurations. - -2005-04-08 Erik de Castro Lopo - - * src/command.c - Only allow FLAC in the format arrays if FLAC is enabled. Thanks to - Leigh Smith. - -2005-03-09 Erik de Castro Lopo - - * src/common.h - Add a directory field for storing the file directory to the SF_PRIVATE - struct. - - * src/sndfile.c - Grab the directory name when copying the file path. - - * src/file_io.c - Cleanup psf_open_rsrc() and also check for resource fork in - .AppleDouble/filename. - -2005-03-01 Erik de Castro Lopo - - * src/svx.c - Fix a bug in the printing of the channel count. Bug reported by Michael - Schwendt. Thanks. - -2005-01-26 Erik de Castro Lopo - - * src/paf.c - Fix a seek bug for 24 bit PAF files. - - * tests/write_read_test.tpl - Update write_read_test to trigger the previously hidden PAF seek bug. - -2005-01-25 Erik de Castro Lopo - - * src/aiff.c src/w64.c src/wav.c - Do not return a header parse error when the log buffer overflows. - Continuing parsing works even on files where the log buffer does overflow. - This avoids a bug on some weirdo WAV (and other) files. - - * src/common.h src/sndfile.c - Remove SFE_LOG_OVERRIN error and its associated error message. - - * src/file_io.c - Fix a rsrc fork problem on MacOSX. - -2004-12-31 Erik de Castro Lopo - - * src/sndfile-play.c - In the ALSA output code, added call to snd_pcm_drain() just before - snd_pcm_close() as suggested by Thomas Kaeding. - In the OSS output code, added two ioctls (SNDCTL_DSP_POST and - SNDCTL_DSP_SYNC) just before the close of the audio device. - - * tests/virtual_io_test.c tests/Makefile.am - Add a new test program (currently empty) and add it to the build. - -2004-12-29 Erik de Castro Lopo - - * src/sndfile.h.in src/sndfile.h src/common.h src/file_io.c - src/create_symbols_file.py - Apply patch from Steve Baker which is the beginnings of a virtual - I/O interface. - -2004-12-23 Erik de Castro Lopo - - * src/*.c src/sndfile.h.in - Const-ify the write path throughout the library. - -2004-12-14 Erik de Castro Lopo - - * doc/development.html - Minor improvements. - -2004-11-29 Erik de Castro Lopo - - * doc/bugs.html - Minor improvements. - -2004-11-18 Erik de Castro Lopo - - * src/aiff.c - Add workaround for Logic Platinum AIFF files with broken COMT chunks. - -2004-11-16 Erik de Castro Lopo - - * doc/FAQ.html - Remove some ambiguities in the SD2 FAQ answer. - -2004-11-15 Erik de Castro Lopo - - * Win32/sndfile.h Win32/config.h MacOS9/sndfile.h MacOS9/config.h - Updates from autoconfig versions. - -2004-11-13 Erik de Castro Lopo - - * src/aiff.c - Fix parsing of COMT chunks. Store SF_STR_COMMENT data in ANNO chunks - instead of COMT chunk. - -2004-11-07 Erik de Castro Lopo - - * src/file_io.c src/common.h - Change the ptr argument to psf_write() from "void*" to a "const void*". - Thanks to Tobias Gehrig for suggesting this. - -2004-10-31 Erik de Castro Lopo - - * src/file_io.c src/common.h - Add functions psf_close_rsrc() and read length of resourse fork into - rsrclength field of SF_PRIVATE. - - * src/sd2.c - Make sure resource fork gets closed. - - * tests/util.tpl - Add functions to check for file descriptor leakage. - - * src/write_read_test.tpl - Use the file descriptor leak checks. - - * src/sndfile.h.in - Add SFC_GET_LOOP_INFO and SF_LOOP_INFO struct. - - * src/common.h - Add SF_LOOP_INFO pointer to SF_PRIVATE. - - * src/wav.c src/aiff.c - Improve and add parsing of 'ACID' and 'basc' chunks, filling in - SF_LOOP_INFO data in SF_PRIVATE. - -2004-10-30 Erik de Castro Lopo - - * src/sd2.c - Further cleanup: remove printfs, change snprintf to LSF_SNPRINTF. - - * Win32/config.h Win32/sndfile.h - Updates. - - * tests/util.tpl - Add win32 macro for snprintf. - -2004-10-29 Erik de Castro Lopo - - * src/sfendian.h - Add macros : H2BE_SHORT, H2BE_INT, H2LE_SHORT and H2LE_INT. - - * src/sd2.c - Use macros to make sure writing SD2 files on little endian machines works - correctly. - - * tests/util.tpl - Add a delete_file() function which also deletes the resource fork of SD2 - files. - - * tests/write_read_test.tpl - Use delete_file() so that "make distcheck" works. - -2004-10-28 Erik de Castro Lopo - - * src/sndfile.c src/file_io.c - Move resource filename construction and testing to psf_open_rsrc(). - - * src/common.h src/sndfile.c - Add error SFE_SD2_FD_DISALLOWED. - - * tests/util.tpl tests/*.(c|tpl) - Add and allow_fd parameter to test_open_file_or_die() so that use of - sf_open_fd() can be avoided when opening SD2 files. - -2004-10-27 Erik de Castro Lopo - - * src/wav.c - Update ACID chunk parsing. - - * src/sd2.c - More fixes for files with large resource forks. - -2004-10-23 Erik de Castro Lopo - - * src/common.h src/sndfile.c - Add error numbers and messages for sd2 files. - - * src/sd2.c - Reading of sd2 (resource fork version) now seems to be working. - -2004-10-17 Erik de Castro Lopo - - * src/file_io.h - Update file_io.c to include win32 psf_rsrc_open(). - - * tests/floating_point_test.tpl - Remove use of __func__ in test programs (MSVC++ doesn't grok this). - - * Win32/(config|sndfile).h MacOS9/(config|sndfile).h - Updates. - -2004-10-13 Erik de Castro Lopo - - * src/sfendian.h - Fix endswap_int64_t_(array|copy). - - * src/test_endswap.(tpl|def) - Add tests for above and inprove all tests. - -2004-10-12 Erik de Castro Lopo - - * src/sfendian.h - Improve type safety, add endswap_double_array(). - - * src/double64.c - Use endswap_double_array() instead of endswap_long_array(). - - * src/test_endswap.(tpl|def) src/Makefile.am - Add preliminary endswap tests and hook into build system. - -2004-10-06 Erik de Castro Lopo - - * src/configure.ac src/makefile.am - Finally fix the bulding of DLLs on Win32/MinGW. - - * tests/makefile.am - Fix running of tests on Win32/MinGW. - -2004-10-01 Erik de Castro Lopo - - * src/sndfile.h.in src/sndfile.c tests/floating_point_test.tpl - Rename SFC_SET_FLOAT_INT_MULTIPLIER to SFC_SET_SCALE_FLOAT_INT_READ. - - * doc/command.html - Document SFC_SET_SCALE_FLOAT_INT_READ. - -2004-09-30 Erik de Castro Lopo - - * tests/floating_point_test.(tpl|def) - Derived from floating_point_test.c. - Add (float|double)_(short|int)_test functions. - - * tests/util.(tpl|def) - Make separate float and double versions of gen_windowed_sine(). - - * tests/write_read_test.tpl - Fix after changes to gen_windowed_sine(). - - * src/(float32|double64).c - Implement SFC_SET_FLOAT_INT_MULTIPPLIER. - -2004-09-29 Erik de Castro Lopo - - * acinclude.m4 - Fix warnings from automake 1.8 and later. - - * examples/sndfile-info.c - Add a "fflush (stdout)" after printing Win32 message. - -2004-09-28 Erik de Castro Lopo - - * Win32/Makefile.mingw.in - Add a "make install" target. - -2004-09-24 Erik de Castro Lopo - - * src/sndfile.h.in src/common.h src/sndfile.c src/command.c - Start work on adding command SFC_SET_FLOAT_INT_MULTIPLIER. - -2004-09-22 Erik de Castro Lopo - - * examples/sndfile-convert.c - Fix a bug converting stereo integer PCM files to float. - -2004-09-22 Erik de Castro Lopo - - * examples/sndfile-play.c - Appy patch from Conrad Parker to make Mac OSX error messages more - consistent and informative. - - * doc/api.html - Fix a HTML HREF which was wrong. - - * doc/win32.html - Add information about when nmake fails. - -2004-09-05 Erik de Castro Lopo - - * examples/sndfile-play.c - Another patch from Denis Cote to prevent race conditions. - -2004-09-02 Erik de Castro Lopo - - * src/common.h src/ms_adpcm.c src/ima_adpcm.c - Fix alternative to ISO standard flexible struct array feature for broken - compilers. - -2004-08-31 Erik de Castro Lopo - - * src/common.h src/string.c src/sndfile.c - Make sf_set_string() return an error if trying to set a string when in - read mode. - -2004-08-29 Erik de Castro Lopo - - * src/common.h - Change the unnamed union into a named union so gcc-2.95 will compile it. - - * src/*.c - Fixes to allow for the above change. - -2004-08-20 Erik de Castro Lopo - - * examples/sndfile-play.c - Fixes for Win32. Thanks to Denis Cote. - - * Win32/Win32/Makefile.(msvc|mingw.in) - Fix build system after removal of sfendian.h. - Build sndfile-convert. - - * src/Makefile.am - Remove sfendian.c from dependancies. - -2004-08-10 Erik de Castro Lopo - - * src/sndfile.h.in - Fix typo in comments (thanks Tommi Sakari Uimonen). - -2004-07-31 Erik de Castro Lopo - - * tests/(a|u)law_test.c - Minor cleanup. - -2004-07-29 Erik de Castro Lopo - - * src/(pcm|float|double64|ulaw|alaw|xi).c - Optimise read/write loops by removing a redundant variable. - -2004-07-24 Erik de Castro Lopo - - * src/file_io.c - Remove call to fsync() in psf_close(). - -2004-07-19 Erik de Castro Lopo - - * src/pcm.c - Inline x2y_array() functions where possible. - - * configure.ac - Detect presence of type int64_t. - - * src/sfendian.c src/sfendian.h - Move functions in the first file to the sfendian.h as static inline - functions. - Improve endswap_long_*() where possible. - -2004-07-17 Erik de Castro Lopo - - * src/pcm.c - When converting from unsigned char to float or double, subtract 128 before - converting to float/double rather than after to save a floating point - operation as suggested by Stefan Briesenick. - - * src/(pcm|sfendian|alaw|ulaw|double64|float32).c - Optimize inner loops by changing the loop counting slightly as suggested - by Stefan Briesenick. - - * configure.ac - Detect presence of . - - * src/sfendian.h - Use if present as suggested by Stefan Briesenick. - - * src/pcm.c - Update bytewapping. - -2004-07-02 Erik de Castro Lopo - - * src/common.h src/*.c - Change the psf->buffer field of SF_PRIVATE into a more type safe union with - double, float, int etc elements. - -2004-06-28 Erik de Castro Lopo - - * examples/sndfile-play.c - Merge slightly modifed patch from Stanko Juzbasic which allows playback of - mono files on MacOSX. - -2004-06-25 Erik de Castro Lopo - - * examples/sndfile-convert.c - Move copy_metadata() after the second sf_open(). - -2004-06-21 Erik de Castro Lopo - - * examples/sndfile-convert.c - Fix a bug which caused the program to go into an infinite loop if the source - file has no meta-data. Thanks to Ron Parker for reporting this. - - * src/sndfile.h.in - Add SF_STR_FIRST and SF_STR_LAST to allow enumeration of string types. - - * Win32/sndfile.h MacOS9/sndfile.h - Update these as per the above file. - -2004-06-17 Erik de Castro Lopo - - * configure.ac src/common.h src/ogg.c src/sndfile.c src/sndfile.h.in - src/Makefile.am - Apply large patch from Conrad Parker implementing Ogg Vorbis, Ogg Speex and - Annodex support via liboggz and libfishsound. Thanks Conrad. - -2004-06-15 Erik de Castro Lopo - - * src/avr.c src/ircam.c src/nist.c src/paf.c src/xi.c - Add cast to size_t for some parameters passed to psf_binheader_writef. This - is Debian bug number 253490. Thanks to Anand Kumria and Andreas Jochens. - - * src/w64.c - Found and fixed a bug resulting from use of size_t when writing W64 'fmt ' - chunk. - -2004-06-14 Erik de Castro Lopo - - * configure.ac - Bump version to 1.0.10 ready for release. - - * Makefile.am - Remove redundant files (check_libsndfile.py libsndfile_version_convert.py) - from distribution tarball. - - * tests/header_test.tpl - Fix uninitialised variable. - - * src/GSM610/short_term.c - Fix compiler warning on MSVC++. - -2004-05-23 Erik de Castro Lopo - - * src/wav.c - Improve record keeping of chunks seen and return an error if a file with - unusual chunks is opened in mode SFM_RDWR. - - * src/mmreg.h - This file not needed so remove it. - -2004-05-22 Erik de Castro Lopo - - * tests/header_test.tpl - Add extra_header_test(). - - * src/common.h src/sndfile.c - Add SFE_RDWR_BAD_HEADER error number and string. - -2004-05-21 Erik de Castro Lopo - - * tests/utils.tpl tests/*.c tests/*.tpl - Add a line number argument to check_log_buffer_or_die() and update all - files that use that function. - - * tests/header_test.tpl - Modify/update tests for files opened SFM_RDWR and SFC_UPDATE_HEADER_AUTO. - - * src/aiff.c src/wav.c - Fix another bug in AIFF and WAV files opened in SFM_RDWR and using - SFC_UPDATE_HEADER_AUTO. - - * src/test_file_io.c - Add a test for psf_ftruncate() function. - -2004-05-19 Erik de Castro Lopo - - * src/sndfile.c - Fix another weird corner case bug found by Martin Rumori. Thanks. - - * tests/header_test.(tpl|def) - Two new files to test for the absence of the above bug and include tests - moved from tests/misc_test.c. - - * tests/Makefile.am - Hook new tests into build/test system. - - * tests/misc_test.c - Remove update_header_test() which has been moved to the new files above. - -2004-05-16 Erik de Castro Lopo - - * src/aiff.c - Fixed a bug reported by Martin Rumori on the LAD list. If a file created - with a format of SF_FORMAT_FLOAT and then closed before any data is written - to it, the header can get screwed up (PEAK chunk gets overwritten). - - * tests/write_read_test.tpl - Add a test (empty_file_test) for the above bug. - -2004-05-13 Erik de Castro Lopo - - * Win32/Makefile.mingw.in - Added a Makefile for MinGW (needs to be processed by configure). - - * src/mmsystem.h src/mmreg.h - Add files from the Wine project (under the LGPL) to allow build of - sndfile-play.exe under MinGW. - -2004-05-12 Erik de Castro Lopo - - * src/GSM610/gsm610_priv.h - Replace ugly macros with inline functions. - - * src/GSM610/*.c - Remove temporary variables used by macros and other minor fixes required by - above change. - -2004-05-10 Erik de Castro Lopo - - * tests/pipe_test.tpl tests/stdio_test.c Win32/Makefile.msvc - Make sure these programs compile (even though they do nothing) on Win32 - and add them to the "make check" target. - - * src/sfendian.h - Fix warning on Sparc CPU and code cleanup. - -2004-05-09 Erik de Castro Lopo - - * src/file_io.c - Fix warning messages when compiling under MinGW. - -2004-05-01 Erik de Castro Lopo - - * configure.ac - Set HAVE_FLEXIBLE_ARRAY in src/config.h depending on whether the compiler - accepts the flexible array struct member as per 1999 ISO C standard. - - * src/common.h src/ima_adpcm.c src/paf.c src/ms_adpcm.c - Added ugly #if HAVE_FLEXIBLE_ARRAY and provided a non-standards compliant - hack for non 1999 ISO C compliant compilers. - -2004-04-26 Erik de Castro Lopo - - * src/strings.c - If adding an SF_STR_SOFTWARE string, only append libsndfile-X.Y.Z if the - string does not already have libsndfile in the string. Thanks to Conrad - Parker. - - * tests/string_test.c - Add test to verify the above. - - * examples/sndfile-convert.c - Add ability to transcode meta data as well (Conrad Parker). - -2004-04-25 Erik de Castro Lopo - - * doc/command.html - Fix minor error. Thanks to Simon Burton. - - * doc/win32.html - Started adding instructions for compiling libsndfile under MinGW. - - * configure.ac - Add --enable-bow-docs to enable black text on a white background HTML docs. - - * doc/libsndfile.css.in - This is now a template file for configure which sets the foreground and - background colours. - -2004-04-20 Erik de Castro Lopo - - * configure.ac - Do some MinGW fixes. - - * configure.ac doc/Makefile.am - Install HTML docs when doing make install. - -2004-04-19 Erik de Castro Lopo - - * examples/sndfile-info.c - Print out the dB level with the signal max. - -2004-04-15 Erik de Castro Lopo - - * src/file_io.c - Define S_ISSOCK in src/file_io.c if required. - -2004-04-03 Erik de Castro Lopo - - * configure.ac - Improve printout configuration summary (as suggested by Axel Röbel). - - * doc/index.html - Add link to pre-release location. - - * src/sndfile.h.in - Remove comma after last element of enum. - - * src/float32.c src/double64.c - Fix read/write of float/double encoded raw files to/from pipes. - - * tests/pipe_test.c tests/pipe_test.tpl tests/pipe_test.def - Turn pipe_test.c into an autogenerated file and add tests for reading/ - writing floats and doubles. - - * tests/Makefile.am - Hook tests/pipe_test.* into build system. - -2004-04-02 Erik de Castro Lopo - - * configure.ac acinclude.m4 - Rename AC_C_STRUCT_HACK macro to AC_C99_FLEXIBLE_ARRAY. - -2004-03-31 Erik de Castro Lopo - - * tests/misc_test.c - Perform update_header_test in RDWR mode as well. - - * src/aiff.c - Fix problems when updating header in RDWR mode. - -2004-03-30 Erik de Castro Lopo - - * src/wav.c src/w64.c src/wav_w64.c - Integrate code supplied by David Viens for supporting microsoft's - WAVEFORMATEXTENSIBLE stuff. Thanks David for supplying this. - - * configure.ac doc/*.html - Bump version to 1.0.9. - -2004-03-28 Erik de Castro Lopo - - * src/command.c src/sndfile.c src/sndfile.h.in src/wav.c - Started work on supporting microsoft's WAVEFORMATEXTENSIBLE gunk. - -2004-03-26 Erik de Castro Lopo - - * src/avr.c - New file to handle Audio Visual Resaerch files. - - * src/sndfile.h.in src/common.h src/sndfile.c src/command.c - Hook AVR into everything else. - - * tests/Makefile.am tests/write_read_test.tpl tests/misc_test.c - Add testing for AVR files. - -2004-03-22 Erik de Castro Lopo - - * src/file_io.c - Fix psf_set_file() for win32. Thanks to Vincent Trussart (Plogue Art et - Technologie) for coming up with the solution. - -2004-03-21 Erik de Castro Lopo - - * tests/write_read_test.tpl - Fixed a bug that was causing valgrind to report a memory leak. The bug was - in the test code itself, not the library. - -2004-03-20 Erik de Castro Lopo - - * examples/generate.cs - An example showing how to use libsndfile from C#. Thanks to James Robson - for providing this. - -2004-03-19 Erik de Castro Lopo - - * src/common.c - Fix problems with WAV files containing large chunks after the 'data' - chunk. Thanks to Koen Tanghe for providing a sample file. - -2004-03-17 Erik de Castro Lopo - - * configure.ac - Detect presense of ALSA (Advanced Linux Sound Architecture). - - * examples/sndfile-play.c - Add ALSA output support. - - * examples/Makefile.am - Add ALSA_LIBS to link line of sndfile-play.c. - -2004-03-15 Erik de Castro Lopo - - * acinclude.m4 - Add new macro (AC_C_STRUCT_HACK) to detect whether the C compiler allows - the use of the what is known as the struct hack introduced by the 1999 ISO - C Standard. - - * configure.ac - The last release would not compile with gcc-2.95 due to the use of features - (ie struct hack) introduced by the 1999 ISO C Standard. - Add check to make sure compiler handles this and bomb out if it doesn't. - -2004-03-14 Erik de Castro Lopo - - * tests/write_read_test.tpl - Fix compiler warning on Win32. - - * src/file_io.c - Fix use of an un-initialised variable in Win32 stuff. - - * Win32/config.h examples/sndfile-play.c - Win32 fixes. - -2004-03-10 Erik de Castro Lopo - - * configure.ac - Fix bug which occurres when configuring for MinGW. - If compiler is gcc and cross compiling use -nostdinc. - -2004-03-09 Erik de Castro Lopo - - * src/common.h src/aiff.c src/wav.c src/float32.c src/double64.c - src/sndfile.c - Fix a bug with PEAK chunk handling for files with more than 16 channels. - Thanks to Remy Bruno for finding this. - -2004-03-08 Erik de Castro Lopo - - * src/common.c - Fix a bug which was preventing WAV files being openned correctly if the - file had a very large header. Thanks to Eldad Zack for finding this. - -2004-03-04 Erik de Castro Lopo - - * configure.ac src/file_io.c - Fix cross-compiling from Linux to Win32 using the MinGW tools. - -2004-03-01 Erik de Castro Lopo - - * src/create_symbols_file.sh - Christian Weisgerber pointed out that the shell script did not run on a - real Bourne shell although it did run under Bash in Bourne shell mode. - - * src/create_symbols_file.py - Rewrite of above in Python. Also add support for writing Win32 .def files. - The Python script generates Symbols.linux, Symbols.darwin and - libsndfile.def (Win32 version). These files get shipped with the tarball - so there should not be necessary to run the Python script when building - the code from the tarball. - - * configure.ac src/Makefile.am Win32/Makefile.am - Hook new Python script into the build system. - -2004-02-25 Erik de Castro Lopo - - * src/configure.ac - Add --enable-gcc-werror option and move GCC specific stuff down. - -2004-02-24 Erik de Castro Lopo - - * acinclude.m4 configure.ac - Fix clip mode detection (tested in one of HP's testdrive Itanium II boxes). - - * src/file_io.c - Added check for sizeof (off_t) != sizeof (sf_count_t) to prevent recurrence - of missing large file support on Linux and Solaris. - -2004-02-19 Erik de Castro Lopo - - * examples/sndfile-play.c - Fix a MacOSX specific bug which was caused by a space being inserted in - the middle of a file name. - - * configure.ac src/Makefile.am examples/Makefile.am - Fix a couple of MacOSX build issues. - -2004-02-17 Erik de Castro Lopo - - * doc/command.html - Document SFC_SET_CLIPPING and SFC_GET_CLIPPING. - -2004-02-14 Erik de Castro Lopo - - * doc/*.html - Applied patch from Frank Neumann (author of lakai) which fixes many minor - typos in documentation. Thanks Frank. - -2004-02-13 Erik de Castro Lopo - - * ChangeLog - Changed my email address throughout source and docs. - -2004-02-08 Erik de Castro Lopo - - * src/file_io.c - Make sure config.h is included before stdio.h to make sure large file - support is enabled on Linux (and Solaris). - - * tests/misc_test.c - Disable update_header test on Win32. This should work but doesn't and - I'm not sure why. - - * Make.bat Win32/Makefile.msvc - Updates. - -2004-01-07 Erik de Castro Lopo - - * src/common.h - Changed logindex, headindex and headend files of SF_PRIVATE from unsigned - int to int to prevent weird arithmetic bugs. - - * src/common.c src/aiff.c src/wav.c src/w64.c - Fixed compiler warnings resulting from above change. - -2004-01-06 Erik de Castro Lopo - - * src/common.c - Fixed a bug in header reader for some files with data after the sample data. - -2003-12-29 Erik de Castro Lopo - - * tests/lossy_comp_test.c tests/Makefile.am - Add tests for AIFF/IMA files. - -2003-12-26 Erik de Castro Lopo - - * src/macbinary3.c src/macos.c - Two new files required for handling SD2 files. - - * src/common.h - Add prototypes for functions in above two files. - - * src/Makefile.am - Hook new files into build system. - -2003-12-21 Erik de Castro Lopo - - * configure.ac - Add checks for mmap() and getpagesize() which might be used at some time - for faster file reads. - Add detection of MacOSX. - -2003-12-13 Erik de Castro Lopo - - * doc/FAQ.html - Minor mods to pkg-config section. - -2003-12-12 Erik de Castro Lopo - - * src/create_symbols_file.sh - Andre Pang (also known as Ozone) pointed out that on MacOSX, all non - static symbols are exported causing troubles when trying to link - libsndfile with another library which has any of the same symbols. - He fixed this by supplying the MacOSX linker with a file containing - all the public symbols so that only they would be exported and then - supplied a patch for libsndfile. - This wasn't quite ideal, because I would have to maintain two (3 if - you include Win32) separate files containing the exported symbols. - A better solution was to create this script which can generate a - Symbols file for Linux, MacoSX and any other OS that supports - minimising the number of exported symbols. - - * configure.ac src/Makefile.am - Hook the new script into the build process. - -2003-12-10 Erik de Castro Lopo - - * doc/index.html - Added comments about Steve Dekorte's SoundConverter scam. - -2003-12-07 Erik de Castro Lopo - - * src/file_io.c - Axel Roebel pointed out that on Mac OSX a pipe is not considered a fifo - (S_ISFIFO (st.st_mode) is false) but a socket (S_ISSOCK (st.st_mode) is - true). The test has therefore been changed to is S_ISREG and anything - which which does not return true for S_ISREG is considered a pipe. - -2003-11-25 Erik de Castro Lopo - - * tests/misc_test.c - Fix update_header_test to pass SDS. - - * src/sds.c - More minor fixes. - - * tests/floating_point_test.c - Add test for SDS files. - - * src/command.c - Add SDS to major_formats array. - -2003-11-24 Erik de Castro Lopo - - * tests/write_read_test.tpl tests/misc_test.c - Add tests for SDS files. - - * src/sds.c - Fix a bug in header update code. - -2003-11-23 Erik de Castro Lopo - - * src/sds.c - Get file write working. - - * src/paf.c - Fix a potential bug in paf24_seek(). - -2003-11-04 Erik de Castro Lopo - - * doc/FAQ.html - Add Q/A about u-law encoded WAV files. - - * Win32/*.h - Updated so it compiles on Win32. - -2003-11-03 Erik de Castro Lopo - - * examples/sndfile-convert.c - Add -alaw and -ulaw command line arguments. - - * configure.ac - Add library versioning comments. - Add arguments to AC_INIT. - -2003-10-28 Erik de Castro Lopo - - * src/file_io.c - Ross Bencina has contributed code to replace all of the (mostly broken) - Win32 POSIX emulation calls with calls the native Win32 file I/O API. - This code still needs testing but is likely to be a huge improvemnt - of support for Win32. Thanks Ross. - -2003-10-27 Erik de Castro Lopo - - * src/dwvw.c - Removed filedes field from the DWVW_PRIVATE struct. - - * src/file_io.c - Change psf_fopen() so it returns psf->error instead of the file descriptor. - Add new functions psf_set_stdio() and psf_set_file(). - - * src/sndfile.c - Change these to work with changed psf_fopen() return value. - Remove all uses of psf->filedes from sndfile, making it easier to slot native - Win32 API file handling functions. - - * src/test_file_io.c - Minor changes to make it compile with new file_io.c stuff. - -2003-10-26 Erik de Castro Lopo - - * src/gsm610.h - Rename a variable from true to true_flag. As Ross Bencina points out, - true is defined in the C99 header . - - * src/file_io.c - If fstat() fails, return SF_TRUE instead of -1 (Ross Bencina). - -2003-10-09 Erik de Castro Lopo - - * src/common.h - Increase the size of SF_BUFFER_LEN and SF_HEADER_LEN. - - * src/sndfile.c - Fix sf_read/write_raw which were dividing by psf->bytwidth and - psf->blockwidth which can both be zero. - - * examples/sndfile-info.c - Increase size of BUFFER_LEN. - -2003-09-21 Erik de Castro Lopo - - * configure.ac - Add checks for and ssize_t. - Other Win32/MinGW checks. - - * src/aiff.c src/au_g72x.c src/file_io.c src/gsm610.c src/interleave.c - src/paf.c src/sds.c src/svx.c src/voc.c src/w64.c src/wav.c src/xi.c - Fix compiler warnings. - -2003-09-20 Erik de Castro Lopo - - * tests/scale_clip_test.tpl - Add definition of M_PI if needed. - -2003-09-19 Erik de Castro Lopo - - * configure.ac - Detect if S_IRGRP is declared in . - - * src/file_io.c tests/*.tpl tests/*.c - More fixes for Win32/MSVC++ and MinGW. MinGW does have but that - file doesn't declare S_IRGRP. - -2003-10-18 Erik de Castro Lopo - - * src/config.h.in - Add comment stating that the sf_count_t typedef is determined when - libsndfile is being compiled. - - * tests/utils.tpl - Modified so that utils.c gets one copy of the GPL and not two. - - -2003-09-17 Erik de Castro Lopo - - * Win32/unistd.h src/sf_unistd.h - Move first file to the second. This will help for Win32/MSVC++ and MinGW. - - * Win32/Makefile.am src/Makefile.am - Changed in line with above. - - * Win32/Makefile.msvc - Removed "/I Win32" which is no longer required. - - * src/file_io.c src/test_file_io.c tests/*.tpl tests/*.c - If HAVE_UNISTD_H include else include . This should - work for Win32, MinGW and other fakes Unix-like OSes. - - * src/*.c - Removed #include from files which didn't need it. - -2003-09-16 Erik de Castro Lopo - - * libsndfile.spec.in - Apply fix from Andrew Schultz. - -2003-09-07 Erik de Castro Lopo - - * src/vox_adpcm.c - Only set psf->sf.samplerate if the existing value is invalid. - -2003-09-06 Erik de Castro Lopo - - * examples/sndfile-play.c - Started adding support for ALSA output. - -2003-09-04 Erik de Castro Lopo - - * src/sndfile.h.in - Removed from sndfile.h. - - * src/*.c examples/*.c tests/*.c tests/*.tpl - Added where needed. - -2003-09-02 Erik de Castro Lopo - - * src/common.h - Added ARRAY_LEN, SF_MAX and SF_MIN macros. - -2003-08-19 Erik de Castro Lopo - - * doc/index.html - Remove statements about alternative licensing arrangements. - -2003-08-17 Erik de Castro Lopo - - * MacOS MacOS9 Makefile.am configure.ac - Change directory name from MacOS to MacOS9 - - * MacOS9/MacOS9-readme.txt - Change name to make it really obvious, add text to top of file to make it - still more obvious again. - -2003-08-16 Erik de Castro Lopo - - * src/test_log_printf.c - Add tests for %u conversions. - - * src/common.c - Fix psf_log_printf() %u conversions. - -2003-08-15 Erik de Castro Lopo - - * src/aiff.c - Fixed a bug where opening a file with a non-trival header in SFM_RDWR mode - would over-write part of the header. Thanks to Axel Roebel for pointing - this out. Axel also provided a patch to fix this but I came up with a - neater and more general solution. - Return error when openning an AIFF file with data after the SSND chunk - (Thanks Axel Roebel). - - * tests/aiff_rw_test.c - Improvements to test program which will later allow it to be generalised to - test WAV, SVX and others as required. - -2003-08-14 Erik de Castro Lopo - - * tests/pipe_test.c - Add useek_pipe_rw_test() submitted by Russell Francis. - - * src/sndfile.c - In sf_open_fd(), check if input file descriptor is a pipe. - - * src/sndfile.[ch] - Fix typo in variable name do_not_close_descriptor. - -2003-08-13 Erik de Castro Lopo - - * src/test_log_printf.c - Improve the tests for %d and %s conversions. - - * src/common.c - Fixed a few problems in psf_log_printf() found using new tests. - -2003-08-06 Erik de Castro Lopo - - * configure.ac - Add -Wwrite-strings warning to CFLAGS if the compiler is GCC. Thanks to - Peter Miller (Aegis author) for suggesting this and supplying a patch. - - * src/*.c examples/*.c tests/*.c - Fix all compiler warnings arising from the above. - -2003-08-02 - - * tests/aiff_rw_test.c tests/Makefile.am - New test program to check for errors re-writing the headers of AIFC files - opened in mode SFM_RDWR. - -2003-07-21 Erik de Castro Lopo - - * examples/sndfile-play.c - Applied a patch from Tero Pelander to allow this program to run on systems - using devfs which used /dev/sound/dsp instead of /dev/dsp. - -2003-07-11 Erik de Castro Lopo - - * doc/new_file_type.HOWTO - Updated document. Still incomplete. - -2003-06-29 Erik de Castro Lopo - - * src/sndfile.c - Fix VALIDATE_SNDFILE_AND_ASSIGN_PSF which was returning an error rather - than saving it and returning zero. - -2003-06-25 Erik de Castro Lopo - - * src/file_io.c - Two fixes for Mac OS9. - Fix all casts from sf_count_t to ssize_t (not size_t). - -2003-06-22 Erik de Castro Lopo - - * src/wav.c - Fix for reading files with RIFF length of 8 and data length of 0. - -2003-06-14 Erik de Castro Lopo - - * src/*.c tests/*.c tests/*.tpl - Added comments to mark code for removal when make Lite version of - libsndfile. - -2003-06-09 Erik de Castro Lopo - - * examples/sndfile-convert.c - Add extra error checking for unrecognised arguments. - -2003-06-08 Erik de Castro Lopo - - * src/ima_adpcm.c - Started adding code to write IMA ADPCM encoded AIFF files. - - * src/test_log_printf.c src/Makefile.am - New file to test psf_log_printf() function and add hooks into build system. - - * src/common.c - Move psf_log_printf() function to top of the file and only compile the rest - of the file if if PSF_LOG_PRINTF_ONLY is not defined. - -2003-06-03 Erik de Castro Lopo - - * Win32/config.h Win32/sndfile.h - Updated with new config variables. - - * Win32/unistd.h src/file_io.c - Added implementation of S_ISFIFO macro which Win32 seems to lack and is - used in src/file_io.c. - - * tests/utils.tpl - Added #include to pull in Win32/unistd.h so it compiles for - Win32. - - * src/Makefile.msvc - Added src\test_file_io.exe build target and run this as the very first - test. - - * tests/win32_test.c - Add support for testing Cygwin32. - - * configure.ac - Detect POSIX fsync() and fdatasync() functions. - - * src/file_io.c - If compiling for Cygwin, call fsync() before calling fstat() to retrieve - file length. - - * tests/pcm_test.tpl - Add a test for lrintf() function. This was required to detect a really - broken lrint() and lrintf() on Cygwin. - - * tests/misc_test.c - Don't run permission test when compiling under Cygwin. - - * src/float_cast.h - Fix fallback macro for lrint() and lrintf() to cast to long instead of int - to match official function prototypes. - -2003-06-02 Erik de Castro Lopo - - * examples/sndfile-convert.c - Modifications to improve accuracy of conversions; use double data for - floating point and int for everything else. - - * src/ima_apdcm.c - Completed work on decoding IMA ADPCM encoded AIFF files. Still need to - get encoding working. - -2003-05-28 Erik de Castro Lopo - - * src/aiff.c src/ima_adpcm.c - Start working on getting IMA ADPCM encoded AIFF files working. - -2003-05-27 Erik de Castro Lopo - - * configure.ac - Fixed the touch command for when the autogen program is not found (Matt - Flax). - - * src/ulaw.c src/alaw.c - Made these pipe-able. - -2003-05-24 Erik de Castro Lopo - - * src/paf.c src/ircam.c - Fixed writing to pipe. - - * src/wav.c src/aiff.c src/nist.c src/mat*.c src/svx.c src/w64.c - Return SFE_NO_PIPE_WRITE if an attempt is made to write to a pipe. - -2003-05-23 Erik de Castro Lopo - - * examples/sndfile-info.c - Modified to detect unknown file lengths. - - * src/mat4.c - Fix reading from a pipe. - -2003-05-22 Erik de Castro Lopo - - * tests/pipe_test.c - Add more file types to tests. - - * src/mat4.c - Removed explicit setting of psf->sf.seekable to SF_TRUE. - - * tests/utils.tpl - Add macro for generating and check data in the stdio and pipe tests. - - * tests/stdout_test.c tests/stdin_test.c - Use the above macro to generate known data on output and check data on - input. - - * src/voc.c src/htk.c common.h sndfile.c - Disallow reading/writing VOC and HTK files from/to pipes be returning new - error values. - - * src/w64.c - Fixes to allow reading from a pipe. - -2003-05-21 Erik de Castro Lopo - - * configure.ac src/sndfile.h.in - When the configure script determines the sizeof (sf_count_t), also set the - value of SF_COUNT_MAX in sndfile.h. - - * configure.ac - Remove -pedantic flag from default GCC compiler flags. - - * tests/pipe_test.c - Add a pipe_read_test() before doing pipe_write_test(). - - * tests/scale_clip_test.c - Add test to make sure non-normalized values also clip in the right way. - -2003-05-18 Erik de Castro Lopo - - * configure.ac - Add test to detect processor clipping capabilities. - - * tests/stdin_test.c tests/stdout_test.c - Fix a pair of compiler warnings. - - * src/common.h - Add new pipeoffset field to SF_PRIVATE. This will contain the current file - offset when operating on a pipe. - - * src/common.c - Removed direct calls to psf_fread()/psf_fseek()/psf_fgets() etc from - psf_binheader_readf and redirect them to new buffered versions - header_read(), header_seek() and header_gets(). - Add "G" format specifier to emulate fgets() functionality with buffering. - This will allow reading some file types from pipes. - - * src/file_io.c - When the file descriptor is a pipe, manintain psf->pipeoffset. - - * src/pvf.c - Change use of psf_fgets() to psf_binheader_readf() as required but changes to header re - - * src/au.c - Fix reading from a pipe. - -2003-05-17 Erik de Castro Lopo - - * src/pcm.c - Add clipping versions of the f2XXX_array() functions to allow option of - clipping data that would otherwise overflow. - - * tests/scale_clip_test.tpl tests/scale_clip_test.def - New files test that clipping option does actually work. - -2003-05-14 Erik de Castro Lopo - - * doc/index.html - Fixed a typo ("OS(" instead of "OS9"). - -2003-05-13 Erik de Castro Lopo - - * tests/open_fail_test.c - Include to prevent warning message of missing declaration of - memset(). - -2003-05-12 Erik de Castro Lopo - - * src/common.h - Add new "add_clipping" field to SF_PRIVATE. - - * src/sndfile.h.in src/sndfile.c - Add command SFC_SET_CLIPPING which sets/resets add_clipping field. - -2003-05-11 Erik de Castro Lopo - - * doc/api.html - Add docs for sf_set_string() and sf_get_string(). - - * src/common.h src/sndfile.c - Add new SFE_STR_BAD_STRING error. - - * tests/stdin_test.c tests/stdout_test.c - Removed all non-error print statements. - - * tests/stdio_test.c tests/pipe_test.c tests/Makefile.am - Add print statements removed from two files above. - -2003-05-10 Erik de Castro Lopo - - * libsndfile.spec.in - Fixed a coulpe of minor errors discovered by someone calling themselves - Agent Smith. - - * src/common.c src/common.h src/file_io.h - Added is_pipe field to SF_PRIVATE and declaration of psf_is_pipe() - function. (Axel Roebel) - - * src/sndfile.c - Fixed determination of whether the file is a pipe. (Axel Roebel) - - * src/paf.c - Force paf24 to start with undefined mode. (Axel Roebel) - - * tests/pipe_test.c - Mods to make this test work and actually do the test on RAW files. (Axel - Roebel). - -2003-05-05 Erik de Castro Lopo - - * src/sndfile.c - Fixed a potential bug where psf->sf.seekable was being set to FALSE when - operating on stdin or stdout but then the default initialiser was reseting - it to TRUE. Thanks to Axel Roebel. - - * src/aiff.c - Fixed a bug in the header parser where it was not handling an odd length - COMM chunk correctly. Thanks to Axel Roebel. - - * src/test_file_io.c - Add more tests. - - * tests/win32_test.c - New file for showing the bugs in the Win32 implementation of the POSIX API. - It also runs on Linux for sanity checking. - - * tests/Makefile.am Win32/Makefile.msvc - Hook the new test program into the build system. - -2003-05-04 Erik de Castro Lopo - - * src/test_file_io.c - New test program to test operation of functions defined in file_io.c. This - should make supporting win32 significantly easier. - - * src/Makefile.am - Hook new test program into the build system. - - * src/file_io.c - Add compile/run time check that sizeof statbuf.st_size and sf_count_t are - the same. - - * src/common.h src/sndfile.c - Added new error code and error message for new check. - - * tests/benchmark.tpl - Fix to use frames instead of samples in SF_INFO. - -2003-05-03 Erik de Castro Lopo - - * src/file_io.c - More stuffing about working around PLAIN OLD-FASHIONED **BUGS** in Win32. - - * examples/sndfile-info.c - Applied patch from Conrad Parker to add "--help" and "-h" options as - well as an improved usage message. - -2003-05-02 Erik de Castro Lopo - - * src/au.c - Added embedded file support. - - * tests/multi_file_test.c - Added tests for embedded AU files. - Added verbose testing mode. - - * src/common.h src/sndfile.c - Added an embedded AU specific error code and message. - - * src/wav.c - Added patch from Conrad Parker which filled in a little more information - about ACIDized WAV files. - -2003-04-30 Erik de Castro Lopo - - * src/file_io.c - Fixed Win32 version of psf_fseek() which was calling psf_get_filelen() - which was in turn calling psf_fseek() which in the end blew the stack. - Now of course this would have been easy to find on Linux, but this blow - up was happening in kernel32.dll and the fscking MSVC++ debugger couldn't - figure out what call caused this (it couldn't even tell me the stack had - overflowed) and was absolutley useless for this debugging exercise. - On top of that, the reason I got into this mess was that windoze doesn't - have a working fstat() function which can return file lengths > 2 Gig. It - HAS a fscking _fstati64() but the file length value is only updated AFTER - the bloody file is closed. That makes it completely useless. - How the hell do people stand working on this crap excuse of an OS? - -2003-04-29 Erik de Castro Lopo - - * Win32/unistd.h src/file_io.c - Moved definitions of S_IGRP etc from file_io.c to unistd.h so that these - can be used in the test programs. - - * Win32/libsndfile.def - Added sf_open_fd. - - * Win32/sndfile.h - Updated to match src/sndfile.h.in. - - * Win32/Makefile.msvc - Added dither.c and htk.c to libsndfile.dll target. - -2003-04-28 Erik de Castro Lopo - - * src/file_io.c - First attempt at getting the Win32 versions of the these functions working. - They still need to be tested. - -2003-04-27 Erik de Castro Lopo - - * src/strings.c - Found and fixed a bug which was causing psf_store_string() to fail on - Motorola 68k processors. Many thanks fo Joshua Haberman (Debian maintainer - of libsndfile) for compiling and running debug code to help me debug the - problem. - -2003-04-26 Erik de Castro Lopo - - * src/sndfile.c src/file_io.c src/wav.c src/aiff.c - Much hacking to get reading and writing of embedded files working (ie sound - files at a non-zero files offset). - - * doc/embedded_files.html - First pass atempt at documenting reading/writing embedded files. - -2003-04-21 Erik de Castro Lopo - - * doc/FAQ.html - Updated answer to "Why doesn't libsndfile do interleaving/de-interleaving?" - -2003-04-19 Erik de Castro Lopo - - * src/wav.c src/aiff.c - Fix retrieving and storing of string data from files. Need to be careful - about using psf->buffer for strings. - -2003-04-18 Erik de Castro Lopo - - * src/file_io.c - Fix psf_fseek() for seeks withing embedded files. - -2003-04-15 Erik de Castro Lopo - - * src/sndfile.h.in - Changed the definition of SNDFILE slightly to produce warnings when it isn't - used correctly. This should have zero affect in code which uses the SNDFILE - type correctly. - - * src/sndfile.c - Fixed a few compiler warnings cause by the changes to the SNDFILE type. - -2003-04-12 Erik de Castro Lopo - - * doc/FAQ.html - Added question and answer to the question "How about adding the ability - to write/read sound files to/from memory buffers?". - -2003-04-08 Erik de Castro Lopo - - * tests/write_read_test.tpl - Removed un-needed enums declaring TRUE and FALSE and replaced usage of - these with SF_TRUE and SF_FALSE. - - * tests/multi_file_test.c - New test program to test sf_open_fd() on files containing data other than - a single sound file. - -2003-04-06 Erik de Castro Lopo - - * src/file_io.c - When creating files, set the readable by others flag. This still allows - further restrictions to be enforced by use of the user's umask. Fix - suggested by Eric Lyon. - -2003-04-05 Erik de Castro Lopo - - * src/sndfile.h.in src/sndfile.c - Changed sf_open_fd(). Dropped offset parameter and added a close_desc - parameter. If close desc is TRUE, the file descritpor passed into the - library will be closed when sf_close() is called. - - * tests/utils.tpl - Modified call to sf_open_fd() to set close_desc parameter to SF_TRUE. - -2003-04-04 Erik de Castro Lopo - - * tests/write_read_test.tpl - Add a string (using sf_set_string() function) before and after data section - of all files. This will make sure that if string data can be added, it - doesn't overwrite real audio data. - -2003-04-02 Erik de Castro Lopo - - * src/sndfile.c - Started work on supporting a non-zero offset parameter for sf_open_fd (). - - * src/.c - Removed many uses of psf_fseek (SEEK_END) which to allow for future use of - sf_open_fd() with non-zero offset. - Associated refactoring. - - * src/aiff.c - Implemented functionality required to get sf_get_string() and - sf_set_string() working for AIFF files. - -2003-04-01 Erik de Castro Lopo - - * tests/utils.tpl - Modified test_open_file_or_die() to alternately use sf_open() and - sf_open_fd(). - - * src/svx.c - Fixed a bug which occurred when openning an existing file for read/write - using sf_open_fd(). In this case, the existing NAME chunk needs to be - read into psf->filename. - Fixed printing of sf_count_t types to logbuffer. - -2003-03-31 Erik de Castro Lopo - - * src/sndfile.h.in - Added prototype for new function sf_open_fd(). - - * src/sndfile.c - Moved most of the code in sf_open() to a new function psf_open_file(). - Created new function sf_open_fd() which also uses psf_open_file() but - does not currently support the offset parameter. - - * doc/api.html - Document sf_open_fd(). - -2003-03-09 Erik de Castro Lopo - - * src/sndfile.c - Fixed a memory leak reported by Evgeny Karpov. Memory leak only occurred - when an attempt was made to read and the open() call fails. - -2003-03-08 Erik de Castro Lopo - - * tests/open_fail_test.c - New test program to check for memory leaks when sf_open fails on a valid - file. Currently this must be run manually under valgrid. - - * tests/Makefile.am - Hook new test program into build. - -2003-03-03 Erik de Castro Lopo - - * Octave/sndfile_save.m Octave/sndfile_play.m - Added a -mat-binary option to the octave save command to force the output - to binary mode even if the user has set ascii data as the default. Found - by Christopher Moore. - -2003-02-27 Erik de Castro Lopo - - * doc/dither.html - New file which will document the interface which allows the addition of - audio dither when sample word sizes are being reduced. - - * src/dither.c - More work. - -2003-02-26 Erik de Castro Lopo - - * tests/misc_test.c - In update_header_test(), make HTK files a special case. - - * doc/index.html - Added HTK to the feature matrix. - -2003-02-25 Erik de Castro Lopo - - * src/htk.c - New file for reading/writing HMM Tool Kit files. - - * src/sndfile.h.in src/sndfile.c src/command.c src/Makefile.am - Hook in htk.c - - * tests/write_read_test.tpl tests/misc_test.c tests/Makefile.am - Add tests for HTK files. - -2003-02-22 Erik de Castro Lopo - - * src/wav.c - Fixed a bug where the LIST chunk length was being written incorrectly. - - * tests/string_test.c - Added call to check_log_buffer(). - Minor cleanups. - -2003-02-10 Erik de Castro Lopo - - * src/wav_w64.h - Applied patch from Antoine Mathys to add extra WAV format definitions and - a G72x_ADPCM_WAV_FMT struct definition. - - * src/wav_w64.c - Applied patch from Antoine Mathys which converts wav_w64_format_str() from - one huge inefficient switch statement to a binary search. - - * tests/string_test.c - Dump log buffer if tests fail. - -2003-02-07 Erik de Castro Lopo - - * tests/string_test.c - David Viens supplied some modifications to this file which showed up a bug - when using sf_set_string() and the sf_writef_float() functions. - - * src/sndfile.c - Fixed the above bug. - -2003-02-06 Erik de Castro Lopo - - * doc/FAQ.html - Added Q and A on how to detect libsndfile in configure.in (at the suggestion - of Davy Durham). - -2003-02-05 Erik de Castro Lopo - - * src/sndfile.h.in - Add enums and typedefs for dither. - Deprecate SFC_SET_ADD_DITHER_ON_WRITE and SFC_SET_ADD_DITHER_ON_READ, to be - replaced with SFC_SET_DITHER_ON_WRITE and SFC_SET_DITHER_ON_READ which will - allow different dither algorithms to be enabled. - Added SFC_GET_DITHER_INFO_COUNT and SFC_GET_DITHER_INFO. - - * src/sndfile.h.in src/Version_script.in Win32/libsndfile.def. - Added public sf_dither_*() functions. - - * src/sndfile.c - Implement commands above. - - * src/dither.c - More work. Framework and external hooks into dither algorithms complete. - -2003-02-03 Erik de Castro Lopo - - * doc/version-1.html libsndfile_version_convert.py - Remove redundant files. - - * doc/index.html doc/api.html - Remove links to version-1.html. - - * src/dither.c - New file to allow the addition of audio dither on input and output. - - * src/common.h - Add prototype for dither_init() function. - - * Makefile.am doc/Makefile.am - Changes for added and removed files. - -2003-02-02 Erik de Castro Lopo - - * Win32/Makefile.msvc - Changes to force example binaries to be placed in the top level directory - instead of the examples/ directory. - Add src/strings.c and src/xi.c to the build. - Add string_test to build and to tests on WAV files. - - * doc/index.html - Added XI to support matrix. - -2003-01-27 Erik de Castro Lopo - - * src/sndfile.h.in - Added prototypes for sf_get_string() and sf_set_string() and SF_STR_* - enum values. - - * src/sndfile.c - Added public interface to sf_get_string() and sf_set_string(). - - * src/wav.c - Added code for setting and getting strings in WAV files. - - * tests/string_test.c - New test program for sf_get_string() and sf_set_string() functionality. - - * tests/Makefile.am - Hook new test program into build and test framework. - -2003-01-26 Erik de Castro Lopo - - * src/common.h - Added fields to SF_PRIVATE for string data needed to implement - sf_get_string() and sf_set_string(). - - * src/strings.c - New file for storing and retrieving strings to/from files. - - * src/Makefile.am - Added strings.c to build. - -2003-01-25 Erik de Castro Lopo - - * src/xi.c - Read seems to be working so looking at write. - - * src/sndfile.h.in - Added SF_FORMAT_XI, SF_FORMAT_DPCM_8 and SF_FORMAT_DPCM_16 enum values. - - * tests/floating_point_test.c tests/lossy_comp_test.c tests/Makefile.am - Added test for 8 and 16 bit XI format files. - -2003-01-24 Erik de Castro Lopo - - * doc/index.html - Added a non-lawyer readable summary of the licensing provisions as - suggested by Steve Dekorte. - -2003-01-23 Erik de Castro Lopo - - * src/wav.c - Fixed a compiler warning found by Alexander Lerch. - -2003-01-18 Erik de Castro Lopo - - * configure.ac - Fixed the multiple linking of libm. - -2003-01-17 Erik de Castro Lopo - - * Win32/Makefile.mcvs - Added comments on the correct way to set up the MSVCDir environment - variable. - - * doc/win32.html - Add on how to set up the MSVCDir environment variable. - -2003-01-15 Erik de Castro Lopo - - * examples/sndfile-play.c examples/sndfile-info.c - When run on Win32 without any command line parameters print a message and - then sleep for 5 seconds. This means the when somebody double clicks on - these programs in explorer the user will actually see the message. - -2003-01-14 Erik de Castro Lopo - - * tests/misc_test.c - Bypass permission test if running as root because root is allowed to open - a readonly file for write. - -2003-01-08 Erik de Castro Lopo - - * Win32/Makefile.msvc - Added pvf.c and xi.c source files to project. - - * src/sndfile.h - Updated for PVF files. - -2003-01-07 Erik de Castro Lopo - - * src/sndfile.c - Modified validate_sfinfo() to force samplerate, channels and sections - to be >= 1. - In format_from_extension() replaced calls to does_extension_match() - with strcmp(). - - * src/xi.c - More work. - -2003-01-06 Erik de Castro Lopo - - * doc/Makefile.am - Added octave.html which had been left out. Found by Jan Weil. - -2003-01-05 Erik de Castro Lopo - - * src/pvf.c src/common.h src/sndfile.c - Fixed error handling for PVF files. - - * src/xi.c - New file for handling Fasttracker 2 Extended Instrument files. Not working - yet and included when configured with --enable-experimental. - - * src/sndfile.c src/common.h - Hooked in new file xi.c. - -2002-12-30 Erik de Castro Lopo - - * src/rx2.c - Added a patch from Marek Peteraj which sheds a little more light on the - slices within an RX2 file. Still need to find out data encoding. - -2002-12-20 Erik de Castro Lopo - - * src/wav.c - Started work on decoding 'acid' and 'strc' chunks. - -2002-12-14 Erik de Castro Lopo - - * tests/peak_check_test.c - Minor cleanup. - -2002-12-12 Erik de Castro Lopo - - * tests/write_read_test.tpl - Added check to make sure no error was generated when an attempt was made to - read past the end of the file. - -2002-12-11 Erik de Castro Lopo - - * doc/lists.html - Added "mailto" links for all three lists. - - * src/pvf.c - New file for Portable Voice Format files. - - * src/sndfile.h.in src/sndfile.c src/common.h src/command.c src/Makefile.am - Added hooks for SF_FORMAT_PVF format files. - - * tests/write_read_test.tpl tests/std*.c - Add tests for SF_FORMAT_PVF. - - * doc/index.html - Add PVF to the compatibility matrix. - - * src/pcm.c src/alaw.c src/ulaw.c src/float32.c src/double64.c - Previously, attempts to read beyond the end of a file would set psf->error - to SFE_SHORT_ERROR. This behaviour diverged from the behaviour of the POSIX - read() call but has now been fixed. - Attempts to read beyond the end of the file will return a short read count - but will not longer set any error. - -2002-12-09 Erik de Castro Lopo - - * src/sndfile.c - Add more sanity checking when opening a RAW file for read. When format is - not RAW, zero out all members of the SF_INFO struct. - - * tests/raw_test.c - Add bad_raw_test() to check for above problem. - - * tests/stdin_test.c examples/sndfile-info.c - Set the format field of the SF_INFO struct to zero before calling - sf_open(). - - * doc/api.html - Add information about the need to set the format field of the SF_INFO struct - to zero when opening non-RAW files for read. - - * configure.ac - Removed use of conversion script on Solaris. Not all Solaris versions - support it. - - * doc/lists.html - New file containg details of the mailing lists. - - * doc/index.html - Add a link to the above new file. - -2002-12-04 Erik de Castro Lopo - - * tests/dft_cmp.c - Fixed a SIGFPE on Alpha caused by a log10 (0.0). Thanks to Joshua Haberman - for providing the gdb traceback. - -2002-11-28 Erik de Castro Lopo - - * src/wav.c - Added more capabilities to 'smpl' chunk parser. - - * src/sndfile.c - Fixed some (not all) possible problems found with Flawfinder. - -2002-11-24 Erik de Castro Lopo - - * src/sndfile.c - Fixed a bug in sf_seek(). This bug could only occur when an attempt was - made to read beyond the end and then sf_seek() was called with a whence - parameter of SEEK_CUR. - - * src/file_io.c - Win32's _fstati64() does not work, it returns BS. Re-implemented - psf_get_filelen() in terms of psf_fseek(). - - * tests/write_read_test.tpl - Add a test to detect above bug. - - * src/float_cast.h - Modification to prevent compiler warnings on Mac OS X. - - * src/file_io.c - Fixes for windows (what a f**ked OS). - -2002-11-08 Erik de Castro Lopo - - * configure.ac - Disable use of native lrint()/lrintf() on Mac OSX. These functions exist on - Mac OSX 10.2 but not on 10.1. Forcing the use of the versions in - src/float_cast.h means that a library compiled on 10.2 will still work on - 10.1. - -2002-11-06 Erik de Castro Lopo - - * configure.in configure.ac - Renamed configure.in to configure.ac as expected by later versions of - autoconf. - Slight hacking of configure.ac to work with version 2.54 of autoconf. - Changed to using -dumpversion instead of --version for determining GCC - version numer as suggested by Anand Kumria. - - * src/G72x/Makefile.am - Slight hacking required for operation with automake 1.6.3. - -2002-11-05 Erik de Castro Lopo - - * src/common.c - In psf_binheader_readf() changed type parameter type "b" type from size_t - to int to prevent errors on IA64 CPU where sizeof (size_t) != sizeof (int). - Thanks to Enrique Robledo Arnuncio for debugging this. - -2002-11-04 Erik de Castro Lopo - - * test/command_test.tpl - Changed test value so test would pass on Solaris. - - * src/Version_script.in - Modified version numbering so that later versions of 1.0.X can replace - earlier versions without recompilation. - - * src/vox_adpcm.c - Fixed bug causing short reads. - -2002-11-03 Erik de Castro Lopo - - * test/floating_point_test.c - Code cleanup using functions from util.c. - Add test for IEEE replacement floats and doubles. - -2002-11-01 Erik de Castro Lopo - - * src/wav.c - Fixed a possible divide by zero error when read the 'smpl' chunk. Thanks to - Serg Repalov for the example file. - - * tests/pcm_test.tpl - Used sf_command (SFC_TEST_IEEE_FLOAT_REPLACE) to test IEEE replacement code. - Clean up pcm_double_test(). - - * src/float32.c src/double64.c - Force use of IEEE replacement code using psf->ieee_replace is TRUE, - Print message to log_buffer as well. - Rename all broken_read_* and broken_write* functions to replace_read_* and - replace_write_*. - - * tests/util.tpl - Added string_in_log_buffer(). - - * tests/pcm_test.tpl - Use string_in_log_buffer() to ensure that IEEE replacement code has been - used. - - * configure.in - Removed --enable-force-broken-float option. IEEE replacement code is now - always tested. - -2002-10-31 Erik de Castro Lopo - - * src/double64.c - Implement code for read/writing IEEE doubles on platforms where the native - double format is not IEEE. - - * src/float32.c src/common.h - Remove float32_read() and float32_write(). Replace with float32_le_read(), - float32_be_read(), float32_le_write() and float32_be_write() to match stuff - in src/double64.c. - - * src/common.c - Fix all usage of float32_write(). - - * src/sndfile.h.in - Added SFC_TEST_IEEE_FLOAT_REPLACE command (testing only). - - * src/common.h - Added SF_PRIVATE field ieee_replace. - - * src/sndfile.c - In sf_command() set/reset psf->ieee_replace. - -2002-10-26 Erik de Castro Lopo - - * tests/pcm_test.tpl - Fixed a problem when testing with --enable-force-broken-float. The test was - generating a value of negative zero and the broken float code is not able - to write negative zero. Removing the negative zero fixed the test. - -2002-10-25 Erik de Castro Lopo - - * src/file_io.c - Added fix for Cygwin (suggested by Maros Michalik). - -2002-10-23 Erik de Castro Lopo - - * src/file_io.c - Improved error detection and handling. - - * src/file_io.c src/common.h - Removed functions psf_ferror() and psf_clearerr() which were redundant - after above improvements. - - * src/aiff.c src/svx.c src/w64.c src/wav.c - Removed all use of psf_ferror() and psf_clearerr(). - - * src/sndfile.c - Removed #include of , , and which - are no longer needed. - - * tests/misc_test.c - Added test to make sure the correct error message is returned with an - existing read-only file is openned for write. - -2002-10-21 Erik de Castro Lopo - - * doc/index.html doc/api.html - Updated for OKI Dialogic ADPCM files. - - * src/command.c - Added VOX ADPCM to sub_fomats. - -2002-10-20 Erik de Castro Lopo - - * src/vox_adpcm.c src/Makefile.am - New file for handling OKI Dialogic ADPCM files. - - * src/sndfile.h - Add new subtype SF_FORMAT_VOX_ADPCM. - - * src/sndfile.c - Renamed function is_au_snd_file () to format_from_extenstion () and expanded - its functionality to detect headerless VOX files. - - * src/raw.c - Added hooks for SF_FORMAT_VOX_ADPCM. - - * examples/sndfile-info.c - Print out file duration (suggested by Conrad Parker). - - * libsndfile.spec.in - Force installation of sndfile.pc file (found by John Thompson). - - * tests/Makefile.am tests/lossy_comp_test.c tests/floating_point_test.c - Add tests for SF_FORMAT_VOX_ADPCM. - -2002-10-18 Erik de Castro Lopo - - * tests/misc_test.c - Add test which attempts to write to /dev/full (on Linux anyway) to check - for correct handling of writing to a full filesystem. - - * src/sndfile.c - Return correct error message if the header cannot be written because the - filesystem is full. - - * tests/util.tpl - Corrected printing of file mode in error reporting. - - * src/mat5.c - Fixed a bug where a MAT5 file written by libsndfile could not be opened by - Octave 2.1.36. - -2002-10-13 Erik de Castro Lopo - - * src/common.h src/file_io.c - All low level file I/O have been modified to be better able to report - system errors resulting from calling system level open/read/write etc. - - * src/*.c - Updated for compatibility with above changes. - - * examples/cooledit-fixer.c - New example program which fixes badly broken file created by Syntrillium's - Cooledit which are marked as containing PCM samples but actually contain - floating point data. - - * examples/Makefile.am - Hooked cooledit-fixer into the build system. - -2002-10-10 Erik de Castro Lopo - - * doc/command.html - Document SFC_GET_FORMAT_INFO. - -2002-10-09 Erik de Castro Lopo - - * examples/wav32_aiff24.c examples/sndfile2oct.c examples/sfhexdump.c - examples/sfdump.c - Removed these files because they weren't interesting. - - * examples/sfconvert.c examples/sndfile-convert.c - Renamed the first to the latter. - - * examples/Makefile.am - Added sndfile-convert to the bin_PROGRAMS, so it is installed when the lib - is installed. - Removed old programs wav32_aiff24 and sndfile2oct. - - * man/sndfile-convert.1 - New man page. - - * examples/sndfile-convert.c - Added some gloss now that sndfile-convert.c is an installed program. - - * src/sndfile.h.in src/sndfile.c src/common.h src/command.h - Added command SFC_GET_FORMAT_INFO. - - * tests/command_test.c - Added tests form SFC_GET_FORMAT_INFO. - -2002-10-08 Erik de Castro Lopo - - * src/sndfile.c - In sf_format_check() return error if samplerate < 0. - -2002-10-07 Erik de Castro Lopo - - * src/aiff.c - Fixed bug in handling of COMM chunks with a 4 byte encoding byte but no - encoding string. - -2002-10-06 Erik de Castro Lopo - - * src/sndfile.c - Fixed repeated word in an error message. - -2002-10-05 Erik de Castro Lopo - - * doc/index.html - Improved advertising in Features section. - -2002-10-04 Erik de Castro Lopo - - * src/wav.c - Added decoding of 'labl' chunks within 'LIST' chunks. - - * src/common.h - Added (experimental only) SF_FORMAT_OGG and SF_FORMAT_VORBIS and definition - of ogg_open(). This is nowhere near working yet. - - * src/sndfile.c - Added detection of 'OggS' file marker and added call to ogg_open() to - switch statement. - - * src/ogg.c - New file. Very early start of Ogg Vorbis support. - - * src/wav.c - Added handling of brain-damaged and broken Cooledit "32 bit 24.0 float - type 1" files. These files are marked as being 24 bit WAVE_FORMAT_PCM with - a block alignment of 4 times the numbers of channels but are in fact 32 bit - floating point. - -2002-10-02 Erik de Castro Lopo - - * configure.in - Modified option --enable-experimental to set ENABLE_EXPERIMENTAL_CODE in - config.h to either 0 or 1. - - * src/sndfile.c - Modify sf_command (SFC_GET_LIB_VERSION) to append "-exp" to the version - string if experimental code has been enabled. - -2002-10-01 Erik de Castro Lopo - - * src/Makefile.am - Added -lm to libsndfile_la_LIBADD. This means that -lm is not longer needed - in the link line when linking something to libsndfile. - - * tests/Makefile.am examples/Makefile.am - Removed -lm from all link lines. - - * sndfile.pc.in - Removed -lm from Libs line. - -2002-09-24 Erik de Castro Lopo - - * src/file_io.c - Removed all perror() calls. - - * src/nist.c - Removed calls to exit() function. - Added check to detect NIST files dammaged from Unix CR -> Win32 CRLF - conversion process. - -2002-09-24 Erik de Castro Lopo - - * src/sndfile.h.in src/sndfile.c - New function sf_strerror() which will eventually replace functions - sf_perror() and sf_error_str(). - Function sf_error_number() has also been changed, but this was documented - as being for testing only. - - * doc/api.html - Documented above changes. - - * tests/*.c examples/*.c - Changed to new error functions. - -2002-09-22 Erik de Castro Lopo - - * configure.in - Detect GCC version, and print a warning message about writeable strings - it GCC major version number is less than 3. - -2002-09-21 Erik de Castro Lopo - - * src/sndfile.h.in doc/api.html - Documentation fixes. - -2002-09-19 Erik de Castro Lopo - - * src/Version_script.in src/Makefile.am configure.in - Use the version script to prevent the exporting of all non public symbols. - This currently only works with Linux. Will test on Solaris as well. - - * src/float_cast.h - Added #ifndef to prevent the #warning directives killing the SGI MIPSpro - compiler. - - * src/au_g72x.c src/double64.c src/float32.c src/gsm610.c src/ima_adpcm.c - src/ms_adpcm.c - Fix benign compiler warnings arising from previously added compiler - flags. - -2002-09-18 Erik de Castro Lopo - - * src/sndfile.c - Fixed a bug in sf_error_str() where errnum was used as the index instead - of k. Found by Tim Hockin. - - * examples/sndfile-play.c - Fixed a compiler warning resulting from a variable shadowing a previously - defined local. - -2002-09-17 Erik de Castro Lopo - - * src/sndfile.h.in src/sndfile.c - Added command SFC_SET_RAW_START_OFFSET. - - * doc/command.html - Document SFC_SET_RAW_START_OFFSET. - - * tests/raw_test.c tests/Makefile.am - Add new file for for testing SF_FORMAT_RAW specific functionality. - - * tests/dwvw_test.c - Updates. - -2002-09-16 Erik de Castro Lopo - - * src/wav.c - Modified reading of 'smpl' chunk to take account of the sampler data field. - - * tests/utils.tpl tests/utils.h - Added function print_test_name(). - - * tests/misc_test.c tests/write_read_test.tpl tests/lossy_comp_test.c - tests/pcm_test.tpl tests/command_test.tpl tests/floating_point_test.c - Convert to use function print_test_name(). - -2002-09-15 Erik de Castro Lopo - - * doc/octave.html - Added a link to some other Octave scripts for reading and writing sound - files. - - * src/paf.c - Change type of dummy data field to int. This should fix a benign compiler - warning on some CPUs. - Removed superfluous casts resulting from the above change. - - * src/rx2.c - More hacking. - -2002-09-14 Erik de Castro Lopo - - * src/mat5.c src/common.c - Changed usage of snprintf() to LSF_SNPRINTF(). - - * Win32/Makefile.msvc - Updated to include new files and add new tests. - - * Win32/config.h Win32/sndfile.h - Updated. - - * doc/api.html - Added note about the possibility of "missing" features actually being - implemented as an sf_command(). - -2002-09-13 Erik de Castro Lopo - - * tests/misc_test.c - Added previously missing update_header_test and zero_data_tests for PAF, - MAT4 and MAT5 formats. - - * src/paf.c src/mat4.c src/mat5.c - Fixed bugs uncovered by new tests above. - - * src/mat5.c - Generalised parsing of name fields of MAT5 files. - - * src/mat5.c src/sndfile.c - Added support for unsigned 8 bit PCM MAT5 files. - - * tests/write_read_test.tpl - Added test for unsigned 8 bit PCM MAT5 files. - - * doc/index.html - Added unsigned 8 bit PCM MAT5 to capabilities matrix. - -2002-09-12 Erik de Castro Lopo - - * test/update_header_test.c tests/misc_test.c - Renamed update_header_test.c to misc_test.c. - Added zero_data_test() to check for case where file is opened for write and - closed immediately. The resulting file can be left in a state where - libsndfile cannot open it. Problem reported by Werner Schweer, the author - of Muse. - - * src/aiff.c - Removed superfluous cast. - - * src/wav.c src/svx.c - Fixed case of file generated with no data. - Removed superfluous cast. - - * src/sndfile.c - Fixed error on IA64 platform caused by incorrect termination of - SndfileErrors struct array. This problem was found in the Debian buildd - logs (http://buildd.debian.org/). - - * configure.in - Added Octave directory. - - * Octave/Makefile.ma - New Makfile.am for Octave directory. - - * Octave/sndfile_load.m Octave/sndfile_save.m Octave/sndfile_play.m - New files for working with Octave. - - * doc/octave.html - Document explaining the use of the above three Octave scripts. - -2002-09-10 Erik de Castro Lopo - - * src/sndfile.c - Fixed bug in RDWR mode. - -2002-09-09 Erik de Castro Lopo - - * src/common.c - Fixed psf_get_date_str() for systems which don't have gmtime_r() or - gmtime(). - - * src/file_io.c - Added #include for Win32. Reported by Koen Tanghe. - -2002-09-08 Erik de Castro Lopo - - * src/common.c - Added 'S' format specifier for psf_binheader_writef() which writes a C - string, including single null terminator to the header. - Added 'j' format specifier to allow jumping forwards or backwards in the - header. - Added function psf_get_date_str(). - - * src/mat5.c - Complete read and write support. - - * doc/index.html - Added entries for MAT4 and MAT5 in capabilities matrix. - -2002-09-06 Erik de Castro Lopo - - * src/mat4.c - Completed read and write support. - - * src/common.h src/sndfile.c - Added MAT4 and MAT5 specific error messages. - - * tests/write_read_test.tpl tests/Makefile.am - Added tests for MAT4 and MAT5 files. - - * tests/stdio_test.c tests/stdout_test.c tests/stdin_test.c - Added tests for MAT4 and MAT5 files. - -2002-09-05 Erik de Castro Lopo - - * src/command.c - Added elements for SF_FORMAT_MAT4 and SF_FORMAT_MAT5 to major_formats - array. - - * examples/sfconvert.c - Added mat4 and mat5 output targets. - -2002-09-04 Erik de Castro Lopo - - * src/sndfile.c - Added check to prevent errors openning read only formats for read/write. - - * src/interleave.c - New file for interleaving non-interleaved data. Non-interleaved data is - only supported on read. - - * src/Makefile.am - Added src/interleave.c to build. - -2002-09-03 Erik de Castro Lopo - - * src/double64.c src/common.h - Added double64_be_read(), double64_le_read(), double64_be_write() and - double64_le_write() which replace double64_read() and double64_write(). - - * src/common.c - Cleanup of psf_binheader_readf() and add ability to read big and little - endian doubles (required by mat4.c and mat5.c). - Add ability for psf_binheader_writef() to write doubles to sound file - headers. - -2002-09-01 Erik de Castro Lopo - - * src/mat5.c - New file for reading Matlab (tm) version 5 data files. This is also the - native binary file format for version 2.1.X of GNU Octave which will be - used for testing. - Not complete yet. - - * src/mat4.c - New file for reading Matlab (tm) version 4.2 data files. This is also the - native binary file format for version 2.0.X of GNU Octave which will be - used for testing. - Not complete yet. - - * src/sndfile.h.in src/sndfile.c src/common.h src/command.c src/Makefile.am - Mods to add Matlab files. - - * src/common.[ch] - Added readf_endian field to SF_PRIVATE struct allowing endianness to - remembered across calls to sf_binheader_readf(). - Fixed bug in width_specifier behaviour for printing hex values. - -2002-08-31 Erik de Castro Lopo - - * src/file_io.c - Check return value of close() call in psf_fclose(). - -2002-08-24 Erik de Castro Lopo - - * src/ms_adpcm.c - Commented out some code where 0x10000 was being subtracted from a short - and the result assigned to a short again. Andrew Zaja found this. - -2002-08-23 Erik de Castro Lopo - - * doc/command.html - Fixed typo found by Tommi Ilmonen. - - * src/ima_adpcm.c - Changed type of diff from short to int to prevent errors which can occur - during very rare circumstances. Thanks to FUWAFUWA. - -2002-08-16 Erik de Castro Lopo - - * tests/floating_point_test.c - Disable testing on machines without lrintf(). - - * Win32/Makefile.msvc - Added dwd.c and wve.c to build. - - * configure.in - Bumped version to 1.0.0. - -2002-08-15 Erik de Castro Lopo - - * src/file_io.c - Add a #include for Mac OS 9. Thanks to Stephane Letz. - - * src/wav.c - Changed an snprintf to LSF_SNPRINTF. - - * doc/Makefile.am - Added version-1.html. - -2002-08-14 Erik de Castro Lopo - - * configure.in - Bumped version to 1.0.rc6. - - * src/*.c - Modified scaling of normalised floats and doubles to integers. Until now - this has been done by multiplying by 0x8000 for short output, 0x80000000 - for 32 bit ints and so on. Unfortunately this can cause an overflow and - wrap around in the target value. All thes values have therefore been - reduced to 0x7FFF, 0x7FFFFFFF and so on. The conversion from ints to - normalised floats and doubles remains unchanged. This does mean that for - repeated conversions normalised float -> pcm16 -> normalised float would - result in a decrease in amplitude of 0x7FFF/0x8000 on every round trip. - This is undesirable but less undesireable than the wrap around I am trying - to avoid. - - * tests/floating_point_test.c - Removed file hash checking because new float scaling procedure introduced - above prevented the ability to crate a has on both x86 and PowerPC systems. - -2002-08-13 Erik de Castro Lopo - - * src/txw.c - Completed reading of TXW files. Seek doesn't work yet. - - * src/file_io.c - Added a MacOS 9 replacement for ftruncate(). - - * MacOS/sndfile.h - Added MacOS 9 header file. This should be copied into src/ to compile - libsndfile for MacOS9. - -2002-08-12 Erik de Castro Lopo - - * src/sndfile.c - Fixed commands SF_SET_NORM_DOUBLE and SFC_SET_NORM_FLOAT to return their - values after being set. Reported by Jussi Laako. - - * configure.in - If autogen is not found, touch all .c and .h files in tests/. - - * src/common.c - Added format width specifier to psf_log_printf() for %u, %d, %D and %X. - - * src/dwd.c - Completed implementation of read only access to these files. - - * src/common.h src/*.c src/pcm.c - Removed redundant field chars from SF_PRIVATE struct and modified - pcm_init() to do without it. - -2002-08-11 Erik de Castro Lopo - - * src/wve.c - New file implementing read of Psion Alaw files. This will be a read only - format. Implementation complete. - - * src/dwd/c - Started implementation of DiamondWare Digitized files. Also read only, not - complete. - - * src/wav.c - Add parsing of 'smpl' chunk. - - * src/paf.c - Fixed reading on un-normalized doubles and floats from 24 bit PAF files. - This brings it into line with the reading of 8 bit files into - un-normalized doubles which returns values in the range [-128, 127]. - - * src/common.c - Modified psf_log_printf() to accept the %% conversion specifier to allow - printing of a single '%'. - - * src/sds.c - Read only of 16 bit samples is working. Need to build a test harness for - this and other read only formats. - -2002-08-10 Erik de Castro Lopo - - * configure.in - Added --enable-experimental configure option. - Removed pkg-config message at the end of the configure process. - - * src/sds.c src/txw.c src/rx2.c src/sd2.c - Moved all the code in these files inside #if ENABLE_EXPERIMENTAL_CODE - blocks and added new *_open() function for the case where experimental is - not enabled. These new functions just return SFE_UNIMPLMENTED. - - * Win32/sndfile.h src/sndfile.h.in src/common.h - Removed un-necessary #pragma pack commands. - - * src/file_io.c - Implemented psf_ftruncate() and much other hacking for Win32. - - * Win32/Makefile.msvc - Updated. - - * doc/win32.html - Updated to include the copying of the sndfile.h file from the Win32/ - directory to the src/ directory. - - * Make.bat - Batch file to make compiling on Wi32 a little easier. Implements "make" and - "make check". - -2002-08-09 Erik de Castro Lopo - - * src/file_io.c - Add place holder for ftruncate() on Win32 which doesn't have ftruncate(). - This will need to be fixed later. - - * src/sndfile.h.in - New file (copy of sndfile.h) with sets up @TYPEOF_SF_COUNT_T@ which will be - replaced by the correct type during configure. - - * configure.in - Modified to find a good type for TYPEOF_SF_COUNT_T. - - * src/aiff.c - Fixed a bug when reading malformed headers. - - * src/common.c - Set read values to zero before performing read. - -2002-08-08 Erik de Castro Lopo - - * doc/command.html - Fixed some HTML tags which were not allowing jumps to links within the - page. - - * src/sds.c - Massive hacking on this. - - * src/wav.c - Added recognition of 'clm ' tag. - -2002-08-07 Erik de Castro Lopo - - * doc/index.html - Added beginning of a capabilities list beyond simple file formats which - can be read/written. - - * src/aiff.c - Added parsing of INST and MARK chunks of AIFF files. At the moment this - data is simply recorded in the log buffer. Later it will be possible to - read this data from an application using sf_command(). - - * src/wav.c - Added parsing of 'cue ' chunk which contains loop information in WAV files. - - * exampes/sndfile-info.c - Changed reporting of Samples to Frames. - - * src/wav.c src/w64.c src/aiff.c src/wav_w64.h - Moved from a samples to a frames nomenclature to avoid confusion. - - * doc/FAQ.html - What's the best format for storing temporary files? - - * src/sds.c - New file for reading/writing Midi Sample Dump Standard files. - - * src/Makefile.am src/sndfile.c src/common.[ch] - Added hooks for sds.c. - - * examples/sndfile-info.c - Changed from using sf_perror() to using sf_error_str(). - -2002-08-06 Erik de Castro Lopo - - * doc/api.html - Added explanation of mode parameter for sf_open(). - Added explanation of usage of SFM_* values in sf_seek(). - - * src/sndfile.[ch] src/command.c src/file_io.c src/common.h - Implemented SFC_FILE_TRUNCATE to allow a file to be truncated. File - truncation was suggested by James McCartney. - - * src/command.html - Documented SFC_FILE_TRUNCATE. - - * tests/command_test.c - Add tests for SFC_FILE_TRUNCATE. - - * src/sndfile.c - Added a thrid parameter to the VALIDATE_SNDFILE_AND_ASSIGN_PSF macro to - make resetting the error number optional. All uses of the macro other than - in error reporting functions were changed to reset the error number. - - * src/pcm.c - Fixed a bug were sf_read_* was logging an SFE_SHORT_READ even when no error - occurred. - - * tests/write_read_test.tpl - Added tests of internal error state. - -2002-08-05 Erik de Castro Lopo - - * src/GSM610/private.h src/GSM610/*.c src/GSM610/Makefile.am - Renamed private.h to gsm610_priv.h to prevent clash with other headers - named private.h in other directories. (Probably only a problem on MacOS 9). - - * src/G72x/private.h src/G72x/*.c src/G72x/Makefile.am - Renamed private.h to g72x_priv.h to prevent clash with other headers - named private.h in other directories. (Probably only a problem on MacOS 9). - - * MacOS/config.h - Changed values of HAVE_LRINT and HAVE_LRINTF to force use of code in - float_cash.h. - - * src/sndfile.h - Changes the name of samples field of the SF_INFO to frames. The old name - had caused too much confusion and it simply had to be changed. There will - be at least one more pre-release. - -2002-08-04 Erik de Castro Lopo - - * doc/index.html - Updated formats matrix to include RAW (header-less) GSM 6.10. - Fix specificaltion of table and spelling mistakes. - - * src/sndfile.c src/command.c - Fixed bug in SFC_CALC_MAX_SIGNAL family and psf_calc_signal_max (). - - * tests/command.c - Removed cruft. - Added test for SFC_CALC_MAX_SIGNAL and SFC_CALC_NORM_MAX_SIGNAL. - - * configure.in - Update version to 1.0.0rc5. - - * sfendian.h - Removed inclusion of un-necessary header. - -2002-08-03 Erik de Castro Lopo - - * src/aiff.c - Minor fixes of info written to log buffer. - - * src/float_cast.h - Add definition of HAVE_LRINT_REPLACEMENT. - - * tests/floating_point_test.c - Fix file hash check on systems without lrint/lrintf. - - * tests/dft_cmp.c - Limit SNR to less than -500.0dB. - - * examples/sndfile2oct.c - Fixed compiler warnings. - - * doc/api.html - Fixed error where last parameter of sf_error_str() was sf_count_t instead - of size_t. - -2002-08-02 Erik de Castro Lopo - - * doc/FAQ.html - Why doesn't libsndfile do interleaving/de-interleaving. - - * tests/pcm_test.tpl - On Win32 do not perform hash check on files containing doubles. - -2002-08-01 Erik de Castro Lopo - - * src/common.h - Defined SF_COUNT_MAX_POSITIVE() macro, a portable way of setting variables - of type sf_count_t to their maximum positive value. - - * src/dwvw.c src/w64.c - Used SF_COUNT_MAX_POSITIVE(). - -2002-07-31 Erik de Castro Lopo - - * src/paf.c - Fixed bug in reading/writing of 24 bit PCM PAF files on big endian systems. - - * tests/floating_point_tests.c - Fixed hash values for 24 bit PCM PAF files. - Disabled file has check if lrintf() function is not available and added - warning. - Decreased level of signal from a peak of 1.0 to a value of 0.95 to prevent - problems on platforms without lrintf() ie Solaris. - -2002-07-30 Erik de Castro Lopo - - * src/wav.c - Fixed a problem with two different kinds of mal-formed WAV file header. The - first had the 'fact' chunk before the 'fmt ' chunk, the other had an - incomplete 'INFO' chunk at the end of the file. - - * src/w64.c - Added fix to allow differentiation between W64 files and ACID files. - - * src/au_g72x.c src/common.h src/sndfile.c - Added error for G72x encoded files with more than one channel. - - * tests/pcm_test.tpl tests/utils.tpl - Moved function check_file_hash_or_die() to utils.tpl. Function was then - modified to calculate the has of the whole file. - - * src/wav.c - Fixed problem writing the 'fact' chunk on big endian systems. - - * tests/sfconvert.c - Fixed bug where .paf files were being written as Sphere NIST. - -2002-07-29 Erik de Castro Lopo - - * src/voc.c - Fix for reading headers generated using SFC_UPDATE_HEADER_NOW. - - * doc/command.html - Add docs for SFC_UPDATE_HEADER_NOW and SFC_SET_UPDATE_HEADER_AUTO. - -2002-07-28 Erik de Castro Lopo - - * man/sndfile-info.1 man/sndfile-play.1 - Added manpages supplied by Joshua Haberman the Debian maintainer for - libsndfile. Additional tweaks by me. - - * configure.in man/Makefile.am - Hooked manpages into autoconf/automake system. - - * src/sndfile.c - Added hooks for SFC_SET_UPDATE_HEADER_AUTO. - - * tests/update_header_test.c - Improved rigor of testing. - - * src/*.c - Fixed problem with *_write_header() functions. - -2002-07-27 Erik de Castro Lopo - - * doc/*.html - Updates to documentation to fix problems found by wdg-html-validator. - - * src/common.h src/command.c - Added normalize parameter to calls to psf_calc_signal_max() and - psf_calc_max_all_channels(). - - * src/sndfile.c - Added handling for commands SFC_CALC_NORM_SIGNAL_MAX and - SFC_CALC_NORM_MAX_ALL_CHANNELS. - - * doc/command.html - Added entry for SFC_CALC_NORM_SIGNAL_MAX and SFC_CALC_NORM_MAX_ALL_CHANNELS. - -2002-07-26 Erik de Castro Lopo - - * examples/sndfile-play.c Win32/Makefile.msvc - Get sndfile-play program working on Win32. The Win32 PCM sample I/O API - sucks. The sndfile-play program now works on Linux, MacOSX, Solaris and - Win32. - -2002-07-25 Erik de Castro Lopo - - * doc/FAQ.html - New file for frequently asked questsions. - -2002-07-22 Erik de Castro Lopo - - * doc/api.html - Documentation fixes. - - * src/au.[ch] src/au_g72x.c src/G72x/g72x.h - Add support of 40kbps G723 ADPCM encoding. - - * tests/lossy_comp_test.c tests/floating_point_test.c - Add tests for 40kbps G723 ADPCM encoding. - - * doc/index.html - Update support matrix. - -2002-07-21 Erik de Castro Lopo - - * doc/command.html - Documented SFC_GET_SIMPLE_FORMAT_COUNT, SFC_GET_SIMPLE_FORMAT, - SFC_GET_FORMAT_* and SFC_SET_ADD_PEAK_CHUNK. - - * src/sndfile.c src/pcm.c - Add ability to turn on and off the addition of a PEAK chunk for floating - point WAV and AIFF files. - - * src/sndfile.[ch] src/common.h src/command.c - Added sf_command SFC_CALC_MAX_ALL_CHANNELS. Implemented by Maurizio Umberto - Puxeddu. - - * doc/command.html - Docs for SFC_CALC_MAX_ALL_CHANNELS (assisted by Maurizio Umberto Puxeddu). - -2002-07-18 Erik de Castro Lopo - - * src/sndfile.c src/gsm610.c - Finalised support for GSM 6.10 AIFF files and added support for GSM 6.10 - encoded RAW (header-less) files. - - * src/wav.c - Add support for IBM_FORMAT_MULAW and IBM_FORMAT_ALAW encodings. - - * src/api.html - Fixed more documentation bugs. - -2002-07-17 Erik de Castro Lopo - - * src/sndfile.h src/common.h - Moved some yet-to-be-implelmented values for SF_FORMAT_* from the public - header file sndfile.h to the private header file common.h to avoid - confusion about the actual capabilities of libsndfile. - -2002-07-16 Erik de Castro Lopo - - * src/aiff.c src/wav.c - Fixed file parsing for WAV and AIFF files containing non-audio data after - the data chunk. - - * src/aiff.c src/sndfile.c - Add support for GSM 6.10 encoded AIFF files. - - * tests/lossy_comp_test.c tests/Makefile.am - Add tests for GSM 6.10 encoded AIFF files. - - * src/*.c - Fix compiler warnings. - -2002-07-15 Erik de Castro Lopo - - * tests/command_test.c - For SFC_SET_NORM_* tests, change the file format from SF_FORMAT_WAV to - SF_FORMAT_RAW. - - * src/sndfile.c - Added sf_command(SFC_TEST_ADD_TRAILING_DATA) to allow testing of reading - from AIFF and WAV files with non-audio data after the audio chunk. - - * src/common.h - Add test commands SFC_TEST_WAV_ADD_INFO_CHUNK and - SFC_TEST_AIFF_ADD_INST_CHUNK. When these commands are working, they will be - moved to src/sndfile.h - - * src/aiff.c src/wav.c - Begin implementation of XXXX_command() hook for sf_command(). - - * tests/write_read_test.tpl - Added sf_command (SFC_TEST_ADD_TRAILING_DATA) to ensure above new code was - working. - -2002-07-13 Erik de Castro Lopo - - * tests/update_header_test.c - Allow read sample count == write sample count - 1 to fix problems with VOC - files. - - * tests/write_read_test.tpl tests/pcm_test.tpl - Fixed some problems in the test suite discovered by using Valgrind. - -2002-07-12 Erik de Castro Lopo - - * tests/utils.[ch] tests/*.c - Renamed check_log_buffer() to check_log_buffer_or_die(). - - * src/sndfile.c - SFC_UPDATE_HEADER_NOW and SFC_SETUPDATE_HEADER_AUTO almost finished. Works - for all file formats other than VOC. - -2002-07-11 Erik de Castro Lopo - - * src/sndfile.[ch] src/common.h - Started adding functionality to allow the file header to be updated before - the file is closed on files open for SFM_WRITE. This was requested by - Maurizio Umberto Puxeddu who is using libsndfile for file I/O in iCSound. - - * tests/update_header_test.c - New test program to test that the above functionality is working correctly. - - * tests/peak_chunk_test.c tests/floating_point_test.c - Cleanups. - -2002-07-10 Erik de Castro Lopo - - * src/sfendian.[ch] - Changed length count parameters for all endswap_XXX() functions from - sf_count_t (which can be 64 bit even on 32 bit architectures) to int. These - functions are only called frin inside the library, are always called with - integer parameters and doing the actual calculation on 64 bit values is - slow in comparision to doing it on ints. - - * examples/sndfile-play.c - More playback hacking for Win32. - -2002-07-09 Erik de Castro Lopo - - * src/common.c - In psf_log_printf(), changed %D format conversion specifier to %M (marker) and - added %D specifier for printing the sf_count_t type. - - * src/*.c - Changed all usage of psf_log_printf() with %D format conversion specifiers - to use %M conversion instead. - - * tests/pcm_test.tpl tests/pcm_test.def - New files to autogen pcm_test.c. - - * src/pcm.c - Fixed bug in scaling floats and doubles to 24 bit PCM and vice versa. - -2002-07-08 Erik de Castro Lopo - - * configure.in - Fix setup of $ac_cv_sys_largefile_CFLAGS so that sndfile.pc gets valid - values for CFLAGS. - - * examples/sndfile-play.c - Start adding playback support for Win32. - -2002-07-07 Erik de Castro Lopo - - * src/*.c - Worked to removed compiler warnings. - Extensive refactoring. - - * src/common.[ch] - Added function psf_memset() which works like the standard C function memset - but takes and sf_count_t as the length parameter. - - * src/sndfile.c - Replaced calls to memset(0 with calls to psf_memset() as required. - -2002-07-06 Erik de Castro Lopo - - * src/sndfile.c - Added "libsndfile : " to the start of all error messages. This was suggested - by Conrad Parker author of Sweep ( http://sweep.sourceforge.net/ ). - - * src/sfendian.[ch] - Added endswap_XXXX_copy() functions. - - * src/pcm.c src/float32.c src/double64.c - Use endswap_XXXX_copy() functions and removed dead code. - Cleanups and optimisations. - -2002-07-05 Erik de Castro Lopo - - * src/sndfile.c src/sndfile.h - Gave values to all the SFC_* enum values to allow better control of the - interface as commands are added and removed. - Added new command SFC_SET_ADD_PEAK_CHUNK. - - * src/wav.c src/aiff.c - Modified wav_write_header and aiff_write_header to make addition of a PEAK - chunk optional, even on floating point files. - - * tests/benchmark.tpl - Added call to sf_command(SFC_SET_ADD_PEAK_CHUNK) to turn off addition of a - PEAK chunk for the benchmark where we are trying to miximize speed. - - * src.pcm.c - Changed tribyte typedef to something more sensible. - Further conversion speed ups. - -2002-07-03 Erik de Castro Lopo - - * src/command.c - In major_formats rename "Sphere NIST" to "NIST Sphere". - - * src/common.c src/sfendian.c - Moved all endswap_XXX_array() functions to sfendian.c. These functions will - be tweaked to provide maximum performance. Since maximum performance on one - platform does not guarantee maximum performance on another, a small set of - functions will be written and the optimal one chosen at compile time. - - * src/common.h src/sfendian.h - Declarations of all endswap_XXX_array() functions moved to sfendian.h. - - * src/Makefile.am - Add sfendian.c to build targets. - -2002-07-01 Erik de Castro Lopo - - * src/pcm.c src/sfendian.h - Re-coded PCM encoders and decoders to match or better the speed of - libsndfile version 0.0.28. - -2002-06-30 Erik de Castro Lopo - - * src/wav.c - Add checking for WAVPACK data in standard PCM WAV file. Return error if - found. This WAVPACK is *WAY* broken. It uses the same PCM WAV file header - and then stores non-PCM data. - - * tests/benchmark.tpl - Added more tests. - -2002-06-29 Erik de Castro Lopo - - * tests/benchmark.tpl - Added conditional definition of M_PI. - For Win32, set WRITE_PERMS to 0777. - - * Win32/Makefile.msvc - Added target to make generate program on Win32. - - * src/samplitude.c - Removed handler for Samplitude RAP file format. This file type seems rarer - than hens teeth and is completely undocumented. - - * src/common.h src/sndfile.c src/Makefile.am Win32/Makefile.msvc - Removed references to sampltiude RAP format. - - * tests/benchmark.tpl - Benchmark program now prints the libsndfile version number when run. This - program was also backported to version 0 to compare results. Version - 1.0.0rc2 is faster than version 0.0.28 on most conversions but slower on - some. The slow ones need to be fixed before final release. - -2002-06-28 Erik de Castro Lopo - - * tests/benchmark.def tests/benchmark.tpl - New files which generate tests/benchmark.c using Autogen. Added int -> - SF_FORMAT_PCM_24 test. - - * tests/benchmark.c - Now and Autogen output file. - - * tests/Makefile.am - Updated for above changes. - -2002-06-27 Erik de Castro Lopo - - * tests/benchmark.c - Basic benchmark program complete. Need to convert it to Autogen. - - * Win32/Makefile.msvc - Added benchmark.exe target. - -2002-06-26 Erik de Castro Lopo - - * examples/generate.c - New program to generate a number of different output file formats from a - single input file. This allows testing of the created files. - - * tests/benchmark.c - New test program to benchmark libsndfile. Nowhere near complete yet. - - * examples/Makefile.am tests/Makefile.am - New make rules for the two new programs. - -2002-06-25 Erik de Castro Lopo - - * Win32/libsndfile.def - Removed definition for sf_signal_max(). - - * src/sndfile.c - Removed cruft. - - * doc/index.html - A number of documentation bugs were fixed. Thanks to Anand Kumria. - - * doc/version-1.html - Minor doc updates. - - * configure.in - Bumped version to 1.0.0rc2. - - * src/sf_command.h src/Makefile.am - Removed the header file as it was no longer being used. Thanks to Anand - Kunria for spotting this. - - * doc/index.html - A number of documentation bugs were fixed. Thanks to Anand Kumria. - -2002-06-24 Erik de Castro Lopo - - * src/common.h - Test for Win32 before testing SIZEOF_OFF_T so that it works correctly - on Win32.. - - * src/file_io.c - Win32 fixes to ensure O_BINARY is used for file open. - - * doc/win32.html - New file documenting the building libsndfile on Win32. - - * doc/*.html - Updating of documentation. - -2002-06-23 Erik de Castro Lopo - - * tests/pcm_test.c - Minor changes to allow easier determination of test file name. - - * src/sndfile.[ch] - Removed function sf_signal_max(). - - * examples/sndfile-play.c - Changed call to sf_signal_max() to a call to sf_command(). - -2002-06-22 Erik de Castro Lopo - - * src/format.c src/command.c - Renamed format.c to command.c which will now include code for sf_command() - calls to perform operations other than format commands. - - * src/sndfile.c src/sndfile.h - Removed function sf_get_signal_max() which is replaced by commands passed - to sf_command(). - - * src/command.c - Implement commands SFC_CALC_SIGNAL_MAX. - - * doc/command.html - Documented SFC_CALC_SIGNAL_MAX. - -2002-06-21 Erik de Castro Lopo - - * examples/sndfile-play.c - Mods to make sndfile-play work on Solaris. The program sndfile-play now - runs on Linux, MaxOSX and Solaris. Win32 to come. - - * src/format.c - Added SF_FORMAT_DWVW_* to subtype_formats array. - - * src/nist.c - Added support for 8 bit NIST Sphere files. Example file supplied by Anand - Kumria. - -2002-06-20 Erik de Castro Lopo - - * examples/sndfile-info.c - Tidy up of output format. - - * examnples/sndfile-play.c - Mods to make sndfile-play work on MacOSX using Apple's CoreAudio API. - - * configure.in - Add new variables OS_SPECIFIC_INCLUDES and OS_SPECIFIC_LINKS which were - required to supply extra include paths and link parameters to get - sndfile-play working on MacOSX. - - * examples/Makefile.am - Use OS_SPOECIFIC_INCLUDES and OS_SPECIFIC_LINKS to build commands for - sndfile-play. - -2002-06-19 Erik de Castro Lopo - - * src/nist.c - Added ability to read/write new NIST Sphere file types (A-law, u-law). - Header parser was re-written from scratch. Example files supplied by Anand - Kumria. - - * src/sndfile.c - Support for A-law and u-law NIST files. - - * tests/Makefile.am tests/lossy_comp_test.c - Tests for A-law and u-law NIST files. - -2002-06-18 Erik de Castro Lopo - - * tests/utils.c - Fixed an error in error string. - -2002-06-17 Erik de Castro Lopo - - * acinclude.m4 - Removed exit command to allow cross-compiling. - - * Win32/unistd.h src/file_io.c - Moved contents of first file into the second file (enclosed in #ifdef). - Win32/unistd.h is now an empty file but still must be there for libsndfile - to compile on Win32. - - * src/sd2.c, src/sndfile.c: - Fixes for Sound Designer II files on big endian systems. - -2002-06-16 Erik de Castro Lopo - - * configure.in - Modified to work around problems with crappy MacOSX version of sed. - Added sanity check for proper values for CFLAGS. - -2002-06-14 Erik de Castro Lopo - - * src/sndfile.c - Code clean up in sf_open (). - - * Win32/Makefile.msvc - Michael Fink's contributed MSVC++ makefile was hacked to bits and put back - together in a new improved form. - - * src/file_io.c - Fixes for Win32; _lseeki64() returns an invalid argument for calls like - _lseeki64(fd, 0, SEEK_CUR) so need to use _telli64 (fd) instead. - - * src/common.h src/sndfile.c src/wav.c src/aiff.c - Added SFE_LOG_OVERRUN error. - Added termination for potential infinite loop when parsing file headers. - - * src/wav.c src/w64.c - Fixed bug casuing incorrect header generation when opening file read/write. - -2002-06-12 Erik de Castro Lopo - - * doc/api.html - Improved the documentation to make it clearer that the file read method - and the underlying file format are completely disconnected. Suggested - by Josh Green. - - * doc/command.html - Started correcting docs to take into account changes made to the - operations of the sf_command () function. Not complete yet. - - * src/sndfile.c - Reverted some changes which had broken the partially working SDII header - parsing. Now have access to an iBook with OS X so reading and writing SDII - files on all platforms should be a reality in the near future. On Mac this - will involve reading the resource fork via the standard MacOS API. To move - a file from Mac to another OS, the resource and data forks will need to be - combined before transfer. The combined file will be read on both Mac and - other OSes like any other file. - -2002-06-08 Erik de Castro Lopo - - * ltmain.sh - Applied a patch from http://fink.sourceforge.net/doc/porting/libtool.php - which allows libsndfile to compile on MacOSX 10.1. This patch should not - interfere with compiling on other OSes. - - * src/GSM610/private.h - Changes to fix compile problems on MacOSX (see src/GSM610/ChangeLog). - - * src/float_cast.h - Added MacOSX replacements for lrint() and lrintf(). - -2002-06-05 Erik de Castro Lopo - - * src/sndfile.c - Replaced the code to print the filename to the log buffer when a file is - opened. This code seems to have been left out during the merge of - sf_open_read() and sf_open_write() to make a single functions sf_open(). - -2002-06-01 Erik de Castro Lopo - - * src/wav.c - Fixed a bug where the WAV header parser was going into an infinite loop - on a badly formed LIST chunk. File supplied by David Viens. - -2002-05-25 Erik de Castro Lopo - - * configure.in - Added a message at the end of the configuration process to warn about the - need for the use of pkg-config when linking programs against version 1 of - libsndfile. - - * doc/pkg-config.html - New documentation file containing details of how to use pkg-config to - retrieve settings for CFLAGS and library locations for linking files - against version 1 of libsndfile. - -2002-05-17 Erik de Castro Lopo - - * src/wav.c - Fixed minor bug in handling of so-called ACIDized WAV files. - -2002-05-16 Erik de Castro Lopo - - * Win32/libsndfile.def Win32/Makefile.msvc - Two new files contributed by Michael Fink (from the winLAME project) - which allows libsndfile to be built on windows in a MSDOS box by doing - "nmake -f Makefile.msvc". Way cool! - -2002-05-15 Erik de Castro Lopo - - * configure.in - MacOSX is SSSOOOOOOO screwed up!!! I can't believe how hard it is to - generate a tarball which will configure and compile on that platform. - Joined the libtool mailing list to try and get some answers. - -2002-05-13 Erik de Castro Lopo - - * configure.in - Changed to autoconf version 2.50. MacOSX uses autoconf version 2.53 which - is incompatible with with version 2.13 which had been using until now. - The AC_SYS_LARGE_FILE macro distributed withe autoconf 2.50 is missing a - few features so AC_SYS_EXTRA_LARGE file was defined to replace it. - - * configure.in - Changed to automake version 1.5 to try and make a tarball which will - work on MacOSX. - -2002-05-12 Erik de Castro Lopo - - * src/wav_gsm610.c - Changed name to gsm610.c. Added reading/writing of headerless files. - - * src/sndfile.c src/raw.c - Added ability to read/write headerless (SF_FORMAT_RAW) GSM 6.10 files. - -2002-05-11 Erik de Castro Lopo - - * tests/lossy_comp_test.c - Clean up in preparation for Autogen-ing this file. - - * src/GSM610/*.[ch] - Code cleanup and prepartion forgetting file seek working. Details in - src/GSM610/ChangeLog. - - * sndfile.pc.in - Testing complete. Is sndfile.m4 still needed? - -2002-05-09 Erik de Castro Lopo - - * tests/write_read_test.tpl tests/rdwr_test.tpl - Merged tests from these two programs into write_read_test.tpl and deleted - rdwr_test.tpl. - -2002-05-08 Erik de Castro Lopo - - * src/w64.c src/svx.c src/paf.c - Fixed bugs in read/write mode. - -2002-05-07 Erik de Castro Lopo - - * examples/Makefile.am - Renamed sfplay.c to sndfile-play.c and sndfile_info.c to sndfile-info.c for - consistency when these programs become part of the Debian package - sndfile-programs. - - * sndfile.pc.in - New file to replace sndfile-config.in. Libsndfile now uses the pkg-config - model for providing installation parameters to dependant programs. - - * src/sndfile.c - Cleanup of code in sf_open(). - -2002-05-06 Erik de Castro Lopo - - * tests/utils.tpl tests/write_read_test.tpl - More conversion to Autogen fixes and enchancements. - - * src/*.c - Read/write mode is now working for 16, 24 and 32 bit PCM as well as 32 - bit float and 64 bit double data. More tests still required. - - * src/Makefile.am - Added DISTCLEANFILES target to remove config.status and config.last. - - * Win32/Makefile.am MacOS/Makefile.am - Added DISTCLEANFILES target to remove Makefile. - -2002-05-05 Erik de Castro Lopo - - * src/*.[ch] tests/rdwr_test.c - More verifying workings of read/write mode. Fixing bugs found. - - * tests/utils.[ch] - Made these files Autogen generated files. - - * tests/util.tpl tests/util.def - New Autogen files to generate utils.[ch]. Moved some generic test functions - into this file. Autogen is such a great tool! - -2002-05-03 Erik de Castro Lopo - - * src/pcm.c src/float_cast.h Win32/config.h - Fixed a couple of Win32 specific bugs pointed out by Michael Fink - (maintainer of WinLAME) and David Viens. - - * tests/check_log_buffer.[ch] tests/utils.[ch] - Moved check_log_buffer() to utils.[ch] and deleted old file. - -2002-05-02 Erik de Castro Lopo - - * src/common.[ch] src/sndfile.c - New function psf_default_seek() which will be the default seek function - for things like PCM and floating point data. This default is set for - both read and write in sf_open() but can be over-ridden by any codec - during it's initialisation. - -2002-05-01 Erik de Castro Lopo - - * src/au.c - AU files use a data size value of -1 to mean unknown. Fixed au_open_read() - to allow opening files like this. - - * tests/rdwr_test .c - Added more tests. - - * src/sndfile.c - Fixed bugs in read/write mode found due to improvements in the test - program. - -2002-04-30 Erik de Castro Lopo - - * tests/rdwr_test .c - New file for testing read/write mode. - -2002-04-29 Erik de Castro Lopo - - * m4/* - Removed all m4 macros from this directory as they get concatenated to form - the file aclocal.m4 anyway. - - * sndfile.m4 - Moved this from the m4 directory to the root directory asn this is part of - the distribution and is installed during "make install". - -2002-04-29 Erik de Castro Lopo - - * src/float32.c - Removed logging of peaks for all file formats other than AIFF and WAV. - - * tests/write_read_test.tpl tests/write_read_test.def - New files which autogen uses to generate write_read_test.c. Doing it this - way makes write_read_test.c far easier to maintain. Other test programs - will be converted to autogen in the near future. - - * src/*.c - Fixed a few bugs found when testing on Sparc (bug endian) Solaris. - -2002-04-28 Erik de Castro Lopo - - * doc/*.html - Fixed documention versioning. - - * configure.in - Fixed a bug in the routines which search for Large File Support on systems - which have large file support by defualt. - -2002-04-27 Erik de Castro Lopo - - * src/*.[ch] - Found and fixed an issue which can cause a bug in other software (I was - porting Conrad Parker's Sweep program from version 0 of the library to - version 1). When opening a file for write, the libsndfile code would - set the sfinfo.samples field to a maximum value. - - * tests/write_read_test.c - Added tests to detect the above problem. - -2002-04-25 Erik de Castro Lopo - - * src/*.[ch] - Finished base implementation of read/write mode. Much more testing still - needed. - - * m4/largefile.m4 - Macro for detecting Large File Standard capabilities. This macro was ripped - out of the aclocal.m4 file of GNU tar-1.13. - - * configure.in - Added detection of large file support. Files larger than 2 Gigabytes should - now be supported on 64 bit platforms and many 32 bit platforms including - Linux (2.4 kernel, glibc-2.2), *BSD, MacOS, Win32. - - * libsndfile_convert_version.py - A Python script which attempts to autoconvert code written to use version 0 - to version 1. - -2002-04-24 Erik de Castro Lopo - - * src/*.[ch] - Finished base implementation of read/write mode. Much more testing still - needed. - - * tests/write_read_test.c - Preliminary tests for read/write mode added. More needed. - -2002-04-20 Erik de Castro Lopo - - * src/sndfile.[ch] - Removed sf_open_read() and sf_open_write() functions,replacting them with - sf_open() which takes an extra mode parameter (SF_OPEN_READ, SF_OPEN_WRITE, - or SF_OPEN_RDWR). This new function sf_open can now be modified to allow - opening a file formodification (RDWR). - -2002-04-19 Erik de Castro Lopo - - * src/*.c - Completed merging of separate xxx_open_read() and xxx_open_write() - functions. All tests pass. - -2002-04-18 Erik de Castro Lopo - - * src/au.c - Massive refactoring required to merge au_open_read() with au_open_write() - to create au_open(). - -2002-04-17 Erik de Castro Lopo - - * src/*.c - Started changes required to allow a sound file to be opened in read/write - mode, with separate file pointers for read and write. This involves merging - of encoder/decoder functions like pcm_read_init() and pcm_write_init() - int a new function pcm_init() as well as doing something similar for all - the file type specific functions ie aiff_open_read() and aiff_open_write() - were merged to make the function aiff_open(). - -2002-04-15 Erik de Castro Lopo - - * src/file_io.c - New file containing psf_fopen(), psf_fread(), psf_fwrite(), psf_fseek() and - psf_ftell() functions. These function will replace use of fopen/fread/fwrite - etc and allow access to files larger than 2 gigabytes on a number of 32 bit - OSes (Linux on x86, 32 bit Solaris user space apps, Win32 and MacOS). - - * src/*.c - Replaced all instances of fopen with psf_open, fread with psd_read, fwrite - with psf_write and so on. - -2002-03-11 Erik de Castro Lopo - - * src/dwvw.c - Finally fixed all known problems with 12, 16 and 24 bit DWVW encoding. - - * tests/floating_point_test.c - Added tests for 12, 16 and 24 bit DWVW encoding. - -2002-03-03 Erik de Castro Lopo - - * m4/endian.m4 - Defines a new m4 macro AC_C_FIND_ENDIAN, for determining the endian-ness of - the target CPU. It first checks for the definition of BYTE_ORDER in - , then in and . If none of these work - and the C compiler is not a cross compiler it compiles and runs a program - to test for endian-ness. If the compiler is a cross compiler it makes a - guess based on $target_cpu. - - * configure.in - Modified to use AC_C_FIND_ENDIAN. - - * src/sfendian.h - Simplified. - -2002-02-23 Erik de Castro Lopo - - * tests/floating_point_test.c - Tests completely rewritten using the dft_cmp function. Now able to - calculate a quick guesstimate of the Signal to Noise Ratio of the encoder. - -2002-02-15 Erik de Castro Lopo - - * tests/dft_cmp.[ch] - New files containing functions for comparing pre and post lossily - compressed data using a quickly hacked DFT. - - * tests/utils.[ch] - New files containing functions for saving pre and post encoded data in a - file readable by the GNU Octave package. - -2002-02-13 Erik de Castro Lopo - - * m4/lrint.m4 m4/lrintf.m4 - Fixed m4 macros to define HAVE_LRINT and HAVE_LRINTF even when the test - is cached. - -2002-02-12 Erik de Castro Lopo - - * tests/floating_point_test.c - Fixed improper use of strncat (). - -2002-02-11 Erik de Castro Lopo - - * tests/headerless_test.c - New test program to test the ability to open and read a known file type as a - RAW header-less file. - -2002-02-07 Erik de Castro Lopo - - * tests/losy_comp_test.c - Added a test to ensure that the data read from a file is not all zeros. - - * examples/sfconvert.c - Added "-gsm610" encoding types. - -2002-01-29 Erik de Castro Lopo - - * examples/sfconvert.c - Added "-dwvw12", "-dwvw16" and "-dwvw24" encoding types. - - * tests/dwvw_test.c - New file for testing DWVW encoder/decoder. - -2002-01-28 Erik de Castro Lopo - - * src/dwvw.c - Implemented writing of DWVW. 12 bit seems to work, 16 and 24 bit still broken. - - * src/aiff.c - Improved reporting of encoding types. - - * src/voc.c - Clean up. - -2002-01-27 Erik de Castro Lopo - - * src/dwvw.c - New file implementing lossless Delta Word Variable Width (DWVW) encoding. - Reading 12 bit DWVW is now working. - - * src/aiff.c common.h sndfile.c - Added hooks for DWVW encoded AIFF and RAW files. - -2002-01-15 Erik de Castro Lopo - - * src/w64.c - Robustify header parsing. - - * src/wav_w64.h - Header file wav.h was renamed to wav_w64.h to signify sharing of - definitions across the two file types. - - * src/wav.c src/w64.c src/wav_w64.c - Refactoring. - Modified and moved functions with a high degree of similarity between - wav.c and w64.c to wav_w64.c. - -2002-01-14 Erik de Castro Lopo - - * src/w64.c - Completed work on getting read and write working. - - * examples/sfplay.c - Added code to scale floating point data so it plays at a reasonable volume. - - * tests/Makefile.am tests/write_read_test.c - Added tests for W64 files. - -2002-01-13 Erik de Castro Lopo - - * src/*.c - Modded all code in file header writing routines to use - psf_new_binheader_writef(). - Removed psf_binheader_writef() from src/common.c. - Globally replaced psf_new_binheader_writef with psf_binheader_writef. - -2002-01-12 Erik de Castro Lopo - - * src/*.c - Modded all code in file parsing routines to use psf_new_binheader_readf(). - Removed psf_binheader_readf() from src/common.c. - Globally replaced psf_new_binheader_readf with psf_binheader_readf. - - * src/common.[ch] - Added new function psf_new_binheader_writef () which will soon replace - psf_binheader_writef (). The new function has basically the same function - as the original but has a more flexible and capable interface. It also - allows the writing of 64 bit integer values for files contains 64 bit file - offsets. - -2002-01-11 Erik de Castro Lopo - - * src/formats.c src/sndfile.c src/sndfile.h - Added code allowing full enumeration of supported file formats via the - sf_command () interface. - This feature will allow applications to avoid needing recompilation when - support for new file formats are added to libsndfile. - - * tests/command_test.c - Added test code for the above feature. - - * examples/list_formats.c - New file. An example of the use of the supported file enumeration - interface. This program lists all the major formats and for each major - format the supported subformats. - -2002-01-10 Erik de Castro Lopo - - * src/*.[ch] tests/*.c - Changed command parameter of sf_command () function from a test string to - an int. The valid values for the command parameter begin with SFC_ and are - listed in src/sndfile.h. - -2001-12-20 Erik de Castro Lopo - - * src/formats.c src/sndfile.c - Added an way of enumerating a set of common file formats using the - sf_command () interface. This interface was suggested by Dominic Mazzoni, - one of the main authors of Audacity (http://audacity.sourceforge.net/). - -2001-12-26 Erik de Castro Lopo - - * src/sndfile.c - Added checking of filename parameter in sf_open_read (). Previousy, if a - NULL pointer was passed the library would segfault. - -2001-12-18 Erik de Castro Lopo - - * src/common.c src/common.h - Changed the len parameter of the endswap_*_array () functions from type - int to type long. - - * src/pcm.c - Fixed a problem which - -2001-12-15 Erik de Castro Lopo - - * src/sndfile.c - Added conditional #include for EMX/gcc on OS/2. Thanks to - Paul Hartman for pointing this out. - - * tests/lossy_comp_test.c tests/floating_point_test.c - Added definitions for M_PI for when it isn't defined in . - -2001-11-30 Erik de Castro Lopo - - * src/ircam.c - Re-implemented the header reader. Old version was making incorrect - assumptions about the endian-ness of the file from the magic number at the - start of the file. The new code looks at the integer which holds the - number of channels and determines the endian-ness from that. - -2001-11-30 Erik de Castro Lopo - - * src/aiff.c - Added support for other AIFC types ('raw ', 'in32', '23ni'). - Further work on IMA ADPCM encoding. - -2001-11-29 Erik de Castro Lopo - - * src/ima_adpcm.c - Renamed from wav_ima_adpcm.c. This file will soon handle IMA ADPCM - encodings for both WAV and AIFF files. - - * src/aiff.c - Started adding IMA ADPCM support. - -2001-11-28 Erik de Castro Lopo - - * src/double.c - New file for handling double precision floating point (SF_FORMAT_DOUBLE) - data. - - * src/wav.c src/aiff.c src/au.c src/raw.c - Added support for SF_FORMAT_DOUBLE data. - - * src/common.[ch] - Addition of endswap_long_array () for endian swapping 64 bit integers. This - function will work correctly on processors with 32 bit and 64 bit longs. - Optimised endswap_short_array () and endswap_int_array (). - - * tests/pcm_test.c - Added and extra check. After the first file of each type is written to disk - a checksum is performed of the first 64 bytes and checked against a pre- - calculated value. This will work whatever the endian-ness of the host - machine. - -2001-11-27 Erik de Castro Lopo - - * src/aiff.c - Added handling of u-law, A-law encoded AIFF files. Thanks to Tom Erbe for - supplying example files. - - * tests/lossy_comp_test.c - Added tests for above. - - * src/common.h src/*.c - Removed function typedefs from common.h and function pointer casting in all - the other files. This allows the compiler to perform proper type checking. - Hopefully this will prevernt problems like the sf_seek bug for OpenBSD, - BeOS etc. - - * src/common.[ch] - Added new function psf_new_binheader_readf () which will eventually replace - psf_binheader_readf (). The new function has basically the same function as - the original but has a more flexible and capable interface. It also allows - the reading of 64 bit integer values for files contains 64 bit file - offsets. - -2001-11-26 Erik de Castro Lopo - - * src/voc.c - Completed implementation of VOC file handling. Can now handle 8 and 16 bit - PCM, u-law and A-law files with one or two channels. - - * src/write_read_test.c tests/lossy_comp_test.c - Added tests for VOC files. - -2001-11-22 Erik de Castro Lopo - - * src/float_cast.h - Added inline asm version of lrint/lrintf for MacOS. Solution provided by - Stephane Letz. - - * src/voc.c - More work on this braindamaged format. The VOC files produced by SoX also - have a number of inconsistencies. - -2001-11-19 Erik de Castro Lopo - - * src/paf.c - Added support for 8 bit PCM PAF files. - - * tests/write_read_test.c - Added tests for 8 bit PAF files. - -2001-11-18 Erik de Castro Lopo - - * tests/pcm_test.c - New test program to test for correct scaling of integer values between - different sized integer containers (ie short -> int). - The new specs for libsndfile state that when the source and destination - containers are of a different size, the most significant bit of the source - value becomes the most significant bit of the destination container. - - * src/pcm.c src/paf.c - Modified to pass the above test program. - - * tests/write_read_test.c tests/lossy_comp_test.c - Modified to work with the new scaling rules. - -2001-11-17 Erik de Castro Lopo - - * src/raw.c tests/write_read_test.c tests/write_read_test.c - Added ability to do raw reads/writes of float, u-law and A-law files. - - * src/*.[ch] examples/*.[ch] tests/*.[ch] - Removed dependance on pcmbitwidth field of SF_INFO struct and moved to new - SF_FORMAT_* types and use of SF_ENDIAN_BIG/LITTLE/CPU. - -2001-11-12 Erik de Castro Lopo - - * src/*.[ch] - Started implmentation of major changes documented in doc/version1.html. - - Removed all usage of off_t which is not part of the ISO C standard. All - places which were using it are now using type long which is the type of - the offset parameter for the fseek function. - This should fix problems on BeOS, MacOS and *BSD like systems which were - failing "make check" because sizeof (long) != sizeof (off_t). - --------------------------------------------------------------------------------- -This is the boundary between version 1 of the library above and version 0 below. --------------------------------------------------------------------------------- - -2001-11-11 Erik de Castro Lopo - - * examples/sfplay_beos.cpp - Added BeOS version of sfplay.c. This needs to be compiled using a C++ - compiler so is therefore not built by default. Thanks to Marcus Overhagen - for providing this. - -2001-11-10 Erik de Castro Lopo - - * examples/sfplay.c - New example file showing how libsndfile can be used to read and play a - sound file. - At the moment on Linux is supported. Others will follow in the near future. - -2001-11-09 Erik de Castro Lopo - - * src/pcm.c - Fixed problem with normalisation code where a value of 1.0 could map to - a value greater than MAX_SHORT or MAX_INT. Thanks to Roger Dannenberg for - pointing this out. - -2001-11-08 Erik de Castro Lopo - - * src/pcm.c - Fixed scaling issue when reading/writing 8 bit files using - sf_read/sf_write_short (). - On read, values are scaled so that the most significant bit in the char - ends up in the most significant bit of the short. On write, values are - scaled so that most significant bit in the short ends up as the most - significant bit in the char. - -2001-11-07 Erik de Castro Lopo - - * src/au.c src/sndfile.c - Added support for 32 bit float data in big and little endian AU files. - - * tests/write_read_test.c - Added tests for 32 bit float data in AU files. - -2001-11-06 Erik de Castro Lopo - - * tests/lossy_comp_test.c - Finalised testing of stereo files where possible. - -2001-11-05 Erik de Castro Lopo - - * src/wav_ms_adpcm.c - Fixed bug in writing stereo MS ADPCM WAV files. Thanks to Xu Xin for - pointing out this problem. - -2001-10-24 Erik de Castro Lopo - - * src/wav_ms_adpcm.c - Modified function srate2blocksize () to handle 44k1Hz stereo files. - -2001-10-21 Erik de Castro Lopo - - * src/w64.c - Added support for Sonic Foundry 64 bit WAV format. As Linux (my main - development platform) does not yet support 64 bit file offsets by default, - current handling of this file format treats everything as 32 bit and fails - openning the file, if it finds anything that goes beyond 32 bit values. - - * src/sndfile.[hc] src/common.h src/Makefile.am - Added hooks for W64 support. - -2001-10-21 Erik de Castro Lopo - - * configure.in - Added more warnings options to CFLAGS when the gcc compiler is detected. - - * src/*.[ch] tests/*.c examples/*.c - Started fixing the warning messages due to the new CFLASG. - - * src/voc.c - More work on VOC file read/writing. - - * src/paf.c - Found that PAF files were not checking the normalisation flag when reading - or writing floats and doubles. Fixed it. - - * tests/floating_point_test.c - Added specific test for the above problem. - - * src/float_cast.h src/pcm.c - Added a section for Win32 to define lrint () and lrintf () in the header - and implement it in the pcm.c - -2001-10-20 Erik de Castro Lopo - - * sndfile-config.in m4/sndfile.m4 - These files were donated by Conrad Parker who also provided instructions - on how to install them using autoconf/automake. - - * src/float_cast.h - Fiddled around with this file some more. On Linux and other gcc supported - OSes use the C99 functions lrintf() and lrint() for casting from floating - point to int without incurring the huge perfromance penalty (particularly - on the i386 family) caused by the regular C cast from float to int. - These new C99 functions replace the FLOAT_TO_* and DOUBLE_TO_* macros which - I had been playing with. - - * configure.in m4/lrint.m4 m4/lrintf.m4 - Add detection of these functions. - -2001-10-17 Erik de Castro Lopo - - * src/voc.c - Completed code for reading VOC files containing a single audio data - segment. - Started implementing code to handle files with multiple VOC_SOUND_DATA - segments but couldn't be bothered finishing it. Multiple segment files can - have different sample rates for different sections and other nasties like - silence and repeat segments. - -2001-10-16 Erik de Castro Lopo - - * src/common.h src/*.c - Removed SF_PRIVATE struct field fdata and replaced it with extra_data. - - * src/voc.c - Further development of the read part of this woefult file format. - -2001-10-04 Erik de Castro Lopo - - * src/float_cast.h - Implemented gcc and i386 floating point to int cast macros. Standard cast - will be used when not on gcc for i385. - - * src/pcm.c - Modified all uses of FLOAT/DOUBLE_TO_INT and FLOAT/DOUBLE_TO_SHORT casts to - comply with macros in float_cast.h. - -2001-10-04 Erik de Castro Lopo - - * src/voc.c - Changed the TYPE_xxx enum names to VOC_TYPE_xxx to prevent name clashes - on MacOS with CodeWarrior 6.0. - - * MacOS/MacOS-readme.txt - Updated the compile instructions. Probably still need work as I don't have - access to a Mac. - -2001-10-01 Erik de Castro Lopo - - * src/wav.c src/aiff.c common.c - Changed all references to snprintf to LSF_SNPRINTF and all vsnprintf to - LSF_VSNPRINTF. LSF_VSNPRINTF and LSF_VSNPRINTF are defined in common.h. - - * src/common.h - Added checking of HAVE_SNPRINTF and HAVE_VSNPRINTF and defining - LSF_VSNPRINTF and LSF_VSNPRINTF to appropriate values. - - * src/missing.c - New file containing a minimal implementation of snprintf and vsnprintf - functions named missing_snprintf and missing_vsnprintf respectively. These - are only compliled into the binary if snprintf and/or vsnprintf are not - available. - -2001-09-29 Erik de Castro Lopo - - * src/ircam.c - New file to handle Berkeley/IRCAM/CARL files. - - * src/sndfile.c src/common.h - Modified for IRCAM handling. - - * tests/*.c - Added tests for IRCAM files. - -2001-09-27 Erik de Castro Lopo - - * src/wav.c - Apparently microsoft windows (tm) doesn't like ulaw and Alaw WAV files with - 20 byte format chunks (contrary to ms's own documentation). Fixed the WAV - header writing code to generate smaller ms compliant ulaw and Alaw WAV - files. - -2001-09-17 Erik de Castro Lopo - - * tests/stdio_test.sh tests/stdio_test.c - Shell script was rewritten as a C program due to incompatibilities of the - sh shell on Linux and Solaris. - -2001-09-16 Erik de Castro Lopo - - * tests/stdio_test.sh tests/stdout_test.c tests/stdin_test.c - New test programs to verify the correct operation of reading from stdin and - writing to stdout. - - * src/sndfile.c wav.c au.c nist.c paf.c - Fixed a bugs uncovered by the new test programs above. - -2001-09-15 Erik de Castro Lopo - - * src/sndfile.c wav.c - Fixed a bug preventing reading a file from stdin. Found by T. Narita. - -2001-09-12 Erik de Castro Lopo - - * src/common.h - Fixed a problem on OpenBSD 2.9 which was causing sf_seek() to fail on IMA - WAV files. Root cause was the declaration of the func_seek typedef not - matching the functions it was actually being used to point to. In OpenBSD - sizeof (off_t) != sizeof (int). Thanks to Heikki Korpela for allowing me - to log into his OpenBSD machine to debug this problem. - -2001-09-03 Erik de Castro Lopo - - * src/sndfile.c - Implemented sf_command ("norm float"). - - * src/*.c - Implemented handling of sf_command ("set-norm-float"). Float normalization - can now be turned on and off. - - * tests/double_test.c - Renamed to floating_point_test.c. Modified to include tests for all scaled - reads and writes of floats and doubles. - - * src/au_g72x.c - Fixed bug in normalization code found with improved floating_point_test - program. - - * src/wav.c - Added code for parsing 'INFO' and 'LIST' chunks. Will be used for extract - text annotations from WAV files. - - * src/aiff.c - Added code for parsing '(c) ' and 'ANNO' chunks. Will be used for extract - text annotations from WAV files. - -2001-09-02 Erik de Castro Lopo - - * examples/sf_info.c example/Makefile.am - Renamed to sndfile_info.c. The program sndfile_info will now be installed - when the library is installed. - - * src/float_cast.h - New file defining floating point to short and int casts. These casts will - eventually replace all flot and double casts to short and int. See comments - at the top of the file for the reasoning. - - * src/*.c - Changed all default float and double casts to short or int with macros - defined in floatcast.h. At the moment these casts do nothing. They will be - replaced with faster float to int cast operations in the near future. - -2001-08-31 Erik de Castro Lopo - - * tests/command_test.c - New file for testing sf_command () functionality. - - * src/sndfile.c - Revisiting of error return values of some functions. - Started implementing sf_command () a new function will allow on-the-fly - modification of library behaviour, or instance, sample value scaling. - - * src/common.h - Added hook for format specific sf_command () calls to SNDFILE struct. - - * doc/api.html - Updated and errors corrected. - - * doc/command.html - New documentation file explaining new sf_command () function. - -2001-08-11 Erik de Castro Lopo - - * src/sndfile.c - Fixed error return values from sf_read*() and sf_write*(). There were - numerous instances of -1 being returned through size_t. These now all set - error int the SF_PRIVATE struct and return 0. Thanks to David Viens for - spotting this. - -2001-08-01 Erik de Castro Lopo - - * src/common.c - Fixed use of va_arg() calls that were causing warning messages with the - latest version of gcc (thanks Maurizio Umberto Puxeddu). - -2001-07-25 Erik de Castro Lopo - - * src/*.c src/sfendian.h - Moved definition of MAKE_MARKER macro to sfendian.h - -2001-07-23 Erik de Castro Lopo - - * src/sndfile.c - Modified sf_get_lib_version () so that version string will be visible using - the Unix strings command. - - * examples/Makefile.am examples/sfinfo.c - Renamed sfinfo program and source code to sf_info. This prevents a name - clash with the program included with libaudiofile. - -2001-07-22 Erik de Castro Lopo - - * tests/read_seek_test.c tests/lossy_comp_test.c - Added tests for sf_read_float () and sf_readf_float (). - - * src/voc.c - New files for handling Creative Voice files (not complete). - - * src/samplitude.c - New files for handling Samplitude files (not complete). - -2001-07-21 Erik de Castro Lopo - - * src/aiff.c src/au.c src/paf.c src/svx.c src/wav.c - Converted these files to using psf_binheader_readf() function. Will soon be - ready to attempt to make reading writing from pipes work reliably. - - * src/*.[ch] - Added code for sf_read_float () and sf_readf_float () methods of accessing - file data. - -2001-07-20 Erik de Castro Lopo - - * src/paf.c src/wav_gsm610.c - Removed two printf()s which had escaped notice for some time (thanks - Sigbjørn Skjæret). - -2001-07-19 Erik de Castro Lopo - - * src/wav_gsm610.c - Fixed a bug which prevented GSM 6.10 encoded WAV files generated by - libsndfile from being played in Windoze (thanks klay). - -2001-07-18 Erik de Castro Lopo - - * src/common.[ch] - Implemented psf_binheader_readf() which will do for file header reading what - psf_binheader_writef() did for writing headers. Will eventually allow - libsndfile to read and write from pipes, including named pipes. - -2001-07-16 Erik de Castro Lopo - - * MacOS/config.h Win32/config.h - Attempted to bring these two files uptodate with src/config.h. As I don't - have access to either of these systems support for them may be completely - broken. - -2001-06-18 Erik de Castro Lopo - - * src/float32.c - Fixed bug for big endian processors that can't read 32 bit IEEE floats. Now - tested on Intel x86 and UltraSparc processors. - -2001-06-13 Erik de Castro Lopo - - * src/aiff.c - Modified to allow REX files (from Propellorhead's Recycle and Reason - programs) to be read. - REX files are basically an AIFF file with slightly unusual sequence of - chunks (AIFF files are supposed to allow any sequence) and some extra - application specific information. - Not yet able to write a REX file as the details of the application specific - data is unknown. - -2001-06-12 Erik de Castro Lopo - - * src/wav.c - Fixed endian bug when reading PEAK chunk on big endian machines. - - * src/common.c - Fixed endian bug when reading PEAK chunk on big endian machines with - --enable-force-broken-float configure option. - Fix psf_binheader_writef for (FORCE_BROKEN_FLOAT ||______) - -2001-06-07 Erik de Castro Lopo - - * configure.in src/config.h.in - Removed old CAN_READ_WRITE_x86_IEEE configure variable now that float - capabilities are detected at run time. - Added FORCE_BROKEN_FLOAT to allow testing of broken float code on machines - where the processor can in fact handle floats correctly. - - * src/float32.c - Rejigged code reading and writing of floats on broken processors. - - * m4/ - Removed this directory and all its files as they are no longer needed. - -2001-06-05 Erik de Castro Lopo - - * tests/peak_chunk_test.c - New test to validate reading and writing of peak chunk. - - * examples/sfconvert - Added -float32 option. - - * src/*.c - Changed all error return values to negative values (ie the negative of what - they were). - - * src/sndfile.c tests/error_test.c - Modified to take account of the previous change. - -2001-06-04 Erik de Castro Lopo - - * src/float32.c - File renamed from wav_float.c and renamed function to something more - general. - Added runtime detection of floating point capabilities. - Added recording of peaks during write for generation of PEAK chunk. - - * src/wav.c src/aiff.c - Added handing for PEAK chunk for floating point files. PEAK is read when the - file headers are read and generated when the file is closed. Logic is in - place for adding PEAK chunk to end of file when writing to a pipe (reading - and writing from/to pipe to be implemented soon). - - * src/sndfile.c - Modified sf_signal_max () to use PEAK values if present. - -2001-06-03 Erik de Castro Lopo - - * src/*.c - Added pcm_read_init () and pcm_write_init () to src/pcm.c and removed all - other calls to functions in this file from the filetype specific files. - - * src/*.c - Added alaw_read_init (), alaw_write_int (), ulaw_read_init () and - ulaw_write_init () and removed all other calls to functions in alaw.c and - ulaw.c from the filetype specific files. - - * tests/write_read_test.c - Added tests to validate sf_seek () on all file types. - - * src/raw.c - Implemented raw_seek () function to fix a bug where - sf_seek (file, 0, SEEK_SET) on a RAW file failed. - - * src/paf.c - Fixed a bug in paf24_seek () found due to added seeks tests in - tests/write_read_test.c - -2001-06-01 Erik de Castro Lopo - - * tests/read_seek_test.c - Fixed a couple of broken binary files. - - * src/aiff.c src/wav.c - Added handling of PEAK chunks on file read. - -2001-05-31 Erik de Castro Lopo - - * check_libsndfile.py - New file for the regression testing of libsndfile. - check_libsndfile.py is a Python script which reads in a file containing - filenames of audio files. Each file is checked by running the examples/sfinfo - program on them and checking for error or warning messages in the libsndfile - log buffer. - - * check_libsndfile.list - This is an example list of audio files for use with check_libsndfile.py - - * tests/lossy_comp_test.c - Changed the defined value of M_PI for math header files which don't have it. - This fixed validation test failures on MetroWerks compilers. Thanks to Lord - Praetor Satanus of Acheron for bringing this to my attention. - -2001-05-30 Erik de Castro Lopo - - * src/common.[ch] - Removed psf_header_setf () which was no longer required after refactoring - and simplification of header writing. - Added 'z' format specifier to psf_binheader_writef () for zero filling header - with N bytes. Used by paf.c and nist.c - - * tests/check_log_buffer.c - New file implementing check_log_buffer () which reads the log buffer of a - SNDFILE* object and searches for error and warning messages. Calls exit () - if any are found. - - * tests/*.c - Added calls to check_log_buffer () after each call to sf_open_XXX (). - -2001-05-29 Erik de Castro Lopo - - * src/wav.c src/wav_ms_adpcm.c src/wav_gsm610.c - Major rehack of header writing using psf_binheader_writef (). - -2001-05-28 Erik de Castro Lopo - - * src/wav.c src/wav_ima_adpcm.c - Major rehack of header writing using psf_binheader_writef (). - -2001-05-27 Erik de Castro Lopo - - * src/wav.c - Changed return type of get_encoding_str () to prevent compiler warnings on - Mac OSX. - - * src/aiff.c src/au.c - Major rehack of header writing using psf_binheader_writef (). - -2001-05-25 Erik de Castro Lopo - - * src/common.h src/common.c - Added comments. - Name of log buffer changed from strbuffer to logbuffer. - Name of log buffer index variable changed from strindex to logindex. - - * src/*.[ch] - Changed name of internal logging function from psf_sprintf () to - psf_log_printf (). - Changed name of internal header generation functions from - psf_[ab]h_printf () to psf_asciiheader_printf () and - psf_binheader_writef (). - Changed name of internal header manipulation function psf_hsetf () to - psf_header_setf (). - -2001-05-24 Erik de Castro Lopo - - * src/nist.c - Fixed reading and writing of sample_byte_format header. "01" means little - endian and "10" means big endian regardless of bit width. - - * configure.in - Detect Mac OSX and disable -Wall and -pedantic gcc options. Mac OSX is - way screwed up and spews out buckets of warning messages from the system - headers. - Added --disable-gcc-opt configure option (sets gcc optimisation to -O0 ) for - easier debugging. - Made decision to harmonise source code version number and .so library - version number. Future releases will stick to this rule. - - * doc/new_file_type.HOWTO - New file to document the addition of new file types to libsndfile. - -2001-05-23 Erik de Castro Lopo - - * src/nist.c - New file for reading/writing Sphere NIST audio file format. - Originally requested by Elis Pomales in 1999. - Retrieved from unstable (and untouched for 18 months) branch of libsndfile. - Some vital information gleaned from the source code to Bill Schottstaedt's - sndlib library : ftp://ccrma-ftp.stanford.edu/pub/Lisp/sndlib.tar.gz - Currently reading and writing 16, 24 and 32 bit, big-endian and little - endian, stereo and mono files. - - * src/common.h src/common.c - Added psf_ah_printf () function to help construction of ASCII headers (ie NIST). - - * configure.in - Added test for vsnprintf () required by psf_ah_printf (). - - * tests/write_read_test.c - Added tests for supported NIST files. - -2001-05-22 Erik de Castro Lopo - - * tests/write_read_test.c - Added tests for little endian AIFC files. - - * src/aiff.c - Minor re-working of aiff_open_write (). - Added write support for little endian PCM encoded AIFC files. - -2001-05-13 Erik de Castro Lopo - - * src/aiff.c - Minor re-working of aiff_open_read (). - Added read support for little endian PCM encoded AIFC files from the Mac - OSX CD ripper program. Guillaume Lessard provided a couple of sample files - and a working patch. - The patch was not used as is but gave a good guide as to what to do. - -2001-05-11 Erik de Castro Lopo - - * src/sndfile.h - Fixed comments about endian-ness of WAV and AIFF files. Guillaume Lessard - pointed out the error. - -2001-04-23 Erik de Castro Lopo - - * examples/make_sine.c - Re-write of this example using sample rate and required frequency in Hz. - -2001-02-11 Erik de Castro Lopo - - * src/sndfile.c - Fixed bug that prevented known file types from being read as RAW PCM data. - -2000-12-16 Erik de Castro Lopo - - * src/aiff.c - Added handing of COMT chunk. - -2000-11-16 Erik de Castro Lopo - - * examples/sfconvert.c - Fixed bug in normalisatio code. Pointed out by Johnny Wu. - -2000-11-08 Erik de Castro Lopo - - * Win32/config.h - Fixed the incorrect setting of HAVE_ENDIAN_H parameter. Win32 only issue. - -2000-10-27 Erik de Castro Lopo - - * tests/Makefile.am - Added -lm for write_read_test_LDADD. - -2000-10-16 Erik de Castro Lopo - - * src/sndfile.c src/au.c - Fixed bug which prevented writing of G723 24kbps AU files. - - * tests/lossy_comp_test.c - Corrrection to options for G723 tests. - - * configure.in - Added --disable-gcc-pipe option for DJGPP compiler (gcc on MS-DOS) which - doesn't allow gcc -pipe option. - -2000-09-03 Erik de Castro Lopo - - * src/ulaw.c src/alaw.c src/wav_imaadpcm.c src/msadpcm.c src/wav_gsm610.c - Fixed normailsation bugs shown up by new double_test program. - -2000-08-31 Erik de Castro Lopo - - * src/pcm.c - Fixed bug in normalisation code (spotted by Steve Lhomme). - - * tests/double_test.c - New file to test scaled and unscaled sf_read_double() and sf_write_double() - functions. - -2000-08-28 Erik de Castro Lopo - - * COPYING - Changed to the LGPL COPYING file (spotted by H. S. Teoh). - -2000-08-21 Erik de Castro Lopo - - * src/sndfile.h - Removed prototype of unimplemented function sf_get_info(). Added prototype - for sf_error_number() Thanks to Sigbjørn Skjæret for spotting these. - -2000-08-18 Erik de Castro Lopo - - * src/newpcm.h - New file to contain a complete rewrite of the PCM data handling. - -2000-08-15 Erik de Castro Lopo - - * src/sndfile.c - Fixed a leak of FILE* pointers in sf_open_write(). Thanks to Sigbjørn - Skjæret for spotting this one. - -2000-08-13 Erik de Castro Lopo - - * src/au_g72x.c src/G72x/g72x.c - Added G723 encoded AU file support. - - * tests/lossy_comp_test.c - Added tests for G721 and G723 encoded AU files. - -2000-08-06 Erik de Castro Lopo - - * all files - Changed the license to LGPL. Albert Faber who had copyright on - Win32/unistd.h gave his permission to change the license on that file. All - other files were either copyright erikd AT mega-nerd DOT com or copyright - under a GPL/LGPL compatible license. - -2000-08-06 Erik de Castro Lopo - - * tests/lossy_comp_test.c - Fixed incorrect error message. - - * src/au_g72x.c src/G72x/* - G721 encoded AU files now working. - - * Win32/README-Win32.txt - Replaced this file with a new one which gives a full explanation - of how to build libsndfile under Win32. Thanks to Mike Ricos. - -2000-08-05 Erik de Castro Lopo - - * src/*.[ch] - Removed double leading underscores from the start of all variable and - function names. Identifiers with a leading underscores are reserved - for use by the compiler. - - * src/au_g72x.c src/G72x/* - Continued work on G721 encoded AU files. - -2000-07-12 Erik de Castro Lopo - - * src/G72x/* - New files for reading/writing G721 and G723 ADPCM audio. These files - are from a Sun Microsystems reference implementation released under a - free software licence. - Extensive changes to this code to make it fit in with libsndfile. - See the ChangeLog in this directory for details. - - * src/au_g72x.c - New file for G721 encoded AU files. - -2000-07-08 Erik de Castro Lopo - - * libsndfile.spec.in - Added a spec file for making RPMs. Thanks to Josh Green for supplying this. - -2000-06-28 Erik de Castro Lopo - - * src/sndfile.c src/sndfile.h - Add checking for and handling of header-less u-law encoded AU/SND files. - Any file with a ".au" or ".snd" file extension and without the normal - AU file header is treated as an 8kHz, u-law encoded file. - - * src/au.h - New function for opening a headerless u-law encoded file for read. - -2000-06-04 Erik de Castro Lopo - - * src/paf.c - Add checking for files shorter than minimal PAF file header length. - -2000-06-02 Erik de Castro Lopo - - * tests/write_read_test.c - Added extra sf_perror() calls when sf_write_XXXX fails. - -2000-05-29 Erik de Castro Lopo - - * src/common.c - Modified usage of va_arg() macro to work correctly on PowerPC - Linux. Thanks to Kyle Wheeler for giving me ssh access to his - machine while I was trying to track this down. - - * configure.in src/*.[ch] - Sorted out some endian-ness issues brought up by PowerPC Linux. - - * tests/read_seek_test.c - Added extra debugging for when tests fail. - -2000-05-18 Erik de Castro Lopo - - * src/wav.c - Fixed bug in GSM 6.10 handling for big-endian machines. Thanks - to Sigbjørn Skjæret for reporting this. - -2000-04-25 Erik de Castro Lopo - - * src/sndfile.c src/wav.c src/wav_gsm610.c - Finallised writing of GSM 6.10 WAV files. - - * tests/lossy_comp_test.c - Wrote new test code for GSM 6.10 files. - - * examples/sfinfo.c - Fixed incorrect format in printf() statement. - -2000-04-06 Erik de Castro Lopo - - * src/sndfile.h.in - Fixed comments about sf_perror () and sf_error_str (). - -2000-03-14 Erik de Castro Lopo - - * configure.in - Fixed --enable-justsrc option. - -2000-03-07 Erik de Castro Lopo - - * wav.c - Fixed checking of bytespersec field of header. Still some weirdness - with some files. - -2000-03-05 Erik de Castro Lopo - - * tests/lossy_comp_test.c - Added option to test PCM WAV files (sanity check). - Fixed bug in sf_seek() tests. - -2000-02-29 Erik de Castro Lopo - - * src/sndfile.c src/wav.c - Minor changes to allow writing of GSM 6.10 WAV files. - -2000-02-28 Erik de Castro Lopo - - * configure.in Makefile.am src/Makefile.am - Finally got around to figuring out how to build a single library from - multiple source directories. - Reading GSM 6.10 files now seems to work. - -2000-01-03 Erik de Castro Lopo - - * src/wav.c - Added more error reporting in read_fmt_chunk(). - -1999-12-21 Erik de Castro Lopo - - * examples/sfinfo.c - Modified program to accept multiple filenames from the command line. - -1999-11-27 Erik de Castro Lopo - - * src/wav_ima_adpcm.c - Moved code around in preparation to adding ability to read/write IMA ADPCM - encoded AIFF files. - -1999-11-16 Erik de Castro Lopo - - * src/common.c - Fixed put_int() and put_short() macros used by _psf_hprintf() which were - causing seg. faults on Sparc Solaris. - -1999-11-15 Erik de Castro Lopo - - * src/common.c - Added string.h to includes. Thanks to Sigbjxrn Skjfret. - - * src/svx.c - Fixed __svx_close() function to ensure FORM and BODY chunks are correctly - set. - -1999-10-01 Erik de Castro Lopo - - * src/au.c - Fixed handling of incorrect size field in AU header on read. Thanks to - Christoph Lauer for finding this problem. - -1999-09-28 Erik de Castro Lopo - - * src/aiff.c - Fixed a bug with incorrect SSND chunk length being written. This also lead - to finding an minor error in AIFF header parsing. Thanks to Dan Timis for - pointing this out. - -1999-09-24 Erik de Castro Lopo - - * src/paf.c - Fixed a bug with reading and writing 24 bit stereo PAF files. This problem - came to light when implementing tests for the new functions which operate - in terms of frames rather than items. - -1999-09-23 Erik de Castro Lopo - - * src/sndfile.c - Modified file type detection to use first 12 bytes of file rather than - file name extension. Required this because NIST files use the same - filename extension as Microsoft WAV files. - - * src/sndfile.c src/sndfile.h - Added short, int and double read/write functions which work in frames - rather than items. This was originally suggested by Maurizio Umberto - Puxeddu. - -1999-09-22 Erik de Castro Lopo - - * src/svx.c - Finished off implementation of write using __psf_hprintf(). - -1999-09-21 Erik de Castro Lopo - - * src/common.h - Added a buffer to SF_PRIVATE for writing the header. This is required - to make generating headers for IFF/SVX files easier as well as making - it easier to do re-write the headers which will be required when - sf_rewrite_header() is implemented. - - * src/common.c - Implemented __psf_hprintf() function. This is an internal function - which is documented briefly just above the code. - -1999-09-05 Erik de Castro Lopo - - * src/sndfile.c - Fixed a bug in sf_write_raw() where it was returning incorrect values - (thanks to Richard Dobson for finding this one). Must put in a test - routine for sf_read_raw and sf_write_raw. - - * src/aiff.c - Fixed default FORMsize in __aiff_open_write (). - - * src/sndfile.c - Added copy of filename to internal data structure. IFF/SVX files - contain a NAME header chunk. Both sf_open_read() and sf_open_write() - copy the file name (less the leading path information) to the - filename field. - - * src/svx.c - Started implementing writing of files. - -1999-08-04 Erik de Castro Lopo - - * src/svx.c - New file for reading/writing 8SVX and 16SVX files. - - * src/sndfile.[ch] src/common.h - Changes for SVX files. - - * src/aiff.c - Fixed header parsing when unknown chunk is found. - -1999-08-01 Erik de Castro Lopo - - * src/paf.c - New file for reading/writing Ensoniq PARIS audio file format. - - * src/sndfile.[ch] src/common.h - Changes for PAF files. - - * src/sndfile.[ch] - Added stuff for sf_get_lib_version() function. - - -1999-07-31 Erik de Castro Lopo - - * src/sndfile.h MacOS/config.h - Fixed minor MacOS configuration issues. - -1999-07-30 Erik de Castro Lopo - - * MacOS/ - Added a new directory for the MacOS config.h file and the - readme file. - - * src/aiff.c - Fixed calculation of datalength when reading SSND chunk. Thanks to - Sigbjørn Skjæret for pointing out this error. - -1999-07-29 Erik de Castro Lopo - - * src/sndfile.c src/sndfile.h src/raw.c - Further fixing of #includes for MacOS. - -1999-07-25 Erik de Castro Lopo - - * src/wav.c src/aiff.c - Added call to ferror () in main header parsing loop of __XXX_open_read - functions. This should fix problems on platforms (MacOS, AmigaOS) where - fseek()ing or fread()ing beyond the end of the file puts the FILE* - stream in an error state until clearerr() is called. - - * tests/write_read_test.c - Added tests for RAW header-less PCM files. - - * src/common.h - Moved definition of struct tribyte to pcm.c which is the only place - which needs it. - - * src/pcm.c - Modified all code which assumed sizeof (struct tribyte) == 3. This code - did not work on MacOS. Thanks to Ben "Jacobs" for pointing this out. - - * src/au.c - Removed from list of #includes (not being used). - - * src/sndfile.c - Added MacOS specific #ifdef to replace . - - * src/sndfile.h - Added MacOS specific #ifdef to replace . - - * src/sndfile.h - Added MacOS specific typedef for off_t. - - * MacOS-readme.txt - New file with instructions for building libsndfile under MacOS. Thanks - to Ben "Jacobs" for supplying these instructions. - -1999-07-24 Erik de Castro Lopo - - * configure.in - Removed sndfile.h from generated file list as there were no longer - any autoconf substitutions being made. - - * src/raw.c - New file for handling raw header-less PCM files. In order to open these - for read, the user must specify format, pcmbitwidth and channels in the - SF_INFO struct when calling sf_open_read (). - - * src/sndfile.c - Added support for raw header-less PCM files. - -1999-07-22 Erik de Castro Lopo - - * examples/sfinfo.c - Removed options so the sfinfo program always prints out all the information. - -1999-07-19 Erik de Castro Lopo - - * src/alaw.c - New file for A-law encoding (similar to u-law). - - * tests/alaw_test.c - New test program to test the A-law encode/decode lookup tables. - - * tests/lossy_comp_test.c - Added tests for a-law encoded WAV, AU and AULE files. - -1999-07-18 Erik de Castro Lopo - - * src/sndfile.c src/au.c - Removed second "#include ". Thanks to Ben "Jacobs" for pointing - this out. - -1999-07-18 Erik de Castro Lopo - - * tests/ulaw_test.c - New test program to test the u-law encode/decode lookup tables. - -1999-07-16 Erik de Castro Lopo - - * src/sndfile.h - Made corrections to comments on the return values from sf_seek (). - - * src/sndfile.c - Fixed boundary condition checking bug and accounting bug in sf_read_raw (). - -1999-07-15 Erik de Castro Lopo - - * src/au.c src/ulaw.c - Finished implementation of u-law encoded AU files. - - * src/wav.c - Implemented reading and writing of u-law encoded WAV files. - - * tests/ - Changed name of adpcm_test.c to lossy_comp_test.c. This test program - will now be used to test Ulaw and Alaw encoding as well as APDCM. - Added tests for Ulaw encoded WAV files. - -1999-07-14 Erik de Castro Lopo - - * tests/adpcm_test.c - Initialised amp variable in gen_signal() to remove compiler warning. - -1999-07-12 Erik de Castro Lopo - - * src/aiff.c - In __aiff_open_read () prevented fseek()ing beyond end of file which - was causing trouble on MacOS with the MetroWerks compiler. Thanks to - Ben "Jacobs" for pointing this out. - - *src/wav.c - Fixed as above in __wav_open_read (). - -1999-07-01 Erik de Castro Lopo - - * src/wav_ms_adpcm.c - Implemented MS ADPCM encoding. Code cleanup of decoder. - - * tests/adpcm_test.c - Added tests for MS ADPCM WAV files. - - * src/wav_ima_adpcm.c - Fixed incorrect parameter in call to srate2blocksize () from - __ima_writer_init (). - -1999-06-23 Erik de Castro Lopo - - * tests/read_seek_test.c - Added test for 8 bit AIFF files. - -1999-06-18 Erik de Castro Lopo - - * tests/write_read_test.c - Removed test for IMA ADPCM WAV files which is now done in adpcm_test.c - - * configure.in - Added -Wconversion to CFLAGS. - - * src/*.c tests/*.c examples/*.c - Fixed all warnings resulting from use of -Wconversion. - -1999-06-17 Erik de Castro Lopo - - * src/wav.c - Added fact chunk handling on read and write for all non WAVE_FORMAT_PCM - WAV files. - - * src/wav_ima.c - Changed block alignment to be dependant on sample rate. This should make - WAV files created with libsndfile compatible with the MS Windows media - players. - - * tests/adpcm_test.c - Reimplemented adpcm_test_short and implemented adpcm_test_int and - adpcm_test_double. - Now have full testing of IMA ADPCM WAV file read, write and seek. - -1999-06-15 Erik de Castro Lopo - - * src/wav_float.c - Fixed function prototype for x86f2d_array () which was causing ocassional - seg. faults on Sparc Solaris machines. - -1999-06-14 Erik de Castro Lopo - - * src/aiff.c - Fixed bug in __aiff_close where the length fields in the header were - not being correctly calculated before writing. - - * tests/write_read_test.c - Modified to detect the above bug in WAV, AIFF and AU files. - -1999-06-12 Erik de Castro Lopo - - * Win32/* - Added a contribution from Albert Faber to allow libsndfile to compile - under Win32 systems. libsndfile will now be used as part of LAME the - the MPEG 1 Layer 3 encoder (http://internet.roadrunner.com/~mt/mp3/). - -1999-06-11 Erik de Castro Lopo - - * configure.in - Changed to reflect previous changes. - - * src/wav_ima_adpcm.c - Fixed incorrect calculation of bytespersec header field (IMA ADPCM only). - - Fixed bug when writing from int or double data to IMA ADPCM file. Will need - to write test code for this. - - Fixed bug in __ima_write () whereby the length of the current block was - calculated incorrectly. Thanks to Jongcheon Park for pointing this out. - -1999-03-27 Erik de Castro Lopo - - * src/*.c - Changed all read/write/lseek function calls to fread/fwrite/ - fseek/ftell and added error checking of return values from - fread and fwrite in critical areas of the code. - - * src/au.c - Fixed incorrect datasize element in AU header on write. - - * tests/error_test.c - Add new test to check all error values have an associated error - string. This will avoid embarrassing real world core dumps. - -1999-03-23 Erik de Castro Lopo - - * src/wav.c src/aiff.c - Added handling for unknown chunk markers in the file. - -1999-03-22 Erik de Castro Lopo - - * src/sndfile.c - Filled in missing error strings in SndfileErrors array. Missing entries - can cause core dumps when calling sf_error-str (). Thanks to Sam - for finding this problem. - -1999-03-21 Erik de Castro Lopo - - * src/wav_ima_adpcm.c - Work on wav_ms_adpcm.c uncovered a bug in __ima_read () when reading - stereo files. Caused by not adjusting offset into buffer of decoded - samples for 2 channels. A similar bug existed in __ima_write (). - Need a test for stereo ADPCM files. - - * src/wav_ms_adpcm.c - Decoder working correctly. - -1999-03-18 Erik de Castro Lopo - - * configure.in Makefile.am - Added --enable-justsrc configuration variable sent by Sam - . - - * src/wav_ima_adpcm.c - Fixed bug when reading beyond end of data section due to not - checking pima->blockcount. - This uncovered __ima_seek () bug due to pima->blockcount being set - before calling __ima_init_block (). - -1999-03-17 Erik de Castro Lopo - - * src/wav.c - Started implementing MS ADPCM decoder. - If file is WAVE_FORMAT_ADPCM and length of data chunk is odd, this - encoder seems to add an extra byte. Why not just give an even data - length? - -1999-03-16 Erik de Castro Lopo - - * src/wav.c - Split code out of wav.c to create wav_float.c and wav_ima_adpcm.c. - This will make it easier to add and debug other kinds of WAV files - in future. - -1999-03-14 Erik de Castro Lopo - - * tests/ - Added adpcm_test.c which implements test functions for - IMA ADPCM reading/writing/seeking etc. - - * src/wav.c - Fixed many bugs in IMA ADPCM encoder and decoder. - -1999-03-11 Erik de Castro Lopo - - * src/wav.c - Finished implementing IMA ADPCM encoder and decoder (what a bitch!). - -1999-03-03 Erik de Castro Lopo - - * src/wav.c - Started implementing IMA ADPCM decoder. - -1999-03-02 Erik de Castro Lopo - - * src/sndfile.c - Fixed bug where the sf_read_XXX functions were returning a - incorrect read count when reading past end of file. - Fixed bug in sf_seek () when seeking backwards from end of file. - - * tests/read_seek_test.c - Added multiple read test to short_test(), int_test () and - double_test (). - Added extra chunk to all test WAV files to test that reading - stops at end of 'data' chunk. - -1999-02-21 Erik de Castro Lopo - - * tests/write_read_test.c - Added tests for little DEC endian AU files. - - * src/au.c - Add handling for DEC format little endian AU files. - -1999-02-20 Erik de Castro Lopo - - * src/aiff.c src/au.c src/wav.c - Add __psf_sprintf calls during header parsing. - - * src/sndfile.c src/common.c - Implement sf_header_info (sndfile.c) function and __psf_sprintf (common.c). - - * tests/write_read_test.c - Added tests for 8 bit PCM files (WAV, AIFF and AU). - - * src/au.c src/aiff.c - Add handling of 8 bit PCM data format. - - * src/aiff.c - On write, set blocksize in SSND chunk to zero like everybody else. - -1999-02-16 Erik de Castro Lopo - - * src/pcm.c: - Fixed bug in let2s_array (cptr was not being initialised). - - * src/sndfile.c: - Fixed bug in sf_read_raw and sf_write_raw. sf_seek should - now work when using these functions. - -1999-02-15 Erik de Castro Lopo - - * tests/write_read_test.c: - Force test_buffer array to be double aligned. Sparc Solaris - requires this. - -1999-02-14 Erik de Castro Lopo - - * src/pcm.c: - Fixed a bug which was causing errors in the reading - and writing of 24 bit PCM files. - - * doc/api.html - Finished of preliminary documentaion. - -1999-02-13 Erik de Castro Lopo - - * src/aiff.c: - Changed reading of 'COMM' chunk to avoid reading an int - which overlaps an int (4 byte) boundary. - diff --git a/libs/libsndfile/Mingw-make-dist.sh b/libs/libsndfile/Mingw-make-dist.sh deleted file mode 100755 index fef4ba8cf9..0000000000 --- a/libs/libsndfile/Mingw-make-dist.sh +++ /dev/null @@ -1,113 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006 Erik de Castro Lopo -# -# All rights reserved. -# -# 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 author nor the names of any contributors may be used -# to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -set -e - -if [ $# -lt 1 ] || [ $# -gt 2 ]; then - echo "Usage : Mingw-make-dist.sh ." - exit 1 - fi - -TARGZ=$1 -if [ ! -f $TARGZ ]; then - echo "Can't find source tarball." - fi - -TARGZ=$1 -if [ ! -f $TARGZ.asc ]; then - echo "Can't find source tarball signature." - fi - -UNAME=`uname -s` -if [ x$UNAME != "xMINGW32_NT-5.1" ]; then - echo "Not able to build Win32 binaries on this platform." - fi - -echo "Building MinGW binary/source zip file." - -VERSION=`pwd | sed -e "s#.*/##" | sed -e s/libsndfile-//` -BUILD=`echo $VERSION | sed -e "s/\./_/g"` -INSTALL="libsndfile-$BUILD" -ZIPNAME="$INSTALL.zip" - -if [ -z "$BUILD" ]; then - echo "Bad BUILD variable : '$BUILD'" - exit 1 - fi - -if [ ! -d $INSTALL/ ]; then - mkdir $INSTALL - fi - -if [ ! -f config.status ]; then - ./configure --prefix=`pwd`/$INSTALL/ -else - teststr=`grep "with options" config.status | grep -- --prefix=` - if [ -z "$teststr" ]; then - # --disable-static doesn't work. - ./configure --prefix=`pwd`/$INSTALL/ - fi - fi - -if [ ! -f src/.libs/libsndfile-1.dll ]; then - make all check - fi - -if [ ! -f $INSTALL/bin/libsndfile-1.dll ]; then - make install - rm -f $INSTALL/bin/sndfile-regtest.exe - strip $INSTALL/bin/*.* - mv $INSTALL/bin/*.* $INSTALL/include/*.* $INSTALL/ - rmdir $INSTALL/bin - rm -rf $INSTALL/lib - rmdir $INSTALL/include - cp src/libsndfile.def $INSTALL/ - cp Win32/README-precompiled-dll.txt $INSTALL/ - fi - -if [ ! -f $INSTALL/libsndfile-$VERSION.tar.gz ]; then - cp $TARGZ $INSTALL/ - if [ -f $TARGZ.asc ]; then - cp $TARGZ.asc $INSTALL/ - fi - fi - -if [ ! -f $ZIPNAME ]; then - zip -r $ZIPNAME $INSTALL/ - fi - - -# Do not edit or modify anything in this comment block. -# The following line is a file identity tag for the GNU Arch -# revision control system. -# -# arch-tag: 3f82cd8a-f800-48d7-9646-2cdcf03c81a0 diff --git a/libs/libsndfile/NEWS b/libs/libsndfile/NEWS deleted file mode 100644 index 540a2d6413..0000000000 --- a/libs/libsndfile/NEWS +++ /dev/null @@ -1,126 +0,0 @@ -Version 1.0.16 (2006-04-30) - * Add support for Broadcast (BEXT) chunks in WAV files. - * Implement new commands SFC_GET_SIGNAL_MAX and SFC_GET_MAX_ALL_CHANNELS. - * Add support for RIFX (big endian WAV variant). - * Fix configure script bugs. - * Fix bug in INST and MARK chunk writing for AIFF files. - -Version 1.0.15 (2006-03-16) - * Fix some ia64 issues. - * Fix precompiled DLL. - * Minor bug fixes. - -Version 1.0.14 (2006-02-19) - * Really fix MinGW compile problems. - * Minor bug fixes. - -Version 1.0.13 (2006-01-21) - * Fix for MinGW compiler problems. - * Allow readin/write of instrument chunks from WAV and AIFF files. - * Compile problem fix for Solaris compiler. - * Minor cleanups and bug fixes. - -Version 1.0.12 (2005-09-30) - * Add support for FLAC and Apple's Core Audio Format (CAF). - * Add virtual I/O interface (still needs docs). - * Cygwin and other Win32 fixes. - * Minor bug fixes and cleanups. - -Version 1.0.11 (2004-11-15) - * Add support for SD2 files. - * Add read support for loop info in WAV and AIFF files. - * Add more tests. - * Improve type safety. - * Minor optimisations and bug fixes. - -Version 1.0.10 (2004-06-15) - * Fix AIFF read/write mode bugs. - * Add support for compiling Win32 DLLS using MinGW. - * Fix problems resulting in failed compiles with gcc-2.95. - * Improve test suite. - * Minor bug fixes. - -Version 1.0.9 (2004-03-30) - * Add handling of AVR (Audio Visual Research) files. - * Improve handling of WAVEFORMATEXTENSIBLE WAV files. - * Fix for using pipes on Win32. - -Version 1.0.8 (2004-03-14) - * Correct peak chunk handing for files with > 16 tracks. - * Fix for WAV files with huge number of CUE chunks. - -Version 1.0.7 (2004-02-25) - * Fix clip mode detection on ia64, MIPS and other CPUs. - * Fix two MacOSX build problems. - -Version 1.0.6 (2004-02-08) - * Added support for native Win32 file access API (Ross Bencina). - * New mode to add clippling then a converting from float/double to integer - would otherwise wrap around. - * Fixed a bug in reading/writing files > 2Gig on Linux, Solaris and others. - * Many minor bug fixes. - * Other random fixes for Win32. - -Version 1.0.5 (2003-05-03) - * Added support for HTK files. - * Added new function sf_open_fd() to allow for secure opening of temporary - files as well as reading/writing sound files embedded within larger - container files. - * Added string support for AIFF files. - * Minor bug fixes and code cleanups. - -Version 1.0.4 (2003-02-02) - * Added suport of PVF and XI files. - * Added functionality for setting and retreiving strings from sound files. - * Minor code cleanups and bug fixes. - -Version 1.0.3 (2002-12-09) - * Minor bug fixes. - -Version 1.0.2 (2002-11-24) - * Added support for VOX ADPCM. - * Improved error reporting. - * Added version scripting on Linux and Solaris. - * Minor bug fixes. - -Version 1.0.1 (2002-09-14) - * Added MAT and MAT5 file formats. - * Minor bug fixes. - -Version 1.0.0 (2002-08-16) - * Final release for 1.0.0. - -Version 1.0.0rc6 (2002-08-14) - * Release candidate 6 for the 1.0.0 series. - * MacOS9 fixes. - -Version 1.0.0rc5 (2002-08-10) - * Release candidate 5 for the 1.0.0 series. - * Changed the definition of sf_count_t which was causing problems when - libsndfile was compiled with other libraries (ie WxWindows). - * Minor bug fixes. - * Documentation cleanup. - -Version 1.0.0rc4 (2002-08-03) - * Release candidate 4 for the 1.0.0 series. - * Minor bug fixes. - * Fix broken Win32 "make check". - -Version 1.0.0rc3 (2002-08-02) - * Release candidate 3 for the 1.0.0 series. - * Fix bug where libsndfile was reading beyond the end of the data chunk. - * Added on-the-fly header updates on write. - * Fix a couple of documentation issues. - -Version 1.0.0rc2 (2002-06-24) - * Release candidate 2 for the 1.0.0 series. - * Fix compile problem for Win32. - -Version 1.0.0rc1 (2002-06-24) - * Release candidate 1 for the 1.0.0 series. - -Version 0.0.28 (2002-04-27) - * Last offical release of 0.0.X series of the library. - -Version 0.0.8 (1999-02-16) - * First offical release. diff --git a/libs/libsndfile/README b/libs/libsndfile/README deleted file mode 100644 index d93edfd5bd..0000000000 --- a/libs/libsndfile/README +++ /dev/null @@ -1,71 +0,0 @@ -This is libsndfile, 1.0.16 - -libsndfile is a library of C routines for reading and writing -files containing sampled audio data. - -The src/ directory contains the source code for library itself. - -The doc/ directory contains the libsndfile documentation. - -The examples/ directory contains examples of how to write code using -libsndfile. 'wav32_aiff24' converts a WAV file containing 32 bit floating -point data into a 24 bit PCM AIFF file. 'sndfile2oct' dumps the audio -data of a file in a human readable format. 'sfconvert' is the beginnings -of a audio file format conversion utility. 'make_sine' generates a WAV -file containing one cycle of a sine wave with 4096 sample points in -32 bit floating point format. 'sfinfo' opens a sound file and prints -out information about that file. - -The tests/ directory contains programs which link against libsndfile -and test its functionality. - -The Win32/ directory contains files and documentation to allow libsndfile -to compile under Win32 with the Microsoft Visual C++ compiler. - -The src/GSM610 directory contains code written by Jutta Degener and Carsten -Bormann. Their original code can be found at : - http://kbs.cs.tu-berlin.de/~jutta/toast.html - -The src/G72x directory contains code written and released by Sun Microsystems -under a suitably free license. - - -Win32 ------ -There are detailed instructions for building libsndfile on Win32 in the file - - doc/win32.html - - -MacOSX ------- -Building on MacOSX should be the same as building it on any other Unix. - - -OTHER PLATFORMS ---------------- -To compile libsndfile on platforms which have a Bourne Shell compatible -shell, an ANSI C compiler and a make utility should require no more that -the following three commands : - ./configure - make - make install - -For platforms without the required shell, it is usually sufficient to -create an approriate config.h file in the src/ directory with correct -values for the following #defines (this would work for AmigaOS) : - -#define HAVE_ENDIAN_H 0 -#define GUESS_BIG_ENDIAN 1 -#define GUESS_LITTLE_ENDIAN 0 -#define FORCE_BROKEN_FLOAT 0 - - -CONTACTS --------- - -libsndfile was written by Erik de Castro Lopo (erikd AT mega-nerd DOT com). -The libsndfile home page is at : - - http://www.mega-nerd.com/libsndfile/ - diff --git a/libs/libsndfile/SConscript b/libs/libsndfile/SConscript deleted file mode 100644 index 70cdb637b1..0000000000 --- a/libs/libsndfile/SConscript +++ /dev/null @@ -1,56 +0,0 @@ -# -*- python -*- - -import os -import os.path -import glob - -sndfile_files = glob.glob('src/*.c') + glob.glob('src/GSM610/*.c') + glob.glob('src/G72x/*.c') - -Import('env install_prefix libraries use_flac') -sndfile = env.Clone() -if use_flac: - sndfile.Merge([libraries['flac'] ]) - -domain = 'libsndfile' - -sndfile.Append(CCFLAGS = "-DPACKAGE=\\\"" + domain + "\\\"") -sndfile.Append(CCFLAGS = "-DVERSION=\\\"ardour-special\\\"") -# mingw may need this -#sndfile.Append(CCFLAGS="-no-undefined") -sndfile.Append(PACKAGE = domain) -sndfile.Append(POTFILE = domain + '.pot') - -conf = Configure(sndfile) - -if conf.CheckCHeader('/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h'): - sndfile.Append(LINKFLAGS = "-framework CoreServices") - -sndfile = conf.Finish() - -libsndfile = sndfile.SharedLibrary('sndfile-ardour', sndfile_files) - -if use_flac: - sndfile_h = sndfile.Command('src/sndfile.h', ['src/sndfile.h.in'], 'cd libs/libsndfile && ./configure && cd -', ENV=os.environ) -else: - sndfile_h = sndfile.Command('src/sndfile.h', ['src/sndfile.h.in'], 'cd libs/libsndfile && ./configure --disable-flac && cd -', ENV=os.environ) - -Default([sndfile_h,libsndfile]) - -env.Alias('install', env.Install(os.path.join(install_prefix, env['LIBDIR'], 'ardour3'), libsndfile)) - -env.Alias('tarball', env.Distribute (env['DISTTREE'], - [ 'NEWS', 'README', 'AUTHORS', 'ChangeLog', - 'configure', 'SConscript', - 'install-sh', - 'libsndfile.spec.in', - 'sndfile.pc.in', - 'config.sub', - 'config.guess' - ] + - sndfile_files + - glob.glob('src/*.h') + - glob.glob('src/GSM610/*.h') + - glob.glob('src/G72x/*.h') + - [ 'src/sndfile.h.in', 'src/config.h.in', 'src/Symbols.linux', 'src/Symbols.darwin', 'src/libsndfile.def', 'src/cygsndfile.def' ] - )) - diff --git a/libs/libsndfile/acinclude.m4 b/libs/libsndfile/acinclude.m4 deleted file mode 100644 index 37f8c0c2a1..0000000000 --- a/libs/libsndfile/acinclude.m4 +++ /dev/null @@ -1,579 +0,0 @@ -dnl By default, many hosts won't let programs access large files; -dnl one must use special compiler options to get large-file access to work. -dnl For more details about this brain damage please see: -dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html - -dnl Written by Paul Eggert . - -dnl Internal subroutine of AC_SYS_EXTRA_LARGEFILE. -dnl AC_SYS_EXTRA_LARGEFILE_FLAGS(FLAGSNAME) -AC_DEFUN([AC_SYS_EXTRA_LARGEFILE_FLAGS], - [AC_CACHE_CHECK([for $1 value to request large file support], - ac_cv_sys_largefile_$1, - [ac_cv_sys_largefile_$1=`($GETCONF LFS_$1) 2>/dev/null` || { - ac_cv_sys_largefile_$1=no - ifelse($1, CFLAGS, - [case "$host_os" in - # IRIX 6.2 and later require cc -n32. -changequote(, )dnl - irix6.[2-9]* | irix6.1[0-9]* | irix[7-9].* | irix[1-9][0-9]*) -changequote([, ])dnl - if test "$GCC" != yes; then - ac_cv_sys_largefile_CFLAGS=-n32 - fi - ac_save_CC="$CC" - CC="$CC $ac_cv_sys_largefile_CFLAGS" - AC_TRY_LINK(, , , ac_cv_sys_largefile_CFLAGS=no) - CC="$ac_save_CC" - esac]) - }])]) - -dnl Internal subroutine of AC_SYS_EXTRA_LARGEFILE. -dnl AC_SYS_EXTRA_LARGEFILE_SPACE_APPEND(VAR, VAL) -AC_DEFUN([AC_SYS_EXTRA_LARGEFILE_SPACE_APPEND], - [case $2 in - no) ;; - ?*) - case "[$]$1" in - '') $1=$2 ;; - *) $1=[$]$1' '$2 ;; - esac ;; - esac]) - -dnl Internal subroutine of AC_SYS_EXTRA_LARGEFILE. -dnl AC_SYS_EXTRA_LARGEFILE_MACRO_VALUE(C-MACRO, CACHE-VAR, COMMENT, CODE-TO-SET-DEFAULT) -AC_DEFUN([AC_SYS_EXTRA_LARGEFILE_MACRO_VALUE], - [AC_CACHE_CHECK([for $1], $2, - [$2=no -changequote(, )dnl - $4 - for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do - case "$ac_flag" in - -D$1) - $2=1 ;; - -D$1=*) - $2=`expr " $ac_flag" : '[^=]*=\(.*\)'` ;; - esac - done -changequote([, ])dnl - ]) - if test "[$]$2" != no; then - AC_DEFINE_UNQUOTED([$1], [$]$2, [$3]) - fi]) - -AC_DEFUN([AC_SYS_EXTRA_LARGEFILE], - [AC_REQUIRE([AC_CANONICAL_HOST]) - AC_ARG_ENABLE(largefile, - [ --disable-largefile omit support for large files]) - if test "$enable_largefile" != no; then - AC_CHECK_TOOL(GETCONF, getconf) - AC_SYS_EXTRA_LARGEFILE_FLAGS(CFLAGS) - AC_SYS_EXTRA_LARGEFILE_FLAGS(LDFLAGS) - AC_SYS_EXTRA_LARGEFILE_FLAGS(LIBS) - - for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do - case "$ac_flag" in - no) ;; - -D_FILE_OFFSET_BITS=*) ;; - -D_LARGEFILE_SOURCE | -D_LARGEFILE_SOURCE=*) ;; - -D_LARGE_FILES | -D_LARGE_FILES=*) ;; - -D?* | -I?*) - AC_SYS_EXTRA_LARGEFILE_SPACE_APPEND(CPPFLAGS, "$ac_flag") ;; - *) - AC_SYS_EXTRA_LARGEFILE_SPACE_APPEND(CFLAGS, "$ac_flag") ;; - esac - done - AC_SYS_EXTRA_LARGEFILE_SPACE_APPEND(LDFLAGS, "$ac_cv_sys_largefile_LDFLAGS") - AC_SYS_EXTRA_LARGEFILE_SPACE_APPEND(LIBS, "$ac_cv_sys_largefile_LIBS") - AC_SYS_EXTRA_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, - ac_cv_sys_file_offset_bits, - [Number of bits in a file offset, on hosts where this is settable.]) - [case "$host_os" in - # HP-UX 10.20 and later - hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*) - ac_cv_sys_file_offset_bits=64 ;; - esac] - AC_SYS_EXTRA_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, - ac_cv_sys_largefile_source, - [Define to make fseeko etc. visible, on some hosts.], - [case "$host_os" in - # HP-UX 10.20 and later - hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*) - ac_cv_sys_largefile_source=1 ;; - esac]) - AC_SYS_EXTRA_LARGEFILE_MACRO_VALUE(_LARGE_FILES, - ac_cv_sys_large_files, - [Define for large files, on AIX-style hosts.], - [case "$host_os" in - # AIX 4.2 and later - aix4.[2-9]* | aix4.1[0-9]* | aix[5-9].* | aix[1-9][0-9]*) - ac_cv_sys_large_files=1 ;; - esac]) - fi - ]) - - - - - - -dnl @synopsis AC_C_FIND_ENDIAN -dnl -dnl Determine endian-ness of target processor. -dnl @version 1.1 Mar 03 2002 -dnl @author Erik de Castro Lopo -dnl -dnl Majority written from scratch to replace the standard autoconf macro -dnl AC_C_BIGENDIAN. Only part remaining from the original it the invocation -dnl of the AC_TRY_RUN macro. -dnl -dnl Permission to use, copy, modify, distribute, and sell this file for any -dnl purpose is hereby granted without fee, provided that the above copyright -dnl and this permission notice appear in all copies. No representations are -dnl made about the suitability of this software for any purpose. It is -dnl provided "as is" without express or implied warranty. - -dnl Find endian-ness in the following way: -dnl 1) Look in . -dnl 2) If 1) fails, look in and . -dnl 3) If 1) and 2) fails and not cross compiling run a test program. -dnl 4) If 1) and 2) fails and cross compiling then guess based on target. - -AC_DEFUN([AC_C_FIND_ENDIAN], -[AC_CACHE_CHECK(processor byte ordering, - ac_cv_c_byte_order, - -# Initialize to unknown -ac_cv_c_byte_order=unknown - -if test x$ac_cv_header_endian_h = xyes ; then - - # First try which should set BYTE_ORDER. - - [AC_TRY_LINK([ - #include - #if BYTE_ORDER != LITTLE_ENDIAN - not big endian - #endif - ], return 0 ;, - ac_cv_c_byte_order=little - )] - - [AC_TRY_LINK([ - #include - #if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - ], return 0 ;, - ac_cv_c_byte_order=big - )] - - fi - -if test $ac_cv_c_byte_order = unknown ; then - - [AC_TRY_LINK([ - #include - #include - #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN - bogus endian macros - #endif - ], return 0 ;, - - [AC_TRY_LINK([ - #include - #include - #if BYTE_ORDER != LITTLE_ENDIAN - not big endian - #endif - ], return 0 ;, - ac_cv_c_byte_order=little - )] - - [AC_TRY_LINK([ - #include - #include - #if BYTE_ORDER != LITTLE_ENDIAN - not big endian - #endif - ], return 0 ;, - ac_cv_c_byte_order=little - )] - - )] - - fi - -if test $ac_cv_c_byte_order = unknown ; then - if test $cross_compiling = yes ; then - # This is the last resort. Try to guess the target processor endian-ness - # by looking at the target CPU type. - [ - case "$target_cpu" in - alpha* | i?86* | mipsel* | ia64*) - ac_cv_c_big_endian=0 - ac_cv_c_little_endian=1 - ;; - - m68* | mips* | powerpc* | hppa* | sparc*) - ac_cv_c_big_endian=1 - ac_cv_c_little_endian=0 - ;; - - esac - ] - else - AC_TRY_RUN( - [[ - int main (void) - { /* Are we little or big endian? From Harbison&Steele. */ - union - { long l ; - char c [sizeof (long)] ; - } u ; - u.l = 1 ; - return (u.c [sizeof (long) - 1] == 1); - } - ]], , ac_cv_c_byte_order=big, - ac_cv_c_byte_order=unknown - ) - - AC_TRY_RUN( - [[int main (void) - { /* Are we little or big endian? From Harbison&Steele. */ - union - { long l ; - char c [sizeof (long)] ; - } u ; - u.l = 1 ; - return (u.c [0] == 1); - }]], , ac_cv_c_byte_order=little, - ac_cv_c_byte_order=unknown - ) - fi - fi - -) -] - -if test $ac_cv_c_byte_order = big ; then - ac_cv_c_big_endian=1 - ac_cv_c_little_endian=0 -elif test $ac_cv_c_byte_order = little ; then - ac_cv_c_big_endian=0 - ac_cv_c_little_endian=1 -else - ac_cv_c_big_endian=0 - ac_cv_c_little_endian=0 - - AC_MSG_WARN([[*****************************************************************]]) - AC_MSG_WARN([[*** Not able to determine endian-ness of target processor. ]]) - AC_MSG_WARN([[*** The constants CPU_IS_BIG_ENDIAN and CPU_IS_LITTLE_ENDIAN in ]]) - AC_MSG_WARN([[*** src/config.h may need to be hand editied. ]]) - AC_MSG_WARN([[*****************************************************************]]) - fi - -)# AC_C_FIND_ENDIAN - - - - - -dnl @synopsis AC_C99_FLEXIBLE_ARRAY -dnl -dnl Dose the compiler support the 1999 ISO C Standard "stuct hack". -dnl @version 1.1 Mar 15 2004 -dnl @author Erik de Castro Lopo -dnl -dnl Permission to use, copy, modify, distribute, and sell this file for any -dnl purpose is hereby granted without fee, provided that the above copyright -dnl and this permission notice appear in all copies. No representations are -dnl made about the suitability of this software for any purpose. It is -dnl provided "as is" without express or implied warranty. - -AC_DEFUN([AC_C99_FLEXIBLE_ARRAY], -[AC_CACHE_CHECK(C99 struct flexible array support, - ac_cv_c99_flexible_array, - -# Initialize to unknown -ac_cv_c99_flexible_array=no - -AC_TRY_LINK([[ - #include - typedef struct { - int k; - char buffer [] ; - } MY_STRUCT ; - ]], - [ MY_STRUCT *p = calloc (1, sizeof (MY_STRUCT) + 42); ], - ac_cv_c99_flexible_array=yes, - ac_cv_c99_flexible_array=no - ))] -) # AC_C99_FLEXIBLE_ARRAY - - - - - -dnl @synopsis AC_C99_FUNC_LRINT -dnl -dnl Check whether C99's lrint function is available. -dnl @version 1.3 Feb 12 2002 -dnl @author Erik de Castro Lopo -dnl -dnl Permission to use, copy, modify, distribute, and sell this file for any -dnl purpose is hereby granted without fee, provided that the above copyright -dnl and this permission notice appear in all copies. No representations are -dnl made about the suitability of this software for any purpose. It is -dnl provided "as is" without express or implied warranty. -dnl -AC_DEFUN([AC_C99_FUNC_LRINT], -[AC_CACHE_CHECK(for lrint, - ac_cv_c99_lrint, -[ -lrint_save_CFLAGS=$CFLAGS -CFLAGS="-O2 -lm" -AC_TRY_LINK([ -#define _ISOC9X_SOURCE 1 -#define _ISOC99_SOURCE 1 -#define __USE_ISOC99 1 -#define __USE_ISOC9X 1 - -#include -], if (!lrint(3.14159)) lrint(2.7183);, ac_cv_c99_lrint=yes, ac_cv_c99_lrint=no) - -CFLAGS=$lrint_save_CFLAGS - -]) - -if test "$ac_cv_c99_lrint" = yes; then - AC_DEFINE(HAVE_LRINT, 1, - [Define if you have C99's lrint function.]) -fi -])# AC_C99_FUNC_LRINT -dnl @synopsis AC_C99_FUNC_LRINTF -dnl -dnl Check whether C99's lrintf function is available. -dnl @version 1.3 Feb 12 2002 -dnl @author Erik de Castro Lopo -dnl -dnl Permission to use, copy, modify, distribute, and sell this file for any -dnl purpose is hereby granted without fee, provided that the above copyright -dnl and this permission notice appear in all copies. No representations are -dnl made about the suitability of this software for any purpose. It is -dnl provided "as is" without express or implied warranty. -dnl -AC_DEFUN([AC_C99_FUNC_LRINTF], -[AC_CACHE_CHECK(for lrintf, - ac_cv_c99_lrintf, -[ -lrintf_save_CFLAGS=$CFLAGS -CFLAGS="-O2 -lm" -AC_TRY_LINK([ -#define _ISOC9X_SOURCE 1 -#define _ISOC99_SOURCE 1 -#define __USE_ISOC99 1 -#define __USE_ISOC9X 1 - -#include -], if (!lrintf(3.14159)) lrintf(2.7183);, ac_cv_c99_lrintf=yes, ac_cv_c99_lrintf=no) - -CFLAGS=$lrintf_save_CFLAGS - -]) - -if test "$ac_cv_c99_lrintf" = yes; then - AC_DEFINE(HAVE_LRINTF, 1, - [Define if you have C99's lrintf function.]) -fi -])# AC_C99_FUNC_LRINTF - - - - -dnl @synopsis AC_C99_FUNC_LLRINT -dnl -dnl Check whether C99's llrint function is available. -dnl @version 1.1 Sep 30 2002 -dnl @author Erik de Castro Lopo -dnl -dnl Permission to use, copy, modify, distribute, and sell this file for any -dnl purpose is hereby granted without fee, provided that the above copyright -dnl and this permission notice appear in all copies. No representations are -dnl made about the suitability of this software for any purpose. It is -dnl provided "as is" without express or implied warranty. -dnl -AC_DEFUN([AC_C99_FUNC_LLRINT], -[AC_CACHE_CHECK(for llrint, - ac_cv_c99_llrint, -[ -llrint_save_CFLAGS=$CFLAGS -CFLAGS="-O2 -lm" -AC_TRY_LINK([ -#define _ISOC9X_SOURCE 1 -#define _ISOC99_SOURCE 1 -#define __USE_ISOC99 1 -#define __USE_ISOC9X 1 - -#include -#include -], int64_t x ; x = llrint(3.14159) ;, ac_cv_c99_llrint=yes, ac_cv_c99_llrint=no) - -CFLAGS=$llrint_save_CFLAGS - -]) - -if test "$ac_cv_c99_llrint" = yes; then - AC_DEFINE(HAVE_LLRINT, 1, - [Define if you have C99's llrint function.]) -fi -])# AC_C99_FUNC_LLRINT - - - -dnl @synopsis AC_C_CLIP_MODE -dnl -dnl Determine the clipping mode when converting float to int. -dnl @version 1.0 May 17 2003 -dnl @author Erik de Castro Lopo -dnl -dnl Permission to use, copy, modify, distribute, and sell this file for any -dnl purpose is hereby granted without fee, provided that the above copyright -dnl and this permission notice appear in all copies. No representations are -dnl made about the suitability of this software for any purpose. It is -dnl provided "as is" without express or implied warranty. - - - -dnl Find the clipping mode in the following way: -dnl 1) If we are not cross compiling test it. -dnl 2) IF we are cross compiling, assume that clipping isn't done correctly. - -AC_DEFUN([AC_C_CLIP_MODE], -[AC_CACHE_CHECK(processor clipping capabilities, - ac_cv_c_clip_type, - -# Initialize to unknown -ac_cv_c_clip_positive=unknown -ac_cv_c_clip_negative=unknown - -if test $ac_cv_c_clip_positive = unknown ; then - AC_TRY_RUN( - [[ - #define _ISOC9X_SOURCE 1 - #define _ISOC99_SOURCE 1 - #define __USE_ISOC99 1 - #define __USE_ISOC9X 1 - #include - int main (void) - { double fval ; - int k, ival ; - - fval = 1.0 * 0x7FFFFFFF ; - for (k = 0 ; k < 100 ; k++) - { ival = (lrint (fval)) >> 24 ; - if (ival != 127) - return 1 ; - - fval *= 1.2499999 ; - } ; - - return 0 ; - } - ]], - ac_cv_c_clip_positive=yes, - ac_cv_c_clip_positive=no, - ac_cv_c_clip_positive=unknown - ) - - AC_TRY_RUN( - [[ - #define _ISOC9X_SOURCE 1 - #define _ISOC99_SOURCE 1 - #define __USE_ISOC99 1 - #define __USE_ISOC9X 1 - #include - int main (void) - { double fval ; - int k, ival ; - - fval = -8.0 * 0x10000000 ; - for (k = 0 ; k < 100 ; k++) - { ival = (lrint (fval)) >> 24 ; - if (ival != -128) - return 1 ; - - fval *= 1.2499999 ; - } ; - - return 0 ; - } - ]], - ac_cv_c_clip_negative=yes, - ac_cv_c_clip_negative=no, - ac_cv_c_clip_negative=unknown - ) - fi - -if test $ac_cv_c_clip_positive = yes ; then - ac_cv_c_clip_positive=1 -else - ac_cv_c_clip_positive=0 - fi - -if test $ac_cv_c_clip_negative = yes ; then - ac_cv_c_clip_negative=1 -else - ac_cv_c_clip_negative=0 - fi - -[[ -case "$ac_cv_c_clip_positive$ac_cv_c_clip_negative" in - "00") - ac_cv_c_clip_type="none" - ;; - "10") - ac_cv_c_clip_type="positive" - ;; - "01") - ac_cv_c_clip_type="negative" - ;; - "11") - ac_cv_c_clip_type="both" - ;; - esac - ]] - -) -] - -)# AC_C_CLIP_MODE - - -dnl @synopsis AC_ADD_CFLAGS -dnl -dnl Add the given option to CFLAGS, if it doesn't break the compiler - -AC_DEFUN([AC_ADD_CFLAGS], -[AC_MSG_CHECKING([if $CC accepts $1]) - ac_add_cflags__old_cflags="$CFLAGS" - CFLAGS="$CFLAGS $1" - AC_TRY_LINK([#include ], - [printf("Hello, World!\n"); return 0;], - AC_MSG_RESULT([yes]), - AC_MSG_RESULT([no]) - CFLAGS="$ac_add_cflags__old_cflags") -]) - - - - -ifelse(dnl - - Do not edit or modify anything in this comment block. - The arch-tag line is a file identity tag for the GNU Arch - revision control system. - - arch-tag: bc38294d-bb5c-42ad-90b9-779def5eaab7 - -)dnl diff --git a/libs/libsndfile/aclocal.m4 b/libs/libsndfile/aclocal.m4 deleted file mode 100644 index e406d1a01b..0000000000 --- a/libs/libsndfile/aclocal.m4 +++ /dev/null @@ -1,72 +0,0 @@ -# generated automatically by aclocal 1.9.2 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -# 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. - - -dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not) -dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page -dnl also defines GSTUFF_PKG_ERRORS on error -AC_DEFUN([PKG_CHECK_MODULES], [ - succeeded=no - - if test -z "$PKG_CONFIG"; then - AC_PATH_PROG(PKG_CONFIG, pkg-config, no) - fi - - if test "$PKG_CONFIG" = "no" ; then - echo "*** The pkg-config script could not be found. Make sure it is" - echo "*** in your path, or set the PKG_CONFIG environment variable" - echo "*** to the full path to pkg-config." - echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." - else - PKG_CONFIG_MIN_VERSION=0.9.0 - if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then - AC_MSG_CHECKING(for $2) - - if $PKG_CONFIG --exists "$2" ; then - AC_MSG_RESULT(yes) - succeeded=yes - - AC_MSG_CHECKING($1_CFLAGS) - $1_CFLAGS=`$PKG_CONFIG --cflags "$2"` - AC_MSG_RESULT($$1_CFLAGS) - - AC_MSG_CHECKING($1_LIBS) - $1_LIBS=`$PKG_CONFIG --libs "$2"` - AC_MSG_RESULT($$1_LIBS) - else - $1_CFLAGS="" - $1_LIBS="" - ## If we have a custom action on failure, don't print errors, but - ## do set a variable so people can do so. - $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` - ifelse([$4], ,echo $$1_PKG_ERRORS,) - fi - - AC_SUBST($1_CFLAGS) - AC_SUBST($1_LIBS) - else - echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." - echo "*** See http://www.freedesktop.org/software/pkgconfig" - fi - fi - - if test $succeeded = yes; then - ifelse([$3], , :, [$3]) - else - ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4]) - fi -]) - - - -m4_include([acinclude.m4]) diff --git a/libs/libsndfile/compile b/libs/libsndfile/compile deleted file mode 100755 index ac07cc5414..0000000000 --- a/libs/libsndfile/compile +++ /dev/null @@ -1,107 +0,0 @@ -#! /bin/sh - -# Wrapper for compilers which do not understand `-c -o'. - -# Copyright 1999, 2000 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, 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. - -# Usage: -# compile PROGRAM [ARGS]... -# `-o FOO.o' is removed from the args passed to the actual compile. - -# Usage statement added by Billy Biggs . -if [ -z $1 ]; then - echo "Wrapper for compilers which do not understand '-c -o'." - echo "usage: compile PROGRAM [ARGS]..." - echo "'-o FOO.o' is removed from the args passed to the actual compile." - exit 1 -fi - -prog=$1 -shift - -ofile= -cfile= -args= -while test $# -gt 0; do - case "$1" in - -o) - # configure might choose to run compile as `compile cc -o foo foo.c'. - # So we do something ugly here. - ofile=$2 - shift - case "$ofile" in - *.o | *.obj) - ;; - *) - args="$args -o $ofile" - ofile= - ;; - esac - ;; - *.c) - cfile=$1 - args="$args $1" - ;; - *) - args="$args $1" - ;; - esac - 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 "$prog" $args -fi - -# Name of file we expect compiler to create. -cofile=`echo $cfile | sed -e 's|^.*/||' -e '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. -"$prog" $args -status=$? - -if test -f "$cofile"; then - mv "$cofile" "$ofile" -fi - -rmdir $lockdir -exit $status diff --git a/libs/libsndfile/config.guess b/libs/libsndfile/config.guess deleted file mode 100755 index c38553dc74..0000000000 --- a/libs/libsndfile/config.guess +++ /dev/null @@ -1,1497 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. - -timestamp='2006-02-23' - -# 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., 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. - - -# 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, 2002, 2003, 2004, 2005 -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 - -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 "$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 ; set_cc_for_build= ;' - -# 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 - -# 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 ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerppc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - 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'` - exit ;; - 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 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - 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 ;; - 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:SunOS:5.*:*) - echo i386-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) - 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 && - 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 - 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 - 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:*:[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 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - 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 - 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 - eval $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 __LP64__ >/dev/null - 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:*:*) - 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 && 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 ;; - *:FreeBSD:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:MSYS_NT-*:*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - x86:Interix*:[345]*) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - EM64T:Interix*:[345]*) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 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 ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-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-gnu`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 '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - arm*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) - echo cris-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu - exit ;; - frv:Linux:*:*) - echo frv-unknown-linux-gnu - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - 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 | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - 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 | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - or32:Linux:*:*) - echo or32-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - 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 ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${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-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit ;; - 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 ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit ;; - "") - # 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 ;; - 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 - #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__sun) - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^LIBC/{ - s: ::g - p - }'`" - test x"${LIBC}" != x && { - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit - } - test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; 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.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - 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 ;; - 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 i386. - echo i386-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; } ;; - 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.0*:*) - 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 ;; - 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 ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - unknown) UNAME_PROCESSOR=powerpc ;; - esac - 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 ;; - NSE-?:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-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. - 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 ;; -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\n"); 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 && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# 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 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - 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/libs/libsndfile/config.sub b/libs/libsndfile/config.sub deleted file mode 100755 index ad9f395711..0000000000 --- a/libs/libsndfile/config.sub +++ /dev/null @@ -1,1608 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. - -timestamp='2006-02-23' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# 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., 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. - - -# Please send patches to . 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, 2002, 2003, 2004, 2005 -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" - 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 - -# 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* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ - uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-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 | -knuth | -cray) - 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 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -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/'` - ;; - -sco5v6*) - # 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] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | m32r | m32rle | m68000 | m68k | m88k | maxq | mb | microblaze | mcore \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64vr | mips64vrel \ - | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | mt \ - | msp430 \ - | nios | nios2 \ - | ns16k | ns32k \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b \ - | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ - | v850 | v850e \ - | we32k \ - | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k) - basic_machine=$basic_machine-unknown - ;; - m32c) - 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) - ;; - ms1) - basic_machine=mt-unknown - ;; - - # 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-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ - | clipper-* | craynv-* | 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-* | iq2000-* \ - | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | 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-* | xscalee[bl]-* \ - | xstormy16-* | xtensa-* \ - | ymp-* \ - | z8k-*) - ;; - m32c-*) - ;; - # 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 - ;; - abacus) - basic_machine=abacus-unknown - ;; - 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 - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - 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 - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16c) - basic_machine=cr16c-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - 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 - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - 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 - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - 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 - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - 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 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - 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 - ;; - rdos) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-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 - ;; - 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 - ;; - 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 - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - 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 - ;; - mmix) - basic_machine=mmix-knuth - ;; - 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 - ;; - sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-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* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -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* | -linux-newlib* | -linux-uclibc* \ - | -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* | -dragonfly* \ - | -skyos* | -haiku* | -rdos*) - # 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* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -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 - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -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 - ;; - -nsk*) - os=-nsk - ;; - # 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 - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -zvmoe) - os=-zvmoe - ;; - -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 - ;; - *-haiku) - os=-haiku - ;; - *-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 - ;; - *-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 - ;; - -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 - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# 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/libs/libsndfile/configure b/libs/libsndfile/configure deleted file mode 100755 index bfa95c3aac..0000000000 --- a/libs/libsndfile/configure +++ /dev/null @@ -1,13933 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for libsndfile ardour-special. -# -# Report bugs to . -# -# 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 - - -# 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='libsndfile' -PACKAGE_TARNAME='libsndfile' -PACKAGE_VERSION='ardour-special' -PACKAGE_STRING='libsndfile ardour-special' -PACKAGE_BUGREPORT='ardour@ardour.org' - -ac_unique_file="src/sndfile.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 build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT autogen INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CPP EGREP GETCONF ac_ct_GETCONF TYPEOF_SF_COUNT_T SIZEOF_SF_COUNT_T SF_COUNT_MAX PKG_CONFIG SQLITE3_CFLAGS SQLITE3_LIBS htmldocdir HTML_BGCOLOUR HTML_FGCOLOUR SHLIB_VERSION_ARG SHARED_VERSION_INFO OS_SPECIFIC_CFLAGS OS_SPECIFIC_LINKS ALSA_LIBS FLAC_LIBS ENABLE_EXPERIMENTAL_CODE COMPILER_IS_GCC GCC_MAJOR_VERSION LIBTOOL_DEPS 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 - -# -# 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 libsndfile ardour-special 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 - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of libsndfile ardour-special:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-experimental enable experimental code - --enable-gcc-werror enable -Werror in all Makefiles - --disable-gcc-pipe disable gcc -pipe option - --disable-gcc-opt disable gcc optimisations - --disable-cpu-clip disable tricky cpu specific clipper - --enable-bow-docs enable black-on-white html docs - --disable-sqlite disable use of sqlite - --disable-flac disable use of FLAC - --disable-alsa disable use of ALSA - --disable-largefile omit support for large files - -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 - -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 -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 -libsndfile configure ardour-special -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. -_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 libsndfile $as_me ardour-special, 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -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. - -# 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/'` - - -echo "$as_me:$LINENO: checking target system type" >&5 -echo $ECHO_N "checking target system type... $ECHO_C" >&6 -if test "${ac_cv_target+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_target_alias=$target_alias -test "x$ac_cv_target_alias" = "x" && - ac_cv_target_alias=$ac_cv_host_alias -ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_target" >&5 -echo "${ECHO_T}$ac_cv_target" >&6 -target=$ac_cv_target -target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - - ac_config_headers="$ac_config_headers src/config.h" - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -#------------------------------------------------------------------------------------ -# Rules for library version information: -# -# 1. Start with version information of `0:0:0' for each libtool library. -# 2. Update the version information only immediately before a public release of -# your software. More frequent updates are unnecessary, and only guarantee -# that the current interface number gets larger faster. -# 3. If the library source code has changed at all since the last update, then -# increment revision (`c:r:a' becomes `c:r+1:a'). -# 4. If any interfaces have been added, removed, or changed since the last update, -# increment current, and set revision to 0. -# 5. If any interfaces have been added since the last public release, then increment -# age. -# 6. If any interfaces have been removed since the last public release, then set age -# to 0. - -SHARED_VERSION_INFO="1:16:0" - -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 - -#AM_PROG_LIBTOOL - -# Extract the first word of "autogen", so it can be a program name with args. -set dummy autogen; 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_autogen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$autogen"; then - ac_cv_prog_autogen="$autogen" # 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_autogen="yes" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_autogen" && ac_cv_prog_autogen="no" -fi -fi -autogen=$ac_cv_prog_autogen -if test -n "$autogen"; then - echo "$as_me:$LINENO: result: $autogen" >&5 -echo "${ECHO_T}$autogen" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - -# 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 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 - - - -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 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 - - -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 endian.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 ardour@ardour.org ## -## -------------------------------- ## -_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 - - -for ac_header in byteswap.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 ardour@ardour.org ## -## -------------------------------- ## -_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 - - -for ac_header in locale.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 ardour@ardour.org ## -## -------------------------------- ## -_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 - - -for ac_header in inttypes.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 ardour@ardour.org ## -## -------------------------------- ## -_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 - - -echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5 -echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6 -if test "${ac_cv_header_sys_wait_h+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 -#ifndef WEXITSTATUS -# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) -#endif -#ifndef WIFEXITED -# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) -#endif - -int -main () -{ - int s; - wait (&s); - s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; - ; - 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_sys_wait_h=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_header_sys_wait_h=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 -echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6 -if test $ac_cv_header_sys_wait_h = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_SYS_WAIT_H 1 -_ACEOF - -fi - - -echo "$as_me:$LINENO: checking whether S_IRGRP is declared" >&5 -echo $ECHO_N "checking whether S_IRGRP is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_S_IRGRP+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 () -{ -#ifndef S_IRGRP - char *p = (char *) S_IRGRP; -#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_have_decl_S_IRGRP=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_have_decl_S_IRGRP=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_S_IRGRP" >&5 -echo "${ECHO_T}$ac_cv_have_decl_S_IRGRP" >&6 -if test $ac_cv_have_decl_S_IRGRP = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_S_IRGRP 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_S_IRGRP 0 -_ACEOF - - -fi - - - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_S_IRGRP ${HAVE_DECL_S_IRGRP} -_ACEOF - - -#==================================================================================== -# Check for support of the struct hack. - -echo "$as_me:$LINENO: checking C99 struct flexible array support" >&5 -echo $ECHO_N "checking C99 struct flexible array support... $ECHO_C" >&6 -if test "${ac_cv_c99_flexible_array+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Initialize to unknown -ac_cv_c99_flexible_array=no - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - #include - typedef struct { - int k; - char buffer [] ; - } MY_STRUCT ; - -int -main () -{ - MY_STRUCT *p = calloc (1, sizeof (MY_STRUCT) + 42); - ; - 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_c99_flexible_array=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_c99_flexible_array=no - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_c99_flexible_array" >&5 -echo "${ECHO_T}$ac_cv_c99_flexible_array" >&6 - - -if test x$ac_cv_c99_flexible_array = xyes ; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_FLEXIBLE_ARRAY 1 -_ACEOF - -else - { echo "$as_me:$LINENO: WARNING: *** This compiler does not support the 1999 ISO C Standard ***" >&5 -echo "$as_me: WARNING: *** This compiler does not support the 1999 ISO C Standard ***" >&2;} - { echo "$as_me:$LINENO: WARNING: *** feature known as the flexible array struct member. ***" >&5 -echo "$as_me: WARNING: *** feature known as the flexible array struct member. ***" >&2;} - cat >>confdefs.h <<\_ACEOF -#define HAVE_FLEXIBLE_ARRAY 0 -_ACEOF - - fi - -#==================================================================================== -# Couple of initializations here. Fill in real values later. - -SHLIB_VERSION_ARG="" - -#==================================================================================== -# Finished checking, handle options. - -# Check whether --enable-experimental or --disable-experimental was given. -if test "${enable_experimental+set}" = set; then - enableval="$enable_experimental" - -fi; - -EXPERIMENTAL_CODE=0 -if test x$enable_experimental = xyes ; then - EXPERIMENTAL_CODE=1 - fi - -cat >>confdefs.h <<_ACEOF -#define ENABLE_EXPERIMENTAL_CODE ${EXPERIMENTAL_CODE} -_ACEOF - - -# Check whether --enable-gcc-werror or --disable-gcc-werror was given. -if test "${enable_gcc_werror+set}" = set; then - enableval="$enable_gcc_werror" - -fi; - -# Check whether --enable-gcc-pipe or --disable-gcc-pipe was given. -if test "${enable_gcc_pipe+set}" = set; then - enableval="$enable_gcc_pipe" - -fi; - -# Check whether --enable-gcc-opt or --disable-gcc-opt was given. -if test "${enable_gcc_opt+set}" = set; then - enableval="$enable_gcc_opt" - -fi; - -# Check whether --enable-cpu-clip or --disable-cpu-clip was given. -if test "${enable_cpu_clip+set}" = set; then - enableval="$enable_cpu_clip" - -fi; - -# Check whether --enable-bow-docs or --disable-bow-docs was given. -if test "${enable_bow_docs+set}" = set; then - enableval="$enable_bow_docs" - -fi; - -# Check whether --enable-sqlite or --disable-sqlite was given. -if test "${enable_sqlite+set}" = set; then - enableval="$enable_sqlite" - -fi; - -# Check whether --enable-flac or --disable-flac was given. -if test "${enable_flac+set}" = set; then - enableval="$enable_flac" - -fi; - -# Check whether --enable-alsa or --disable-alsa was given. -if test "${enable_alsa+set}" = set; then - enableval="$enable_alsa" - -fi; - -#==================================================================================== -# Check types and their sizes. - -echo "$as_me:$LINENO: checking for short" >&5 -echo $ECHO_N "checking for short... $ECHO_C" >&6 -if test "${ac_cv_type_short+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 ((short *) 0) - return 0; -if (sizeof (short)) - 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_short=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_short=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5 -echo "${ECHO_T}$ac_cv_type_short" >&6 - -echo "$as_me:$LINENO: checking size of short" >&5 -echo $ECHO_N "checking size of short... $ECHO_C" >&6 -if test "${ac_cv_sizeof_short+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_short" = 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 (short))) >= 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 (short))) <= $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 (short))) < 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 (short))) >= $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 (short))) <= $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_short=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (short), 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 (short)); } -unsigned long ulongval () { return (long) (sizeof (short)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (short))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (short)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (short)))) - 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_short=`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 (short), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (short), 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_short=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 -echo "${ECHO_T}$ac_cv_sizeof_short" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SHORT $ac_cv_sizeof_short -_ACEOF - - -echo "$as_me:$LINENO: checking for int" >&5 -echo $ECHO_N "checking for int... $ECHO_C" >&6 -if test "${ac_cv_type_int+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 ((int *) 0) - return 0; -if (sizeof (int)) - 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_int=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_int=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 -echo "${ECHO_T}$ac_cv_type_int" >&6 - -echo "$as_me:$LINENO: checking size of int" >&5 -echo $ECHO_N "checking size of int... $ECHO_C" >&6 -if test "${ac_cv_sizeof_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_int" = 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 (int))) >= 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 (int))) <= $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 (int))) < 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 (int))) >= $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 (int))) <= $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_int=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (int), 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 (int)); } -unsigned long ulongval () { return (long) (sizeof (int)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (int))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (int)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (int)))) - 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_int=`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 (int), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (int), 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_int=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 -echo "${ECHO_T}$ac_cv_sizeof_int" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_INT $ac_cv_sizeof_int -_ACEOF - - -echo "$as_me:$LINENO: checking for long" >&5 -echo $ECHO_N "checking for long... $ECHO_C" >&6 -if test "${ac_cv_type_long+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 ((long *) 0) - return 0; -if (sizeof (long)) - 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_long=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_long=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 -echo "${ECHO_T}$ac_cv_type_long" >&6 - -echo "$as_me:$LINENO: checking size of long" >&5 -echo $ECHO_N "checking size of long... $ECHO_C" >&6 -if test "${ac_cv_sizeof_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_long" = 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 (long))) >= 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 (long))) <= $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 (long))) < 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 (long))) >= $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 (long))) <= $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_long=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long), 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 (long)); } -unsigned long ulongval () { return (long) (sizeof (long)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (long))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (long)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (long)))) - 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_long=`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 (long), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long), 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_long=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG $ac_cv_sizeof_long -_ACEOF - - -echo "$as_me:$LINENO: checking for float" >&5 -echo $ECHO_N "checking for float... $ECHO_C" >&6 -if test "${ac_cv_type_float+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 ((float *) 0) - return 0; -if (sizeof (float)) - 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_float=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_float=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_float" >&5 -echo "${ECHO_T}$ac_cv_type_float" >&6 - -echo "$as_me:$LINENO: checking size of float" >&5 -echo $ECHO_N "checking size of float... $ECHO_C" >&6 -if test "${ac_cv_sizeof_float+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_float" = 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 (float))) >= 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 (float))) <= $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 (float))) < 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 (float))) >= $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 (float))) <= $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_float=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (float), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (float), 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 (float)); } -unsigned long ulongval () { return (long) (sizeof (float)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (float))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (float)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (float)))) - 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_float=`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 (float), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (float), 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_float=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_float" >&5 -echo "${ECHO_T}$ac_cv_sizeof_float" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_FLOAT $ac_cv_sizeof_float -_ACEOF - - -echo "$as_me:$LINENO: checking for double" >&5 -echo $ECHO_N "checking for double... $ECHO_C" >&6 -if test "${ac_cv_type_double+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 ((double *) 0) - return 0; -if (sizeof (double)) - 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_double=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_double=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 -echo "${ECHO_T}$ac_cv_type_double" >&6 - -echo "$as_me:$LINENO: checking size of double" >&5 -echo $ECHO_N "checking size of double... $ECHO_C" >&6 -if test "${ac_cv_sizeof_double+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_double" = 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 (double))) >= 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 (double))) <= $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 (double))) < 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 (double))) >= $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 (double))) <= $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_double=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (double), 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 (double)); } -unsigned long ulongval () { return (long) (sizeof (double)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (double))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (double)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (double)))) - 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_double=`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 (double), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (double), 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_double=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 -echo "${ECHO_T}$ac_cv_sizeof_double" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_DOUBLE $ac_cv_sizeof_double -_ACEOF - - -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 - - -echo "$as_me:$LINENO: checking for size_t" >&5 -echo $ECHO_N "checking for size_t... $ECHO_C" >&6 -if test "${ac_cv_type_size_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 ((size_t *) 0) - return 0; -if (sizeof (size_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_size_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_size_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -echo "${ECHO_T}$ac_cv_type_size_t" >&6 - -echo "$as_me:$LINENO: checking size of size_t" >&5 -echo $ECHO_N "checking size of size_t... $ECHO_C" >&6 -if test "${ac_cv_sizeof_size_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_size_t" = 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 (size_t))) >= 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 (size_t))) <= $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 (size_t))) < 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 (size_t))) >= $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 (size_t))) <= $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_size_t=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (size_t), 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 (size_t)); } -unsigned long ulongval () { return (long) (sizeof (size_t)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (size_t))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (size_t)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (size_t)))) - 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_size_t=`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 (size_t), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (size_t), 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_size_t=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_size_t" >&5 -echo "${ECHO_T}$ac_cv_sizeof_size_t" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t -_ACEOF - - -echo "$as_me:$LINENO: checking for int64_t" >&5 -echo $ECHO_N "checking for int64_t... $ECHO_C" >&6 -if test "${ac_cv_type_int64_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 ((int64_t *) 0) - return 0; -if (sizeof (int64_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_int64_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_int64_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_int64_t" >&5 -echo "${ECHO_T}$ac_cv_type_int64_t" >&6 - -echo "$as_me:$LINENO: checking size of int64_t" >&5 -echo $ECHO_N "checking size of int64_t... $ECHO_C" >&6 -if test "${ac_cv_sizeof_int64_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_int64_t" = 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 (int64_t))) >= 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 (int64_t))) <= $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 (int64_t))) < 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 (int64_t))) >= $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 (int64_t))) <= $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_int64_t=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int64_t), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (int64_t), 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 (int64_t)); } -unsigned long ulongval () { return (long) (sizeof (int64_t)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (int64_t))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (int64_t)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (int64_t)))) - 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_int64_t=`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 (int64_t), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (int64_t), 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_int64_t=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_int64_t" >&5 -echo "${ECHO_T}$ac_cv_sizeof_int64_t" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_INT64_T $ac_cv_sizeof_int64_t -_ACEOF - - -echo "$as_me:$LINENO: checking for long long" >&5 -echo $ECHO_N "checking for long long... $ECHO_C" >&6 -if test "${ac_cv_type_long_long+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 ((long long *) 0) - return 0; -if (sizeof (long long)) - 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_long_long=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_long_long=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 -echo "${ECHO_T}$ac_cv_type_long_long" >&6 - -echo "$as_me:$LINENO: checking size of long long" >&5 -echo $ECHO_N "checking size of long long... $ECHO_C" >&6 -if test "${ac_cv_sizeof_long_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_long_long" = 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 (long long))) >= 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 (long long))) <= $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 (long long))) < 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 (long long))) >= $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 (long long))) <= $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_long_long=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long long), 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 (long long)); } -unsigned long ulongval () { return (long) (sizeof (long long)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (long long))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (long long)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (long long)))) - 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_long_long=`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 (long long), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long long), 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_long_long=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long -_ACEOF - - - -#==================================================================================== -# Find an appropriate type for sf_count_t. -# On systems supporting files larger than 2 Gig, sf_count_t must be a 64 bit value. -# Unfortunately there is more than one way of ensuring this so need to do some -# pretty rigourous testing here. - -unset ac_cv_sizeof_off_t - -echo "$as_me:$LINENO: checking for off_t" >&5 -echo $ECHO_N "checking for off_t... $ECHO_C" >&6 -if test "${ac_cv_type_off_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 ((off_t *) 0) - return 0; -if (sizeof (off_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_off_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_off_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 -echo "${ECHO_T}$ac_cv_type_off_t" >&6 - -echo "$as_me:$LINENO: checking size of off_t" >&5 -echo $ECHO_N "checking size of off_t... $ECHO_C" >&6 -if test "${ac_cv_sizeof_off_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_off_t" = 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 (off_t))) >= 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 (off_t))) <= $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 (off_t))) < 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 (off_t))) >= $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 (off_t))) <= $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_off_t=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (off_t), 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 (off_t)); } -unsigned long ulongval () { return (long) (sizeof (off_t)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (off_t))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (off_t)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (off_t)))) - 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_off_t=`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 (off_t), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (off_t), 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_off_t=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_off_t" >&5 -echo "${ECHO_T}$ac_cv_sizeof_off_t" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_OFF_T $ac_cv_sizeof_off_t -_ACEOF - - # Fake default value. - -case "$host_os" in - mingw*) - TYPEOF_SF_COUNT_T="__int64" - SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL" - SIZEOF_SF_COUNT_T=8 - ;; - *) - if test "x$ac_cv_sizeof_off_t" = "x8" ; then - # If sizeof (off_t) is 8, no further checking is needed. - TYPEOF_SF_COUNT_T="off_t" - SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL" - SIZEOF_SF_COUNT_T=8 - else - # Check for common 64 bit file offset types. - echo "$as_me:$LINENO: checking for loff_t" >&5 -echo $ECHO_N "checking for loff_t... $ECHO_C" >&6 -if test "${ac_cv_type_loff_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 ((loff_t *) 0) - return 0; -if (sizeof (loff_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_loff_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_loff_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_loff_t" >&5 -echo "${ECHO_T}$ac_cv_type_loff_t" >&6 - -echo "$as_me:$LINENO: checking size of loff_t" >&5 -echo $ECHO_N "checking size of loff_t... $ECHO_C" >&6 -if test "${ac_cv_sizeof_loff_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_loff_t" = 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 (loff_t))) >= 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 (loff_t))) <= $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 (loff_t))) < 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 (loff_t))) >= $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 (loff_t))) <= $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_loff_t=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (loff_t), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (loff_t), 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 (loff_t)); } -unsigned long ulongval () { return (long) (sizeof (loff_t)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (loff_t))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (loff_t)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (loff_t)))) - 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_loff_t=`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 (loff_t), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (loff_t), 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_loff_t=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_loff_t" >&5 -echo "${ECHO_T}$ac_cv_sizeof_loff_t" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LOFF_T $ac_cv_sizeof_loff_t -_ACEOF - - # Fake default value. - echo "$as_me:$LINENO: checking for off64_t" >&5 -echo $ECHO_N "checking for off64_t... $ECHO_C" >&6 -if test "${ac_cv_type_off64_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 ((off64_t *) 0) - return 0; -if (sizeof (off64_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_off64_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_off64_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_off64_t" >&5 -echo "${ECHO_T}$ac_cv_type_off64_t" >&6 - -echo "$as_me:$LINENO: checking size of off64_t" >&5 -echo $ECHO_N "checking size of off64_t... $ECHO_C" >&6 -if test "${ac_cv_sizeof_off64_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_off64_t" = 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 (off64_t))) >= 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 (off64_t))) <= $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 (off64_t))) < 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 (off64_t))) >= $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 (off64_t))) <= $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_off64_t=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (off64_t), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (off64_t), 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 (off64_t)); } -unsigned long ulongval () { return (long) (sizeof (off64_t)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (off64_t))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (off64_t)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (off64_t)))) - 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_off64_t=`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 (off64_t), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (off64_t), 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_off64_t=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_off64_t" >&5 -echo "${ECHO_T}$ac_cv_sizeof_off64_t" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_OFF64_T $ac_cv_sizeof_off64_t -_ACEOF - - # Fake default value. - - TYPEOF_SF_COUNT_T="unknown" - if test "x$ac_cv_sizeof_loff_t" = "x8" ; then - TYPEOF_SF_COUNT_T="loff_t" - SIZEOF_SF_COUNT_T=8 - elif test "x$ac_cv_sizeof_off64_t" = "x8" ; then - TYPEOF_SF_COUNT_T="off64_t" - SIZEOF_SF_COUNT_T=8 - fi - - # Save the old sizeof (off_t) value and then unset it to see if it - # changes when Large File Support is enabled. - - pre_largefile_sizeof_off_t=$ac_cv_sizeof_off_t - unset ac_cv_sizeof_off_t - - - # 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 - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}getconf", so it can be a program name with args. -set dummy ${ac_tool_prefix}getconf; 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_GETCONF+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$GETCONF"; then - ac_cv_prog_GETCONF="$GETCONF" # 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_GETCONF="${ac_tool_prefix}getconf" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -GETCONF=$ac_cv_prog_GETCONF -if test -n "$GETCONF"; then - echo "$as_me:$LINENO: result: $GETCONF" >&5 -echo "${ECHO_T}$GETCONF" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_GETCONF"; then - ac_ct_GETCONF=$GETCONF - # Extract the first word of "getconf", so it can be a program name with args. -set dummy getconf; 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_GETCONF+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_GETCONF"; then - ac_cv_prog_ac_ct_GETCONF="$ac_ct_GETCONF" # 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_GETCONF="getconf" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_GETCONF=$ac_cv_prog_ac_ct_GETCONF -if test -n "$ac_ct_GETCONF"; then - echo "$as_me:$LINENO: result: $ac_ct_GETCONF" >&5 -echo "${ECHO_T}$ac_ct_GETCONF" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - GETCONF=$ac_ct_GETCONF -else - GETCONF="$ac_cv_prog_GETCONF" -fi - - echo "$as_me:$LINENO: checking for CFLAGS value to request large file support" >&5 -echo $ECHO_N "checking for CFLAGS value to request large file support... $ECHO_C" >&6 -if test "${ac_cv_sys_largefile_CFLAGS+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_sys_largefile_CFLAGS=`($GETCONF LFS_CFLAGS) 2>/dev/null` || { - ac_cv_sys_largefile_CFLAGS=no - case "$host_os" in - # IRIX 6.2 and later require cc -n32. - irix6.[2-9]* | irix6.1[0-9]* | irix[7-9].* | irix[1-9][0-9]*) - if test "$GCC" != yes; then - ac_cv_sys_largefile_CFLAGS=-n32 - fi - ac_save_CC="$CC" - CC="$CC $ac_cv_sys_largefile_CFLAGS" - 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 - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_sys_largefile_CFLAGS=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CC="$ac_save_CC" - esac - } -fi -echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CFLAGS" >&5 -echo "${ECHO_T}$ac_cv_sys_largefile_CFLAGS" >&6 - echo "$as_me:$LINENO: checking for LDFLAGS value to request large file support" >&5 -echo $ECHO_N "checking for LDFLAGS value to request large file support... $ECHO_C" >&6 -if test "${ac_cv_sys_largefile_LDFLAGS+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_sys_largefile_LDFLAGS=`($GETCONF LFS_LDFLAGS) 2>/dev/null` || { - ac_cv_sys_largefile_LDFLAGS=no - - } -fi -echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_LDFLAGS" >&5 -echo "${ECHO_T}$ac_cv_sys_largefile_LDFLAGS" >&6 - echo "$as_me:$LINENO: checking for LIBS value to request large file support" >&5 -echo $ECHO_N "checking for LIBS value to request large file support... $ECHO_C" >&6 -if test "${ac_cv_sys_largefile_LIBS+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_sys_largefile_LIBS=`($GETCONF LFS_LIBS) 2>/dev/null` || { - ac_cv_sys_largefile_LIBS=no - - } -fi -echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_LIBS" >&5 -echo "${ECHO_T}$ac_cv_sys_largefile_LIBS" >&6 - - for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do - case "$ac_flag" in - no) ;; - -D_FILE_OFFSET_BITS=*) ;; - -D_LARGEFILE_SOURCE | -D_LARGEFILE_SOURCE=*) ;; - -D_LARGE_FILES | -D_LARGE_FILES=*) ;; - -D?* | -I?*) - case "$ac_flag" in - no) ;; - ?*) - case "$CPPFLAGS" in - '') CPPFLAGS="$ac_flag" ;; - *) CPPFLAGS=$CPPFLAGS' '"$ac_flag" ;; - esac ;; - esac ;; - *) - case "$ac_flag" in - no) ;; - ?*) - case "$CFLAGS" in - '') CFLAGS="$ac_flag" ;; - *) CFLAGS=$CFLAGS' '"$ac_flag" ;; - esac ;; - esac ;; - esac - done - case "$ac_cv_sys_largefile_LDFLAGS" in - no) ;; - ?*) - case "$LDFLAGS" in - '') LDFLAGS="$ac_cv_sys_largefile_LDFLAGS" ;; - *) LDFLAGS=$LDFLAGS' '"$ac_cv_sys_largefile_LDFLAGS" ;; - esac ;; - esac - case "$ac_cv_sys_largefile_LIBS" in - no) ;; - ?*) - case "$LIBS" in - '') LIBS="$ac_cv_sys_largefile_LIBS" ;; - *) LIBS=$LIBS' '"$ac_cv_sys_largefile_LIBS" ;; - esac ;; - esac - echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS" >&5 -echo $ECHO_N "checking for _FILE_OFFSET_BITS... $ECHO_C" >&6 -if test "${ac_cv_sys_file_offset_bits+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_sys_file_offset_bits=no - - for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do - case "$ac_flag" in - -D_FILE_OFFSET_BITS) - ac_cv_sys_file_offset_bits=1 ;; - -D_FILE_OFFSET_BITS=*) - ac_cv_sys_file_offset_bits=`expr " $ac_flag" : '[^=]*=\(.*\)'` ;; - esac - 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 - case "$host_os" in - # HP-UX 10.20 and later - hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*) - ac_cv_sys_file_offset_bits=64 ;; - esac - echo "$as_me:$LINENO: checking for _LARGEFILE_SOURCE" >&5 -echo $ECHO_N "checking for _LARGEFILE_SOURCE... $ECHO_C" >&6 -if test "${ac_cv_sys_largefile_source+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_sys_largefile_source=no - case "$host_os" in - # HP-UX 10.20 and later - hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*) - ac_cv_sys_largefile_source=1 ;; - esac - for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do - case "$ac_flag" in - -D_LARGEFILE_SOURCE) - ac_cv_sys_largefile_source=1 ;; - -D_LARGEFILE_SOURCE=*) - ac_cv_sys_largefile_source=`expr " $ac_flag" : '[^=]*=\(.*\)'` ;; - esac - 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 - echo "$as_me:$LINENO: checking for _LARGE_FILES" >&5 -echo $ECHO_N "checking for _LARGE_FILES... $ECHO_C" >&6 -if test "${ac_cv_sys_large_files+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_sys_large_files=no - case "$host_os" in - # AIX 4.2 and later - aix4.[2-9]* | aix4.1[0-9]* | aix[5-9].* | aix[1-9][0-9]*) - ac_cv_sys_large_files=1 ;; - esac - for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do - case "$ac_flag" in - -D_LARGE_FILES) - ac_cv_sys_large_files=1 ;; - -D_LARGE_FILES=*) - ac_cv_sys_large_files=`expr " $ac_flag" : '[^=]*=\(.*\)'` ;; - esac - 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 - fi - - - if test "x$ac_cv_sys_largefile_CFLAGS" = "xno" ; then - ac_cv_sys_largefile_CFLAGS="" - fi - if test "x$ac_cv_sys_largefile_LDFLAGS" = "xno" ; then - ac_cv_sys_largefile_LDFLAGS="" - fi - if test "x$ac_cv_sys_largefile_LIBS" = "xno" ; then - ac_cv_sys_largefile_LIBS="" - fi - - echo "$as_me:$LINENO: checking for off_t" >&5 -echo $ECHO_N "checking for off_t... $ECHO_C" >&6 -if test "${ac_cv_type_off_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 ((off_t *) 0) - return 0; -if (sizeof (off_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_off_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_off_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 -echo "${ECHO_T}$ac_cv_type_off_t" >&6 - -echo "$as_me:$LINENO: checking size of off_t" >&5 -echo $ECHO_N "checking size of off_t... $ECHO_C" >&6 -if test "${ac_cv_sizeof_off_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_off_t" = 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 (off_t))) >= 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 (off_t))) <= $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 (off_t))) < 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 (off_t))) >= $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 (off_t))) <= $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_off_t=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (off_t), 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 (off_t)); } -unsigned long ulongval () { return (long) (sizeof (off_t)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (off_t))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (off_t)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (off_t)))) - 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_off_t=`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 (off_t), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (off_t), 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_off_t=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_off_t" >&5 -echo "${ECHO_T}$ac_cv_sizeof_off_t" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_OFF_T $ac_cv_sizeof_off_t -_ACEOF - - # Fake default value. - - if test "x$ac_cv_sizeof_off_t" = "x8" ; then - SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL" - elif test "x$ac_cv_sizeof_off_t" = "x$pre_largefile_sizeof_off_t" ; then - { echo "$as_me:$LINENO: WARNING: This machine does not seem to support 64 bit file offsets." >&5 -echo "$as_me: WARNING: This machine does not seem to support 64 bit file offsets." >&2;} - TYPEOF_SF_COUNT_T="off_t" - SIZEOF_SF_COUNT_T=$ac_cv_sizeof_off_t - elif test "x$TYPEOF_SF_COUNT_T" = "xunknown" ; then - echo - echo "*** The configure process has determined that this system is capable" - echo "*** of Large File Support but has not been able to find a type which" - echo "*** is an unambiguous 64 bit file offset." - echo "*** Please contact the author to help resolve this problem." - echo - { { echo "$as_me:$LINENO: error: Bad file offset type." >&5 -echo "$as_me: error: Bad file offset type." >&2;} - { (exit 1); exit 1; }; } - fi - fi - ;; - esac - -if test $SIZEOF_SF_COUNT_T = 4 ; then - SF_COUNT_MAX="0x7FFFFFFF" - fi - - -cat >>confdefs.h <<_ACEOF -#define TYPEOF_SF_COUNT_T ${TYPEOF_SF_COUNT_T} -_ACEOF - - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SF_COUNT_T ${SIZEOF_SF_COUNT_T} -_ACEOF - - - - -cat >>confdefs.h <<_ACEOF -#define SF_COUNT_MAX ${SF_COUNT_MAX} -_ACEOF - - - -echo "$as_me:$LINENO: checking for ssize_t" >&5 -echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 -if test "${ac_cv_type_ssize_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 ((ssize_t *) 0) - return 0; -if (sizeof (ssize_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_ssize_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_ssize_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 -echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 -if test $ac_cv_type_ssize_t = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_SSIZE_T 1 -_ACEOF - - -fi - -echo "$as_me:$LINENO: checking for ssize_t" >&5 -echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 -if test "${ac_cv_type_ssize_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 ((ssize_t *) 0) - return 0; -if (sizeof (ssize_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_ssize_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_ssize_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 -echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 - -echo "$as_me:$LINENO: checking size of ssize_t" >&5 -echo $ECHO_N "checking size of ssize_t... $ECHO_C" >&6 -if test "${ac_cv_sizeof_ssize_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_ssize_t" = 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 (ssize_t))) >= 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 (ssize_t))) <= $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 (ssize_t))) < 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 (ssize_t))) >= $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 (ssize_t))) <= $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_ssize_t=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (ssize_t), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (ssize_t), 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 (ssize_t)); } -unsigned long ulongval () { return (long) (sizeof (ssize_t)); } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long) (sizeof (ssize_t))) < 0) - { - long i = longval (); - if (i != ((long) (sizeof (ssize_t)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long) (sizeof (ssize_t)))) - 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_ssize_t=`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 (ssize_t), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (ssize_t), 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_ssize_t=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_ssize_t" >&5 -echo "${ECHO_T}$ac_cv_sizeof_ssize_t" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SSIZE_T $ac_cv_sizeof_ssize_t -_ACEOF - - - -#==================================================================================== -# Determine endian-ness of target processor. - -echo "$as_me:$LINENO: checking processor byte ordering" >&5 -echo $ECHO_N "checking processor byte ordering... $ECHO_C" >&6 -if test "${ac_cv_c_byte_order+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Initialize to unknown -ac_cv_c_byte_order=unknown - -if test x$ac_cv_header_endian_h = xyes ; then - - # First try which should set BYTE_ORDER. - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - #include - #if BYTE_ORDER != LITTLE_ENDIAN - not big endian - #endif - -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 - ac_cv_c_byte_order=little - -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 - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - #include - #if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - -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 - ac_cv_c_byte_order=big - -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 - - fi - -if test $ac_cv_c_byte_order = unknown ; then - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - #include - #include - #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN - bogus endian macros - #endif - -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 - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - #include - #include - #if BYTE_ORDER != LITTLE_ENDIAN - not big endian - #endif - -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 - ac_cv_c_byte_order=little - -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 - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - #include - #include - #if BYTE_ORDER != LITTLE_ENDIAN - not big endian - #endif - -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 - ac_cv_c_byte_order=little - -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 - - -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 - - fi - -if test $ac_cv_c_byte_order = unknown ; then - if test $cross_compiling = yes ; then - # This is the last resort. Try to guess the target processor endian-ness - # by looking at the target CPU type. - - case "$target_cpu" in - alpha* | i?86* | mipsel* | ia64*) - ac_cv_c_big_endian=0 - ac_cv_c_little_endian=1 - ;; - - m68* | mips* | powerpc* | hppa* | sparc*) - ac_cv_c_big_endian=1 - ac_cv_c_little_endian=0 - ;; - - esac - - else - if test "$cross_compiling" = yes; then - ac_cv_c_byte_order=unknown - -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 (void) - { /* Are we little or big endian? From Harbison&Steele. */ - union - { long l ; - char c [sizeof (long)] ; - } u ; - u.l = 1 ; - return (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 - : -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_byte_order=big -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - if test "$cross_compiling" = yes; then - ac_cv_c_byte_order=unknown - -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 (void) - { /* Are we little or big endian? From Harbison&Steele. */ - union - { long l ; - char c [sizeof (long)] ; - } u ; - u.l = 1 ; - return (u.c [0] == 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 - : -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_byte_order=little -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - fi - fi - - -fi -echo "$as_me:$LINENO: result: $ac_cv_c_byte_order" >&5 -echo "${ECHO_T}$ac_cv_c_byte_order" >&6 - - -if test $ac_cv_c_byte_order = big ; then - ac_cv_c_big_endian=1 - ac_cv_c_little_endian=0 -elif test $ac_cv_c_byte_order = little ; then - ac_cv_c_big_endian=0 - ac_cv_c_little_endian=1 -else - ac_cv_c_big_endian=0 - ac_cv_c_little_endian=0 - - echo "$as_me: WARNING: *****************************************************************" >&2 - echo "$as_me: WARNING: *** Not able to determine endian-ness of target processor. " >&2 - echo "$as_me: WARNING: *** The constants CPU_IS_BIG_ENDIAN and CPU_IS_LITTLE_ENDIAN in " >&2 - echo "$as_me: WARNING: *** src/config.h may need to be hand editied. " >&2 - echo "$as_me: WARNING: *****************************************************************" >&2 - fi - - - - -cat >>confdefs.h <<_ACEOF -#define CPU_IS_BIG_ENDIAN ${ac_cv_c_big_endian} -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define CPU_IS_LITTLE_ENDIAN ${ac_cv_c_little_endian} -_ACEOF - - -#==================================================================================== -# Check for functions. - - - - - -for ac_func in malloc calloc realloc free -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 - - - - - - - -for ac_func in open read write lseek pread pwrite -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 - - - - - -for ac_func in fstat ftruncate fsync fdatasync -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 - - - -for ac_func in snprintf vsnprintf -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 - - - -for ac_func in gmtime gmtime_r -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 - - - -for ac_func in mmap getpagesize -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 - - -for ac_func in setlocale -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 - - - -echo "$as_me:$LINENO: checking for floor in -lm" >&5 -echo $ECHO_N "checking for floor in -lm... $ECHO_C" >&6 -if test "${ac_cv_lib_m_floor+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $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 floor (); -int -main () -{ -floor (); - ; - 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_m_floor=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_m_floor=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_m_floor" >&5 -echo "${ECHO_T}$ac_cv_lib_m_floor" >&6 -if test $ac_cv_lib_m_floor = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBM 1 -_ACEOF - - LIBS="-lm $LIBS" - -fi - - - - -for ac_func in floor ceil fmod -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_os" in - cygwin*) - { echo "$as_me:$LINENO: WARNING: Not using built-in lrint() and lrintf() because they are broken on Cygwin." >&5 -echo "$as_me: WARNING: Not using built-in lrint() and lrintf() because they are broken on Cygwin." >&2;} - ;; - *) - echo "$as_me:$LINENO: checking for lrint" >&5 -echo $ECHO_N "checking for lrint... $ECHO_C" >&6 -if test "${ac_cv_c99_lrint+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -lrint_save_CFLAGS=$CFLAGS -CFLAGS="-O2 -lm" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#define _ISOC9X_SOURCE 1 -#define _ISOC99_SOURCE 1 -#define __USE_ISOC99 1 -#define __USE_ISOC9X 1 - -#include - -int -main () -{ -if (!lrint(3.14159)) lrint(2.7183); - ; - 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_c99_lrint=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_c99_lrint=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -CFLAGS=$lrint_save_CFLAGS - - -fi -echo "$as_me:$LINENO: result: $ac_cv_c99_lrint" >&5 -echo "${ECHO_T}$ac_cv_c99_lrint" >&6 - -if test "$ac_cv_c99_lrint" = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_LRINT 1 -_ACEOF - -fi - - echo "$as_me:$LINENO: checking for lrintf" >&5 -echo $ECHO_N "checking for lrintf... $ECHO_C" >&6 -if test "${ac_cv_c99_lrintf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -lrintf_save_CFLAGS=$CFLAGS -CFLAGS="-O2 -lm" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#define _ISOC9X_SOURCE 1 -#define _ISOC99_SOURCE 1 -#define __USE_ISOC99 1 -#define __USE_ISOC9X 1 - -#include - -int -main () -{ -if (!lrintf(3.14159)) lrintf(2.7183); - ; - 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_c99_lrintf=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_c99_lrintf=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -CFLAGS=$lrintf_save_CFLAGS - - -fi -echo "$as_me:$LINENO: result: $ac_cv_c99_lrintf" >&5 -echo "${ECHO_T}$ac_cv_c99_lrintf" >&6 - -if test "$ac_cv_c99_lrintf" = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_LRINTF 1 -_ACEOF - -fi - - - if test "x$ac_cv_c99_lrint" = "xno" ; then - if test "x$ac_cv_c99_lrintf" = "xno" ; then - { echo "$as_me:$LINENO: WARNING: *** Missing C99 standard functions lrint() and lrintf()." >&5 -echo "$as_me: WARNING: *** Missing C99 standard functions lrint() and lrintf()." >&2;} - { echo "$as_me:$LINENO: WARNING: *** This may cause benign compiler warnings on some systems (ie Solaris)." >&5 -echo "$as_me: WARNING: *** This may cause benign compiler warnings on some systems (ie Solaris)." >&2;} - fi - fi - ;; - esac - -#==================================================================================== -# Check for libsqlite3 (only used in regtest). - -ac_cv_sqlite3=no -if test x$enable_sqlite != xno ; then - - succeeded=no - - if test -z "$PKG_CONFIG"; then - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-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_PKG_CONFIG+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - 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_PKG_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_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG - -if test -n "$PKG_CONFIG"; then - echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 -echo "${ECHO_T}$PKG_CONFIG" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - fi - - if test "$PKG_CONFIG" = "no" ; then - echo "*** The pkg-config script could not be found. Make sure it is" - echo "*** in your path, or set the PKG_CONFIG environment variable" - echo "*** to the full path to pkg-config." - echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." - else - PKG_CONFIG_MIN_VERSION=0.9.0 - if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then - echo "$as_me:$LINENO: checking for sqlite3 >= 3.2" >&5 -echo $ECHO_N "checking for sqlite3 >= 3.2... $ECHO_C" >&6 - - if $PKG_CONFIG --exists "sqlite3 >= 3.2" ; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - succeeded=yes - - echo "$as_me:$LINENO: checking SQLITE3_CFLAGS" >&5 -echo $ECHO_N "checking SQLITE3_CFLAGS... $ECHO_C" >&6 - SQLITE3_CFLAGS=`$PKG_CONFIG --cflags "sqlite3 >= 3.2"` - echo "$as_me:$LINENO: result: $SQLITE3_CFLAGS" >&5 -echo "${ECHO_T}$SQLITE3_CFLAGS" >&6 - - echo "$as_me:$LINENO: checking SQLITE3_LIBS" >&5 -echo $ECHO_N "checking SQLITE3_LIBS... $ECHO_C" >&6 - SQLITE3_LIBS=`$PKG_CONFIG --libs "sqlite3 >= 3.2"` - echo "$as_me:$LINENO: result: $SQLITE3_LIBS" >&5 -echo "${ECHO_T}$SQLITE3_LIBS" >&6 - else - SQLITE3_CFLAGS="" - SQLITE3_LIBS="" - ## If we have a custom action on failure, don't print errors, but - ## do set a variable so people can do so. - SQLITE3_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "sqlite3 >= 3.2"` - - fi - - - - else - echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." - echo "*** See http://www.freedesktop.org/software/pkgconfig" - fi - fi - - if test $succeeded = yes; then - ac_cv_sqlite3=yes - else - ac_cv_sqlite3=no - fi - - fi - -if test x$ac_cv_sqlite3 = "xyes" ; then - HAVE_SQLITE3=1 -else - HAVE_SQLITE3=0 - fi - - -cat >>confdefs.h <<_ACEOF -#define HAVE_SQLITE3 $HAVE_SQLITE3 -_ACEOF - - -#==================================================================================== -# Determine if the processor can do clipping on float to int conversions. - -if test x$enable_cpu_clip != "xno" ; then - echo "$as_me:$LINENO: checking processor clipping capabilities" >&5 -echo $ECHO_N "checking processor clipping capabilities... $ECHO_C" >&6 -if test "${ac_cv_c_clip_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Initialize to unknown -ac_cv_c_clip_positive=unknown -ac_cv_c_clip_negative=unknown - -if test $ac_cv_c_clip_positive = unknown ; then - if test "$cross_compiling" = yes; then - ac_cv_c_clip_positive=unknown - -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - #define _ISOC9X_SOURCE 1 - #define _ISOC99_SOURCE 1 - #define __USE_ISOC99 1 - #define __USE_ISOC9X 1 - #include - int main (void) - { double fval ; - int k, ival ; - - fval = 1.0 * 0x7FFFFFFF ; - for (k = 0 ; k < 100 ; k++) - { ival = (lrint (fval)) >> 24 ; - if (ival != 127) - return 1 ; - - fval *= 1.2499999 ; - } ; - - 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_c_clip_positive=yes -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_clip_positive=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - if test "$cross_compiling" = yes; then - ac_cv_c_clip_negative=unknown - -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - #define _ISOC9X_SOURCE 1 - #define _ISOC99_SOURCE 1 - #define __USE_ISOC99 1 - #define __USE_ISOC9X 1 - #include - int main (void) - { double fval ; - int k, ival ; - - fval = -8.0 * 0x10000000 ; - for (k = 0 ; k < 100 ; k++) - { ival = (lrint (fval)) >> 24 ; - if (ival != -128) - return 1 ; - - fval *= 1.2499999 ; - } ; - - 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_c_clip_negative=yes -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_clip_negative=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - fi - -if test $ac_cv_c_clip_positive = yes ; then - ac_cv_c_clip_positive=1 -else - ac_cv_c_clip_positive=0 - fi - -if test $ac_cv_c_clip_negative = yes ; then - ac_cv_c_clip_negative=1 -else - ac_cv_c_clip_negative=0 - fi - - -case "$ac_cv_c_clip_positive$ac_cv_c_clip_negative" in - "00") - ac_cv_c_clip_type="none" - ;; - "10") - ac_cv_c_clip_type="positive" - ;; - "01") - ac_cv_c_clip_type="negative" - ;; - "11") - ac_cv_c_clip_type="both" - ;; - esac - - - -fi -echo "$as_me:$LINENO: result: $ac_cv_c_clip_type" >&5 -echo "${ECHO_T}$ac_cv_c_clip_type" >&6 - - - -else - echo "checking processor clipping capabilities... disabled" - ac_cv_c_clip_positive=0 - ac_cv_c_clip_negative=0 - fi - - -cat >>confdefs.h <<_ACEOF -#define CPU_CLIPS_POSITIVE ${ac_cv_c_clip_positive} -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define CPU_CLIPS_NEGATIVE ${ac_cv_c_clip_negative} -_ACEOF - - -#==================================================================================== -# Target OS specific stuff. - -OS_SPECIFIC_CFLAGS="" -OS_SPECIFIC_LINKS="" -os_is_win32=0 -os_is_macosx=0 -use_windows_api=0 - -case "$host_os" in - darwin* | rhapsody*) - os_is_macosx=1 - OS_SPECIFIC_CFLAGS="-fpascal-strings -I/Developer/Headers/FlatCarbon" - OS_SPECIFIC_LINKS="-framework CoreAudio" - ;; - mingw*) - os_is_win32=1 - use_windows_api=1 - OS_SPECIFIC_LINKS="-lwinmm" - ;; - cygwin*) - os_is_win32=1 - OS_SPECIFIC_LINKS="-lwinmm" - ;; - esac - - -cat >>confdefs.h <<_ACEOF -#define OS_IS_WIN32 ${os_is_win32} -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define OS_IS_MACOSX ${os_is_macosx} -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define USE_WINDOWS_API ${use_windows_api} -_ACEOF - - -#==================================================================================== -# Check for ALSA. - -ALSA_LIBS="" - -if test x$enable_alsa != xno ; then - -for ac_header in alsa/asoundlib.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 ardour@ardour.org ## -## -------------------------------- ## -_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 - - if test x$ac_cv_header_alsa_asoundlib_h = xyes ; then - ALSA_LIBS="-lasound" - fi - fi - -#==================================================================================== -# Check for FLAC - -FLAC_LIBS="" - -if test x$enable_flac != xno ; then - -for ac_header in FLAC/all.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=$? - - cat conftest.$ac_ext > blah1.c - - echo $CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext > blah1 - - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - - cat conftest.err > blah2 - - 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 ardour@ardour.org ## -## -------------------------------- ## -_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 - - if test x$ac_cv_header_FLAC_all_h = xyes ; then - echo "$as_me:$LINENO: checking for FLAC__seekable_stream_encoder_set_tell_callback in -lFLAC" >&5 -echo $ECHO_N "checking for FLAC__seekable_stream_encoder_set_tell_callback in -lFLAC... $ECHO_C" >&6 -if test "${ac_cv_lib_FLAC_FLAC__seekable_stream_encoder_set_tell_callback+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lFLAC $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 FLAC__seekable_stream_encoder_set_tell_callback (); -int -main () -{ -FLAC__seekable_stream_encoder_set_tell_callback (); - ; - 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_FLAC_FLAC__seekable_stream_encoder_set_tell_callback=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_FLAC_FLAC__seekable_stream_encoder_set_tell_callback=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_FLAC_FLAC__seekable_stream_encoder_set_tell_callback" >&5 -echo "${ECHO_T}$ac_cv_lib_FLAC_FLAC__seekable_stream_encoder_set_tell_callback" >&6 -if test $ac_cv_lib_FLAC_FLAC__seekable_stream_encoder_set_tell_callback = yes; then - HAVE_FLAC_1_1_1="yes" -fi - - if test "x$HAVE_FLAC_1_1_1" = xyes ; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_FLAC_1_1_1 1 -_ACEOF - - fi - FLAC_LIBS="-lFLAC" - fi - fi - -#==================================================================================== -# Test for sanity when cross-compiling. - -if test x$cross_compiling = xyes ; then - { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5 -echo "$as_me: WARNING: ******************************************************************" >&2;} - { echo "$as_me:$LINENO: WARNING: *** We are cross-compiling, so have to assume sizeof (short) == 2 " >&5 -echo "$as_me: WARNING: *** We are cross-compiling, so have to assume sizeof (short) == 2 " >&2;} - { echo "$as_me:$LINENO: WARNING: *** and sizeof (int) == 4. If this is not the case there is no " >&5 -echo "$as_me: WARNING: *** and sizeof (int) == 4. If this is not the case there is no " >&2;} - { echo "$as_me:$LINENO: WARNING: *** chance of this working. Please contact the mantainer. " >&5 -echo "$as_me: WARNING: *** chance of this working. Please contact the mantainer. " >&2;} - { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5 -echo "$as_me: WARNING: ******************************************************************" >&2;} - fi - -if test $ac_cv_sizeof_short != 2 ; then - { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5 -echo "$as_me: WARNING: ******************************************************************" >&2;} - { echo "$as_me:$LINENO: WARNING: *** sizeof (short) != 2. " >&5 -echo "$as_me: WARNING: *** sizeof (short) != 2. " >&2;} - { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5 -echo "$as_me: WARNING: ******************************************************************" >&2;} - fi - -if test $ac_cv_sizeof_int != 4 ; then - { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5 -echo "$as_me: WARNING: ******************************************************************" >&2;} - { echo "$as_me:$LINENO: WARNING: *** sizeof (int) != 4 " >&5 -echo "$as_me: WARNING: *** sizeof (int) != 4 " >&2;} - { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5 -echo "$as_me: WARNING: ******************************************************************" >&2;} - fi - -if test $ac_cv_sizeof_float != 4 ; then - { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5 -echo "$as_me: WARNING: ******************************************************************" >&2;} - { echo "$as_me:$LINENO: WARNING: *** sizeof (float) != 4. " >&5 -echo "$as_me: WARNING: *** sizeof (float) != 4. " >&2;} - { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5 -echo "$as_me: WARNING: ******************************************************************" >&2;} - fi - -if test $ac_cv_sizeof_double != 8 ; then - { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5 -echo "$as_me: WARNING: ******************************************************************" >&2;} - { echo "$as_me:$LINENO: WARNING: *** sizeof (double) != 8. " >&5 -echo "$as_me: WARNING: *** sizeof (double) != 8. " >&2;} - { echo "$as_me:$LINENO: WARNING: ******************************************************************" >&5 -echo "$as_me: WARNING: ******************************************************************" >&2;} - fi - -if test x"$ac_cv_prog_autogen" = "xno" ; then - { echo "$as_me:$LINENO: WARNING: Touching files in directory tests/." >&5 -echo "$as_me: WARNING: Touching files in directory tests/." >&2;} - touch tests/*.c tests/*.h - fi - -#==================================================================================== -# Settings for the HTML documentation. - -htmldocdir=$prefix/share/doc/libsndfile1-dev/html - -if test $prefix = "NONE" ; then - htmldocdir=/usr/local/share/doc/libsndfile1-dev/html -else - htmldocdir=$prefix/share/doc/libsndfile1-dev/html - fi - -if test x$enable_bow_docs = "xyes" ; then - HTML_BGCOLOUR="white" - HTML_FGCOLOUR="black" -else - HTML_BGCOLOUR="black" - HTML_FGCOLOUR="white" - fi - -#==================================================================================== -# Now use the information from the checking stage. - -if test x$ac_cv_c_compiler_gnu = xyes ; then - echo "$as_me:$LINENO: checking if $CC accepts -std=gnu99" >&5 -echo $ECHO_N "checking if $CC accepts -std=gnu99... $ECHO_C" >&6 - ac_add_cflags__old_cflags="$CFLAGS" - CFLAGS="$CFLAGS -std=gnu99" - 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 () -{ -printf("Hello, World!\n"); 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 "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - CFLAGS="$ac_add_cflags__old_cflags" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - - - CFLAGS="$CFLAGS -W -Wall" - - echo "$as_me:$LINENO: checking if $CC accepts -Wdeclaration-after-statement" >&5 -echo $ECHO_N "checking if $CC accepts -Wdeclaration-after-statement... $ECHO_C" >&6 - ac_add_cflags__old_cflags="$CFLAGS" - CFLAGS="$CFLAGS -Wdeclaration-after-statement" - 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 () -{ -printf("Hello, World!\n"); 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 "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - CFLAGS="$ac_add_cflags__old_cflags" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - - - if test x$enable_gcc_werror = "xyes" ; then - CFLAGS="-Werror $CFLAGS" - fi - - CFLAGS="$CFLAGS -Wstrict-prototypes -Wmissing-prototypes -Waggregate-return -Wcast-align -Wcast-qual -Wnested-externs -Wshadow -Wbad-function-cast -Wwrite-strings" - # -Wpointer-arith -Wundef -Wmissing-declarations -Winline -Wconversion" - - if test "x$enable_gcc_opt" = "xno" ; then - temp_CFLAGS=`echo $CFLAGS | sed "s/O2/O0/"` - CFLAGS=$temp_CFLAGS - { echo "$as_me:$LINENO: WARNING: *** Compiler optimisations switched off. ***" >&5 -echo "$as_me: WARNING: *** Compiler optimisations switched off. ***" >&2;} - fi - - # OS specific tweaks. - case "$host_os" in - darwin* | rhapsody*) - # Disable -Wall, -pedantic and -Wshadow for Apple Darwin/Rhapsody. - # System headers on these systems are broken. - temp_CFLAGS=`echo $CFLAGS | sed "s/-Wall -pedantic//" | sed "s/-Wshadow//" | sed "s/-Waggregate-return//"` - CFLAGS=$temp_CFLAGS - SHLIB_VERSION_ARG="-Wl,-exported_symbols_list -Wl,\$(srcdir)/Symbols.darwin" - ;; - linux*) - SHLIB_VERSION_ARG="-Wl,--version-script=\$(srcdir)/Symbols.linux" - ;; - mingw*) - SHLIB_VERSION_ARG="-Wl,\$(srcdir)/libsndfile.def" - ;; - cygwin*) - SHLIB_VERSION_ARG="-Wl,\$(srcdir)/cygsndfile.def" - ;; - *) - ;; - esac - if test x$enable_gcc_pipe != "xno" ; then - CFLAGS="$CFLAGS -pipe" - fi - - -cat >>confdefs.h <<\_ACEOF -#define COMPILER_IS_GCC 1 -_ACEOF - - GCC_MAJOR_VERSION=`$CC -dumpversion | sed "s/\..*//"` - -cat >>confdefs.h <<_ACEOF -#define GCC_MAJOR_VERSION ${GCC_MAJOR_VERSION} -_ACEOF - - fi - -CFLAGS="$CFLAGS $OS_SPECIFIC_CFLAGS" - -if test x"$CFLAGS" = x ; then - echo "Error in configure script. CFLAGS has been screwed up." - exit - fi - - - - - - - - - - - - - - - - - - - ac_config_files="$ac_config_files src/sndfile.h sndfile.pc" - -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 - - - -: ${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 libsndfile $as_me ardour-special, 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 - -Report bugs to ." -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -libsndfile config.status ardour-special -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 -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "src/sndfile.h" ) CONFIG_FILES="$CONFIG_FILES src/sndfile.h" ;; - "sndfile.pc" ) CONFIG_FILES="$CONFIG_FILES sndfile.pc" ;; - "src/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS src/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 -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,@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,@target@,$target,;t t -s,@target_cpu@,$target_cpu,;t t -s,@target_vendor@,$target_vendor,;t t -s,@target_os@,$target_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,@autogen@,$autogen,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@LN_S@,$LN_S,;t t -s,@CPP@,$CPP,;t t -s,@EGREP@,$EGREP,;t t -s,@GETCONF@,$GETCONF,;t t -s,@ac_ct_GETCONF@,$ac_ct_GETCONF,;t t -s,@TYPEOF_SF_COUNT_T@,$TYPEOF_SF_COUNT_T,;t t -s,@SIZEOF_SF_COUNT_T@,$SIZEOF_SF_COUNT_T,;t t -s,@SF_COUNT_MAX@,$SF_COUNT_MAX,;t t -s,@PKG_CONFIG@,$PKG_CONFIG,;t t -s,@SQLITE3_CFLAGS@,$SQLITE3_CFLAGS,;t t -s,@SQLITE3_LIBS@,$SQLITE3_LIBS,;t t -s,@htmldocdir@,$htmldocdir,;t t -s,@HTML_BGCOLOUR@,$HTML_BGCOLOUR,;t t -s,@HTML_FGCOLOUR@,$HTML_FGCOLOUR,;t t -s,@SHLIB_VERSION_ARG@,$SHLIB_VERSION_ARG,;t t -s,@SHARED_VERSION_INFO@,$SHARED_VERSION_INFO,;t t -s,@OS_SPECIFIC_CFLAGS@,$OS_SPECIFIC_CFLAGS,;t t -s,@OS_SPECIFIC_LINKS@,$OS_SPECIFIC_LINKS,;t t -s,@ALSA_LIBS@,$ALSA_LIBS,;t t -s,@FLAC_LIBS@,$FLAC_LIBS,;t t -s,@ENABLE_EXPERIMENTAL_CODE@,$ENABLE_EXPERIMENTAL_CODE,;t t -s,@COMPILER_IS_GCC@,$COMPILER_IS_GCC,;t t -s,@GCC_MAJOR_VERSION@,$GCC_MAJOR_VERSION,;t t -s,@LIBTOOL_DEPS@,$LIBTOOL_DEPS,;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 -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 - - -#==================================================================================== - -echo "$as_me:$LINENO: result: --=-=-=-=-=-=-=-=-=-= Configuration Complete =-=-=-=-=-=-=-=-=-=- - - Configuration summary : - - Version : ..................... ${VERSION} - Experimental code : ........... ${enable_experimental:-no} -" >&5 -echo "${ECHO_T} --=-=-=-=-=-=-=-=-=-= Configuration Complete =-=-=-=-=-=-=-=-=-=- - - Configuration summary : - - Version : ..................... ${VERSION} - Experimental code : ........... ${enable_experimental:-no} -" >&6 - -if test x$ac_cv_c_compiler_gnu = xyes ; then - echo -e " Tools :\n" - echo " Compiler is GCC : ............. ${ac_cv_c_compiler_gnu}" - echo " GCC major version : ........... ${GCC_MAJOR_VERSION}" - if test $GCC_MAJOR_VERSION -lt 3 ; then - echo -e "\n ** This compiler version allows applications to write" - echo " ** to static strings within the library." - echo " ** Compile with GCC version 3.X to avoid this problem." - fi - fi - -if test $libdir = "\${exec_prefix}/lib" ; then - libdir="$prefix/lib" - fi - -if test $bindir = "\${exec_prefix}/bin" ; then - bindir="$prefix/bin" - fi - -echo "$as_me:$LINENO: result: - Installation directories : - - Library directory : ........... $libdir - Program directory : ........... $bindir - Pkgconfig directory : ......... $libdir/pkgconfig - HTML docs directory : ......... $htmldocdir -" >&5 -echo "${ECHO_T} - Installation directories : - - Library directory : ........... $libdir - Program directory : ........... $bindir - Pkgconfig directory : ......... $libdir/pkgconfig - HTML docs directory : ......... $htmldocdir -" >&6 - -if test x$prefix != "x/usr" ; then - echo "Compiling some other packages against libsndfile may require" - echo -e "the addition of \"$libdir/pkgconfig\" to the" - echo -e "PKG_CONFIG_PATH environment variable.\n" - fi - -#==================================================================================== - diff --git a/libs/libsndfile/configure.ac b/libs/libsndfile/configure.ac deleted file mode 100644 index c6cb55f36d..0000000000 --- a/libs/libsndfile/configure.ac +++ /dev/null @@ -1,541 +0,0 @@ -# Copyright (C) 1999-2006 Erik de Castro Lopo (erikd AT mega-nerd DOT com). - -dnl Require autoconf version -AC_PREREQ(2.59) - -AC_INIT([libsndfile],[ardour-special],[ardour@ardour.org]) -AC_CONFIG_SRCDIR([src/sndfile.c]) -AC_CANONICAL_TARGET([]) - -AC_CONFIG_HEADERS(src/config.h) - -AC_LANG([C]) - -#------------------------------------------------------------------------------------ -# Rules for library version information: -# -# 1. Start with version information of `0:0:0' for each libtool library. -# 2. Update the version information only immediately before a public release of -# your software. More frequent updates are unnecessary, and only guarantee -# that the current interface number gets larger faster. -# 3. If the library source code has changed at all since the last update, then -# increment revision (`c:r:a' becomes `c:r+1:a'). -# 4. If any interfaces have been added, removed, or changed since the last update, -# increment current, and set revision to 0. -# 5. If any interfaces have been added since the last public release, then increment -# age. -# 6. If any interfaces have been removed since the last public release, then set age -# to 0. - -SHARED_VERSION_INFO="1:16:0" - -AC_PROG_CC -#AM_PROG_LIBTOOL - -AC_CHECK_PROG(autogen, autogen, yes, no) - -AC_PROG_INSTALL -AC_PROG_LN_S - -AC_HEADER_STDC - -AC_CHECK_HEADERS(endian.h) -AC_CHECK_HEADERS(byteswap.h) -AC_CHECK_HEADERS(locale.h) -AC_CHECK_HEADERS(inttypes.h) - -AC_HEADER_SYS_WAIT - -AC_CHECK_DECLS(S_IRGRP) -AC_DEFINE_UNQUOTED([HAVE_DECL_S_IRGRP],${HAVE_DECL_S_IRGRP}, - [Set to 1 if S_IRGRP is defined.]) - -#==================================================================================== -# Check for support of the struct hack. - -AC_C99_FLEXIBLE_ARRAY - -if test x$ac_cv_c99_flexible_array = xyes ; then - AC_DEFINE([HAVE_FLEXIBLE_ARRAY],1, [Set to 1 if the compile supports the struct hack.]) -else - AC_MSG_WARN([[*** This compiler does not support the 1999 ISO C Standard ***]]) - AC_MSG_WARN([[*** feature known as the flexible array struct member. ***]]) - AC_DEFINE([HAVE_FLEXIBLE_ARRAY],0) - fi - -#==================================================================================== -# Couple of initializations here. Fill in real values later. - -SHLIB_VERSION_ARG="" - -#==================================================================================== -# Finished checking, handle options. - -AC_ARG_ENABLE(experimental, - AC_HELP_STRING([--enable-experimental], [enable experimental code])) - -EXPERIMENTAL_CODE=0 -if test x$enable_experimental = xyes ; then - EXPERIMENTAL_CODE=1 - fi -AC_DEFINE_UNQUOTED([ENABLE_EXPERIMENTAL_CODE],${EXPERIMENTAL_CODE}, [Set to 1 to enable experimental code.]) - -AC_ARG_ENABLE(gcc-werror, - AC_HELP_STRING([--enable-gcc-werror], [enable -Werror in all Makefiles])) - -AC_ARG_ENABLE(gcc-pipe, - AC_HELP_STRING([--disable-gcc-pipe], [disable gcc -pipe option])) - -AC_ARG_ENABLE(gcc-opt, - AC_HELP_STRING([--disable-gcc-opt], [disable gcc optimisations])) - -AC_ARG_ENABLE(cpu-clip, - AC_HELP_STRING([--disable-cpu-clip], [disable tricky cpu specific clipper])) - -AC_ARG_ENABLE(bow-docs, - AC_HELP_STRING([--enable-bow-docs], [enable black-on-white html docs])) - -AC_ARG_ENABLE(sqlite, - AC_HELP_STRING([--disable-sqlite], [disable use of sqlite])) - -AC_ARG_ENABLE(flac, - AC_HELP_STRING([--disable-flac], [disable use of FLAC])) - -AC_ARG_ENABLE(alsa, - AC_HELP_STRING([--disable-alsa], [disable use of ALSA])) - -#==================================================================================== -# Check types and their sizes. - -AC_CHECK_SIZEOF(short,2) -AC_CHECK_SIZEOF(int,4) -AC_CHECK_SIZEOF(long,4) -AC_CHECK_SIZEOF(float,4) -AC_CHECK_SIZEOF(double,4) -AC_CHECK_SIZEOF(void*,8) -AC_CHECK_SIZEOF(size_t,4) -AC_CHECK_SIZEOF(int64_t,8) -AC_CHECK_SIZEOF(long long,8) - -#==================================================================================== -# Find an appropriate type for sf_count_t. -# On systems supporting files larger than 2 Gig, sf_count_t must be a 64 bit value. -# Unfortunately there is more than one way of ensuring this so need to do some -# pretty rigourous testing here. - -unset ac_cv_sizeof_off_t - -AC_CHECK_SIZEOF(off_t,1) # Fake default value. - -case "$host_os" in - mingw*) - TYPEOF_SF_COUNT_T="__int64" - SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL" - SIZEOF_SF_COUNT_T=8 - ;; - *) - if test "x$ac_cv_sizeof_off_t" = "x8" ; then - # If sizeof (off_t) is 8, no further checking is needed. - TYPEOF_SF_COUNT_T="off_t" - SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL" - SIZEOF_SF_COUNT_T=8 - else - # Check for common 64 bit file offset types. - AC_CHECK_SIZEOF(loff_t,1) # Fake default value. - AC_CHECK_SIZEOF(off64_t,1) # Fake default value. - - TYPEOF_SF_COUNT_T="unknown" - if test "x$ac_cv_sizeof_loff_t" = "x8" ; then - TYPEOF_SF_COUNT_T="loff_t" - SIZEOF_SF_COUNT_T=8 - elif test "x$ac_cv_sizeof_off64_t" = "x8" ; then - TYPEOF_SF_COUNT_T="off64_t" - SIZEOF_SF_COUNT_T=8 - fi - - # Save the old sizeof (off_t) value and then unset it to see if it - # changes when Large File Support is enabled. - - pre_largefile_sizeof_off_t=$ac_cv_sizeof_off_t - unset ac_cv_sizeof_off_t - - AC_SYS_EXTRA_LARGEFILE - - if test "x$ac_cv_sys_largefile_CFLAGS" = "xno" ; then - ac_cv_sys_largefile_CFLAGS="" - fi - if test "x$ac_cv_sys_largefile_LDFLAGS" = "xno" ; then - ac_cv_sys_largefile_LDFLAGS="" - fi - if test "x$ac_cv_sys_largefile_LIBS" = "xno" ; then - ac_cv_sys_largefile_LIBS="" - fi - - AC_CHECK_SIZEOF(off_t,1) # Fake default value. - - if test "x$ac_cv_sizeof_off_t" = "x8" ; then - SF_COUNT_MAX="0x7FFFFFFFFFFFFFFFLL" - elif test "x$ac_cv_sizeof_off_t" = "x$pre_largefile_sizeof_off_t" ; then - AC_MSG_WARN([[This machine does not seem to support 64 bit file offsets.]]) - TYPEOF_SF_COUNT_T="off_t" - SIZEOF_SF_COUNT_T=$ac_cv_sizeof_off_t - elif test "x$TYPEOF_SF_COUNT_T" = "xunknown" ; then - echo - echo "*** The configure process has determined that this system is capable" - echo "*** of Large File Support but has not been able to find a type which" - echo "*** is an unambiguous 64 bit file offset." - echo "*** Please contact the author to help resolve this problem." - echo - AC_MSG_ERROR([[Bad file offset type.]]) - fi - fi - ;; - esac - -if test $SIZEOF_SF_COUNT_T = 4 ; then - SF_COUNT_MAX="0x7FFFFFFF" - fi - -AC_DEFINE_UNQUOTED([TYPEOF_SF_COUNT_T],${TYPEOF_SF_COUNT_T}, [Set to long if unknown.]) -AC_SUBST(TYPEOF_SF_COUNT_T) - -AC_DEFINE_UNQUOTED([SIZEOF_SF_COUNT_T],${SIZEOF_SF_COUNT_T}, [Set to sizeof (long) if unknown.]) -AC_SUBST(SIZEOF_SF_COUNT_T) - -AC_DEFINE_UNQUOTED([SF_COUNT_MAX],${SF_COUNT_MAX}, [Set to maximum allowed value of sf_count_t type.]) -AC_SUBST(SF_COUNT_MAX) - -AC_CHECK_TYPES(ssize_t) -AC_CHECK_SIZEOF(ssize_t,4) - -#==================================================================================== -# Determine endian-ness of target processor. - -AC_C_FIND_ENDIAN - -AC_DEFINE_UNQUOTED(CPU_IS_BIG_ENDIAN, ${ac_cv_c_big_endian}, - [Target processor is big endian.]) -AC_DEFINE_UNQUOTED(CPU_IS_LITTLE_ENDIAN, ${ac_cv_c_little_endian}, - [Target processor is little endian.]) - -#==================================================================================== -# Check for functions. - -AC_CHECK_FUNCS(malloc calloc realloc free) -AC_CHECK_FUNCS(open read write lseek pread pwrite) -AC_CHECK_FUNCS(fstat ftruncate fsync fdatasync) -AC_CHECK_FUNCS(snprintf vsnprintf) -AC_CHECK_FUNCS(gmtime gmtime_r) -AC_CHECK_FUNCS(mmap getpagesize) -AC_CHECK_FUNCS(setlocale) - -AC_CHECK_LIB([m],floor) -AC_CHECK_FUNCS(floor ceil fmod) - -case "$host_os" in - cygwin*) - AC_MSG_WARN([[Not using built-in lrint() and lrintf() because they are broken on Cygwin.]]) - ;; - *) - AC_C99_FUNC_LRINT - AC_C99_FUNC_LRINTF - - if test "x$ac_cv_c99_lrint" = "xno" ; then - if test "x$ac_cv_c99_lrintf" = "xno" ; then - AC_MSG_WARN([[*** Missing C99 standard functions lrint() and lrintf().]]) - AC_MSG_WARN([[*** This may cause benign compiler warnings on some systems (ie Solaris).]]) - fi - fi - ;; - esac - -#==================================================================================== -# Check for libsqlite3 (only used in regtest). - -ac_cv_sqlite3=no -if test x$enable_sqlite != xno ; then - PKG_CHECK_MODULES(SQLITE3, sqlite3 >= 3.2, ac_cv_sqlite3=yes, ac_cv_sqlite3=no) - fi - -if test x$ac_cv_sqlite3 = "xyes" ; then - HAVE_SQLITE3=1 -else - HAVE_SQLITE3=0 - fi - -AC_DEFINE_UNQUOTED([HAVE_SQLITE3],$HAVE_SQLITE3,[Set to 1 if you have libsqlite3.]) - -#==================================================================================== -# Determine if the processor can do clipping on float to int conversions. - -if test x$enable_cpu_clip != "xno" ; then - AC_C_CLIP_MODE -else - echo "checking processor clipping capabilities... disabled" - ac_cv_c_clip_positive=0 - ac_cv_c_clip_negative=0 - fi - -AC_DEFINE_UNQUOTED(CPU_CLIPS_POSITIVE, ${ac_cv_c_clip_positive}, - [Target processor clips on positive float to int conversion.]) -AC_DEFINE_UNQUOTED(CPU_CLIPS_NEGATIVE, ${ac_cv_c_clip_negative}, - [Target processor clips on negative float to int conversion.]) - -#==================================================================================== -# Target OS specific stuff. - -OS_SPECIFIC_CFLAGS="" -OS_SPECIFIC_LINKS="" -os_is_win32=0 -os_is_macosx=0 -use_windows_api=0 - -case "$host_os" in - darwin* | rhapsody*) - os_is_macosx=1 - OS_SPECIFIC_CFLAGS="-fpascal-strings -I/Developer/Headers/FlatCarbon" - OS_SPECIFIC_LINKS="-framework CoreAudio" - ;; - mingw*) - os_is_win32=1 - use_windows_api=1 - OS_SPECIFIC_LINKS="-lwinmm" - ;; - cygwin*) - os_is_win32=1 - OS_SPECIFIC_LINKS="-lwinmm" - ;; - esac - -AC_DEFINE_UNQUOTED(OS_IS_WIN32, ${os_is_win32}, [Set to 1 if compiling for Win32]) -AC_DEFINE_UNQUOTED(OS_IS_MACOSX, ${os_is_macosx}, [Set to 1 if compiling for MacOSX]) -AC_DEFINE_UNQUOTED(USE_WINDOWS_API, ${use_windows_api}, [Set to 1 to use the native windows API]) - -#==================================================================================== -# Check for ALSA. - -ALSA_LIBS="" - -if test x$enable_alsa != xno ; then - AC_CHECK_HEADERS(alsa/asoundlib.h) - if test x$ac_cv_header_alsa_asoundlib_h = xyes ; then - ALSA_LIBS="-lasound" - fi - fi - -#==================================================================================== -# Check for FLAC - -FLAC_LIBS="" - -if test x$enable_flac != xno ; then - AC_CHECK_HEADERS(FLAC/all.h) - if test x$ac_cv_header_FLAC_all_h = xyes ; then - AC_CHECK_LIB(FLAC, FLAC__seekable_stream_encoder_set_tell_callback, HAVE_FLAC_1_1_1="yes") - if test "x$HAVE_FLAC_1_1_1" = xyes ; then - AC_DEFINE(HAVE_FLAC_1_1_1, [1], [Define to 1 if you have libflac 1.1.1]) - fi - FLAC_LIBS="-lFLAC" - fi - fi - -#==================================================================================== -# Test for sanity when cross-compiling. - -if test x$cross_compiling = xyes ; then - AC_MSG_WARN([[******************************************************************]]) - AC_MSG_WARN([[*** We are cross-compiling, so have to assume sizeof (short) == 2 ]]) - AC_MSG_WARN([[*** and sizeof (int) == 4. If this is not the case there is no ]]) - AC_MSG_WARN([[*** chance of this working. Please contact the mantainer. ]]) - AC_MSG_WARN([[******************************************************************]]) - fi - -if test $ac_cv_sizeof_short != 2 ; then - AC_MSG_WARN([[******************************************************************]]) - AC_MSG_WARN([[*** sizeof (short) != 2. ]]) - AC_MSG_WARN([[******************************************************************]]) - fi - -if test $ac_cv_sizeof_int != 4 ; then - AC_MSG_WARN([[******************************************************************]]) - AC_MSG_WARN([[*** sizeof (int) != 4 ]]) - AC_MSG_WARN([[******************************************************************]]) - fi - -if test $ac_cv_sizeof_float != 4 ; then - AC_MSG_WARN([[******************************************************************]]) - AC_MSG_WARN([[*** sizeof (float) != 4. ]]) - AC_MSG_WARN([[******************************************************************]]) - fi - -if test $ac_cv_sizeof_double != 8 ; then - AC_MSG_WARN([[******************************************************************]]) - AC_MSG_WARN([[*** sizeof (double) != 8. ]]) - AC_MSG_WARN([[******************************************************************]]) - fi - -if test x"$ac_cv_prog_autogen" = "xno" ; then - AC_MSG_WARN([[Touching files in directory tests/.]]) - touch tests/*.c tests/*.h - fi - -#==================================================================================== -# Settings for the HTML documentation. - -htmldocdir=$prefix/share/doc/libsndfile1-dev/html - -if test $prefix = "NONE" ; then - htmldocdir=/usr/local/share/doc/libsndfile1-dev/html -else - htmldocdir=$prefix/share/doc/libsndfile1-dev/html - fi - -if test x$enable_bow_docs = "xyes" ; then - HTML_BGCOLOUR="white" - HTML_FGCOLOUR="black" -else - HTML_BGCOLOUR="black" - HTML_FGCOLOUR="white" - fi - -#==================================================================================== -# Now use the information from the checking stage. - -if test x$ac_cv_c_compiler_gnu = xyes ; then - AC_ADD_CFLAGS(-std=gnu99) - - CFLAGS="$CFLAGS -W -Wall" - - AC_ADD_CFLAGS(-Wdeclaration-after-statement) - - if test x$enable_gcc_werror = "xyes" ; then - CFLAGS="-Werror $CFLAGS" - fi - - CFLAGS="$CFLAGS -Wstrict-prototypes -Wmissing-prototypes -Waggregate-return -Wcast-align -Wcast-qual -Wnested-externs -Wshadow -Wbad-function-cast -Wwrite-strings" - # -Wpointer-arith -Wundef -Wmissing-declarations -Winline -Wconversion" - - if test "x$enable_gcc_opt" = "xno" ; then - temp_CFLAGS=`echo $CFLAGS | sed "s/O2/O0/"` - CFLAGS=$temp_CFLAGS - AC_MSG_WARN([[*** Compiler optimisations switched off. ***]]) - fi - - # OS specific tweaks. - case "$host_os" in - darwin* | rhapsody*) - # Disable -Wall, -pedantic and -Wshadow for Apple Darwin/Rhapsody. - # System headers on these systems are broken. - temp_CFLAGS=`echo $CFLAGS | sed "s/-Wall -pedantic//" | sed "s/-Wshadow//" | sed "s/-Waggregate-return//"` - CFLAGS=$temp_CFLAGS - SHLIB_VERSION_ARG="-Wl,-exported_symbols_list -Wl,\$(srcdir)/Symbols.darwin" - ;; - linux*) - SHLIB_VERSION_ARG="-Wl,--version-script=\$(srcdir)/Symbols.linux" - ;; - mingw*) - SHLIB_VERSION_ARG="-Wl,\$(srcdir)/libsndfile.def" - ;; - cygwin*) - SHLIB_VERSION_ARG="-Wl,\$(srcdir)/cygsndfile.def" - ;; - *) - ;; - esac - if test x$enable_gcc_pipe != "xno" ; then - CFLAGS="$CFLAGS -pipe" - fi - - AC_DEFINE([COMPILER_IS_GCC],1, [Set to 1 if the compile is GNU GCC.]) - GCC_MAJOR_VERSION=`$CC -dumpversion | sed "s/\..*//"` - AC_DEFINE_UNQUOTED([GCC_MAJOR_VERSION],${GCC_MAJOR_VERSION}, [Major version of GCC or 3 otherwise.]) - fi - -CFLAGS="$CFLAGS $OS_SPECIFIC_CFLAGS" - -if test x"$CFLAGS" = x ; then - echo "Error in configure script. CFLAGS has been screwed up." - exit - fi - -AC_SUBST(htmldocdir) -AC_SUBST(HTML_BGCOLOUR) -AC_SUBST(HTML_FGCOLOUR) - -AC_SUBST(SHLIB_VERSION_ARG) -AC_SUBST(SHARED_VERSION_INFO) -AC_SUBST(OS_SPECIFIC_CFLAGS) -AC_SUBST(OS_SPECIFIC_LINKS) -AC_SUBST(ALSA_LIBS) -AC_SUBST(FLAC_LIBS) -AC_SUBST(ENABLE_EXPERIMENTAL_CODE) - -AC_SUBST(COMPILER_IS_GCC) -AC_SUBST(GCC_MAJOR_VERSION) - -dnl The following line causes the libtool distributed with the source -dnl to be replaced if the build system has a more recent version. -AC_SUBST(LIBTOOL_DEPS) - -AC_CONFIG_FILES([ \ - src/sndfile.h - sndfile.pc \ - ]) -AC_OUTPUT - -#==================================================================================== - -AC_MSG_RESULT([ --=-=-=-=-=-=-=-=-=-= Configuration Complete =-=-=-=-=-=-=-=-=-=- - - Configuration summary : - - Version : ..................... ${VERSION} - Experimental code : ........... ${enable_experimental:-no} -]) - -if test x$ac_cv_c_compiler_gnu = xyes ; then - echo -e " Tools :\n" - echo " Compiler is GCC : ............. ${ac_cv_c_compiler_gnu}" - echo " GCC major version : ........... ${GCC_MAJOR_VERSION}" - if test $GCC_MAJOR_VERSION -lt 3 ; then - echo -e "\n ** This compiler version allows applications to write" - echo " ** to static strings within the library." - echo " ** Compile with GCC version 3.X to avoid this problem." - fi - fi - -if test $libdir = "\${exec_prefix}/lib" ; then - libdir="$prefix/lib" - fi - -if test $bindir = "\${exec_prefix}/bin" ; then - bindir="$prefix/bin" - fi - -AC_MSG_RESULT([[ - Installation directories : - - Library directory : ........... $libdir - Program directory : ........... $bindir - Pkgconfig directory : ......... $libdir/pkgconfig - HTML docs directory : ......... $htmldocdir -]]) - -if test x$prefix != "x/usr" ; then - echo "Compiling some other packages against libsndfile may require" - echo -e "the addition of \"$libdir/pkgconfig\" to the" - echo -e "PKG_CONFIG_PATH environment variable.\n" - fi - -#==================================================================================== - -ifelse(dnl - - Do not edit or modify anything in this comment block. - The arch-tag line is a file identity tag for the GNU Arch - revision control system. - - arch-tag: 6391b316-6cfc-43c2-a18a-8defdc4ee359 - -)dnl diff --git a/libs/libsndfile/depcomp b/libs/libsndfile/depcomp deleted file mode 100755 index edb5d38efd..0000000000 --- a/libs/libsndfile/depcomp +++ /dev/null @@ -1,479 +0,0 @@ -#! /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/libs/libsndfile/install-sh b/libs/libsndfile/install-sh deleted file mode 100755 index 6ce63b9f76..0000000000 --- a/libs/libsndfile/install-sh +++ /dev/null @@ -1,294 +0,0 @@ -#!/bin/sh -# -# install - install a program, script, or datafile -# -# 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. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd=$cpprog - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd=$stripprog - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "$0: no input file specified" >&2 - exit 1 -else - : -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d "$dst" ]; then - instcmd=: - chmodcmd="" - else - instcmd=$mkdirprog - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f "$src" ] || [ -d "$src" ] - then - : - else - echo "$0: $src does not exist" >&2 - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "$0: no destination specified" >&2 - exit 1 - else - : - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d "$dst" ] - then - dst=$dst/`basename "$src"` - else - : - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' - ' -IFS="${IFS-$defaultIFS}" - -oIFS=$IFS -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS=$oIFS - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp=$pathcomp$1 - shift - - if [ ! -d "$pathcomp" ] ; - then - $mkdirprog "$pathcomp" - else - : - fi - - pathcomp=$pathcomp/ -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd "$dst" && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename "$dst"` - else - dstfile=`basename "$dst" $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename "$dst"` - else - : - fi - -# Make a couple of temp file names in the proper directory. - - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - -# Trap to clean up temp files at exit. - - trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 - trap '(exit $?); exit' 1 2 13 15 - -# Move or copy the file name to the temp name - - $doit $instcmd "$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 $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi && - -# 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. - -{ - if [ -f "$dstdir/$dstfile" ] - then - $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null || - $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null || - { - echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 - (exit 1); exit - } - else - : - fi -} && - -# Now rename the file to the real destination. - - $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" - -fi && - -# The final little trick to "correctly" pass the exit status to the exit trap. - -{ - (exit 0); exit -} diff --git a/libs/libsndfile/libsndfile.spec.in b/libs/libsndfile/libsndfile.spec.in deleted file mode 100644 index ad47a5f3f8..0000000000 --- a/libs/libsndfile/libsndfile.spec.in +++ /dev/null @@ -1,69 +0,0 @@ - -%define name @PACKAGE@ -%define version @VERSION@ -%define release 1 - -Summary: A library to handle various audio file formats. -Name: %{name} -Version: %{version} -Release: %{release} -Copyright: LGPL -Group: Libraries/Sound -Source: http://www.mega-nerd.com/libsndfile/libsndfile-%{version}.tar.gz -URL: http://www.mega-nerd.com/libsndfile/ -BuildRoot: /var/tmp/%{name}-%{version} - -%description -libsndfile is a C library for reading and writing sound files such as -AIFF, AU and WAV files through one standard interface. It can currently -read/write 8, 16, 24 and 32-bit PCM files as well as 32-bit floating -point WAV files and a number of compressed formats. - -%package devel -Summary: Libraries, includes, etc to develop libsndfile applications -Group: Libraries - -%description devel -Libraries, include files, etc you can use to develop libsndfile applications. - -%prep -%setup - -%build -%configure -make - -%install -if [ -d $RPM_BUILD_ROOT ]; then rm -rf $RPM_BUILD_ROOT; fi -mkdir -p $RPM_BUILD_ROOT -make DESTDIR=$RPM_BUILD_ROOT install -%clean -if [ -d $RPM_BUILD_ROOT ]; then rm -rf $RPM_BUILD_ROOT; fi - -%files -%defattr(-,root,root) -%doc AUTHORS COPYING ChangeLog INSTALL NEWS README TODO doc -%{_libdir}/libsndfile.so.* -%{_bindir}/* -%{_mandir}/man1/* -%{_datadir}/octave/site/m/* -%{_defaultdocdir}/libsndfile1-dev/html/* - -%files devel -%defattr(-,root,root) -%{_libdir}/libsndfile.a -%{_libdir}/libsndfile.la -%{_libdir}/libsndfile.so -%{_includedir}/sndfile.h -%{_libdir}/pkgconfig/sndfile.pc - -%changelog -* Sun May 15 2005 Erik de Castro Lopo -- Add html files to the files section. -* Tue Sep 16 2003 Erik de Castro Lopo -- Apply corrections from Andrew Schultz. -* Mon Oct 21 2002 Erik de Castro Lopo -- Force installation of sndfile.pc file. -* Thu Jul 6 2000 Josh Green -- Created libsndfile.spec.in - diff --git a/libs/libsndfile/missing b/libs/libsndfile/missing deleted file mode 100755 index fc54c64ec9..0000000000 --- a/libs/libsndfile/missing +++ /dev/null @@ -1,336 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc. -# Originally 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, 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. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -case "$1" in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case "$1" in - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch]" - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing 0.4 - GNU automake" - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - - aclocal*) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case "$f" in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` - test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison|yacc) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if [ ! -f y.tab.h ]; then - echo >y.tab.h - fi - if [ ! -f y.tab.c ]; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex|flex) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if [ ! -f lex.yy.c ]; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` - fi - if [ -f "$file" ]; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit 1 - fi - ;; - - makeinfo) - if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then - # We have makeinfo, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` - fi - touch $file - ;; - - tar) - shift - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - fi - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case "$firstarg" in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case "$firstarg" in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 diff --git a/libs/libsndfile/mkinstalldirs b/libs/libsndfile/mkinstalldirs deleted file mode 100755 index d2d5f21b61..0000000000 --- a/libs/libsndfile/mkinstalldirs +++ /dev/null @@ -1,111 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman -# Created: 1993-05-16 -# Public domain - -errstatus=0 -dirmode="" - -usage="\ -Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." - -# process command line arguments -while test $# -gt 0 ; do - case $1 in - -h | --help | --h*) # -h for help - echo "$usage" 1>&2 - exit 0 - ;; - -m) # -m PERM arg - shift - test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } - dirmode=$1 - shift - ;; - --) # stop option processing - shift - break - ;; - -*) # unknown option - echo "$usage" 1>&2 - exit 1 - ;; - *) # first non-opt arg - break - ;; - esac -done - -for file -do - if test -d "$file"; then - shift - else - break - fi -done - -case $# in - 0) exit 0 ;; -esac - -case $dirmode in - '') - if mkdir -p -- . 2>/dev/null; then - echo "mkdir -p -- $*" - exec mkdir -p -- "$@" - fi - ;; - *) - if mkdir -m "$dirmode" -p -- . 2>/dev/null; then - echo "mkdir -m $dirmode -p -- $*" - exec mkdir -m "$dirmode" -p -- "$@" - fi - ;; -esac - -for file -do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d - do - pathcomp="$pathcomp$d" - case $pathcomp in - -*) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - else - if test ! -z "$dirmode"; then - echo "chmod $dirmode $pathcomp" - lasterr="" - chmod "$dirmode" "$pathcomp" || lasterr=$? - - if test ! -z "$lasterr"; then - errstatus=$lasterr - fi - fi - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# End: -# mkinstalldirs ends here diff --git a/libs/libsndfile/sndfile.pc.in b/libs/libsndfile/sndfile.pc.in deleted file mode 100644 index f2a833bddb..0000000000 --- a/libs/libsndfile/sndfile.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: sndfile -Description: A library for reading and writing audio files -Requires: -Version: @VERSION@ -Libs: -L${libdir} -lsndfile -Cflags: -I${includedir} diff --git a/libs/libsndfile/src/G72x/ChangeLog b/libs/libsndfile/src/G72x/ChangeLog deleted file mode 100644 index aa108dff7f..0000000000 --- a/libs/libsndfile/src/G72x/ChangeLog +++ /dev/null @@ -1,50 +0,0 @@ -2001-06-05 Erik de Castro Lopo - - * g72x.c - Added {} in function update () to prevent 'ambiguous else' warning messages. - -2000-07-14 Erik de Castro Lopo - - * g72x.c - Modified g72x_init_state () to fit in with the new structure of the code. - Implemented g72x_encode_block () and g72x_decode_block (). - -2000-07-12 Erik de Castro Lopo - - * g72x.h - Moved nearly all definitions and function prototypes from this file have been - moved to private.h. - Added an enum defining the 4 different G72x ADPCM codecs. - Added new function prototypes to define a cleaner interface to the encoder - and decoder. This new interface also allows samples to be processed in blocks - rather than on a sample by sample basis like the original code. - - * private.h - Added prototypes moved from g72x.h. - Changed struct g72x_state to a typedef struct { .. } G72x_PRIVATE. - Added fields to G72x_PRIVATE required for working on blocks of samples. - -2000-06-07 Erik de Castro Lopo - - * g72x.c - Fixed all compiler warnings. - Removed functions tandem_adjust() which is not required by libsndfile. - - * g721.c - Fixed all compiler warnings. - Removed functions tandem_adjust_alaw() and tandem_adjust_ulaw () which are not - required by libsndfile. - Removed second parameter to g721_encoder () which is not required. - - * g72x.h - Removed in_coding and out_coding parameters from all functions. These allowed - g72x encoding/decoding to/from A-law or u-law and are not required by libsndfile. - Removed unneeded defines for A-law, u-law and linear encoding. - - * g723_16.c - Removed second parameter (in_coding) for g723_16_encoder(). - Removed second parameter (out_coding) for g723_16_decoder(). - - * private.h - New file containing prototypes and tyepdefs private to G72x code. - diff --git a/libs/libsndfile/src/G72x/README b/libs/libsndfile/src/G72x/README deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/libs/libsndfile/src/G72x/README.original b/libs/libsndfile/src/G72x/README.original deleted file mode 100644 index 23b0e7dd50..0000000000 --- a/libs/libsndfile/src/G72x/README.original +++ /dev/null @@ -1,94 +0,0 @@ -The files in this directory comprise ANSI-C language reference implementations -of the CCITT (International Telegraph and Telephone Consultative Committee) -G.711, G.721 and G.723 voice compressions. They have been tested on Sun -SPARCstations and passed 82 out of 84 test vectors published by CCITT -(Dec. 20, 1988) for G.721 and G.723. [The two remaining test vectors, -which the G.721 decoder implementation for u-law samples did not pass, -may be in error because they are identical to two other vectors for G.723_40.] - -This source code is released by Sun Microsystems, Inc. to the public domain. -Please give your acknowledgement in product literature if this code is used -in your product implementation. - -Sun Microsystems supports some CCITT audio formats in Solaris 2.0 system -software. However, Sun's implementations have been optimized for higher -performance on SPARCstations. - - -The source files for CCITT conversion routines in this directory are: - - g72x.h header file for g721.c, g723_24.c and g723_40.c - g711.c CCITT G.711 u-law and A-law compression - g72x.c common denominator of G.721 and G.723 ADPCM codes - g721.c CCITT G.721 32Kbps ADPCM coder (with g72x.c) - g723_24.c CCITT G.723 24Kbps ADPCM coder (with g72x.c) - g723_40.c CCITT G.723 40Kbps ADPCM coder (with g72x.c) - - -Simple conversions between u-law, A-law, and 16-bit linear PCM are invoked -as follows: - - unsigned char ucode, acode; - short pcm_val; - - ucode = linear2ulaw(pcm_val); - ucode = alaw2ulaw(acode); - - acode = linear2alaw(pcm_val); - acode = ulaw2alaw(ucode); - - pcm_val = ulaw2linear(ucode); - pcm_val = alaw2linear(acode); - - -The other CCITT compression routines are invoked as follows: - - #include "g72x.h" - - struct g72x_state state; - int sample, code; - - g72x_init_state(&state); - code = {g721,g723_24,g723_40}_encoder(sample, coding, &state); - sample = {g721,g723_24,g723_40}_decoder(code, coding, &state); - -where - coding = AUDIO_ENCODING_ULAW for 8-bit u-law samples - AUDIO_ENCODING_ALAW for 8-bit A-law samples - AUDIO_ENCODING_LINEAR for 16-bit linear PCM samples - - - -This directory also includes the following sample programs: - - encode.c CCITT ADPCM encoder - decode.c CCITT ADPCM decoder - Makefile makefile for the sample programs - - -The sample programs contain examples of how to call the various compression -routines and pack/unpack the bits. The sample programs read byte streams from -stdin and write to stdout. The input/output data is raw data (no file header -or other identifying information is embedded). The sample programs are -invoked as follows: - - encode [-3|4|5] [-a|u|l] outfile - decode [-3|4|5] [-a|u|l] outfile -where: - -3 encode to (decode from) G.723 24kbps (3-bit) data - -4 encode to (decode from) G.721 32kbps (4-bit) data [the default] - -5 encode to (decode from) G.723 40kbps (5-bit) data - -a encode from (decode to) A-law data - -u encode from (decode to) u-law data [the default] - -l encode from (decode to) 16-bit linear data - -Examples: - # Read 16-bit linear and output G.721 - encode -4 -l g721file - - # Read 40Kbps G.723 and output A-law - decode -5 -a alawfile - - # Compress and then decompress u-law data using 24Kbps G.723 - encode -3 ulawout - diff --git a/libs/libsndfile/src/G72x/g721.c b/libs/libsndfile/src/G72x/g721.c deleted file mode 100644 index 4f51bb1977..0000000000 --- a/libs/libsndfile/src/G72x/g721.c +++ /dev/null @@ -1,162 +0,0 @@ -/* - * This source code is a product of Sun Microsystems, Inc. and is provided - * for unrestricted use. Users may copy or modify this source code without - * charge. - * - * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING - * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun source code is provided with no support and without any obligation on - * the part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * g721.c - * - * Description: - * - * g721_encoder(), g721_decoder() - * - * These routines comprise an implementation of the CCITT G.721 ADPCM - * coding algorithm. Essentially, this implementation is identical to - * the bit level description except for a few deviations which - * take advantage of work station attributes, such as hardware 2's - * complement arithmetic and large memory. Specifically, certain time - * consuming operations such as multiplications are replaced - * with lookup tables and software 2's complement operations are - * replaced with hardware 2's complement. - * - * The deviation from the bit level specification (lookup tables) - * preserves the bit level performance specifications. - * - * As outlined in the G.721 Recommendation, the algorithm is broken - * down into modules. Each section of code below is preceded by - * the name of the module which it is implementing. - * - */ - -#include "g72x.h" -#include "g72x_priv.h" - -static short qtab_721[7] = {-124, 80, 178, 246, 300, 349, 400}; -/* - * Maps G.721 code word to reconstructed scale factor normalized log - * magnitude values. - */ -static short _dqlntab[16] = {-2048, 4, 135, 213, 273, 323, 373, 425, - 425, 373, 323, 273, 213, 135, 4, -2048}; - -/* Maps G.721 code word to log of scale factor multiplier. */ -static short _witab[16] = {-12, 18, 41, 64, 112, 198, 355, 1122, - 1122, 355, 198, 112, 64, 41, 18, -12}; -/* - * Maps G.721 code words to a set of values whose long and short - * term averages are computed and then compared to give an indication - * how stationary (steady state) the signal is. - */ -static short _fitab[16] = {0, 0, 0, 0x200, 0x200, 0x200, 0x600, 0xE00, - 0xE00, 0x600, 0x200, 0x200, 0x200, 0, 0, 0}; - -/* - * g721_encoder() - * - * Encodes the input vale of linear PCM, A-law or u-law data sl and returns - * the resulting code. -1 is returned for unknown input coding value. - */ -int -g721_encoder( - int sl, - G72x_STATE *state_ptr) -{ - short sezi, se, sez; /* ACCUM */ - short d; /* SUBTA */ - short sr; /* ADDB */ - short y; /* MIX */ - short dqsez; /* ADDC */ - short dq, i; - - /* linearize input sample to 14-bit PCM */ - sl >>= 2; /* 14-bit dynamic range */ - - sezi = predictor_zero(state_ptr); - sez = sezi >> 1; - se = (sezi + predictor_pole(state_ptr)) >> 1; /* estimated signal */ - - d = sl - se; /* estimation difference */ - - /* quantize the prediction difference */ - y = step_size(state_ptr); /* quantizer step size */ - i = quantize(d, y, qtab_721, 7); /* i = ADPCM code */ - - dq = reconstruct(i & 8, _dqlntab[i], y); /* quantized est diff */ - - sr = (dq < 0) ? se - (dq & 0x3FFF) : se + dq; /* reconst. signal */ - - dqsez = sr + sez - se; /* pole prediction diff. */ - - update(4, y, _witab[i] << 5, _fitab[i], dq, sr, dqsez, state_ptr); - - return (i); -} - -/* - * g721_decoder() - * - * Description: - * - * Decodes a 4-bit code of G.721 encoded data of i and - * returns the resulting linear PCM, A-law or u-law value. - * return -1 for unknown out_coding value. - */ -int -g721_decoder( - int i, - G72x_STATE *state_ptr) -{ - short sezi, sei, sez, se; /* ACCUM */ - short y; /* MIX */ - short sr; /* ADDB */ - short dq; - short dqsez; - - i &= 0x0f; /* mask to get proper bits */ - sezi = predictor_zero(state_ptr); - sez = sezi >> 1; - sei = sezi + predictor_pole(state_ptr); - se = sei >> 1; /* se = estimated signal */ - - y = step_size(state_ptr); /* dynamic quantizer step size */ - - dq = reconstruct(i & 0x08, _dqlntab[i], y); /* quantized diff. */ - - sr = (dq < 0) ? (se - (dq & 0x3FFF)) : se + dq; /* reconst. signal */ - - dqsez = sr - se + sez; /* pole prediction diff. */ - - update(4, y, _witab[i] << 5, _fitab[i], dq, sr, dqsez, state_ptr); - - /* sr was 14-bit dynamic range */ - return (sr << 2); -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 101b6e25-457d-490a-99ae-e2e74a26ea24 -*/ - diff --git a/libs/libsndfile/src/G72x/g723_16.c b/libs/libsndfile/src/G72x/g723_16.c deleted file mode 100644 index 0c3174501c..0000000000 --- a/libs/libsndfile/src/G72x/g723_16.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - * This source code is a product of Sun Microsystems, Inc. and is provided - * for unrestricted use. Users may copy or modify this source code without - * charge. - * - * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING - * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun source code is provided with no support and without any obligation on - * the part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -/* 16kbps version created, used 24kbps code and changing as little as possible. - * G.726 specs are available from ITU's gopher or WWW site (http://www.itu.ch) - * If any errors are found, please contact me at mrand@tamu.edu - * -Marc Randolph - */ - -/* - * g723_16.c - * - * Description: - * - * g723_16_encoder(), g723_16_decoder() - * - * These routines comprise an implementation of the CCITT G.726 16 Kbps - * ADPCM coding algorithm. Essentially, this implementation is identical to - * the bit level description except for a few deviations which take advantage - * of workstation attributes, such as hardware 2's complement arithmetic. - * - */ - -#include "g72x.h" -#include "g72x_priv.h" - -/* - * Maps G.723_16 code word to reconstructed scale factor normalized log - * magnitude values. Comes from Table 11/G.726 - */ -static short _dqlntab[4] = { 116, 365, 365, 116}; - -/* Maps G.723_16 code word to log of scale factor multiplier. - * - * _witab[4] is actually {-22 , 439, 439, -22}, but FILTD wants it - * as WI << 5 (multiplied by 32), so we'll do that here - */ -static short _witab[4] = {-704, 14048, 14048, -704}; - -/* - * Maps G.723_16 code words to a set of values whose long and short - * term averages are computed and then compared to give an indication - * how stationary (steady state) the signal is. - */ - -/* Comes from FUNCTF */ -static short _fitab[4] = {0, 0xE00, 0xE00, 0}; - -/* Comes from quantizer decision level tables (Table 7/G.726) - */ -static short qtab_723_16[1] = {261}; - - -/* - * g723_16_encoder() - * - * Encodes a linear PCM, A-law or u-law input sample and returns its 2-bit code. - * Returns -1 if invalid input coding value. - */ -int -g723_16_encoder( - int sl, - G72x_STATE *state_ptr) -{ - short sei, sezi, se, sez; /* ACCUM */ - short d; /* SUBTA */ - short y; /* MIX */ - short sr; /* ADDB */ - short dqsez; /* ADDC */ - short dq, i; - - /* linearize input sample to 14-bit PCM */ - sl >>= 2; /* sl of 14-bit dynamic range */ - - sezi = predictor_zero(state_ptr); - sez = sezi >> 1; - sei = sezi + predictor_pole(state_ptr); - se = sei >> 1; /* se = estimated signal */ - - d = sl - se; /* d = estimation diff. */ - - /* quantize prediction difference d */ - y = step_size(state_ptr); /* quantizer step size */ - i = quantize(d, y, qtab_723_16, 1); /* i = ADPCM code */ - - /* Since quantize() only produces a three level output - * (1, 2, or 3), we must create the fourth one on our own - */ - if (i == 3) /* i code for the zero region */ - if ((d & 0x8000) == 0) /* If d > 0, i=3 isn't right... */ - i = 0; - - dq = reconstruct(i & 2, _dqlntab[i], y); /* quantized diff. */ - - sr = (dq < 0) ? se - (dq & 0x3FFF) : se + dq; /* reconstructed signal */ - - dqsez = sr + sez - se; /* pole prediction diff. */ - - update(2, y, _witab[i], _fitab[i], dq, sr, dqsez, state_ptr); - - return (i); -} - -/* - * g723_16_decoder() - * - * Decodes a 2-bit CCITT G.723_16 ADPCM code and returns - * the resulting 16-bit linear PCM, A-law or u-law sample value. - * -1 is returned if the output coding is unknown. - */ -int -g723_16_decoder( - int i, - G72x_STATE *state_ptr) -{ - short sezi, sei, sez, se; /* ACCUM */ - short y; /* MIX */ - short sr; /* ADDB */ - short dq; - short dqsez; - - i &= 0x03; /* mask to get proper bits */ - sezi = predictor_zero(state_ptr); - sez = sezi >> 1; - sei = sezi + predictor_pole(state_ptr); - se = sei >> 1; /* se = estimated signal */ - - y = step_size(state_ptr); /* adaptive quantizer step size */ - dq = reconstruct(i & 0x02, _dqlntab[i], y); /* unquantize pred diff */ - - sr = (dq < 0) ? (se - (dq & 0x3FFF)) : (se + dq); /* reconst. signal */ - - dqsez = sr - se + sez; /* pole prediction diff. */ - - update(2, y, _witab[i], _fitab[i], dq, sr, dqsez, state_ptr); - - /* sr was of 14-bit dynamic range */ - return (sr << 2); -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: ae265466-c3fc-4f83-bb32-edae488a5ca5 -*/ - diff --git a/libs/libsndfile/src/G72x/g723_24.c b/libs/libsndfile/src/G72x/g723_24.c deleted file mode 100644 index 8748459ac4..0000000000 --- a/libs/libsndfile/src/G72x/g723_24.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * This source code is a product of Sun Microsystems, Inc. and is provided - * for unrestricted use. Users may copy or modify this source code without - * charge. - * - * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING - * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun source code is provided with no support and without any obligation on - * the part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * g723_24.c - * - * Description: - * - * g723_24_encoder(), g723_24_decoder() - * - * These routines comprise an implementation of the CCITT G.723 24 Kbps - * ADPCM coding algorithm. Essentially, this implementation is identical to - * the bit level description except for a few deviations which take advantage - * of workstation attributes, such as hardware 2's complement arithmetic. - * - */ - -#include "g72x.h" -#include "g72x_priv.h" - -/* - * Maps G.723_24 code word to reconstructed scale factor normalized log - * magnitude values. - */ -static short _dqlntab[8] = {-2048, 135, 273, 373, 373, 273, 135, -2048}; - -/* Maps G.723_24 code word to log of scale factor multiplier. */ -static short _witab[8] = {-128, 960, 4384, 18624, 18624, 4384, 960, -128}; - -/* - * Maps G.723_24 code words to a set of values whose long and short - * term averages are computed and then compared to give an indication - * how stationary (steady state) the signal is. - */ -static short _fitab[8] = {0, 0x200, 0x400, 0xE00, 0xE00, 0x400, 0x200, 0}; - -static short qtab_723_24[3] = {8, 218, 331}; - -/* - * g723_24_encoder() - * - * Encodes a linear PCM, A-law or u-law input sample and returns its 3-bit code. - * Returns -1 if invalid input coding value. - */ -int -g723_24_encoder( - int sl, - G72x_STATE *state_ptr) -{ - short sei, sezi, se, sez; /* ACCUM */ - short d; /* SUBTA */ - short y; /* MIX */ - short sr; /* ADDB */ - short dqsez; /* ADDC */ - short dq, i; - - /* linearize input sample to 14-bit PCM */ - sl >>= 2; /* sl of 14-bit dynamic range */ - - sezi = predictor_zero(state_ptr); - sez = sezi >> 1; - sei = sezi + predictor_pole(state_ptr); - se = sei >> 1; /* se = estimated signal */ - - d = sl - se; /* d = estimation diff. */ - - /* quantize prediction difference d */ - y = step_size(state_ptr); /* quantizer step size */ - i = quantize(d, y, qtab_723_24, 3); /* i = ADPCM code */ - dq = reconstruct(i & 4, _dqlntab[i], y); /* quantized diff. */ - - sr = (dq < 0) ? se - (dq & 0x3FFF) : se + dq; /* reconstructed signal */ - - dqsez = sr + sez - se; /* pole prediction diff. */ - - update(3, y, _witab[i], _fitab[i], dq, sr, dqsez, state_ptr); - - return (i); -} - -/* - * g723_24_decoder() - * - * Decodes a 3-bit CCITT G.723_24 ADPCM code and returns - * the resulting 16-bit linear PCM, A-law or u-law sample value. - * -1 is returned if the output coding is unknown. - */ -int -g723_24_decoder( - int i, - G72x_STATE *state_ptr) -{ - short sezi, sei, sez, se; /* ACCUM */ - short y; /* MIX */ - short sr; /* ADDB */ - short dq; - short dqsez; - - i &= 0x07; /* mask to get proper bits */ - sezi = predictor_zero(state_ptr); - sez = sezi >> 1; - sei = sezi + predictor_pole(state_ptr); - se = sei >> 1; /* se = estimated signal */ - - y = step_size(state_ptr); /* adaptive quantizer step size */ - dq = reconstruct(i & 0x04, _dqlntab[i], y); /* unquantize pred diff */ - - sr = (dq < 0) ? (se - (dq & 0x3FFF)) : (se + dq); /* reconst. signal */ - - dqsez = sr - se + sez; /* pole prediction diff. */ - - update(3, y, _witab[i], _fitab[i], dq, sr, dqsez, state_ptr); - - return (sr << 2); /* sr was of 14-bit dynamic range */ -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 75389236-650b-4427-98f3-0df6e8fb24bc -*/ - diff --git a/libs/libsndfile/src/G72x/g723_40.c b/libs/libsndfile/src/G72x/g723_40.c deleted file mode 100644 index 6ddb577dfb..0000000000 --- a/libs/libsndfile/src/G72x/g723_40.c +++ /dev/null @@ -1,160 +0,0 @@ -/* - * This source code is a product of Sun Microsystems, Inc. and is provided - * for unrestricted use. Users may copy or modify this source code without - * charge. - * - * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING - * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun source code is provided with no support and without any obligation on - * the part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * g723_40.c - * - * Description: - * - * g723_40_encoder(), g723_40_decoder() - * - * These routines comprise an implementation of the CCITT G.723 40Kbps - * ADPCM coding algorithm. Essentially, this implementation is identical to - * the bit level description except for a few deviations which - * take advantage of workstation attributes, such as hardware 2's - * complement arithmetic. - * - * The deviation from the bit level specification (lookup tables), - * preserves the bit level performance specifications. - * - * As outlined in the G.723 Recommendation, the algorithm is broken - * down into modules. Each section of code below is preceded by - * the name of the module which it is implementing. - * - */ - -#include "g72x.h" -#include "g72x_priv.h" - -/* - * Maps G.723_40 code word to ructeconstructed scale factor normalized log - * magnitude values. - */ -static short _dqlntab[32] = {-2048, -66, 28, 104, 169, 224, 274, 318, - 358, 395, 429, 459, 488, 514, 539, 566, - 566, 539, 514, 488, 459, 429, 395, 358, - 318, 274, 224, 169, 104, 28, -66, -2048}; - -/* Maps G.723_40 code word to log of scale factor multiplier. */ -static short _witab[32] = {448, 448, 768, 1248, 1280, 1312, 1856, 3200, - 4512, 5728, 7008, 8960, 11456, 14080, 16928, 22272, - 22272, 16928, 14080, 11456, 8960, 7008, 5728, 4512, - 3200, 1856, 1312, 1280, 1248, 768, 448, 448}; - -/* - * Maps G.723_40 code words to a set of values whose long and short - * term averages are computed and then compared to give an indication - * how stationary (steady state) the signal is. - */ -static short _fitab[32] = {0, 0, 0, 0, 0, 0x200, 0x200, 0x200, - 0x200, 0x200, 0x400, 0x600, 0x800, 0xA00, 0xC00, 0xC00, - 0xC00, 0xC00, 0xA00, 0x800, 0x600, 0x400, 0x200, 0x200, - 0x200, 0x200, 0x200, 0, 0, 0, 0, 0}; - -static short qtab_723_40[15] = {-122, -16, 68, 139, 198, 250, 298, 339, - 378, 413, 445, 475, 502, 528, 553}; - -/* - * g723_40_encoder() - * - * Encodes a 16-bit linear PCM, A-law or u-law input sample and retuens - * the resulting 5-bit CCITT G.723 40Kbps code. - * Returns -1 if the input coding value is invalid. - */ -int g723_40_encoder (int sl, G72x_STATE *state_ptr) -{ - short sei, sezi, se, sez; /* ACCUM */ - short d; /* SUBTA */ - short y; /* MIX */ - short sr; /* ADDB */ - short dqsez; /* ADDC */ - short dq, i; - - /* linearize input sample to 14-bit PCM */ - sl >>= 2; /* sl of 14-bit dynamic range */ - - sezi = predictor_zero(state_ptr); - sez = sezi >> 1; - sei = sezi + predictor_pole(state_ptr); - se = sei >> 1; /* se = estimated signal */ - - d = sl - se; /* d = estimation difference */ - - /* quantize prediction difference */ - y = step_size(state_ptr); /* adaptive quantizer step size */ - i = quantize(d, y, qtab_723_40, 15); /* i = ADPCM code */ - - dq = reconstruct(i & 0x10, _dqlntab[i], y); /* quantized diff */ - - sr = (dq < 0) ? se - (dq & 0x7FFF) : se + dq; /* reconstructed signal */ - - dqsez = sr + sez - se; /* dqsez = pole prediction diff. */ - - update(5, y, _witab[i], _fitab[i], dq, sr, dqsez, state_ptr); - - return (i); -} - -/* - * g723_40_decoder() - * - * Decodes a 5-bit CCITT G.723 40Kbps code and returns - * the resulting 16-bit linear PCM, A-law or u-law sample value. - * -1 is returned if the output coding is unknown. - */ -int g723_40_decoder (int i, G72x_STATE *state_ptr) -{ - short sezi, sei, sez, se; /* ACCUM */ - short y ; /* MIX */ - short sr; /* ADDB */ - short dq; - short dqsez; - - i &= 0x1f; /* mask to get proper bits */ - sezi = predictor_zero(state_ptr); - sez = sezi >> 1; - sei = sezi + predictor_pole(state_ptr); - se = sei >> 1; /* se = estimated signal */ - - y = step_size(state_ptr); /* adaptive quantizer step size */ - dq = reconstruct(i & 0x10, _dqlntab[i], y); /* estimation diff. */ - - sr = (dq < 0) ? (se - (dq & 0x7FFF)) : (se + dq); /* reconst. signal */ - - dqsez = sr - se + sez; /* pole prediction diff. */ - - update(5, y, _witab[i], _fitab[i], dq, sr, dqsez, state_ptr); - - return (sr << 2); /* sr was of 14-bit dynamic range */ -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: eb8d9a00-32bf-4dd2-b287-01b0336d72bf -*/ - diff --git a/libs/libsndfile/src/G72x/g72x.c b/libs/libsndfile/src/G72x/g72x.c deleted file mode 100644 index ea01d793d0..0000000000 --- a/libs/libsndfile/src/G72x/g72x.c +++ /dev/null @@ -1,652 +0,0 @@ -/* - * This source code is a product of Sun Microsystems, Inc. and is provided - * for unrestricted use. Users may copy or modify this source code without - * charge. - * - * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING - * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun source code is provided with no support and without any obligation on - * the part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * g72x.c - * - * Common routines for G.721 and G.723 conversions. - */ - -#include -#include -#include - -#include "g72x.h" -#include "g72x_priv.h" - -static G72x_STATE * g72x_state_new (void) ; -static int unpack_bytes (int bits, int blocksize, const unsigned char * block, short * samples) ; -static int pack_bytes (int bits, const short * samples, unsigned char * block) ; - -static -short power2 [15] = -{ 1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80, - 0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000 -} ; - -/* - * quan() - * - * quantizes the input val against the table of size short integers. - * It returns i if table[i - 1] <= val < table[i]. - * - * Using linear search for simple coding. - */ -static -int quan (int val, short *table, int size) -{ - int i; - - for (i = 0; i < size; i++) - if (val < *table++) - break; - return (i); -} - -/* - * fmult() - * - * returns the integer product of the 14-bit integer "an" and - * "floating point" representation (4-bit exponent, 6-bit mantessa) "srn". - */ -static -int fmult (int an, int srn) -{ - short anmag, anexp, anmant; - short wanexp, wanmant; - short retval; - - anmag = (an > 0) ? an : ((-an) & 0x1FFF); - anexp = quan(anmag, power2, 15) - 6; - anmant = (anmag == 0) ? 32 : - (anexp >= 0) ? anmag >> anexp : anmag << -anexp; - wanexp = anexp + ((srn >> 6) & 0xF) - 13; - - /* - ** The original was : - ** wanmant = (anmant * (srn & 0x37) + 0x30) >> 4 ; - ** but could see no valid reason for the + 0x30. - ** Removed it and it improved the SNR of the codec. - */ - - wanmant = (anmant * (srn & 0x37)) >> 4 ; - - retval = (wanexp >= 0) ? ((wanmant << wanexp) & 0x7FFF) : - (wanmant >> -wanexp); - - return (((an ^ srn) < 0) ? -retval : retval); -} - -static G72x_STATE * g72x_state_new (void) -{ return calloc (1, sizeof (G72x_STATE)) ; -} - -/* - * private_init_state() - * - * This routine initializes and/or resets the G72x_PRIVATE structure - * pointed to by 'state_ptr'. - * All the initial state values are specified in the CCITT G.721 document. - */ -void private_init_state (G72x_STATE *state_ptr) -{ - int cnta; - - state_ptr->yl = 34816; - state_ptr->yu = 544; - state_ptr->dms = 0; - state_ptr->dml = 0; - state_ptr->ap = 0; - for (cnta = 0; cnta < 2; cnta++) { - state_ptr->a[cnta] = 0; - state_ptr->pk[cnta] = 0; - state_ptr->sr[cnta] = 32; - } - for (cnta = 0; cnta < 6; cnta++) { - state_ptr->b[cnta] = 0; - state_ptr->dq[cnta] = 32; - } - state_ptr->td = 0; -} /* private_init_state */ - -struct g72x_state * g72x_reader_init (int codec, int *blocksize, int *samplesperblock) -{ G72x_STATE *pstate ; - - if ((pstate = g72x_state_new ()) == NULL) - return NULL ; - - private_init_state (pstate) ; - - pstate->encoder = NULL ; - - switch (codec) - { case G723_16_BITS_PER_SAMPLE : /* 2 bits per sample. */ - pstate->decoder = g723_16_decoder ; - *blocksize = G723_16_BYTES_PER_BLOCK ; - *samplesperblock = G723_16_SAMPLES_PER_BLOCK ; - pstate->codec_bits = 2 ; - pstate->blocksize = G723_16_BYTES_PER_BLOCK ; - pstate->samplesperblock = G723_16_SAMPLES_PER_BLOCK ; - break ; - - case G723_24_BITS_PER_SAMPLE : /* 3 bits per sample. */ - pstate->decoder = g723_24_decoder ; - *blocksize = G723_24_BYTES_PER_BLOCK ; - *samplesperblock = G723_24_SAMPLES_PER_BLOCK ; - pstate->codec_bits = 3 ; - pstate->blocksize = G723_24_BYTES_PER_BLOCK ; - pstate->samplesperblock = G723_24_SAMPLES_PER_BLOCK ; - break ; - - case G721_32_BITS_PER_SAMPLE : /* 4 bits per sample. */ - pstate->decoder = g721_decoder ; - *blocksize = G721_32_BYTES_PER_BLOCK ; - *samplesperblock = G721_32_SAMPLES_PER_BLOCK ; - pstate->codec_bits = 4 ; - pstate->blocksize = G721_32_BYTES_PER_BLOCK ; - pstate->samplesperblock = G721_32_SAMPLES_PER_BLOCK ; - break ; - - case G721_40_BITS_PER_SAMPLE : /* 5 bits per sample. */ - pstate->decoder = g723_40_decoder ; - *blocksize = G721_40_BYTES_PER_BLOCK ; - *samplesperblock = G721_40_SAMPLES_PER_BLOCK ; - pstate->codec_bits = 5 ; - pstate->blocksize = G721_40_BYTES_PER_BLOCK ; - pstate->samplesperblock = G721_40_SAMPLES_PER_BLOCK ; - break ; - - default : - free (pstate) ; - return NULL ; - } ; - - return pstate ; -} /* g72x_reader_init */ - -struct g72x_state * g72x_writer_init (int codec, int *blocksize, int *samplesperblock) -{ G72x_STATE *pstate ; - - if ((pstate = g72x_state_new ()) == NULL) - return NULL ; - - private_init_state (pstate) ; - pstate->decoder = NULL ; - - switch (codec) - { case G723_16_BITS_PER_SAMPLE : /* 2 bits per sample. */ - pstate->encoder = g723_16_encoder ; - *blocksize = G723_16_BYTES_PER_BLOCK ; - *samplesperblock = G723_16_SAMPLES_PER_BLOCK ; - pstate->codec_bits = 2 ; - pstate->blocksize = G723_16_BYTES_PER_BLOCK ; - pstate->samplesperblock = G723_16_SAMPLES_PER_BLOCK ; - break ; - - case G723_24_BITS_PER_SAMPLE : /* 3 bits per sample. */ - pstate->encoder = g723_24_encoder ; - *blocksize = G723_24_BYTES_PER_BLOCK ; - *samplesperblock = G723_24_SAMPLES_PER_BLOCK ; - pstate->codec_bits = 3 ; - pstate->blocksize = G723_24_BYTES_PER_BLOCK ; - pstate->samplesperblock = G723_24_SAMPLES_PER_BLOCK ; - break ; - - case G721_32_BITS_PER_SAMPLE : /* 4 bits per sample. */ - pstate->encoder = g721_encoder ; - *blocksize = G721_32_BYTES_PER_BLOCK ; - *samplesperblock = G721_32_SAMPLES_PER_BLOCK ; - pstate->codec_bits = 4 ; - pstate->blocksize = G721_32_BYTES_PER_BLOCK ; - pstate->samplesperblock = G721_32_SAMPLES_PER_BLOCK ; - break ; - - case G721_40_BITS_PER_SAMPLE : /* 5 bits per sample. */ - pstate->encoder = g723_40_encoder ; - *blocksize = G721_40_BYTES_PER_BLOCK ; - *samplesperblock = G721_40_SAMPLES_PER_BLOCK ; - pstate->codec_bits = 5 ; - pstate->blocksize = G721_40_BYTES_PER_BLOCK ; - pstate->samplesperblock = G721_40_SAMPLES_PER_BLOCK ; - break ; - - default : - free (pstate) ; - return NULL ; - } ; - - return pstate ; -} /* g72x_writer_init */ - -int g72x_decode_block (G72x_STATE *pstate, const unsigned char *block, short *samples) -{ int k, count ; - - count = unpack_bytes (pstate->codec_bits, pstate->blocksize, block, samples) ; - - for (k = 0 ; k < count ; k++) - samples [k] = pstate->decoder (samples [k], pstate) ; - - return 0 ; -} /* g72x_decode_block */ - -int g72x_encode_block (G72x_STATE *pstate, short *samples, unsigned char *block) -{ int k, count ; - - for (k = 0 ; k < pstate->samplesperblock ; k++) - samples [k] = pstate->encoder (samples [k], pstate) ; - - count = pack_bytes (pstate->codec_bits, samples, block) ; - - return count ; -} /* g72x_encode_block */ - -/* - * predictor_zero() - * - * computes the estimated signal from 6-zero predictor. - * - */ -int predictor_zero (G72x_STATE *state_ptr) -{ - int i; - int sezi; - - sezi = fmult(state_ptr->b[0] >> 2, state_ptr->dq[0]); - for (i = 1; i < 6; i++) /* ACCUM */ - sezi += fmult(state_ptr->b[i] >> 2, state_ptr->dq[i]); - return (sezi); -} -/* - * predictor_pole() - * - * computes the estimated signal from 2-pole predictor. - * - */ -int predictor_pole(G72x_STATE *state_ptr) -{ - return (fmult(state_ptr->a[1] >> 2, state_ptr->sr[1]) + - fmult(state_ptr->a[0] >> 2, state_ptr->sr[0])); -} -/* - * step_size() - * - * computes the quantization step size of the adaptive quantizer. - * - */ -int step_size (G72x_STATE *state_ptr) -{ - int y; - int dif; - int al; - - if (state_ptr->ap >= 256) - return (state_ptr->yu); - else { - y = state_ptr->yl >> 6; - dif = state_ptr->yu - y; - al = state_ptr->ap >> 2; - if (dif > 0) - y += (dif * al) >> 6; - else if (dif < 0) - y += (dif * al + 0x3F) >> 6; - return (y); - } -} - -/* - * quantize() - * - * Given a raw sample, 'd', of the difference signal and a - * quantization step size scale factor, 'y', this routine returns the - * ADPCM codeword to which that sample gets quantized. The step - * size scale factor division operation is done in the log base 2 domain - * as a subtraction. - */ -int quantize( - int d, /* Raw difference signal sample */ - int y, /* Step size multiplier */ - short *table, /* quantization table */ - int size) /* table size of short integers */ -{ - short dqm; /* Magnitude of 'd' */ - short expon; /* Integer part of base 2 log of 'd' */ - short mant; /* Fractional part of base 2 log */ - short dl; /* Log of magnitude of 'd' */ - short dln; /* Step size scale factor normalized log */ - int i; - - /* - * LOG - * - * Compute base 2 log of 'd', and store in 'dl'. - */ - dqm = abs(d); - expon = quan(dqm >> 1, power2, 15); - mant = ((dqm << 7) >> expon) & 0x7F; /* Fractional portion. */ - dl = (expon << 7) + mant; - - /* - * SUBTB - * - * "Divide" by step size multiplier. - */ - dln = dl - (y >> 2); - - /* - * QUAN - * - * Obtain codword i for 'd'. - */ - i = quan(dln, table, size); - if (d < 0) /* take 1's complement of i */ - return ((size << 1) + 1 - i); - else if (i == 0) /* take 1's complement of 0 */ - return ((size << 1) + 1); /* new in 1988 */ - else - return (i); -} -/* - * reconstruct() - * - * Returns reconstructed difference signal 'dq' obtained from - * codeword 'i' and quantization step size scale factor 'y'. - * Multiplication is performed in log base 2 domain as addition. - */ -int -reconstruct( - int sign, /* 0 for non-negative value */ - int dqln, /* G.72x codeword */ - int y) /* Step size multiplier */ -{ - short dql; /* Log of 'dq' magnitude */ - short dex; /* Integer part of log */ - short dqt; - short dq; /* Reconstructed difference signal sample */ - - dql = dqln + (y >> 2); /* ADDA */ - - if (dql < 0) { - return ((sign) ? -0x8000 : 0); - } else { /* ANTILOG */ - dex = (dql >> 7) & 15; - dqt = 128 + (dql & 127); - dq = (dqt << 7) >> (14 - dex); - return ((sign) ? (dq - 0x8000) : dq); - } -} - - -/* - * update() - * - * updates the state variables for each output code - */ -void -update( - int code_size, /* distinguish 723_40 with others */ - int y, /* quantizer step size */ - int wi, /* scale factor multiplier */ - int fi, /* for long/short term energies */ - int dq, /* quantized prediction difference */ - int sr, /* reconstructed signal */ - int dqsez, /* difference from 2-pole predictor */ - G72x_STATE *state_ptr) /* coder state pointer */ -{ - int cnt; - short mag, expon; /* Adaptive predictor, FLOAT A */ - short a2p = 0; /* LIMC */ - short a1ul; /* UPA1 */ - short pks1; /* UPA2 */ - short fa1; - char tr; /* tone/transition detector */ - short ylint, thr2, dqthr; - short ylfrac, thr1; - short pk0; - - pk0 = (dqsez < 0) ? 1 : 0; /* needed in updating predictor poles */ - - mag = dq & 0x7FFF; /* prediction difference magnitude */ - /* TRANS */ - ylint = state_ptr->yl >> 15; /* exponent part of yl */ - ylfrac = (state_ptr->yl >> 10) & 0x1F; /* fractional part of yl */ - thr1 = (32 + ylfrac) << ylint; /* threshold */ - thr2 = (ylint > 9) ? 31 << 10 : thr1; /* limit thr2 to 31 << 10 */ - dqthr = (thr2 + (thr2 >> 1)) >> 1; /* dqthr = 0.75 * thr2 */ - if (state_ptr->td == 0) /* signal supposed voice */ - tr = 0; - else if (mag <= dqthr) /* supposed data, but small mag */ - tr = 0; /* treated as voice */ - else /* signal is data (modem) */ - tr = 1; - - /* - * Quantizer scale factor adaptation. - */ - - /* FUNCTW & FILTD & DELAY */ - /* update non-steady state step size multiplier */ - state_ptr->yu = y + ((wi - y) >> 5); - - /* LIMB */ - if (state_ptr->yu < 544) /* 544 <= yu <= 5120 */ - state_ptr->yu = 544; - else if (state_ptr->yu > 5120) - state_ptr->yu = 5120; - - /* FILTE & DELAY */ - /* update steady state step size multiplier */ - state_ptr->yl += state_ptr->yu + ((-state_ptr->yl) >> 6); - - /* - * Adaptive predictor coefficients. - */ - if (tr == 1) { /* reset a's and b's for modem signal */ - state_ptr->a[0] = 0; - state_ptr->a[1] = 0; - state_ptr->b[0] = 0; - state_ptr->b[1] = 0; - state_ptr->b[2] = 0; - state_ptr->b[3] = 0; - state_ptr->b[4] = 0; - state_ptr->b[5] = 0; - } else { /* update a's and b's */ - pks1 = pk0 ^ state_ptr->pk[0]; /* UPA2 */ - - /* update predictor pole a[1] */ - a2p = state_ptr->a[1] - (state_ptr->a[1] >> 7); - if (dqsez != 0) { - fa1 = (pks1) ? state_ptr->a[0] : -state_ptr->a[0]; - if (fa1 < -8191) /* a2p = function of fa1 */ - a2p -= 0x100; - else if (fa1 > 8191) - a2p += 0xFF; - else - a2p += fa1 >> 5; - - if (pk0 ^ state_ptr->pk[1]) - { /* LIMC */ - if (a2p <= -12160) - a2p = -12288; - else if (a2p >= 12416) - a2p = 12288; - else - a2p -= 0x80; - } - else if (a2p <= -12416) - a2p = -12288; - else if (a2p >= 12160) - a2p = 12288; - else - a2p += 0x80; - } - - /* TRIGB & DELAY */ - state_ptr->a[1] = a2p; - - /* UPA1 */ - /* update predictor pole a[0] */ - state_ptr->a[0] -= state_ptr->a[0] >> 8; - if (dqsez != 0) - { if (pks1 == 0) - state_ptr->a[0] += 192; - else - state_ptr->a[0] -= 192; - } ; - - /* LIMD */ - a1ul = 15360 - a2p; - if (state_ptr->a[0] < -a1ul) - state_ptr->a[0] = -a1ul; - else if (state_ptr->a[0] > a1ul) - state_ptr->a[0] = a1ul; - - /* UPB : update predictor zeros b[6] */ - for (cnt = 0; cnt < 6; cnt++) { - if (code_size == 5) /* for 40Kbps G.723 */ - state_ptr->b[cnt] -= state_ptr->b[cnt] >> 9; - else /* for G.721 and 24Kbps G.723 */ - state_ptr->b[cnt] -= state_ptr->b[cnt] >> 8; - if (dq & 0x7FFF) { /* XOR */ - if ((dq ^ state_ptr->dq[cnt]) >= 0) - state_ptr->b[cnt] += 128; - else - state_ptr->b[cnt] -= 128; - } - } - } - - for (cnt = 5; cnt > 0; cnt--) - state_ptr->dq[cnt] = state_ptr->dq[cnt-1]; - /* FLOAT A : convert dq[0] to 4-bit exp, 6-bit mantissa f.p. */ - if (mag == 0) { - state_ptr->dq[0] = (dq >= 0) ? 0x20 : 0xFC20; - } else { - expon = quan(mag, power2, 15); - state_ptr->dq[0] = (dq >= 0) ? - (expon << 6) + ((mag << 6) >> expon) : - (expon << 6) + ((mag << 6) >> expon) - 0x400; - } - - state_ptr->sr[1] = state_ptr->sr[0]; - /* FLOAT B : convert sr to 4-bit exp., 6-bit mantissa f.p. */ - if (sr == 0) { - state_ptr->sr[0] = 0x20; - } else if (sr > 0) { - expon = quan(sr, power2, 15); - state_ptr->sr[0] = (expon << 6) + ((sr << 6) >> expon); - } else if (sr > -32768) { - mag = -sr; - expon = quan(mag, power2, 15); - state_ptr->sr[0] = (expon << 6) + ((mag << 6) >> expon) - 0x400; - } else - state_ptr->sr[0] = (short) 0xFC20; - - /* DELAY A */ - state_ptr->pk[1] = state_ptr->pk[0]; - state_ptr->pk[0] = pk0; - - /* TONE */ - if (tr == 1) /* this sample has been treated as data */ - state_ptr->td = 0; /* next one will be treated as voice */ - else if (a2p < -11776) /* small sample-to-sample correlation */ - state_ptr->td = 1; /* signal may be data */ - else /* signal is voice */ - state_ptr->td = 0; - - /* - * Adaptation speed control. - */ - state_ptr->dms += (fi - state_ptr->dms) >> 5; /* FILTA */ - state_ptr->dml += (((fi << 2) - state_ptr->dml) >> 7); /* FILTB */ - - if (tr == 1) - state_ptr->ap = 256; - else if (y < 1536) /* SUBTC */ - state_ptr->ap += (0x200 - state_ptr->ap) >> 4; - else if (state_ptr->td == 1) - state_ptr->ap += (0x200 - state_ptr->ap) >> 4; - else if (abs((state_ptr->dms << 2) - state_ptr->dml) >= - (state_ptr->dml >> 3)) - state_ptr->ap += (0x200 - state_ptr->ap) >> 4; - else - state_ptr->ap += (-state_ptr->ap) >> 4; - - return ; -} /* update */ - -/*------------------------------------------------------------------------------ -*/ - -static int -unpack_bytes (int bits, int blocksize, const unsigned char * block, short * samples) -{ unsigned int in_buffer = 0 ; - unsigned char in_byte ; - int k, in_bits = 0, bindex = 0 ; - - for (k = 0 ; bindex <= blocksize && k < G72x_BLOCK_SIZE ; k++) - { if (in_bits < bits) - { in_byte = block [bindex++] ; - - in_buffer |= (in_byte << in_bits); - in_bits += 8; - } - samples [k] = in_buffer & ((1 << bits) - 1); - in_buffer >>= bits; - in_bits -= bits; - } ; - - return k ; -} /* unpack_bytes */ - -static int -pack_bytes (int bits, const short * samples, unsigned char * block) -{ - unsigned int out_buffer = 0 ; - int k, bindex = 0, out_bits = 0 ; - unsigned char out_byte ; - - for (k = 0 ; k < G72x_BLOCK_SIZE ; k++) - { out_buffer |= (samples [k] << out_bits) ; - out_bits += bits ; - if (out_bits >= 8) - { out_byte = out_buffer & 0xFF ; - out_bits -= 8 ; - out_buffer >>= 8 ; - block [bindex++] = out_byte ; - } - } ; - - return bindex ; -} /* pack_bytes */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 6298dc75-fd0f-4062-9b90-f73ed69f22d4 -*/ - diff --git a/libs/libsndfile/src/G72x/g72x.h b/libs/libsndfile/src/G72x/g72x.h deleted file mode 100644 index e6319e6248..0000000000 --- a/libs/libsndfile/src/G72x/g72x.h +++ /dev/null @@ -1,99 +0,0 @@ -/* -** Copyright (C) 1999-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -/* -** This file is not the same as the original file from Sun Microsystems. Nearly -** all the original definitions and function prototypes that were in the file -** of this name have been moved to g72x_priv.h. -*/ - -#ifndef G72X_HEADER_FILE -#define G72X_HEADER_FILE - -/* -** Number of samples per block to process. -** Must be a common multiple of possible bits per sample : 2, 3, 4, 5 and 8. -*/ -#define G72x_BLOCK_SIZE (3 * 5 * 8) - -/* -** Identifiers for the differing kinds of G72x ADPCM codecs. -** The identifiers also define the number of encoded bits per sample. -*/ - -enum -{ G723_16_BITS_PER_SAMPLE = 2, - G723_24_BITS_PER_SAMPLE = 3, - G723_40_BITS_PER_SAMPLE = 5, - - G721_32_BITS_PER_SAMPLE = 4, - G721_40_BITS_PER_SAMPLE = 5, - - G723_16_SAMPLES_PER_BLOCK = G72x_BLOCK_SIZE, - G723_24_SAMPLES_PER_BLOCK = G723_24_BITS_PER_SAMPLE * (G72x_BLOCK_SIZE / G723_24_BITS_PER_SAMPLE), - G723_40_SAMPLES_PER_BLOCK = G723_40_BITS_PER_SAMPLE * (G72x_BLOCK_SIZE / G723_40_BITS_PER_SAMPLE), - - G721_32_SAMPLES_PER_BLOCK = G72x_BLOCK_SIZE, - G721_40_SAMPLES_PER_BLOCK = G721_40_BITS_PER_SAMPLE * (G72x_BLOCK_SIZE / G721_40_BITS_PER_SAMPLE), - - G723_16_BYTES_PER_BLOCK = (G723_16_BITS_PER_SAMPLE * G72x_BLOCK_SIZE) / 8, - G723_24_BYTES_PER_BLOCK = (G723_24_BITS_PER_SAMPLE * G72x_BLOCK_SIZE) / 8, - G723_40_BYTES_PER_BLOCK = (G723_40_BITS_PER_SAMPLE * G72x_BLOCK_SIZE) / 8, - - G721_32_BYTES_PER_BLOCK = (G721_32_BITS_PER_SAMPLE * G72x_BLOCK_SIZE) / 8, - G721_40_BYTES_PER_BLOCK = (G721_40_BITS_PER_SAMPLE * G72x_BLOCK_SIZE) / 8 -} ; - -/* Forward declaration of of g72x_state. */ - -struct g72x_state ; - -/* External function definitions. */ - -struct g72x_state * g72x_reader_init (int codec, int *blocksize, int *samplesperblock) ; -struct g72x_state * g72x_writer_init (int codec, int *blocksize, int *samplesperblock) ; -/* -** Initialize the ADPCM state table for the given codec. -** Return 0 on success, 1 on fail. -*/ - -int g72x_decode_block (struct g72x_state *pstate, const unsigned char *block, short *samples) ; -/* -** The caller fills data->block with data->bytes bytes before calling the -** function. The value data->bytes must be an integer multiple of -** data->blocksize and be <= data->max_bytes. -** When it returns, the caller can read out data->samples samples. -*/ - -int g72x_encode_block (struct g72x_state *pstate, short *samples, unsigned char *block) ; -/* -** The caller fills state->samples some integer multiple data->samples_per_block -** (up to G72x_BLOCK_SIZE) samples before calling the function. -** When it returns, the caller can read out bytes encoded bytes. -*/ - -#endif /* !G72X_HEADER_FILE */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 6ca84e5f-f932-4ba1-87ee-37056d921621 -*/ - diff --git a/libs/libsndfile/src/G72x/g72x_priv.h b/libs/libsndfile/src/G72x/g72x_priv.h deleted file mode 100644 index a88e96d0da..0000000000 --- a/libs/libsndfile/src/G72x/g72x_priv.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * This source code is a product of Sun Microsystems, Inc. and is provided - * for unrestricted use. Users may copy or modify this source code without - * charge. - * - * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING - * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun source code is provided with no support and without any obligation on - * the part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -#ifndef G72X_PRIVATE_H -#define G72X_PRIVATE_H - -#ifdef __cplusplus -#error "This code is not designed to be compiled with a C++ compiler." -#endif - -/* -** The following is the definition of the state structure used by the -** G.721/G.723 encoder and decoder to preserve their internal state -** between successive calls. The meanings of the majority of the state -** structure fields are explained in detail in the CCITT Recommendation -** G.721. The field names are essentially identical to variable names -** in the bit level description of the coding algorithm included in this -** Recommendation. -*/ - -struct g72x_state -{ long yl; /* Locked or steady state step size multiplier. */ - short yu; /* Unlocked or non-steady state step size multiplier. */ - short dms; /* Short term energy estimate. */ - short dml; /* Long term energy estimate. */ - short ap; /* Linear weighting coefficient of 'yl' and 'yu'. */ - - short a[2]; /* Coefficients of pole portion of prediction filter. */ - short b[6]; /* Coefficients of zero portion of prediction filter. */ - short pk[2]; /* - ** Signs of previous two samples of a partially - ** reconstructed signal. - **/ - short dq[6]; /* - ** Previous 6 samples of the quantized difference - ** signal represented in an internal floating point - ** format. - **/ - short sr[2]; /* - ** Previous 2 samples of the quantized difference - ** signal represented in an internal floating point - ** format. - */ - char td; /* delayed tone detect, new in 1988 version */ - - /* The following struct members were added for libsndfile. The original - ** code worked by calling a set of functions on a sample by sample basis - ** which is slow on architectures like Intel x86. For libsndfile, this - ** was changed so that the encoding and decoding routines could work on - ** a block of samples at a time to reduce the function call overhead. - */ - int (*encoder) (int, struct g72x_state* state) ; - int (*decoder) (int, struct g72x_state* state) ; - - int codec_bits, blocksize, samplesperblock ; -} ; - -typedef struct g72x_state G72x_STATE ; - -int predictor_zero (G72x_STATE *state_ptr); - -int predictor_pole (G72x_STATE *state_ptr); - -int step_size (G72x_STATE *state_ptr); - -int quantize (int d, int y, short *table, int size); - -int reconstruct (int sign, int dqln, int y); - -void update (int code_size, int y, int wi, int fi, int dq, int sr, int dqsez, G72x_STATE *state_ptr); - -int g721_encoder (int sample, G72x_STATE *state_ptr); -int g721_decoder (int code, G72x_STATE *state_ptr); - -int g723_16_encoder (int sample, G72x_STATE *state_ptr); -int g723_16_decoder (int code, G72x_STATE *state_ptr); - -int g723_24_encoder (int sample, G72x_STATE *state_ptr); -int g723_24_decoder (int code, G72x_STATE *state_ptr); - -int g723_40_encoder (int sample, G72x_STATE *state_ptr); -int g723_40_decoder (int code, G72x_STATE *state_ptr); - -void private_init_state (G72x_STATE *state_ptr) ; - -#endif /* G72X_PRIVATE_H */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: d9ad4da7-0fa3-471d-8020-720b5cfb5e5b -*/ - diff --git a/libs/libsndfile/src/G72x/g72x_test.c b/libs/libsndfile/src/G72x/g72x_test.c deleted file mode 100644 index caf58467b7..0000000000 --- a/libs/libsndfile/src/G72x/g72x_test.c +++ /dev/null @@ -1,222 +0,0 @@ -/* -** Copyright (C) 1999-2004 Erik de Castro Lopo -** -** 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. -*/ - -#include -#include -#include -#include -#include - -#include "g72x.h" -#include "g72x_priv.h" - -#ifndef M_PI -#define M_PI 3.14159265358979323846264338 -#endif - -#define BUFFER_SIZE (1<<14) /* Should be (1<<14) */ -#define SAMPLE_RATE 11025 - - -static void g721_test (void) ; -static void g723_test (double margin) ; - -static void gen_signal_double (double *data, double scale, int datalen) ; -static int error_function (double data, double orig, double margin) ; - -static int oct_save_short (short *a, short *b, int len) ; - -int -main (int argc, char *argv []) -{ int bDoAll = 0 ; - int nTests = 0 ; - - if (argc != 2) - { printf ("Usage : %s \n", argv [0]) ; - printf (" Where is one of the following:\n") ; - printf (" g721 - test G721 encoder and decoder\n") ; - printf (" g723 - test G721 encoder and decoder\n") ; - printf (" all - perform all tests\n") ; - exit (1) ; - } ; - - bDoAll=!strcmp (argv [1], "all"); - - if (bDoAll || ! strcmp (argv [1], "g721")) - { g721_test () ; - nTests++ ; - } ; - - if (bDoAll || ! strcmp (argv [1], "g723")) - { g723_test (0.53) ; - nTests++ ; - } ; - - if (nTests == 0) - { printf ("Mono : ************************************\n") ; - printf ("Mono : * No '%s' test defined.\n", argv [1]) ; - printf ("Mono : ************************************\n") ; - return 1 ; - } ; - - return 0 ; -} /* main */ - -static void -g721_test (void) -{ - return ; -} /* g721_test */ - -static void -g723_test (double margin) -{ static double orig_buffer [BUFFER_SIZE] ; - static short orig [BUFFER_SIZE] ; - static short data [BUFFER_SIZE] ; - - G72x_STATE encoder_state, decoder_state ; - - long k ; - int code, position, max_err ; - - private_init_state (&encoder_state) ; - encoder_state.encoder = g723_24_encoder ; - encoder_state.codec_bits = 3 ; - - private_init_state (&decoder_state) ; - decoder_state.decoder = g723_24_decoder ; - decoder_state.codec_bits = 3 ; - - memset (data, 0, BUFFER_SIZE * sizeof (short)) ; - memset (orig, 0, BUFFER_SIZE * sizeof (short)) ; - - printf (" g723_test : ") ; - fflush (stdout) ; - - gen_signal_double (orig_buffer, 32000.0, BUFFER_SIZE) ; - for (k = 0 ; k < BUFFER_SIZE ; k++) - orig [k] = (short) orig_buffer [k] ; - - /* Write and read data here. */ - position = 0 ; - max_err = 0 ; - for (k = 0 ; k < BUFFER_SIZE ; k++) - { code = encoder_state.encoder (orig [k], &encoder_state) ; - data [k] = decoder_state.decoder (code, &decoder_state) ; - if (abs (orig [k] - data [k]) > max_err) - { position = k ; - max_err = abs (orig [k] - data [k]) ; - } ; - } ; - - printf ("\n\nMax error of %d at postion %d.\n", max_err, position) ; - - for (k = 0 ; k < BUFFER_SIZE ; k++) - { if (error_function (data [k], orig [k], margin)) - { printf ("Line %d: Incorrect sample A (#%ld : %d should be %d).\n", __LINE__, k, data [k], orig [k]) ; - oct_save_short (orig, data, BUFFER_SIZE) ; - exit (1) ; - } ; - } ; - - - printf ("ok\n") ; - - return ; -} /* g723_test */ - - -#define SIGNAL_MAXVAL 30000.0 -#define DECAY_COUNT 1000 - -static void -gen_signal_double (double *gendata, double scale, int gendatalen) -{ int k, ramplen ; - double amp = 0.0 ; - - ramplen = DECAY_COUNT ; - - for (k = 0 ; k < gendatalen ; k++) - { if (k <= ramplen) - amp = scale * k / ((double) ramplen) ; - else if (k > gendatalen - ramplen) - amp = scale * (gendatalen - k) / ((double) ramplen) ; - - gendata [k] = amp * (0.4 * sin (33.3 * 2.0 * M_PI * ((double) (k+1)) / ((double) SAMPLE_RATE)) - + 0.3 * cos (201.1 * 2.0 * M_PI * ((double) (k+1)) / ((double) SAMPLE_RATE))) ; - } ; - - return ; -} /* gen_signal_double */ - -static int -error_function (double data, double orig, double margin) -{ double error ; - - if (fabs (orig) <= 500.0) - error = fabs (fabs (data) - fabs(orig)) / 2000.0 ; - else if (fabs (orig) <= 1000.0) - error = fabs (data - orig) / 3000.0 ; - else - error = fabs (data - orig) / fabs (orig) ; - - if (error > margin) - { printf ("\n\n*******************\nError : %f\n", error) ; - return 1 ; - } ; - return 0 ; -} /* error_function */ - -static int -oct_save_short (short *a, short *b, int len) -{ FILE *file ; - int k ; - - if (! (file = fopen ("error.dat", "w"))) - return 1 ; - - fprintf (file, "# Not created by Octave\n") ; - - fprintf (file, "# name: a\n") ; - fprintf (file, "# type: matrix\n") ; - fprintf (file, "# rows: %d\n", len) ; - fprintf (file, "# columns: 1\n") ; - - for (k = 0 ; k < len ; k++) - fprintf (file, "% d\n", a [k]) ; - - fprintf (file, "# name: b\n") ; - fprintf (file, "# type: matrix\n") ; - fprintf (file, "# rows: %d\n", len) ; - fprintf (file, "# columns: 1\n") ; - - for (k = 0 ; k < len ; k++) - fprintf (file, "% d\n", b [k]) ; - - fclose (file) ; - return 0 ; -} /* oct_save_short */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 0597b442-a5b0-4abf-92a4-92f6c24e85a6 -*/ - diff --git a/libs/libsndfile/src/GSM610/COPYRIGHT b/libs/libsndfile/src/GSM610/COPYRIGHT deleted file mode 100644 index eba0e523bb..0000000000 --- a/libs/libsndfile/src/GSM610/COPYRIGHT +++ /dev/null @@ -1,16 +0,0 @@ -Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann, -Technische Universitaet Berlin - -Any use of this software is permitted provided that this notice is not -removed and that neither the authors nor the Technische Universitaet Berlin -are deemed to have made any representations as to the suitability of this -software for any purpose nor are held responsible for any defects of -this software. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - -As a matter of courtesy, the authors request to be informed about uses -this software has found, about bugs in this software, and about any -improvements that may be of general interest. - -Berlin, 28.11.1994 -Jutta Degener -Carsten Bormann diff --git a/libs/libsndfile/src/GSM610/ChangeLog b/libs/libsndfile/src/GSM610/ChangeLog deleted file mode 100644 index 24f524882d..0000000000 --- a/libs/libsndfile/src/GSM610/ChangeLog +++ /dev/null @@ -1,56 +0,0 @@ -2004-05-12 Erik de Castro Lopo - - * gsm610_priv.h - Replace ugly macros with inline functions. - - * *.c - Remove temporary variables used by macros and other minor fixes required by - above change. - -2003-06-02 Erik de Castro Lopo - - * rpe.c - Renamed variables "exp" to "expon" to avoid shadowed parameter warnigns. - -2002-06-08 Erik de Castro Lopo - - * long_term.c - Changes tp removed compiler warnings about shadowed parameters. - -2002-06-08 Erik de Castro Lopo - - * private.h - Made declarations of gsm_A, gsm_B, gsm_MIC etc extern. This fixed a compile - problem on MacOSX. - -2002-05-10 Erik de Castro Lopo - - * *.[ch] - Removed all pre-ANSI prototype kludges. Removed proto.h and unproto.h. - Started work on making GSM 6.10 files seekable. Currently they are not. - - * code.c private.h - Function Gsm_Coder () used a statically defined array. This was obviously - not re-entrant so moved it to struct gsm_state. - -2001-09-16 Erik de Castro Lopo - - * code.c - Added #includes for string.h and stdlib.h. - -2000-10-27 Erik de Castro Lopo - - * config.h - Removed some commented out #defines (ie //*efine) which were causing problems on - the Sun cc compiler. - -2000-02-29 Erik de Castro Lopo - - * private.h - Added #defines to emulate normal compile time options. - -2000-02-28 Erik de Castro Lopo - - * everthing - Created this directory and copied files from libgsm. - http://kbs.cs.tu-berlin.de/~jutta/toast.html diff --git a/libs/libsndfile/src/GSM610/README b/libs/libsndfile/src/GSM610/README deleted file mode 100644 index b57132b051..0000000000 --- a/libs/libsndfile/src/GSM610/README +++ /dev/null @@ -1,36 +0,0 @@ -GSM 06.10 13 kbit/s RPE/LTP speech codec ----------------------------------------- - -All the file in this directory were written by Jutta Degener -and Carsten Borman for The Communications and Operating Systems -Research Group (KBS) at the Technische Universitaet Berlin. - -Their work was released under the following license which is -assumed to be compatible with The GNU Lesser General Public License. - ----------------------------------------------------------------------------- - -Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann, -Technische Universitaet Berlin - -Any use of this software is permitted provided that this notice is not -removed and that neither the authors nor the Technische Universitaet Berlin -are deemed to have made any representations as to the suitability of this -software for any purpose nor are held responsible for any defects of -this software. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - -As a matter of courtesy, the authors request to be informed about uses -this software has found, about bugs in this software, and about any -improvements that may be of general interest. - -Berlin, 28.11.1994 -Jutta Degener (jutta@cs.tu-berlin.de) -Carsten Bormann (cabo@cs.tu-berlin.de) - ----------------------------------------------------------------------------- - -Jutta Degener and Carsten Bormann's work can be found on their homepage -at: - - http://kbs.cs.tu-berlin.de/~jutta/toast.html - diff --git a/libs/libsndfile/src/GSM610/add.c b/libs/libsndfile/src/GSM610/add.c deleted file mode 100644 index fbf7cf147d..0000000000 --- a/libs/libsndfile/src/GSM610/add.c +++ /dev/null @@ -1,248 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - -/* - * See private.h for the more commonly used macro versions. - */ - -#include -#include - -#include "gsm610_priv.h" -#include "gsm.h" - -#define saturate(x) \ - ((x) < MIN_WORD ? MIN_WORD : (x) > MAX_WORD ? MAX_WORD: (x)) - -word gsm_add ( word a, word b) -{ - longword sum = (longword)a + (longword)b; - return saturate(sum); -} - -word gsm_sub ( word a, word b) -{ - longword diff = (longword)a - (longword)b; - return saturate(diff); -} - -word gsm_mult ( word a, word b) -{ - if (a == MIN_WORD && b == MIN_WORD) - return MAX_WORD; - - return SASR_L( (longword)a * (longword)b, 15 ); -} - -word gsm_mult_r ( word a, word b) -{ - if (b == MIN_WORD && a == MIN_WORD) return MAX_WORD; - else { - longword prod = (longword)a * (longword)b + 16384; - prod >>= 15; - return prod & 0xFFFF; - } -} - -word gsm_abs (word a) -{ - return a < 0 ? (a == MIN_WORD ? MAX_WORD : -a) : a; -} - -longword gsm_L_mult (word a, word b) -{ - assert( a != MIN_WORD || b != MIN_WORD ); - return ((longword)a * (longword)b) << 1; -} - -longword gsm_L_add ( longword a, longword b) -{ - if (a < 0) { - if (b >= 0) return a + b; - else { - ulongword A = (ulongword)-(a + 1) + (ulongword)-(b + 1); - return A >= MAX_LONGWORD ? MIN_LONGWORD :-(longword)A-2; - } - } - else if (b <= 0) return a + b; - else { - ulongword A = (ulongword)a + (ulongword)b; - return A > MAX_LONGWORD ? MAX_LONGWORD : A; - } -} - -longword gsm_L_sub ( longword a, longword b) -{ - if (a >= 0) { - if (b >= 0) return a - b; - else { - /* a>=0, b<0 */ - - ulongword A = (ulongword)a + -(b + 1); - return A >= MAX_LONGWORD ? MAX_LONGWORD : (A + 1); - } - } - else if (b <= 0) return a - b; - else { - /* a<0, b>0 */ - - ulongword A = (ulongword)-(a + 1) + b; - return A >= MAX_LONGWORD ? MIN_LONGWORD : -(longword)A - 1; - } -} - -static unsigned char const bitoff[ 256 ] = { - 8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - -word gsm_norm (longword a ) -/* - * the number of left shifts needed to normalize the 32 bit - * variable L_var1 for positive values on the interval - * - * with minimum of - * minimum of 1073741824 (01000000000000000000000000000000) and - * maximum of 2147483647 (01111111111111111111111111111111) - * - * - * and for negative values on the interval with - * minimum of -2147483648 (-10000000000000000000000000000000) and - * maximum of -1073741824 ( -1000000000000000000000000000000). - * - * in order to normalize the result, the following - * operation must be done: L_norm_var1 = L_var1 << norm( L_var1 ); - * - * (That's 'ffs', only from the left, not the right..) - */ -{ - assert(a != 0); - - if (a < 0) { - if (a <= -1073741824) return 0; - a = ~a; - } - - return a & 0xffff0000 - ? ( a & 0xff000000 - ? -1 + bitoff[ 0xFF & (a >> 24) ] - : 7 + bitoff[ 0xFF & (a >> 16) ] ) - : ( a & 0xff00 - ? 15 + bitoff[ 0xFF & (a >> 8) ] - : 23 + bitoff[ 0xFF & a ] ); -} - -longword gsm_L_asl (longword a, int n) -{ - if (n >= 32) return 0; - if (n <= -32) return -(a < 0); - if (n < 0) return gsm_L_asr(a, -n); - return a << n; -} - -word gsm_asr (word a, int n) -{ - if (n >= 16) return -(a < 0); - if (n <= -16) return 0; - if (n < 0) return a << -n; - - return SASR_W (a, (word) n); -} - -word gsm_asl (word a, int n) -{ - if (n >= 16) return 0; - if (n <= -16) return -(a < 0); - if (n < 0) return gsm_asr(a, -n); - return a << n; -} - -longword gsm_L_asr (longword a, int n) -{ - if (n >= 32) return -(a < 0); - if (n <= -32) return 0; - if (n < 0) return a << -n; - - return SASR_L (a, (word) n); -} - -/* -** word gsm_asr (word a, int n) -** { -** if (n >= 16) return -(a < 0); -** if (n <= -16) return 0; -** if (n < 0) return a << -n; -** -** # ifdef SASR_W -** return a >> n; -** # else -** if (a >= 0) return a >> n; -** else return -(word)( -(uword)a >> n ); -** # endif -** } -** -*/ -/* - * (From p. 46, end of section 4.2.5) - * - * NOTE: The following lines gives [sic] one correct implementation - * of the div(num, denum) arithmetic operation. Compute div - * which is the integer division of num by denum: with denum - * >= num > 0 - */ - -word gsm_div (word num, word denum) -{ - longword L_num = num; - longword L_denum = denum; - word div = 0; - int k = 15; - - /* The parameter num sometimes becomes zero. - * Although this is explicitly guarded against in 4.2.5, - * we assume that the result should then be zero as well. - */ - - /* assert(num != 0); */ - - assert(num >= 0 && denum >= num); - if (num == 0) - return 0; - - while (k--) { - div <<= 1; - L_num <<= 1; - - if (L_num >= L_denum) { - L_num -= L_denum; - div++; - } - } - - return div; -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: a7398579-e2e1-4733-aa2d-4c6efc0c58ff -*/ - diff --git a/libs/libsndfile/src/GSM610/code.c b/libs/libsndfile/src/GSM610/code.c deleted file mode 100644 index 02ec75bf12..0000000000 --- a/libs/libsndfile/src/GSM610/code.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - - -#include -#include - -#include "config.h" - -#include "gsm610_priv.h" -#include "gsm.h" - -/* - * 4.2 FIXED POINT IMPLEMENTATION OF THE RPE-LTP CODER - */ - -void Gsm_Coder ( - - struct gsm_state * State, - - word * s, /* [0..159] samples IN */ - -/* - * The RPE-LTD coder works on a frame by frame basis. The length of - * the frame is equal to 160 samples. Some computations are done - * once per frame to produce at the output of the coder the - * LARc[1..8] parameters which are the coded LAR coefficients and - * also to realize the inverse filtering operation for the entire - * frame (160 samples of signal d[0..159]). These parts produce at - * the output of the coder: - */ - - word * LARc, /* [0..7] LAR coefficients OUT */ - -/* - * Procedure 4.2.11 to 4.2.18 are to be executed four times per - * frame. That means once for each sub-segment RPE-LTP analysis of - * 40 samples. These parts produce at the output of the coder: - */ - - word * Nc, /* [0..3] LTP lag OUT */ - word * bc, /* [0..3] coded LTP gain OUT */ - word * Mc, /* [0..3] RPE grid selection OUT */ - word * xmaxc,/* [0..3] Coded maximum amplitude OUT */ - word * xMc /* [13*4] normalized RPE samples OUT */ -) -{ - int k; - word * dp = State->dp0 + 120; /* [ -120...-1 ] */ - word * dpp = dp; /* [ 0...39 ] */ - - word so[160]; - - Gsm_Preprocess (State, s, so); - Gsm_LPC_Analysis (State, so, LARc); - Gsm_Short_Term_Analysis_Filter (State, LARc, so); - - for (k = 0; k <= 3; k++, xMc += 13) { - - Gsm_Long_Term_Predictor ( State, - so+k*40, /* d [0..39] IN */ - dp, /* dp [-120..-1] IN */ - State->e + 5, /* e [0..39] OUT */ - dpp, /* dpp [0..39] OUT */ - Nc++, - bc++); - - Gsm_RPE_Encoding ( /*-S,-*/ - State->e + 5, /* e ][0..39][ IN/OUT */ - xmaxc++, Mc++, xMc ); - /* - * Gsm_Update_of_reconstructed_short_time_residual_signal - * ( dpp, e + 5, dp ); - */ - - { register int i; - for (i = 0; i <= 39; i++) - dp[ i ] = GSM_ADD( State->e[5 + i], dpp[i] ); - } - dp += 40; - dpp += 40; - - } - (void)memcpy( (char *)State->dp0, (char *)(State->dp0 + 160), - 120 * sizeof(*State->dp0) ); -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: ae8ef1b2-5a1e-4263-94cd-42b15dca81a3 -*/ - diff --git a/libs/libsndfile/src/GSM610/config.h b/libs/libsndfile/src/GSM610/config.h deleted file mode 100644 index 23ac5ad08d..0000000000 --- a/libs/libsndfile/src/GSM610/config.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - -#ifndef CONFIG_H -#define CONFIG_H - -#define HAS_STDLIB_H 1 /* /usr/include/stdlib.h */ -#define HAS_FCNTL_H 1 /* /usr/include/fcntl.h */ - -#define HAS_FSTAT 1 /* fstat syscall */ -#define HAS_FCHMOD 1 /* fchmod syscall */ -#define HAS_CHMOD 1 /* chmod syscall */ -#define HAS_FCHOWN 1 /* fchown syscall */ -#define HAS_CHOWN 1 /* chown syscall */ - -#define HAS_STRING_H 1 /* /usr/include/string.h */ - -#define HAS_UNISTD_H 1 /* /usr/include/unistd.h */ -#define HAS_UTIME 1 /* POSIX utime(path, times) */ -#define HAS_UTIME_H 1 /* UTIME header file */ - -#endif /* CONFIG_H */ -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 5338dfef-8e59-4f51-af47-627c9ea85353 -*/ - diff --git a/libs/libsndfile/src/GSM610/decode.c b/libs/libsndfile/src/GSM610/decode.c deleted file mode 100644 index 46db31825b..0000000000 --- a/libs/libsndfile/src/GSM610/decode.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - -#include - -#include "gsm610_priv.h" -#include "gsm.h" - -/* - * 4.3 FIXED POINT IMPLEMENTATION OF THE RPE-LTP DECODER - */ - -static void Postprocessing ( - struct gsm_state * S, - register word * s) -{ - register int k; - register word msr = S->msr; - register word tmp; - - for (k = 160; k--; s++) { - tmp = GSM_MULT_R( msr, 28180 ); - msr = GSM_ADD(*s, tmp); /* Deemphasis */ - *s = GSM_ADD(msr, msr) & 0xFFF8; /* Truncation & Upscaling */ - } - S->msr = msr; -} - -void Gsm_Decoder ( - struct gsm_state * S, - - word * LARcr, /* [0..7] IN */ - - word * Ncr, /* [0..3] IN */ - word * bcr, /* [0..3] IN */ - word * Mcr, /* [0..3] IN */ - word * xmaxcr, /* [0..3] IN */ - word * xMcr, /* [0..13*4] IN */ - - word * s) /* [0..159] OUT */ -{ - int j, k; - word erp[40], wt[160]; - word * drp = S->dp0 + 120; - - for (j=0; j <= 3; j++, xmaxcr++, bcr++, Ncr++, Mcr++, xMcr += 13) { - - Gsm_RPE_Decoding( /*-S,-*/ *xmaxcr, *Mcr, xMcr, erp ); - Gsm_Long_Term_Synthesis_Filtering( S, *Ncr, *bcr, erp, drp ); - - for (k = 0; k <= 39; k++) wt[ j * 40 + k ] = drp[ k ]; - } - - Gsm_Short_Term_Synthesis_Filter( S, LARcr, wt, s ); - Postprocessing(S, s); -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 11ae5b90-2e8b-400b-ac64-a69a1fc6cc41 -*/ - diff --git a/libs/libsndfile/src/GSM610/gsm.h b/libs/libsndfile/src/GSM610/gsm.h deleted file mode 100644 index a13a606147..0000000000 --- a/libs/libsndfile/src/GSM610/gsm.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - -#ifndef GSM_H -#define GSM_H - -#include /* for FILE * */ - -/* - * Interface - */ - -typedef struct gsm_state * gsm; -typedef short gsm_signal; /* signed 16 bit */ -typedef unsigned char gsm_byte; -typedef gsm_byte gsm_frame[33]; /* 33 * 8 bits */ - -#define GSM_MAGIC 0xD /* 13 kbit/s RPE-LTP */ - -#define GSM_PATCHLEVEL 10 -#define GSM_MINOR 0 -#define GSM_MAJOR 1 - -#define GSM_OPT_VERBOSE 1 -#define GSM_OPT_FAST 2 -#define GSM_OPT_LTP_CUT 3 -#define GSM_OPT_WAV49 4 -#define GSM_OPT_FRAME_INDEX 5 -#define GSM_OPT_FRAME_CHAIN 6 - -gsm gsm_create (void); - -/* Added for libsndfile : May 6, 2002 */ -void gsm_init (gsm); - -void gsm_destroy (gsm); - -int gsm_print (FILE *, gsm, gsm_byte *); -int gsm_option (gsm, int, int *); - -void gsm_encode (gsm, gsm_signal *, gsm_byte *); -int gsm_decode (gsm, gsm_byte *, gsm_signal *); - -int gsm_explode (gsm, gsm_byte *, gsm_signal *); -void gsm_implode (gsm, gsm_signal *, gsm_byte *); - -#endif /* GSM_H */ -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 8cfc7698-5433-4b6f-aeca-967c6fda4dec -*/ - diff --git a/libs/libsndfile/src/GSM610/gsm610_priv.h b/libs/libsndfile/src/GSM610/gsm610_priv.h deleted file mode 100644 index c9ab3f25eb..0000000000 --- a/libs/libsndfile/src/GSM610/gsm610_priv.h +++ /dev/null @@ -1,308 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - -#ifndef PRIVATE_H -#define PRIVATE_H - -/* Added by Erik de Castro Lopo */ -#define USE_FLOAT_MUL -#define FAST -#define WAV49 - -#ifdef __cplusplus -#error "This code is not designed to be compiled with a C++ compiler." -#endif -/* Added by Erik de Castro Lopo */ - - - -typedef short word; /* 16 bit signed int */ -typedef int longword; /* 32 bit signed int */ - -typedef unsigned short uword; /* unsigned word */ -typedef unsigned int ulongword; /* unsigned longword */ - -struct gsm_state -{ word dp0[ 280 ] ; - - word z1; /* preprocessing.c, Offset_com. */ - longword L_z2; /* Offset_com. */ - int mp; /* Preemphasis */ - - word u[8] ; /* short_term_aly_filter.c */ - word LARpp[2][8] ; /* */ - word j; /* */ - - word ltp_cut; /* long_term.c, LTP crosscorr. */ - word nrp; /* 40 */ /* long_term.c, synthesis */ - word v[9] ; /* short_term.c, synthesis */ - word msr; /* decoder.c, Postprocessing */ - - char verbose; /* only used if !NDEBUG */ - char fast; /* only used if FAST */ - - char wav_fmt; /* only used if WAV49 defined */ - unsigned char frame_index; /* odd/even chaining */ - unsigned char frame_chain; /* half-byte to carry forward */ - - /* Moved here from code.c where it was defined as static */ - word e[50] ; -} ; - -typedef struct gsm_state GSM_STATE ; - -#define MIN_WORD (-32767 - 1) -#define MAX_WORD 32767 - -#define MIN_LONGWORD (-2147483647 - 1) -#define MAX_LONGWORD 2147483647 - -/* Signed arithmetic shift right. */ -static inline word -SASR_W (word x, word by) -{ return (x >> by) ; -} /* SASR */ - -static inline longword -SASR_L (longword x, word by) -{ return (x >> by) ; -} /* SASR */ - -/* - * Prototypes from add.c - */ -word gsm_mult (word a, word b) ; -longword gsm_L_mult (word a, word b) ; -word gsm_mult_r (word a, word b) ; - -word gsm_div (word num, word denum) ; - -word gsm_add (word a, word b ) ; -longword gsm_L_add (longword a, longword b ) ; - -word gsm_sub (word a, word b) ; -longword gsm_L_sub (longword a, longword b) ; - -word gsm_abs (word a) ; - -word gsm_norm (longword a ) ; - -longword gsm_L_asl (longword a, int n) ; -word gsm_asl (word a, int n) ; - -longword gsm_L_asr (longword a, int n) ; -word gsm_asr (word a, int n) ; - -/* - * Inlined functions from add.h - */ - -static inline longword -GSM_MULT_R (word a, word b) -{ return (((longword) (a)) * ((longword) (b)) + 16384) >> 15 ; -} /* GSM_MULT_R */ - -static inline longword -GSM_MULT (word a, word b) -{ return (((longword) (a)) * ((longword) (b))) >> 15 ; -} /* GSM_MULT */ - -static inline longword -GSM_L_MULT (word a, word b) -{ return ((longword) (a)) * ((longword) (b)) << 1 ; -} /* GSM_L_MULT */ - -static inline longword -GSM_L_ADD (longword a, longword b) -{ ulongword utmp ; - - if (a < 0 && b < 0) - { utmp = (ulongword)-((a) + 1) + (ulongword)-((b) + 1) ; - return (utmp >= (ulongword) MAX_LONGWORD) ? MIN_LONGWORD : -(longword)utmp-2 ; - } ; - - if (a > 0 && b > 0) - { utmp = (ulongword) a + (ulongword) b ; - return (utmp >= (ulongword) MAX_LONGWORD) ? MAX_LONGWORD : utmp ; - } ; - - return a + b ; -} /* GSM_L_ADD */ - -static inline longword -GSM_ADD (word a, word b) -{ longword ltmp ; - - ltmp = ((longword) a) + ((longword) b) ; - - if (ltmp >= MAX_WORD) - return MAX_WORD ; - if (ltmp <= MIN_WORD) - return MIN_WORD ; - - return ltmp ; -} /* GSM_ADD */ - -static inline longword -GSM_SUB (word a, word b) -{ longword ltmp ; - - ltmp = ((longword) a) - ((longword) b) ; - - if (ltmp >= MAX_WORD) - ltmp = MAX_WORD ; - else if (ltmp <= MIN_WORD) - ltmp = MIN_WORD ; - - return ltmp ; -} /* GSM_SUB */ - -static inline word -GSM_ABS (word a) -{ - if (a > 0) - return a ; - if (a == MIN_WORD) - return MAX_WORD ; - return -a ; -} /* GSM_ADD */ - - -/* - * More prototypes from implementations.. - */ -void Gsm_Coder ( - struct gsm_state * S, - word * s, /* [0..159] samples IN */ - word * LARc, /* [0..7] LAR coefficients OUT */ - word * Nc, /* [0..3] LTP lag OUT */ - word * bc, /* [0..3] coded LTP gain OUT */ - word * Mc, /* [0..3] RPE grid selection OUT */ - word * xmaxc,/* [0..3] Coded maximum amplitude OUT */ - word * xMc) ;/* [13*4] normalized RPE samples OUT */ - -void Gsm_Long_Term_Predictor ( /* 4x for 160 samples */ - struct gsm_state * S, - word * d, /* [0..39] residual signal IN */ - word * dp, /* [-120..-1] d' IN */ - word * e, /* [0..40] OUT */ - word * dpp, /* [0..40] OUT */ - word * Nc, /* correlation lag OUT */ - word * bc) ; /* gain factor OUT */ - -void Gsm_LPC_Analysis ( - struct gsm_state * S, - word * s, /* 0..159 signals IN/OUT */ - word * LARc) ; /* 0..7 LARc's OUT */ - -void Gsm_Preprocess ( - struct gsm_state * S, - word * s, word * so) ; - -void Gsm_Encoding ( - struct gsm_state * S, - word * e, - word * ep, - word * xmaxc, - word * Mc, - word * xMc) ; - -void Gsm_Short_Term_Analysis_Filter ( - struct gsm_state * S, - word * LARc, /* coded log area ratio [0..7] IN */ - word * d) ; /* st res. signal [0..159] IN/OUT */ - -void Gsm_Decoder ( - struct gsm_state * S, - word * LARcr, /* [0..7] IN */ - word * Ncr, /* [0..3] IN */ - word * bcr, /* [0..3] IN */ - word * Mcr, /* [0..3] IN */ - word * xmaxcr, /* [0..3] IN */ - word * xMcr, /* [0..13*4] IN */ - word * s) ; /* [0..159] OUT */ - -void Gsm_Decoding ( - struct gsm_state * S, - word xmaxcr, - word Mcr, - word * xMcr, /* [0..12] IN */ - word * erp) ; /* [0..39] OUT */ - -void Gsm_Long_Term_Synthesis_Filtering ( - struct gsm_state* S, - word Ncr, - word bcr, - word * erp, /* [0..39] IN */ - word * drp) ; /* [-120..-1] IN, [0..40] OUT */ - -void Gsm_RPE_Decoding ( - /*-struct gsm_state *S,-*/ - word xmaxcr, - word Mcr, - word * xMcr, /* [0..12], 3 bits IN */ - word * erp) ; /* [0..39] OUT */ - -void Gsm_RPE_Encoding ( - /*-struct gsm_state * S,-*/ - word * e, /* -5..-1][0..39][40..44 IN/OUT */ - word * xmaxc, /* OUT */ - word * Mc, /* OUT */ - word * xMc) ; /* [0..12] OUT */ - -void Gsm_Short_Term_Synthesis_Filter ( - struct gsm_state * S, - word * LARcr, /* log area ratios [0..7] IN */ - word * drp, /* received d [0...39] IN */ - word * s) ; /* signal s [0..159] OUT */ - -void Gsm_Update_of_reconstructed_short_time_residual_signal ( - word * dpp, /* [0...39] IN */ - word * ep, /* [0...39] IN */ - word * dp) ; /* [-120...-1] IN/OUT */ - -/* - * Tables from table.c - */ -#ifndef GSM_TABLE_C - -extern word gsm_A [8], gsm_B [8], gsm_MIC [8], gsm_MAC [8] ; -extern word gsm_INVA [8] ; -extern word gsm_DLB [4], gsm_QLB [4] ; -extern word gsm_H [11] ; -extern word gsm_NRFAC [8] ; -extern word gsm_FAC [8] ; - -#endif /* GSM_TABLE_C */ - -/* - * Debugging - */ -#ifdef NDEBUG - -# define gsm_debug_words(a, b, c, d) /* nil */ -# define gsm_debug_longwords(a, b, c, d) /* nil */ -# define gsm_debug_word(a, b) /* nil */ -# define gsm_debug_longword(a, b) /* nil */ - -#else /* !NDEBUG => DEBUG */ - - void gsm_debug_words (char * name, int, int, word *) ; - void gsm_debug_longwords (char * name, int, int, longword *) ; - void gsm_debug_longword (char * name, longword) ; - void gsm_debug_word (char * name, word) ; - -#endif /* !NDEBUG */ - -#endif /* PRIVATE_H */ -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 8bc5fdf2-e8c8-4686-9bd7-a30b512bef0c -*/ - diff --git a/libs/libsndfile/src/GSM610/gsm_create.c b/libs/libsndfile/src/GSM610/gsm_create.c deleted file mode 100644 index 94e8d7d70c..0000000000 --- a/libs/libsndfile/src/GSM610/gsm_create.c +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - -#include "config.h" - -#include -#include -#include - - - -#include "gsm.h" -#include "gsm610_priv.h" - -gsm gsm_create (void) -{ - gsm r; - - r = malloc (sizeof(struct gsm_state)); - if (!r) return r; - - memset((char *)r, 0, sizeof (struct gsm_state)); - r->nrp = 40; - - return r; -} - -/* Added for libsndfile : May 6, 2002. Not sure if it works. */ -void gsm_init (gsm state) -{ - memset (state, 0, sizeof (struct gsm_state)) ; - state->nrp = 40 ; -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 9fedb6b3-ed99-40c2-aac1-484c536261fe -*/ - diff --git a/libs/libsndfile/src/GSM610/gsm_decode.c b/libs/libsndfile/src/GSM610/gsm_decode.c deleted file mode 100644 index e6425587ce..0000000000 --- a/libs/libsndfile/src/GSM610/gsm_decode.c +++ /dev/null @@ -1,366 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - -#include "gsm610_priv.h" - -#include "gsm.h" - -int gsm_decode (gsm s, gsm_byte * c, gsm_signal * target) -{ - word LARc[8], Nc[4], Mc[4], bc[4], xmaxc[4], xmc[13*4]; - -#ifdef WAV49 - if (s->wav_fmt) { - - uword sr = 0; - - s->frame_index = !s->frame_index; - if (s->frame_index) { - - sr = *c++; - LARc[0] = sr & 0x3f; sr >>= 6; - sr |= (uword)*c++ << 2; - LARc[1] = sr & 0x3f; sr >>= 6; - sr |= (uword)*c++ << 4; - LARc[2] = sr & 0x1f; sr >>= 5; - LARc[3] = sr & 0x1f; sr >>= 5; - sr |= (uword)*c++ << 2; - LARc[4] = sr & 0xf; sr >>= 4; - LARc[5] = sr & 0xf; sr >>= 4; - sr |= (uword)*c++ << 2; /* 5 */ - LARc[6] = sr & 0x7; sr >>= 3; - LARc[7] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 4; - Nc[0] = sr & 0x7f; sr >>= 7; - bc[0] = sr & 0x3; sr >>= 2; - Mc[0] = sr & 0x3; sr >>= 2; - sr |= (uword)*c++ << 1; - xmaxc[0] = sr & 0x3f; sr >>= 6; - xmc[0] = sr & 0x7; sr >>= 3; - sr = *c++; - xmc[1] = sr & 0x7; sr >>= 3; - xmc[2] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 2; - xmc[3] = sr & 0x7; sr >>= 3; - xmc[4] = sr & 0x7; sr >>= 3; - xmc[5] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 1; /* 10 */ - xmc[6] = sr & 0x7; sr >>= 3; - xmc[7] = sr & 0x7; sr >>= 3; - xmc[8] = sr & 0x7; sr >>= 3; - sr = *c++; - xmc[9] = sr & 0x7; sr >>= 3; - xmc[10] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 2; - xmc[11] = sr & 0x7; sr >>= 3; - xmc[12] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 4; - Nc[1] = sr & 0x7f; sr >>= 7; - bc[1] = sr & 0x3; sr >>= 2; - Mc[1] = sr & 0x3; sr >>= 2; - sr |= (uword)*c++ << 1; - xmaxc[1] = sr & 0x3f; sr >>= 6; - xmc[13] = sr & 0x7; sr >>= 3; - sr = *c++; /* 15 */ - xmc[14] = sr & 0x7; sr >>= 3; - xmc[15] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 2; - xmc[16] = sr & 0x7; sr >>= 3; - xmc[17] = sr & 0x7; sr >>= 3; - xmc[18] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 1; - xmc[19] = sr & 0x7; sr >>= 3; - xmc[20] = sr & 0x7; sr >>= 3; - xmc[21] = sr & 0x7; sr >>= 3; - sr = *c++; - xmc[22] = sr & 0x7; sr >>= 3; - xmc[23] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 2; - xmc[24] = sr & 0x7; sr >>= 3; - xmc[25] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 4; /* 20 */ - Nc[2] = sr & 0x7f; sr >>= 7; - bc[2] = sr & 0x3; sr >>= 2; - Mc[2] = sr & 0x3; sr >>= 2; - sr |= (uword)*c++ << 1; - xmaxc[2] = sr & 0x3f; sr >>= 6; - xmc[26] = sr & 0x7; sr >>= 3; - sr = *c++; - xmc[27] = sr & 0x7; sr >>= 3; - xmc[28] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 2; - xmc[29] = sr & 0x7; sr >>= 3; - xmc[30] = sr & 0x7; sr >>= 3; - xmc[31] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 1; - xmc[32] = sr & 0x7; sr >>= 3; - xmc[33] = sr & 0x7; sr >>= 3; - xmc[34] = sr & 0x7; sr >>= 3; - sr = *c++; /* 25 */ - xmc[35] = sr & 0x7; sr >>= 3; - xmc[36] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 2; - xmc[37] = sr & 0x7; sr >>= 3; - xmc[38] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 4; - Nc[3] = sr & 0x7f; sr >>= 7; - bc[3] = sr & 0x3; sr >>= 2; - Mc[3] = sr & 0x3; sr >>= 2; - sr |= (uword)*c++ << 1; - xmaxc[3] = sr & 0x3f; sr >>= 6; - xmc[39] = sr & 0x7; sr >>= 3; - sr = *c++; - xmc[40] = sr & 0x7; sr >>= 3; - xmc[41] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 2; /* 30 */ - xmc[42] = sr & 0x7; sr >>= 3; - xmc[43] = sr & 0x7; sr >>= 3; - xmc[44] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 1; - xmc[45] = sr & 0x7; sr >>= 3; - xmc[46] = sr & 0x7; sr >>= 3; - xmc[47] = sr & 0x7; sr >>= 3; - sr = *c++; - xmc[48] = sr & 0x7; sr >>= 3; - xmc[49] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 2; - xmc[50] = sr & 0x7; sr >>= 3; - xmc[51] = sr & 0x7; sr >>= 3; - - s->frame_chain = sr & 0xf; - } - else { - sr = s->frame_chain; - sr |= (uword)*c++ << 4; /* 1 */ - LARc[0] = sr & 0x3f; sr >>= 6; - LARc[1] = sr & 0x3f; sr >>= 6; - sr = *c++; - LARc[2] = sr & 0x1f; sr >>= 5; - sr |= (uword)*c++ << 3; - LARc[3] = sr & 0x1f; sr >>= 5; - LARc[4] = sr & 0xf; sr >>= 4; - sr |= (uword)*c++ << 2; - LARc[5] = sr & 0xf; sr >>= 4; - LARc[6] = sr & 0x7; sr >>= 3; - LARc[7] = sr & 0x7; sr >>= 3; - sr = *c++; /* 5 */ - Nc[0] = sr & 0x7f; sr >>= 7; - sr |= (uword)*c++ << 1; - bc[0] = sr & 0x3; sr >>= 2; - Mc[0] = sr & 0x3; sr >>= 2; - sr |= (uword)*c++ << 5; - xmaxc[0] = sr & 0x3f; sr >>= 6; - xmc[0] = sr & 0x7; sr >>= 3; - xmc[1] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 1; - xmc[2] = sr & 0x7; sr >>= 3; - xmc[3] = sr & 0x7; sr >>= 3; - xmc[4] = sr & 0x7; sr >>= 3; - sr = *c++; - xmc[5] = sr & 0x7; sr >>= 3; - xmc[6] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 2; /* 10 */ - xmc[7] = sr & 0x7; sr >>= 3; - xmc[8] = sr & 0x7; sr >>= 3; - xmc[9] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 1; - xmc[10] = sr & 0x7; sr >>= 3; - xmc[11] = sr & 0x7; sr >>= 3; - xmc[12] = sr & 0x7; sr >>= 3; - sr = *c++; - Nc[1] = sr & 0x7f; sr >>= 7; - sr |= (uword)*c++ << 1; - bc[1] = sr & 0x3; sr >>= 2; - Mc[1] = sr & 0x3; sr >>= 2; - sr |= (uword)*c++ << 5; - xmaxc[1] = sr & 0x3f; sr >>= 6; - xmc[13] = sr & 0x7; sr >>= 3; - xmc[14] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 1; /* 15 */ - xmc[15] = sr & 0x7; sr >>= 3; - xmc[16] = sr & 0x7; sr >>= 3; - xmc[17] = sr & 0x7; sr >>= 3; - sr = *c++; - xmc[18] = sr & 0x7; sr >>= 3; - xmc[19] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 2; - xmc[20] = sr & 0x7; sr >>= 3; - xmc[21] = sr & 0x7; sr >>= 3; - xmc[22] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 1; - xmc[23] = sr & 0x7; sr >>= 3; - xmc[24] = sr & 0x7; sr >>= 3; - xmc[25] = sr & 0x7; sr >>= 3; - sr = *c++; - Nc[2] = sr & 0x7f; sr >>= 7; - sr |= (uword)*c++ << 1; /* 20 */ - bc[2] = sr & 0x3; sr >>= 2; - Mc[2] = sr & 0x3; sr >>= 2; - sr |= (uword)*c++ << 5; - xmaxc[2] = sr & 0x3f; sr >>= 6; - xmc[26] = sr & 0x7; sr >>= 3; - xmc[27] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 1; - xmc[28] = sr & 0x7; sr >>= 3; - xmc[29] = sr & 0x7; sr >>= 3; - xmc[30] = sr & 0x7; sr >>= 3; - sr = *c++; - xmc[31] = sr & 0x7; sr >>= 3; - xmc[32] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 2; - xmc[33] = sr & 0x7; sr >>= 3; - xmc[34] = sr & 0x7; sr >>= 3; - xmc[35] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 1; /* 25 */ - xmc[36] = sr & 0x7; sr >>= 3; - xmc[37] = sr & 0x7; sr >>= 3; - xmc[38] = sr & 0x7; sr >>= 3; - sr = *c++; - Nc[3] = sr & 0x7f; sr >>= 7; - sr |= (uword)*c++ << 1; - bc[3] = sr & 0x3; sr >>= 2; - Mc[3] = sr & 0x3; sr >>= 2; - sr |= (uword)*c++ << 5; - xmaxc[3] = sr & 0x3f; sr >>= 6; - xmc[39] = sr & 0x7; sr >>= 3; - xmc[40] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 1; - xmc[41] = sr & 0x7; sr >>= 3; - xmc[42] = sr & 0x7; sr >>= 3; - xmc[43] = sr & 0x7; sr >>= 3; - sr = *c++; /* 30 */ - xmc[44] = sr & 0x7; sr >>= 3; - xmc[45] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 2; - xmc[46] = sr & 0x7; sr >>= 3; - xmc[47] = sr & 0x7; sr >>= 3; - xmc[48] = sr & 0x7; sr >>= 3; - sr |= (uword)*c++ << 1; - xmc[49] = sr & 0x7; sr >>= 3; - xmc[50] = sr & 0x7; sr >>= 3; - xmc[51] = sr & 0x7; sr >>= 3; - } - } - else -#endif - { - /* GSM_MAGIC = (*c >> 4) & 0xF; */ - - if (((*c >> 4) & 0x0F) != GSM_MAGIC) return -1; - - LARc[0] = (*c++ & 0xF) << 2; /* 1 */ - LARc[0] |= (*c >> 6) & 0x3; - LARc[1] = *c++ & 0x3F; - LARc[2] = (*c >> 3) & 0x1F; - LARc[3] = (*c++ & 0x7) << 2; - LARc[3] |= (*c >> 6) & 0x3; - LARc[4] = (*c >> 2) & 0xF; - LARc[5] = (*c++ & 0x3) << 2; - LARc[5] |= (*c >> 6) & 0x3; - LARc[6] = (*c >> 3) & 0x7; - LARc[7] = *c++ & 0x7; - Nc[0] = (*c >> 1) & 0x7F; - bc[0] = (*c++ & 0x1) << 1; - bc[0] |= (*c >> 7) & 0x1; - Mc[0] = (*c >> 5) & 0x3; - xmaxc[0] = (*c++ & 0x1F) << 1; - xmaxc[0] |= (*c >> 7) & 0x1; - xmc[0] = (*c >> 4) & 0x7; - xmc[1] = (*c >> 1) & 0x7; - xmc[2] = (*c++ & 0x1) << 2; - xmc[2] |= (*c >> 6) & 0x3; - xmc[3] = (*c >> 3) & 0x7; - xmc[4] = *c++ & 0x7; - xmc[5] = (*c >> 5) & 0x7; - xmc[6] = (*c >> 2) & 0x7; - xmc[7] = (*c++ & 0x3) << 1; /* 10 */ - xmc[7] |= (*c >> 7) & 0x1; - xmc[8] = (*c >> 4) & 0x7; - xmc[9] = (*c >> 1) & 0x7; - xmc[10] = (*c++ & 0x1) << 2; - xmc[10] |= (*c >> 6) & 0x3; - xmc[11] = (*c >> 3) & 0x7; - xmc[12] = *c++ & 0x7; - Nc[1] = (*c >> 1) & 0x7F; - bc[1] = (*c++ & 0x1) << 1; - bc[1] |= (*c >> 7) & 0x1; - Mc[1] = (*c >> 5) & 0x3; - xmaxc[1] = (*c++ & 0x1F) << 1; - xmaxc[1] |= (*c >> 7) & 0x1; - xmc[13] = (*c >> 4) & 0x7; - xmc[14] = (*c >> 1) & 0x7; - xmc[15] = (*c++ & 0x1) << 2; - xmc[15] |= (*c >> 6) & 0x3; - xmc[16] = (*c >> 3) & 0x7; - xmc[17] = *c++ & 0x7; - xmc[18] = (*c >> 5) & 0x7; - xmc[19] = (*c >> 2) & 0x7; - xmc[20] = (*c++ & 0x3) << 1; - xmc[20] |= (*c >> 7) & 0x1; - xmc[21] = (*c >> 4) & 0x7; - xmc[22] = (*c >> 1) & 0x7; - xmc[23] = (*c++ & 0x1) << 2; - xmc[23] |= (*c >> 6) & 0x3; - xmc[24] = (*c >> 3) & 0x7; - xmc[25] = *c++ & 0x7; - Nc[2] = (*c >> 1) & 0x7F; - bc[2] = (*c++ & 0x1) << 1; /* 20 */ - bc[2] |= (*c >> 7) & 0x1; - Mc[2] = (*c >> 5) & 0x3; - xmaxc[2] = (*c++ & 0x1F) << 1; - xmaxc[2] |= (*c >> 7) & 0x1; - xmc[26] = (*c >> 4) & 0x7; - xmc[27] = (*c >> 1) & 0x7; - xmc[28] = (*c++ & 0x1) << 2; - xmc[28] |= (*c >> 6) & 0x3; - xmc[29] = (*c >> 3) & 0x7; - xmc[30] = *c++ & 0x7; - xmc[31] = (*c >> 5) & 0x7; - xmc[32] = (*c >> 2) & 0x7; - xmc[33] = (*c++ & 0x3) << 1; - xmc[33] |= (*c >> 7) & 0x1; - xmc[34] = (*c >> 4) & 0x7; - xmc[35] = (*c >> 1) & 0x7; - xmc[36] = (*c++ & 0x1) << 2; - xmc[36] |= (*c >> 6) & 0x3; - xmc[37] = (*c >> 3) & 0x7; - xmc[38] = *c++ & 0x7; - Nc[3] = (*c >> 1) & 0x7F; - bc[3] = (*c++ & 0x1) << 1; - bc[3] |= (*c >> 7) & 0x1; - Mc[3] = (*c >> 5) & 0x3; - xmaxc[3] = (*c++ & 0x1F) << 1; - xmaxc[3] |= (*c >> 7) & 0x1; - xmc[39] = (*c >> 4) & 0x7; - xmc[40] = (*c >> 1) & 0x7; - xmc[41] = (*c++ & 0x1) << 2; - xmc[41] |= (*c >> 6) & 0x3; - xmc[42] = (*c >> 3) & 0x7; - xmc[43] = *c++ & 0x7; /* 30 */ - xmc[44] = (*c >> 5) & 0x7; - xmc[45] = (*c >> 2) & 0x7; - xmc[46] = (*c++ & 0x3) << 1; - xmc[46] |= (*c >> 7) & 0x1; - xmc[47] = (*c >> 4) & 0x7; - xmc[48] = (*c >> 1) & 0x7; - xmc[49] = (*c++ & 0x1) << 2; - xmc[49] |= (*c >> 6) & 0x3; - xmc[50] = (*c >> 3) & 0x7; - xmc[51] = *c & 0x7; /* 33 */ - } - - Gsm_Decoder(s, LARc, Nc, bc, Mc, xmaxc, xmc, target); - - return 0; -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 6a9b6628-821c-4a96-84c1-485ebd35f170 -*/ - diff --git a/libs/libsndfile/src/GSM610/gsm_destroy.c b/libs/libsndfile/src/GSM610/gsm_destroy.c deleted file mode 100644 index 9e2d6a49b7..0000000000 --- a/libs/libsndfile/src/GSM610/gsm_destroy.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - -#include "gsm.h" -#include "config.h" - -#ifdef HAS_STDLIB_H -# include -#else -# ifdef HAS_MALLOC_H -# include -# else - extern void free(); -# endif -#endif - -void gsm_destroy (gsm S) -{ - if (S) free((char *)S); -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: f423d09b-6ccc-47e0-9b18-ee1cf7a8e473 -*/ - diff --git a/libs/libsndfile/src/GSM610/gsm_encode.c b/libs/libsndfile/src/GSM610/gsm_encode.c deleted file mode 100644 index 02af4ba282..0000000000 --- a/libs/libsndfile/src/GSM610/gsm_encode.c +++ /dev/null @@ -1,456 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - -#include "gsm610_priv.h" -#include "gsm.h" - -void gsm_encode (gsm s, gsm_signal * source, gsm_byte * c) -{ - word LARc[8], Nc[4], Mc[4], bc[4], xmaxc[4], xmc[13*4]; - - Gsm_Coder(s, source, LARc, Nc, bc, Mc, xmaxc, xmc); - - - /* variable size - - GSM_MAGIC 4 - - LARc[0] 6 - LARc[1] 6 - LARc[2] 5 - LARc[3] 5 - LARc[4] 4 - LARc[5] 4 - LARc[6] 3 - LARc[7] 3 - - Nc[0] 7 - bc[0] 2 - Mc[0] 2 - xmaxc[0] 6 - xmc[0] 3 - xmc[1] 3 - xmc[2] 3 - xmc[3] 3 - xmc[4] 3 - xmc[5] 3 - xmc[6] 3 - xmc[7] 3 - xmc[8] 3 - xmc[9] 3 - xmc[10] 3 - xmc[11] 3 - xmc[12] 3 - - Nc[1] 7 - bc[1] 2 - Mc[1] 2 - xmaxc[1] 6 - xmc[13] 3 - xmc[14] 3 - xmc[15] 3 - xmc[16] 3 - xmc[17] 3 - xmc[18] 3 - xmc[19] 3 - xmc[20] 3 - xmc[21] 3 - xmc[22] 3 - xmc[23] 3 - xmc[24] 3 - xmc[25] 3 - - Nc[2] 7 - bc[2] 2 - Mc[2] 2 - xmaxc[2] 6 - xmc[26] 3 - xmc[27] 3 - xmc[28] 3 - xmc[29] 3 - xmc[30] 3 - xmc[31] 3 - xmc[32] 3 - xmc[33] 3 - xmc[34] 3 - xmc[35] 3 - xmc[36] 3 - xmc[37] 3 - xmc[38] 3 - - Nc[3] 7 - bc[3] 2 - Mc[3] 2 - xmaxc[3] 6 - xmc[39] 3 - xmc[40] 3 - xmc[41] 3 - xmc[42] 3 - xmc[43] 3 - xmc[44] 3 - xmc[45] 3 - xmc[46] 3 - xmc[47] 3 - xmc[48] 3 - xmc[49] 3 - xmc[50] 3 - xmc[51] 3 - */ - -#ifdef WAV49 - - if (s->wav_fmt) { - s->frame_index = !s->frame_index; - if (s->frame_index) { - - uword sr; - - sr = 0; - sr = sr >> 6 | LARc[0] << 10; - sr = sr >> 6 | LARc[1] << 10; - *c++ = sr >> 4; - sr = sr >> 5 | LARc[2] << 11; - *c++ = sr >> 7; - sr = sr >> 5 | LARc[3] << 11; - sr = sr >> 4 | LARc[4] << 12; - *c++ = sr >> 6; - sr = sr >> 4 | LARc[5] << 12; - sr = sr >> 3 | LARc[6] << 13; - *c++ = sr >> 7; - sr = sr >> 3 | LARc[7] << 13; - sr = sr >> 7 | Nc[0] << 9; - *c++ = sr >> 5; - sr = sr >> 2 | bc[0] << 14; - sr = sr >> 2 | Mc[0] << 14; - sr = sr >> 6 | xmaxc[0] << 10; - *c++ = sr >> 3; - sr = sr >> 3 | xmc[0] << 13; - *c++ = sr >> 8; - sr = sr >> 3 | xmc[1] << 13; - sr = sr >> 3 | xmc[2] << 13; - sr = sr >> 3 | xmc[3] << 13; - *c++ = sr >> 7; - sr = sr >> 3 | xmc[4] << 13; - sr = sr >> 3 | xmc[5] << 13; - sr = sr >> 3 | xmc[6] << 13; - *c++ = sr >> 6; - sr = sr >> 3 | xmc[7] << 13; - sr = sr >> 3 | xmc[8] << 13; - *c++ = sr >> 8; - sr = sr >> 3 | xmc[9] << 13; - sr = sr >> 3 | xmc[10] << 13; - sr = sr >> 3 | xmc[11] << 13; - *c++ = sr >> 7; - sr = sr >> 3 | xmc[12] << 13; - sr = sr >> 7 | Nc[1] << 9; - *c++ = sr >> 5; - sr = sr >> 2 | bc[1] << 14; - sr = sr >> 2 | Mc[1] << 14; - sr = sr >> 6 | xmaxc[1] << 10; - *c++ = sr >> 3; - sr = sr >> 3 | xmc[13] << 13; - *c++ = sr >> 8; - sr = sr >> 3 | xmc[14] << 13; - sr = sr >> 3 | xmc[15] << 13; - sr = sr >> 3 | xmc[16] << 13; - *c++ = sr >> 7; - sr = sr >> 3 | xmc[17] << 13; - sr = sr >> 3 | xmc[18] << 13; - sr = sr >> 3 | xmc[19] << 13; - *c++ = sr >> 6; - sr = sr >> 3 | xmc[20] << 13; - sr = sr >> 3 | xmc[21] << 13; - *c++ = sr >> 8; - sr = sr >> 3 | xmc[22] << 13; - sr = sr >> 3 | xmc[23] << 13; - sr = sr >> 3 | xmc[24] << 13; - *c++ = sr >> 7; - sr = sr >> 3 | xmc[25] << 13; - sr = sr >> 7 | Nc[2] << 9; - *c++ = sr >> 5; - sr = sr >> 2 | bc[2] << 14; - sr = sr >> 2 | Mc[2] << 14; - sr = sr >> 6 | xmaxc[2] << 10; - *c++ = sr >> 3; - sr = sr >> 3 | xmc[26] << 13; - *c++ = sr >> 8; - sr = sr >> 3 | xmc[27] << 13; - sr = sr >> 3 | xmc[28] << 13; - sr = sr >> 3 | xmc[29] << 13; - *c++ = sr >> 7; - sr = sr >> 3 | xmc[30] << 13; - sr = sr >> 3 | xmc[31] << 13; - sr = sr >> 3 | xmc[32] << 13; - *c++ = sr >> 6; - sr = sr >> 3 | xmc[33] << 13; - sr = sr >> 3 | xmc[34] << 13; - *c++ = sr >> 8; - sr = sr >> 3 | xmc[35] << 13; - sr = sr >> 3 | xmc[36] << 13; - sr = sr >> 3 | xmc[37] << 13; - *c++ = sr >> 7; - sr = sr >> 3 | xmc[38] << 13; - sr = sr >> 7 | Nc[3] << 9; - *c++ = sr >> 5; - sr = sr >> 2 | bc[3] << 14; - sr = sr >> 2 | Mc[3] << 14; - sr = sr >> 6 | xmaxc[3] << 10; - *c++ = sr >> 3; - sr = sr >> 3 | xmc[39] << 13; - *c++ = sr >> 8; - sr = sr >> 3 | xmc[40] << 13; - sr = sr >> 3 | xmc[41] << 13; - sr = sr >> 3 | xmc[42] << 13; - *c++ = sr >> 7; - sr = sr >> 3 | xmc[43] << 13; - sr = sr >> 3 | xmc[44] << 13; - sr = sr >> 3 | xmc[45] << 13; - *c++ = sr >> 6; - sr = sr >> 3 | xmc[46] << 13; - sr = sr >> 3 | xmc[47] << 13; - *c++ = sr >> 8; - sr = sr >> 3 | xmc[48] << 13; - sr = sr >> 3 | xmc[49] << 13; - sr = sr >> 3 | xmc[50] << 13; - *c++ = sr >> 7; - sr = sr >> 3 | xmc[51] << 13; - sr = sr >> 4; - *c = sr >> 8; - s->frame_chain = *c; - } - else { - uword sr; - - sr = 0; - sr = sr >> 4 | s->frame_chain << 12; - sr = sr >> 6 | LARc[0] << 10; - *c++ = sr >> 6; - sr = sr >> 6 | LARc[1] << 10; - *c++ = sr >> 8; - sr = sr >> 5 | LARc[2] << 11; - sr = sr >> 5 | LARc[3] << 11; - *c++ = sr >> 6; - sr = sr >> 4 | LARc[4] << 12; - sr = sr >> 4 | LARc[5] << 12; - *c++ = sr >> 6; - sr = sr >> 3 | LARc[6] << 13; - sr = sr >> 3 | LARc[7] << 13; - *c++ = sr >> 8; - sr = sr >> 7 | Nc[0] << 9; - sr = sr >> 2 | bc[0] << 14; - *c++ = sr >> 7; - sr = sr >> 2 | Mc[0] << 14; - sr = sr >> 6 | xmaxc[0] << 10; - *c++ = sr >> 7; - sr = sr >> 3 | xmc[0] << 13; - sr = sr >> 3 | xmc[1] << 13; - sr = sr >> 3 | xmc[2] << 13; - *c++ = sr >> 6; - sr = sr >> 3 | xmc[3] << 13; - sr = sr >> 3 | xmc[4] << 13; - *c++ = sr >> 8; - sr = sr >> 3 | xmc[5] << 13; - sr = sr >> 3 | xmc[6] << 13; - sr = sr >> 3 | xmc[7] << 13; - *c++ = sr >> 7; - sr = sr >> 3 | xmc[8] << 13; - sr = sr >> 3 | xmc[9] << 13; - sr = sr >> 3 | xmc[10] << 13; - *c++ = sr >> 6; - sr = sr >> 3 | xmc[11] << 13; - sr = sr >> 3 | xmc[12] << 13; - *c++ = sr >> 8; - sr = sr >> 7 | Nc[1] << 9; - sr = sr >> 2 | bc[1] << 14; - *c++ = sr >> 7; - sr = sr >> 2 | Mc[1] << 14; - sr = sr >> 6 | xmaxc[1] << 10; - *c++ = sr >> 7; - sr = sr >> 3 | xmc[13] << 13; - sr = sr >> 3 | xmc[14] << 13; - sr = sr >> 3 | xmc[15] << 13; - *c++ = sr >> 6; - sr = sr >> 3 | xmc[16] << 13; - sr = sr >> 3 | xmc[17] << 13; - *c++ = sr >> 8; - sr = sr >> 3 | xmc[18] << 13; - sr = sr >> 3 | xmc[19] << 13; - sr = sr >> 3 | xmc[20] << 13; - *c++ = sr >> 7; - sr = sr >> 3 | xmc[21] << 13; - sr = sr >> 3 | xmc[22] << 13; - sr = sr >> 3 | xmc[23] << 13; - *c++ = sr >> 6; - sr = sr >> 3 | xmc[24] << 13; - sr = sr >> 3 | xmc[25] << 13; - *c++ = sr >> 8; - sr = sr >> 7 | Nc[2] << 9; - sr = sr >> 2 | bc[2] << 14; - *c++ = sr >> 7; - sr = sr >> 2 | Mc[2] << 14; - sr = sr >> 6 | xmaxc[2] << 10; - *c++ = sr >> 7; - sr = sr >> 3 | xmc[26] << 13; - sr = sr >> 3 | xmc[27] << 13; - sr = sr >> 3 | xmc[28] << 13; - *c++ = sr >> 6; - sr = sr >> 3 | xmc[29] << 13; - sr = sr >> 3 | xmc[30] << 13; - *c++ = sr >> 8; - sr = sr >> 3 | xmc[31] << 13; - sr = sr >> 3 | xmc[32] << 13; - sr = sr >> 3 | xmc[33] << 13; - *c++ = sr >> 7; - sr = sr >> 3 | xmc[34] << 13; - sr = sr >> 3 | xmc[35] << 13; - sr = sr >> 3 | xmc[36] << 13; - *c++ = sr >> 6; - sr = sr >> 3 | xmc[37] << 13; - sr = sr >> 3 | xmc[38] << 13; - *c++ = sr >> 8; - sr = sr >> 7 | Nc[3] << 9; - sr = sr >> 2 | bc[3] << 14; - *c++ = sr >> 7; - sr = sr >> 2 | Mc[3] << 14; - sr = sr >> 6 | xmaxc[3] << 10; - *c++ = sr >> 7; - sr = sr >> 3 | xmc[39] << 13; - sr = sr >> 3 | xmc[40] << 13; - sr = sr >> 3 | xmc[41] << 13; - *c++ = sr >> 6; - sr = sr >> 3 | xmc[42] << 13; - sr = sr >> 3 | xmc[43] << 13; - *c++ = sr >> 8; - sr = sr >> 3 | xmc[44] << 13; - sr = sr >> 3 | xmc[45] << 13; - sr = sr >> 3 | xmc[46] << 13; - *c++ = sr >> 7; - sr = sr >> 3 | xmc[47] << 13; - sr = sr >> 3 | xmc[48] << 13; - sr = sr >> 3 | xmc[49] << 13; - *c++ = sr >> 6; - sr = sr >> 3 | xmc[50] << 13; - sr = sr >> 3 | xmc[51] << 13; - *c++ = sr >> 8; - } - } - - else - -#endif /* WAV49 */ - { - - *c++ = ((GSM_MAGIC & 0xF) << 4) /* 1 */ - | ((LARc[0] >> 2) & 0xF); - *c++ = ((LARc[0] & 0x3) << 6) - | (LARc[1] & 0x3F); - *c++ = ((LARc[2] & 0x1F) << 3) - | ((LARc[3] >> 2) & 0x7); - *c++ = ((LARc[3] & 0x3) << 6) - | ((LARc[4] & 0xF) << 2) - | ((LARc[5] >> 2) & 0x3); - *c++ = ((LARc[5] & 0x3) << 6) - | ((LARc[6] & 0x7) << 3) - | (LARc[7] & 0x7); - *c++ = ((Nc[0] & 0x7F) << 1) - | ((bc[0] >> 1) & 0x1); - *c++ = ((bc[0] & 0x1) << 7) - | ((Mc[0] & 0x3) << 5) - | ((xmaxc[0] >> 1) & 0x1F); - *c++ = ((xmaxc[0] & 0x1) << 7) - | ((xmc[0] & 0x7) << 4) - | ((xmc[1] & 0x7) << 1) - | ((xmc[2] >> 2) & 0x1); - *c++ = ((xmc[2] & 0x3) << 6) - | ((xmc[3] & 0x7) << 3) - | (xmc[4] & 0x7); - *c++ = ((xmc[5] & 0x7) << 5) /* 10 */ - | ((xmc[6] & 0x7) << 2) - | ((xmc[7] >> 1) & 0x3); - *c++ = ((xmc[7] & 0x1) << 7) - | ((xmc[8] & 0x7) << 4) - | ((xmc[9] & 0x7) << 1) - | ((xmc[10] >> 2) & 0x1); - *c++ = ((xmc[10] & 0x3) << 6) - | ((xmc[11] & 0x7) << 3) - | (xmc[12] & 0x7); - *c++ = ((Nc[1] & 0x7F) << 1) - | ((bc[1] >> 1) & 0x1); - *c++ = ((bc[1] & 0x1) << 7) - | ((Mc[1] & 0x3) << 5) - | ((xmaxc[1] >> 1) & 0x1F); - *c++ = ((xmaxc[1] & 0x1) << 7) - | ((xmc[13] & 0x7) << 4) - | ((xmc[14] & 0x7) << 1) - | ((xmc[15] >> 2) & 0x1); - *c++ = ((xmc[15] & 0x3) << 6) - | ((xmc[16] & 0x7) << 3) - | (xmc[17] & 0x7); - *c++ = ((xmc[18] & 0x7) << 5) - | ((xmc[19] & 0x7) << 2) - | ((xmc[20] >> 1) & 0x3); - *c++ = ((xmc[20] & 0x1) << 7) - | ((xmc[21] & 0x7) << 4) - | ((xmc[22] & 0x7) << 1) - | ((xmc[23] >> 2) & 0x1); - *c++ = ((xmc[23] & 0x3) << 6) - | ((xmc[24] & 0x7) << 3) - | (xmc[25] & 0x7); - *c++ = ((Nc[2] & 0x7F) << 1) /* 20 */ - | ((bc[2] >> 1) & 0x1); - *c++ = ((bc[2] & 0x1) << 7) - | ((Mc[2] & 0x3) << 5) - | ((xmaxc[2] >> 1) & 0x1F); - *c++ = ((xmaxc[2] & 0x1) << 7) - | ((xmc[26] & 0x7) << 4) - | ((xmc[27] & 0x7) << 1) - | ((xmc[28] >> 2) & 0x1); - *c++ = ((xmc[28] & 0x3) << 6) - | ((xmc[29] & 0x7) << 3) - | (xmc[30] & 0x7); - *c++ = ((xmc[31] & 0x7) << 5) - | ((xmc[32] & 0x7) << 2) - | ((xmc[33] >> 1) & 0x3); - *c++ = ((xmc[33] & 0x1) << 7) - | ((xmc[34] & 0x7) << 4) - | ((xmc[35] & 0x7) << 1) - | ((xmc[36] >> 2) & 0x1); - *c++ = ((xmc[36] & 0x3) << 6) - | ((xmc[37] & 0x7) << 3) - | (xmc[38] & 0x7); - *c++ = ((Nc[3] & 0x7F) << 1) - | ((bc[3] >> 1) & 0x1); - *c++ = ((bc[3] & 0x1) << 7) - | ((Mc[3] & 0x3) << 5) - | ((xmaxc[3] >> 1) & 0x1F); - *c++ = ((xmaxc[3] & 0x1) << 7) - | ((xmc[39] & 0x7) << 4) - | ((xmc[40] & 0x7) << 1) - | ((xmc[41] >> 2) & 0x1); - *c++ = ((xmc[41] & 0x3) << 6) /* 30 */ - | ((xmc[42] & 0x7) << 3) - | (xmc[43] & 0x7); - *c++ = ((xmc[44] & 0x7) << 5) - | ((xmc[45] & 0x7) << 2) - | ((xmc[46] >> 1) & 0x3); - *c++ = ((xmc[46] & 0x1) << 7) - | ((xmc[47] & 0x7) << 4) - | ((xmc[48] & 0x7) << 1) - | ((xmc[49] >> 2) & 0x1); - *c++ = ((xmc[49] & 0x3) << 6) - | ((xmc[50] & 0x7) << 3) - | (xmc[51] & 0x7); - - } -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: cfe9c43d-d97c-4216-b5e5-ccd6a25b582b -*/ - diff --git a/libs/libsndfile/src/GSM610/gsm_option.c b/libs/libsndfile/src/GSM610/gsm_option.c deleted file mode 100644 index 5c56d78df2..0000000000 --- a/libs/libsndfile/src/GSM610/gsm_option.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - -#include "gsm610_priv.h" - -#include "gsm.h" - -int gsm_option (gsm r, int opt, int * val) -{ - int result = -1; - - switch (opt) { - case GSM_OPT_LTP_CUT: -#ifdef LTP_CUT - result = r->ltp_cut; - if (val) r->ltp_cut = *val; -#endif - break; - - case GSM_OPT_VERBOSE: -#ifndef NDEBUG - result = r->verbose; - if (val) r->verbose = *val; -#endif - break; - - case GSM_OPT_FAST: - -#if defined(FAST) && defined(USE_FLOAT_MUL) - result = r->fast; - if (val) r->fast = !!*val; -#endif - break; - - case GSM_OPT_FRAME_CHAIN: - -#ifdef WAV49 - result = r->frame_chain; - if (val) r->frame_chain = *val; -#endif - break; - - case GSM_OPT_FRAME_INDEX: - -#ifdef WAV49 - result = r->frame_index; - if (val) r->frame_index = *val; -#endif - break; - - case GSM_OPT_WAV49: - -#ifdef WAV49 - result = r->wav_fmt; - if (val) r->wav_fmt = !!*val; -#endif - break; - - default: - break; - } - return result; -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 963ff156-506f-4359-9145-371e9060b030 -*/ - diff --git a/libs/libsndfile/src/GSM610/long_term.c b/libs/libsndfile/src/GSM610/long_term.c deleted file mode 100644 index 5179d1d09b..0000000000 --- a/libs/libsndfile/src/GSM610/long_term.c +++ /dev/null @@ -1,951 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - -#include -#include - -#include "gsm610_priv.h" - -#include "gsm.h" - -/* - * 4.2.11 .. 4.2.12 LONG TERM PREDICTOR (LTP) SECTION - */ - - -/* - * This module computes the LTP gain (bc) and the LTP lag (Nc) - * for the long term analysis filter. This is done by calculating a - * maximum of the cross-correlation function between the current - * sub-segment short term residual signal d[0..39] (output of - * the short term analysis filter; for simplification the index - * of this array begins at 0 and ends at 39 for each sub-segment of the - * RPE-LTP analysis) and the previous reconstructed short term - * residual signal dp[ -120 .. -1 ]. A dynamic scaling must be - * performed to avoid overflow. - */ - - /* The next procedure exists in six versions. First two integer - * version (if USE_FLOAT_MUL is not defined); then four floating - * point versions, twice with proper scaling (USE_FLOAT_MUL defined), - * once without (USE_FLOAT_MUL and FAST defined, and fast run-time - * option used). Every pair has first a Cut version (see the -C - * option to toast or the LTP_CUT option to gsm_option()), then the - * uncut one. (For a detailed explanation of why this is altogether - * a bad idea, see Henry Spencer and Geoff Collyer, ``#ifdef Considered - * Harmful''.) - */ - -#ifndef USE_FLOAT_MUL - -#ifdef LTP_CUT - -static void Cut_Calculation_of_the_LTP_parameters ( - - struct gsm_state * st, - - register word * d, /* [0..39] IN */ - register word * dp, /* [-120..-1] IN */ - word * bc_out, /* OUT */ - word * Nc_out /* OUT */ -) -{ - register int k, lambda; - word Nc, bc; - word wt[40]; - - longword L_result; - longword L_max, L_power; - word R, S, dmax, scal, best_k; - word ltp_cut; - - register word temp, wt_k; - - /* Search of the optimum scaling of d[0..39]. - */ - dmax = 0; - for (k = 0; k <= 39; k++) { - temp = d[k]; - temp = GSM_ABS( temp ); - if (temp > dmax) { - dmax = temp; - best_k = k; - } - } - temp = 0; - if (dmax == 0) scal = 0; - else { - assert(dmax > 0); - temp = gsm_norm( (longword)dmax << 16 ); - } - if (temp > 6) scal = 0; - else scal = 6 - temp; - assert(scal >= 0); - - /* Search for the maximum cross-correlation and coding of the LTP lag - */ - L_max = 0; - Nc = 40; /* index for the maximum cross-correlation */ - wt_k = SASR_W(d[best_k], scal); - - for (lambda = 40; lambda <= 120; lambda++) { - L_result = (longword)wt_k * dp[best_k - lambda]; - if (L_result > L_max) { - Nc = lambda; - L_max = L_result; - } - } - *Nc_out = Nc; - L_max <<= 1; - - /* Rescaling of L_max - */ - assert(scal <= 100 && scal >= -100); - L_max = L_max >> (6 - scal); /* sub(6, scal) */ - - assert( Nc <= 120 && Nc >= 40); - - /* Compute the power of the reconstructed short term residual - * signal dp[..] - */ - L_power = 0; - for (k = 0; k <= 39; k++) { - - register longword L_temp; - - L_temp = SASR_W( dp[k - Nc], 3 ); - L_power += L_temp * L_temp; - } - L_power <<= 1; /* from L_MULT */ - - /* Normalization of L_max and L_power - */ - - if (L_max <= 0) { - *bc_out = 0; - return; - } - if (L_max >= L_power) { - *bc_out = 3; - return; - } - - temp = gsm_norm( L_power ); - - R = SASR( L_max << temp, 16 ); - S = SASR( L_power << temp, 16 ); - - /* Coding of the LTP gain - */ - - /* Table 4.3a must be used to obtain the level DLB[i] for the - * quantization of the LTP gain b to get the coded version bc. - */ - for (bc = 0; bc <= 2; bc++) if (R <= gsm_mult(S, gsm_DLB[bc])) break; - *bc_out = bc; -} - -#endif /* LTP_CUT */ - -static void Calculation_of_the_LTP_parameters ( - register word * d, /* [0..39] IN */ - register word * dp, /* [-120..-1] IN */ - word * bc_out, /* OUT */ - word * Nc_out /* OUT */ -) -{ - register int k, lambda; - word Nc, bc; - word wt[40]; - - longword L_max, L_power; - word R, S, dmax, scal; - register word temp; - - /* Search of the optimum scaling of d[0..39]. - */ - dmax = 0; - - for (k = 0; k <= 39; k++) { - temp = d[k]; - temp = GSM_ABS( temp ); - if (temp > dmax) dmax = temp; - } - - temp = 0; - if (dmax == 0) scal = 0; - else { - assert(dmax > 0); - temp = gsm_norm( (longword)dmax << 16 ); - } - - if (temp > 6) scal = 0; - else scal = 6 - temp; - - assert(scal >= 0); - - /* Initialization of a working array wt - */ - - for (k = 0; k <= 39; k++) wt[k] = SASR_W( d[k], scal ); - - /* Search for the maximum cross-correlation and coding of the LTP lag - */ - L_max = 0; - Nc = 40; /* index for the maximum cross-correlation */ - - for (lambda = 40; lambda <= 120; lambda++) { - -# undef STEP -# define STEP(k) (longword)wt[k] * dp[k - lambda] - - register longword L_result; - - L_result = STEP(0) ; L_result += STEP(1) ; - L_result += STEP(2) ; L_result += STEP(3) ; - L_result += STEP(4) ; L_result += STEP(5) ; - L_result += STEP(6) ; L_result += STEP(7) ; - L_result += STEP(8) ; L_result += STEP(9) ; - L_result += STEP(10) ; L_result += STEP(11) ; - L_result += STEP(12) ; L_result += STEP(13) ; - L_result += STEP(14) ; L_result += STEP(15) ; - L_result += STEP(16) ; L_result += STEP(17) ; - L_result += STEP(18) ; L_result += STEP(19) ; - L_result += STEP(20) ; L_result += STEP(21) ; - L_result += STEP(22) ; L_result += STEP(23) ; - L_result += STEP(24) ; L_result += STEP(25) ; - L_result += STEP(26) ; L_result += STEP(27) ; - L_result += STEP(28) ; L_result += STEP(29) ; - L_result += STEP(30) ; L_result += STEP(31) ; - L_result += STEP(32) ; L_result += STEP(33) ; - L_result += STEP(34) ; L_result += STEP(35) ; - L_result += STEP(36) ; L_result += STEP(37) ; - L_result += STEP(38) ; L_result += STEP(39) ; - - if (L_result > L_max) { - - Nc = lambda; - L_max = L_result; - } - } - - *Nc_out = Nc; - - L_max <<= 1; - - /* Rescaling of L_max - */ - assert(scal <= 100 && scal >= -100); - L_max = L_max >> (6 - scal); /* sub(6, scal) */ - - assert( Nc <= 120 && Nc >= 40); - - /* Compute the power of the reconstructed short term residual - * signal dp[..] - */ - L_power = 0; - for (k = 0; k <= 39; k++) { - - register longword L_temp; - - L_temp = SASR_W( dp[k - Nc], 3 ); - L_power += L_temp * L_temp; - } - L_power <<= 1; /* from L_MULT */ - - /* Normalization of L_max and L_power - */ - - if (L_max <= 0) { - *bc_out = 0; - return; - } - if (L_max >= L_power) { - *bc_out = 3; - return; - } - - temp = gsm_norm( L_power ); - - R = SASR_L( L_max << temp, 16 ); - S = SASR_L( L_power << temp, 16 ); - - /* Coding of the LTP gain - */ - - /* Table 4.3a must be used to obtain the level DLB[i] for the - * quantization of the LTP gain b to get the coded version bc. - */ - for (bc = 0; bc <= 2; bc++) if (R <= gsm_mult(S, gsm_DLB[bc])) break; - *bc_out = bc; -} - -#else /* USE_FLOAT_MUL */ - -#ifdef LTP_CUT - -static void Cut_Calculation_of_the_LTP_parameters ( - struct gsm_state * st, /* IN */ - register word * d, /* [0..39] IN */ - register word * dp, /* [-120..-1] IN */ - word * bc_out, /* OUT */ - word * Nc_out /* OUT */ -) -{ - register int k, lambda; - word Nc, bc; - word ltp_cut; - - float wt_float[40]; - float dp_float_base[120], * dp_float = dp_float_base + 120; - - longword L_max, L_power; - word R, S, dmax, scal; - register word temp; - - /* Search of the optimum scaling of d[0..39]. - */ - dmax = 0; - - for (k = 0; k <= 39; k++) { - temp = d[k]; - temp = GSM_ABS( temp ); - if (temp > dmax) dmax = temp; - } - - temp = 0; - if (dmax == 0) scal = 0; - else { - assert(dmax > 0); - temp = gsm_norm( (longword)dmax << 16 ); - } - - if (temp > 6) scal = 0; - else scal = 6 - temp; - - assert(scal >= 0); - ltp_cut = (longword)SASR_W(dmax, scal) * st->ltp_cut / 100; - - - /* Initialization of a working array wt - */ - - for (k = 0; k < 40; k++) { - register word w = SASR_W( d[k], scal ); - if (w < 0 ? w > -ltp_cut : w < ltp_cut) { - wt_float[k] = 0.0; - } - else { - wt_float[k] = w; - } - } - for (k = -120; k < 0; k++) dp_float[k] = dp[k]; - - /* Search for the maximum cross-correlation and coding of the LTP lag - */ - L_max = 0; - Nc = 40; /* index for the maximum cross-correlation */ - - for (lambda = 40; lambda <= 120; lambda += 9) { - - /* Calculate L_result for l = lambda .. lambda + 9. - */ - register float *lp = dp_float - lambda; - - register float W; - register float a = lp[-8], b = lp[-7], c = lp[-6], - d = lp[-5], e = lp[-4], f = lp[-3], - g = lp[-2], h = lp[-1]; - register float E; - register float S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0, - S5 = 0, S6 = 0, S7 = 0, S8 = 0; - -# undef STEP -# define STEP(K, a, b, c, d, e, f, g, h) \ - if ((W = wt_float[K]) != 0.0) { \ - E = W * a; S8 += E; \ - E = W * b; S7 += E; \ - E = W * c; S6 += E; \ - E = W * d; S5 += E; \ - E = W * e; S4 += E; \ - E = W * f; S3 += E; \ - E = W * g; S2 += E; \ - E = W * h; S1 += E; \ - a = lp[K]; \ - E = W * a; S0 += E; } else (a = lp[K]) - -# define STEP_A(K) STEP(K, a, b, c, d, e, f, g, h) -# define STEP_B(K) STEP(K, b, c, d, e, f, g, h, a) -# define STEP_C(K) STEP(K, c, d, e, f, g, h, a, b) -# define STEP_D(K) STEP(K, d, e, f, g, h, a, b, c) -# define STEP_E(K) STEP(K, e, f, g, h, a, b, c, d) -# define STEP_F(K) STEP(K, f, g, h, a, b, c, d, e) -# define STEP_G(K) STEP(K, g, h, a, b, c, d, e, f) -# define STEP_H(K) STEP(K, h, a, b, c, d, e, f, g) - - STEP_A( 0); STEP_B( 1); STEP_C( 2); STEP_D( 3); - STEP_E( 4); STEP_F( 5); STEP_G( 6); STEP_H( 7); - - STEP_A( 8); STEP_B( 9); STEP_C(10); STEP_D(11); - STEP_E(12); STEP_F(13); STEP_G(14); STEP_H(15); - - STEP_A(16); STEP_B(17); STEP_C(18); STEP_D(19); - STEP_E(20); STEP_F(21); STEP_G(22); STEP_H(23); - - STEP_A(24); STEP_B(25); STEP_C(26); STEP_D(27); - STEP_E(28); STEP_F(29); STEP_G(30); STEP_H(31); - - STEP_A(32); STEP_B(33); STEP_C(34); STEP_D(35); - STEP_E(36); STEP_F(37); STEP_G(38); STEP_H(39); - - if (S0 > L_max) { L_max = S0; Nc = lambda; } - if (S1 > L_max) { L_max = S1; Nc = lambda + 1; } - if (S2 > L_max) { L_max = S2; Nc = lambda + 2; } - if (S3 > L_max) { L_max = S3; Nc = lambda + 3; } - if (S4 > L_max) { L_max = S4; Nc = lambda + 4; } - if (S5 > L_max) { L_max = S5; Nc = lambda + 5; } - if (S6 > L_max) { L_max = S6; Nc = lambda + 6; } - if (S7 > L_max) { L_max = S7; Nc = lambda + 7; } - if (S8 > L_max) { L_max = S8; Nc = lambda + 8; } - - } - *Nc_out = Nc; - - L_max <<= 1; - - /* Rescaling of L_max - */ - assert(scal <= 100 && scal >= -100); - L_max = L_max >> (6 - scal); /* sub(6, scal) */ - - assert( Nc <= 120 && Nc >= 40); - - /* Compute the power of the reconstructed short term residual - * signal dp[..] - */ - L_power = 0; - for (k = 0; k <= 39; k++) { - - register longword L_temp; - - L_temp = SASR_W( dp[k - Nc], 3 ); - L_power += L_temp * L_temp; - } - L_power <<= 1; /* from L_MULT */ - - /* Normalization of L_max and L_power - */ - - if (L_max <= 0) { - *bc_out = 0; - return; - } - if (L_max >= L_power) { - *bc_out = 3; - return; - } - - temp = gsm_norm( L_power ); - - R = SASR( L_max << temp, 16 ); - S = SASR( L_power << temp, 16 ); - - /* Coding of the LTP gain - */ - - /* Table 4.3a must be used to obtain the level DLB[i] for the - * quantization of the LTP gain b to get the coded version bc. - */ - for (bc = 0; bc <= 2; bc++) if (R <= gsm_mult(S, gsm_DLB[bc])) break; - *bc_out = bc; -} - -#endif /* LTP_CUT */ - -static void Calculation_of_the_LTP_parameters ( - register word * din, /* [0..39] IN */ - register word * dp, /* [-120..-1] IN */ - word * bc_out, /* OUT */ - word * Nc_out /* OUT */ -) -{ - register int k, lambda; - word Nc, bc; - - float wt_float[40]; - float dp_float_base[120], * dp_float = dp_float_base + 120; - - longword L_max, L_power; - word R, S, dmax, scal; - register word temp; - - /* Search of the optimum scaling of d[0..39]. - */ - dmax = 0; - - for (k = 0; k <= 39; k++) { - temp = din [k] ; - temp = GSM_ABS (temp) ; - if (temp > dmax) dmax = temp; - } - - temp = 0; - if (dmax == 0) scal = 0; - else { - assert(dmax > 0); - temp = gsm_norm( (longword)dmax << 16 ); - } - - if (temp > 6) scal = 0; - else scal = 6 - temp; - - assert(scal >= 0); - - /* Initialization of a working array wt - */ - - for (k = 0; k < 40; k++) wt_float[k] = SASR_W (din [k], scal) ; - for (k = -120; k < 0; k++) dp_float[k] = dp[k]; - - /* Search for the maximum cross-correlation and coding of the LTP lag - */ - L_max = 0; - Nc = 40; /* index for the maximum cross-correlation */ - - for (lambda = 40; lambda <= 120; lambda += 9) { - - /* Calculate L_result for l = lambda .. lambda + 9. - */ - register float *lp = dp_float - lambda; - - register float W; - register float a = lp[-8], b = lp[-7], c = lp[-6], - d = lp[-5], e = lp[-4], f = lp[-3], - g = lp[-2], h = lp[-1]; - register float E; - register float S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0, - S5 = 0, S6 = 0, S7 = 0, S8 = 0; - -# undef STEP -# define STEP(K, a, b, c, d, e, f, g, h) \ - W = wt_float[K]; \ - E = W * a; S8 += E; \ - E = W * b; S7 += E; \ - E = W * c; S6 += E; \ - E = W * d; S5 += E; \ - E = W * e; S4 += E; \ - E = W * f; S3 += E; \ - E = W * g; S2 += E; \ - E = W * h; S1 += E; \ - a = lp[K]; \ - E = W * a; S0 += E - -# define STEP_A(K) STEP(K, a, b, c, d, e, f, g, h) -# define STEP_B(K) STEP(K, b, c, d, e, f, g, h, a) -# define STEP_C(K) STEP(K, c, d, e, f, g, h, a, b) -# define STEP_D(K) STEP(K, d, e, f, g, h, a, b, c) -# define STEP_E(K) STEP(K, e, f, g, h, a, b, c, d) -# define STEP_F(K) STEP(K, f, g, h, a, b, c, d, e) -# define STEP_G(K) STEP(K, g, h, a, b, c, d, e, f) -# define STEP_H(K) STEP(K, h, a, b, c, d, e, f, g) - - STEP_A( 0); STEP_B( 1); STEP_C( 2); STEP_D( 3); - STEP_E( 4); STEP_F( 5); STEP_G( 6); STEP_H( 7); - - STEP_A( 8); STEP_B( 9); STEP_C(10); STEP_D(11); - STEP_E(12); STEP_F(13); STEP_G(14); STEP_H(15); - - STEP_A(16); STEP_B(17); STEP_C(18); STEP_D(19); - STEP_E(20); STEP_F(21); STEP_G(22); STEP_H(23); - - STEP_A(24); STEP_B(25); STEP_C(26); STEP_D(27); - STEP_E(28); STEP_F(29); STEP_G(30); STEP_H(31); - - STEP_A(32); STEP_B(33); STEP_C(34); STEP_D(35); - STEP_E(36); STEP_F(37); STEP_G(38); STEP_H(39); - - if (S0 > L_max) { L_max = S0; Nc = lambda; } - if (S1 > L_max) { L_max = S1; Nc = lambda + 1; } - if (S2 > L_max) { L_max = S2; Nc = lambda + 2; } - if (S3 > L_max) { L_max = S3; Nc = lambda + 3; } - if (S4 > L_max) { L_max = S4; Nc = lambda + 4; } - if (S5 > L_max) { L_max = S5; Nc = lambda + 5; } - if (S6 > L_max) { L_max = S6; Nc = lambda + 6; } - if (S7 > L_max) { L_max = S7; Nc = lambda + 7; } - if (S8 > L_max) { L_max = S8; Nc = lambda + 8; } - } - *Nc_out = Nc; - - L_max <<= 1; - - /* Rescaling of L_max - */ - assert(scal <= 100 && scal >= -100); - L_max = L_max >> (6 - scal); /* sub(6, scal) */ - - assert( Nc <= 120 && Nc >= 40); - - /* Compute the power of the reconstructed short term residual - * signal dp[..] - */ - L_power = 0; - for (k = 0; k <= 39; k++) { - - register longword L_temp; - - L_temp = SASR_W( dp[k - Nc], 3 ); - L_power += L_temp * L_temp; - } - L_power <<= 1; /* from L_MULT */ - - /* Normalization of L_max and L_power - */ - - if (L_max <= 0) { - *bc_out = 0; - return; - } - if (L_max >= L_power) { - *bc_out = 3; - return; - } - - temp = gsm_norm( L_power ); - - R = SASR_L ( L_max << temp, 16 ); - S = SASR_L ( L_power << temp, 16 ); - - /* Coding of the LTP gain - */ - - /* Table 4.3a must be used to obtain the level DLB[i] for the - * quantization of the LTP gain b to get the coded version bc. - */ - for (bc = 0; bc <= 2; bc++) if (R <= gsm_mult(S, gsm_DLB[bc])) break; - *bc_out = bc; -} - -#ifdef FAST -#ifdef LTP_CUT - -static void Cut_Fast_Calculation_of_the_LTP_parameters ( - struct gsm_state * st, /* IN */ - register word * d, /* [0..39] IN */ - register word * dp, /* [-120..-1] IN */ - word * bc_out, /* OUT */ - word * Nc_out /* OUT */ -) -{ - register int k, lambda; - register float wt_float; - word Nc, bc; - word wt_max, best_k, ltp_cut; - - float dp_float_base[120], * dp_float = dp_float_base + 120; - - register float L_result, L_max, L_power; - - wt_max = 0; - - for (k = 0; k < 40; ++k) { - if ( d[k] > wt_max) wt_max = d[best_k = k]; - else if (-d[k] > wt_max) wt_max = -d[best_k = k]; - } - - assert(wt_max >= 0); - wt_float = (float)wt_max; - - for (k = -120; k < 0; ++k) dp_float[k] = (float)dp[k]; - - /* Search for the maximum cross-correlation and coding of the LTP lag - */ - L_max = 0; - Nc = 40; /* index for the maximum cross-correlation */ - - for (lambda = 40; lambda <= 120; lambda++) { - L_result = wt_float * dp_float[best_k - lambda]; - if (L_result > L_max) { - Nc = lambda; - L_max = L_result; - } - } - - *Nc_out = Nc; - if (L_max <= 0.) { - *bc_out = 0; - return; - } - - /* Compute the power of the reconstructed short term residual - * signal dp[..] - */ - dp_float -= Nc; - L_power = 0; - for (k = 0; k < 40; ++k) { - register float f = dp_float[k]; - L_power += f * f; - } - - if (L_max >= L_power) { - *bc_out = 3; - return; - } - - /* Coding of the LTP gain - * Table 4.3a must be used to obtain the level DLB[i] for the - * quantization of the LTP gain b to get the coded version bc. - */ - lambda = L_max / L_power * 32768.; - for (bc = 0; bc <= 2; ++bc) if (lambda <= gsm_DLB[bc]) break; - *bc_out = bc; -} - -#endif /* LTP_CUT */ - -static void Fast_Calculation_of_the_LTP_parameters ( - register word * din, /* [0..39] IN */ - register word * dp, /* [-120..-1] IN */ - word * bc_out, /* OUT */ - word * Nc_out /* OUT */ -) -{ - register int k, lambda; - word Nc, bc; - - float wt_float[40]; - float dp_float_base[120], * dp_float = dp_float_base + 120; - - register float L_max, L_power; - - for (k = 0; k < 40; ++k) wt_float[k] = (float) din [k] ; - for (k = -120; k < 0; ++k) dp_float[k] = (float) dp [k] ; - - /* Search for the maximum cross-correlation and coding of the LTP lag - */ - L_max = 0; - Nc = 40; /* index for the maximum cross-correlation */ - - for (lambda = 40; lambda <= 120; lambda += 9) { - - /* Calculate L_result for l = lambda .. lambda + 9. - */ - register float *lp = dp_float - lambda; - - register float W; - register float a = lp[-8], b = lp[-7], c = lp[-6], - d = lp[-5], e = lp[-4], f = lp[-3], - g = lp[-2], h = lp[-1]; - register float E; - register float S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0, - S5 = 0, S6 = 0, S7 = 0, S8 = 0; - -# undef STEP -# define STEP(K, a, b, c, d, e, f, g, h) \ - W = wt_float[K]; \ - E = W * a; S8 += E; \ - E = W * b; S7 += E; \ - E = W * c; S6 += E; \ - E = W * d; S5 += E; \ - E = W * e; S4 += E; \ - E = W * f; S3 += E; \ - E = W * g; S2 += E; \ - E = W * h; S1 += E; \ - a = lp[K]; \ - E = W * a; S0 += E - -# define STEP_A(K) STEP(K, a, b, c, d, e, f, g, h) -# define STEP_B(K) STEP(K, b, c, d, e, f, g, h, a) -# define STEP_C(K) STEP(K, c, d, e, f, g, h, a, b) -# define STEP_D(K) STEP(K, d, e, f, g, h, a, b, c) -# define STEP_E(K) STEP(K, e, f, g, h, a, b, c, d) -# define STEP_F(K) STEP(K, f, g, h, a, b, c, d, e) -# define STEP_G(K) STEP(K, g, h, a, b, c, d, e, f) -# define STEP_H(K) STEP(K, h, a, b, c, d, e, f, g) - - STEP_A( 0); STEP_B( 1); STEP_C( 2); STEP_D( 3); - STEP_E( 4); STEP_F( 5); STEP_G( 6); STEP_H( 7); - - STEP_A( 8); STEP_B( 9); STEP_C(10); STEP_D(11); - STEP_E(12); STEP_F(13); STEP_G(14); STEP_H(15); - - STEP_A(16); STEP_B(17); STEP_C(18); STEP_D(19); - STEP_E(20); STEP_F(21); STEP_G(22); STEP_H(23); - - STEP_A(24); STEP_B(25); STEP_C(26); STEP_D(27); - STEP_E(28); STEP_F(29); STEP_G(30); STEP_H(31); - - STEP_A(32); STEP_B(33); STEP_C(34); STEP_D(35); - STEP_E(36); STEP_F(37); STEP_G(38); STEP_H(39); - - if (S0 > L_max) { L_max = S0; Nc = lambda; } - if (S1 > L_max) { L_max = S1; Nc = lambda + 1; } - if (S2 > L_max) { L_max = S2; Nc = lambda + 2; } - if (S3 > L_max) { L_max = S3; Nc = lambda + 3; } - if (S4 > L_max) { L_max = S4; Nc = lambda + 4; } - if (S5 > L_max) { L_max = S5; Nc = lambda + 5; } - if (S6 > L_max) { L_max = S6; Nc = lambda + 6; } - if (S7 > L_max) { L_max = S7; Nc = lambda + 7; } - if (S8 > L_max) { L_max = S8; Nc = lambda + 8; } - } - *Nc_out = Nc; - - if (L_max <= 0.) { - *bc_out = 0; - return; - } - - /* Compute the power of the reconstructed short term residual - * signal dp[..] - */ - dp_float -= Nc; - L_power = 0; - for (k = 0; k < 40; ++k) { - register float f = dp_float[k]; - L_power += f * f; - } - - if (L_max >= L_power) { - *bc_out = 3; - return; - } - - /* Coding of the LTP gain - * Table 4.3a must be used to obtain the level DLB[i] for the - * quantization of the LTP gain b to get the coded version bc. - */ - lambda = L_max / L_power * 32768.; - for (bc = 0; bc <= 2; ++bc) if (lambda <= gsm_DLB[bc]) break; - *bc_out = bc; -} - -#endif /* FAST */ -#endif /* USE_FLOAT_MUL */ - - -/* 4.2.12 */ - -static void Long_term_analysis_filtering ( - word bc, /* IN */ - word Nc, /* IN */ - register word * dp, /* previous d [-120..-1] IN */ - register word * d, /* d [0..39] IN */ - register word * dpp, /* estimate [0..39] OUT */ - register word * e /* long term res. signal [0..39] OUT */ -) -/* - * In this part, we have to decode the bc parameter to compute - * the samples of the estimate dpp[0..39]. The decoding of bc needs the - * use of table 4.3b. The long term residual signal e[0..39] - * is then calculated to be fed to the RPE encoding section. - */ -{ - register int k; - -# undef STEP -# define STEP(BP) \ - for (k = 0; k <= 39; k++) { \ - dpp[k] = GSM_MULT_R( BP, dp[k - Nc]); \ - e[k] = GSM_SUB( d[k], dpp[k] ); \ - } - - switch (bc) { - case 0: STEP( 3277 ); break; - case 1: STEP( 11469 ); break; - case 2: STEP( 21299 ); break; - case 3: STEP( 32767 ); break; - } -} - -void Gsm_Long_Term_Predictor ( /* 4x for 160 samples */ - - struct gsm_state * S, - - word * d, /* [0..39] residual signal IN */ - word * dp, /* [-120..-1] d' IN */ - - word * e, /* [0..39] OUT */ - word * dpp, /* [0..39] OUT */ - word * Nc, /* correlation lag OUT */ - word * bc /* gain factor OUT */ -) -{ - assert( d ); assert( dp ); assert( e ); - assert( dpp); assert( Nc ); assert( bc ); - -#if defined(FAST) && defined(USE_FLOAT_MUL) - if (S->fast) -#if defined (LTP_CUT) - if (S->ltp_cut) - Cut_Fast_Calculation_of_the_LTP_parameters(S, - d, dp, bc, Nc); - else -#endif /* LTP_CUT */ - Fast_Calculation_of_the_LTP_parameters(d, dp, bc, Nc ); - else -#endif /* FAST & USE_FLOAT_MUL */ -#ifdef LTP_CUT - if (S->ltp_cut) - Cut_Calculation_of_the_LTP_parameters(S, d, dp, bc, Nc); - else -#endif - Calculation_of_the_LTP_parameters(d, dp, bc, Nc); - - Long_term_analysis_filtering( *bc, *Nc, dp, d, dpp, e ); -} - -/* 4.3.2 */ -void Gsm_Long_Term_Synthesis_Filtering ( - struct gsm_state * S, - - word Ncr, - word bcr, - register word * erp, /* [0..39] IN */ - register word * drp /* [-120..-1] IN, [-120..40] OUT */ -) -/* - * This procedure uses the bcr and Ncr parameter to realize the - * long term synthesis filtering. The decoding of bcr needs - * table 4.3b. - */ -{ - register int k; - word brp, drpp, Nr; - - /* Check the limits of Nr. - */ - Nr = Ncr < 40 || Ncr > 120 ? S->nrp : Ncr; - S->nrp = Nr; - assert(Nr >= 40 && Nr <= 120); - - /* Decoding of the LTP gain bcr - */ - brp = gsm_QLB[ bcr ]; - - /* Computation of the reconstructed short term residual - * signal drp[0..39] - */ - assert(brp != MIN_WORD); - - for (k = 0; k <= 39; k++) { - drpp = GSM_MULT_R( brp, drp[ k - Nr ] ); - drp[k] = GSM_ADD( erp[k], drpp ); - } - - /* - * Update of the reconstructed short term residual signal - * drp[ -1..-120 ] - */ - - for (k = 0; k <= 119; k++) drp[ -120 + k ] = drp[ -80 + k ]; -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: b369b90d-0284-42a0-87b0-99a25bbd93ac -*/ - diff --git a/libs/libsndfile/src/GSM610/lpc.c b/libs/libsndfile/src/GSM610/lpc.c deleted file mode 100644 index 0a879f354a..0000000000 --- a/libs/libsndfile/src/GSM610/lpc.c +++ /dev/null @@ -1,341 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - -#include -#include - -#include "gsm610_priv.h" - -#include "gsm.h" - -/* - * 4.2.4 .. 4.2.7 LPC ANALYSIS SECTION - */ - -/* 4.2.4 */ - - -static void Autocorrelation ( - word * s, /* [0..159] IN/OUT */ - longword * L_ACF) /* [0..8] OUT */ -/* - * The goal is to compute the array L_ACF[k]. The signal s[i] must - * be scaled in order to avoid an overflow situation. - */ -{ - register int k, i; - - word temp, smax, scalauto; - -#ifdef USE_FLOAT_MUL - float float_s[160]; -#endif - - /* Dynamic scaling of the array s[0..159] - */ - - /* Search for the maximum. - */ - smax = 0; - for (k = 0; k <= 159; k++) { - temp = GSM_ABS( s[k] ); - if (temp > smax) smax = temp; - } - - /* Computation of the scaling factor. - */ - if (smax == 0) scalauto = 0; - else { - assert(smax > 0); - scalauto = 4 - gsm_norm( (longword)smax << 16 );/* sub(4,..) */ - } - - /* Scaling of the array s[0...159] - */ - - if (scalauto > 0) { - -# ifdef USE_FLOAT_MUL -# define SCALE(n) \ - case n: for (k = 0; k <= 159; k++) \ - float_s[k] = (float) \ - (s[k] = GSM_MULT_R(s[k], 16384 >> (n-1)));\ - break; -# else -# define SCALE(n) \ - case n: for (k = 0; k <= 159; k++) \ - s[k] = GSM_MULT_R( s[k], 16384 >> (n-1) );\ - break; -# endif /* USE_FLOAT_MUL */ - - switch (scalauto) { - SCALE(1) - SCALE(2) - SCALE(3) - SCALE(4) - } -# undef SCALE - } -# ifdef USE_FLOAT_MUL - else for (k = 0; k <= 159; k++) float_s[k] = (float) s[k]; -# endif - - /* Compute the L_ACF[..]. - */ - { -# ifdef USE_FLOAT_MUL - register float * sp = float_s; - register float sl = *sp; - -# define STEP(k) L_ACF[k] += (longword)(sl * sp[ -(k) ]); -# else - word * sp = s; - word sl = *sp; - -# define STEP(k) L_ACF[k] += ((longword)sl * sp[ -(k) ]); -# endif - -# define NEXTI sl = *++sp - - - for (k = 9; k--; L_ACF[k] = 0) ; - - STEP (0); - NEXTI; - STEP(0); STEP(1); - NEXTI; - STEP(0); STEP(1); STEP(2); - NEXTI; - STEP(0); STEP(1); STEP(2); STEP(3); - NEXTI; - STEP(0); STEP(1); STEP(2); STEP(3); STEP(4); - NEXTI; - STEP(0); STEP(1); STEP(2); STEP(3); STEP(4); STEP(5); - NEXTI; - STEP(0); STEP(1); STEP(2); STEP(3); STEP(4); STEP(5); STEP(6); - NEXTI; - STEP(0); STEP(1); STEP(2); STEP(3); STEP(4); STEP(5); STEP(6); STEP(7); - - for (i = 8; i <= 159; i++) { - - NEXTI; - - STEP(0); - STEP(1); STEP(2); STEP(3); STEP(4); - STEP(5); STEP(6); STEP(7); STEP(8); - } - - for (k = 9; k--; L_ACF[k] <<= 1) ; - - } - /* Rescaling of the array s[0..159] - */ - if (scalauto > 0) { - assert(scalauto <= 4); - for (k = 160; k--; *s++ <<= scalauto) ; - } -} - -#if defined(USE_FLOAT_MUL) && defined(FAST) - -static void Fast_Autocorrelation ( - word * s, /* [0..159] IN/OUT */ - longword * L_ACF) /* [0..8] OUT */ -{ - register int k, i; - float f_L_ACF[9]; - float scale; - - float s_f[160]; - register float *sf = s_f; - - for (i = 0; i < 160; ++i) sf[i] = s[i]; - for (k = 0; k <= 8; k++) { - register float L_temp2 = 0; - register float *sfl = sf - k; - for (i = k; i < 160; ++i) L_temp2 += sf[i] * sfl[i]; - f_L_ACF[k] = L_temp2; - } - scale = MAX_LONGWORD / f_L_ACF[0]; - - for (k = 0; k <= 8; k++) { - L_ACF[k] = f_L_ACF[k] * scale; - } -} -#endif /* defined (USE_FLOAT_MUL) && defined (FAST) */ - -/* 4.2.5 */ - -static void Reflection_coefficients ( - longword * L_ACF, /* 0...8 IN */ - register word * r /* 0...7 OUT */ -) -{ - register int i, m, n; - register word temp; - word ACF[9]; /* 0..8 */ - word P[ 9]; /* 0..8 */ - word K[ 9]; /* 2..8 */ - - /* Schur recursion with 16 bits arithmetic. - */ - - if (L_ACF[0] == 0) { - for (i = 8; i--; *r++ = 0) ; - return; - } - - assert( L_ACF[0] != 0 ); - temp = gsm_norm( L_ACF[0] ); - - assert(temp >= 0 && temp < 32); - - /* ? overflow ? */ - for (i = 0; i <= 8; i++) ACF[i] = SASR_L( L_ACF[i] << temp, 16 ); - - /* Initialize array P[..] and K[..] for the recursion. - */ - - for (i = 1; i <= 7; i++) K[ i ] = ACF[ i ]; - for (i = 0; i <= 8; i++) P[ i ] = ACF[ i ]; - - /* Compute reflection coefficients - */ - for (n = 1; n <= 8; n++, r++) { - - temp = P[1]; - temp = GSM_ABS(temp); - if (P[0] < temp) { - for (i = n; i <= 8; i++) *r++ = 0; - return; - } - - *r = gsm_div( temp, P[0] ); - - assert(*r >= 0); - if (P[1] > 0) *r = -*r; /* r[n] = sub(0, r[n]) */ - assert (*r != MIN_WORD); - if (n == 8) return; - - /* Schur recursion - */ - temp = GSM_MULT_R( P[1], *r ); - P[0] = GSM_ADD( P[0], temp ); - - for (m = 1; m <= 8 - n; m++) { - temp = GSM_MULT_R( K[ m ], *r ); - P[m] = GSM_ADD( P[ m+1 ], temp ); - - temp = GSM_MULT_R( P[ m+1 ], *r ); - K[m] = GSM_ADD( K[ m ], temp ); - } - } -} - -/* 4.2.6 */ - -static void Transformation_to_Log_Area_Ratios ( - register word * r /* 0..7 IN/OUT */ -) -/* - * The following scaling for r[..] and LAR[..] has been used: - * - * r[..] = integer( real_r[..]*32768. ); -1 <= real_r < 1. - * LAR[..] = integer( real_LAR[..] * 16384 ); - * with -1.625 <= real_LAR <= 1.625 - */ -{ - register word temp; - register int i; - - - /* Computation of the LAR[0..7] from the r[0..7] - */ - for (i = 1; i <= 8; i++, r++) { - - temp = *r; - temp = GSM_ABS(temp); - assert(temp >= 0); - - if (temp < 22118) { - temp >>= 1; - } else if (temp < 31130) { - assert( temp >= 11059 ); - temp -= 11059; - } else { - assert( temp >= 26112 ); - temp -= 26112; - temp <<= 2; - } - - *r = *r < 0 ? -temp : temp; - assert( *r != MIN_WORD ); - } -} - -/* 4.2.7 */ - -static void Quantization_and_coding ( - register word * LAR /* [0..7] IN/OUT */ -) -{ - register word temp; - - /* This procedure needs four tables; the following equations - * give the optimum scaling for the constants: - * - * A[0..7] = integer( real_A[0..7] * 1024 ) - * B[0..7] = integer( real_B[0..7] * 512 ) - * MAC[0..7] = maximum of the LARc[0..7] - * MIC[0..7] = minimum of the LARc[0..7] - */ - -# undef STEP -# define STEP( A, B, MAC, MIC ) \ - temp = GSM_MULT( A, *LAR ); \ - temp = GSM_ADD( temp, B ); \ - temp = GSM_ADD( temp, 256 ); \ - temp = SASR_W( temp, 9 ); \ - *LAR = temp>MAC ? MAC - MIC : (tempfast) Fast_Autocorrelation (s, L_ACF ); - else -#endif - Autocorrelation (s, L_ACF ); - Reflection_coefficients (L_ACF, LARc ); - Transformation_to_Log_Area_Ratios (LARc); - Quantization_and_coding (LARc); -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 63146664-a002-4e1e-8b7b-f0cc8a6a53da -*/ - diff --git a/libs/libsndfile/src/GSM610/preprocess.c b/libs/libsndfile/src/GSM610/preprocess.c deleted file mode 100644 index d1b473d693..0000000000 --- a/libs/libsndfile/src/GSM610/preprocess.c +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - -#include -#include - -#include "gsm610_priv.h" - -#include "gsm.h" - -/* 4.2.0 .. 4.2.3 PREPROCESSING SECTION - * - * After A-law to linear conversion (or directly from the - * Ato D converter) the following scaling is assumed for - * input to the RPE-LTP algorithm: - * - * in: 0.1.....................12 - * S.v.v.v.v.v.v.v.v.v.v.v.v.*.*.* - * - * Where S is the sign bit, v a valid bit, and * a "don't care" bit. - * The original signal is called sop[..] - * - * out: 0.1................... 12 - * S.S.v.v.v.v.v.v.v.v.v.v.v.v.0.0 - */ - - -void Gsm_Preprocess ( - struct gsm_state * S, - word * s, - word * so ) /* [0..159] IN/OUT */ -{ - - word z1 = S->z1; - longword L_z2 = S->L_z2; - word mp = S->mp; - - word s1; - longword L_s2; - - longword L_temp; - - word msp, lsp; - word SO; - - register int k = 160; - - while (k--) { - - /* 4.2.1 Downscaling of the input signal - */ - SO = SASR_W( *s, 3 ) << 2; - s++; - - assert (SO >= -0x4000); /* downscaled by */ - assert (SO <= 0x3FFC); /* previous routine. */ - - - /* 4.2.2 Offset compensation - * - * This part implements a high-pass filter and requires extended - * arithmetic precision for the recursive part of this filter. - * The input of this procedure is the array so[0...159] and the - * output the array sof[ 0...159 ]. - */ - /* Compute the non-recursive part - */ - - s1 = SO - z1; /* s1 = gsm_sub( *so, z1 ); */ - z1 = SO; - - assert(s1 != MIN_WORD); - - /* Compute the recursive part - */ - L_s2 = s1; - L_s2 <<= 15; - - /* Execution of a 31 bv 16 bits multiplication - */ - - msp = SASR_L( L_z2, 15 ); - lsp = L_z2-((longword)msp<<15); /* gsm_L_sub(L_z2,(msp<<15)); */ - - L_s2 += GSM_MULT_R( lsp, 32735 ); - L_temp = (longword)msp * 32735; /* GSM_L_MULT(msp,32735) >> 1;*/ - L_z2 = GSM_L_ADD( L_temp, L_s2 ); - - /* Compute sof[k] with rounding - */ - L_temp = GSM_L_ADD( L_z2, 16384 ); - - /* 4.2.3 Preemphasis - */ - - msp = GSM_MULT_R( mp, -28180 ); - mp = SASR_L( L_temp, 15 ); - *so++ = GSM_ADD( mp, msp ); - } - - S->z1 = z1; - S->L_z2 = L_z2; - S->mp = mp; -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: b760b0d9-3a05-4da3-9dc9-441ffb905d87 -*/ - diff --git a/libs/libsndfile/src/GSM610/rpe.c b/libs/libsndfile/src/GSM610/rpe.c deleted file mode 100644 index 1d91f38be0..0000000000 --- a/libs/libsndfile/src/GSM610/rpe.c +++ /dev/null @@ -1,490 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - -#include -#include - -#include "gsm610_priv.h" - -#include "gsm.h" - -/* 4.2.13 .. 4.2.17 RPE ENCODING SECTION - */ - -/* 4.2.13 */ - -static void Weighting_filter ( - register word * e, /* signal [-5..0.39.44] IN */ - word * x /* signal [0..39] OUT */ -) -/* - * The coefficients of the weighting filter are stored in a table - * (see table 4.4). The following scaling is used: - * - * H[0..10] = integer( real_H[ 0..10] * 8192 ); - */ -{ - /* word wt[ 50 ]; */ - - register longword L_result; - register int k /* , i */ ; - - /* Initialization of a temporary working array wt[0...49] - */ - - /* for (k = 0; k <= 4; k++) wt[k] = 0; - * for (k = 5; k <= 44; k++) wt[k] = *e++; - * for (k = 45; k <= 49; k++) wt[k] = 0; - * - * (e[-5..-1] and e[40..44] are allocated by the caller, - * are initially zero and are not written anywhere.) - */ - e -= 5; - - /* Compute the signal x[0..39] - */ - for (k = 0; k <= 39; k++) { - - L_result = 8192 >> 1; - - /* for (i = 0; i <= 10; i++) { - * L_temp = GSM_L_MULT( wt[k+i], gsm_H[i] ); - * L_result = GSM_L_ADD( L_result, L_temp ); - * } - */ - -#undef STEP -#define STEP( i, H ) (e[ k + i ] * (longword)H) - - /* Every one of these multiplications is done twice -- - * but I don't see an elegant way to optimize this. - * Do you? - */ - -#ifdef STUPID_COMPILER - L_result += STEP( 0, -134 ) ; - L_result += STEP( 1, -374 ) ; - /* + STEP( 2, 0 ) */ - L_result += STEP( 3, 2054 ) ; - L_result += STEP( 4, 5741 ) ; - L_result += STEP( 5, 8192 ) ; - L_result += STEP( 6, 5741 ) ; - L_result += STEP( 7, 2054 ) ; - /* + STEP( 8, 0 ) */ - L_result += STEP( 9, -374 ) ; - L_result += STEP( 10, -134 ) ; -#else - L_result += - STEP( 0, -134 ) - + STEP( 1, -374 ) - /* + STEP( 2, 0 ) */ - + STEP( 3, 2054 ) - + STEP( 4, 5741 ) - + STEP( 5, 8192 ) - + STEP( 6, 5741 ) - + STEP( 7, 2054 ) - /* + STEP( 8, 0 ) */ - + STEP( 9, -374 ) - + STEP(10, -134 ) - ; -#endif - - /* L_result = GSM_L_ADD( L_result, L_result ); (* scaling(x2) *) - * L_result = GSM_L_ADD( L_result, L_result ); (* scaling(x4) *) - * - * x[k] = SASR( L_result, 16 ); - */ - - /* 2 adds vs. >>16 => 14, minus one shift to compensate for - * those we lost when replacing L_MULT by '*'. - */ - - L_result = SASR_L( L_result, 13 ); - x[k] = ( L_result < MIN_WORD ? MIN_WORD - : (L_result > MAX_WORD ? MAX_WORD : L_result )); - } -} - -/* 4.2.14 */ - -static void RPE_grid_selection ( - word * x, /* [0..39] IN */ - word * xM, /* [0..12] OUT */ - word * Mc_out /* OUT */ -) -/* - * The signal x[0..39] is used to select the RPE grid which is - * represented by Mc. - */ -{ - /* register word temp1; */ - register int /* m, */ i; - register longword L_result, L_temp; - longword EM; /* xxx should be L_EM? */ - word Mc; - - longword L_common_0_3; - - EM = 0; - Mc = 0; - - /* for (m = 0; m <= 3; m++) { - * L_result = 0; - * - * - * for (i = 0; i <= 12; i++) { - * - * temp1 = SASR_W( x[m + 3*i], 2 ); - * - * assert(temp1 != MIN_WORD); - * - * L_temp = GSM_L_MULT( temp1, temp1 ); - * L_result = GSM_L_ADD( L_temp, L_result ); - * } - * - * if (L_result > EM) { - * Mc = m; - * EM = L_result; - * } - * } - */ - -#undef STEP -#define STEP( m, i ) L_temp = SASR_W( x[m + 3 * i], 2 ); \ - L_result += L_temp * L_temp; - - /* common part of 0 and 3 */ - - L_result = 0; - STEP( 0, 1 ); STEP( 0, 2 ); STEP( 0, 3 ); STEP( 0, 4 ); - STEP( 0, 5 ); STEP( 0, 6 ); STEP( 0, 7 ); STEP( 0, 8 ); - STEP( 0, 9 ); STEP( 0, 10); STEP( 0, 11); STEP( 0, 12); - L_common_0_3 = L_result; - - /* i = 0 */ - - STEP( 0, 0 ); - L_result <<= 1; /* implicit in L_MULT */ - EM = L_result; - - /* i = 1 */ - - L_result = 0; - STEP( 1, 0 ); - STEP( 1, 1 ); STEP( 1, 2 ); STEP( 1, 3 ); STEP( 1, 4 ); - STEP( 1, 5 ); STEP( 1, 6 ); STEP( 1, 7 ); STEP( 1, 8 ); - STEP( 1, 9 ); STEP( 1, 10); STEP( 1, 11); STEP( 1, 12); - L_result <<= 1; - if (L_result > EM) { - Mc = 1; - EM = L_result; - } - - /* i = 2 */ - - L_result = 0; - STEP( 2, 0 ); - STEP( 2, 1 ); STEP( 2, 2 ); STEP( 2, 3 ); STEP( 2, 4 ); - STEP( 2, 5 ); STEP( 2, 6 ); STEP( 2, 7 ); STEP( 2, 8 ); - STEP( 2, 9 ); STEP( 2, 10); STEP( 2, 11); STEP( 2, 12); - L_result <<= 1; - if (L_result > EM) { - Mc = 2; - EM = L_result; - } - - /* i = 3 */ - - L_result = L_common_0_3; - STEP( 3, 12 ); - L_result <<= 1; - if (L_result > EM) { - Mc = 3; - EM = L_result; - } - - /**/ - - /* Down-sampling by a factor 3 to get the selected xM[0..12] - * RPE sequence. - */ - for (i = 0; i <= 12; i ++) xM[i] = x[Mc + 3*i]; - *Mc_out = Mc; -} - -/* 4.12.15 */ - -static void APCM_quantization_xmaxc_to_exp_mant ( - word xmaxc, /* IN */ - word * expon_out, /* OUT */ - word * mant_out ) /* OUT */ -{ - word expon, mant; - - /* Compute expononent and mantissa of the decoded version of xmaxc - */ - - expon = 0; - if (xmaxc > 15) expon = SASR_W(xmaxc, 3) - 1; - mant = xmaxc - (expon << 3); - - if (mant == 0) { - expon = -4; - mant = 7; - } - else { - while (mant <= 7) { - mant = mant << 1 | 1; - expon--; - } - mant -= 8; - } - - assert( expon >= -4 && expon <= 6 ); - assert( mant >= 0 && mant <= 7 ); - - *expon_out = expon; - *mant_out = mant; -} - -static void APCM_quantization ( - word * xM, /* [0..12] IN */ - word * xMc, /* [0..12] OUT */ - word * mant_out, /* OUT */ - word * expon_out, /* OUT */ - word * xmaxc_out /* OUT */ -) -{ - int i, itest; - - word xmax, xmaxc, temp, temp1, temp2; - word expon, mant; - - - /* Find the maximum absolute value xmax of xM[0..12]. - */ - - xmax = 0; - for (i = 0; i <= 12; i++) { - temp = xM[i]; - temp = GSM_ABS(temp); - if (temp > xmax) xmax = temp; - } - - /* Qantizing and coding of xmax to get xmaxc. - */ - - expon = 0; - temp = SASR_W( xmax, 9 ); - itest = 0; - - for (i = 0; i <= 5; i++) { - - itest |= (temp <= 0); - temp = SASR_W( temp, 1 ); - - assert(expon <= 5); - if (itest == 0) expon++; /* expon = add (expon, 1) */ - } - - assert(expon <= 6 && expon >= 0); - temp = expon + 5; - - assert(temp <= 11 && temp >= 0); - xmaxc = gsm_add( SASR_W(xmax, temp), (word) (expon << 3) ); - - /* Quantizing and coding of the xM[0..12] RPE sequence - * to get the xMc[0..12] - */ - - APCM_quantization_xmaxc_to_exp_mant( xmaxc, &expon, &mant ); - - /* This computation uses the fact that the decoded version of xmaxc - * can be calculated by using the expononent and the mantissa part of - * xmaxc (logarithmic table). - * So, this method avoids any division and uses only a scaling - * of the RPE samples by a function of the expononent. A direct - * multiplication by the inverse of the mantissa (NRFAC[0..7] - * found in table 4.5) gives the 3 bit coded version xMc[0..12] - * of the RPE samples. - */ - - - /* Direct computation of xMc[0..12] using table 4.5 - */ - - assert( expon <= 4096 && expon >= -4096); - assert( mant >= 0 && mant <= 7 ); - - temp1 = 6 - expon; /* normalization by the expononent */ - temp2 = gsm_NRFAC[ mant ]; /* inverse mantissa */ - - for (i = 0; i <= 12; i++) { - - assert(temp1 >= 0 && temp1 < 16); - - temp = xM[i] << temp1; - temp = GSM_MULT( temp, temp2 ); - temp = SASR_W(temp, 12); - xMc[i] = temp + 4; /* see note below */ - } - - /* NOTE: This equation is used to make all the xMc[i] positive. - */ - - *mant_out = mant; - *expon_out = expon; - *xmaxc_out = xmaxc; -} - -/* 4.2.16 */ - -static void APCM_inverse_quantization ( - register word * xMc, /* [0..12] IN */ - word mant, - word expon, - register word * xMp) /* [0..12] OUT */ -/* - * This part is for decoding the RPE sequence of coded xMc[0..12] - * samples to obtain the xMp[0..12] array. Table 4.6 is used to get - * the mantissa of xmaxc (FAC[0..7]). - */ -{ - int i; - word temp, temp1, temp2, temp3; - - assert( mant >= 0 && mant <= 7 ); - - temp1 = gsm_FAC[ mant ]; /* see 4.2-15 for mant */ - temp2 = gsm_sub( 6, expon ); /* see 4.2-15 for exp */ - temp3 = gsm_asl( 1, gsm_sub( temp2, 1 )); - - for (i = 13; i--;) { - - assert( *xMc <= 7 && *xMc >= 0 ); /* 3 bit unsigned */ - - /* temp = gsm_sub( *xMc++ << 1, 7 ); */ - temp = (*xMc++ << 1) - 7; /* restore sign */ - assert( temp <= 7 && temp >= -7 ); /* 4 bit signed */ - - temp <<= 12; /* 16 bit signed */ - temp = GSM_MULT_R( temp1, temp ); - temp = GSM_ADD( temp, temp3 ); - *xMp++ = gsm_asr( temp, temp2 ); - } -} - -/* 4.2.17 */ - -static void RPE_grid_positioning ( - word Mc, /* grid position IN */ - register word * xMp, /* [0..12] IN */ - register word * ep /* [0..39] OUT */ -) -/* - * This procedure computes the reconstructed long term residual signal - * ep[0..39] for the LTP analysis filter. The inputs are the Mc - * which is the grid position selection and the xMp[0..12] decoded - * RPE samples which are upsampled by a factor of 3 by inserting zero - * values. - */ -{ - int i = 13; - - assert(0 <= Mc && Mc <= 3); - - switch (Mc) { - case 3: *ep++ = 0; - case 2: do { - *ep++ = 0; - case 1: *ep++ = 0; - case 0: *ep++ = *xMp++; - } while (--i); - } - while (++Mc < 4) *ep++ = 0; - - /* - - int i, k; - for (k = 0; k <= 39; k++) ep[k] = 0; - for (i = 0; i <= 12; i++) { - ep[ Mc + (3*i) ] = xMp[i]; - } - */ -} - -/* 4.2.18 */ - -/* This procedure adds the reconstructed long term residual signal - * ep[0..39] to the estimated signal dpp[0..39] from the long term - * analysis filter to compute the reconstructed short term residual - * signal dp[-40..-1]; also the reconstructed short term residual - * array dp[-120..-41] is updated. - */ - -#if 0 /* Has been inlined in code.c */ -void Gsm_Update_of_reconstructed_short_time_residual_signal ( - word * dpp, /* [0...39] IN */ - word * ep, /* [0...39] IN */ - word * dp) /* [-120...-1] IN/OUT */ -{ - int k; - - for (k = 0; k <= 79; k++) - dp[ -120 + k ] = dp[ -80 + k ]; - - for (k = 0; k <= 39; k++) - dp[ -40 + k ] = gsm_add( ep[k], dpp[k] ); -} -#endif /* Has been inlined in code.c */ - -void Gsm_RPE_Encoding ( - /*-struct gsm_state * S,-*/ - - word * e, /* -5..-1][0..39][40..44 IN/OUT */ - word * xmaxc, /* OUT */ - word * Mc, /* OUT */ - word * xMc) /* [0..12] OUT */ -{ - word x[40]; - word xM[13], xMp[13]; - word mant, expon; - - Weighting_filter(e, x); - RPE_grid_selection(x, xM, Mc); - - APCM_quantization( xM, xMc, &mant, &expon, xmaxc); - APCM_inverse_quantization( xMc, mant, expon, xMp); - - RPE_grid_positioning( *Mc, xMp, e ); - -} - -void Gsm_RPE_Decoding ( - /*-struct gsm_state * S,-*/ - - word xmaxcr, - word Mcr, - word * xMcr, /* [0..12], 3 bits IN */ - word * erp /* [0..39] OUT */ -) -{ - word expon, mant; - word xMp[ 13 ]; - - APCM_quantization_xmaxc_to_exp_mant( xmaxcr, &expon, &mant ); - APCM_inverse_quantization( xMcr, mant, expon, xMp ); - RPE_grid_positioning( Mcr, xMp, erp ); - -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 82005b9e-1560-4e94-9ddb-00cb14867295 -*/ - diff --git a/libs/libsndfile/src/GSM610/short_term.c b/libs/libsndfile/src/GSM610/short_term.c deleted file mode 100644 index 0174b05232..0000000000 --- a/libs/libsndfile/src/GSM610/short_term.c +++ /dev/null @@ -1,427 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - -#include -#include - -#include "gsm610_priv.h" - -#include "gsm.h" - -/* - * SHORT TERM ANALYSIS FILTERING SECTION - */ - -/* 4.2.8 */ - -static void Decoding_of_the_coded_Log_Area_Ratios ( - word * LARc, /* coded log area ratio [0..7] IN */ - word * LARpp) /* out: decoded .. */ -{ - register word temp1 /* , temp2 */; - - /* This procedure requires for efficient implementation - * two tables. - * - * INVA[1..8] = integer( (32768 * 8) / real_A[1..8]) - * MIC[1..8] = minimum value of the LARc[1..8] - */ - - /* Compute the LARpp[1..8] - */ - - /* for (i = 1; i <= 8; i++, B++, MIC++, INVA++, LARc++, LARpp++) { - * - * temp1 = GSM_ADD( *LARc, *MIC ) << 10; - * temp2 = *B << 1; - * temp1 = GSM_SUB( temp1, temp2 ); - * - * assert(*INVA != MIN_WORD); - * - * temp1 = GSM_MULT_R( *INVA, temp1 ); - * *LARpp = GSM_ADD( temp1, temp1 ); - * } - */ - -#undef STEP -#define STEP( B, MIC, INVA ) \ - temp1 = GSM_ADD( *LARc++, MIC ) << 10; \ - temp1 = GSM_SUB( temp1, B << 1 ); \ - temp1 = GSM_MULT_R( INVA, temp1 ); \ - *LARpp++ = GSM_ADD( temp1, temp1 ); - - STEP( 0, -32, 13107 ); - STEP( 0, -32, 13107 ); - STEP( 2048, -16, 13107 ); - STEP( -2560, -16, 13107 ); - - STEP( 94, -8, 19223 ); - STEP( -1792, -8, 17476 ); - STEP( -341, -4, 31454 ); - STEP( -1144, -4, 29708 ); - - /* NOTE: the addition of *MIC is used to restore - * the sign of *LARc. - */ -} - -/* 4.2.9 */ -/* Computation of the quantized reflection coefficients - */ - -/* 4.2.9.1 Interpolation of the LARpp[1..8] to get the LARp[1..8] - */ - -/* - * Within each frame of 160 analyzed speech samples the short term - * analysis and synthesis filters operate with four different sets of - * coefficients, derived from the previous set of decoded LARs(LARpp(j-1)) - * and the actual set of decoded LARs (LARpp(j)) - * - * (Initial value: LARpp(j-1)[1..8] = 0.) - */ - -static void Coefficients_0_12 ( - register word * LARpp_j_1, - register word * LARpp_j, - register word * LARp) -{ - register int i; - - for (i = 1; i <= 8; i++, LARp++, LARpp_j_1++, LARpp_j++) { - *LARp = GSM_ADD( SASR_W( *LARpp_j_1, 2 ), SASR_W( *LARpp_j, 2 )); - *LARp = GSM_ADD( *LARp, SASR_W( *LARpp_j_1, 1)); - } -} - -static void Coefficients_13_26 ( - register word * LARpp_j_1, - register word * LARpp_j, - register word * LARp) -{ - register int i; - for (i = 1; i <= 8; i++, LARpp_j_1++, LARpp_j++, LARp++) { - *LARp = GSM_ADD( SASR_W( *LARpp_j_1, 1), SASR_W( *LARpp_j, 1 )); - } -} - -static void Coefficients_27_39 ( - register word * LARpp_j_1, - register word * LARpp_j, - register word * LARp) -{ - register int i; - - for (i = 1; i <= 8; i++, LARpp_j_1++, LARpp_j++, LARp++) { - *LARp = GSM_ADD( SASR_W( *LARpp_j_1, 2 ), SASR_W( *LARpp_j, 2 )); - *LARp = GSM_ADD( *LARp, SASR_W( *LARpp_j, 1 )); - } -} - - -static void Coefficients_40_159 ( - register word * LARpp_j, - register word * LARp) -{ - register int i; - - for (i = 1; i <= 8; i++, LARp++, LARpp_j++) - *LARp = *LARpp_j; -} - -/* 4.2.9.2 */ - -static void LARp_to_rp ( - register word * LARp) /* [0..7] IN/OUT */ -/* - * The input of this procedure is the interpolated LARp[0..7] array. - * The reflection coefficients, rp[i], are used in the analysis - * filter and in the synthesis filter. - */ -{ - register int i; - register word temp; - - for (i = 1; i <= 8; i++, LARp++) { - - /* temp = GSM_ABS( *LARp ); - * - * if (temp < 11059) temp <<= 1; - * else if (temp < 20070) temp += 11059; - * else temp = GSM_ADD( temp >> 2, 26112 ); - * - * *LARp = *LARp < 0 ? -temp : temp; - */ - - if (*LARp < 0) { - temp = *LARp == MIN_WORD ? MAX_WORD : -(*LARp); - *LARp = - ((temp < 11059) ? temp << 1 - : ((temp < 20070) ? temp + 11059 - : GSM_ADD( (word) (temp >> 2), (word) 26112 ))); - } else { - temp = *LARp; - *LARp = (temp < 11059) ? temp << 1 - : ((temp < 20070) ? temp + 11059 - : GSM_ADD( (word) (temp >> 2), (word) 26112 )); - } - } -} - - -/* 4.2.10 */ -static void Short_term_analysis_filtering ( - struct gsm_state * S, - register word * rp, /* [0..7] IN */ - register int k_n, /* k_end - k_start */ - register word * s /* [0..n-1] IN/OUT */ -) -/* - * This procedure computes the short term residual signal d[..] to be fed - * to the RPE-LTP loop from the s[..] signal and from the local rp[..] - * array (quantized reflection coefficients). As the call of this - * procedure can be done in many ways (see the interpolation of the LAR - * coefficient), it is assumed that the computation begins with index - * k_start (for arrays d[..] and s[..]) and stops with index k_end - * (k_start and k_end are defined in 4.2.9.1). This procedure also - * needs to keep the array u[0..7] in memory for each call. - */ -{ - register word * u = S->u; - register int i; - register word di, zzz, ui, sav, rpi; - - for (; k_n--; s++) { - - di = sav = *s; - - for (i = 0; i < 8; i++) { /* YYY */ - - ui = u[i]; - rpi = rp[i]; - u[i] = sav; - - zzz = GSM_MULT_R(rpi, di); - sav = GSM_ADD( ui, zzz); - - zzz = GSM_MULT_R(rpi, ui); - di = GSM_ADD( di, zzz ); - } - - *s = di; - } -} - -#if defined(USE_FLOAT_MUL) && defined(FAST) - -static void Fast_Short_term_analysis_filtering ( - struct gsm_state * S, - register word * rp, /* [0..7] IN */ - register int k_n, /* k_end - k_start */ - register word * s /* [0..n-1] IN/OUT */ -) -{ - register word * u = S->u; - register int i; - - float uf[8], - rpf[8]; - - register float scalef = 3.0517578125e-5; - register float sav, di, temp; - - for (i = 0; i < 8; ++i) { - uf[i] = u[i]; - rpf[i] = rp[i] * scalef; - } - for (; k_n--; s++) { - sav = di = *s; - for (i = 0; i < 8; ++i) { - register float rpfi = rpf[i]; - register float ufi = uf[i]; - - uf[i] = sav; - temp = rpfi * di + ufi; - di += rpfi * ufi; - sav = temp; - } - *s = di; - } - for (i = 0; i < 8; ++i) u[i] = uf[i]; -} -#endif /* ! (defined (USE_FLOAT_MUL) && defined (FAST)) */ - -static void Short_term_synthesis_filtering ( - struct gsm_state * S, - register word * rrp, /* [0..7] IN */ - register int k, /* k_end - k_start */ - register word * wt, /* [0..k-1] IN */ - register word * sr /* [0..k-1] OUT */ -) -{ - register word * v = S->v; - register int i; - register word sri, tmp1, tmp2; - - while (k--) { - sri = *wt++; - for (i = 8; i--;) { - - /* sri = GSM_SUB( sri, gsm_mult_r( rrp[i], v[i] ) ); - */ - tmp1 = rrp[i]; - tmp2 = v[i]; - tmp2 = ( tmp1 == MIN_WORD && tmp2 == MIN_WORD - ? MAX_WORD - : 0x0FFFF & (( (longword)tmp1 * (longword)tmp2 - + 16384) >> 15)) ; - - sri = GSM_SUB( sri, tmp2 ); - - /* v[i+1] = GSM_ADD( v[i], gsm_mult_r( rrp[i], sri ) ); - */ - tmp1 = ( tmp1 == MIN_WORD && sri == MIN_WORD - ? MAX_WORD - : 0x0FFFF & (( (longword)tmp1 * (longword)sri - + 16384) >> 15)) ; - - v[i+1] = GSM_ADD( v[i], tmp1); - } - *sr++ = v[0] = sri; - } -} - - -#if defined(FAST) && defined(USE_FLOAT_MUL) - -static void Fast_Short_term_synthesis_filtering ( - struct gsm_state * S, - register word * rrp, /* [0..7] IN */ - register int k, /* k_end - k_start */ - register word * wt, /* [0..k-1] IN */ - register word * sr /* [0..k-1] OUT */ -) -{ - register word * v = S->v; - register int i; - - float va[9], rrpa[8]; - register float scalef = 3.0517578125e-5, temp; - - for (i = 0; i < 8; ++i) { - va[i] = v[i]; - rrpa[i] = (float)rrp[i] * scalef; - } - while (k--) { - register float sri = *wt++; - for (i = 8; i--;) { - sri -= rrpa[i] * va[i]; - if (sri < -32768.) sri = -32768.; - else if (sri > 32767.) sri = 32767.; - - temp = va[i] + rrpa[i] * sri; - if (temp < -32768.) temp = -32768.; - else if (temp > 32767.) temp = 32767.; - va[i+1] = temp; - } - *sr++ = va[0] = sri; - } - for (i = 0; i < 9; ++i) v[i] = va[i]; -} - -#endif /* defined(FAST) && defined(USE_FLOAT_MUL) */ - -void Gsm_Short_Term_Analysis_Filter ( - - struct gsm_state * S, - - word * LARc, /* coded log area ratio [0..7] IN */ - word * s /* signal [0..159] IN/OUT */ -) -{ - word * LARpp_j = S->LARpp[ S->j ]; - word * LARpp_j_1 = S->LARpp[ S->j ^= 1 ]; - - word LARp[8]; - -#undef FILTER -#if defined(FAST) && defined(USE_FLOAT_MUL) -# define FILTER (* (S->fast \ - ? Fast_Short_term_analysis_filtering \ - : Short_term_analysis_filtering )) - -#else -# define FILTER Short_term_analysis_filtering -#endif - - Decoding_of_the_coded_Log_Area_Ratios( LARc, LARpp_j ); - - Coefficients_0_12( LARpp_j_1, LARpp_j, LARp ); - LARp_to_rp( LARp ); - FILTER( S, LARp, 13, s); - - Coefficients_13_26( LARpp_j_1, LARpp_j, LARp); - LARp_to_rp( LARp ); - FILTER( S, LARp, 14, s + 13); - - Coefficients_27_39( LARpp_j_1, LARpp_j, LARp); - LARp_to_rp( LARp ); - FILTER( S, LARp, 13, s + 27); - - Coefficients_40_159( LARpp_j, LARp); - LARp_to_rp( LARp ); - FILTER( S, LARp, 120, s + 40); -} - -void Gsm_Short_Term_Synthesis_Filter ( - struct gsm_state * S, - - word * LARcr, /* received log area ratios [0..7] IN */ - word * wt, /* received d [0..159] IN */ - - word * s /* signal s [0..159] OUT */ -) -{ - word * LARpp_j = S->LARpp[ S->j ]; - word * LARpp_j_1 = S->LARpp[ S->j ^=1 ]; - - word LARp[8]; - -#undef FILTER -#if defined(FAST) && defined(USE_FLOAT_MUL) - -# define FILTER (* (S->fast \ - ? Fast_Short_term_synthesis_filtering \ - : Short_term_synthesis_filtering )) -#else -# define FILTER Short_term_synthesis_filtering -#endif - - Decoding_of_the_coded_Log_Area_Ratios( LARcr, LARpp_j ); - - Coefficients_0_12( LARpp_j_1, LARpp_j, LARp ); - LARp_to_rp( LARp ); - FILTER( S, LARp, 13, wt, s ); - - Coefficients_13_26( LARpp_j_1, LARpp_j, LARp); - LARp_to_rp( LARp ); - FILTER( S, LARp, 14, wt + 13, s + 13 ); - - Coefficients_27_39( LARpp_j_1, LARpp_j, LARp); - LARp_to_rp( LARp ); - FILTER( S, LARp, 13, wt + 27, s + 27 ); - - Coefficients_40_159( LARpp_j, LARp ); - LARp_to_rp( LARp ); - FILTER(S, LARp, 120, wt + 40, s + 40); -} -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 019ac7ba-c6dd-4540-abf0-8644b6c4a633 -*/ - diff --git a/libs/libsndfile/src/GSM610/table.c b/libs/libsndfile/src/GSM610/table.c deleted file mode 100644 index b5aa881eac..0000000000 --- a/libs/libsndfile/src/GSM610/table.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische - * Universitaet Berlin. See the accompanying file "COPYRIGHT" for - * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. - */ - -/* Most of these tables are inlined at their point of use. - */ - -/* 4.4 TABLES USED IN THE FIXED POINT IMPLEMENTATION OF THE RPE-LTP - * CODER AND DECODER - * - * (Most of them inlined, so watch out.) - */ - -#define GSM_TABLE_C -#include "gsm610_priv.h" -#include "gsm.h" - -/* Table 4.1 Quantization of the Log.-Area Ratios - */ -/* i 1 2 3 4 5 6 7 8 */ -word gsm_A[8] = {20480, 20480, 20480, 20480, 13964, 15360, 8534, 9036}; -word gsm_B[8] = { 0, 0, 2048, -2560, 94, -1792, -341, -1144}; -word gsm_MIC[8] = { -32, -32, -16, -16, -8, -8, -4, -4 }; -word gsm_MAC[8] = { 31, 31, 15, 15, 7, 7, 3, 3 }; - - -/* Table 4.2 Tabulation of 1/A[1..8] - */ -word gsm_INVA[8]={ 13107, 13107, 13107, 13107, 19223, 17476, 31454, 29708 }; - - -/* Table 4.3a Decision level of the LTP gain quantizer - */ -/* bc 0 1 2 3 */ -word gsm_DLB[4] = { 6554, 16384, 26214, 32767 }; - - -/* Table 4.3b Quantization levels of the LTP gain quantizer - */ -/* bc 0 1 2 3 */ -word gsm_QLB[4] = { 3277, 11469, 21299, 32767 }; - - -/* Table 4.4 Coefficients of the weighting filter - */ -/* i 0 1 2 3 4 5 6 7 8 9 10 */ -word gsm_H[11] = {-134, -374, 0, 2054, 5741, 8192, 5741, 2054, 0, -374, -134 }; - - -/* Table 4.5 Normalized inverse mantissa used to compute xM/xmax - */ -/* i 0 1 2 3 4 5 6 7 */ -word gsm_NRFAC[8] = { 29128, 26215, 23832, 21846, 20165, 18725, 17476, 16384 }; - - -/* Table 4.6 Normalized direct mantissa used to compute xM/xmax - */ -/* i 0 1 2 3 4 5 6 7 */ -word gsm_FAC[8] = { 18431, 20479, 22527, 24575, 26623, 28671, 30719, 32767 }; -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 8957c531-e6b0-4097-9202-da7ca42729ca -*/ - diff --git a/libs/libsndfile/src/Symbols.darwin b/libs/libsndfile/src/Symbols.darwin deleted file mode 100644 index 271e0b0c87..0000000000 --- a/libs/libsndfile/src/Symbols.darwin +++ /dev/null @@ -1,36 +0,0 @@ -# Auto-generated by create_symbols_file.py - -_sf_command -_sf_open -_sf_close -_sf_seek -_sf_error -_sf_perror -_sf_error_str -_sf_error_number -_sf_format_check -_sf_read_raw -_sf_readf_short -_sf_readf_int -_sf_readf_float -_sf_readf_double -_sf_read_short -_sf_read_int -_sf_read_float -_sf_read_double -_sf_write_raw -_sf_writef_short -_sf_writef_int -_sf_writef_float -_sf_writef_double -_sf_write_short -_sf_write_int -_sf_write_float -_sf_write_double -_sf_strerror -_sf_get_string -_sf_set_string -_sf_open_fd -_sf_open_virtual -_sf_write_sync - diff --git a/libs/libsndfile/src/Symbols.linux b/libs/libsndfile/src/Symbols.linux deleted file mode 100644 index 163346f700..0000000000 --- a/libs/libsndfile/src/Symbols.linux +++ /dev/null @@ -1,42 +0,0 @@ -# Auto-generated by create_symbols_file.py - -libsndfile.so.1.0 -{ - global: - sf_command ; - sf_open ; - sf_close ; - sf_seek ; - sf_error ; - sf_perror ; - sf_error_str ; - sf_error_number ; - sf_format_check ; - sf_read_raw ; - sf_readf_short ; - sf_readf_int ; - sf_readf_float ; - sf_readf_double ; - sf_read_short ; - sf_read_int ; - sf_read_float ; - sf_read_double ; - sf_write_raw ; - sf_writef_short ; - sf_writef_int ; - sf_writef_float ; - sf_writef_double ; - sf_write_short ; - sf_write_int ; - sf_write_float ; - sf_write_double ; - sf_strerror ; - sf_get_string ; - sf_set_string ; - sf_open_fd ; - sf_open_virtual ; - sf_write_sync ; - local: - * ; -} ; - diff --git a/libs/libsndfile/src/aiff.c b/libs/libsndfile/src/aiff.c deleted file mode 100644 index 129d79ca6d..0000000000 --- a/libs/libsndfile/src/aiff.c +++ /dev/null @@ -1,1482 +0,0 @@ -/* -** Copyright (C) 1999-2006 Erik de Castro Lopo -** Copyright (C) 2005 David Viens -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -/*------------------------------------------------------------------------------ - * Macros to handle big/little endian issues. - */ - -#define FORM_MARKER (MAKE_MARKER ('F', 'O', 'R', 'M')) -#define AIFF_MARKER (MAKE_MARKER ('A', 'I', 'F', 'F')) -#define AIFC_MARKER (MAKE_MARKER ('A', 'I', 'F', 'C')) -#define COMM_MARKER (MAKE_MARKER ('C', 'O', 'M', 'M')) -#define SSND_MARKER (MAKE_MARKER ('S', 'S', 'N', 'D')) -#define MARK_MARKER (MAKE_MARKER ('M', 'A', 'R', 'K')) -#define INST_MARKER (MAKE_MARKER ('I', 'N', 'S', 'T')) -#define APPL_MARKER (MAKE_MARKER ('A', 'P', 'P', 'L')) - -#define c_MARKER (MAKE_MARKER ('(', 'c', ')', ' ')) -#define NAME_MARKER (MAKE_MARKER ('N', 'A', 'M', 'E')) -#define AUTH_MARKER (MAKE_MARKER ('A', 'U', 'T', 'H')) -#define ANNO_MARKER (MAKE_MARKER ('A', 'N', 'N', 'O')) -#define COMT_MARKER (MAKE_MARKER ('C', 'O', 'M', 'T')) -#define FVER_MARKER (MAKE_MARKER ('F', 'V', 'E', 'R')) -#define SFX_MARKER (MAKE_MARKER ('S', 'F', 'X', '!')) - -#define PEAK_MARKER (MAKE_MARKER ('P', 'E', 'A', 'K')) -#define basc_MARKER (MAKE_MARKER ('b', 'a', 's', 'c')) - -/* Supported AIFC encodings.*/ -#define NONE_MARKER (MAKE_MARKER ('N', 'O', 'N', 'E')) -#define sowt_MARKER (MAKE_MARKER ('s', 'o', 'w', 't')) -#define twos_MARKER (MAKE_MARKER ('t', 'w', 'o', 's')) -#define raw_MARKER (MAKE_MARKER ('r', 'a', 'w', ' ')) -#define in32_MARKER (MAKE_MARKER ('i', 'n', '3', '2')) -#define ni32_MARKER (MAKE_MARKER ('2', '3', 'n', 'i')) - -#define fl32_MARKER (MAKE_MARKER ('f', 'l', '3', '2')) -#define FL32_MARKER (MAKE_MARKER ('F', 'L', '3', '2')) -#define fl64_MARKER (MAKE_MARKER ('f', 'l', '6', '4')) -#define FL64_MARKER (MAKE_MARKER ('F', 'L', '6', '4')) - -#define ulaw_MARKER (MAKE_MARKER ('u', 'l', 'a', 'w')) -#define ULAW_MARKER (MAKE_MARKER ('U', 'L', 'A', 'W')) -#define alaw_MARKER (MAKE_MARKER ('a', 'l', 'a', 'w')) -#define ALAW_MARKER (MAKE_MARKER ('A', 'L', 'A', 'W')) - -#define DWVW_MARKER (MAKE_MARKER ('D', 'W', 'V', 'W')) -#define GSM_MARKER (MAKE_MARKER ('G', 'S', 'M', ' ')) -#define ima4_MARKER (MAKE_MARKER ('i', 'm', 'a', '4')) - -/* Unsupported AIFC encodings.*/ - -#define MAC3_MARKER (MAKE_MARKER ('M', 'A', 'C', '3')) -#define MAC6_MARKER (MAKE_MARKER ('M', 'A', 'C', '6')) -#define ADP4_MARKER (MAKE_MARKER ('A', 'D', 'P', '4')) - -/* Predfined chunk sizes. */ -#define SIZEOF_AIFF_COMM 18 -#define SIZEOF_AIFC_COMM_MIN 22 -#define SIZEOF_AIFC_COMM 24 -#define SIZEOF_SSND_CHUNK 8 -#define SIZEOF_INST_CHUNK 20 - -/* Is it constant? */ - -/* AIFC/IMA4 defines. */ -#define AIFC_IMA4_BLOCK_LEN 34 -#define AIFC_IMA4_SAMPLES_PER_BLOCK 64 - -#define AIFF_PEAK_CHUNK_SIZE(ch) (2 * sizeof (int) + ch * (sizeof (float) + sizeof (int))) - -/*------------------------------------------------------------------------------ - * Typedefs for file chunks. - */ - -enum -{ HAVE_FORM = 0x01, - HAVE_AIFF = 0x02, - HAVE_COMM = 0x04, - HAVE_SSND = 0x08 -} ; - -typedef struct -{ unsigned int size ; - short numChannels ; - unsigned int numSampleFrames ; - short sampleSize ; - unsigned char sampleRate [10] ; - unsigned int encoding ; - char zero_bytes [2] ; -} COMM_CHUNK ; - -typedef struct -{ unsigned int offset ; - unsigned int blocksize ; -} SSND_CHUNK ; - -typedef struct -{ short playMode ; - unsigned short beginLoop ; - unsigned short endLoop ; -} INST_LOOP ; - -typedef struct -{ char baseNote ; /* all notes are MIDI note numbers */ - char detune ; /* cents off, only -50 to +50 are significant */ - char lowNote ; - char highNote ; - char lowVelocity ; /* 1 to 127 */ - char highVelocity ; /* 1 to 127 */ - short gain ; /* in dB, 0 is normal */ - INST_LOOP sustain_loop ; - INST_LOOP release_loop ; -} INST_CHUNK ; - - -enum -{ basc_SCALE_MINOR = 1, - basc_SCALE_MAJOR, - basc_SCALE_NEITHER, - basc_SCALE_BOTH -} ; - -enum -{ basc_TYPE_LOOP = 0, - basc_TYPE_ONE_SHOT -} ; - - -typedef struct -{ unsigned int version ; - unsigned int numBeats ; - unsigned short rootNote ; - unsigned short scaleType ; - unsigned short sigNumerator ; - unsigned short sigDenominator ; - unsigned short loopType ; -} basc_CHUNK ; - -typedef struct -{ unsigned short markerID ; - unsigned int position ; -} MARK_ID_POS ; - -/*------------------------------------------------------------------------------ - * Private static functions. - */ - -static int aiff_close (SF_PRIVATE *psf) ; - -static int tenbytefloat2int (unsigned char *bytes) ; -static void uint2tenbytefloat (unsigned int num, unsigned char *bytes) ; - -static int aiff_read_comm_chunk (SF_PRIVATE *psf, COMM_CHUNK *comm_fmt) ; - -static int aiff_read_header (SF_PRIVATE *psf, COMM_CHUNK *comm_fmt) ; - -static int aiff_write_header (SF_PRIVATE *psf, int calc_length) ; -static int aiff_write_tailer (SF_PRIVATE *psf) ; -static void aiff_write_strings (SF_PRIVATE *psf, int location) ; - -static int aiff_command (SF_PRIVATE *psf, int command, void *data, int datasize) ; - -static const char *get_loop_mode_str (short mode) ; - -static short get_loop_mode (short mode) ; - -static int aiff_read_basc_chunk (SF_PRIVATE * psf, int) ; - -static unsigned int marker_to_position (const MARK_ID_POS *m, unsigned short n, int marksize) ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -aiff_open (SF_PRIVATE *psf) -{ COMM_CHUNK comm_fmt ; - int error, subformat ; - - memset (&comm_fmt, 0, sizeof (comm_fmt)) ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = aiff_read_header (psf, &comm_fmt))) - return error ; - - psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - } ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if (psf->is_pipe) - return SFE_NO_PIPE_WRITE ; - - if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_AIFF) - return SFE_BAD_OPEN_FORMAT ; - - if (psf->mode == SFM_WRITE && (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE)) - { if ((psf->peak_info = peak_info_calloc (psf->sf.channels)) == NULL) - return SFE_MALLOC_FAILED ; - psf->peak_info->peak_loc = SF_PEAK_START ; - } ; - - if (psf->mode != SFM_RDWR || psf->filelength < 40) - { psf->filelength = 0 ; - psf->datalength = 0 ; - psf->dataoffset = 0 ; - psf->sf.frames = 0 ; - } ; - - psf->str_flags = SF_STR_ALLOW_START | SF_STR_ALLOW_END ; - - if ((error = aiff_write_header (psf, SF_FALSE))) - return error ; - - psf->write_header = aiff_write_header ; - } ; - - psf->container_close = aiff_close ; - psf->command = aiff_command ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_U8 : - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_PCM_S8 : - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_24 : - case SF_FORMAT_PCM_32 : - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_ULAW : - error = ulaw_init (psf) ; - break ; - - case SF_FORMAT_ALAW : - error = alaw_init (psf) ; - break ; - - /* Lite remove start */ - case SF_FORMAT_FLOAT : - error = float32_init (psf) ; - break ; - - case SF_FORMAT_DOUBLE : - error = double64_init (psf) ; - break ; - - case SF_FORMAT_DWVW_12 : - error = dwvw_init (psf, 12) ; - break ; - - case SF_FORMAT_DWVW_16 : - error = dwvw_init (psf, 16) ; - break ; - - case SF_FORMAT_DWVW_24 : - error = dwvw_init (psf, 24) ; - break ; - - case SF_FORMAT_DWVW_N : - if (psf->mode != SFM_READ) - { error = SFE_DWVW_BAD_BITWIDTH ; - break ; - } ; - if (comm_fmt.sampleSize >= 8 && comm_fmt.sampleSize < 24) - { error = dwvw_init (psf, comm_fmt.sampleSize) ; - psf->sf.frames = comm_fmt.numSampleFrames ; - break ; - } ; - psf_log_printf (psf, "AIFC/DWVW : Bad bitwidth %d\n", comm_fmt.sampleSize) ; - error = SFE_DWVW_BAD_BITWIDTH ; - break ; - - case SF_FORMAT_IMA_ADPCM : - /* - ** IMA ADPCM encoded AIFF files always have a block length - ** of 34 which decodes to 64 samples. - */ - error = aiff_ima_init (psf, AIFC_IMA4_BLOCK_LEN, AIFC_IMA4_SAMPLES_PER_BLOCK) ; - break ; - /* Lite remove end */ - - case SF_FORMAT_GSM610 : - error = gsm610_init (psf) ; - break ; - - default : return SFE_UNIMPLEMENTED ; - } ; - - - return error ; -} /* aiff_open */ - -/*========================================================================================== -** Private functions. -*/ - -/* This function ought to check size */ -static unsigned int -marker_to_position (const MARK_ID_POS *m, unsigned short n, int marksize) -{ int i ; - - for (i = 0 ; i < marksize ; i++) - if (m [i].markerID == n) - return m [i].position ; - return 0 ; -} /* marker_to_position */ - -static int -aiff_read_header (SF_PRIVATE *psf, COMM_CHUNK *comm_fmt) -{ SSND_CHUNK ssnd_fmt ; - MARK_ID_POS *markstr = NULL ; - unsigned marker, dword, FORMsize, SSNDsize, bytesread ; - int k, found_chunk = 0, done = 0, error = 0 ; - char *cptr, byte ; - int instr_found = 0, mark_found = 0, mark_count = 0 ; - - /* Set position to start of file to begin reading header. */ - psf_binheader_readf (psf, "p", 0) ; - - memset (comm_fmt, 0, sizeof (COMM_CHUNK)) ; - - /* Until recently AIF* file were all BIG endian. */ - psf->endian = SF_ENDIAN_BIG ; - - /* AIFF files can apparently have their chunks in any order. However, they - ** must have a FORM chunk. Approach here is to read all the chunks one by - ** one and then check for the mandatory chunks at the end. - */ - while (! done) - { psf_binheader_readf (psf, "m", &marker) ; - - if (psf->mode == SFM_RDWR && (found_chunk & HAVE_SSND)) - return SFE_AIFF_RW_SSND_NOT_LAST ; - - switch (marker) - { case FORM_MARKER : - if (found_chunk) - return SFE_AIFF_NO_FORM ; - - psf_binheader_readf (psf, "E4", &FORMsize) ; - - if (psf->fileoffset > 0 && psf->filelength > FORMsize + 8) - { /* Set file length. */ - psf->filelength = FORMsize + 8 ; - psf_log_printf (psf, "FORM : %u\n", FORMsize) ; - } - else if (FORMsize != psf->filelength - 2 * SIGNED_SIZEOF (dword)) - { dword = psf->filelength - 2 * sizeof (dword) ; - psf_log_printf (psf, "FORM : %u (should be %u)\n", FORMsize, dword) ; - FORMsize = dword ; - } - else - psf_log_printf (psf, "FORM : %u\n", FORMsize) ; - found_chunk |= HAVE_FORM ; - break ; - - case AIFC_MARKER : - case AIFF_MARKER : - if ((found_chunk & HAVE_FORM) == 0) - return SFE_AIFF_AIFF_NO_FORM ; - psf_log_printf (psf, " %M\n", marker) ; - found_chunk |= HAVE_AIFF ; - break ; - - case COMM_MARKER : - error = aiff_read_comm_chunk (psf, comm_fmt) ; - - psf->sf.samplerate = tenbytefloat2int (comm_fmt->sampleRate) ; - psf->sf.frames = comm_fmt->numSampleFrames ; - psf->sf.channels = comm_fmt->numChannels ; - psf->bytewidth = BITWIDTH2BYTES (comm_fmt->sampleSize) ; - - if (error) - return error ; - - found_chunk |= HAVE_COMM ; - break ; - - case PEAK_MARKER : - /* Must have COMM chunk before PEAK chunk. */ - if ((found_chunk & (HAVE_FORM | HAVE_AIFF | HAVE_COMM)) != (HAVE_FORM | HAVE_AIFF | HAVE_COMM)) - return SFE_AIFF_PEAK_B4_COMM ; - - psf_binheader_readf (psf, "E4", &dword) ; - - psf_log_printf (psf, "%M : %d\n", marker, dword) ; - if (dword != AIFF_PEAK_CHUNK_SIZE (psf->sf.channels)) - { psf_binheader_readf (psf, "j", dword) ; - psf_log_printf (psf, "*** File PEAK chunk too big.\n") ; - return SFE_WAV_BAD_PEAK ; - } ; - - if ((psf->peak_info = peak_info_calloc (psf->sf.channels)) == NULL) - return SFE_MALLOC_FAILED ; - - /* read in rest of PEAK chunk. */ - psf_binheader_readf (psf, "E44", &(psf->peak_info->version), &(psf->peak_info->timestamp)) ; - - if (psf->peak_info->version != 1) - psf_log_printf (psf, " version : %d *** (should be version 1)\n", psf->peak_info->version) ; - else - psf_log_printf (psf, " version : %d\n", psf->peak_info->version) ; - - psf_log_printf (psf, " time stamp : %d\n", psf->peak_info->timestamp) ; - psf_log_printf (psf, " Ch Position Value\n") ; - - cptr = psf->u.cbuf ; - for (dword = 0 ; dword < (unsigned) psf->sf.channels ; dword++) - { float value ; - unsigned int position ; - - psf_binheader_readf (psf, "Ef4", &value, &position) ; - psf->peak_info->peaks [dword].value = value ; - psf->peak_info->peaks [dword].position = position ; - - LSF_SNPRINTF (cptr, sizeof (psf->u.scbuf), " %2d %-12ld %g\n", - dword, (long) psf->peak_info->peaks [dword].position, psf->peak_info->peaks [dword].value) ; - cptr [sizeof (psf->u.scbuf) - 1] = 0 ; - psf_log_printf (psf, cptr) ; - } ; - - break ; - - case SSND_MARKER : - psf_binheader_readf (psf, "E444", &SSNDsize, &(ssnd_fmt.offset), &(ssnd_fmt.blocksize)) ; - - psf->datalength = SSNDsize - sizeof (ssnd_fmt) ; - psf->dataoffset = psf_ftell (psf) ; - - if (psf->datalength > psf->filelength - psf->dataoffset || psf->datalength < 0) - { psf_log_printf (psf, " SSND : %u (should be %D)\n", SSNDsize, psf->filelength - psf->dataoffset + sizeof (SSND_CHUNK)) ; - psf->datalength = psf->filelength - psf->dataoffset ; - } - else - psf_log_printf (psf, " SSND : %u\n", SSNDsize) ; - - /* Only set dataend if there really is data at the end. */ - if (psf->datalength + psf->dataoffset < psf->filelength) - psf->dataend = psf->datalength + psf->dataoffset ; - - psf_log_printf (psf, " Offset : %u\n", ssnd_fmt.offset) ; - psf_log_printf (psf, " Block Size : %u\n", ssnd_fmt.blocksize) ; - - found_chunk |= HAVE_SSND ; - - if (! psf->sf.seekable) - break ; - - /* Seek to end of SSND chunk. */ - psf_fseek (psf, psf->dataoffset + psf->datalength + (SSNDsize & 1), SEEK_SET) ; - break ; - - case c_MARKER : - psf_binheader_readf (psf, "E4", &dword) ; - if (dword == 0) - break ; - if (dword > SIGNED_SIZEOF (psf->u.scbuf) - 1) - { psf_log_printf (psf, " %M : %d (too big)\n", marker, dword) ; - return SFE_INTERNAL ; - } ; - - cptr = psf->u.cbuf ; - psf_binheader_readf (psf, "b", cptr, dword + (dword & 1)) ; - cptr [dword] = 0 ; - psf_log_printf (psf, " %M : %s\n", marker, cptr) ; - psf_store_string (psf, SF_STR_COPYRIGHT, cptr) ; - break ; - - case AUTH_MARKER : - psf_binheader_readf (psf, "E4", &dword) ; - if (dword == 0) - break ; - if (dword > SIGNED_SIZEOF (psf->u.scbuf) - 1) - { psf_log_printf (psf, " %M : %d (too big)\n", marker, dword) ; - return SFE_INTERNAL ; - } ; - - cptr = psf->u.cbuf ; - psf_binheader_readf (psf, "b", cptr, dword + (dword & 1)) ; - cptr [dword] = 0 ; - psf_log_printf (psf, " %M : %s\n", marker, cptr) ; - psf_store_string (psf, SF_STR_ARTIST, cptr) ; - break ; - - case COMT_MARKER : - { unsigned short count, id, len ; - unsigned int timestamp ; - - psf_binheader_readf (psf, "E42", &dword, &count) ; - psf_log_printf (psf, " %M : %d\n count : %d\n", marker, dword, count) ; - dword += (dword & 1) ; - if (dword == 0) - break ; - dword -= 2 ; - - for (k = 0 ; k < count ; k++) - { dword -= psf_binheader_readf (psf, "E422", ×tamp, &id, &len) ; - psf_log_printf (psf, " time : 0x%x\n marker : %x\n length : %d\n", timestamp, id, len) ; - - if (len + 1 > SIGNED_SIZEOF (psf->u.scbuf)) - { psf_log_printf (psf, "\nError : string length (%d) too big.\n", len) ; - return SFE_INTERNAL ; - } ; - - cptr = psf->u.cbuf ; - dword -= psf_binheader_readf (psf, "b", cptr, len) ; - cptr [len] = 0 ; - psf_log_printf (psf, " string : %s\n", cptr) ; - } ; - - if (dword > 0) - psf_binheader_readf (psf, "j", dword) ; - } ; - break ; - - case APPL_MARKER : - psf_binheader_readf (psf, "E4", &dword) ; - if (dword == 0) - break ; - if (dword >= SIGNED_SIZEOF (psf->u.scbuf) - 1) - { psf_log_printf (psf, " %M : %d (too big, skipping)\n", marker, dword) ; - psf_binheader_readf (psf, "j", dword + (dword & 1)) ; - break ; - } ; - - cptr = psf->u.cbuf ; - psf_binheader_readf (psf, "b", cptr, dword + (dword & 1)) ; - cptr [dword] = 0 ; - - for (k = 0 ; k < (int) dword ; k++) - if (! isprint (cptr [k])) - { cptr [k] = 0 ; - break ; - } ; - - psf_log_printf (psf, " %M : %s\n", marker, cptr) ; - psf_store_string (psf, SF_STR_SOFTWARE, cptr) ; - break ; - - case NAME_MARKER : - psf_binheader_readf (psf, "E4", &dword) ; - if (dword == 0) - break ; - if (dword > SIGNED_SIZEOF (psf->u.scbuf) - 2) - { psf_log_printf (psf, " %M : %d (too big)\n", marker, dword) ; - return SFE_INTERNAL ; - } ; - - cptr = psf->u.cbuf ; - psf_binheader_readf (psf, "b", cptr, dword + (dword & 1)) ; - cptr [dword] = 0 ; - psf_log_printf (psf, " %M : %s\n", marker, cptr) ; - psf_store_string (psf, SF_STR_TITLE, cptr) ; - break ; - - case ANNO_MARKER : - psf_binheader_readf (psf, "E4", &dword) ; - if (dword == 0) - break ; - if (dword > SIGNED_SIZEOF (psf->u.scbuf) - 2) - { psf_log_printf (psf, " %M : %d (too big)\n", marker, dword) ; - return SFE_INTERNAL ; - } ; - - cptr = psf->u.cbuf ; - psf_binheader_readf (psf, "b", cptr, dword + (dword & 1)) ; - cptr [dword] = 0 ; - psf_log_printf (psf, " %M : %s\n", marker, cptr) ; - psf_store_string (psf, SF_STR_COMMENT, cptr) ; - break ; - - case INST_MARKER : - psf_binheader_readf (psf, "E4", &dword) ; - if (dword != SIZEOF_INST_CHUNK) - { psf_log_printf (psf, " %M : %d (should be %d)\n", marker, dword, SIZEOF_INST_CHUNK) ; - psf_binheader_readf (psf, "j", dword) ; - break ; - } ; - psf_log_printf (psf, " %M : %d\n", marker, dword) ; - { unsigned char bytes [6] ; - short gain ; - - if (psf->instrument == NULL && (psf->instrument = psf_instrument_alloc ()) == NULL) - return SFE_MALLOC_FAILED ; - - psf_binheader_readf (psf, "b", bytes, 6) ; - psf_log_printf (psf, " Base Note : %u\n Detune : %u\n" - " Low Note : %u\n High Note : %u\n" - " Low Vel. : %u\n High Vel. : %u\n", - bytes [0], bytes [1], bytes [2], bytes [3], bytes [4], bytes [5]) ; - psf->instrument->basenote = bytes [0] ; - psf->instrument->detune = bytes [1] ; - psf->instrument->key_lo = bytes [2] ; - psf->instrument->key_hi = bytes [3] ; - psf->instrument->velocity_lo = bytes [4] ; - psf->instrument->velocity_hi = bytes [5] ; - psf_binheader_readf (psf, "E2", &gain) ; - psf->instrument->gain = gain ; - psf_log_printf (psf, " Gain (dB) : %d\n", gain) ; - } ; - { short mode ; /* 0 - no loop, 1 - forward looping, 2 - backward looping */ - const char *loop_mode ; - unsigned short begin, end ; - - psf_binheader_readf (psf, "E222", &mode, &begin, &end) ; - loop_mode = get_loop_mode_str (mode) ; - mode = get_loop_mode (mode) ; - if (mode == SF_LOOP_NONE) - { psf->instrument->loop_count = 0 ; - psf->instrument->loops [0].mode = SF_LOOP_NONE ; - } - else - { psf->instrument->loop_count = 1 ; - psf->instrument->loops [0].mode = SF_LOOP_FORWARD ; - psf->instrument->loops [0].start = begin ; - psf->instrument->loops [0].end = end ; - psf->instrument->loops [0].count = 0 ; - } ; - psf_log_printf (psf, " Sustain\n mode : %d => %s\n begin : %u\n end : %u\n", - mode, loop_mode, begin, end) ; - psf_binheader_readf (psf, "E222", &mode, &begin, &end) ; - loop_mode = get_loop_mode_str (mode) ; - mode = get_loop_mode (mode) ; - if (mode == SF_LOOP_NONE) - psf->instrument->loops [0].mode = SF_LOOP_NONE ; - else - { psf->instrument->loop_count += 1 ; - psf->instrument->loops [1].mode = SF_LOOP_FORWARD ; - psf->instrument->loops [1].start = begin ; - psf->instrument->loops [1].end = end ; - psf->instrument->loops [1].count = 0 ; - } ; - psf_log_printf (psf, " Release\n mode : %d => %s\n begin : %u\n end : %u\n", - mode, loop_mode, begin, end) ; - } ; - instr_found++ ; - break ; - - case basc_MARKER : - psf_binheader_readf (psf, "E4", &dword) ; - psf_log_printf (psf, " basc : %u\n", dword) ; - - if ((error = aiff_read_basc_chunk (psf, dword))) - return error ; - break ; - - case MARK_MARKER : - psf_binheader_readf (psf, "E4", &dword) ; - psf_log_printf (psf, " %M : %d\n", marker, dword) ; - { unsigned short mark_id, n = 0 ; - unsigned char pstr_len ; - unsigned int position ; - - bytesread = psf_binheader_readf (psf, "E2", &n) ; - mark_count = n ; - markstr = calloc (mark_count, sizeof (MARK_ID_POS)) ; - psf_log_printf (psf, " Count : %d\n", mark_count) ; - - for (n = 0 ; n < mark_count && bytesread < dword ; n++) - { bytesread += psf_binheader_readf (psf, "E241", &mark_id, &position, &pstr_len) ; - psf_log_printf (psf, " Mark ID : %u\n Position : %u\n", mark_id, position) ; - - pstr_len += (pstr_len & 1) + 1 ; /* fudgy, fudgy, hack, hack */ - - bytesread += psf_binheader_readf (psf, "b", psf->u.scbuf, pstr_len) ; - psf_log_printf (psf, " Name : %s\n", psf->u.scbuf) ; - - markstr [n].markerID = mark_id ; - markstr [n].position = position ; - /* - ** TODO if psf->u.scbuf is equal to - ** either Beg_loop, Beg loop or beg loop and spam - ** if (psf->instrument == NULL && (psf->instrument = psf_instrument_alloc ()) == NULL) - ** return SFE_MALLOC_FAILED ; - */ - } ; - } ; - mark_found++ ; - psf_binheader_readf (psf, "j", dword - bytesread) ; - break ; - - case FVER_MARKER : - case SFX_MARKER : - psf_binheader_readf (psf, "E4", &dword) ; - psf_log_printf (psf, " %M : %d\n", marker, dword) ; - - psf_binheader_readf (psf, "j", dword) ; - break ; - - case NONE_MARKER : - /* Fix for broken AIFC files with incorrect COMM chunk length. */ - psf_binheader_readf (psf, "1", &byte) ; - dword = byte ; - psf_binheader_readf (psf, "j", dword) ; - break ; - - default : - if (isprint ((marker >> 24) & 0xFF) && isprint ((marker >> 16) & 0xFF) - && isprint ((marker >> 8) & 0xFF) && isprint (marker & 0xFF)) - { psf_binheader_readf (psf, "E4", &dword) ; - psf_log_printf (psf, " %M : %d (unknown marker)\n", marker, dword) ; - - psf_binheader_readf (psf, "j", dword) ; - break ; - } ; - if ((dword = psf_ftell (psf)) & 0x03) - { psf_log_printf (psf, " Unknown chunk marker %X at position %d. Resyncing.\n", marker, dword - 4) ; - - psf_binheader_readf (psf, "j", -3) ; - break ; - } ; - psf_log_printf (psf, "*** Unknown chunk marker %X at position %D. Exiting parser.\n", marker, psf_ftell (psf)) ; - done = 1 ; - break ; - } ; /* switch (marker) */ - - if ((! psf->sf.seekable) && (found_chunk & HAVE_SSND)) - break ; - - if (psf_ftell (psf) >= psf->filelength - (2 * SIGNED_SIZEOF (dword))) - break ; - } ; /* while (1) */ - - if (instr_found && mark_found) - { int j ; - - for (j = 0 ; jinstrument->loop_count ; j ++) - { if (j < ARRAY_LEN (psf->instrument->loops)) - { psf->instrument->loops [j].start = marker_to_position (markstr, psf->instrument->loops [j].start, mark_count) ; - psf->instrument->loops [j].end = marker_to_position (markstr, psf->instrument->loops [j].end, mark_count) ; - psf->instrument->loops [j].mode = SF_LOOP_FORWARD ; - } ; - } ; - } ; - - if (markstr) - free (markstr) ; - - if (! (found_chunk & HAVE_FORM)) - return SFE_AIFF_NO_FORM ; - - if (! (found_chunk & HAVE_AIFF)) - return SFE_AIFF_COMM_NO_FORM ; - - if (! (found_chunk & HAVE_COMM)) - return SFE_AIFF_SSND_NO_COMM ; - - if (! psf->dataoffset) - return SFE_AIFF_NO_DATA ; - - return 0 ; -} /* aiff_read_header */ - -static int -aiff_close (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { aiff_write_tailer (psf) ; - - aiff_write_header (psf, SF_TRUE) ; - } ; - - return 0 ; -} /* aiff_close */ - -static int -aiff_read_comm_chunk (SF_PRIVATE *psf, COMM_CHUNK *comm_fmt) -{ int error = 0, bytesread, subformat ; - - psf->u.scbuf [0] = 0 ; - - bytesread = psf_binheader_readf (psf, "E4", &(comm_fmt->size)) ; - - /* The COMM chunk has an int aligned to an odd word boundary. Some - ** procesors are not able to deal with this (ie bus fault) so we have - ** to take special care. - */ - comm_fmt->size += comm_fmt->size & 1 ; - - bytesread += - psf_binheader_readf (psf, "E242b", &(comm_fmt->numChannels), &(comm_fmt->numSampleFrames), - &(comm_fmt->sampleSize), &(comm_fmt->sampleRate), SIGNED_SIZEOF (comm_fmt->sampleRate)) ; - - if (comm_fmt->size == SIZEOF_AIFF_COMM) - comm_fmt->encoding = NONE_MARKER ; - else if (comm_fmt->size == SIZEOF_AIFC_COMM_MIN) - bytesread += psf_binheader_readf (psf, "Em", &(comm_fmt->encoding)) ; - else if (comm_fmt->size >= SIZEOF_AIFC_COMM) - { unsigned char encoding_len ; - - bytesread += psf_binheader_readf (psf, "Em1", &(comm_fmt->encoding), &encoding_len) ; - - memset (psf->u.scbuf, 0, comm_fmt->size) ; - - bytesread += psf_binheader_readf (psf, "b", psf->u.scbuf, - comm_fmt->size - SIZEOF_AIFC_COMM + 1) ; - psf->u.scbuf [encoding_len] = 0 ; - } ; - - psf_log_printf (psf, " COMM : %d\n", comm_fmt->size) ; - psf_log_printf (psf, " Sample Rate : %d\n", tenbytefloat2int (comm_fmt->sampleRate)) ; - psf_log_printf (psf, " Frames : %u%s\n", comm_fmt->numSampleFrames, (comm_fmt->numSampleFrames == 0 && psf->filelength > 100) ? " (Should not be 0)" : "") ; - psf_log_printf (psf, " Channels : %d\n", comm_fmt->numChannels) ; - - /* Found some broken 'fl32' files with comm.samplesize == 16. Fix it here. */ - - if ((comm_fmt->encoding == fl32_MARKER || comm_fmt->encoding == FL32_MARKER) && comm_fmt->sampleSize != 32) - { psf_log_printf (psf, " Sample Size : %d (should be 32)\n", comm_fmt->sampleSize) ; - comm_fmt->sampleSize = 32 ; - } - else if ((comm_fmt->encoding == fl64_MARKER || comm_fmt->encoding == FL64_MARKER) && comm_fmt->sampleSize != 64) - { psf_log_printf (psf, " Sample Size : %d (should be 64)\n", comm_fmt->sampleSize) ; - comm_fmt->sampleSize = 64 ; - } - else - psf_log_printf (psf, " Sample Size : %d\n", comm_fmt->sampleSize) ; - - subformat = s_bitwidth_to_subformat (comm_fmt->sampleSize) ; - - psf->endian = SF_ENDIAN_BIG ; - - switch (comm_fmt->encoding) - { case NONE_MARKER : - psf->sf.format = (SF_FORMAT_AIFF | subformat) ; - break ; - - case twos_MARKER : - case in32_MARKER : - psf->sf.format = (SF_ENDIAN_BIG | SF_FORMAT_AIFF | subformat) ; - break ; - - case sowt_MARKER : - case ni32_MARKER : - psf->endian = SF_ENDIAN_LITTLE ; - psf->sf.format = (SF_ENDIAN_LITTLE | SF_FORMAT_AIFF | subformat) ; - break ; - - case fl32_MARKER : - case FL32_MARKER : - psf->sf.format = (SF_FORMAT_AIFF | SF_FORMAT_FLOAT) ; - break ; - - case ulaw_MARKER : - case ULAW_MARKER : - psf->sf.format = (SF_FORMAT_AIFF | SF_FORMAT_ULAW) ; - break ; - - case alaw_MARKER : - case ALAW_MARKER : - psf->sf.format = (SF_FORMAT_AIFF | SF_FORMAT_ALAW) ; - break ; - - case fl64_MARKER : - case FL64_MARKER : - psf->sf.format = (SF_FORMAT_AIFF | SF_FORMAT_DOUBLE) ; - break ; - - case raw_MARKER : - psf->sf.format = (SF_FORMAT_AIFF | SF_FORMAT_PCM_U8) ; - break ; - - case DWVW_MARKER : - psf->sf.format = SF_FORMAT_AIFF ; - switch (comm_fmt->sampleSize) - { case 12 : - psf->sf.format |= SF_FORMAT_DWVW_12 ; - break ; - case 16 : - psf->sf.format |= SF_FORMAT_DWVW_16 ; - break ; - case 24 : - psf->sf.format |= SF_FORMAT_DWVW_24 ; - break ; - - default : - psf->sf.format |= SF_FORMAT_DWVW_N ; - break ; - } ; - break ; - - case GSM_MARKER : - psf->sf.format = SF_FORMAT_AIFF ; - psf->sf.format = (SF_FORMAT_AIFF | SF_FORMAT_GSM610) ; - break ; - - - case ima4_MARKER : - psf->endian = SF_ENDIAN_BIG ; - psf->sf.format = (SF_FORMAT_AIFF | SF_FORMAT_IMA_ADPCM) ; - break ; - - default : - psf_log_printf (psf, "AIFC : Unimplemented format : %M\n", comm_fmt->encoding) ; - error = SFE_UNIMPLEMENTED ; - } ; - - if (! psf->u.scbuf [0]) - psf_log_printf (psf, " Encoding : %M\n", comm_fmt->encoding) ; - else - psf_log_printf (psf, " Encoding : %M => %s\n", comm_fmt->encoding, psf->u.scbuf) ; - - return error ; -} /* aiff_read_comm_chunk */ - - -static int -aiff_write_header (SF_PRIVATE *psf, int calc_length) -{ sf_count_t current ; - unsigned char comm_sample_rate [10], comm_zero_bytes [2] = { 0, 0 } ; - unsigned int comm_type, comm_size, comm_encoding, comm_frames ; - int k, endian ; - short bit_width ; - - current = psf_ftell (psf) ; - - if (calc_length) - { psf->filelength = psf_get_filelen (psf) ; - - psf->datalength = psf->filelength - psf->dataoffset ; - if (psf->dataend) - psf->datalength -= psf->filelength - psf->dataend ; - - if (psf->bytewidth > 0) - psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ; - } ; - - if (psf->mode == SFM_RDWR && psf->dataoffset > 0) - { /* Assuming here that the header has already been written and just - ** needs to be corrected for new data length. That means that we - ** only change the length fields of the FORM and SSND chunks ; - ** everything else can be skipped over. - */ - - /* First write new FORM chunk. */ - psf->headindex = 0 ; - psf_fseek (psf, 0, SEEK_SET) ; - - psf_binheader_writef (psf, "Etm8", FORM_MARKER, psf->filelength - 8) ; - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - /* Now write frame count field of COMM chunk header. */ - psf->headindex = 0 ; - psf_fseek (psf, 22, SEEK_SET) ; - - psf_binheader_writef (psf, "Et8", psf->sf.frames) ; - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - /* Now write new SSND chunk header. */ - psf->headindex = 0 ; - psf_fseek (psf, psf->dataoffset - 16, SEEK_SET) ; - - psf_binheader_writef (psf, "Etm8", SSND_MARKER, psf->datalength + SIZEOF_SSND_CHUNK) ; - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - if (current < psf->dataoffset) - psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - else if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return 0 ; - } ; - - endian = psf->sf.format & SF_FORMAT_ENDMASK ; - if (CPU_IS_LITTLE_ENDIAN && endian == SF_ENDIAN_CPU) - endian = SF_ENDIAN_LITTLE ; - - /* Standard value here. */ - bit_width = psf->bytewidth * 8 ; - comm_frames = (psf->sf.frames > 0xFFFFFFFF) ? 0xFFFFFFFF : psf->sf.frames ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_S8 : - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_24 : - case SF_FORMAT_PCM_32 : - switch (endian) - { case SF_ENDIAN_BIG : - psf->endian = SF_ENDIAN_BIG ; - comm_type = AIFC_MARKER ; - comm_size = SIZEOF_AIFC_COMM ; - comm_encoding = twos_MARKER ; - break ; - - case SF_ENDIAN_LITTLE : - psf->endian = SF_ENDIAN_LITTLE ; - comm_type = AIFC_MARKER ; - comm_size = SIZEOF_AIFC_COMM ; - comm_encoding = sowt_MARKER ; - break ; - - default : /* SF_ENDIAN_FILE */ - psf->endian = SF_ENDIAN_BIG ; - comm_type = AIFF_MARKER ; - comm_size = SIZEOF_AIFF_COMM ; - comm_encoding = 0 ; - break ; - } ; - break ; - - case SF_FORMAT_FLOAT : /* Big endian floating point. */ - psf->endian = SF_ENDIAN_BIG ; - comm_type = AIFC_MARKER ; - comm_size = SIZEOF_AIFC_COMM ; - comm_encoding = FL32_MARKER ; /* Use 'FL32' because its easier to read. */ - break ; - - case SF_FORMAT_DOUBLE : /* Big endian double precision floating point. */ - psf->endian = SF_ENDIAN_BIG ; - comm_type = AIFC_MARKER ; - comm_size = SIZEOF_AIFC_COMM ; - comm_encoding = FL64_MARKER ; /* Use 'FL64' because its easier to read. */ - break ; - - case SF_FORMAT_ULAW : - psf->endian = SF_ENDIAN_BIG ; - comm_type = AIFC_MARKER ; - comm_size = SIZEOF_AIFC_COMM ; - comm_encoding = ulaw_MARKER ; - break ; - - case SF_FORMAT_ALAW : - psf->endian = SF_ENDIAN_BIG ; - comm_type = AIFC_MARKER ; - comm_size = SIZEOF_AIFC_COMM ; - comm_encoding = alaw_MARKER ; - break ; - - case SF_FORMAT_PCM_U8 : - psf->endian = SF_ENDIAN_BIG ; - comm_type = AIFC_MARKER ; - comm_size = SIZEOF_AIFC_COMM ; - comm_encoding = raw_MARKER ; - break ; - - case SF_FORMAT_DWVW_12 : - psf->endian = SF_ENDIAN_BIG ; - comm_type = AIFC_MARKER ; - comm_size = SIZEOF_AIFC_COMM ; - comm_encoding = DWVW_MARKER ; - - /* Override standard value here.*/ - bit_width = 12 ; - break ; - - case SF_FORMAT_DWVW_16 : - psf->endian = SF_ENDIAN_BIG ; - comm_type = AIFC_MARKER ; - comm_size = SIZEOF_AIFC_COMM ; - comm_encoding = DWVW_MARKER ; - - /* Override standard value here.*/ - bit_width = 16 ; - break ; - - case SF_FORMAT_DWVW_24 : - psf->endian = SF_ENDIAN_BIG ; - comm_type = AIFC_MARKER ; - comm_size = SIZEOF_AIFC_COMM ; - comm_encoding = DWVW_MARKER ; - - /* Override standard value here.*/ - bit_width = 24 ; - break ; - - case SF_FORMAT_GSM610 : - psf->endian = SF_ENDIAN_BIG ; - comm_type = AIFC_MARKER ; - comm_size = SIZEOF_AIFC_COMM ; - comm_encoding = GSM_MARKER ; - - /* Override standard value here.*/ - bit_width = 16 ; - break ; - - case SF_FORMAT_IMA_ADPCM : - psf->endian = SF_ENDIAN_BIG ; - comm_type = AIFC_MARKER ; - comm_size = SIZEOF_AIFC_COMM ; - comm_encoding = ima4_MARKER ; - - /* Override standard value here.*/ - bit_width = 16 ; - comm_frames = psf->sf.frames / AIFC_IMA4_SAMPLES_PER_BLOCK ; - break ; - - default : return SFE_BAD_OPEN_FORMAT ; - } ; - - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - psf_fseek (psf, 0, SEEK_SET) ; - - psf_binheader_writef (psf, "Etm8", FORM_MARKER, psf->filelength - 8) ; - - /* Write COMM chunk. */ - psf_binheader_writef (psf, "Emm4", comm_type, COMM_MARKER, comm_size) ; - - memset (comm_sample_rate, 0, sizeof (comm_sample_rate)) ; - uint2tenbytefloat (psf->sf.samplerate, comm_sample_rate) ; - - psf_binheader_writef (psf, "Et242", psf->sf.channels, comm_frames, bit_width) ; - psf_binheader_writef (psf, "b", comm_sample_rate, sizeof (comm_sample_rate)) ; - - /* AIFC chunks have some extra data. */ - if (comm_type == AIFC_MARKER) - psf_binheader_writef (psf, "mb", comm_encoding, comm_zero_bytes, sizeof (comm_zero_bytes)) ; - - if (psf->instrument != NULL) - { MARK_ID_POS m [4] ; - INST_CHUNK ch ; - unsigned short ct = 0 ; - - memset (m, 0, sizeof (m)) ; - memset (&ch, 0, sizeof (ch)) ; - - ch.baseNote = psf->instrument->basenote ; - ch.detune = psf->instrument->detune ; - ch.lowNote = psf->instrument->key_lo ; - ch.highNote = psf->instrument->key_hi ; - ch.lowVelocity = psf->instrument->velocity_lo ; - ch.highVelocity = psf->instrument->velocity_hi ; - ch.gain = psf->instrument->gain ; - if (psf->instrument->loops [0].mode != SF_LOOP_NONE) - { ch.sustain_loop.playMode = 1 ; - ch.sustain_loop.beginLoop = ct ; - m [0].markerID = ct++ ; - m [0].position = psf->instrument->loops [0].start ; - ch.sustain_loop.endLoop = ct ; - m [1].markerID = ct++ ; - m [1].position = psf->instrument->loops [0].end ; - } ; - if (psf->instrument->loops [1].mode != SF_LOOP_NONE) - { ch.release_loop.playMode = 1 ; - ch.release_loop.beginLoop = ct ; - m [2].markerID = ct++ ; - m [2].position = psf->instrument->loops [1].start ; - ch.release_loop.endLoop = ct ; - m [3].markerID = ct++ ; - m [3].position = psf->instrument->loops [1].end ; - } - else - { ch.release_loop.playMode = 0 ; - ch.release_loop.beginLoop = 0 ; - ch.release_loop.endLoop = 0 ; - } ; - - psf_binheader_writef (psf, "Em4111111", INST_MARKER, SIZEOF_INST_CHUNK, ch.baseNote, ch.detune, - ch.lowNote, ch.highNote, ch.lowVelocity, ch.highVelocity) ; - psf_binheader_writef (psf, "2222222", ch.gain, ch.sustain_loop.playMode, - ch.sustain_loop.beginLoop, ch.sustain_loop.endLoop, ch.release_loop.playMode, - ch.release_loop.beginLoop, ch.release_loop.endLoop) ; - - if (ct == 2) - psf_binheader_writef (psf, "Em42241b241b", - MARK_MARKER, 2 + 2 * (2 + 4 + 1 + 9), 2, - m [0].markerID, m [0].position, 8, "beg loop", make_size_t (9), - m [1].markerID, m [1].position, 8, "end loop", make_size_t (9)) ; - else if (ct == 4) - psf_binheader_writef (psf, "Em42 241b 241b 241b 241b", - MARK_MARKER, 2 + 4 * (2 + 4 + 1 + 9), 4, - m [0].markerID, m [0].position, 8, "beg loop", make_size_t (9), - m [1].markerID, m [1].position, 8, "end loop", make_size_t (9), - m [2].markerID, m [2].position, 8, "beg loop", make_size_t (9), - m [3].markerID, m [3].position, 8, "end loop", make_size_t (9)) ; - } ; - - if (psf->str_flags & SF_STR_LOCATE_START) - aiff_write_strings (psf, SF_STR_LOCATE_START) ; - - if (psf->peak_info != NULL && psf->peak_info->peak_loc == SF_PEAK_START) - { psf_binheader_writef (psf, "Em4", PEAK_MARKER, AIFF_PEAK_CHUNK_SIZE (psf->sf.channels)) ; - psf_binheader_writef (psf, "E44", 1, time (NULL)) ; - for (k = 0 ; k < psf->sf.channels ; k++) - psf_binheader_writef (psf, "Eft8", (float) psf->peak_info->peaks [k].value, psf->peak_info->peaks [k].position) ; - } ; - - /* Write SSND chunk. */ - psf_binheader_writef (psf, "Etm844", SSND_MARKER, psf->datalength + SIZEOF_SSND_CHUNK, 0, 0) ; - - /* Header construction complete so write it out. */ - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - if (psf->error) - return psf->error ; - - psf->dataoffset = psf->headindex ; - - if (current < psf->dataoffset) - psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - else if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* aiff_write_header */ - -static int -aiff_write_tailer (SF_PRIVATE *psf) -{ int k ; - - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - - psf->dataend = psf_fseek (psf, 0, SEEK_END) ; - - /* Make sure tailer data starts at even byte offset. Pad if necessary. */ - if (psf->dataend % 2 == 1) - { psf_fwrite (psf->header, 1, 1, psf) ; - psf->dataend ++ ; - } ; - - if (psf->peak_info != NULL && psf->peak_info->peak_loc == SF_PEAK_END) - { psf_binheader_writef (psf, "Em4", PEAK_MARKER, AIFF_PEAK_CHUNK_SIZE (psf->sf.channels)) ; - psf_binheader_writef (psf, "E44", 1, time (NULL)) ; - for (k = 0 ; k < psf->sf.channels ; k++) - psf_binheader_writef (psf, "Eft8", (float) psf->peak_info->peaks [k].value, psf->peak_info->peaks [k].position) ; - } ; - - if (psf->str_flags & SF_STR_LOCATE_END) - aiff_write_strings (psf, SF_STR_LOCATE_END) ; - - /* Write the tailer. */ - if (psf->headindex > 0) - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - return 0 ; -} /* aiff_write_tailer */ - -static void -aiff_write_strings (SF_PRIVATE *psf, int location) -{ int k ; - - for (k = 0 ; k < SF_MAX_STRINGS ; k++) - { if (psf->strings [k].type == 0) - break ; - - if (psf->strings [k].flags != location) - continue ; - - switch (psf->strings [k].type) - { case SF_STR_SOFTWARE : - psf_binheader_writef (psf, "EmS", APPL_MARKER, psf->strings [k].str) ; - break ; - - case SF_STR_TITLE : - psf_binheader_writef (psf, "EmS", NAME_MARKER, psf->strings [k].str) ; - break ; - - case SF_STR_COPYRIGHT : - psf_binheader_writef (psf, "EmS", c_MARKER, psf->strings [k].str) ; - break ; - - case SF_STR_ARTIST : - psf_binheader_writef (psf, "EmS", AUTH_MARKER, psf->strings [k].str) ; - break ; - - case SF_STR_COMMENT : - psf_binheader_writef (psf, "EmS", ANNO_MARKER, psf->strings [k].str) ; - break ; - - /* - case SF_STR_DATE : - psf_binheader_writef (psf, "Ems", ICRD_MARKER, psf->strings [k].str) ; - break ; - */ - } ; - } ; - - return ; -} /* aiff_write_strings */ - -static int -aiff_command (SF_PRIVATE *psf, int command, void *data, int datasize) -{ - /* Avoid compiler warnings. */ - psf = psf ; - data = data ; - datasize = datasize ; - - switch (command) - { default : break ; - } ; - - return 0 ; -} /* aiff_command */ - -static const char* -get_loop_mode_str (short mode) -{ switch (mode) - { case 0 : return "none" ; - case 1 : return "forward" ; - case 2 : return "backward" ; - } ; - - return "*** unknown" ; -} /* get_loop_mode_str */ - -static short -get_loop_mode (short mode) -{ switch (mode) - { case 0 : return SF_LOOP_NONE ; - case 1 : return SF_LOOP_FORWARD ; - case 2 : return SF_LOOP_BACKWARD ; - } ; - - return SF_LOOP_NONE ; -} /* get_loop_mode */ - -/*========================================================================================== -** Rough hack at converting from 80 bit IEEE float in AIFF header to an int and -** back again. It assumes that all sample rates are between 1 and 800MHz, which -** should be OK as other sound file formats use a 32 bit integer to store sample -** rate. -** There is another (probably better) version in the source code to the SoX but it -** has a copyright which probably prevents it from being allowable as GPL/LGPL. -*/ - -static int -tenbytefloat2int (unsigned char *bytes) -{ int val = 3 ; - - if (bytes [0] & 0x80) /* Negative number. */ - return 0 ; - - if (bytes [0] <= 0x3F) /* Less than 1. */ - return 1 ; - - if (bytes [0] > 0x40) /* Way too big. */ - return 0x4000000 ; - - if (bytes [0] == 0x40 && bytes [1] > 0x1C) /* Too big. */ - return 800000000 ; - - /* Ok, can handle it. */ - - val = (bytes [2] << 23) | (bytes [3] << 15) | (bytes [4] << 7) | (bytes [5] >> 1) ; - - val >>= (29 - bytes [1]) ; - - return val ; -} /* tenbytefloat2int */ - -static void -uint2tenbytefloat (unsigned int num, unsigned char *bytes) -{ unsigned int mask = 0x40000000 ; - int count ; - - if (num <= 1) - { bytes [0] = 0x3F ; - bytes [1] = 0xFF ; - bytes [2] = 0x80 ; - return ; - } ; - - bytes [0] = 0x40 ; - - if (num >= mask) - { bytes [1] = 0x1D ; - return ; - } ; - - for (count = 0 ; count <= 32 ; count ++) - { if (num & mask) - break ; - mask >>= 1 ; - } ; - - num <<= count + 1 ; - bytes [1] = 29 - count ; - bytes [2] = (num >> 24) & 0xFF ; - bytes [3] = (num >> 16) & 0xFF ; - bytes [4] = (num >> 8) & 0xFF ; - bytes [5] = num & 0xFF ; - -} /* uint2tenbytefloat */ - -static int -aiff_read_basc_chunk (SF_PRIVATE * psf, int datasize) -{ const char * type_str ; - basc_CHUNK bc ; - - psf_binheader_readf (psf, "E442", &bc.version, &bc.numBeats, &bc.rootNote) ; - psf_binheader_readf (psf, "E222", &bc.scaleType, &bc.sigNumerator, &bc.sigDenominator) ; - psf_binheader_readf (psf, "E2j", &bc.loopType, datasize - sizeof (bc)) ; - - psf_log_printf (psf, " Version ? : %u\n Num Beats : %u\n Root Note : 0x%x\n", - bc.version, bc.numBeats, bc.rootNote) ; - - switch (bc.scaleType) - { case basc_SCALE_MINOR : - type_str = "MINOR" ; - break ; - case basc_SCALE_MAJOR : - type_str = "MAJOR" ; - break ; - case basc_SCALE_NEITHER : - type_str = "NEITHER" ; - break ; - case basc_SCALE_BOTH : - type_str = "BOTH" ; - break ; - default : - type_str = "!!WRONG!!" ; - break ; - } ; - - psf_log_printf (psf, " ScaleType : 0x%x (%s)\n", bc.scaleType, type_str) ; - psf_log_printf (psf, " Time Sig : %d/%d\n", bc.sigNumerator, bc.sigDenominator) ; - - switch (bc.loopType) - { case basc_TYPE_ONE_SHOT : - type_str = "One Shot" ; - break ; - case basc_TYPE_LOOP : - type_str = "Loop" ; - break ; - default: - type_str = "!!WRONG!!" ; - break ; - } ; - - psf_log_printf (psf, " Loop Type : 0x%x (%s)\n", bc.loopType, type_str) ; - - if ((psf->loop_info = calloc (1, sizeof (SF_LOOP_INFO))) == NULL) - return SFE_MALLOC_FAILED ; - - psf->loop_info->time_sig_num = bc.sigNumerator ; - psf->loop_info->time_sig_den = bc.sigDenominator ; - psf->loop_info->loop_mode = (bc.loopType == basc_TYPE_ONE_SHOT) ? SF_LOOP_NONE : SF_LOOP_FORWARD ; - psf->loop_info->num_beats = bc.numBeats ; - - /* Can always be recalculated from other known fields. */ - psf->loop_info->bpm = (1.0 / psf->sf.frames) * psf->sf.samplerate - * ((bc.numBeats * 4.0) / bc.sigDenominator) * 60.0 ; - psf->loop_info->root_key = bc.rootNote ; - - return 0 ; -} /* aiff_read_basc_chunk */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 7dec56ca-d6f2-48cf-863b-a72e7e17a5d9 -*/ diff --git a/libs/libsndfile/src/alaw.c b/libs/libsndfile/src/alaw.c deleted file mode 100644 index a2d27cb58c..0000000000 --- a/libs/libsndfile/src/alaw.c +++ /dev/null @@ -1,544 +0,0 @@ -/* -** Copyright (C) 1999-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sndfile.h" -#include "float_cast.h" -#include "common.h" - -static sf_count_t alaw_read_alaw2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t alaw_read_alaw2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t alaw_read_alaw2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t alaw_read_alaw2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t alaw_write_s2alaw (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t alaw_write_i2alaw (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t alaw_write_f2alaw (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t alaw_write_d2alaw (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -static void alaw2s_array (unsigned char *buffer, int count, short *ptr) ; -static void alaw2i_array (unsigned char *buffer, int count, int *ptr) ; -static void alaw2f_array (unsigned char *buffer, int count, float *ptr, float normfact) ; -static void alaw2d_array (unsigned char *buffer, int count, double *ptr, double normfact) ; - -static void s2alaw_array (const short *buffer, int count, unsigned char *ptr) ; -static void i2alaw_array (const int *buffer, int count, unsigned char *ptr) ; -static void f2alaw_array (const float *buffer, int count, unsigned char *ptr, float normfact) ; -static void d2alaw_array (const double *buffer, int count, unsigned char *ptr, double normfact) ; - - -int -alaw_init (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_READ || psf->mode == SFM_RDWR) - { psf->read_short = alaw_read_alaw2s ; - psf->read_int = alaw_read_alaw2i ; - psf->read_float = alaw_read_alaw2f ; - psf->read_double = alaw_read_alaw2d ; - } ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { psf->write_short = alaw_write_s2alaw ; - psf->write_int = alaw_write_i2alaw ; - psf->write_float = alaw_write_f2alaw ; - psf->write_double = alaw_write_d2alaw ; - } ; - - psf->bytewidth = 1 ; - psf->blockwidth = psf->sf.channels ; - - if (psf->filelength > psf->dataoffset) - psf->datalength = (psf->dataend) ? psf->dataend - psf->dataoffset : psf->filelength - psf->dataoffset ; - else - psf->datalength = 0 ; - - psf->sf.frames = psf->datalength / psf->blockwidth ; - - return 0 ; -} /* alaw_init */ - -/*============================================================================== - * Private static functions and data. - */ - -static -short alaw_decode [256] = -{ -5504, -5248, -6016, -5760, -4480, -4224, -4992, -4736, - -7552, -7296, -8064, -7808, -6528, -6272, -7040, -6784, - -2752, -2624, -3008, -2880, -2240, -2112, -2496, -2368, - -3776, -3648, -4032, -3904, -3264, -3136, -3520, -3392, - -22016, -20992, -24064, -23040, -17920, -16896, -19968, -18944, - -30208, -29184, -32256, -31232, -26112, -25088, -28160, -27136, - -11008, -10496, -12032, -11520, -8960, -8448, -9984, -9472, - -15104, -14592, -16128, -15616, -13056, -12544, -14080, -13568, - -344, -328, -376, -360, -280, -264, -312, -296, - -472, -456, -504, -488, -408, -392, -440, -424, - -88, -72, -120, -104, -24, -8, -56, -40, - -216, -200, -248, -232, -152, -136, -184, -168, - -1376, -1312, -1504, -1440, -1120, -1056, -1248, -1184, - -1888, -1824, -2016, -1952, -1632, -1568, -1760, -1696, - -688, -656, -752, -720, -560, -528, -624, -592, - -944, -912, -1008, -976, -816, -784, -880, -848, - 5504, 5248, 6016, 5760, 4480, 4224, 4992, 4736, - 7552, 7296, 8064, 7808, 6528, 6272, 7040, 6784, - 2752, 2624, 3008, 2880, 2240, 2112, 2496, 2368, - 3776, 3648, 4032, 3904, 3264, 3136, 3520, 3392, - 22016, 20992, 24064, 23040, 17920, 16896, 19968, 18944, - 30208, 29184, 32256, 31232, 26112, 25088, 28160, 27136, - 11008, 10496, 12032, 11520, 8960, 8448, 9984, 9472, - 15104, 14592, 16128, 15616, 13056, 12544, 14080, 13568, - 344, 328, 376, 360, 280, 264, 312, 296, - 472, 456, 504, 488, 408, 392, 440, 424, - 88, 72, 120, 104, 24, 8, 56, 40, - 216, 200, 248, 232, 152, 136, 184, 168, - 1376, 1312, 1504, 1440, 1120, 1056, 1248, 1184, - 1888, 1824, 2016, 1952, 1632, 1568, 1760, 1696, - 688, 656, 752, 720, 560, 528, 624, 592, - 944, 912, 1008, 976, 816, 784, 880, 848 -} ; /* alaw_decode */ - -static -unsigned char alaw_encode [2048 + 1] = -{ 0xd5, 0xd4, 0xd7, 0xd6, 0xd1, 0xd0, 0xd3, 0xd2, 0xdd, 0xdc, 0xdf, 0xde, - 0xd9, 0xd8, 0xdb, 0xda, 0xc5, 0xc4, 0xc7, 0xc6, 0xc1, 0xc0, 0xc3, 0xc2, - 0xcd, 0xcc, 0xcf, 0xce, 0xc9, 0xc8, 0xcb, 0xca, 0xf5, 0xf5, 0xf4, 0xf4, - 0xf7, 0xf7, 0xf6, 0xf6, 0xf1, 0xf1, 0xf0, 0xf0, 0xf3, 0xf3, 0xf2, 0xf2, - 0xfd, 0xfd, 0xfc, 0xfc, 0xff, 0xff, 0xfe, 0xfe, 0xf9, 0xf9, 0xf8, 0xf8, - 0xfb, 0xfb, 0xfa, 0xfa, 0xe5, 0xe5, 0xe5, 0xe5, 0xe4, 0xe4, 0xe4, 0xe4, - 0xe7, 0xe7, 0xe7, 0xe7, 0xe6, 0xe6, 0xe6, 0xe6, 0xe1, 0xe1, 0xe1, 0xe1, - 0xe0, 0xe0, 0xe0, 0xe0, 0xe3, 0xe3, 0xe3, 0xe3, 0xe2, 0xe2, 0xe2, 0xe2, - 0xed, 0xed, 0xed, 0xed, 0xec, 0xec, 0xec, 0xec, 0xef, 0xef, 0xef, 0xef, - 0xee, 0xee, 0xee, 0xee, 0xe9, 0xe9, 0xe9, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, - 0xeb, 0xeb, 0xeb, 0xeb, 0xea, 0xea, 0xea, 0xea, 0x95, 0x95, 0x95, 0x95, - 0x95, 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, - 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x96, 0x96, 0x96, 0x96, - 0x96, 0x96, 0x96, 0x96, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x93, 0x93, 0x93, 0x93, - 0x93, 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, - 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9c, 0x9c, 0x9c, 0x9c, - 0x9c, 0x9c, 0x9c, 0x9c, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, - 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x99, 0x99, 0x99, 0x99, - 0x99, 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, - 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9a, 0x9a, 0x9a, 0x9a, - 0x9a, 0x9a, 0x9a, 0x9a, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0xb5, 0xb5, 0xb5, 0xb5, - 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, - 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, - 0xb5, 0xb5, 0xb5, 0xb5, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, - 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, - 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, - 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, - 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, - 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb6, 0xb6, 0xb6, 0xb6, - 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, - 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, - 0xb6, 0xb6, 0xb6, 0xb6, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, - 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, - 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, - 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, - 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, - 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb3, 0xb3, 0xb3, 0xb3, - 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, - 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, - 0xb3, 0xb3, 0xb3, 0xb3, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, - 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, - 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, - 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, - 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, - 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbc, 0xbc, 0xbc, 0xbc, - 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, - 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, - 0xbc, 0xbc, 0xbc, 0xbc, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, - 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, - 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, - 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, - 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, - 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xb9, 0xb9, 0xb9, 0xb9, - 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, - 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, - 0xb9, 0xb9, 0xb9, 0xb9, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, - 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, - 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, - 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, - 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, - 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xba, 0xba, 0xba, 0xba, - 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, - 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, - 0xba, 0xba, 0xba, 0xba, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, - 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, - 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, - 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, - 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, - 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa4, 0xa4, 0xa4, 0xa4, - 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, - 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, - 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, - 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, - 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, - 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, - 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, - 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, - 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, - 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, - 0xa7, 0xa7, 0xa7, 0xa7, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, - 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, - 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, - 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, - 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, - 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa1, 0xa1, 0xa1, 0xa1, - 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, - 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, - 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, - 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, - 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, - 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, - 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, - 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, - 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, - 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, - 0xa0, 0xa0, 0xa0, 0xa0, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, - 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, - 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, - 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, - 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, - 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0xa2, 0xa2, 0xa2, - 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, - 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, - 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, - 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, - 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, - 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, - 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, - 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, - 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, - 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, - 0xad, 0xad, 0xad, 0xad, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, - 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, - 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, - 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, - 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, - 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xaf, 0xaf, 0xaf, 0xaf, - 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, - 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, - 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, - 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, - 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, - 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, - 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, - 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, - 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, - 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, - 0xae, 0xae, 0xae, 0xae, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, - 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, - 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, - 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, - 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, - 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa8, 0xa8, 0xa8, 0xa8, - 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, - 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, - 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, - 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, - 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, - 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, - 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, - 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, - 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, - 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, - 0xab, 0xab, 0xab, 0xab, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x2a -} ; /* alaw_encode */ - -static inline void -alaw2s_array (unsigned char *buffer, int count, short *ptr) -{ while (--count >= 0) - ptr [count] = alaw_decode [(int) buffer [count]] ; -} /* alaw2s_array */ - -static inline void -alaw2i_array (unsigned char *buffer, int count, int *ptr) -{ while (--count >= 0) - ptr [count] = alaw_decode [(int) buffer [count]] << 16 ; -} /* alaw2i_array */ - -static inline void -alaw2f_array (unsigned char *buffer, int count, float *ptr, float normfact) -{ while (--count >= 0) - ptr [count] = normfact * alaw_decode [(int) buffer [count]] ; -} /* alaw2f_array */ - -static inline void -alaw2d_array (unsigned char *buffer, int count, double *ptr, double normfact) -{ while (--count >= 0) - ptr [count] = normfact * alaw_decode [(int) buffer [count]] ; -} /* alaw2d_array */ - -static inline void -s2alaw_array (const short *ptr, int count, unsigned char *buffer) -{ while (--count >= 0) - { if (ptr [count] >= 0) - buffer [count] = alaw_encode [ptr [count] / 16] ; - else - buffer [count] = 0x7F & alaw_encode [ptr [count] / -16] ; - } ; -} /* s2alaw_array */ - -static inline void -i2alaw_array (const int *ptr, int count, unsigned char *buffer) -{ while (--count >= 0) - { if (ptr [count] >= 0) - buffer [count] = alaw_encode [ptr [count] >> (16 + 4)] ; - else - buffer [count] = 0x7F & alaw_encode [- ptr [count] >> (16 + 4)] ; - } ; -} /* i2alaw_array */ - -static inline void -f2alaw_array (const float *ptr, int count, unsigned char *buffer, float normfact) -{ while (--count >= 0) - { if (ptr [count] >= 0) - buffer [count] = alaw_encode [lrintf (normfact * ptr [count])] ; - else - buffer [count] = 0x7F & alaw_encode [- lrintf (normfact * ptr [count])] ; - } ; -} /* f2alaw_array */ - -static inline void -d2alaw_array (const double *ptr, int count, unsigned char *buffer, double normfact) -{ while (--count >= 0) - { if (ptr [count] >= 0) - buffer [count] = alaw_encode [lrint (normfact * ptr [count])] ; - else - buffer [count] = 0x7F & alaw_encode [- lrint (normfact * ptr [count])] ; - } ; -} /* d2alaw_array */ - -/*============================================================================== -*/ - -static sf_count_t -alaw_read_alaw2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ; - alaw2s_array (psf->u.ucbuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* alaw_read_alaw2s */ - -static sf_count_t -alaw_read_alaw2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ; - alaw2i_array (psf->u.ucbuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* alaw_read_alaw2i */ - -static sf_count_t -alaw_read_alaw2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - float normfact ; - - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ; - alaw2f_array (psf->u.ucbuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* alaw_read_alaw2f */ - -static sf_count_t -alaw_read_alaw2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - double normfact ; - - normfact = (psf->norm_double) ? 1.0 / ((double) 0x8000) : 1.0 ; - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ; - alaw2d_array (psf->u.ucbuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* alaw_read_alaw2d */ - -/*============================================================================================= -*/ - -static sf_count_t -alaw_write_s2alaw (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - s2alaw_array (ptr + total, bufferlen, psf->u.ucbuf) ; - writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* alaw_write_s2alaw */ - -static sf_count_t -alaw_write_i2alaw (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - i2alaw_array (ptr + total, bufferlen, psf->u.ucbuf) ; - writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* alaw_write_i2alaw */ - -static sf_count_t -alaw_write_f2alaw (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - float normfact ; - - normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFF) / 16.0 : 1.0 / 16 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - f2alaw_array (ptr + total, bufferlen, psf->u.ucbuf, normfact) ; - writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* alaw_write_f2alaw */ - -static sf_count_t -alaw_write_d2alaw (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - double normfact ; - - normfact = (psf->norm_double) ? (1.0 * 0x7FFF) / 16.0 : 1.0 / 16.0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - d2alaw_array (ptr + total, bufferlen, psf->u.ucbuf, normfact) ; - writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* alaw_write_d2alaw */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 289ccfc2-42a6-4f1f-a29f-4dcc9bfa8752 -*/ diff --git a/libs/libsndfile/src/au.c b/libs/libsndfile/src/au.c deleted file mode 100644 index 3a5f93bd90..0000000000 --- a/libs/libsndfile/src/au.c +++ /dev/null @@ -1,453 +0,0 @@ -/* -** Copyright (C) 1999-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -/*------------------------------------------------------------------------------ -** Macros to handle big/little endian issues. -*/ - -#define DOTSND_MARKER (MAKE_MARKER ('.', 's', 'n', 'd')) -#define DNSDOT_MARKER (MAKE_MARKER ('d', 'n', 's', '.')) - -#define AU_DATA_OFFSET 24 - -/*------------------------------------------------------------------------------ -** Known AU file encoding types. -*/ - -enum -{ AU_ENCODING_ULAW_8 = 1, /* 8-bit u-law samples */ - AU_ENCODING_PCM_8 = 2, /* 8-bit linear samples */ - AU_ENCODING_PCM_16 = 3, /* 16-bit linear samples */ - AU_ENCODING_PCM_24 = 4, /* 24-bit linear samples */ - AU_ENCODING_PCM_32 = 5, /* 32-bit linear samples */ - - AU_ENCODING_FLOAT = 6, /* floating-point samples */ - AU_ENCODING_DOUBLE = 7, /* double-precision float samples */ - AU_ENCODING_INDIRECT = 8, /* fragmented sampled data */ - AU_ENCODING_NESTED = 9, /* ? */ - AU_ENCODING_DSP_CORE = 10, /* DSP program */ - AU_ENCODING_DSP_DATA_8 = 11, /* 8-bit fixed-point samples */ - AU_ENCODING_DSP_DATA_16 = 12, /* 16-bit fixed-point samples */ - AU_ENCODING_DSP_DATA_24 = 13, /* 24-bit fixed-point samples */ - AU_ENCODING_DSP_DATA_32 = 14, /* 32-bit fixed-point samples */ - - AU_ENCODING_DISPLAY = 16, /* non-audio display data */ - AU_ENCODING_MULAW_SQUELCH = 17, /* ? */ - AU_ENCODING_EMPHASIZED = 18, /* 16-bit linear with emphasis */ - AU_ENCODING_NEXT = 19, /* 16-bit linear with compression (NEXT) */ - AU_ENCODING_COMPRESSED_EMPHASIZED = 20, /* A combination of the two above */ - AU_ENCODING_DSP_COMMANDS = 21, /* Music Kit DSP commands */ - AU_ENCODING_DSP_COMMANDS_SAMPLES = 22, /* ? */ - - AU_ENCODING_ADPCM_G721_32 = 23, /* G721 32 kbs ADPCM - 4 bits per sample. */ - AU_ENCODING_ADPCM_G722 = 24, /* G722 64 kbs ADPCM */ - AU_ENCODING_ADPCM_G723_24 = 25, /* G723 24 kbs ADPCM - 3 bits per sample. */ - AU_ENCODING_ADPCM_G723_40 = 26, /* G723 40 kbs ADPCM - 5 bits per sample. */ - - AU_ENCODING_ALAW_8 = 27 -} ; - -/*------------------------------------------------------------------------------ -** Typedefs. -*/ - -typedef struct -{ int dataoffset ; - int datasize ; - int encoding ; - int samplerate ; - int channels ; -} AU_FMT ; - - -/*------------------------------------------------------------------------------ -** Private static functions. -*/ - -static int au_close (SF_PRIVATE *psf) ; - -static int au_format_to_encoding (int format) ; - -static int au_write_header (SF_PRIVATE *psf, int calc_length) ; -static int au_read_header (SF_PRIVATE *psf) ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -au_open (SF_PRIVATE *psf) -{ int subformat ; - int error = 0 ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = au_read_header (psf))) - return error ; - } ; - - if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_AU) - return SFE_BAD_OPEN_FORMAT ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ; - if (CPU_IS_LITTLE_ENDIAN && psf->endian == SF_ENDIAN_CPU) - psf->endian = SF_ENDIAN_LITTLE ; - else if (psf->endian != SF_ENDIAN_LITTLE) - psf->endian = SF_ENDIAN_BIG ; - - if (au_write_header (psf, SF_FALSE)) - return psf->error ; - - psf->write_header = au_write_header ; - } ; - - psf->container_close = au_close ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - - switch (subformat) - { case SF_FORMAT_ULAW : /* 8-bit Ulaw encoding. */ - ulaw_init (psf) ; - break ; - - case SF_FORMAT_PCM_S8 : /* 8-bit linear PCM. */ - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_PCM_16 : /* 16-bit linear PCM. */ - case SF_FORMAT_PCM_24 : /* 24-bit linear PCM */ - case SF_FORMAT_PCM_32 : /* 32-bit linear PCM. */ - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_ALAW : /* 8-bit Alaw encoding. */ - alaw_init (psf) ; - break ; - - /* Lite remove start */ - case SF_FORMAT_FLOAT : /* 32-bit floats. */ - error = float32_init (psf) ; - break ; - - case SF_FORMAT_DOUBLE : /* 64-bit double precision floats. */ - error = double64_init (psf) ; - break ; - - case SF_FORMAT_G721_32 : - error = g72x_init (psf) ; - psf->sf.seekable = SF_FALSE ; - break ; - - case SF_FORMAT_G723_24 : - error = g72x_init (psf) ; - psf->sf.seekable = SF_FALSE ; - break ; - - case SF_FORMAT_G723_40 : - error = g72x_init (psf) ; - psf->sf.seekable = SF_FALSE ; - break ; - /* Lite remove end */ - - default : break ; - } ; - - return error ; -} /* au_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -au_close (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - au_write_header (psf, SF_TRUE) ; - - return 0 ; -} /* au_close */ - -static int -au_write_header (SF_PRIVATE *psf, int calc_length) -{ sf_count_t current ; - int encoding, datalength ; - - if (psf->pipeoffset > 0) - return 0 ; - - current = psf_ftell (psf) ; - - if (calc_length) - { psf->filelength = psf_get_filelen (psf) ; - - psf->datalength = psf->filelength - psf->dataoffset ; - if (psf->dataend) - psf->datalength -= psf->filelength - psf->dataend ; - - psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ; - } ; - - encoding = au_format_to_encoding (psf->sf.format & SF_FORMAT_SUBMASK) ; - if (! encoding) - return (psf->error = SFE_BAD_OPEN_FORMAT) ; - - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - - /* - ** Only attempt to seek if we are not writng to a pipe. If we are - ** writing to a pipe we shouldn't be here anyway. - */ - if (psf->is_pipe == SF_FALSE) - psf_fseek (psf, 0, SEEK_SET) ; - - /* - ** AU format files allow a datalength value of -1 if the datalength - ** is not know at the time the header is written. - ** Also use this value of -1 if the datalength > 2 gigabytes. - */ - if (psf->datalength < 0 || psf->datalength > 0x7FFFFFFF) - datalength = -1 ; - else - datalength = (int) (psf->datalength & 0x7FFFFFFF) ; - - if (psf->endian == SF_ENDIAN_BIG) - { psf_binheader_writef (psf, "Em4", DOTSND_MARKER, AU_DATA_OFFSET) ; - psf_binheader_writef (psf, "E4444", datalength, encoding, psf->sf.samplerate, psf->sf.channels) ; - } - else if (psf->endian == SF_ENDIAN_LITTLE) - { psf_binheader_writef (psf, "em4", DNSDOT_MARKER, AU_DATA_OFFSET) ; - psf_binheader_writef (psf, "e4444", datalength, encoding, psf->sf.samplerate, psf->sf.channels) ; - } - else - return (psf->error = SFE_BAD_OPEN_FORMAT) ; - - /* Header construction complete so write it out. */ - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - if (psf->error) - return psf->error ; - - psf->dataoffset = psf->headindex ; - - if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* au_write_header */ - -static int -au_format_to_encoding (int format) -{ - switch (format) - { case SF_FORMAT_PCM_S8 : return AU_ENCODING_PCM_8 ; - case SF_FORMAT_PCM_16 : return AU_ENCODING_PCM_16 ; - case SF_FORMAT_PCM_24 : return AU_ENCODING_PCM_24 ; - case SF_FORMAT_PCM_32 : return AU_ENCODING_PCM_32 ; - - case SF_FORMAT_FLOAT : return AU_ENCODING_FLOAT ; - case SF_FORMAT_DOUBLE : return AU_ENCODING_DOUBLE ; - - case SF_FORMAT_ULAW : return AU_ENCODING_ULAW_8 ; - case SF_FORMAT_ALAW : return AU_ENCODING_ALAW_8 ; - - case SF_FORMAT_G721_32 : return AU_ENCODING_ADPCM_G721_32 ; - case SF_FORMAT_G723_24 : return AU_ENCODING_ADPCM_G723_24 ; - case SF_FORMAT_G723_40 : return AU_ENCODING_ADPCM_G723_40 ; - - default : break ; - } ; - return 0 ; -} /* au_format_to_encoding */ - -static int -au_read_header (SF_PRIVATE *psf) -{ AU_FMT au_fmt ; - int marker, dword ; - - memset (&au_fmt, 0, sizeof (au_fmt)) ; - psf_binheader_readf (psf, "pm", 0, &marker) ; - psf_log_printf (psf, "%M\n", marker) ; - - if (marker == DOTSND_MARKER) - { psf->endian = SF_ENDIAN_BIG ; - - psf_binheader_readf (psf, "E44444", &(au_fmt.dataoffset), &(au_fmt.datasize), - &(au_fmt.encoding), &(au_fmt.samplerate), &(au_fmt.channels)) ; - } - else if (marker == DNSDOT_MARKER) - { psf->endian = SF_ENDIAN_LITTLE ; - psf_binheader_readf (psf, "e44444", &(au_fmt.dataoffset), &(au_fmt.datasize), - &(au_fmt.encoding), &(au_fmt.samplerate), &(au_fmt.channels)) ; - } - else - return SFE_AU_NO_DOTSND ; - - psf_log_printf (psf, " Data Offset : %d\n", au_fmt.dataoffset) ; - - if (psf->fileoffset > 0 && au_fmt.datasize == -1) - { psf_log_printf (psf, " Data Size : -1\n") ; - return SFE_AU_EMBED_BAD_LEN ; - } ; - - if (psf->fileoffset > 0) - { psf->filelength = au_fmt.dataoffset + au_fmt.datasize ; - psf_log_printf (psf, " Data Size : %d\n", au_fmt.datasize) ; - } - else if (au_fmt.datasize == -1 || au_fmt.dataoffset + au_fmt.datasize == psf->filelength) - psf_log_printf (psf, " Data Size : %d\n", au_fmt.datasize) ; - else if (au_fmt.dataoffset + au_fmt.datasize < psf->filelength) - { psf->filelength = au_fmt.dataoffset + au_fmt.datasize ; - psf_log_printf (psf, " Data Size : %d\n", au_fmt.datasize) ; - } - else - { dword = psf->filelength - au_fmt.dataoffset ; - psf_log_printf (psf, " Data Size : %d (should be %d)\n", au_fmt.datasize, dword) ; - au_fmt.datasize = dword ; - } ; - - psf->dataoffset = au_fmt.dataoffset ; - psf->datalength = psf->filelength - psf->dataoffset ; - - if (psf_ftell (psf) < psf->dataoffset) - psf_binheader_readf (psf, "j", psf->dataoffset - psf_ftell (psf)) ; - - psf->sf.samplerate = au_fmt.samplerate ; - psf->sf.channels = au_fmt.channels ; - - /* Only fill in type major. */ - if (psf->endian == SF_ENDIAN_BIG) - psf->sf.format = SF_FORMAT_AU ; - else if (psf->endian == SF_ENDIAN_LITTLE) - psf->sf.format = SF_ENDIAN_LITTLE | SF_FORMAT_AU ; - - psf_log_printf (psf, " Encoding : %d => ", au_fmt.encoding) ; - - psf->sf.format = psf->sf.format & SF_FORMAT_ENDMASK ; - - switch (au_fmt.encoding) - { case AU_ENCODING_ULAW_8 : - psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_ULAW ; - psf->bytewidth = 1 ; /* Before decoding */ - psf_log_printf (psf, "8-bit ISDN u-law\n") ; - break ; - - case AU_ENCODING_PCM_8 : - psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_PCM_S8 ; - psf->bytewidth = 1 ; - psf_log_printf (psf, "8-bit linear PCM\n") ; - break ; - - case AU_ENCODING_PCM_16 : - psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_PCM_16 ; - psf->bytewidth = 2 ; - psf_log_printf (psf, "16-bit linear PCM\n") ; - break ; - - case AU_ENCODING_PCM_24 : - psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_PCM_24 ; - psf->bytewidth = 3 ; - psf_log_printf (psf, "24-bit linear PCM\n") ; - break ; - - case AU_ENCODING_PCM_32 : - psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_PCM_32 ; - psf->bytewidth = 4 ; - psf_log_printf (psf, "32-bit linear PCM\n") ; - break ; - - case AU_ENCODING_FLOAT : - psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_FLOAT ; - psf->bytewidth = 4 ; - psf_log_printf (psf, "32-bit float\n") ; - break ; - - case AU_ENCODING_DOUBLE : - psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_DOUBLE ; - psf->bytewidth = 8 ; - psf_log_printf (psf, "64-bit double precision float\n") ; - break ; - - case AU_ENCODING_ALAW_8 : - psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_ALAW ; - psf->bytewidth = 1 ; /* Before decoding */ - psf_log_printf (psf, "8-bit ISDN A-law\n") ; - break ; - - case AU_ENCODING_ADPCM_G721_32 : - psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_G721_32 ; - psf->bytewidth = 0 ; - psf_log_printf (psf, "G721 32kbs ADPCM\n") ; - break ; - - case AU_ENCODING_ADPCM_G723_24 : - psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_G723_24 ; - psf->bytewidth = 0 ; - psf_log_printf (psf, "G723 24kbs ADPCM\n") ; - break ; - - case AU_ENCODING_ADPCM_G723_40 : - psf->sf.format |= SF_FORMAT_AU | SF_FORMAT_G723_40 ; - psf->bytewidth = 0 ; - psf_log_printf (psf, "G723 40kbs ADPCM\n") ; - break ; - - case AU_ENCODING_ADPCM_G722 : - psf_log_printf (psf, "G722 64 kbs ADPCM (unsupported)\n") ; - break ; - - case AU_ENCODING_NEXT : - psf_log_printf (psf, "Weird NeXT encoding format (unsupported)\n") ; - break ; - - default : - psf_log_printf (psf, "Unknown!!\n") ; - break ; - } ; - - psf_log_printf (psf, " Sample Rate : %d\n", au_fmt.samplerate) ; - psf_log_printf (psf, " Channels : %d\n", au_fmt.channels) ; - - psf->blockwidth = psf->sf.channels * psf->bytewidth ; - - if (! psf->sf.frames && psf->blockwidth) - psf->sf.frames = (psf->filelength - psf->dataoffset) / psf->blockwidth ; - - return 0 ; -} /* au_read_header */ -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 31f691b1-cde9-4ed2-9469-6bca60fb9cd0 -*/ diff --git a/libs/libsndfile/src/avr.c b/libs/libsndfile/src/avr.c deleted file mode 100644 index ad02c048ac..0000000000 --- a/libs/libsndfile/src/avr.c +++ /dev/null @@ -1,254 +0,0 @@ -/* -** Copyright (C) 2004-2006 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -#define TWOBIT_MARKER (MAKE_MARKER ('2', 'B', 'I', 'T')) -#define AVR_HDR_SIZE 128 - -#define SFE_AVR_X 666 - -/* -** From: hyc@hanauma.Jpl.Nasa.Gov (Howard Chu) -** -** A lot of PD software exists to play Mac .snd files on the ST. One other -** format that seems pretty popular (used by a number of commercial packages) -** is the AVR format (from Audio Visual Research). This format has a 128 byte -** header that looks like this (its actually packed, but thats not portable): -*/ - -typedef struct -{ int marker ; /* 2BIT */ - char name [8] ; /* null-padded sample name */ - short mono ; /* 0 = mono, 0xffff = stereo */ - short rez ; /* 8 = 8 bit, 16 = 16 bit */ - short sign ; /* 0 = unsigned, 0xffff = signed */ - - short loop ; /* 0 = no loop, 0xffff = looping sample */ - short midi ; /* 0xffff = no MIDI note assigned, */ - /* 0xffXX = single key note assignment */ - /* 0xLLHH = key split, low/hi note */ - int srate ; /* sample frequency in hertz */ - int frames ; /* sample length in bytes or words (see rez) */ - int lbeg ; /* offset to start of loop in bytes or words. */ - /* set to zero if unused */ - int lend ; /* offset to end of loop in bytes or words. */ - /* set to sample length if unused */ - short res1 ; /* Reserved, MIDI keyboard split */ - short res2 ; /* Reserved, sample compression */ - short res3 ; /* Reserved */ - char ext [20] ; /* Additional filename space, used if (name[7] != 0) */ - char user [64] ; /* User defined. Typically ASCII message */ -} AVR_HEADER ; - -/*------------------------------------------------------------------------------ -** Private static functions. -*/ - -static int avr_close (SF_PRIVATE *psf) ; - -static int avr_read_header (SF_PRIVATE *psf) ; -static int avr_write_header (SF_PRIVATE *psf, int calc_length) ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -avr_open (SF_PRIVATE *psf) -{ int error = 0 ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = avr_read_header (psf))) - return error ; - } ; - - if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_AVR) - return SFE_BAD_OPEN_FORMAT ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ; - psf->endian = SF_ENDIAN_BIG ; - - if (avr_write_header (psf, SF_FALSE)) - return psf->error ; - - psf->write_header = avr_write_header ; - } ; - - psf->container_close = avr_close ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - - error = pcm_init (psf) ; - - return error ; -} /* avr_open */ - -static int -avr_read_header (SF_PRIVATE *psf) -{ AVR_HEADER hdr ; - - memset (&hdr, 0, sizeof (hdr)) ; - - psf_binheader_readf (psf, "pmb", 0, &hdr.marker, &hdr.name, sizeof (hdr.name)) ; - psf_log_printf (psf, "%M\n", hdr.marker) ; - - if (hdr.marker != TWOBIT_MARKER) - return SFE_AVR_X ; - - psf_log_printf (psf, " Name : %s\n", hdr.name) ; - - psf_binheader_readf (psf, "E22222", &hdr.mono, &hdr.rez, &hdr.sign, &hdr.loop, &hdr.midi) ; - - psf->sf.channels = (hdr.mono & 1) + 1 ; - - psf_log_printf (psf, " Channels : %d\n Bit width : %d\n Signed : %s\n", - (hdr.mono & 1) + 1, hdr.rez, hdr.sign ? "yes" : "no") ; - - switch ((hdr.rez << 16) + (hdr.sign & 1)) - { case ((8 << 16) + 0) : - psf->sf.format = SF_FORMAT_AVR | SF_FORMAT_PCM_U8 ; - psf->bytewidth = 1 ; - break ; - - case ((8 << 16) + 1) : - psf->sf.format = SF_FORMAT_AVR | SF_FORMAT_PCM_S8 ; - psf->bytewidth = 1 ; - break ; - - case ((16 << 16) + 1) : - psf->sf.format = SF_FORMAT_AVR | SF_FORMAT_PCM_16 ; - psf->bytewidth = 2 ; - break ; - - default : - psf_log_printf (psf, "Error : bad rez/sign combination.\n") ; - return SFE_AVR_X ; - } ; - - psf_binheader_readf (psf, "E4444", &hdr.srate, &hdr.frames, &hdr.lbeg, &hdr.lend) ; - - psf->sf.frames = hdr.frames ; - psf->sf.samplerate = hdr.srate ; - - psf_log_printf (psf, " Frames : %D\n", psf->sf.frames) ; - psf_log_printf (psf, " Sample rate : %d\n", psf->sf.samplerate) ; - - psf_binheader_readf (psf, "E222", &hdr.res1, &hdr.res2, &hdr.res3) ; - psf_binheader_readf (psf, "bb", hdr.ext, sizeof (hdr.ext), hdr.user, sizeof (hdr.user)) ; - - psf_log_printf (psf, " Ext : %s\n User : %s\n", hdr.ext, hdr.user) ; - - psf->endian = SF_ENDIAN_BIG ; - - psf->dataoffset = AVR_HDR_SIZE ; - psf->datalength = hdr.frames * (hdr.rez / 8) ; - - if (psf->fileoffset > 0) - psf->filelength = AVR_HDR_SIZE + psf->datalength ; - - if (psf_ftell (psf) != psf->dataoffset) - psf_binheader_readf (psf, "j", psf->dataoffset - psf_ftell (psf)) ; - - psf->blockwidth = psf->sf.channels * psf->bytewidth ; - - if (psf->sf.frames == 0 && psf->blockwidth) - psf->sf.frames = (psf->filelength - psf->dataoffset) / psf->blockwidth ; - - return 0 ; -} /* avr_read_header */ - -static int -avr_write_header (SF_PRIVATE *psf, int calc_length) -{ sf_count_t current ; - int sign ; - - if (psf->pipeoffset > 0) - return 0 ; - - current = psf_ftell (psf) ; - - if (calc_length) - { psf->filelength = psf_get_filelen (psf) ; - - psf->datalength = psf->filelength - psf->dataoffset ; - if (psf->dataend) - psf->datalength -= psf->filelength - psf->dataend ; - - psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ; - } ; - - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - - /* - ** Only attempt to seek if we are not writng to a pipe. If we are - ** writing to a pipe we shouldn't be here anyway. - */ - if (psf->is_pipe == SF_FALSE) - psf_fseek (psf, 0, SEEK_SET) ; - - psf_binheader_writef (psf, "Emz22", TWOBIT_MARKER, make_size_t (8), - psf->sf.channels == 2 ? 0xFFFF : 0, psf->bytewidth * 8) ; - - sign = ((psf->sf.format & SF_FORMAT_SUBMASK) == SF_FORMAT_PCM_U8) ? 0 : 0xFFFF ; - - psf_binheader_writef (psf, "E222", sign, 0, 0xFFFF) ; - psf_binheader_writef (psf, "E4444", psf->sf.samplerate, psf->sf.frames, 0, 0) ; - - psf_binheader_writef (psf, "E222zz", 0, 0, 0, make_size_t (20), make_size_t (64)) ; - - /* Header construction complete so write it out. */ - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - if (psf->error) - return psf->error ; - - psf->dataoffset = psf->headindex ; - - if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* avr_write_header */ - -static int -avr_close (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - avr_write_header (psf, SF_TRUE) ; - - return 0 ; -} /* avr_close */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 0823d454-f39a-4a28-a776-607f1ef33b52 -*/ diff --git a/libs/libsndfile/src/broadcast.c b/libs/libsndfile/src/broadcast.c deleted file mode 100644 index e33227778d..0000000000 --- a/libs/libsndfile/src/broadcast.c +++ /dev/null @@ -1,89 +0,0 @@ -/* -** Copyright (C) 2006 Paul Davis -** Copyright (C) 2006 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include -#include - -#include "common.h" - -/* -** Allocate and initialize a broadcast info structure. -*/ - -SF_BROADCAST_INFO* -broadcast_info_alloc (void) -{ SF_BROADCAST_INFO* bext ; - - if ((bext = calloc (1, sizeof (SF_BROADCAST_INFO))) == NULL) - return NULL ; - - return bext ; -} /* broadcast_info_alloc */ - -int -broadcast_info_copy (SF_BROADCAST_INFO* dst, SF_BROADCAST_INFO* src) -{ memcpy (dst, src, sizeof (SF_BROADCAST_INFO)) ; - - /* Currently writing this version. */ - dst->version = 1 ; - - return SF_TRUE ; -} /* broadcast_info_copy */ - -int -broadcast_add_coding_history (SF_BROADCAST_INFO* bext, unsigned int channels, unsigned int samplerate) -{ char chnstr [16] ; - int count ; - - switch (channels) - { case 0 : - return SF_FALSE ; - - case 1 : - strncpy (chnstr, "mono", sizeof (chnstr)) ; - break ; - - case 2 : - strncpy (chnstr, "stereo", sizeof (chnstr)) ; - break ; - - default : - LSF_SNPRINTF (chnstr, sizeof (chnstr), "%uchn", channels) ; - break ; - } - - count = LSF_SNPRINTF (bext->coding_history, sizeof (bext->coding_history), "F=%u,A=PCM,M=%s,W=24,T=%s-%s", samplerate, chnstr, PACKAGE, VERSION) ; - - if (count >= SIGNED_SIZEOF (bext->coding_history)) - bext->coding_history_size = sizeof (bext->coding_history) ; - else - { count += count & 1 ; - bext->coding_history_size = count ; - } ; - - return SF_TRUE ; -} /* broadcast_add_coding_history */ - -/* -** Do not edit or modify anything in this comment block. -** The following line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 4b3b69c7-d710-4424-9da0-5048534a0beb -*/ diff --git a/libs/libsndfile/src/caf.c b/libs/libsndfile/src/caf.c deleted file mode 100644 index 01f3719897..0000000000 --- a/libs/libsndfile/src/caf.c +++ /dev/null @@ -1,538 +0,0 @@ -/* -** Copyright (C) 2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "float_cast.h" -#include "common.h" - -/*------------------------------------------------------------------------------ -** Macros to handle big/little endian issues. -*/ - -#define aac_MARKER MAKE_MARKER ('a', 'a', 'c', ' ') -#define alac_MARKER MAKE_MARKER ('a', 'l', 'a', 'c') -#define alaw_MARKER MAKE_MARKER ('a', 'l', 'a', 'w') -#define caff_MARKER MAKE_MARKER ('c', 'a', 'f', 'f') -#define chan_MARKER MAKE_MARKER ('c', 'h', 'a', 'n') -#define data_MARKER MAKE_MARKER ('d', 'a', 't', 'a') -#define desc_MARKER MAKE_MARKER ('d', 'e', 's', 'c') -#define edct_MARKER MAKE_MARKER ('e', 'd', 'c', 't') -#define free_MARKER MAKE_MARKER ('f', 'r', 'e', 'e') -#define ima4_MARKER MAKE_MARKER ('i', 'm', 'a', '4') -#define info_MARKER MAKE_MARKER ('i', 'n', 'f', 'o') -#define inst_MARKER MAKE_MARKER ('i', 'n', 's', 't') -#define kuki_MARKER MAKE_MARKER ('k', 'u', 'k', 'i') -#define lpcm_MARKER MAKE_MARKER ('l', 'p', 'c', 'm') -#define mark_MARKER MAKE_MARKER ('m', 'a', 'r', 'k') -#define midi_MARKER MAKE_MARKER ('m', 'i', 'd', 'i') -#define mp1_MARKER MAKE_MARKER ('.', 'm', 'p', '1') -#define mp2_MARKER MAKE_MARKER ('.', 'm', 'p', '2') -#define mp3_MARKER MAKE_MARKER ('.', 'm', 'p', '3') -#define ovvw_MARKER MAKE_MARKER ('o', 'v', 'v', 'w') -#define pakt_MARKER MAKE_MARKER ('p', 'a', 'k', 't') -#define peak_MARKER MAKE_MARKER ('p', 'e', 'a', 'k') -#define regn_MARKER MAKE_MARKER ('r', 'e', 'g', 'n') -#define strg_MARKER MAKE_MARKER ('s', 't', 'r', 'g') -#define umid_MARKER MAKE_MARKER ('u', 'm', 'i', 'd') -#define uuid_MARKER MAKE_MARKER ('u', 'u', 'i', 'd') -#define ulaw_MARKER MAKE_MARKER ('u', 'l', 'a', 'w') -#define MAC3_MARKER MAKE_MARKER ('M', 'A', 'C', '3') -#define MAC6_MARKER MAKE_MARKER ('M', 'A', 'C', '6') - -#define CAF_PEAK_CHUNK_SIZE(ch) (sizeof (int) + ch * (sizeof (float) + 8)) - -#define SFE_CAF_NOT_CAF 666 -#define SFE_CAF_NO_DESC 667 -#define SFE_CAF_BAD_PEAK 668 - -/*------------------------------------------------------------------------------ -** Typedefs. -*/ - -typedef struct -{ unsigned char srate [8] ; - unsigned int fmt_id ; - unsigned int fmt_flags ; - unsigned int pkt_bytes ; - unsigned int pkt_frames ; - unsigned int channels_per_frame ; - unsigned int bits_per_chan ; -} DESC_CHUNK ; - -/*------------------------------------------------------------------------------ -** Private static functions. -*/ - -static int caf_close (SF_PRIVATE *psf) ; -static int caf_read_header (SF_PRIVATE *psf) ; -static int caf_write_header (SF_PRIVATE *psf, int calc_length) ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -caf_open (SF_PRIVATE *psf) -{ int subformat, format, error = 0 ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = caf_read_header (psf))) - return error ; - } ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if (psf->is_pipe) - return SFE_NO_PIPE_WRITE ; - - format = psf->sf.format & SF_FORMAT_TYPEMASK ; - if (format != SF_FORMAT_CAF) - return SFE_BAD_OPEN_FORMAT ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - - if (psf->mode != SFM_RDWR || psf->filelength < 44) - { psf->filelength = 0 ; - psf->datalength = 0 ; - psf->dataoffset = 0 ; - psf->sf.frames = 0 ; - } ; - - psf->str_flags = SF_STR_ALLOW_START ; - - /* - ** By default, add the peak chunk to floating point files. Default behaviour - ** can be switched off using sf_command (SFC_SET_PEAK_CHUNK, SF_FALSE). - */ - if (psf->mode == SFM_WRITE && (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE)) - { if ((psf->peak_info = peak_info_calloc (psf->sf.channels)) == NULL) - return SFE_MALLOC_FAILED ; - psf->peak_info->peak_loc = SF_PEAK_START ; - } ; - - if ((error = caf_write_header (psf, SF_FALSE)) != 0) - return error ; - - psf->write_header = caf_write_header ; - } ; - - psf->container_close = caf_close ; - /*psf->command = caf_command ;*/ - - switch (subformat) - { case SF_FORMAT_PCM_S8 : - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_24 : - case SF_FORMAT_PCM_32 : - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_ULAW : - error = ulaw_init (psf) ; - break ; - - case SF_FORMAT_ALAW : - error = alaw_init (psf) ; - break ; - - /* Lite remove start */ - case SF_FORMAT_FLOAT : - error = float32_init (psf) ; - break ; - - case SF_FORMAT_DOUBLE : - error = double64_init (psf) ; - break ; - /* Lite remove end */ - - default : - return SFE_UNSUPPORTED_ENCODING ; - } ; - - return error ; -} /* caf_open */ - -static int -caf_close (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - caf_write_header (psf, SF_TRUE) ; - - return 0 ; -} /* caf_close */ - -/*------------------------------------------------------------------------------ -*/ - -static int -decode_desc_chunk (SF_PRIVATE *psf, const DESC_CHUNK *desc) -{ int format ; - - psf->sf.channels = desc->channels_per_frame ; - - format = SF_FORMAT_CAF | (psf->endian == SF_ENDIAN_LITTLE ? SF_ENDIAN_LITTLE : 0) ; - - if (desc->fmt_id == lpcm_MARKER && desc->fmt_flags & 1) - { /* Floating point data. */ - if (desc->bits_per_chan == 32 && desc->pkt_bytes == 4 * desc->channels_per_frame) - { psf->bytewidth = 4 ; - return format | SF_FORMAT_FLOAT ; - } ; - if (desc->bits_per_chan == 64 && desc->pkt_bytes == 8 * desc->channels_per_frame) - { psf->bytewidth = 8 ; - return format | SF_FORMAT_DOUBLE ; - } ; - } ; - - if ((desc->fmt_flags & 1) != 0) - { psf_log_printf (psf, "**** Ooops, 'desc' chunk suggests float data, but other info invalid.\n") ; - return 0 ; - } ; - - if (desc->fmt_id == lpcm_MARKER) - { /* Integer data. */ - if (desc->bits_per_chan == 32 && desc->pkt_bytes == 4 * desc->channels_per_frame) - { psf->bytewidth = 4 ; - return format | SF_FORMAT_PCM_32 ; - } ; - if (desc->bits_per_chan == 24 && desc->pkt_bytes == 3 * desc->channels_per_frame) - { psf->bytewidth = 3 ; - return format | SF_FORMAT_PCM_24 ; - } ; - if (desc->bits_per_chan == 16 && desc->pkt_bytes == 2 * desc->channels_per_frame) - { psf->bytewidth = 2 ; - return format | SF_FORMAT_PCM_16 ; - } ; - if (desc->bits_per_chan == 8 && desc->pkt_bytes == 1 * desc->channels_per_frame) - { psf->bytewidth = 1 ; - return format | SF_FORMAT_PCM_S8 ; - } ; - } ; - - if (desc->fmt_id == alaw_MARKER && desc->bits_per_chan == 8) - { psf->bytewidth = 1 ; - return format | SF_FORMAT_ALAW ; - } ; - - if (desc->fmt_id == ulaw_MARKER && desc->bits_per_chan == 8) - { psf->bytewidth = 1 ; - return format | SF_FORMAT_ULAW ; - } ; - - return 0 ; -} /* decode_desc_chunk */ - -static int -caf_read_header (SF_PRIVATE *psf) -{ DESC_CHUNK desc ; - sf_count_t chunk_size ; - double srate ; - short version, flags ; - int marker, k, have_data = 0 ; - - memset (&desc, 0, sizeof (desc)) ; - - /* Set position to start of file to begin reading header. */ - psf_binheader_readf (psf, "pmE2E2", 0, &marker, &version, &flags) ; - psf_log_printf (psf, "%M\n Version : %d\n Flags : %x\n", marker, version, flags) ; - if (marker != caff_MARKER) - return SFE_CAF_NOT_CAF ; - - psf_binheader_readf (psf, "mE8b", &marker, &chunk_size, psf->u.ucbuf, 8) ; - srate = double64_be_read (psf->u.ucbuf) ; - LSF_SNPRINTF (psf->u.cbuf, sizeof (psf->u.cbuf), "%5.3f", srate) ; - psf_log_printf (psf, "%M : %D\n Sample rate : %s\n", marker, chunk_size, psf->u.cbuf) ; - if (marker != desc_MARKER) - return SFE_CAF_NO_DESC ; - - if (chunk_size < sizeof (DESC_CHUNK)) - { psf_log_printf (psf, "**** Chunk size too small. Should be > 32 bytes.\n") ; - return SFE_MALFORMED_FILE ; - } ; - - psf->sf.samplerate = lrint (srate) ; - - psf_binheader_readf (psf, "mE44444", &desc.fmt_id, &desc.fmt_flags, &desc.pkt_bytes, &desc.pkt_frames, - &desc.channels_per_frame, &desc.bits_per_chan) ; - psf_log_printf (psf, " Format id : %M\n Format flags : %x\n Bytes / packet : %u\n" - " Frames / packet : %u\n Channels / frame : %u\n Bits / channel : %u\n", - desc.fmt_id, desc.fmt_flags, desc.pkt_bytes, desc.pkt_frames, desc.channels_per_frame, desc.bits_per_chan) ; - - if (chunk_size > sizeof (DESC_CHUNK)) - psf_binheader_readf (psf, "j", (int) (chunk_size - sizeof (DESC_CHUNK))) ; - - psf->sf.channels = desc.channels_per_frame ; - - while (have_data == 0 && psf_ftell (psf) < psf->filelength - SIGNED_SIZEOF (marker)) - { psf_binheader_readf (psf, "mE8", &marker, &chunk_size) ; - - switch (marker) - { case peak_MARKER : - psf_log_printf (psf, "%M : %D\n", marker, chunk_size) ; - if (chunk_size != CAF_PEAK_CHUNK_SIZE (psf->sf.channels)) - { psf_binheader_readf (psf, "j", (int) chunk_size) ; - psf_log_printf (psf, "*** File PEAK chunk %D should be %d.\n", chunk_size, CAF_PEAK_CHUNK_SIZE (psf->sf.channels)) ; - return SFE_CAF_BAD_PEAK ; - } ; - - if ((psf->peak_info = peak_info_calloc (psf->sf.channels)) == NULL) - return SFE_MALLOC_FAILED ; - - /* read in rest of PEAK chunk. */ - psf_binheader_readf (psf, "E4", & (psf->peak_info->edit_number)) ; - psf_log_printf (psf, " edit count : %d\n", psf->peak_info->edit_number) ; - - psf_log_printf (psf, " Ch Position Value\n") ; - for (k = 0 ; k < psf->sf.channels ; k++) - { sf_count_t position ; - float value ; - - psf_binheader_readf (psf, "Ef8", &value, &position) ; - psf->peak_info->peaks [k].value = value ; - psf->peak_info->peaks [k].position = position ; - - LSF_SNPRINTF (psf->u.cbuf, sizeof (psf->u.cbuf), " %2d %-12ld %g\n", k, (long) position, value) ; - psf_log_printf (psf, psf->u.cbuf) ; - } ; - - psf->peak_info->peak_loc = SF_PEAK_START ; - break ; - - case free_MARKER : - psf_log_printf (psf, "%M : %D\n", marker, chunk_size) ; - psf_binheader_readf (psf, "j", (int) chunk_size) ; - break ; - - case data_MARKER : - psf_log_printf (psf, "%M : %D\n", marker, chunk_size) ; - psf_binheader_readf (psf, "E4", &k) ; - psf_log_printf (psf, " edit : %u\n", k) ; - have_data = 1 ; - break ; - - default : - psf_log_printf (psf, " %M : %D (skipped)\n", marker, chunk_size) ; - psf_binheader_readf (psf, "j", (int) chunk_size) ; - break ; - } ; - } ; - - if (have_data == 0) - { psf_log_printf (psf, "**** Error, could not find 'data' chunk.\n") ; - return SFE_MALFORMED_FILE ; - } ; - - psf_log_printf (psf, "End\n") ; - - psf->dataoffset = psf_ftell (psf) ; - psf->datalength = psf->filelength - psf->dataoffset ; - psf->endian = (desc.fmt_flags & 2) ? SF_ENDIAN_LITTLE : SF_ENDIAN_BIG ; - - if ((psf->sf.format = decode_desc_chunk (psf, &desc)) == 0) - return SFE_UNSUPPORTED_ENCODING ; - - if (psf->bytewidth > 0) - psf->sf.frames = psf->datalength / psf->bytewidth ; - - return 0 ; -} /* caf_read_header */ - -/*------------------------------------------------------------------------------ -*/ - -static int -caf_write_header (SF_PRIVATE *psf, int calc_length) -{ DESC_CHUNK desc ; - sf_count_t current, free_len ; - int subformat ; - - memset (&desc, 0, sizeof (desc)) ; - - current = psf_ftell (psf) ; - - if (calc_length) - { psf->filelength = psf_get_filelen (psf) ; - - psf->datalength = psf->filelength - psf->dataoffset ; - - if (psf->dataend) - psf->datalength -= psf->filelength - psf->dataend ; - - if (psf->bytewidth > 0) - psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ; - } ; - - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - psf_fseek (psf, 0, SEEK_SET) ; - - /* 'caff' marker, version and flags. */ - psf_binheader_writef (psf, "Em22", caff_MARKER, 1, 0) ; - - /* 'desc' marker and chunk size. */ - psf_binheader_writef (psf, "Em8", desc_MARKER, (sf_count_t) (sizeof (DESC_CHUNK))) ; - - double64_be_write (1.0 * psf->sf.samplerate, psf->u.ucbuf) ; - psf_binheader_writef (psf, "b", psf->u.ucbuf, 8) ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ; - - if (CPU_IS_BIG_ENDIAN && (psf->endian == 0 || psf->endian == SF_ENDIAN_CPU)) - psf->endian = SF_ENDIAN_BIG ; - else if (CPU_IS_LITTLE_ENDIAN && (psf->endian == SF_ENDIAN_LITTLE || psf->endian == SF_ENDIAN_CPU)) - psf->endian = SF_ENDIAN_LITTLE ; - - if (psf->endian == SF_ENDIAN_LITTLE) - desc.fmt_flags = 2 ; - else - psf->endian = SF_ENDIAN_BIG ; - - /* initial section (same for all, it appears) */ - switch (subformat) - { case SF_FORMAT_PCM_S8 : - desc.fmt_id = lpcm_MARKER ; - psf->bytewidth = 1 ; - desc.pkt_bytes = psf->bytewidth * psf->sf.channels ; - desc.pkt_frames = 1 ; - desc.channels_per_frame = psf->sf.channels ; - desc.bits_per_chan = 8 ; - break ; - - case SF_FORMAT_PCM_16 : - desc.fmt_id = lpcm_MARKER ; - psf->bytewidth = 2 ; - desc.pkt_bytes = psf->bytewidth * psf->sf.channels ; - desc.pkt_frames = 1 ; - desc.channels_per_frame = psf->sf.channels ; - desc.bits_per_chan = 16 ; - break ; - - case SF_FORMAT_PCM_24 : - psf->bytewidth = 3 ; - desc.pkt_bytes = psf->bytewidth * psf->sf.channels ; - desc.pkt_frames = 1 ; - desc.channels_per_frame = psf->sf.channels ; - desc.bits_per_chan = 24 ; - desc.fmt_id = lpcm_MARKER ; - break ; - - case SF_FORMAT_PCM_32 : - desc.fmt_id = lpcm_MARKER ; - psf->bytewidth = 4 ; - desc.pkt_bytes = psf->bytewidth * psf->sf.channels ; - desc.pkt_frames = 1 ; - desc.channels_per_frame = psf->sf.channels ; - desc.bits_per_chan = 32 ; - break ; - - case SF_FORMAT_FLOAT : - desc.fmt_id = lpcm_MARKER ; - desc.fmt_flags |= 1 ; - psf->bytewidth = 4 ; - desc.pkt_bytes = psf->bytewidth * psf->sf.channels ; - desc.pkt_frames = 1 ; - desc.channels_per_frame = psf->sf.channels ; - desc.bits_per_chan = 32 ; - break ; - - case SF_FORMAT_DOUBLE : - desc.fmt_id = lpcm_MARKER ; - desc.fmt_flags |= 1 ; - psf->bytewidth = 8 ; - desc.pkt_bytes = psf->bytewidth * psf->sf.channels ; - desc.pkt_frames = 1 ; - desc.channels_per_frame = psf->sf.channels ; - desc.bits_per_chan = 64 ; - break ; - - case SF_FORMAT_ALAW : - desc.fmt_id = alaw_MARKER ; - psf->bytewidth = 1 ; - desc.pkt_bytes = psf->bytewidth * psf->sf.channels ; - desc.pkt_frames = 1 ; - desc.channels_per_frame = psf->sf.channels ; - desc.bits_per_chan = 8 ; - break ; - - case SF_FORMAT_ULAW : - desc.fmt_id = ulaw_MARKER ; - psf->bytewidth = 1 ; - desc.pkt_bytes = psf->bytewidth * psf->sf.channels ; - desc.pkt_frames = 1 ; - desc.channels_per_frame = psf->sf.channels ; - desc.bits_per_chan = 8 ; - break ; - - default : - return SFE_UNIMPLEMENTED ; - } ; - - psf_binheader_writef (psf, "mE44444", desc.fmt_id, desc.fmt_flags, desc.pkt_bytes, desc.pkt_frames, desc.channels_per_frame, desc.bits_per_chan) ; - -#if 0 - if (psf->str_flags & SF_STR_LOCATE_START) - caf_write_strings (psf, SF_STR_LOCATE_START) ; -#endif - - if (psf->peak_info != NULL) - { int k ; - psf_binheader_writef (psf, "Em84", peak_MARKER, (sf_count_t) CAF_PEAK_CHUNK_SIZE (psf->sf.channels), psf->peak_info->edit_number) ; - for (k = 0 ; k < psf->sf.channels ; k++) - psf_binheader_writef (psf, "Ef8", (float) psf->peak_info->peaks [k].value, psf->peak_info->peaks [k].position) ; - } ; - - /* Add free chunk so that the actual audio data starts at a multiple 0x1000. */ - free_len = 0x1000 - psf->headindex - 16 - 12 ; - while (free_len < 0) - free_len += 0x1000 ; - psf_binheader_writef (psf, "Em8z", free_MARKER, free_len, (int) free_len) ; - - psf_binheader_writef (psf, "Em84", data_MARKER, psf->datalength, 0) ; - - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - if (psf->error) - return psf->error ; - - psf->dataoffset = psf->headindex ; - if (current < psf->dataoffset) - psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - else if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* caf_write_header */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 65883e65-bd3c-4618-9241-d3c02fd630bd -*/ diff --git a/libs/libsndfile/src/command.c b/libs/libsndfile/src/command.c deleted file mode 100644 index edb793f215..0000000000 --- a/libs/libsndfile/src/command.c +++ /dev/null @@ -1,367 +0,0 @@ -/* -** Copyright (C) 2001-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include - -#include "sndfile.h" -#include "common.h" - -static SF_FORMAT_INFO const simple_formats [] = -{ - { SF_FORMAT_AIFF | SF_FORMAT_PCM_16, - "AIFF (Apple/SGI 16 bit PCM)", "aiff" - }, - - { SF_FORMAT_AIFF | SF_FORMAT_FLOAT, - "AIFF (Apple/SGI 32 bit float)", "aifc" - }, - - { SF_FORMAT_AIFF | SF_FORMAT_PCM_S8, - "AIFF (Apple/SGI 8 bit PCM)", "aiff" - }, - - { SF_FORMAT_AU | SF_FORMAT_PCM_16, - "AU (Sun/Next 16 bit PCM)", "au" - }, - - { SF_FORMAT_AU | SF_FORMAT_ULAW, - "AU (Sun/Next 8-bit u-law)", "au" - }, - - { SF_FORMAT_CAF | SF_FORMAT_PCM_16, - "CAF (Apple 16 bit PCM)", "caf" - }, - -#ifdef HAVE_FLAC_ALL_H - { SF_FORMAT_FLAC | SF_FORMAT_PCM_16, - "FLAC 16 bit", "flac" - }, -#endif - - { SF_FORMAT_RAW | SF_FORMAT_VOX_ADPCM, - "OKI Dialogic VOX ADPCM", "vox" - }, - - { SF_FORMAT_WAV | SF_FORMAT_PCM_16, - "WAV (Microsoft 16 bit PCM)", "wav" - }, - - { SF_FORMAT_WAV | SF_FORMAT_FLOAT, - "WAV (Microsoft 32 bit float)", "wav" - }, - - { SF_FORMAT_WAV | SF_FORMAT_IMA_ADPCM, - "WAV (Microsoft 4 bit IMA ADPCM)", "wav" - }, - - { SF_FORMAT_WAV | SF_FORMAT_MS_ADPCM, - "WAV (Microsoft 4 bit MS ADPCM)", "wav" - }, - - { SF_FORMAT_WAV | SF_FORMAT_PCM_U8, - "WAV (Microsoft 8 bit PCM)", "wav" - }, - -} ; /* simple_formats */ - -int -psf_get_format_simple_count (void) -{ return (sizeof (simple_formats) / sizeof (SF_FORMAT_INFO)) ; -} /* psf_get_format_simple_count */ - -int -psf_get_format_simple (SF_FORMAT_INFO *data) -{ int indx ; - - if (data->format < 0 || data->format >= (SIGNED_SIZEOF (simple_formats) / SIGNED_SIZEOF (SF_FORMAT_INFO))) - return SFE_BAD_CONTROL_CMD ; - - indx = data->format ; - memcpy (data, &(simple_formats [indx]), SIGNED_SIZEOF (SF_FORMAT_INFO)) ; - - return 0 ; -} /* psf_get_format_simple */ - -/*============================================================================ -** Major format info. -*/ - -static SF_FORMAT_INFO const major_formats [] = -{ - { SF_FORMAT_AIFF, "AIFF (Apple/SGI)", "aiff" }, - { SF_FORMAT_AU, "AU (Sun/NeXT)", "au" }, - { SF_FORMAT_AVR, "AVR (Audio Visual Research)", "avr" }, - { SF_FORMAT_CAF, "CAF (Apple Core Audio File)", "caf" }, -#ifdef HAVE_FLAC_ALL_H - { SF_FORMAT_FLAC, "FLAC (FLAC Lossless Audio Codec)", "flac" }, -#endif - { SF_FORMAT_HTK, "HTK (HMM Tool Kit)", "htk" }, - { SF_FORMAT_SVX, "IFF (Amiga IFF/SVX8/SV16)", "iff" }, - { SF_FORMAT_MAT4, "MAT4 (GNU Octave 2.0 / Matlab 4.2)", "mat" }, - { SF_FORMAT_MAT5, "MAT5 (GNU Octave 2.1 / Matlab 5.0)", "mat" }, - { SF_FORMAT_PAF, "PAF (Ensoniq PARIS)", "paf" }, - { SF_FORMAT_PVF, "PVF (Portable Voice Format)", "pvf" }, - { SF_FORMAT_RAW, "RAW (header-less)", "raw" }, - { SF_FORMAT_SD2, "SD2 (Sound Designer II)", "sd2" }, - { SF_FORMAT_SDS, "SDS (Midi Sample Dump Standard)", "sds" }, - { SF_FORMAT_IRCAM, "SF (Berkeley/IRCAM/CARL)", "sf" }, - { SF_FORMAT_VOC, "VOC (Creative Labs)", "voc" }, - { SF_FORMAT_W64, "W64 (SoundFoundry WAVE 64)", "w64" }, - { SF_FORMAT_WAV, "WAV (Microsoft)", "wav" }, - { SF_FORMAT_NIST, "WAV (NIST Sphere)", "wav" }, - { SF_FORMAT_WAVEX, "WAVEX (Microsoft)", "wav" }, - { SF_FORMAT_XI, "XI (FastTracker 2)", "xi" }, - -} ; /* major_formats */ - -int -psf_get_format_major_count (void) -{ return (sizeof (major_formats) / sizeof (SF_FORMAT_INFO)) ; -} /* psf_get_format_major_count */ - -int -psf_get_format_major (SF_FORMAT_INFO *data) -{ int indx ; - - if (data->format < 0 || data->format >= (SIGNED_SIZEOF (major_formats) / SIGNED_SIZEOF (SF_FORMAT_INFO))) - return SFE_BAD_CONTROL_CMD ; - - indx = data->format ; - memcpy (data, &(major_formats [indx]), SIGNED_SIZEOF (SF_FORMAT_INFO)) ; - - return 0 ; -} /* psf_get_format_major */ - -/*============================================================================ -** Subtype format info. -*/ - -static SF_FORMAT_INFO subtype_formats [] = -{ - { SF_FORMAT_PCM_S8, "Signed 8 bit PCM", NULL }, - { SF_FORMAT_PCM_16, "Signed 16 bit PCM", NULL }, - { SF_FORMAT_PCM_24, "Signed 24 bit PCM", NULL }, - { SF_FORMAT_PCM_32, "Signed 32 bit PCM", NULL }, - - { SF_FORMAT_PCM_U8, "Unsigned 8 bit PCM", NULL }, - - { SF_FORMAT_FLOAT, "32 bit float", NULL }, - { SF_FORMAT_DOUBLE, "64 bit float", NULL }, - - { SF_FORMAT_ULAW, "U-Law", NULL }, - { SF_FORMAT_ALAW, "A-Law", NULL }, - { SF_FORMAT_IMA_ADPCM, "IMA ADPCM", NULL }, - { SF_FORMAT_MS_ADPCM, "Microsoft ADPCM", NULL }, - - { SF_FORMAT_GSM610, "GSM 6.10", NULL }, - - { SF_FORMAT_G721_32, "32kbs G721 ADPCM", NULL }, - { SF_FORMAT_G723_24, "24kbs G723 ADPCM", NULL }, - - { SF_FORMAT_DWVW_12, "12 bit DWVW", NULL }, - { SF_FORMAT_DWVW_16, "16 bit DWVW", NULL }, - { SF_FORMAT_DWVW_24, "24 bit DWVW", NULL }, - { SF_FORMAT_VOX_ADPCM, "VOX ADPCM", "vox" }, - - { SF_FORMAT_DPCM_16, "16 bit DPCM", NULL }, - { SF_FORMAT_DPCM_8, "8 bit DPCM", NULL } -} ; /* subtype_formats */ - -int -psf_get_format_subtype_count (void) -{ return (sizeof (subtype_formats) / sizeof (SF_FORMAT_INFO)) ; -} /* psf_get_format_subtype_count */ - -int -psf_get_format_subtype (SF_FORMAT_INFO *data) -{ int indx ; - - if (data->format < 0 || data->format >= (SIGNED_SIZEOF (subtype_formats) / SIGNED_SIZEOF (SF_FORMAT_INFO))) - return SFE_BAD_CONTROL_CMD ; - - indx = data->format ; - memcpy (data, &(subtype_formats [indx]), sizeof (SF_FORMAT_INFO)) ; - - return 0 ; -} /* psf_get_format_subtype */ - -/*============================================================================== -*/ - -int -psf_get_format_info (SF_FORMAT_INFO *data) -{ int k, format ; - - if (data->format & SF_FORMAT_TYPEMASK) - { format = data->format & SF_FORMAT_TYPEMASK ; - - for (k = 0 ; k < (SIGNED_SIZEOF (major_formats) / SIGNED_SIZEOF (SF_FORMAT_INFO)) ; k++) - { if (format == major_formats [k].format) - { memcpy (data, &(major_formats [k]), sizeof (SF_FORMAT_INFO)) ; - return 0 ; - } ; - } ; - } - else if (data->format & SF_FORMAT_SUBMASK) - { format = data->format & SF_FORMAT_SUBMASK ; - - for (k = 0 ; k < (SIGNED_SIZEOF (subtype_formats) / SIGNED_SIZEOF (SF_FORMAT_INFO)) ; k++) - { if (format == subtype_formats [k].format) - { memcpy (data, &(subtype_formats [k]), sizeof (SF_FORMAT_INFO)) ; - return 0 ; - } ; - } ; - } ; - - memset (data, 0, sizeof (SF_FORMAT_INFO)) ; - - return SFE_BAD_CONTROL_CMD ; -} /* psf_get_format_info */ - -/*============================================================================== -*/ - -double -psf_calc_signal_max (SF_PRIVATE *psf, int normalize) -{ sf_count_t position ; - double max_val, temp, *data ; - int k, len, readcount, save_state ; - - /* If the file is not seekable, there is nothing we can do. */ - if (! psf->sf.seekable) - { psf->error = SFE_NOT_SEEKABLE ; - return 0.0 ; - } ; - - if (! psf->read_double) - { psf->error = SFE_UNIMPLEMENTED ; - return 0.0 ; - } ; - - save_state = sf_command ((SNDFILE*) psf, SFC_GET_NORM_DOUBLE, NULL, 0) ; - sf_command ((SNDFILE*) psf, SFC_SET_NORM_DOUBLE, NULL, normalize) ; - - /* Brute force. Read the whole file and find the biggest sample. */ - /* Get current position in file */ - position = sf_seek ((SNDFILE*) psf, 0, SEEK_CUR) ; - /* Go to start of file. */ - sf_seek ((SNDFILE*) psf, 0, SEEK_SET) ; - - data = psf->u.dbuf ; - len = ARRAY_LEN (psf->u.dbuf) ; - - for (readcount = 1, max_val = 0.0 ; readcount > 0 ; /* nothing */) - { readcount = sf_read_double ((SNDFILE*) psf, data, len) ; - for (k = 0 ; k < readcount ; k++) - { temp = fabs (data [k]) ; - max_val = temp > max_val ? temp : max_val ; - } ; - } ; - - /* Return to SNDFILE to original state. */ - sf_seek ((SNDFILE*) psf, position, SEEK_SET) ; - sf_command ((SNDFILE*) psf, SFC_SET_NORM_DOUBLE, NULL, save_state) ; - - return max_val ; -} /* psf_calc_signal_max */ - -int -psf_calc_max_all_channels (SF_PRIVATE *psf, double *peaks, int normalize) -{ sf_count_t position ; - double temp, *data ; - int k, len, readcount, save_state ; - int chan ; - - /* If the file is not seekable, there is nothing we can do. */ - if (! psf->sf.seekable) - return (psf->error = SFE_NOT_SEEKABLE) ; - - if (! psf->read_double) - return (psf->error = SFE_UNIMPLEMENTED) ; - - save_state = sf_command ((SNDFILE*) psf, SFC_GET_NORM_DOUBLE, NULL, 0) ; - sf_command ((SNDFILE*) psf, SFC_SET_NORM_DOUBLE, NULL, normalize) ; - - memset (peaks, 0, sizeof (double) * psf->sf.channels) ; - - /* Brute force. Read the whole file and find the biggest sample for each channel. */ - position = sf_seek ((SNDFILE*) psf, 0, SEEK_CUR) ; /* Get current position in file */ - sf_seek ((SNDFILE*) psf, 0, SEEK_SET) ; /* Go to start of file. */ - - len = ARRAY_LEN (psf->u.dbuf) ; - - data = psf->u.dbuf ; - - chan = 0 ; - readcount = len ; - while (readcount > 0) - { readcount = sf_read_double ((SNDFILE*) psf, data, len) ; - for (k = 0 ; k < readcount ; k++) - { temp = fabs (data [k]) ; - peaks [chan] = temp > peaks [chan] ? temp : peaks [chan] ; - chan = (chan + 1) % psf->sf.channels ; - } ; - } ; - - sf_seek ((SNDFILE*) psf, position, SEEK_SET) ; /* Return to original position. */ - - sf_command ((SNDFILE*) psf, SFC_SET_NORM_DOUBLE, NULL, save_state) ; - - return 0 ; -} /* psf_calc_max_all_channels */ - -int -psf_get_signal_max (SF_PRIVATE *psf, double *peak) -{ int k ; - - if (psf->peak_info == NULL) - return SF_FALSE ; - - peak [0] = psf->peak_info->peaks [0].value ; - - for (k = 1 ; k < psf->sf.channels ; k++) - peak [0] = SF_MAX (peak [0], psf->peak_info->peaks [k].value) ; - - return SF_TRUE ; -} /* psf_get_signal_max */ - -int -psf_get_max_all_channels (SF_PRIVATE *psf, double *peaks) -{ int k ; - - if (psf->peak_info == NULL) - return SF_FALSE ; - - for (k = 0 ; k < psf->sf.channels ; k++) - peaks [k] = psf->peak_info->peaks [k].value ; - - return SF_TRUE ; -} /* psf_get_max_all_channels */ - - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 0aae0d9d-ab2b-4d70-ade3-47a534666f8e -*/ diff --git a/libs/libsndfile/src/common.c b/libs/libsndfile/src/common.c deleted file mode 100644 index fa0f4f7b62..0000000000 --- a/libs/libsndfile/src/common.c +++ /dev/null @@ -1,1290 +0,0 @@ -/* -** Copyright (C) 1999-2006 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -/*----------------------------------------------------------------------------------------------- -** psf_log_printf allows libsndfile internal functions to print to an internal logbuffer which -** can later be displayed. -** The format specifiers are as for printf but without the field width and other modifiers. -** Printing is performed to the logbuffer char array of the SF_PRIVATE struct. -** Printing is done in such a way as to guarantee that the log never overflows the end of the -** logbuffer array. -*/ - -static inline void -log_putchar (SF_PRIVATE *psf, char ch) -{ if (psf->logindex < SIGNED_SIZEOF (psf->logbuffer) - 1) - { psf->logbuffer [psf->logindex++] = ch ; - psf->logbuffer [psf->logindex] = 0 ; - } ; - return ; -} /* log_putchar */ - -void -psf_log_printf (SF_PRIVATE *psf, const char *format, ...) -{ va_list ap ; - unsigned int u ; - int d, tens, shift, width, width_specifier, left_align ; - char c, *strptr, istr [5], lead_char, sign_char ; - - va_start (ap, format) ; - - while ((c = *format++)) - { if (c != '%') - { log_putchar (psf, c) ; - continue ; - } ; - - if (format [0] == '%') /* Handle %% */ - { log_putchar (psf, '%') ; - format ++ ; - continue ; - } ; - - sign_char = 0 ; - left_align = SF_FALSE ; - while (1) - { switch (format [0]) - { case ' ' : - case '+' : - sign_char = format [0] ; - format ++ ; - continue ; - - case '-' : - left_align = SF_TRUE ; - format ++ ; - continue ; - - default : break ; - } ; - - break ; - } ; - - if (format [0] == 0) - break ; - - lead_char = ' ' ; - if (format [0] == '0') - lead_char = '0' ; - - width_specifier = 0 ; - while ((c = *format++) && isdigit (c)) - width_specifier = width_specifier * 10 + (c - '0') ; - - switch (c) - { case 0 : /* NULL character. */ - va_end (ap) ; - return ; - - case 's': /* string */ - strptr = va_arg (ap, char *) ; - if (strptr == NULL) - break ; - width_specifier -= strlen (strptr) ; - if (left_align == SF_FALSE) - while (width_specifier -- > 0) - log_putchar (psf, ' ') ; - while (*strptr) - log_putchar (psf, *strptr++) ; - while (width_specifier -- > 0) - log_putchar (psf, ' ') ; - break ; - - case 'd': /* int */ - d = va_arg (ap, int) ; - - if (d < 0) - { d = -d ; - sign_char = '-' ; - if (lead_char != '0' && left_align == SF_FALSE) - width_specifier -- ; - } ; - - tens = 1 ; - width = 1 ; - while (d / tens >= 10) - { tens *= 10 ; - width ++ ; - } ; - - width_specifier -= width ; - - if (sign_char == ' ') - { log_putchar (psf, ' ') ; - width_specifier -- ; - } ; - - if (left_align == SF_FALSE && lead_char != '0') - { if (sign_char == '+') - width_specifier -- ; - - while (width_specifier -- > 0) - log_putchar (psf, lead_char) ; - } ; - - if (sign_char == '+' || sign_char == '-') - { log_putchar (psf, sign_char) ; - width_specifier -- ; - } ; - - if (left_align == SF_FALSE) - while (width_specifier -- > 0) - log_putchar (psf, lead_char) ; - - while (tens > 0) - { log_putchar (psf, '0' + d / tens) ; - d %= tens ; - tens /= 10 ; - } ; - - while (width_specifier -- > 0) - log_putchar (psf, lead_char) ; - break ; - - case 'D': /* sf_count_t */ - { sf_count_t D, Tens ; - - D = va_arg (ap, sf_count_t) ; - - if (D == 0) - { while (-- width_specifier > 0) - log_putchar (psf, lead_char) ; - log_putchar (psf, '0') ; - break ; - } - if (D < 0) - { log_putchar (psf, '-') ; - D = -D ; - } ; - Tens = 1 ; - width = 1 ; - while (D / Tens >= 10) - { Tens *= 10 ; - width ++ ; - } ; - - while (width_specifier > width) - { log_putchar (psf, lead_char) ; - width_specifier-- ; - } ; - - while (Tens > 0) - { log_putchar (psf, '0' + D / Tens) ; - D %= Tens ; - Tens /= 10 ; - } ; - } ; - break ; - - case 'u': /* unsigned int */ - u = va_arg (ap, unsigned int) ; - - tens = 1 ; - width = 1 ; - while (u / tens >= 10) - { tens *= 10 ; - width ++ ; - } ; - - width_specifier -= width ; - - if (sign_char == ' ') - { log_putchar (psf, ' ') ; - width_specifier -- ; - } ; - - if (left_align == SF_FALSE && lead_char != '0') - { if (sign_char == '+') - width_specifier -- ; - - while (width_specifier -- > 0) - log_putchar (psf, lead_char) ; - } ; - - if (sign_char == '+' || sign_char == '-') - { log_putchar (psf, sign_char) ; - width_specifier -- ; - } ; - - if (left_align == SF_FALSE) - while (width_specifier -- > 0) - log_putchar (psf, lead_char) ; - - while (tens > 0) - { log_putchar (psf, '0' + u / tens) ; - u %= tens ; - tens /= 10 ; - } ; - - while (width_specifier -- > 0) - log_putchar (psf, lead_char) ; - break ; - - case 'c': /* char */ - c = va_arg (ap, int) & 0xFF ; - log_putchar (psf, c) ; - break ; - - case 'x': /* hex */ - case 'X': /* hex */ - d = va_arg (ap, int) ; - - if (d == 0) - { while (--width_specifier > 0) - log_putchar (psf, lead_char) ; - log_putchar (psf, '0') ; - break ; - } ; - shift = 28 ; - width = (width_specifier < 8) ? 8 : width_specifier ; - while (! ((0xF << shift) & d)) - { shift -= 4 ; - width -- ; - } ; - - while (width > 0 && width_specifier > width) - { log_putchar (psf, lead_char) ; - width_specifier-- ; - } ; - - while (shift >= 0) - { c = (d >> shift) & 0xF ; - log_putchar (psf, (c > 9) ? c + 'A' - 10 : c + '0') ; - shift -= 4 ; - } ; - break ; - - case 'M': /* int2str */ - d = va_arg (ap, int) ; - if (CPU_IS_LITTLE_ENDIAN) - { istr [0] = d & 0xFF ; - istr [1] = (d >> 8) & 0xFF ; - istr [2] = (d >> 16) & 0xFF ; - istr [3] = (d >> 24) & 0xFF ; - } - else - { istr [3] = d & 0xFF ; - istr [2] = (d >> 8) & 0xFF ; - istr [1] = (d >> 16) & 0xFF ; - istr [0] = (d >> 24) & 0xFF ; - } ; - istr [4] = 0 ; - strptr = istr ; - while (*strptr) - { c = *strptr++ ; - log_putchar (psf, c) ; - } ; - break ; - - default : - log_putchar (psf, '*') ; - log_putchar (psf, c) ; - log_putchar (psf, '*') ; - break ; - } /* switch */ - } /* while */ - - va_end (ap) ; - return ; -} /* psf_log_printf */ - -#ifndef PSF_LOG_PRINTF_ONLY -/*----------------------------------------------------------------------------------------------- -** ASCII header printf functions. -** Some formats (ie NIST) use ascii text in their headers. -** Format specifiers are the same as the standard printf specifiers (uses vsnprintf). -** If this generates a compile error on any system, the author should be notified -** so an alternative vsnprintf can be provided. -*/ - -void -psf_asciiheader_printf (SF_PRIVATE *psf, const char *format, ...) -{ va_list argptr ; - int maxlen ; - char *start ; - - maxlen = strlen ((char*) psf->header) ; - start = ((char*) psf->header) + maxlen ; - maxlen = sizeof (psf->header) - maxlen ; - - va_start (argptr, format) ; - LSF_VSNPRINTF (start, maxlen, format, argptr) ; - va_end (argptr) ; - - /* Make sure the string is properly terminated. */ - start [maxlen - 1] = 0 ; - - psf->headindex = strlen ((char*) psf->header) ; - - return ; -} /* psf_asciiheader_printf */ - -/*----------------------------------------------------------------------------------------------- -** Binary header writing functions. Returns number of bytes written. -** -** Format specifiers for psf_binheader_writef are as follows -** m - marker - four bytes - no endian manipulation -** -** e - all following numerical values will be little endian -** E - all following numerical values will be big endian -** -** t - all following O types will be truncated to 4 bytes -** T - switch off truncation of all following O types -** -** 1 - single byte value -** 2 - two byte value -** 3 - three byte value -** 4 - four byte value -** 8 - eight byte value (sometimes written as 4 bytes) -** -** s - string preceded by a four byte length -** S - string including null terminator -** f - floating point data -** d - double precision floating point data -** h - 16 binary bytes value -** -** b - binary data (see below) -** z - zero bytes (ses below) -** j - jump forwards or backwards -** -** To write a word followed by an int (both little endian) use: -** psf_binheader_writef ("e24", wordval, longval) ; -** -** To write binary data use: -** psf_binheader_writef ("b", &bindata, sizeof (bindata)) ; -** -** To write N zero bytes use: -** NOTE: due to platform issues (ie x86-64) you should cast the -** argument to size_t or ensure the variable type is size_t. -** psf_binheader_writef ("z", N) ; -*/ - -/* These macros may seem a bit messy but do prevent problems with processors which -** seg. fault when asked to write an int or short to a non-int/short aligned address. -*/ - -static inline void -header_put_byte (SF_PRIVATE *psf, char x) -{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 1) - psf->header [psf->headindex++] = x ; -} /* header_put_byte */ - -#if (CPU_IS_BIG_ENDIAN == 1) -static inline void -header_put_marker (SF_PRIVATE *psf, int x) -{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 4) - { psf->header [psf->headindex++] = (x >> 24) ; - psf->header [psf->headindex++] = (x >> 16) ; - psf->header [psf->headindex++] = (x >> 8) ; - psf->header [psf->headindex++] = x ; - } ; -} /* header_put_marker */ - -#elif (CPU_IS_LITTLE_ENDIAN == 1) -static inline void -header_put_marker (SF_PRIVATE *psf, int x) -{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 4) - { psf->header [psf->headindex++] = x ; - psf->header [psf->headindex++] = (x >> 8) ; - psf->header [psf->headindex++] = (x >> 16) ; - psf->header [psf->headindex++] = (x >> 24) ; - } ; -} /* header_put_marker */ - -#else -# error "Cannot determine endian-ness of processor." -#endif - - -static inline void -header_put_be_short (SF_PRIVATE *psf, int x) -{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 2) - { psf->header [psf->headindex++] = (x >> 8) ; - psf->header [psf->headindex++] = x ; - } ; -} /* header_put_be_short */ - -static inline void -header_put_le_short (SF_PRIVATE *psf, int x) -{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 2) - { psf->header [psf->headindex++] = x ; - psf->header [psf->headindex++] = (x >> 8) ; - } ; -} /* header_put_le_short */ - -static inline void -header_put_be_3byte (SF_PRIVATE *psf, int x) -{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 3) - { psf->header [psf->headindex++] = (x >> 16) ; - psf->header [psf->headindex++] = (x >> 8) ; - psf->header [psf->headindex++] = x ; - } ; -} /* header_put_be_3byte */ - -static inline void -header_put_le_3byte (SF_PRIVATE *psf, int x) -{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 3) - { psf->header [psf->headindex++] = x ; - psf->header [psf->headindex++] = (x >> 8) ; - psf->header [psf->headindex++] = (x >> 16) ; - } ; -} /* header_put_le_3byte */ - -static inline void -header_put_be_int (SF_PRIVATE *psf, int x) -{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 4) - { psf->header [psf->headindex++] = (x >> 24) ; - psf->header [psf->headindex++] = (x >> 16) ; - psf->header [psf->headindex++] = (x >> 8) ; - psf->header [psf->headindex++] = x ; - } ; -} /* header_put_be_int */ - -static inline void -header_put_le_int (SF_PRIVATE *psf, int x) -{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 4) - { psf->header [psf->headindex++] = x ; - psf->header [psf->headindex++] = (x >> 8) ; - psf->header [psf->headindex++] = (x >> 16) ; - psf->header [psf->headindex++] = (x >> 24) ; - } ; -} /* header_put_le_int */ - -#if (SIZEOF_SF_COUNT_T == 4) - -static inline void -header_put_be_8byte (SF_PRIVATE *psf, sf_count_t x) -{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 8) - { psf->header [psf->headindex++] = 0 ; - psf->header [psf->headindex++] = 0 ; - psf->header [psf->headindex++] = 0 ; - psf->header [psf->headindex++] = 0 ; - psf->header [psf->headindex++] = (x >> 24) ; - psf->header [psf->headindex++] = (x >> 16) ; - psf->header [psf->headindex++] = (x >> 8) ; - psf->header [psf->headindex++] = x ; - } ; -} /* header_put_be_8byte */ - -static inline void -header_put_le_8byte (SF_PRIVATE *psf, sf_count_t x) -{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 8) - { psf->header [psf->headindex++] = x ; - psf->header [psf->headindex++] = (x >> 8) ; - psf->header [psf->headindex++] = (x >> 16) ; - psf->header [psf->headindex++] = (x >> 24) ; - psf->header [psf->headindex++] = 0 ; - psf->header [psf->headindex++] = 0 ; - psf->header [psf->headindex++] = 0 ; - psf->header [psf->headindex++] = 0 ; - } ; -} /* header_put_le_8byte */ - -#elif (SIZEOF_SF_COUNT_T == 8) - -static inline void -header_put_be_8byte (SF_PRIVATE *psf, sf_count_t x) -{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 8) - { psf->header [psf->headindex++] = (x >> 56) ; - psf->header [psf->headindex++] = (x >> 48) ; - psf->header [psf->headindex++] = (x >> 40) ; - psf->header [psf->headindex++] = (x >> 32) ; - psf->header [psf->headindex++] = (x >> 24) ; - psf->header [psf->headindex++] = (x >> 16) ; - psf->header [psf->headindex++] = (x >> 8) ; - psf->header [psf->headindex++] = x ; - } ; -} /* header_put_be_8byte */ - -static inline void -header_put_le_8byte (SF_PRIVATE *psf, sf_count_t x) -{ if (psf->headindex < SIGNED_SIZEOF (psf->header) - 8) - { psf->header [psf->headindex++] = x ; - psf->header [psf->headindex++] = (x >> 8) ; - psf->header [psf->headindex++] = (x >> 16) ; - psf->header [psf->headindex++] = (x >> 24) ; - psf->header [psf->headindex++] = (x >> 32) ; - psf->header [psf->headindex++] = (x >> 40) ; - psf->header [psf->headindex++] = (x >> 48) ; - psf->header [psf->headindex++] = (x >> 56) ; - } ; -} /* header_put_le_8byte */ - -#else -#error "SIZEOF_SF_COUNT_T is not defined." -#endif - -int -psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...) -{ va_list argptr ; - sf_count_t countdata ; - unsigned long longdata ; - unsigned int data ; - float floatdata ; - double doubledata ; - void *bindata ; - size_t size ; - char c, *strptr ; - int count = 0, trunc_8to4 ; - - trunc_8to4 = SF_FALSE ; - - va_start (argptr, format) ; - - while ((c = *format++)) - { switch (c) - { case ' ' : /* Do nothing. Just used to space out format string. */ - break ; - - case 'e' : /* All conversions are now from LE to host. */ - psf->rwf_endian = SF_ENDIAN_LITTLE ; - break ; - - case 'E' : /* All conversions are now from BE to host. */ - psf->rwf_endian = SF_ENDIAN_BIG ; - break ; - - case 't' : /* All 8 byte values now get written as 4 bytes. */ - trunc_8to4 = SF_TRUE ; - break ; - - case 'T' : /* All 8 byte values now get written as 8 bytes. */ - trunc_8to4 = SF_FALSE ; - break ; - - case 'm' : - data = va_arg (argptr, unsigned int) ; - header_put_marker (psf, data) ; - count += 4 ; - break ; - - case '1' : - data = va_arg (argptr, unsigned int) ; - header_put_byte (psf, data) ; - count += 1 ; - break ; - - case '2' : - data = va_arg (argptr, unsigned int) ; - if (psf->rwf_endian == SF_ENDIAN_BIG) - { header_put_be_short (psf, data) ; - } - else - { header_put_le_short (psf, data) ; - } ; - count += 2 ; - break ; - - case '3' : /* tribyte */ - data = va_arg (argptr, unsigned int) ; - if (psf->rwf_endian == SF_ENDIAN_BIG) - { header_put_be_3byte (psf, data) ; - } - else - { header_put_le_3byte (psf, data) ; - } ; - count += 3 ; - break ; - - case '4' : - data = va_arg (argptr, unsigned int) ; - if (psf->rwf_endian == SF_ENDIAN_BIG) - { header_put_be_int (psf, data) ; - } - else - { header_put_le_int (psf, data) ; - } ; - count += 4 ; - break ; - - case '8' : - countdata = va_arg (argptr, sf_count_t) ; - if (psf->rwf_endian == SF_ENDIAN_BIG && trunc_8to4 == SF_FALSE) - { header_put_be_8byte (psf, countdata) ; - count += 8 ; - } - else if (psf->rwf_endian == SF_ENDIAN_LITTLE && trunc_8to4 == SF_FALSE) - { header_put_le_8byte (psf, countdata) ; - count += 8 ; - } - else if (psf->rwf_endian == SF_ENDIAN_BIG && trunc_8to4 == SF_TRUE) - { longdata = countdata & 0xFFFFFFFF ; - header_put_be_int (psf, longdata) ; - count += 4 ; - } - else if (psf->rwf_endian == SF_ENDIAN_LITTLE && trunc_8to4 == SF_TRUE) - { longdata = countdata & 0xFFFFFFFF ; - header_put_le_int (psf, longdata) ; - count += 4 ; - } - break ; - - case 'f' : - /* Floats are passed as doubles. Is this always true? */ - floatdata = (float) va_arg (argptr, double) ; - if (psf->rwf_endian == SF_ENDIAN_BIG) - float32_be_write (floatdata, psf->header + psf->headindex) ; - else - float32_le_write (floatdata, psf->header + psf->headindex) ; - psf->headindex += 4 ; - count += 4 ; - break ; - - case 'd' : - doubledata = va_arg (argptr, double) ; - if (psf->rwf_endian == SF_ENDIAN_BIG) - double64_be_write (doubledata, psf->header + psf->headindex) ; - else - double64_le_write (doubledata, psf->header + psf->headindex) ; - psf->headindex += 8 ; - count += 8 ; - break ; - - case 's' : - /* Write a C string (guaranteed to have a zero terminator). */ - strptr = va_arg (argptr, char *) ; - size = strlen (strptr) + 1 ; - size += (size & 1) ; - if (psf->rwf_endian == SF_ENDIAN_BIG) - header_put_be_int (psf, size) ; - else - header_put_le_int (psf, size) ; - memcpy (&(psf->header [psf->headindex]), strptr, size) ; - psf->headindex += size ; - psf->header [psf->headindex - 1] = 0 ; - count += 4 + size ; - break ; - - case 'S' : - /* - ** Write an AIFF style string (no zero terminator but possibly - ** an extra pad byte if the string length is odd). - */ - strptr = va_arg (argptr, char *) ; - size = strlen (strptr) ; - if (psf->rwf_endian == SF_ENDIAN_BIG) - header_put_be_int (psf, size) ; - else - header_put_le_int (psf, size) ; - memcpy (&(psf->header [psf->headindex]), strptr, size + 1) ; - size += (size & 1) ; - psf->headindex += size ; - psf->header [psf->headindex] = 0 ; - count += 4 + size ; - break ; - - case 'b' : - bindata = va_arg (argptr, void *) ; - size = va_arg (argptr, size_t) ; - memcpy (&(psf->header [psf->headindex]), bindata, size) ; - psf->headindex += size ; - count += size ; - break ; - - case 'z' : - size = va_arg (argptr, size_t) ; - count += size ; - while (size) - { psf->header [psf->headindex] = 0 ; - psf->headindex ++ ; - size -- ; - } ; - break ; - - case 'h' : - bindata = va_arg (argptr, void *) ; - memcpy (&(psf->header [psf->headindex]), bindata, 16) ; - psf->headindex += 16 ; - count += 16 ; - break ; - - case 'j' : - size = va_arg (argptr, size_t) ; - psf->headindex += size ; - count = size ; - break ; - - default : - psf_log_printf (psf, "*** Invalid format specifier `%c'\n", c) ; - psf->error = SFE_INTERNAL ; - break ; - } ; - } ; - - va_end (argptr) ; - return count ; -} /* psf_binheader_writef */ - -/*----------------------------------------------------------------------------------------------- -** Binary header reading functions. Returns number of bytes read. -** -** Format specifiers are the same as for header write function above with the following -** additions: -** -** p - jump a given number of position from start of file. -** -** If format is NULL, psf_binheader_readf returns the current offset. -*/ - -#if (CPU_IS_BIG_ENDIAN == 1) -#define GET_MARKER(ptr) ( ((ptr) [0] << 24) | ((ptr) [1] << 16) | \ - ((ptr) [2] << 8) | ((ptr) [3]) ) - -#elif (CPU_IS_LITTLE_ENDIAN == 1) -#define GET_MARKER(ptr) ( ((ptr) [0]) | ((ptr) [1] << 8) | \ - ((ptr) [2] << 16) | ((ptr) [3] << 24) ) - -#else -# error "Cannot determine endian-ness of processor." -#endif - -#define GET_LE_SHORT(ptr) ( ((ptr) [1] << 8) | ((ptr) [0]) ) -#define GET_BE_SHORT(ptr) ( ((ptr) [0] << 8) | ((ptr) [1]) ) - -#define GET_LE_3BYTE(ptr) ( ((ptr) [2] << 16) | ((ptr) [1] << 8) | ((ptr) [0]) ) -#define GET_BE_3BYTE(ptr) ( ((ptr) [0] << 16) | ((ptr) [1] << 8) | ((ptr) [2]) ) - -#define GET_LE_INT(ptr) ( ((ptr) [3] << 24) | ((ptr) [2] << 16) | \ - ((ptr) [1] << 8) | ((ptr) [0]) ) - -#define GET_BE_INT(ptr) ( ((ptr) [0] << 24) | ((ptr) [1] << 16) | \ - ((ptr) [2] << 8) | ((ptr) [3]) ) - -#if (SIZEOF_LONG == 4) -#define GET_LE_8BYTE(ptr) ( ((ptr) [3] << 24) | ((ptr) [2] << 16) | \ - ((ptr) [1] << 8) | ((ptr) [0]) ) - -#define GET_BE_8BYTE(ptr) ( ((ptr) [4] << 24) | ((ptr) [5] << 16) | \ - ((ptr) [6] << 8) | ((ptr) [7]) ) -#else -#define GET_LE_8BYTE(ptr) ( (((ptr) [7] * 1L) << 56) | (((ptr) [6] * 1L) << 48) | \ - (((ptr) [5] * 1L) << 40) | (((ptr) [4] * 1L) << 32) | \ - (((ptr) [3] * 1L) << 24) | (((ptr) [2] * 1L) << 16) | \ - (((ptr) [1] * 1L) << 8 ) | ((ptr) [0])) - -#define GET_BE_8BYTE(ptr) ( (((ptr) [0] * 1L) << 56) | (((ptr) [1] * 1L) << 48) | \ - (((ptr) [2] * 1L) << 40) | (((ptr) [3] * 1L) << 32) | \ - (((ptr) [4] * 1L) << 24) | (((ptr) [5] * 1L) << 16) | \ - (((ptr) [6] * 1L) << 8 ) | ((ptr) [7])) - -#endif - -static int -header_read (SF_PRIVATE *psf, void *ptr, int bytes) -{ int count = 0 ; - - if (psf->headindex >= SIGNED_SIZEOF (psf->header)) - { memset (ptr, 0, SIGNED_SIZEOF (psf->header) - psf->headindex) ; - - /* This is the best that we can do. */ - psf_fseek (psf, bytes, SEEK_CUR) ; - return bytes ; - } ; - - if (psf->headindex + bytes > SIGNED_SIZEOF (psf->header)) - { int most ; - - most = SIGNED_SIZEOF (psf->header) - psf->headindex ; - psf_fread (psf->header + psf->headend, 1, most, psf) ; - memset (ptr + most, 0, bytes - most) ; - - psf_fseek (psf, bytes - most, SEEK_CUR) ; - return bytes ; - } ; - - if (psf->headindex + bytes > psf->headend) - { count = psf_fread (psf->header + psf->headend, 1, bytes - (psf->headend - psf->headindex), psf) ; - if (count != bytes - (int) (psf->headend - psf->headindex)) - { psf_log_printf (psf, "Error : psf_fread returned short count.\n") ; - return 0 ; - } ; - psf->headend += count ; - } ; - - memcpy (ptr, psf->header + psf->headindex, bytes) ; - psf->headindex += bytes ; - - return bytes ; -} /* header_read */ - -static void -header_seek (SF_PRIVATE *psf, sf_count_t position, int whence) -{ - - switch (whence) - { case SEEK_SET : - if (position > SIGNED_SIZEOF (psf->header)) - { /* Too much header to cache so just seek instead. */ - psf_fseek (psf, position, whence) ; - return ; - } ; - if (position > psf->headend) - psf->headend += psf_fread (psf->header + psf->headend, 1, position - psf->headend, psf) ; - psf->headindex = position ; - break ; - - case SEEK_CUR : - if (psf->headindex + position < 0) - break ; - - if (psf->headindex >= SIGNED_SIZEOF (psf->header)) - { psf_fseek (psf, position, whence) ; - return ; - } ; - - if (psf->headindex + position <= psf->headend) - { psf->headindex += position ; - break ; - } ; - - if (psf->headindex + position > SIGNED_SIZEOF (psf->header)) - { /* Need to jump this without caching it. */ - psf->headindex = psf->headend ; - psf_fseek (psf, position, SEEK_CUR) ; - break ; - } ; - - psf->headend += psf_fread (psf->header + psf->headend, 1, position - (psf->headend - psf->headindex), psf) ; - psf->headindex = psf->headend ; - break ; - - case SEEK_END : - default : - psf_log_printf (psf, "Bad whence param in header_seek().\n") ; - break ; - } ; - - return ; -} /* header_seek */ - -static int -header_gets (SF_PRIVATE *psf, char *ptr, int bufsize) -{ - int k ; - - for (k = 0 ; k < bufsize - 1 ; k++) - { if (psf->headindex < psf->headend) - { ptr [k] = psf->header [psf->headindex] ; - psf->headindex ++ ; - } - else - { psf->headend += psf_fread (psf->header + psf->headend, 1, 1, psf) ; - ptr [k] = psf->header [psf->headindex] ; - psf->headindex = psf->headend ; - } ; - - if (ptr [k] == '\n') - break ; - } ; - - ptr [k] = 0 ; - - return k ; -} /* header_gets */ - -int -psf_binheader_readf (SF_PRIVATE *psf, char const *format, ...) -{ va_list argptr ; - sf_count_t *countptr, countdata ; - unsigned char *ucptr, sixteen_bytes [16] ; - unsigned int *intptr, intdata ; - unsigned short *shortptr ; - char *charptr ; - float *floatptr ; - double *doubleptr ; - char c ; - int byte_count = 0, count ; - - if (! format) - return psf_ftell (psf) ; - - va_start (argptr, format) ; - - while ((c = *format++)) - { switch (c) - { case 'e' : /* All conversions are now from LE to host. */ - psf->rwf_endian = SF_ENDIAN_LITTLE ; - break ; - - case 'E' : /* All conversions are now from BE to host. */ - psf->rwf_endian = SF_ENDIAN_BIG ; - break ; - - case 'm' : - intptr = va_arg (argptr, unsigned int*) ; - ucptr = (unsigned char*) intptr ; - byte_count += header_read (psf, ucptr, sizeof (int)) ; - *intptr = GET_MARKER (ucptr) ; - break ; - - case 'h' : - intptr = va_arg (argptr, unsigned int*) ; - ucptr = (unsigned char*) intptr ; - byte_count += header_read (psf, sixteen_bytes, sizeof (sixteen_bytes)) ; - { int k ; - intdata = 0 ; - for (k = 0 ; k < 16 ; k++) - intdata ^= sixteen_bytes [k] << k ; - } - *intptr = intdata ; - break ; - - case '1' : - charptr = va_arg (argptr, char*) ; - *charptr = 0 ; - byte_count += header_read (psf, charptr, sizeof (char)) ; - break ; - - case '2' : - shortptr = va_arg (argptr, unsigned short*) ; - *shortptr = 0 ; - ucptr = (unsigned char*) shortptr ; - byte_count += header_read (psf, ucptr, sizeof (short)) ; - if (psf->rwf_endian == SF_ENDIAN_BIG) - *shortptr = GET_BE_SHORT (ucptr) ; - else - *shortptr = GET_LE_SHORT (ucptr) ; - break ; - - case '3' : - intptr = va_arg (argptr, unsigned int*) ; - *intptr = 0 ; - byte_count += header_read (psf, sixteen_bytes, 3) ; - if (psf->rwf_endian == SF_ENDIAN_BIG) - *intptr = GET_BE_3BYTE (sixteen_bytes) ; - else - *intptr = GET_LE_3BYTE (sixteen_bytes) ; - break ; - - case '4' : - intptr = va_arg (argptr, unsigned int*) ; - *intptr = 0 ; - ucptr = (unsigned char*) intptr ; - byte_count += header_read (psf, ucptr, sizeof (int)) ; - if (psf->rwf_endian == SF_ENDIAN_BIG) - *intptr = GET_BE_INT (ucptr) ; - else - *intptr = GET_LE_INT (ucptr) ; - break ; - - case '8' : - countptr = va_arg (argptr, sf_count_t *) ; - *countptr = 0 ; - byte_count += header_read (psf, sixteen_bytes, 8) ; - if (psf->rwf_endian == SF_ENDIAN_BIG) - countdata = GET_BE_8BYTE (sixteen_bytes) ; - else - countdata = GET_LE_8BYTE (sixteen_bytes) ; - *countptr = countdata ; - break ; - - case 'f' : /* Float conversion */ - floatptr = va_arg (argptr, float *) ; - *floatptr = 0.0 ; - byte_count += header_read (psf, floatptr, sizeof (float)) ; - if (psf->rwf_endian == SF_ENDIAN_BIG) - *floatptr = float32_be_read ((unsigned char*) floatptr) ; - else - *floatptr = float32_le_read ((unsigned char*) floatptr) ; - break ; - - case 'd' : /* double conversion */ - doubleptr = va_arg (argptr, double *) ; - *doubleptr = 0.0 ; - byte_count += header_read (psf, doubleptr, sizeof (double)) ; - if (psf->rwf_endian == SF_ENDIAN_BIG) - *doubleptr = double64_be_read ((unsigned char*) doubleptr) ; - else - *doubleptr = double64_le_read ((unsigned char*) doubleptr) ; - break ; - - case 's' : - psf_log_printf (psf, "Format conversion 's' not implemented yet.\n") ; - /* - strptr = va_arg (argptr, char *) ; - size = strlen (strptr) + 1 ; - size += (size & 1) ; - longdata = H2LE_INT (size) ; - get_int (psf, longdata) ; - memcpy (&(psf->header [psf->headindex]), strptr, size) ; - psf->headindex += size ; - */ - break ; - - case 'b' : - charptr = va_arg (argptr, char*) ; - count = va_arg (argptr, int) ; - if (count > 0) - byte_count += header_read (psf, charptr, count) ; - break ; - - case 'G' : - charptr = va_arg (argptr, char*) ; - count = va_arg (argptr, int) ; - if (count > 0) - byte_count += header_gets (psf, charptr, count) ; - break ; - - case 'z' : - psf_log_printf (psf, "Format conversion 'z' not implemented yet.\n") ; - /* - size = va_arg (argptr, size_t) ; - while (size) - { psf->header [psf->headindex] = 0 ; - psf->headindex ++ ; - size -- ; - } ; - */ - break ; - - case 'p' : - /* Get the seek position first. */ - count = va_arg (argptr, int) ; - header_seek (psf, count, SEEK_SET) ; - byte_count = count ; - break ; - - case 'j' : - /* Get the seek position first. */ - count = va_arg (argptr, int) ; - header_seek (psf, count, SEEK_CUR) ; - byte_count += count ; - break ; - - default : - psf_log_printf (psf, "*** Invalid format specifier `%c'\n", c) ; - psf->error = SFE_INTERNAL ; - break ; - } ; - } ; - - va_end (argptr) ; - - return byte_count ; -} /* psf_binheader_readf */ - -/*----------------------------------------------------------------------------------------------- -*/ - -sf_count_t -psf_default_seek (SF_PRIVATE *psf, int mode, sf_count_t samples_from_start) -{ sf_count_t position, retval ; - - if (! (psf->blockwidth && psf->dataoffset >= 0)) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - if (! psf->sf.seekable) - { psf->error = SFE_NOT_SEEKABLE ; - return PSF_SEEK_ERROR ; - } ; - - position = psf->dataoffset + psf->blockwidth * samples_from_start ; - - if ((retval = psf_fseek (psf, position, SEEK_SET)) != position) - { psf->error = SFE_SEEK_FAILED ; - return PSF_SEEK_ERROR ; - } ; - - mode = mode ; - - return samples_from_start ; -} /* psf_default_seek */ - -/*----------------------------------------------------------------------------------------------- -*/ - -void -psf_hexdump (void *ptr, int len) -{ char ascii [17], *data ; - int k, m ; - - if ((data = ptr) == NULL) - return ; - if (len <= 0) - return ; - - puts ("") ; - for (k = 0 ; k < len ; k += 16) - { memset (ascii, ' ', sizeof (ascii)) ; - - printf ("%08X: ", k) ; - for (m = 0 ; m < 16 && k + m < len ; m++) - { printf (m == 8 ? " %02X " : "%02X ", data [k + m] & 0xFF) ; - ascii [m] = isprint (data [k + m]) ? data [k + m] : '.' ; - } ; - - if (m <= 8) printf (" ") ; - for ( ; m < 16 ; m++) printf (" ") ; - - ascii [16] = 0 ; - printf (" %s\n", ascii) ; - } ; - - puts ("") ; -} /* psf_hexdump */ - -void -psf_log_SF_INFO (SF_PRIVATE *psf) -{ psf_log_printf (psf, "---------------------------------\n") ; - - psf_log_printf (psf, " Sample rate : %d\n", psf->sf.samplerate) ; - psf_log_printf (psf, " Frames : %D\n", psf->sf.frames) ; - psf_log_printf (psf, " Channels : %d\n", psf->sf.channels) ; - - psf_log_printf (psf, " Format : 0x%X\n", psf->sf.format) ; - psf_log_printf (psf, " Sections : %d\n", psf->sf.sections) ; - psf_log_printf (psf, " Seekable : %s\n", psf->sf.seekable ? "TRUE" : "FALSE") ; - - psf_log_printf (psf, "---------------------------------\n") ; -} /* psf_dump_SFINFO */ - -/*======================================================================================== -*/ - -SF_INSTRUMENT * -psf_instrument_alloc (void) -{ SF_INSTRUMENT *instr ; - - instr = calloc (1, sizeof (SF_INSTRUMENT)) ; - - if (instr == NULL) - return NULL ; - - /* Set non-zero default values. */ - instr->basenote = -1 ; - instr->velocity_lo = -1 ; - instr->velocity_hi = -1 ; - instr->key_lo = -1 ; - instr->key_hi = -1 ; - - return instr ; -} /* psf_instrument_alloc */ - -void* -psf_memset (void *s, int c, sf_count_t len) -{ char *ptr ; - int setcount ; - - ptr = (char *) s ; - - while (len > 0) - { setcount = (len > 0x10000000) ? 0x10000000 : (int) len ; - - memset (ptr, c, setcount) ; - - ptr += setcount ; - len -= setcount ; - } ; - - return s ; -} /* psf_memset */ - -void psf_get_date_str (char *str, int maxlen) -{ time_t current ; - struct tm timedata, *tmptr ; - - time (¤t) ; - -#if defined (HAVE_GMTIME_R) - /* If the re-entrant version is available, use it. */ - tmptr = gmtime_r (¤t, &timedata) ; -#elif defined (HAVE_GMTIME) - /* Otherwise use the standard one and copy the data to local storage. */ - tmptr = gmtime (¤t) ; - memcpy (&timedata, tmptr, sizeof (timedata)) ; -#else - tmptr = NULL ; -#endif - - if (tmptr) - LSF_SNPRINTF (str, maxlen, "%4d-%02d-%02d %02d:%02d:%02d UTC", - 1900 + timedata.tm_year, timedata.tm_mon, timedata.tm_mday, - timedata.tm_hour, timedata.tm_min, timedata.tm_sec) ; - else - LSF_SNPRINTF (str, maxlen, "Unknown date") ; - - return ; -} /* psf_get_date_str */ - -int -subformat_to_bytewidth (int format) -{ - switch (format) - { case SF_FORMAT_PCM_U8 : - case SF_FORMAT_PCM_S8 : - return 1 ; - case SF_FORMAT_PCM_16 : - return 2 ; - case SF_FORMAT_PCM_24 : - return 3 ; - case SF_FORMAT_PCM_32 : - case SF_FORMAT_FLOAT : - return 4 ; - case SF_FORMAT_DOUBLE : - return 8 ; - } ; - - return 0 ; -} /* subformat_to_bytewidth */ - -int -s_bitwidth_to_subformat (int bits) -{ static int array [] = - { SF_FORMAT_PCM_S8, SF_FORMAT_PCM_16, SF_FORMAT_PCM_24, SF_FORMAT_PCM_32 - } ; - - if (bits < 8 || bits > 32) - return 0 ; - - return array [((bits + 7) / 8) - 1] ; -} /* bitwidth_to_subformat */ - -int -u_bitwidth_to_subformat (int bits) -{ static int array [] = - { SF_FORMAT_PCM_U8, SF_FORMAT_PCM_16, SF_FORMAT_PCM_24, SF_FORMAT_PCM_32 - } ; - - if (bits < 8 || bits > 32) - return 0 ; - - return array [((bits + 7) / 8) - 1] ; -} /* bitwidth_to_subformat */ - -#endif /* PSF_LOG_PRINTF_ONLY */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 33e9795e-f717-461a-9feb-65d083a56395 -*/ diff --git a/libs/libsndfile/src/common.h b/libs/libsndfile/src/common.h deleted file mode 100644 index c08ff67e96..0000000000 --- a/libs/libsndfile/src/common.h +++ /dev/null @@ -1,766 +0,0 @@ -/* -** Copyright (C) 1999-2006 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#ifndef SNDFILE_COMMON_H -#define SNDFILE_COMMON_H - -#include "sfconfig.h" - -#include - -#if HAVE_STDINT_H -#include -#endif - -#ifndef SNDFILE_H -#include "sndfile.h" -#elif HAVE_INTTYPES_H -#include -#endif - -#ifdef __cplusplus -#error "This code is not designed to be compiled with a C++ compiler." -#endif - -#ifdef UNUSED -#elif defined (__GNUC__) -# define UNUSED(x) UNUSED_ ## x __attribute__ ((unused)) -#elif defined (__LCLINT__) -# define UNUSED(x) /*@unused@*/ x -#else -# define UNUSED(x) x -#endif - -#ifdef __GNUC__ -# define WARN_UNUSED __attribute__ ((warn_unused_result)) -#else -# define WARN_UNUSED -#endif - -#define SF_BUFFER_LEN (8192*2) -#define SF_FILENAME_LEN (512) -#define SF_SYSERR_LEN (256) -#define SF_MAX_STRINGS (16) -#define SF_STR_BUFFER_LEN (8192) -#define SF_HEADER_LEN (4100 + SF_STR_BUFFER_LEN) - -#define PSF_SEEK_ERROR ((sf_count_t) -1) - - -#define BITWIDTH2BYTES(x) (((x) + 7) / 8) - -/* For some reason sizeof returns an unsigned value which causes -** a warning when that value is added or subtracted from a signed -** value. Use SIGNED_SIZEOF instead. -*/ -#define SIGNED_SIZEOF(x) ((int) sizeof (x)) - -#define ARRAY_LEN(x) ((int) (sizeof (x) / sizeof ((x) [0]))) - -#define SF_MAX(a,b) ((a) > (b) ? (a) : (b)) -#define SF_MIN(a,b) ((a) < (b) ? (a) : (b)) - -enum -{ /* PEAK chunk location. */ - SF_PEAK_START = 42, - SF_PEAK_END = 43, - - /* PEAK chunk location. */ - SF_SCALE_MAX = 52, - SF_SCALE_MIN = 53, - - /* str_flags values. */ - SF_STR_ALLOW_START = 0x0100, - SF_STR_ALLOW_END = 0x0200, - - /* Location of strings. */ - SF_STR_LOCATE_START = 0x0400, - SF_STR_LOCATE_END = 0x0800, - - SFD_TYPEMASK = 0x0FFFFFFF -} ; - -#define SFM_MASK (SFM_READ | SFM_WRITE | SFM_RDWR) -#define SFM_UNMASK (~SFM_MASK) - -/*--------------------------------------------------------------------------------------- -** Formats that may be supported at some time in the future. -** When support is finalised, these values move to src/sndfile.h. -*/ - -enum -{ /* Work in progress. */ - - /* Formats supported read only. */ - SF_FORMAT_WVE = 0x4020000, /* Psion ALaw Sound File */ - SF_FORMAT_TXW = 0x4030000, /* Yamaha TX16 sampler file */ - SF_FORMAT_DWD = 0x4040000, /* DiamondWare Digirized */ - - /* Following are detected but not supported. */ - SF_FORMAT_OGG = 0x4090000, - - SF_FORMAT_REX = 0x40A0000, /* Propellorheads Rex/Rcy */ - SF_FORMAT_REX2 = 0x40D0000, /* Propellorheads Rex2 */ - SF_FORMAT_KRZ = 0x40E0000, /* Kurzweil sampler file */ - SF_FORMAT_WMA = 0x4100000, /* Windows Media Audio. */ - SF_FORMAT_SHN = 0x4110000, /* Shorten. */ - - /* Unsupported encodings. */ - SF_FORMAT_VORBIS = 0x1001, - - SF_FORMAT_SVX_FIB = 0x1020, /* SVX Fibonacci Delta encoding. */ - SF_FORMAT_SVX_EXP = 0x1021, /* SVX Exponential Delta encoding. */ - - SF_FORMAT_PCM_N = 0x1030 -} ; - -/*--------------------------------------------------------------------------------------- -** PEAK_CHUNK - This chunk type is common to both AIFF and WAVE files although their -** endian encodings are different. -*/ - -typedef struct -{ double value ; /* signed value of peak */ - sf_count_t position ; /* the sample frame for the peak */ -} PEAK_POS ; - -typedef struct -{ /* libsndfile internal : write a PEAK chunk at the start or end of the file? */ - int peak_loc ; - - /* WAV/AIFF */ - unsigned int version ; /* version of the PEAK chunk */ - unsigned int timestamp ; /* secs since 1/1/1970 */ - - /* CAF */ - unsigned int edit_number ; - -#if HAVE_FLEXIBLE_ARRAY - /* the per channel peak info */ - PEAK_POS peaks [] ; -#else - /* - ** This is not ISO compliant C. It works on some compilers which - ** don't support the ISO standard flexible struct array which is - ** used above. If your compiler doesn't like this I suggest you find - ** youself a 1999 ISO C standards compilant compiler. GCC-3.X is - ** highly recommended. - */ - PEAK_POS peaks [0] ; -#endif -} PEAK_INFO ; - -static inline PEAK_INFO * -peak_info_calloc (int channels) -{ return calloc (1, sizeof (PEAK_INFO) + channels * sizeof (PEAK_POS)) ; -} /* peak_info_calloc */ - -typedef struct -{ int type ; - int flags ; - char *str ; -} STR_DATA ; - -static inline size_t -make_size_t (int x) -{ return (size_t) x ; -} /* size_t_of_int */ - -/*======================================================================================= -** SF_PRIVATE stuct - a pointer to this struct is passed back to the caller of the -** sf_open_XXXX functions. The caller however has no knowledge of the struct's -** contents. -*/ - -typedef struct sf_private_tag -{ /* Force the compiler to double align the start of buffer. */ - union - { double dbuf [SF_BUFFER_LEN / sizeof (double)] ; -#if (defined (SIZEOF_INT64_T) && (SIZEOF_INT64_T == 8)) - int64_t lbuf [SF_BUFFER_LEN / sizeof (int64_t)] ; -#else - long lbuf [SF_BUFFER_LEN / sizeof (double)] ; -#endif - float fbuf [SF_BUFFER_LEN / sizeof (float)] ; - int ibuf [SF_BUFFER_LEN / sizeof (int)] ; - short sbuf [SF_BUFFER_LEN / sizeof (short)] ; - char cbuf [SF_BUFFER_LEN / sizeof (char)] ; - signed char scbuf [SF_BUFFER_LEN / sizeof (signed char)] ; - unsigned char ucbuf [SF_BUFFER_LEN / sizeof (signed char)] ; - } u ; - - char filepath [SF_FILENAME_LEN] ; - char rsrcpath [SF_FILENAME_LEN] ; - char directory [SF_FILENAME_LEN] ; - char filename [SF_FILENAME_LEN / 4] ; - - char syserr [SF_SYSERR_LEN] ; - - /* logbuffer and logindex should only be changed within the logging functions - ** of common.c - */ - char logbuffer [SF_BUFFER_LEN] ; - unsigned char header [SF_HEADER_LEN] ; /* Must be unsigned */ - int rwf_endian ; /* Header endian-ness flag. */ - - /* Storage and housekeeping data for adding/reading strings from - ** sound files. - */ - STR_DATA strings [SF_MAX_STRINGS] ; - char str_storage [SF_STR_BUFFER_LEN] ; - char *str_end ; - int str_flags ; - - /* Guard value. If this changes the buffers above have overflowed. */ - int Magick ; - - /* Index variables for maintaining logbuffer and header above. */ - int logindex ; - int headindex, headend ; - int has_text ; - int do_not_close_descriptor ; - -#if USE_WINDOWS_API - /* - ** These fields can only be used in src/file_io.c. - ** They are basically the same as a windows file HANDLE. - */ - void *hfile, *hrsrc, *hsaved ; -#else - /* These fields can only be used in src/file_io.c. */ - int filedes, rsrcdes, savedes ; -#endif - - int error ; - - int mode ; /* Open mode : SFM_READ, SFM_WRITE or SFM_RDWR. */ - int endian ; /* File endianness : SF_ENDIAN_LITTLE or SF_ENDIAN_BIG. */ - int float_endswap ; /* Need to endswap float32s? */ - - /* - ** Maximum float value for calculating the multiplier for - ** float/double to short/int conversions. - */ - int float_int_mult ; - float float_max ; - - /* Vairables for handling pipes. */ - int is_pipe ; /* True if file is a pipe. */ - sf_count_t pipeoffset ; /* Number of bytes read from a pipe. */ - - /* True if clipping must be performed on float->int conversions. */ - int add_clipping ; - - SF_INFO sf ; - - int have_written ; /* Has a single write been done to the file? */ - PEAK_INFO *peak_info ; - - /* Loop Info */ - SF_LOOP_INFO *loop_info ; - SF_INSTRUMENT *instrument ; - - /* Broadcast (EBU) Info */ - SF_BROADCAST_INFO *broadcast_info ; - - sf_count_t filelength ; /* Overall length of (embedded) file. */ - sf_count_t fileoffset ; /* Offset in number of bytes from beginning of file. */ - - sf_count_t rsrclength ; /* Length of the resource fork (if it exists). */ - - sf_count_t dataoffset ; /* Offset in number of bytes from beginning of file. */ - sf_count_t datalength ; /* Length in bytes of the audio data. */ - sf_count_t dataend ; /* Offset to file tailer. */ - - int blockwidth ; /* Size in bytes of one set of interleaved samples. */ - int bytewidth ; /* Size in bytes of one sample (one channel). */ - - void *dither ; - void *interleave ; - - int last_op ; /* Last operation; either SFM_READ or SFM_WRITE */ - sf_count_t read_current ; - sf_count_t write_current ; - - void *fdata ; /* This is a pointer to dynamically allocated file format - ** specific data. - */ - - SF_DITHER_INFO write_dither ; - SF_DITHER_INFO read_dither ; - - int norm_double ; - int norm_float ; - - int auto_header ; - - int ieee_replace ; - /* A set of file specific function pointers */ - - sf_count_t (*read_short) (struct sf_private_tag*, short *ptr, sf_count_t len) ; - sf_count_t (*read_int) (struct sf_private_tag*, int *ptr, sf_count_t len) ; - sf_count_t (*read_float) (struct sf_private_tag*, float *ptr, sf_count_t len) ; - sf_count_t (*read_double) (struct sf_private_tag*, double *ptr, sf_count_t len) ; - - sf_count_t (*write_short) (struct sf_private_tag*, const short *ptr, sf_count_t len) ; - sf_count_t (*write_int) (struct sf_private_tag*, const int *ptr, sf_count_t len) ; - sf_count_t (*write_float) (struct sf_private_tag*, const float *ptr, sf_count_t len) ; - sf_count_t (*write_double) (struct sf_private_tag*, const double *ptr, sf_count_t len) ; - - sf_count_t (*seek) (struct sf_private_tag*, int mode, sf_count_t samples_from_start) ; - int (*write_header) (struct sf_private_tag*, int calc_length) ; - int (*command) (struct sf_private_tag*, int command, void *data, int datasize) ; - - /* - ** Separate close functions for the codec and the container. - ** The codec close function is always called first. - */ - int (*codec_close) (struct sf_private_tag*) ; - int (*container_close) (struct sf_private_tag*) ; - - char *format_desc ; - - /* Virtual I/O functions. */ - int virtual_io ; - SF_VIRTUAL_IO vio ; - void *vio_user_data ; -} SF_PRIVATE ; - - - -enum -{ SFE_NO_ERROR = SF_ERR_NO_ERROR, - SFE_BAD_OPEN_FORMAT = SF_ERR_UNRECOGNISED_FORMAT, - SFE_SYSTEM = SF_ERR_SYSTEM, - SFE_MALFORMED_FILE = SF_ERR_MALFORMED_FILE, - SFE_UNSUPPORTED_ENCODING = SF_ERR_UNSUPPORTED_ENCODING, - - SFE_BAD_FILE, - SFE_BAD_FILE_READ, - SFE_OPEN_FAILED, - SFE_BAD_SNDFILE_PTR, - SFE_BAD_SF_INFO_PTR, - SFE_BAD_SF_INCOMPLETE, - SFE_BAD_FILE_PTR, - SFE_BAD_INT_PTR, - SFE_BAD_STAT_SIZE, - SFE_MALLOC_FAILED, - SFE_UNIMPLEMENTED, - SFE_BAD_READ_ALIGN, - SFE_BAD_WRITE_ALIGN, - SFE_UNKNOWN_FORMAT, - SFE_NOT_READMODE, - SFE_NOT_WRITEMODE, - SFE_BAD_MODE_RW, - SFE_BAD_SF_INFO, - SFE_BAD_OFFSET, - SFE_NO_EMBED_SUPPORT, - SFE_NO_EMBEDDED_RDWR, - SFE_NO_PIPE_WRITE, - - SFE_INTERNAL, - SFE_BAD_CONTROL_CMD, - SFE_BAD_ENDIAN, - SFE_CHANNEL_COUNT, - SFE_BAD_RDWR_FORMAT, - - SFE_BAD_VIRTUAL_IO, - - SFE_INTERLEAVE_MODE, - SFE_INTERLEAVE_SEEK, - SFE_INTERLEAVE_READ, - - SFE_BAD_SEEK, - SFE_NOT_SEEKABLE, - SFE_AMBIGUOUS_SEEK, - SFE_WRONG_SEEK, - SFE_SEEK_FAILED, - - SFE_BAD_OPEN_MODE, - SFE_OPEN_PIPE_RDWR, - SFE_RDWR_POSITION, - SFE_RDWR_BAD_HEADER, - - SFE_STR_NO_SUPPORT, - SFE_STR_NOT_WRITE, - SFE_STR_MAX_DATA, - SFE_STR_MAX_COUNT, - SFE_STR_BAD_TYPE, - SFE_STR_NO_ADD_END, - SFE_STR_BAD_STRING, - SFE_STR_WEIRD, - - SFE_WAV_NO_RIFF, - SFE_WAV_NO_WAVE, - SFE_WAV_NO_FMT, - SFE_WAV_FMT_SHORT, - SFE_WAV_BAD_FACT, - SFE_WAV_BAD_PEAK, - SFE_WAV_PEAK_B4_FMT, - SFE_WAV_BAD_FORMAT, - SFE_WAV_BAD_BLOCKALIGN, - SFE_WAV_NO_DATA, - SFE_WAV_BAD_LIST, - SFE_WAV_ADPCM_NOT4BIT, - SFE_WAV_ADPCM_CHANNELS, - SFE_WAV_GSM610_FORMAT, - SFE_WAV_UNKNOWN_CHUNK, - SFE_WAV_WVPK_DATA, - - SFE_AIFF_NO_FORM, - SFE_AIFF_AIFF_NO_FORM, - SFE_AIFF_COMM_NO_FORM, - SFE_AIFF_SSND_NO_COMM, - SFE_AIFF_UNKNOWN_CHUNK, - SFE_AIFF_COMM_CHUNK_SIZE, - SFE_AIFF_BAD_COMM_CHUNK, - SFE_AIFF_PEAK_B4_COMM, - SFE_AIFF_BAD_PEAK, - SFE_AIFF_NO_SSND, - SFE_AIFF_NO_DATA, - SFE_AIFF_RW_SSND_NOT_LAST, - - SFE_AU_UNKNOWN_FORMAT, - SFE_AU_NO_DOTSND, - SFE_AU_EMBED_BAD_LEN, - - SFE_RAW_READ_BAD_SPEC, - SFE_RAW_BAD_BITWIDTH, - SFE_RAW_BAD_FORMAT, - - SFE_PAF_NO_MARKER, - SFE_PAF_VERSION, - SFE_PAF_UNKNOWN_FORMAT, - SFE_PAF_SHORT_HEADER, - - SFE_SVX_NO_FORM, - SFE_SVX_NO_BODY, - SFE_SVX_NO_DATA, - SFE_SVX_BAD_COMP, - SFE_SVX_BAD_NAME_LENGTH, - - SFE_NIST_BAD_HEADER, - SFE_NIST_CRLF_CONVERISON, - SFE_NIST_BAD_ENCODING, - - SFE_VOC_NO_CREATIVE, - SFE_VOC_BAD_FORMAT, - SFE_VOC_BAD_VERSION, - SFE_VOC_BAD_MARKER, - SFE_VOC_BAD_SECTIONS, - SFE_VOC_MULTI_SAMPLERATE, - SFE_VOC_MULTI_SECTION, - SFE_VOC_MULTI_PARAM, - SFE_VOC_SECTION_COUNT, - SFE_VOC_NO_PIPE, - - SFE_IRCAM_NO_MARKER, - SFE_IRCAM_BAD_CHANNELS, - SFE_IRCAM_UNKNOWN_FORMAT, - - SFE_W64_64_BIT, - SFE_W64_NO_RIFF, - SFE_W64_NO_WAVE, - SFE_W64_NO_FMT, - SFE_W64_NO_DATA, - SFE_W64_FMT_SHORT, - SFE_W64_FMT_TOO_BIG, - SFE_W64_ADPCM_NOT4BIT, - SFE_W64_ADPCM_CHANNELS, - SFE_W64_GSM610_FORMAT, - - SFE_MAT4_BAD_NAME, - SFE_MAT4_NO_SAMPLERATE, - SFE_MAT4_ZERO_CHANNELS, - - SFE_MAT5_BAD_ENDIAN, - SFE_MAT5_NO_BLOCK, - SFE_MAT5_SAMPLE_RATE, - SFE_MAT5_ZERO_CHANNELS, - - SFE_PVF_NO_PVF1, - SFE_PVF_BAD_HEADER, - SFE_PVF_BAD_BITWIDTH, - - SFE_DWVW_BAD_BITWIDTH, - SFE_G72X_NOT_MONO, - - SFE_XI_BAD_HEADER, - SFE_XI_EXCESS_SAMPLES, - SFE_XI_NO_PIPE, - - SFE_HTK_NO_PIPE, - - SFE_SDS_NOT_SDS, - SFE_SDS_BAD_BIT_WIDTH, - - SFE_SD2_FD_DISALLOWED, - SFE_SD2_BAD_DATA_OFFSET, - SFE_SD2_BAD_MAP_OFFSET, - SFE_SD2_BAD_DATA_LENGTH, - SFE_SD2_BAD_MAP_LENGTH, - SFE_SD2_BAD_RSRC, - SFE_SD2_BAD_SAMPLE_SIZE, - - SFE_FLAC_BAD_HEADER, - SFE_FLAC_NEW_DECODER, - SFE_FLAC_INIT_DECODER, - SFE_FLAC_LOST_SYNC, - SFE_FLAC_BAD_SAMPLE_RATE, - SFE_FLAC_UNKOWN_ERROR, - - SFE_MAX_ERROR /* This must be last in list. */ -} ; - -int subformat_to_bytewidth (int format) ; -int s_bitwidth_to_subformat (int bits) ; -int u_bitwidth_to_subformat (int bits) ; - -/* Functions for reading and writing floats and doubles on processors -** with non-IEEE floats/doubles. -*/ -float float32_be_read (unsigned char *cptr) ; -float float32_le_read (unsigned char *cptr) ; -void float32_be_write (float in, unsigned char *out) ; -void float32_le_write (float in, unsigned char *out) ; - -double double64_be_read (unsigned char *cptr) ; -double double64_le_read (unsigned char *cptr) ; -void double64_be_write (double in, unsigned char *out) ; -void double64_le_write (double in, unsigned char *out) ; - -/* Functions for writing to the internal logging buffer. */ - -void psf_log_printf (SF_PRIVATE *psf, const char *format, ...) ; -void psf_log_SF_INFO (SF_PRIVATE *psf) ; - -void psf_hexdump (void *ptr, int len) ; - -/* Functions used when writing file headers. */ - -int psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...) ; -void psf_asciiheader_printf (SF_PRIVATE *psf, const char *format, ...) ; - -/* Functions used when reading file headers. */ - -int psf_binheader_readf (SF_PRIVATE *psf, char const *format, ...) ; - -/* Functions used in the write function for updating the peak chunk. */ - -void peak_update_short (SF_PRIVATE *psf, short *ptr, size_t items) ; -void peak_update_int (SF_PRIVATE *psf, int *ptr, size_t items) ; -void peak_update_double (SF_PRIVATE *psf, double *ptr, size_t items) ; - -/* Functions defined in command.c. */ - -int psf_get_format_simple_count (void) ; -int psf_get_format_simple (SF_FORMAT_INFO *data) ; - -int psf_get_format_info (SF_FORMAT_INFO *data) ; - -int psf_get_format_major_count (void) ; -int psf_get_format_major (SF_FORMAT_INFO *data) ; - -int psf_get_format_subtype_count (void) ; -int psf_get_format_subtype (SF_FORMAT_INFO *data) ; - -void psf_generate_format_desc (SF_PRIVATE *psf) ; - -double psf_calc_signal_max (SF_PRIVATE *psf, int normalize) ; -int psf_calc_max_all_channels (SF_PRIVATE *psf, double *peaks, int normalize) ; - -int psf_get_signal_max (SF_PRIVATE *psf, double *peak) ; -int psf_get_max_all_channels (SF_PRIVATE *psf, double *peaks) ; - -/* Functions in strings.c. */ - -const char* psf_get_string (SF_PRIVATE *psf, int str_type) ; -int psf_set_string (SF_PRIVATE *psf, int str_type, const char *str) ; -int psf_store_string (SF_PRIVATE *psf, int str_type, const char *str) ; - -/* Default seek function. Use for PCM and float encoded data. */ -sf_count_t psf_default_seek (SF_PRIVATE *psf, int mode, sf_count_t samples_from_start) ; - -/* Generate the currebt date as a string. */ -void psf_get_date_str (char *str, int maxlen) ; - -int macos_guess_file_type (SF_PRIVATE *psf, const char *filename) ; - -/*------------------------------------------------------------------------------------ -** File I/O functions which will allow access to large files (> 2 Gig) on -** some 32 bit OSes. Implementation in file_io.c. -*/ - -int psf_fopen (SF_PRIVATE *psf, const char *pathname, int flags) ; -int psf_set_stdio (SF_PRIVATE *psf, int mode) ; -int psf_file_valid (SF_PRIVATE *psf) ; -void psf_set_file (SF_PRIVATE *psf, int fd) ; -void psf_init_files (SF_PRIVATE *psf) ; -void psf_use_rsrc (SF_PRIVATE *psf, int on_off) ; - -sf_count_t psf_fseek (SF_PRIVATE *psf, sf_count_t offset, int whence) ; -sf_count_t psf_fread (void *ptr, sf_count_t bytes, sf_count_t count, SF_PRIVATE *psf) ; -sf_count_t psf_fwrite (const void *ptr, sf_count_t bytes, sf_count_t count, SF_PRIVATE *psf) ; -sf_count_t psf_fgets (char *buffer, sf_count_t bufsize, SF_PRIVATE *psf) ; -sf_count_t psf_ftell (SF_PRIVATE *psf) ; -sf_count_t psf_get_filelen (SF_PRIVATE *psf) ; - -void psf_fsync (SF_PRIVATE *psf) ; - -int psf_is_pipe (SF_PRIVATE *psf) ; - -int psf_ftruncate (SF_PRIVATE *psf, sf_count_t len) ; -int psf_fclose (SF_PRIVATE *psf) ; - -/* Open and close the resource fork of a file. */ -int psf_open_rsrc (SF_PRIVATE *psf, int mode) ; -int psf_close_rsrc (SF_PRIVATE *psf) ; - -/* -void psf_fclearerr (SF_PRIVATE *psf) ; -int psf_ferror (SF_PRIVATE *psf) ; -*/ - -/*------------------------------------------------------------------------------------ -** Functions for reading and writing different file formats. -*/ - -int aiff_open (SF_PRIVATE *psf) ; -int au_open (SF_PRIVATE *psf) ; -int avr_open (SF_PRIVATE *psf) ; -int htk_open (SF_PRIVATE *psf) ; -int ircam_open (SF_PRIVATE *psf) ; -int mat4_open (SF_PRIVATE *psf) ; -int mat5_open (SF_PRIVATE *psf) ; -int nist_open (SF_PRIVATE *psf) ; -int paf_open (SF_PRIVATE *psf) ; -int pvf_open (SF_PRIVATE *psf) ; -int raw_open (SF_PRIVATE *psf) ; -int sd2_open (SF_PRIVATE *psf) ; -int sds_open (SF_PRIVATE *psf) ; -int svx_open (SF_PRIVATE *psf) ; -int voc_open (SF_PRIVATE *psf) ; -int w64_open (SF_PRIVATE *psf) ; -int wav_open (SF_PRIVATE *psf) ; -int xi_open (SF_PRIVATE *psf) ; -int flac_open (SF_PRIVATE *psf) ; -int caf_open (SF_PRIVATE *psf) ; - -/* In progress. Do not currently work. */ - -int mpeg_open (SF_PRIVATE *psf) ; -int ogg_open (SF_PRIVATE *psf) ; -int rx2_open (SF_PRIVATE *psf) ; -int txw_open (SF_PRIVATE *psf) ; -int wve_open (SF_PRIVATE *psf) ; -int dwd_open (SF_PRIVATE *psf) ; - -int macbinary3_open (SF_PRIVATE *psf) ; - -/*------------------------------------------------------------------------------------ -** Init functions for a number of common data encodings. -*/ - -int pcm_init (SF_PRIVATE *psf) ; -int ulaw_init (SF_PRIVATE *psf) ; -int alaw_init (SF_PRIVATE *psf) ; -int float32_init (SF_PRIVATE *psf) ; -int double64_init (SF_PRIVATE *psf) ; -int dwvw_init (SF_PRIVATE *psf, int bitwidth) ; -int gsm610_init (SF_PRIVATE *psf) ; -int vox_adpcm_init (SF_PRIVATE *psf) ; -int flac_init (SF_PRIVATE *psf) ; -int g72x_init (SF_PRIVATE * psf) ; - -int dither_init (SF_PRIVATE *psf, int mode) ; - -int wav_w64_ima_init (SF_PRIVATE *psf, int blockalign, int samplesperblock) ; -int wav_w64_msadpcm_init (SF_PRIVATE *psf, int blockalign, int samplesperblock) ; - -int aiff_ima_init (SF_PRIVATE *psf, int blockalign, int samplesperblock) ; - -int interleave_init (SF_PRIVATE *psf) ; - -/*------------------------------------------------------------------------------------ -** Other helper functions. -*/ - -void *psf_memset (void *s, int c, sf_count_t n) ; - -SF_INSTRUMENT * psf_instrument_alloc (void) ; - - -SF_BROADCAST_INFO* broadcast_info_alloc (void) ; -int broadcast_info_copy (SF_BROADCAST_INFO* dst, SF_BROADCAST_INFO* src) ; -int broadcast_add_coding_history (SF_BROADCAST_INFO* bext, unsigned int channels, unsigned int samplerate) ; - -/*------------------------------------------------------------------------------------ -** Here's how we fix systems which don't snprintf / vsnprintf. -** Systems without these functions should use the -*/ - -#if USE_WINDOWS_API -#define LSF_SNPRINTF _snprintf -#elif (HAVE_SNPRINTF && ! FORCE_MISSING_SNPRINTF) -#define LSF_SNPRINTF snprintf -#else -int missing_snprintf (char *str, size_t n, char const *fmt, ...) ; -#define LSF_SNPRINTF missing_snprintf -#endif - -#if USE_WINDOWS_API -#define LSF_VSNPRINTF _vsnprintf -#elif (HAVE_VSNPRINTF && ! FORCE_MISSING_SNPRINTF) -#define LSF_VSNPRINTF vsnprintf -#else -int missing_vsnprintf (char *str, size_t n, const char *fmt, ...) ; -#define LSF_VSNPRINTF missing_vsnprintf -#endif - -/*------------------------------------------------------------------------------------ -** Extra commands for sf_command(). Not for public use yet. -*/ - -enum -{ SFC_TEST_AIFF_ADD_INST_CHUNK = 0x2000, - SFC_TEST_WAV_ADD_INFO_CHUNK = 0x2010 -} ; - -/* -** Maybe, one day, make these functions or something like them, public. -** -** Buffer to buffer dithering. Pointer in and out are allowed to point -** to the same buffer for in-place dithering. -*/ - -#if 0 -int sf_dither_short (const SF_DITHER_INFO *dither, const short *in, short *out, int count) ; -int sf_dither_int (const SF_DITHER_INFO *dither, const int *in, int *out, int count) ; -int sf_dither_float (const SF_DITHER_INFO *dither, const float *in, float *out, int count) ; -int sf_dither_double (const SF_DITHER_INFO *dither, const double *in, double *out, int count) ; -#endif - -#endif /* SNDFILE_COMMON_H */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 7b45c0ee-5835-4a18-a4ef-994e4cd95b67 -*/ diff --git a/libs/libsndfile/src/config.h.in b/libs/libsndfile/src/config.h.in deleted file mode 100644 index 4b3d8440a2..0000000000 --- a/libs/libsndfile/src/config.h.in +++ /dev/null @@ -1,247 +0,0 @@ -/* src/config.h.in. Generated from configure.ac by autoheader. */ - -/* Set to 1 if the compile is GNU GCC. */ -#undef COMPILER_IS_GCC - -/* Target processor clips on negative float to int conversion. */ -#undef CPU_CLIPS_NEGATIVE - -/* Target processor clips on positive float to int conversion. */ -#undef CPU_CLIPS_POSITIVE - -/* Target processor is big endian. */ -#undef CPU_IS_BIG_ENDIAN - -/* Target processor is little endian. */ -#undef CPU_IS_LITTLE_ENDIAN - -/* Set to 1 to enable experimental code. */ -#undef ENABLE_EXPERIMENTAL_CODE - -/* Major version of GCC or 3 otherwise. */ -#undef GCC_MAJOR_VERSION - -/* Define to 1 if you have the header file. */ -#undef HAVE_ALSA_ASOUNDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_BYTESWAP_H - -/* Define to 1 if you have the `calloc' function. */ -#undef HAVE_CALLOC - -/* Define to 1 if you have the `ceil' function. */ -#undef HAVE_CEIL - -/* Set to 1 if S_IRGRP is defined. */ -#undef HAVE_DECL_S_IRGRP - -/* Define to 1 if you have the header file. */ -#undef HAVE_ENDIAN_H - -/* Define to 1 if you have the `fdatasync' function. */ -#undef HAVE_FDATASYNC - -/* Define to 1 if you have libflac 1.1.1 */ -#undef HAVE_FLAC_1_1_1 - -/* Define to 1 if you have the header file. */ -#undef HAVE_FLAC_ALL_H - -/* Set to 1 if the compile supports the struct hack. */ -#undef HAVE_FLEXIBLE_ARRAY - -/* Define to 1 if you have the `floor' function. */ -#undef HAVE_FLOOR - -/* Define to 1 if you have the `fmod' function. */ -#undef HAVE_FMOD - -/* Define to 1 if you have the `free' function. */ -#undef HAVE_FREE - -/* Define to 1 if you have the `fstat' function. */ -#undef HAVE_FSTAT - -/* Define to 1 if you have the `fsync' function. */ -#undef HAVE_FSYNC - -/* Define to 1 if you have the `ftruncate' function. */ -#undef HAVE_FTRUNCATE - -/* Define to 1 if you have the `getpagesize' function. */ -#undef HAVE_GETPAGESIZE - -/* Define to 1 if you have the `gmtime' function. */ -#undef HAVE_GMTIME - -/* Define to 1 if you have the `gmtime_r' function. */ -#undef HAVE_GMTIME_R - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the `m' library (-lm). */ -#undef HAVE_LIBM - -/* Define to 1 if you have the header file. */ -#undef HAVE_LOCALE_H - -/* Define if you have C99's lrint function. */ -#undef HAVE_LRINT - -/* Define if you have C99's lrintf function. */ -#undef HAVE_LRINTF - -/* Define to 1 if you have the `lseek' function. */ -#undef HAVE_LSEEK - -/* Define to 1 if you have the `malloc' function. */ -#undef HAVE_MALLOC - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the `mmap' function. */ -#undef HAVE_MMAP - -/* Define to 1 if you have the `open' function. */ -#undef HAVE_OPEN - -/* Define to 1 if you have the `pread' function. */ -#undef HAVE_PREAD - -/* Define to 1 if you have the `pwrite' function. */ -#undef HAVE_PWRITE - -/* Define to 1 if you have the `read' function. */ -#undef HAVE_READ - -/* Define to 1 if you have the `realloc' function. */ -#undef HAVE_REALLOC - -/* Define to 1 if you have the `setlocale' function. */ -#undef HAVE_SETLOCALE - -/* Define to 1 if you have the `snprintf' function. */ -#undef HAVE_SNPRINTF - -/* Set to 1 if you have libsqlite3. */ -#undef HAVE_SQLITE3 - -/* Define to 1 if the system has the type `ssize_t'. */ -#undef HAVE_SSIZE_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 that is POSIX.1 compatible. */ -#undef HAVE_SYS_WAIT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define to 1 if you have the `vsnprintf' function. */ -#undef HAVE_VSNPRINTF - -/* Define to 1 if you have the `write' function. */ -#undef HAVE_WRITE - -/* Set to 1 if compiling for MacOSX */ -#undef OS_IS_MACOSX - -/* Set to 1 if compiling for Win32 */ -#undef OS_IS_WIN32 - -/* 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 - -/* Set to maximum allowed value of sf_count_t type. */ -#undef SF_COUNT_MAX - -/* The size of a `double', as computed by sizeof. */ -#undef SIZEOF_DOUBLE - -/* The size of a `float', as computed by sizeof. */ -#undef SIZEOF_FLOAT - -/* The size of a `int', as computed by sizeof. */ -#undef SIZEOF_INT - -/* The size of a `int64_t', as computed by sizeof. */ -#undef SIZEOF_INT64_T - -/* The size of a `loff_t', as computed by sizeof. */ -#undef SIZEOF_LOFF_T - -/* The size of a `long', as computed by sizeof. */ -#undef SIZEOF_LONG - -/* The size of a `long long', as computed by sizeof. */ -#undef SIZEOF_LONG_LONG - -/* The size of a `off64_t', as computed by sizeof. */ -#undef SIZEOF_OFF64_T - -/* The size of a `off_t', as computed by sizeof. */ -#undef SIZEOF_OFF_T - -/* Set to sizeof (long) if unknown. */ -#undef SIZEOF_SF_COUNT_T - -/* The size of a `short', as computed by sizeof. */ -#undef SIZEOF_SHORT - -/* The size of a `size_t', as computed by sizeof. */ -#undef SIZEOF_SIZE_T - -/* The size of a `ssize_t', as computed by sizeof. */ -#undef SIZEOF_SSIZE_T - -/* 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 - -/* Set to long if unknown. */ -#undef TYPEOF_SF_COUNT_T - -/* Set to 1 to use the native windows API */ -#undef USE_WINDOWS_API - -/* Number of bits in a file offset, on hosts where this is settable. */ -#undef _FILE_OFFSET_BITS - -/* Define to make fseeko etc. visible, on some hosts. */ -#undef _LARGEFILE_SOURCE - -/* Define for large files, on AIX-style hosts. */ -#undef _LARGE_FILES diff --git a/libs/libsndfile/src/cygsndfile.def b/libs/libsndfile/src/cygsndfile.def deleted file mode 100644 index 510aa8e229..0000000000 --- a/libs/libsndfile/src/cygsndfile.def +++ /dev/null @@ -1,39 +0,0 @@ -; Auto-generated by create_symbols_file.py - -LIBRARY cygsndfile-1.dll -EXPORTS - -sf_command @1 -sf_open @2 -sf_close @3 -sf_seek @4 -sf_error @7 -sf_perror @8 -sf_error_str @9 -sf_error_number @10 -sf_format_check @11 -sf_read_raw @16 -sf_readf_short @17 -sf_readf_int @18 -sf_readf_float @19 -sf_readf_double @20 -sf_read_short @21 -sf_read_int @22 -sf_read_float @23 -sf_read_double @24 -sf_write_raw @32 -sf_writef_short @33 -sf_writef_int @34 -sf_writef_float @35 -sf_writef_double @36 -sf_write_short @37 -sf_write_int @38 -sf_write_float @39 -sf_write_double @40 -sf_strerror @50 -sf_get_string @60 -sf_set_string @61 -sf_open_fd @70 -sf_open_virtual @80 -sf_write_sync @90 - diff --git a/libs/libsndfile/src/dither.c b/libs/libsndfile/src/dither.c deleted file mode 100644 index 873f1bbc10..0000000000 --- a/libs/libsndfile/src/dither.c +++ /dev/null @@ -1,535 +0,0 @@ -/* -** Copyright (C) 2003,2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -/*============================================================================ -** Rule number 1 is to only apply dither when going from a larger bitwidth -** to a smaller bitwidth. This can happen on both read and write. -** -** Need to apply dither on all conversions marked X below. -** -** Dither on write: -** -** Input -** | short int float double -** --------+----------------------------------------------- -** O 8 bit | X X X X -** u 16 bit | none X X X -** t 24 bit | none X X X -** p 32 bit | none none X X -** u float | none none none none -** t double | none none none none -** -** Dither on read: -** -** Input -** O | 8 bit 16 bit 24 bit 32 bit float double -** u --------+------------------------------------------------- -** t short | none none X X X X -** p int | none none none X X X -** u float | none none none none none none -** t double | none none none none none none -*/ - -#define SFE_DITHER_BAD_PTR 666 -#define SFE_DITHER_BAD_TYPE 667 - -typedef struct -{ int read_short_dither_bits, read_int_dither_bits ; - int write_short_dither_bits, write_int_dither_bits ; - double read_float_dither_scale, read_double_dither_bits ; - double write_float_dither_scale, write_double_dither_bits ; - - sf_count_t (*read_short) (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; - sf_count_t (*read_int) (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; - sf_count_t (*read_float) (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; - sf_count_t (*read_double) (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - - sf_count_t (*write_short) (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; - sf_count_t (*write_int) (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; - sf_count_t (*write_float) (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; - sf_count_t (*write_double) (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - - double buffer [SF_BUFFER_LEN / sizeof (double)] ; -} DITHER_DATA ; - -static sf_count_t dither_read_short (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t dither_read_int (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; - -static sf_count_t dither_write_short (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t dither_write_int (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t dither_write_float (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t dither_write_double (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -int -dither_init (SF_PRIVATE *psf, int mode) -{ DITHER_DATA *pdither ; - - pdither = psf->dither ; /* This may be NULL. */ - - /* Turn off dither on read. */ - if (mode == SFM_READ && psf->read_dither.type == SFD_NO_DITHER) - { if (pdither == NULL) - return 0 ; /* Dither is already off, so just return. */ - - if (pdither->read_short) - psf->read_short = pdither->read_short ; - if (pdither->read_int) - psf->read_int = pdither->read_int ; - if (pdither->read_float) - psf->read_float = pdither->read_float ; - if (pdither->read_double) - psf->read_double = pdither->read_double ; - return 0 ; - } ; - - /* Turn off dither on write. */ - if (mode == SFM_WRITE && psf->write_dither.type == SFD_NO_DITHER) - { if (pdither == NULL) - return 0 ; /* Dither is already off, so just return. */ - - if (pdither->write_short) - psf->write_short = pdither->write_short ; - if (pdither->write_int) - psf->write_int = pdither->write_int ; - if (pdither->write_float) - psf->write_float = pdither->write_float ; - if (pdither->write_double) - psf->write_double = pdither->write_double ; - return 0 ; - } ; - - /* Turn on dither on read if asked. */ - if (mode == SFM_READ && psf->read_dither.type != 0) - { if (pdither == NULL) - pdither = psf->dither = calloc (1, sizeof (DITHER_DATA)) ; - if (pdither == NULL) - return SFE_MALLOC_FAILED ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_DOUBLE : - case SF_FORMAT_FLOAT : - pdither->read_int = psf->read_int ; - psf->read_int = dither_read_int ; - - case SF_FORMAT_PCM_32 : - case SF_FORMAT_PCM_24 : - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_S8 : - case SF_FORMAT_PCM_U8 : - pdither->read_short = psf->read_short ; - psf->read_short = dither_read_short ; - - default : break ; - } ; - } ; - - /* Turn on dither on write if asked. */ - if (mode == SFM_WRITE && psf->write_dither.type != 0) - { if (pdither == NULL) - pdither = psf->dither = calloc (1, sizeof (DITHER_DATA)) ; - if (pdither == NULL) - return SFE_MALLOC_FAILED ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_DOUBLE : - case SF_FORMAT_FLOAT : - pdither->write_int = psf->write_int ; - psf->write_int = dither_write_int ; - - case SF_FORMAT_PCM_32 : - case SF_FORMAT_PCM_24 : - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_S8 : - case SF_FORMAT_PCM_U8 : - - default : break ; - } ; - - pdither->write_short = psf->write_short ; - psf->write_short = dither_write_short ; - - pdither->write_int = psf->write_int ; - psf->write_int = dither_write_int ; - - pdither->write_float = psf->write_float ; - psf->write_float = dither_write_float ; - - pdither->write_double = psf->write_double ; - psf->write_double = dither_write_double ; - } ; - - return 0 ; -} /* dither_init */ - -/*============================================================================== -*/ - -static void dither_short (const short *in, short *out, int frames, int channels) ; -static void dither_int (const int *in, int *out, int frames, int channels) ; - -static void dither_float (const float *in, float *out, int frames, int channels) ; -static void dither_double (const double *in, double *out, int frames, int channels) ; - -static sf_count_t -dither_read_short (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ psf = psf ; - ptr = ptr ; - return len ; -} /* dither_read_short */ - -static sf_count_t -dither_read_int (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ psf = psf ; - ptr = ptr ; - return len ; -} /* dither_read_int */ - -/*------------------------------------------------------------------------------ -*/ - -static sf_count_t -dither_write_short (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ DITHER_DATA *pdither ; - int bufferlen, writecount, thiswrite ; - sf_count_t total = 0 ; - - if ((pdither = psf->dither) == NULL) - { psf->error = SFE_DITHER_BAD_PTR ; - return 0 ; - } ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_S8 : - case SF_FORMAT_PCM_U8 : - case SF_FORMAT_DPCM_8 : - break ; - - default : - return pdither->write_short (psf, ptr, len) ; - } ; - - bufferlen = sizeof (pdither->buffer) / sizeof (short) ; - - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : (int) len ; - writecount /= psf->sf.channels ; - writecount *= psf->sf.channels ; - - dither_short (ptr, (short*) pdither->buffer, writecount / psf->sf.channels, psf->sf.channels) ; - - thiswrite = pdither->write_short (psf, (short*) pdither->buffer, writecount) ; - total += thiswrite ; - len -= thiswrite ; - if (thiswrite < writecount) - break ; - } ; - - return total ; -} /* dither_write_short */ - -static sf_count_t -dither_write_int (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ DITHER_DATA *pdither ; - int bufferlen, writecount, thiswrite ; - sf_count_t total = 0 ; - - if ((pdither = psf->dither) == NULL) - { psf->error = SFE_DITHER_BAD_PTR ; - return 0 ; - } ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_S8 : - case SF_FORMAT_PCM_U8 : - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_24 : - - case SF_FORMAT_DPCM_8 : - case SF_FORMAT_DPCM_16 : - break ; - - default : - return pdither->write_int (psf, ptr, len) ; - } ; - - - bufferlen = sizeof (pdither->buffer) / sizeof (int) ; - - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : (int) len ; - writecount /= psf->sf.channels ; - writecount *= psf->sf.channels ; - - dither_int (ptr, (int*) pdither->buffer, writecount / psf->sf.channels, psf->sf.channels) ; - - thiswrite = pdither->write_int (psf, (int*) pdither->buffer, writecount) ; - total += thiswrite ; - len -= thiswrite ; - if (thiswrite < writecount) - break ; - } ; - - return total ; -} /* dither_write_int */ - -static sf_count_t -dither_write_float (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ DITHER_DATA *pdither ; - int bufferlen, writecount, thiswrite ; - sf_count_t total = 0 ; - - if ((pdither = psf->dither) == NULL) - { psf->error = SFE_DITHER_BAD_PTR ; - return 0 ; - } ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_S8 : - case SF_FORMAT_PCM_U8 : - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_24 : - - case SF_FORMAT_DPCM_8 : - case SF_FORMAT_DPCM_16 : - break ; - - default : - return pdither->write_float (psf, ptr, len) ; - } ; - - bufferlen = sizeof (pdither->buffer) / sizeof (float) ; - - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : (float) len ; - writecount /= psf->sf.channels ; - writecount *= psf->sf.channels ; - - dither_float (ptr, (float*) pdither->buffer, writecount / psf->sf.channels, psf->sf.channels) ; - - thiswrite = pdither->write_float (psf, (float*) pdither->buffer, writecount) ; - total += thiswrite ; - len -= thiswrite ; - if (thiswrite < writecount) - break ; - } ; - - return total ; -} /* dither_write_float */ - -static sf_count_t -dither_write_double (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ DITHER_DATA *pdither ; - int bufferlen, writecount, thiswrite ; - sf_count_t total = 0 ; - - if ((pdither = psf->dither) == NULL) - { psf->error = SFE_DITHER_BAD_PTR ; - return 0 ; - } ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_S8 : - case SF_FORMAT_PCM_U8 : - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_24 : - - case SF_FORMAT_DPCM_8 : - case SF_FORMAT_DPCM_16 : - break ; - - default : - return pdither->write_double (psf, ptr, len) ; - } ; - - - bufferlen = sizeof (pdither->buffer) / sizeof (double) ; - - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : (double) len ; - writecount /= psf->sf.channels ; - writecount *= psf->sf.channels ; - - dither_double (ptr, (double*) pdither->buffer, writecount / psf->sf.channels, psf->sf.channels) ; - - thiswrite = pdither->write_double (psf, (double*) pdither->buffer, writecount) ; - total += thiswrite ; - len -= thiswrite ; - if (thiswrite < writecount) - break ; - } ; - - return total ; -} /* dither_write_double */ - -/*============================================================================== -*/ - -static void -dither_short (const short *in, short *out, int frames, int channels) -{ int ch, k ; - - for (ch = 0 ; ch < channels ; ch++) - for (k = ch ; k < channels * frames ; k += channels) - out [k] = in [k] ; - -} /* dither_short */ - -static void -dither_int (const int *in, int *out, int frames, int channels) -{ int ch, k ; - - for (ch = 0 ; ch < channels ; ch++) - for (k = ch ; k < channels * frames ; k += channels) - out [k] = in [k] ; - -} /* dither_int */ - -static void -dither_float (const float *in, float *out, int frames, int channels) -{ int ch, k ; - - for (ch = 0 ; ch < channels ; ch++) - for (k = ch ; k < channels * frames ; k += channels) - out [k] = in [k] ; - -} /* dither_float */ - -static void -dither_double (const double *in, double *out, int frames, int channels) -{ int ch, k ; - - for (ch = 0 ; ch < channels ; ch++) - for (k = ch ; k < channels * frames ; k += channels) - out [k] = in [k] ; - -} /* dither_double */ - -/*============================================================================== -*/ -#if 0 - -/* -** Not made public because this (maybe) requires storage of state information. -** -** Also maybe need separate state info for each channel!!!! -*/ - -int -DO_NOT_USE_sf_dither_short (const SF_DITHER_INFO *dither, const short *in, short *out, int frames, int channels) -{ int ch, k ; - - if (! dither) - return SFE_DITHER_BAD_PTR ; - - switch (dither->type & SFD_TYPEMASK) - { case SFD_WHITE : - case SFD_TRIANGULAR_PDF : - for (ch = 0 ; ch < channels ; ch++) - for (k = ch ; k < channels * frames ; k += channels) - out [k] = in [k] ; - break ; - - default : - return SFE_DITHER_BAD_TYPE ; - } ; - - return 0 ; -} /* DO_NOT_USE_sf_dither_short */ - -int -DO_NOT_USE_sf_dither_int (const SF_DITHER_INFO *dither, const int *in, int *out, int frames, int channels) -{ int ch, k ; - - if (! dither) - return SFE_DITHER_BAD_PTR ; - - switch (dither->type & SFD_TYPEMASK) - { case SFD_WHITE : - case SFD_TRIANGULAR_PDF : - for (ch = 0 ; ch < channels ; ch++) - for (k = ch ; k < channels * frames ; k += channels) - out [k] = in [k] ; - break ; - - default : - return SFE_DITHER_BAD_TYPE ; - } ; - - return 0 ; -} /* DO_NOT_USE_sf_dither_int */ - -int -DO_NOT_USE_sf_dither_float (const SF_DITHER_INFO *dither, const float *in, float *out, int frames, int channels) -{ int ch, k ; - - if (! dither) - return SFE_DITHER_BAD_PTR ; - - switch (dither->type & SFD_TYPEMASK) - { case SFD_WHITE : - case SFD_TRIANGULAR_PDF : - for (ch = 0 ; ch < channels ; ch++) - for (k = ch ; k < channels * frames ; k += channels) - out [k] = in [k] ; - break ; - - default : - return SFE_DITHER_BAD_TYPE ; - } ; - - return 0 ; -} /* DO_NOT_USE_sf_dither_float */ - -int -DO_NOT_USE_sf_dither_double (const SF_DITHER_INFO *dither, const double *in, double *out, int frames, int channels) -{ int ch, k ; - - if (! dither) - return SFE_DITHER_BAD_PTR ; - - switch (dither->type & SFD_TYPEMASK) - { case SFD_WHITE : - case SFD_TRIANGULAR_PDF : - for (ch = 0 ; ch < channels ; ch++) - for (k = ch ; k < channels * frames ; k += channels) - out [k] = in [k] ; - break ; - - default : - return SFE_DITHER_BAD_TYPE ; - } ; - - return 0 ; -} /* DO_NOT_USE_sf_dither_double */ - -#endif -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 673fad58-5314-421c-9144-9d54bfdf104c -*/ diff --git a/libs/libsndfile/src/double64.c b/libs/libsndfile/src/double64.c deleted file mode 100644 index 9a6f8f1196..0000000000 --- a/libs/libsndfile/src/double64.c +++ /dev/null @@ -1,1009 +0,0 @@ -/* -** Copyright (C) 1999-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" -#include "float_cast.h" - -#if CPU_IS_LITTLE_ENDIAN - #define DOUBLE64_READ double64_le_read - #define DOUBLE64_WRITE double64_le_write -#elif CPU_IS_BIG_ENDIAN - #define DOUBLE64_READ double64_be_read - #define DOUBLE64_WRITE double64_be_write -#endif - -/* A 32 number which will not overflow when multiplied by sizeof (double). */ -#define SENSIBLE_LEN (0x8000000) - -/*-------------------------------------------------------------------------------------------- -** Processor floating point capabilities. double64_get_capability () returns one of the -** latter three values. -*/ - -enum -{ DOUBLE_UNKNOWN = 0x00, - DOUBLE_CAN_RW_LE = 0x23, - DOUBLE_CAN_RW_BE = 0x34, - DOUBLE_BROKEN_LE = 0x45, - DOUBLE_BROKEN_BE = 0x56 -} ; - -/*-------------------------------------------------------------------------------------------- -** Prototypes for private functions. -*/ - -static sf_count_t host_read_d2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t host_read_d2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t host_read_d2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t host_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t host_write_s2d (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t host_write_i2d (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t host_write_f2d (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t host_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -static void double64_peak_update (SF_PRIVATE *psf, const double *buffer, int count, sf_count_t indx) ; - -static int double64_get_capability (SF_PRIVATE *psf) ; - -static sf_count_t replace_read_d2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t replace_read_d2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t replace_read_d2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t replace_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t replace_write_s2d (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t replace_write_i2d (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t replace_write_f2d (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t replace_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -static void d2bd_read (double *buffer, int count) ; -static void bd2d_write (double *buffer, int count) ; - -/*-------------------------------------------------------------------------------------------- -** Exported functions. -*/ - -int -double64_init (SF_PRIVATE *psf) -{ static int double64_caps ; - - double64_caps = double64_get_capability (psf) ; - - psf->blockwidth = sizeof (double) * psf->sf.channels ; - - if (psf->mode == SFM_READ || psf->mode == SFM_RDWR) - { switch (psf->endian + double64_caps) - { case (SF_ENDIAN_BIG + DOUBLE_CAN_RW_BE) : - psf->float_endswap = SF_FALSE ; - psf->read_short = host_read_d2s ; - psf->read_int = host_read_d2i ; - psf->read_float = host_read_d2f ; - psf->read_double = host_read_d ; - break ; - - case (SF_ENDIAN_LITTLE + DOUBLE_CAN_RW_LE) : - psf->float_endswap = SF_FALSE ; - psf->read_short = host_read_d2s ; - psf->read_int = host_read_d2i ; - psf->read_float = host_read_d2f ; - psf->read_double = host_read_d ; - break ; - - case (SF_ENDIAN_BIG + DOUBLE_CAN_RW_LE) : - psf->float_endswap = SF_TRUE ; - psf->read_short = host_read_d2s ; - psf->read_int = host_read_d2i ; - psf->read_float = host_read_d2f ; - psf->read_double = host_read_d ; - break ; - - case (SF_ENDIAN_LITTLE + DOUBLE_CAN_RW_BE) : - psf->float_endswap = SF_TRUE ; - psf->read_short = host_read_d2s ; - psf->read_int = host_read_d2i ; - psf->read_float = host_read_d2f ; - psf->read_double = host_read_d ; - break ; - - /* When the CPU is not IEEE compatible. */ - case (SF_ENDIAN_BIG + DOUBLE_BROKEN_BE) : - psf->float_endswap = SF_FALSE ; - psf->read_short = replace_read_d2s ; - psf->read_int = replace_read_d2i ; - psf->read_float = replace_read_d2f ; - psf->read_double = replace_read_d ; - break ; - - case (SF_ENDIAN_LITTLE + DOUBLE_BROKEN_LE) : - psf->float_endswap = SF_FALSE ; - psf->read_short = replace_read_d2s ; - psf->read_int = replace_read_d2i ; - psf->read_float = replace_read_d2f ; - psf->read_double = replace_read_d ; - break ; - - case (SF_ENDIAN_BIG + DOUBLE_BROKEN_LE) : - psf->float_endswap = SF_TRUE ; - psf->read_short = replace_read_d2s ; - psf->read_int = replace_read_d2i ; - psf->read_float = replace_read_d2f ; - psf->read_double = replace_read_d ; - break ; - - case (SF_ENDIAN_LITTLE + DOUBLE_BROKEN_BE) : - psf->float_endswap = SF_TRUE ; - psf->read_short = replace_read_d2s ; - psf->read_int = replace_read_d2i ; - psf->read_float = replace_read_d2f ; - psf->read_double = replace_read_d ; - break ; - - default : break ; - } ; - } ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { switch (psf->endian + double64_caps) - { case (SF_ENDIAN_LITTLE + DOUBLE_CAN_RW_LE) : - psf->float_endswap = SF_FALSE ; - psf->write_short = host_write_s2d ; - psf->write_int = host_write_i2d ; - psf->write_float = host_write_f2d ; - psf->write_double = host_write_d ; - break ; - - case (SF_ENDIAN_BIG + DOUBLE_CAN_RW_BE) : - psf->float_endswap = SF_FALSE ; - psf->write_short = host_write_s2d ; - psf->write_int = host_write_i2d ; - psf->write_float = host_write_f2d ; - psf->write_double = host_write_d ; - break ; - - case (SF_ENDIAN_BIG + DOUBLE_CAN_RW_LE) : - psf->float_endswap = SF_TRUE ; - psf->write_short = host_write_s2d ; - psf->write_int = host_write_i2d ; - psf->write_float = host_write_f2d ; - psf->write_double = host_write_d ; - break ; - - case (SF_ENDIAN_LITTLE + DOUBLE_CAN_RW_BE) : - psf->float_endswap = SF_TRUE ; - psf->write_short = host_write_s2d ; - psf->write_int = host_write_i2d ; - psf->write_float = host_write_f2d ; - psf->write_double = host_write_d ; - break ; - - /* When the CPU is not IEEE compatible. */ - case (SF_ENDIAN_LITTLE + DOUBLE_BROKEN_LE) : - psf->float_endswap = SF_FALSE ; - psf->write_short = replace_write_s2d ; - psf->write_int = replace_write_i2d ; - psf->write_float = replace_write_f2d ; - psf->write_double = replace_write_d ; - break ; - - case (SF_ENDIAN_BIG + DOUBLE_BROKEN_BE) : - psf->float_endswap = SF_FALSE ; - psf->write_short = replace_write_s2d ; - psf->write_int = replace_write_i2d ; - psf->write_float = replace_write_f2d ; - psf->write_double = replace_write_d ; - break ; - - case (SF_ENDIAN_BIG + DOUBLE_BROKEN_LE) : - psf->float_endswap = SF_TRUE ; - psf->write_short = replace_write_s2d ; - psf->write_int = replace_write_i2d ; - psf->write_float = replace_write_f2d ; - psf->write_double = replace_write_d ; - break ; - - case (SF_ENDIAN_LITTLE + DOUBLE_BROKEN_BE) : - psf->float_endswap = SF_TRUE ; - psf->write_short = replace_write_s2d ; - psf->write_int = replace_write_i2d ; - psf->write_float = replace_write_f2d ; - psf->write_double = replace_write_d ; - break ; - - default : break ; - } ; - } ; - - if (psf->filelength > psf->dataoffset) - { psf->datalength = (psf->dataend > 0) ? psf->dataend - psf->dataoffset : - psf->filelength - psf->dataoffset ; - } - else - psf->datalength = 0 ; - - psf->sf.frames = psf->datalength / psf->blockwidth ; - - return 0 ; -} /* double64_init */ - -/*---------------------------------------------------------------------------- -** From : http://www.hpcf.cam.ac.uk/fp_formats.html -** -** 64 bit double precision layout (big endian) -** Sign bit 0 -** Exponent bits 1-11 -** Mantissa bits 12-63 -** Exponent Offset 1023 -** -** double single -** -** +INF 7FF0000000000000 7F800000 -** -INF FFF0000000000000 FF800000 -** NaN 7FF0000000000001 7F800001 -** to to -** 7FFFFFFFFFFFFFFF 7FFFFFFF -** and and -** FFF0000000000001 FF800001 -** to to -** FFFFFFFFFFFFFFFF FFFFFFFF -** +OVER 7FEFFFFFFFFFFFFF 7F7FFFFF -** -OVER FFEFFFFFFFFFFFFF FF7FFFFF -** +UNDER 0010000000000000 00800000 -** -UNDER 8010000000000000 80800000 -*/ - -double -double64_be_read (unsigned char *cptr) -{ int exponent, negative, upper, lower ; - double dvalue ; - - negative = (cptr [0] & 0x80) ? 1 : 0 ; - exponent = ((cptr [0] & 0x7F) << 4) | ((cptr [1] >> 4) & 0xF) ; - - /* Might not have a 64 bit long, so load the mantissa into a double. */ - upper = (((cptr [1] & 0xF) << 24) | (cptr [2] << 16) | (cptr [3] << 8) | cptr [4]) ; - lower = (cptr [5] << 16) | (cptr [6] << 8) | cptr [7] ; - - if (exponent == 0 && upper == 0 && lower == 0) - return 0.0 ; - - dvalue = upper + lower / ((double) 0x1000000) ; - dvalue += 0x10000000 ; - - exponent = exponent - 0x3FF ; - - dvalue = dvalue / ((double) 0x10000000) ; - - if (negative) - dvalue *= -1 ; - - if (exponent > 0) - dvalue *= (1 << exponent) ; - else if (exponent < 0) - dvalue /= (1 << abs (exponent)) ; - - return dvalue ; -} /* double64_be_read */ - -double -double64_le_read (unsigned char *cptr) -{ int exponent, negative, upper, lower ; - double dvalue ; - - negative = (cptr [7] & 0x80) ? 1 : 0 ; - exponent = ((cptr [7] & 0x7F) << 4) | ((cptr [6] >> 4) & 0xF) ; - - /* Might not have a 64 bit long, so load the mantissa into a double. */ - upper = ((cptr [6] & 0xF) << 24) | (cptr [5] << 16) | (cptr [4] << 8) | cptr [3] ; - lower = (cptr [2] << 16) | (cptr [1] << 8) | cptr [0] ; - - if (exponent == 0 && upper == 0 && lower == 0) - return 0.0 ; - - dvalue = upper + lower / ((double) 0x1000000) ; - dvalue += 0x10000000 ; - - exponent = exponent - 0x3FF ; - - dvalue = dvalue / ((double) 0x10000000) ; - - if (negative) - dvalue *= -1 ; - - if (exponent > 0) - dvalue *= (1 << exponent) ; - else if (exponent < 0) - dvalue /= (1 << abs (exponent)) ; - - return dvalue ; -} /* double64_le_read */ - -void -double64_be_write (double in, unsigned char *out) -{ int exponent, mantissa ; - - memset (out, 0, sizeof (double)) ; - - if (fabs (in) < 1e-30) - return ; - - if (in < 0.0) - { in *= -1.0 ; - out [0] |= 0x80 ; - } ; - - in = frexp (in, &exponent) ; - - exponent += 1022 ; - - out [0] |= (exponent >> 4) & 0x7F ; - out [1] |= (exponent << 4) & 0xF0 ; - - in *= 0x20000000 ; - mantissa = lrint (floor (in)) ; - - out [1] |= (mantissa >> 24) & 0xF ; - out [2] = (mantissa >> 16) & 0xFF ; - out [3] = (mantissa >> 8) & 0xFF ; - out [4] = mantissa & 0xFF ; - - in = fmod (in, 1.0) ; - in *= 0x1000000 ; - mantissa = lrint (floor (in)) ; - - out [5] = (mantissa >> 16) & 0xFF ; - out [6] = (mantissa >> 8) & 0xFF ; - out [7] = mantissa & 0xFF ; - - return ; -} /* double64_be_write */ - -void -double64_le_write (double in, unsigned char *out) -{ int exponent, mantissa ; - - memset (out, 0, sizeof (double)) ; - - if (fabs (in) < 1e-30) - return ; - - if (in < 0.0) - { in *= -1.0 ; - out [7] |= 0x80 ; - } ; - - in = frexp (in, &exponent) ; - - exponent += 1022 ; - - out [7] |= (exponent >> 4) & 0x7F ; - out [6] |= (exponent << 4) & 0xF0 ; - - in *= 0x20000000 ; - mantissa = lrint (floor (in)) ; - - out [6] |= (mantissa >> 24) & 0xF ; - out [5] = (mantissa >> 16) & 0xFF ; - out [4] = (mantissa >> 8) & 0xFF ; - out [3] = mantissa & 0xFF ; - - in = fmod (in, 1.0) ; - in *= 0x1000000 ; - mantissa = lrint (floor (in)) ; - - out [2] = (mantissa >> 16) & 0xFF ; - out [1] = (mantissa >> 8) & 0xFF ; - out [0] = mantissa & 0xFF ; - - return ; -} /* double64_le_write */ - -/*============================================================================================== -** Private functions. -*/ - -static void -double64_peak_update (SF_PRIVATE *psf, const double *buffer, int count, sf_count_t indx) -{ int chan ; - int k, position ; - float fmaxval ; - - for (chan = 0 ; chan < psf->sf.channels ; chan++) - { fmaxval = fabs (buffer [chan]) ; - position = 0 ; - for (k = chan ; k < count ; k += psf->sf.channels) - if (fmaxval < fabs (buffer [k])) - { fmaxval = fabs (buffer [k]) ; - position = k ; - } ; - - if (fmaxval > psf->peak_info->peaks [chan].value) - { psf->peak_info->peaks [chan].value = fmaxval ; - psf->peak_info->peaks [chan].position = psf->write_current + indx + (position / psf->sf.channels) ; - } ; - } ; - - return ; -} /* double64_peak_update */ - -static int -double64_get_capability (SF_PRIVATE *psf) -{ union - { double d ; - int i [2] ; - unsigned char c [8] ; - } data ; - - data.d = 1.234567890123456789 ; /* Some abitrary value. */ - - if (! psf->ieee_replace) - { /* If this test is true ints and floats are compatible and little endian. */ - if (data.i [0] == 0x428c59fb && data.i [1] == 0x3ff3c0ca && - data.c [0] == 0xfb && data.c [2] == 0x8c && data.c [4] == 0xca && data.c [6] == 0xf3) - return DOUBLE_CAN_RW_LE ; - - /* If this test is true ints and floats are compatible and big endian. */ - if ((data.i [0] == 0x3ff3c0ca && data.i [1] == 0x428c59fb) && - (data.c [0] == 0x3f && data.c [2] == 0xc0 && data.c [4] == 0x42 && data.c [6] == 0x59)) - return DOUBLE_CAN_RW_BE ; - } ; - - /* Doubles are broken. Don't expect reading or writing to be fast. */ - psf_log_printf (psf, "Using IEEE replacement code for double.\n") ; - - return (CPU_IS_LITTLE_ENDIAN) ? DOUBLE_BROKEN_LE : DOUBLE_BROKEN_BE ; -} /* double64_get_capability */ - -/*======================================================================================= -*/ - -static inline void -d2s_array (const double *src, int count, short *dest, double scale) -{ while (--count >= 0) - { dest [count] = lrint (scale * src [count]) ; - } ; -} /* d2s_array */ - -static inline void -d2i_array (const double *src, int count, int *dest, double scale) -{ while (--count >= 0) - { dest [count] = lrint (scale * src [count]) ; - } ; -} /* d2i_array */ - -static inline void -d2f_array (const double *src, int count, float *dest) -{ while (--count >= 0) - { dest [count] = src [count] ; - } ; -} /* d2f_array */ - -static inline void -s2d_array (const short *src, double *dest, int count) -{ while (--count >= 0) - { dest [count] = src [count] ; - } ; -} /* s2d_array */ - -static inline void -i2d_array (const int *src, double *dest, int count) -{ while (--count >= 0) - { dest [count] = src [count] ; - } ; -} /* i2d_array */ - -static inline void -f2d_array (const float *src, double *dest, int count) -{ while (--count >= 0) - { dest [count] = src [count] ; - } ; -} /* f2d_array */ - -/*---------------------------------------------------------------------------------------------- -*/ - -static sf_count_t -host_read_d2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - double scale ; - - bufferlen = ARRAY_LEN (psf->u.dbuf) ; - scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFF / psf->float_max ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.dbuf, sizeof (double), bufferlen, psf) ; - - if (psf->float_endswap == SF_TRUE) - endswap_double_array (psf->u.dbuf, readcount) ; - - d2s_array (psf->u.dbuf, readcount, ptr + total, scale) ; - total += readcount ; - len -= readcount ; - if (readcount < bufferlen) - break ; - } ; - - return total ; -} /* host_read_d2s */ - -static sf_count_t -host_read_d2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - double scale ; - bufferlen = ARRAY_LEN (psf->u.dbuf) ; - scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFFFFFF / psf->float_max ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.dbuf, sizeof (double), bufferlen, psf) ; - - if (psf->float_endswap == SF_TRUE) - endswap_double_array (psf->u.dbuf, bufferlen) ; - - d2i_array (psf->u.dbuf, readcount, ptr + total, scale) ; - total += readcount ; - len -= readcount ; - if (readcount < bufferlen) - break ; - } ; - - return total ; -} /* host_read_d2i */ - -static sf_count_t -host_read_d2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.dbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.dbuf, sizeof (double), bufferlen, psf) ; - - if (psf->float_endswap == SF_TRUE) - endswap_double_array (psf->u.dbuf, bufferlen) ; - - d2f_array (psf->u.dbuf, readcount, ptr + total) ; - total += readcount ; - len -= readcount ; - if (readcount < bufferlen) - break ; - } ; - - return total ; -} /* host_read_d2f */ - -static sf_count_t -host_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ int bufferlen ; - sf_count_t readcount, total = 0 ; - - readcount = psf_fread (ptr, sizeof (double), len, psf) ; - - if (psf->float_endswap != SF_TRUE) - return readcount ; - - /* If the read length was sensible, endswap output in one go. */ - if (readcount < SENSIBLE_LEN) - { endswap_double_array (ptr, readcount) ; - return readcount ; - } ; - - bufferlen = SENSIBLE_LEN ; - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - - endswap_double_array (ptr + total, bufferlen) ; - - total += bufferlen ; - len -= bufferlen ; - } ; - - return total ; -} /* host_read_d */ - -static sf_count_t -host_write_s2d (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.dbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - - s2d_array (ptr + total, psf->u.dbuf, bufferlen) ; - - if (psf->peak_info) - double64_peak_update (psf, psf->u.dbuf, bufferlen, total / psf->sf.channels) ; - - if (psf->float_endswap == SF_TRUE) - endswap_double_array (psf->u.dbuf, bufferlen) ; - - writecount = psf_fwrite (psf->u.dbuf, sizeof (double), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* host_write_s2d */ - -static sf_count_t -host_write_i2d (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.dbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - i2d_array (ptr + total, psf->u.dbuf, bufferlen) ; - - if (psf->peak_info) - double64_peak_update (psf, psf->u.dbuf, bufferlen, total / psf->sf.channels) ; - - if (psf->float_endswap == SF_TRUE) - endswap_double_array (psf->u.dbuf, bufferlen) ; - - writecount = psf_fwrite (psf->u.dbuf, sizeof (double), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* host_write_i2d */ - -static sf_count_t -host_write_f2d (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.dbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - f2d_array (ptr + total, psf->u.dbuf, bufferlen) ; - - if (psf->peak_info) - double64_peak_update (psf, psf->u.dbuf, bufferlen, total / psf->sf.channels) ; - - if (psf->float_endswap == SF_TRUE) - endswap_double_array (psf->u.dbuf, bufferlen) ; - - writecount = psf_fwrite (psf->u.dbuf, sizeof (double), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* host_write_f2d */ - -static sf_count_t -host_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - if (psf->peak_info) - double64_peak_update (psf, ptr, len, 0) ; - - if (psf->float_endswap != SF_TRUE) - return psf_fwrite (ptr, sizeof (double), len, psf) ; - - bufferlen = ARRAY_LEN (psf->u.dbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - - endswap_double_copy (psf->u.dbuf, ptr + total, bufferlen) ; - - writecount = psf_fwrite (psf->u.dbuf, sizeof (double), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* host_write_d */ - -/*======================================================================================= -*/ - -static sf_count_t -replace_read_d2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - double scale ; - - bufferlen = ARRAY_LEN (psf->u.dbuf) ; - scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFF / psf->float_max ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.dbuf, sizeof (double), bufferlen, psf) ; - - if (psf->float_endswap == SF_TRUE) - endswap_double_array (psf->u.dbuf, bufferlen) ; - - d2bd_read (psf->u.dbuf, bufferlen) ; - - d2s_array (psf->u.dbuf, readcount, ptr + total, scale) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* replace_read_d2s */ - -static sf_count_t -replace_read_d2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - double scale ; - - bufferlen = ARRAY_LEN (psf->u.dbuf) ; - scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFFFFFF / psf->float_max ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.dbuf, sizeof (double), bufferlen, psf) ; - - if (psf->float_endswap == SF_TRUE) - endswap_double_array (psf->u.dbuf, bufferlen) ; - - d2bd_read (psf->u.dbuf, bufferlen) ; - - d2i_array (psf->u.dbuf, readcount, ptr + total, scale) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* replace_read_d2i */ - -static sf_count_t -replace_read_d2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.dbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.dbuf, sizeof (double), bufferlen, psf) ; - - if (psf->float_endswap == SF_TRUE) - endswap_double_array (psf->u.dbuf, bufferlen) ; - - d2bd_read (psf->u.dbuf, bufferlen) ; - - memcpy (ptr + total, psf->u.dbuf, bufferlen * sizeof (double)) ; - - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* replace_read_d2f */ - -static sf_count_t -replace_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - /* FIXME : This is probably nowhere near optimal. */ - bufferlen = ARRAY_LEN (psf->u.dbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.dbuf, sizeof (double), bufferlen, psf) ; - - if (psf->float_endswap == SF_TRUE) - endswap_double_array (psf->u.dbuf, readcount) ; - - d2bd_read (psf->u.dbuf, readcount) ; - - memcpy (ptr + total, psf->u.dbuf, readcount * sizeof (double)) ; - - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* replace_read_d */ - -static sf_count_t -replace_write_s2d (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.dbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - s2d_array (ptr + total, psf->u.dbuf, bufferlen) ; - - if (psf->peak_info) - double64_peak_update (psf, psf->u.dbuf, bufferlen, total / psf->sf.channels) ; - - bd2d_write (psf->u.dbuf, bufferlen) ; - - if (psf->float_endswap == SF_TRUE) - endswap_double_array (psf->u.dbuf, bufferlen) ; - - writecount = psf_fwrite (psf->u.dbuf, sizeof (double), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* replace_write_s2d */ - -static sf_count_t -replace_write_i2d (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.dbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - i2d_array (ptr + total, psf->u.dbuf, bufferlen) ; - - if (psf->peak_info) - double64_peak_update (psf, psf->u.dbuf, bufferlen, total / psf->sf.channels) ; - - bd2d_write (psf->u.dbuf, bufferlen) ; - - if (psf->float_endswap == SF_TRUE) - endswap_double_array (psf->u.dbuf, bufferlen) ; - - writecount = psf_fwrite (psf->u.dbuf, sizeof (double), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* replace_write_i2d */ - -static sf_count_t -replace_write_f2d (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.dbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - f2d_array (ptr + total, psf->u.dbuf, bufferlen) ; - - bd2d_write (psf->u.dbuf, bufferlen) ; - - if (psf->float_endswap == SF_TRUE) - endswap_double_array (psf->u.dbuf, bufferlen) ; - - writecount = psf_fwrite (psf->u.dbuf, sizeof (double), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* replace_write_f2d */ - -static sf_count_t -replace_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - /* FIXME : This is probably nowhere near optimal. */ - if (psf->peak_info) - double64_peak_update (psf, ptr, len, 0) ; - - bufferlen = ARRAY_LEN (psf->u.dbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - - memcpy (psf->u.dbuf, ptr + total, bufferlen * sizeof (double)) ; - - bd2d_write (psf->u.dbuf, bufferlen) ; - - if (psf->float_endswap == SF_TRUE) - endswap_double_array (psf->u.dbuf, bufferlen) ; - - writecount = psf_fwrite (psf->u.dbuf, sizeof (double), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* replace_write_d */ - -/*---------------------------------------------------------------------------------------------- -*/ - -static void -d2bd_read (double *buffer, int count) -{ while (--count >= 0) - { buffer [count] = DOUBLE64_READ ((unsigned char *) (buffer + count)) ; - } ; -} /* d2bd_read */ - -static void -bd2d_write (double *buffer, int count) -{ while (--count >= 0) - { DOUBLE64_WRITE (buffer [count], (unsigned char*) (buffer + count)) ; - } ; -} /* bd2d_write */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 4ee243b7-8c7a-469b-869c-e9aa0ee3b77f -*/ diff --git a/libs/libsndfile/src/dwd.c b/libs/libsndfile/src/dwd.c deleted file mode 100644 index a33bae0c8e..0000000000 --- a/libs/libsndfile/src/dwd.c +++ /dev/null @@ -1,210 +0,0 @@ -/* -** Copyright (C) 2002-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -#if (ENABLE_EXPERIMENTAL_CODE == 0) - -int -dwd_open (SF_PRIVATE *psf) -{ if (psf) - return SFE_UNIMPLEMENTED ; - return (psf && 0) ; -} /* dwd_open */ - -#else - -/*------------------------------------------------------------------------------ -** Macros to handle big/little endian issues. -*/ - -#define SFE_DWD_NO_DWD 1666 -#define SFE_DWD_BAND_BIT_WIDTH 1667 -#define SFE_DWD_COMPRESSION 1668 - -#define DWD_IDENTIFIER "DiamondWare Digitized\n\0\x1a" -#define DWD_IDENTIFIER_LEN 24 - -#define DWD_HEADER_LEN 57 - -/*------------------------------------------------------------------------------ -** Typedefs. -*/ - -/*------------------------------------------------------------------------------ -** Private static functions. -*/ - -static int dwd_read_header (SF_PRIVATE *psf) ; - -static int dwd_close (SF_PRIVATE *psf) ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -dwd_open (SF_PRIVATE *psf) -{ int subformat, error = 0 ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = dwd_read_header (psf))) - return error ; - } ; - - if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_DWD) - return SFE_BAD_OPEN_FORMAT ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { - /*-psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ; - if (CPU_IS_LITTLE_ENDIAN && psf->endian == SF_ENDIAN_CPU) - psf->endian = SF_ENDIAN_LITTLE ; - else if (psf->endian != SF_ENDIAN_LITTLE) - psf->endian = SF_ENDIAN_BIG ; - - if (! (encoding = dwd_write_header (psf, SF_FALSE))) - return psf->error ; - - psf->write_header = dwd_write_header ; - -*/ - } ; - - psf->container_close = dwd_close ; - - /*-psf->blockwidth = psf->bytewidth * psf->sf.channels ;-*/ - - return error ; -} /* dwd_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -dwd_close (SF_PRIVATE *psf) -{ - psf = psf ; - - return 0 ; -} /* dwd_close */ - -/* This struct contains all the fields of interest om the DWD header, but does not -** do so in the same order and layout as the actual file, header. -** No assumptions are made about the packing of this struct. -*/ -typedef struct -{ unsigned char major, minor, compression, channels, bitwidth ; - unsigned short srate, maxval ; - unsigned int id, datalen, frames, offset ; -} DWD_HEADER ; - -static int -dwd_read_header (SF_PRIVATE *psf) -{ DWD_HEADER dwdh ; - - memset (psf->u.cbuf, 0, sizeof (psf->u.cbuf)) ; - /* Set position to start of file to begin reading header. */ - psf_binheader_readf (psf, "pb", 0, psf->u.cbuf, DWD_IDENTIFIER_LEN) ; - - if (memcmp (psf->u.cbuf, DWD_IDENTIFIER, DWD_IDENTIFIER_LEN) != 0) - return SFE_DWD_NO_DWD ; - - psf_log_printf (psf, "Read only : DiamondWare Digitized (.dwd)\n", psf->u.cbuf) ; - - psf_binheader_readf (psf, "11", &dwdh.major, &dwdh.minor) ; - psf_binheader_readf (psf, "e4j1", &dwdh.id, 1, &dwdh.compression) ; - psf_binheader_readf (psf, "e211", &dwdh.srate, &dwdh.channels, &dwdh.bitwidth) ; - psf_binheader_readf (psf, "e24", &dwdh.maxval, &dwdh.datalen) ; - psf_binheader_readf (psf, "e44", &dwdh.frames, &dwdh.offset) ; - - psf_log_printf (psf, " Version Major : %d\n Version Minor : %d\n Unique ID : %08X\n", - dwdh.major, dwdh.minor, dwdh.id) ; - psf_log_printf (psf, " Compression : %d => ", dwdh.compression) ; - - if (dwdh.compression != 0) - { psf_log_printf (psf, "Unsupported compression\n") ; - return SFE_DWD_COMPRESSION ; - } - else - psf_log_printf (psf, "None\n") ; - - psf_log_printf (psf, " Sample Rate : %d\n Channels : %d\n" - " Bit Width : %d\n", - dwdh.srate, dwdh.channels, dwdh.bitwidth) ; - - switch (dwdh.bitwidth) - { case 8 : - psf->sf.format = SF_FORMAT_DWD | SF_FORMAT_PCM_S8 ; - psf->bytewidth = 1 ; - break ; - - case 16 : - psf->sf.format = SF_FORMAT_DWD | SF_FORMAT_PCM_16 ; - psf->bytewidth = 2 ; - break ; - - default : - psf_log_printf (psf, "*** Bad bit width %d\n", dwdh.bitwidth) ; - return SFE_DWD_BAND_BIT_WIDTH ; - } ; - - if (psf->filelength != dwdh.offset + dwdh.datalen) - { psf_log_printf (psf, " Data Length : %d (should be %D)\n", dwdh.datalen, psf->filelength - dwdh.offset) ; - dwdh.datalen = (unsigned int) (psf->filelength - dwdh.offset) ; - } - else - psf_log_printf (psf, " Data Length : %d\n", dwdh.datalen) ; - - psf_log_printf (psf, " Max Value : %d\n", dwdh.maxval) ; - psf_log_printf (psf, " Frames : %d\n", dwdh.frames) ; - psf_log_printf (psf, " Data Offset : %d\n", dwdh.offset) ; - - psf->datalength = dwdh.datalen ; - psf->dataoffset = dwdh.offset ; - - psf->endian = SF_ENDIAN_LITTLE ; - - psf->sf.samplerate = dwdh.srate ; - psf->sf.channels = dwdh.channels ; - psf->sf.sections = 1 ; - - return pcm_init (psf) ; -} /* dwd_read_header */ - -/*------------------------------------------------------------------------------ -*/ - -#endif -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: a5e1d2a6-a840-4039-a0e7-e1a43eb05a4f -*/ diff --git a/libs/libsndfile/src/dwvw.c b/libs/libsndfile/src/dwvw.c deleted file mode 100644 index dc9ae774bb..0000000000 --- a/libs/libsndfile/src/dwvw.c +++ /dev/null @@ -1,671 +0,0 @@ -/* -** Copyright (C) 2002-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -/*=========================================================================== -** Delta Word Variable Width -** -** This decoder and encoder were implemented using information found in this -** document : http://home.swbell.net/rubywand/R011SNDFMTS.TXT -** -** According to the document, the algorithm "was invented 1991 by Magnus -** Lidstrom and is copyright 1993 by NuEdge Development". -*/ - -#include "sfconfig.h" - -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "float_cast.h" -#include "common.h" - -typedef struct -{ int dwm_maxsize, bit_width, max_delta, span ; - int samplecount ; - int bit_count, bits, last_delta_width, last_sample ; - struct - { int index, end ; - unsigned char buffer [256] ; - } b ; -} DWVW_PRIVATE ; - -/*============================================================================================ -*/ - -static sf_count_t dwvw_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t dwvw_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t dwvw_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t dwvw_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t dwvw_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t dwvw_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t dwvw_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t dwvw_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -static sf_count_t dwvw_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ; -static int dwvw_close (SF_PRIVATE *psf) ; - -static int dwvw_decode_data (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int *ptr, int len) ; -static int dwvw_decode_load_bits (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int bit_count) ; - -static int dwvw_encode_data (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, const int *ptr, int len) ; -static void dwvw_encode_store_bits (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int data, int new_bits) ; -static void dwvw_read_reset (DWVW_PRIVATE *pdwvw) ; - -/*============================================================================================ -** DWVW initialisation function. -*/ - -int -dwvw_init (SF_PRIVATE *psf, int bitwidth) -{ DWVW_PRIVATE *pdwvw ; - - if (psf->fdata != NULL) - { psf_log_printf (psf, "*** psf->fdata is not NULL.\n") ; - return SFE_INTERNAL ; - } ; - - if (bitwidth > 24) - return SFE_DWVW_BAD_BITWIDTH ; - - if (psf->mode == SFM_RDWR) - return SFE_BAD_MODE_RW ; - - if ((pdwvw = calloc (1, sizeof (DWVW_PRIVATE))) == NULL) - return SFE_MALLOC_FAILED ; - - psf->fdata = (void*) pdwvw ; - - pdwvw->bit_width = bitwidth ; - pdwvw->dwm_maxsize = bitwidth / 2 ; - pdwvw->max_delta = 1 << (bitwidth - 1) ; - pdwvw->span = 1 << bitwidth ; - - dwvw_read_reset (pdwvw) ; - - if (psf->mode == SFM_READ) - { psf->read_short = dwvw_read_s ; - psf->read_int = dwvw_read_i ; - psf->read_float = dwvw_read_f ; - psf->read_double = dwvw_read_d ; - } ; - - if (psf->mode == SFM_WRITE) - { psf->write_short = dwvw_write_s ; - psf->write_int = dwvw_write_i ; - psf->write_float = dwvw_write_f ; - psf->write_double = dwvw_write_d ; - } ; - - psf->codec_close = dwvw_close ; - psf->seek = dwvw_seek ; - - /* FIXME : This is bogus. */ - psf->sf.frames = SF_COUNT_MAX ; - psf->datalength = psf->sf.frames ; - /* EMXIF : This is bogus. */ - - return 0 ; -} /* dwvw_init */ - -/*-------------------------------------------------------------------------------------------- -*/ - -static int -dwvw_close (SF_PRIVATE *psf) -{ DWVW_PRIVATE *pdwvw ; - - if (psf->fdata == NULL) - return 0 ; - pdwvw = (DWVW_PRIVATE*) psf->fdata ; - - if (psf->mode == SFM_WRITE) - { static int last_values [12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ; - - /* Write 8 zero samples to fully flush output. */ - dwvw_encode_data (psf, pdwvw, last_values, 12) ; - - /* Write the last buffer worth of data to disk. */ - psf_fwrite (pdwvw->b.buffer, 1, pdwvw->b.index, psf) ; - - if (psf->write_header) - psf->write_header (psf, SF_TRUE) ; - } ; - - return 0 ; -} /* dwvw_close */ - -static sf_count_t -dwvw_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) -{ DWVW_PRIVATE *pdwvw ; - - mode = mode ; - - if (! psf->fdata) - { psf->error = SFE_INTERNAL ; - return PSF_SEEK_ERROR ; - } ; - - pdwvw = (DWVW_PRIVATE*) psf->fdata ; - - if (offset == 0) - { psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - dwvw_read_reset (pdwvw) ; - return 0 ; - } ; - - psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; -} /* dwvw_seek */ - - -/*============================================================================== -*/ - -static sf_count_t -dwvw_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ DWVW_PRIVATE *pdwvw ; - int *iptr ; - int k, bufferlen, readcount = 0, count ; - sf_count_t total = 0 ; - - if (! psf->fdata) - return 0 ; - pdwvw = (DWVW_PRIVATE*) psf->fdata ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = dwvw_decode_data (psf, pdwvw, iptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = iptr [k] >> 16 ; - - total += count ; - len -= readcount ; - if (count != readcount) - break ; - } ; - - return total ; -} /* dwvw_read_s */ - -static sf_count_t -dwvw_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ DWVW_PRIVATE *pdwvw ; - int readcount, count ; - sf_count_t total = 0 ; - - if (! psf->fdata) - return 0 ; - pdwvw = (DWVW_PRIVATE*) psf->fdata ; - - while (len > 0) - { readcount = (len > 0x10000000) ? 0x10000000 : (int) len ; - - count = dwvw_decode_data (psf, pdwvw, ptr, readcount) ; - - total += count ; - len -= count ; - - if (count != readcount) - break ; - } ; - - return total ; -} /* dwvw_read_i */ - -static sf_count_t -dwvw_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ DWVW_PRIVATE *pdwvw ; - int *iptr ; - int k, bufferlen, readcount = 0, count ; - sf_count_t total = 0 ; - float normfact ; - - if (! psf->fdata) - return 0 ; - pdwvw = (DWVW_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80000000) : 1.0 ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = dwvw_decode_data (psf, pdwvw, iptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = normfact * (float) (iptr [k]) ; - - total += count ; - len -= readcount ; - if (count != readcount) - break ; - } ; - - return total ; -} /* dwvw_read_f */ - -static sf_count_t -dwvw_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ DWVW_PRIVATE *pdwvw ; - int *iptr ; - int k, bufferlen, readcount = 0, count ; - sf_count_t total = 0 ; - double normfact ; - - if (! psf->fdata) - return 0 ; - pdwvw = (DWVW_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80000000) : 1.0 ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = dwvw_decode_data (psf, pdwvw, iptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = normfact * (double) (iptr [k]) ; - - total += count ; - len -= readcount ; - if (count != readcount) - break ; - } ; - - return total ; -} /* dwvw_read_d */ - -static int -dwvw_decode_data (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int *ptr, int len) -{ int count ; - int delta_width_modifier, delta_width, delta_negative, delta, sample ; - - /* Restore state from last decode call. */ - delta_width = pdwvw->last_delta_width ; - sample = pdwvw->last_sample ; - - for (count = 0 ; count < len ; count++) - { /* If bit_count parameter is zero get the delta_width_modifier. */ - delta_width_modifier = dwvw_decode_load_bits (psf, pdwvw, -1) ; - - /* Check for end of input bit stream. Break loop if end. */ - if (delta_width_modifier < 0) - break ; - - if (delta_width_modifier && dwvw_decode_load_bits (psf, pdwvw, 1)) - delta_width_modifier = - delta_width_modifier ; - - /* Calculate the current word width. */ - delta_width = (delta_width + delta_width_modifier + pdwvw->bit_width) % pdwvw->bit_width ; - - /* Load the delta. */ - delta = 0 ; - if (delta_width) - { delta = dwvw_decode_load_bits (psf, pdwvw, delta_width - 1) | (1 << (delta_width - 1)) ; - delta_negative = dwvw_decode_load_bits (psf, pdwvw, 1) ; - if (delta == pdwvw->max_delta - 1) - delta += dwvw_decode_load_bits (psf, pdwvw, 1) ; - if (delta_negative) - delta = -delta ; - } ; - - /* Calculate the sample */ - sample += delta ; - - if (sample >= pdwvw->max_delta) - sample -= pdwvw->span ; - else if (sample < - pdwvw->max_delta) - sample += pdwvw->span ; - - /* Store the sample justifying to the most significant bit. */ - ptr [count] = sample << (32 - pdwvw->bit_width) ; - - if (pdwvw->b.end == 0 && pdwvw->bit_count == 0) - break ; - } ; - - pdwvw->last_delta_width = delta_width ; - pdwvw->last_sample = sample ; - - pdwvw->samplecount += count ; - - return count ; -} /* dwvw_decode_data */ - -static int -dwvw_decode_load_bits (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int bit_count) -{ int output = 0, get_dwm = SF_FALSE ; - - /* - ** Depending on the value of parameter bit_count, either get the - ** required number of bits (ie bit_count > 0) or the - ** delta_width_modifier (otherwise). - */ - - if (bit_count < 0) - { get_dwm = SF_TRUE ; - /* modify bit_count to ensure we have enought bits for finding dwm. */ - bit_count = pdwvw->dwm_maxsize ; - } ; - - /* Load bits in bit reseviour. */ - while (pdwvw->bit_count < bit_count) - { if (pdwvw->b.index >= pdwvw->b.end) - { pdwvw->b.end = psf_fread (pdwvw->b.buffer, 1, sizeof (pdwvw->b.buffer), psf) ; - pdwvw->b.index = 0 ; - } ; - - /* Check for end of input stream. */ - if (bit_count < 8 && pdwvw->b.end == 0) - return -1 ; - - pdwvw->bits = (pdwvw->bits << 8) ; - - if (pdwvw->b.index < pdwvw->b.end) - { pdwvw->bits |= pdwvw->b.buffer [pdwvw->b.index] ; - pdwvw->b.index ++ ; - } ; - pdwvw->bit_count += 8 ; - } ; - - /* If asked to get bits do so. */ - if (! get_dwm) - { output = (pdwvw->bits >> (pdwvw->bit_count - bit_count)) & ((1 << bit_count) - 1) ; - pdwvw->bit_count -= bit_count ; - return output ; - } ; - - /* Otherwise must have been asked to get delta_width_modifier. */ - while (output < (pdwvw->dwm_maxsize)) - { pdwvw->bit_count -= 1 ; - if (pdwvw->bits & (1 << pdwvw->bit_count)) - break ; - output += 1 ; - } ; - - return output ; -} /* dwvw_decode_load_bits */ - -static void -dwvw_read_reset (DWVW_PRIVATE *pdwvw) -{ pdwvw->samplecount = 0 ; - pdwvw->b.index = 0 ; - pdwvw->b.end = 0 ; - pdwvw->bit_count = 0 ; - pdwvw->bits = 0 ; - pdwvw->last_delta_width = 0 ; - pdwvw->last_sample = 0 ; -} /* dwvw_read_reset */ - -static void -dwvw_encode_store_bits (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int data, int new_bits) -{ int byte ; - - /* Shift the bits into the resevoir. */ - pdwvw->bits = (pdwvw->bits << new_bits) | (data & ((1 << new_bits) - 1)) ; - pdwvw->bit_count += new_bits ; - - /* Transfer bit to buffer. */ - while (pdwvw->bit_count >= 8) - { byte = pdwvw->bits >> (pdwvw->bit_count - 8) ; - pdwvw->bit_count -= 8 ; - pdwvw->b.buffer [pdwvw->b.index] = byte & 0xFF ; - pdwvw->b.index ++ ; - } ; - - if (pdwvw->b.index > SIGNED_SIZEOF (pdwvw->b.buffer) - 4) - { psf_fwrite (pdwvw->b.buffer, 1, pdwvw->b.index, psf) ; - pdwvw->b.index = 0 ; - } ; - - return ; -} /* dwvw_encode_store_bits */ - -#if 0 -/* Debigging routine. */ -static void -dump_bits (DWVW_PRIVATE *pdwvw) -{ int k, mask ; - - for (k = 0 ; k < 10 && k < pdwvw->b.index ; k++) - { mask = 0x80 ; - while (mask) - { putchar (mask & pdwvw->b.buffer [k] ? '1' : '0') ; - mask >>= 1 ; - } ; - putchar (' ') ; - } - - for (k = pdwvw->bit_count - 1 ; k >= 0 ; k --) - putchar (pdwvw->bits & (1 << k) ? '1' : '0') ; - - putchar ('\n') ; -} /* dump_bits */ -#endif - -#define HIGHEST_BIT(x,count) \ - { int y = x ; \ - (count) = 0 ; \ - while (y) \ - { (count) ++ ; \ - y >>= 1 ; \ - } ; \ - } ; - -static int -dwvw_encode_data (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, const int *ptr, int len) -{ int count ; - int delta_width_modifier, delta, delta_negative, delta_width, extra_bit ; - - for (count = 0 ; count < len ; count++) - { delta = (ptr [count] >> (32 - pdwvw->bit_width)) - pdwvw->last_sample ; - - /* Calculate extra_bit if needed. */ - extra_bit = -1 ; - delta_negative = 0 ; - if (delta < -pdwvw->max_delta) - delta = pdwvw->max_delta + (delta % pdwvw->max_delta) ; - else if (delta == -pdwvw->max_delta) - { extra_bit = 1 ; - delta_negative = 1 ; - delta = pdwvw->max_delta - 1 ; - } - else if (delta > pdwvw->max_delta) - { delta_negative = 1 ; - delta = pdwvw->span - delta ; - delta = abs (delta) ; - } - else if (delta == pdwvw->max_delta) - { extra_bit = 1 ; - delta = pdwvw->max_delta - 1 ; - } - else if (delta < 0) - { delta_negative = 1 ; - delta = abs (delta) ; - } ; - - if (delta == pdwvw->max_delta - 1 && extra_bit == -1) - extra_bit = 0 ; - - /* Find width in bits of delta */ - HIGHEST_BIT (delta, delta_width) ; - - /* Calculate the delta_width_modifier */ - delta_width_modifier = (delta_width - pdwvw->last_delta_width) % pdwvw->bit_width ; - if (delta_width_modifier > pdwvw->dwm_maxsize) - delta_width_modifier -= pdwvw->bit_width ; - if (delta_width_modifier < -pdwvw->dwm_maxsize) - delta_width_modifier += pdwvw->bit_width ; - - /* Write delta_width_modifier zeros, followed by terminating '1'. */ - dwvw_encode_store_bits (psf, pdwvw, 0, abs (delta_width_modifier)) ; - if (abs (delta_width_modifier) != pdwvw->dwm_maxsize) - dwvw_encode_store_bits (psf, pdwvw, 1, 1) ; - - /* Write delta_width_modifier sign. */ - if (delta_width_modifier < 0) - dwvw_encode_store_bits (psf, pdwvw, 1, 1) ; - if (delta_width_modifier > 0) - dwvw_encode_store_bits (psf, pdwvw, 0, 1) ; - - /* Write delta and delta sign bit. */ - if (delta_width) - { dwvw_encode_store_bits (psf, pdwvw, delta, abs (delta_width) - 1) ; - dwvw_encode_store_bits (psf, pdwvw, (delta_negative ? 1 : 0), 1) ; - } ; - - /* Write extra bit!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ - if (extra_bit >= 0) - dwvw_encode_store_bits (psf, pdwvw, extra_bit, 1) ; - - pdwvw->last_sample = ptr [count] >> (32 - pdwvw->bit_width) ; - pdwvw->last_delta_width = delta_width ; - } ; - - pdwvw->samplecount += count ; - - return count ; -} /* dwvw_encode_data */ - -static sf_count_t -dwvw_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ DWVW_PRIVATE *pdwvw ; - int *iptr ; - int k, bufferlen, writecount = 0, count ; - sf_count_t total = 0 ; - - if (! psf->fdata) - return 0 ; - pdwvw = (DWVW_PRIVATE*) psf->fdata ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - iptr [k] = ptr [total + k] << 16 ; - count = dwvw_encode_data (psf, pdwvw, iptr, writecount) ; - - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - - return total ; -} /* dwvw_write_s */ - -static sf_count_t -dwvw_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ DWVW_PRIVATE *pdwvw ; - int writecount, count ; - sf_count_t total = 0 ; - - if (! psf->fdata) - return 0 ; - pdwvw = (DWVW_PRIVATE*) psf->fdata ; - - while (len > 0) - { writecount = (len > 0x10000000) ? 0x10000000 : (int) len ; - - count = dwvw_encode_data (psf, pdwvw, ptr, writecount) ; - - total += count ; - len -= count ; - - if (count != writecount) - break ; - } ; - - return total ; -} /* dwvw_write_i */ - -static sf_count_t -dwvw_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ DWVW_PRIVATE *pdwvw ; - int *iptr ; - int k, bufferlen, writecount = 0, count ; - sf_count_t total = 0 ; - float normfact ; - - if (! psf->fdata) - return 0 ; - pdwvw = (DWVW_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFFFFFF) : 1.0 ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - iptr [k] = lrintf (normfact * ptr [total + k]) ; - count = dwvw_encode_data (psf, pdwvw, iptr, writecount) ; - - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - - return total ; -} /* dwvw_write_f */ - -static sf_count_t -dwvw_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ DWVW_PRIVATE *pdwvw ; - int *iptr ; - int k, bufferlen, writecount = 0, count ; - sf_count_t total = 0 ; - double normfact ; - - if (! psf->fdata) - return 0 ; - pdwvw = (DWVW_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFFFFFF) : 1.0 ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - iptr [k] = lrint (normfact * ptr [total + k]) ; - count = dwvw_encode_data (psf, pdwvw, iptr, writecount) ; - - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - - return total ; -} /* dwvw_write_d */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 1ca09552-b01f-4d7f-9bcf-612f834fe41d -*/ diff --git a/libs/libsndfile/src/file_io.c b/libs/libsndfile/src/file_io.c deleted file mode 100644 index d80e17d307..0000000000 --- a/libs/libsndfile/src/file_io.c +++ /dev/null @@ -1,1537 +0,0 @@ -/* -** Copyright (C) 2002-2005 Erik de Castro Lopo -** Copyright (C) 2003 Ross Bencina -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -/* -** The file is split into three sections as follows: -** - The top section (USE_WINDOWS_API == 0) for Linux, Unix and MacOSX -** systems (including Cygwin). -** - The middle section (USE_WINDOWS_API == 1) for microsoft windows -** (including MinGW) using the native windows API. -** - A legacy windows section which attempted to work around grevious -** bugs in microsoft's POSIX implementation. -*/ - -/* -** The header file sfconfig.h MUST be included before the others to ensure -** that large file support is enabled correctly on Unix systems. -*/ - -#include "sfconfig.h" - -#include -#include - -#if HAVE_UNISTD_H -#include -#endif - -#if (HAVE_DECL_S_IRGRP == 0) -#include -#endif - -#include -#include -#include -#include - -#include "sndfile.h" -#include "common.h" - -#define SENSIBLE_SIZE (0x40000000) - -static void psf_log_syserr (SF_PRIVATE *psf, int error) ; - -#if (USE_WINDOWS_API == 0) - -/*------------------------------------------------------------------------------ -** Win32 stuff at the bottom of the file. Unix and other sensible OSes here. -*/ - -static int psf_close_fd (int fd) ; -static int psf_open_fd (const char * path, int mode) ; -static sf_count_t psf_get_filelen_fd (int fd) ; - -int -psf_fopen (SF_PRIVATE *psf, const char *pathname, int open_mode) -{ - psf->error = 0 ; - psf->filedes = psf_open_fd (pathname, open_mode) ; - - if (psf->filedes == - SFE_BAD_OPEN_MODE) - { psf->error = SFE_BAD_OPEN_MODE ; - psf->filedes = -1 ; - return psf->error ; - } ; - - if (psf->filedes == -1) - psf_log_syserr (psf, errno) ; - - psf->mode = open_mode ; - - return psf->error ; -} /* psf_fopen */ - -int -psf_fclose (SF_PRIVATE *psf) -{ int retval ; - - if (psf->virtual_io) - return 0 ; - - if (psf->do_not_close_descriptor) - { psf->filedes = -1 ; - return 0 ; - } ; - - if ((retval = psf_close_fd (psf->filedes)) == -1) - psf_log_syserr (psf, errno) ; - - psf->filedes = -1 ; - - return retval ; -} /* psf_fclose */ - -int -psf_open_rsrc (SF_PRIVATE *psf, int open_mode) -{ - if (psf->rsrcdes > 0) - return 0 ; - - /* Test for MacOSX style resource fork on HPFS or HPFS+ filesystems. */ - LSF_SNPRINTF (psf->rsrcpath, sizeof (psf->rsrcpath), "%s/rsrc", psf->filepath) ; - psf->error = SFE_NO_ERROR ; - if ((psf->rsrcdes = psf_open_fd (psf->rsrcpath, open_mode)) >= 0) - { psf->rsrclength = psf_get_filelen_fd (psf->rsrcdes) ; - if (psf->rsrclength > 0 || (open_mode & SFM_WRITE)) - return SFE_NO_ERROR ; - psf_close_fd (psf->rsrcdes) ; - psf->rsrcdes = -1 ; - } ; - - if (psf->rsrcdes == - SFE_BAD_OPEN_MODE) - { psf->error = SFE_BAD_OPEN_MODE ; - return psf->error ; - } ; - - /* - ** Now try for a resource fork stored as a separate file in the same - ** directory, but preceded with a dot underscore. - */ - LSF_SNPRINTF (psf->rsrcpath, sizeof (psf->rsrcpath), "%s._%s", psf->directory, psf->filename) ; - psf->error = SFE_NO_ERROR ; - if ((psf->rsrcdes = psf_open_fd (psf->rsrcpath, open_mode)) >= 0) - { psf->rsrclength = psf_get_filelen_fd (psf->rsrcdes) ; - return SFE_NO_ERROR ; - } ; - - /* - ** Now try for a resource fork stored in a separate file in the - ** .AppleDouble/ directory. - */ - LSF_SNPRINTF (psf->rsrcpath, sizeof (psf->rsrcpath), "%s.AppleDouble/%s", psf->directory, psf->filename) ; - psf->error = SFE_NO_ERROR ; - if ((psf->rsrcdes = psf_open_fd (psf->rsrcpath, open_mode)) >= 0) - { psf->rsrclength = psf_get_filelen_fd (psf->rsrcdes) ; - return SFE_NO_ERROR ; - } ; - - /* No resource file found. */ - if (psf->rsrcdes == -1) - psf_log_syserr (psf, errno) ; - - psf->rsrcdes = -1 ; - - return psf->error ; -} /* psf_open_rsrc */ - -sf_count_t -psf_get_filelen (SF_PRIVATE *psf) -{ sf_count_t filelen ; - - if (psf->virtual_io) - return psf->vio.get_filelen (psf->vio_user_data) ; - - filelen = psf_get_filelen_fd (psf->filedes) ; - - if (filelen == -1) - { psf_log_syserr (psf, errno) ; - return (sf_count_t) -1 ; - } ; - - if (filelen == -SFE_BAD_STAT_SIZE) - { psf->error = SFE_BAD_STAT_SIZE ; - return (sf_count_t) -1 ; - } ; - - switch (psf->mode) - { case SFM_WRITE : - filelen = filelen - psf->fileoffset ; - break ; - - case SFM_READ : - if (psf->fileoffset > 0 && psf->filelength > 0) - filelen = psf->filelength ; - break ; - - case SFM_RDWR : - /* - ** Cannot open embedded files SFM_RDWR so we don't need to - ** subtract psf->fileoffset. We already have the answer we - ** need. - */ - break ; - - default : - /* Shouldn't be here, so return error. */ - filelen = -1 ; - } ; - - return filelen ; -} /* psf_get_filelen */ - -int -psf_close_rsrc (SF_PRIVATE *psf) -{ - if (psf->rsrcdes >= 0) - psf_close_fd (psf->rsrcdes) ; - psf->rsrcdes = -1 ; - return 0 ; -} /* psf_close_rsrc */ - -int -psf_set_stdio (SF_PRIVATE *psf, int mode) -{ int error = 0 ; - - switch (mode) - { case SFM_RDWR : - error = SFE_OPEN_PIPE_RDWR ; - break ; - - case SFM_READ : - psf->filedes = 0 ; - break ; - - case SFM_WRITE : - psf->filedes = 1 ; - break ; - - default : - error = SFE_BAD_OPEN_MODE ; - break ; - } ; - psf->filelength = 0 ; - - return error ; -} /* psf_set_stdio */ - -void -psf_set_file (SF_PRIVATE *psf, int fd) -{ psf->filedes = fd ; -} /* psf_set_file */ - -int -psf_file_valid (SF_PRIVATE *psf) -{ return (psf->filedes >= 0) ? SF_TRUE : SF_FALSE ; -} /* psf_set_file */ - -sf_count_t -psf_fseek (SF_PRIVATE *psf, sf_count_t offset, int whence) -{ sf_count_t new_position ; - - if (psf->virtual_io) - return psf->vio.seek (offset, whence, psf->vio_user_data) ; - - switch (whence) - { case SEEK_SET : - offset += psf->fileoffset ; - break ; - - case SEEK_END : - if (psf->mode == SFM_WRITE) - { new_position = lseek (psf->filedes, offset, whence) ; - - if (new_position < 0) - psf_log_syserr (psf, errno) ; - - return new_position - psf->fileoffset ; - } ; - - /* Transform SEEK_END into a SEEK_SET, ie find the file - ** length add the requested offset (should be <= 0) to - ** get the offset wrt the start of file. - */ - whence = SEEK_SET ; - offset = lseek (psf->filedes, 0, SEEK_END) + offset ; - break ; - - default : - /* No need to do anything about SEEK_CUR. */ - break ; - } ; - - new_position = lseek (psf->filedes, offset, whence) ; - - if (new_position < 0) - psf_log_syserr (psf, errno) ; - - new_position -= psf->fileoffset ; - - return new_position ; -} /* psf_fseek */ - -sf_count_t -psf_fread (void *ptr, sf_count_t bytes, sf_count_t items, SF_PRIVATE *psf) -{ sf_count_t total = 0 ; - ssize_t count ; - - if (psf->virtual_io) - return psf->vio.read (ptr, bytes*items, psf->vio_user_data) / bytes ; - - items *= bytes ; - - /* Do this check after the multiplication above. */ - if (items <= 0) - return 0 ; - - while (items > 0) - { /* Break the read down to a sensible size. */ - count = (items > SENSIBLE_SIZE) ? SENSIBLE_SIZE : (ssize_t) items ; - - count = read (psf->filedes, ((char*) ptr) + total, (size_t) count) ; - - if (count == -1) - { if (errno == EINTR) - continue ; - - psf_log_syserr (psf, errno) ; - break ; - } ; - - if (count == 0) - break ; - - total += count ; - items -= count ; - } ; - - if (psf->is_pipe) - psf->pipeoffset += total ; - - return total / bytes ; -} /* psf_fread */ - -sf_count_t -psf_fwrite (const void *ptr, sf_count_t bytes, sf_count_t items, SF_PRIVATE *psf) -{ sf_count_t total = 0 ; - ssize_t count ; - - if (psf->virtual_io) - return psf->vio.write (ptr, bytes*items, psf->vio_user_data) / bytes ; - - items *= bytes ; - - /* Do this check after the multiplication above. */ - if (items <= 0) - return 0 ; - - while (items > 0) - { /* Break the writes down to a sensible size. */ - count = (items > SENSIBLE_SIZE) ? SENSIBLE_SIZE : items ; - - count = write (psf->filedes, ((const char*) ptr) + total, count) ; - - if (count == -1) - { if (errno == EINTR) - continue ; - - psf_log_syserr (psf, errno) ; - break ; - } ; - - if (count == 0) - break ; - - total += count ; - items -= count ; - } ; - - if (psf->is_pipe) - psf->pipeoffset += total ; - - return total / bytes ; -} /* psf_fwrite */ - -sf_count_t -psf_ftell (SF_PRIVATE *psf) -{ sf_count_t pos ; - - if (psf->virtual_io) - return psf->vio.tell (psf->vio_user_data) ; - - if (psf->is_pipe) - return psf->pipeoffset ; - - pos = lseek (psf->filedes, 0, SEEK_CUR) ; - - if (pos == ((sf_count_t) -1)) - { psf_log_syserr (psf, errno) ; - return -1 ; - } ; - - return pos - psf->fileoffset ; -} /* psf_ftell */ - -static int -psf_close_fd (int fd) -{ int retval ; - - while ((retval = close (fd)) == -1 && errno == EINTR) - /* Do nothing. */ ; - - return retval ; -} /* psf_close_fd */ - -sf_count_t -psf_fgets (char *buffer, sf_count_t bufsize, SF_PRIVATE *psf) -{ sf_count_t k = 0 ; - sf_count_t count ; - - while (k < bufsize - 1) - { count = read (psf->filedes, &(buffer [k]), 1) ; - - if (count == -1) - { if (errno == EINTR) - continue ; - - psf_log_syserr (psf, errno) ; - break ; - } ; - - if (count == 0 || buffer [k++] == '\n') - break ; - } ; - - buffer [k] = 0 ; - - return k ; -} /* psf_fgets */ - -int -psf_is_pipe (SF_PRIVATE *psf) -{ struct stat statbuf ; - - if (psf->virtual_io) - return SF_FALSE ; - - if (fstat (psf->filedes, &statbuf) == -1) - { psf_log_syserr (psf, errno) ; - /* Default to maximum safety. */ - return SF_TRUE ; - } ; - - if (S_ISFIFO (statbuf.st_mode) || S_ISSOCK (statbuf.st_mode)) - return SF_TRUE ; - - return SF_FALSE ; -} /* psf_is_pipe */ - -static sf_count_t -psf_get_filelen_fd (int fd) -{ struct stat statbuf ; - - /* - ** Sanity check. - ** If everything is OK, this will be optimised out. - */ - if (sizeof (statbuf.st_size) == 4 && sizeof (sf_count_t) == 8) - return (sf_count_t) -SFE_BAD_STAT_SIZE ; - - if (fstat (fd, &statbuf) == -1) - return (sf_count_t) -1 ; - - return statbuf.st_size ; -} /* psf_get_filelen_fd */ - -int -psf_ftruncate (SF_PRIVATE *psf, sf_count_t len) -{ int retval ; - - /* Returns 0 on success, non-zero on failure. */ - if (len < 0) - return -1 ; - - if ((sizeof (off_t) < sizeof (sf_count_t)) && len > 0x7FFFFFFF) - return -1 ; - - retval = ftruncate (psf->filedes, len) ; - - if (retval == -1) - psf_log_syserr (psf, errno) ; - - return retval ; -} /* psf_ftruncate */ - -void -psf_init_files (SF_PRIVATE *psf) -{ psf->filedes = -1 ; - psf->rsrcdes = -1 ; - psf->savedes = -1 ; -} /* psf_init_files */ - -void -psf_use_rsrc (SF_PRIVATE *psf, int on_off) -{ - if (on_off) - { if (psf->filedes != psf->rsrcdes) - { psf->savedes = psf->filedes ; - psf->filedes = psf->rsrcdes ; - } ; - } - else if (psf->filedes == psf->rsrcdes) - psf->filedes = psf->savedes ; - - return ; -} /* psf_use_rsrc */ - -static int -psf_open_fd (const char * pathname, int open_mode) -{ int fd, oflag, mode ; - - /* - ** Sanity check. If everything is OK, this test and the printfs will - ** be optimised out. This is meant to catch the problems caused by - ** "sfconfig.h" being included after . - */ - if (sizeof (off_t) != sizeof (sf_count_t)) - { puts ("\n\n*** Fatal error : sizeof (off_t) != sizeof (sf_count_t)") ; - puts ("*** This means that libsndfile was not configured correctly.\n") ; - exit (1) ; - } ; - - switch (open_mode) - { case SFM_READ : - oflag = O_RDONLY ; - mode = 0 ; - break ; - - case SFM_WRITE : - oflag = O_WRONLY | O_CREAT | O_TRUNC ; - mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ; - break ; - - case SFM_RDWR : - oflag = O_RDWR | O_CREAT ; - mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ; - break ; - - default : - return - SFE_BAD_OPEN_MODE ; - break ; - } ; - -#if OS_IS_WIN32 - /* For Cygwin. */ - oflag |= O_BINARY ; -#endif - - if (mode == 0) - fd = open (pathname, oflag) ; - else - fd = open (pathname, oflag, mode) ; - - return fd ; -} /* psf_open_fd */ - -static void -psf_log_syserr (SF_PRIVATE *psf, int error) -{ - /* Only log an error if no error has been set yet. */ - if (psf->error == 0) - { psf->error = SFE_SYSTEM ; - LSF_SNPRINTF (psf->syserr, sizeof (psf->syserr), "System error : %s.", strerror (error)) ; - } ; - - return ; -} /* psf_log_syserr */ - -void -psf_fsync (SF_PRIVATE *psf) -{ -#if HAVE_FSYNC - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - fsync (psf->filedes) ; -#else - psf = NULL ; -#endif -} /* psf_fsync */ - -#elif USE_WINDOWS_API - -/* Win32 file i/o functions implemented using native Win32 API */ - -#include -#include - -#ifndef HAVE_SSIZE_T -typedef long ssize_t ; -#endif - -static int psf_close_handle (HANDLE handle) ; -static HANDLE psf_open_handle (const char * path, int mode) ; -static sf_count_t psf_get_filelen_handle (HANDLE handle) ; - -/* USE_WINDOWS_API */ int -psf_fopen (SF_PRIVATE *psf, const char *pathname, int open_mode) -{ - psf->error = 0 ; - psf->hfile = psf_open_handle (pathname, open_mode) ; - - if (psf->hfile == NULL) - psf_log_syserr (psf, errno) ; - - psf->mode = open_mode ; - - return psf->error ; -} /* psf_fopen */ - -/* USE_WINDOWS_API */ int -psf_fclose (SF_PRIVATE *psf) -{ int retval ; - - if (psf->virtual_io) - return 0 ; - - if (psf->do_not_close_descriptor) - { psf->hfile = NULL ; - return 0 ; - } ; - - if ((retval = psf_close_handle (psf->hfile)) == -1) - psf_log_syserr (psf, errno) ; - - psf->hfile = NULL ; - - return retval ; -} /* psf_fclose */ - -/* USE_WINDOWS_API */ int -psf_open_rsrc (SF_PRIVATE *psf, int open_mode) -{ - if (psf->hrsrc != NULL) - return 0 ; - - /* Test for MacOSX style resource fork on HPFS or HPFS+ filesystems. */ - LSF_SNPRINTF (psf->rsrcpath, sizeof (psf->rsrcpath), "%s/rsrc", psf->filepath) ; - psf->error = SFE_NO_ERROR ; - if ((psf->hrsrc = psf_open_handle (psf->rsrcpath, open_mode)) != NULL) - { psf->rsrclength = psf_get_filelen_handle (psf->hrsrc) ; - return SFE_NO_ERROR ; - } ; - - /* - ** Now try for a resource fork stored as a separate file in the same - ** directory, but preceded with a dot underscore. - */ - LSF_SNPRINTF (psf->rsrcpath, sizeof (psf->rsrcpath), "%s._%s", psf->directory, psf->filename) ; - psf->error = SFE_NO_ERROR ; - if ((psf->hrsrc = psf_open_handle (psf->rsrcpath, open_mode)) != NULL) - { psf->rsrclength = psf_get_filelen_handle (psf->hrsrc) ; - return SFE_NO_ERROR ; - } ; - - /* - ** Now try for a resource fork stored in a separate file in the - ** .AppleDouble/ directory. - */ - LSF_SNPRINTF (psf->rsrcpath, sizeof (psf->rsrcpath), "%s.AppleDouble/%s", psf->directory, psf->filename) ; - psf->error = SFE_NO_ERROR ; - if ((psf->hrsrc = psf_open_handle (psf->rsrcpath, open_mode)) != NULL) - { psf->rsrclength = psf_get_filelen_handle (psf->hrsrc) ; - return SFE_NO_ERROR ; - } ; - - /* No resource file found. */ - if (psf->hrsrc == NULL) - psf_log_syserr (psf, errno) ; - - psf->hrsrc = NULL ; - - return psf->error ; -} /* psf_open_rsrc */ - -/* USE_WINDOWS_API */ sf_count_t -psf_get_filelen (SF_PRIVATE *psf) -{ sf_count_t filelen ; - - if (psf->virtual_io) - return psf->vio.get_filelen (psf->vio_user_data) ; - - filelen = psf_get_filelen_handle (psf->hfile) ; - - if (filelen == -1) - { psf_log_syserr (psf, errno) ; - return (sf_count_t) -1 ; - } ; - - if (filelen == -SFE_BAD_STAT_SIZE) - { psf->error = SFE_BAD_STAT_SIZE ; - return (sf_count_t) -1 ; - } ; - - switch (psf->mode) - { case SFM_WRITE : - filelen = filelen - psf->fileoffset ; - break ; - - case SFM_READ : - if (psf->fileoffset > 0 && psf->filelength > 0) - filelen = psf->filelength ; - break ; - - case SFM_RDWR : - /* - ** Cannot open embedded files SFM_RDWR so we don't need to - ** subtract psf->fileoffset. We already have the answer we - ** need. - */ - break ; - - default : - /* Shouldn't be here, so return error. */ - filelen = -1 ; - } ; - - return filelen ; -} /* psf_get_filelen */ - -/* USE_WINDOWS_API */ void -psf_init_files (SF_PRIVATE *psf) -{ psf->hfile = NULL ; - psf->hrsrc = NULL ; - psf->hsaved = NULL ; -} /* psf_init_files */ - -/* USE_WINDOWS_API */ void -psf_use_rsrc (SF_PRIVATE *psf, int on_off) -{ - if (on_off) - { if (psf->hfile != psf->hrsrc) - { psf->hsaved = psf->hfile ; - psf->hfile = psf->hrsrc ; - } ; - } - else if (psf->hfile == psf->hrsrc) - psf->hfile = psf->hsaved ; - - return ; -} /* psf_use_rsrc */ - -/* USE_WINDOWS_API */ static HANDLE -psf_open_handle (const char * pathname, int open_mode) -{ DWORD dwDesiredAccess ; - DWORD dwShareMode ; - DWORD dwCreationDistribution ; - HANDLE handle ; - - switch (open_mode) - { case SFM_READ : - dwDesiredAccess = GENERIC_READ ; - dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE ; - dwCreationDistribution = OPEN_EXISTING ; - break ; - - case SFM_WRITE : - dwDesiredAccess = GENERIC_WRITE ; - dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE ; - dwCreationDistribution = CREATE_ALWAYS ; - break ; - - case SFM_RDWR : - dwDesiredAccess = GENERIC_READ | GENERIC_WRITE ; - dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE ; - dwCreationDistribution = OPEN_ALWAYS ; - break ; - - default : - return NULL ; - } ; - - handle = CreateFile ( - pathname, /* pointer to name of the file */ - dwDesiredAccess, /* access (read-write) mode */ - dwShareMode, /* share mode */ - 0, /* pointer to security attributes */ - dwCreationDistribution, /* how to create */ - FILE_ATTRIBUTE_NORMAL, /* file attributes (could use FILE_FLAG_SEQUENTIAL_SCAN) */ - NULL /* handle to file with attributes to copy */ - ) ; - - if (handle == INVALID_HANDLE_VALUE) - return NULL ; - - return handle ; -} /* psf_open_handle */ - -/* USE_WINDOWS_API */ static void -psf_log_syserr (SF_PRIVATE *psf, int error) -{ LPVOID lpMsgBuf ; - - /* Only log an error if no error has been set yet. */ - if (psf->error == 0) - { psf->error = SFE_SYSTEM ; - - FormatMessage ( - FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, - error, - MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR) &lpMsgBuf, - 0, - NULL - ) ; - - LSF_SNPRINTF (psf->syserr, sizeof (psf->syserr), "System error : %s", lpMsgBuf) ; - LocalFree (lpMsgBuf) ; - } ; - - return ; -} /* psf_log_syserr */ - - -/* USE_WINDOWS_API */ int -psf_close_rsrc (SF_PRIVATE *psf) -{ - if (psf->hrsrc != NULL) - psf_close_handle (psf->hrsrc) ; - psf->hrsrc = NULL ; - return 0 ; -} /* psf_close_rsrc */ - - -/* USE_WINDOWS_API */ int -psf_set_stdio (SF_PRIVATE *psf, int mode) -{ HANDLE handle = NULL ; - int error = 0 ; - - switch (mode) - { case SFM_RDWR : - error = SFE_OPEN_PIPE_RDWR ; - break ; - - case SFM_READ : - handle = GetStdHandle (STD_INPUT_HANDLE) ; - psf->do_not_close_descriptor = 1 ; - break ; - - case SFM_WRITE : - handle = GetStdHandle (STD_OUTPUT_HANDLE) ; - psf->do_not_close_descriptor = 1 ; - break ; - - default : - error = SFE_BAD_OPEN_MODE ; - break ; - } ; - - psf->hfile = handle ; - psf->filelength = 0 ; - - return error ; -} /* psf_set_stdio */ - -/* USE_WINDOWS_API */ void -psf_set_file (SF_PRIVATE *psf, int fd) -{ HANDLE handle ; - long osfhandle ; - - osfhandle = _get_osfhandle (fd) ; - handle = (HANDLE) osfhandle ; - - psf->hfile = handle ; -} /* psf_set_file */ - -/* USE_WINDOWS_API */ int -psf_file_valid (SF_PRIVATE *psf) -{ if (psf->hfile == NULL) - return SF_FALSE ; - if (psf->hfile == INVALID_HANDLE_VALUE) - return SF_FALSE ; - return SF_TRUE ; -} /* psf_set_file */ - -/* USE_WINDOWS_API */ sf_count_t -psf_fseek (SF_PRIVATE *psf, sf_count_t offset, int whence) -{ sf_count_t new_position ; - LONG lDistanceToMove, lDistanceToMoveHigh ; - DWORD dwMoveMethod ; - DWORD dwResult, dwError ; - - if (psf->virtual_io) - return psf->vio.seek (offset, whence, psf->vio_user_data) ; - - switch (whence) - { case SEEK_SET : - offset += psf->fileoffset ; - dwMoveMethod = FILE_BEGIN ; - break ; - - case SEEK_END : - dwMoveMethod = FILE_END ; - break ; - - default : - dwMoveMethod = FILE_CURRENT ; - break ; - } ; - - lDistanceToMove = (DWORD) (offset & 0xFFFFFFFF) ; - lDistanceToMoveHigh = (DWORD) ((offset >> 32) & 0xFFFFFFFF) ; - - dwResult = SetFilePointer (psf->hfile, lDistanceToMove, &lDistanceToMoveHigh, dwMoveMethod) ; - - if (dwResult == 0xFFFFFFFF) - dwError = GetLastError () ; - else - dwError = NO_ERROR ; - - if (dwError != NO_ERROR) - { psf_log_syserr (psf, dwError) ; - return -1 ; - } ; - - new_position = (dwResult + ((__int64) lDistanceToMoveHigh << 32)) - psf->fileoffset ; - - return new_position ; -} /* psf_fseek */ - -/* USE_WINDOWS_API */ sf_count_t -psf_fread (void *ptr, sf_count_t bytes, sf_count_t items, SF_PRIVATE *psf) -{ sf_count_t total = 0 ; - ssize_t count ; - DWORD dwNumberOfBytesRead ; - - if (psf->virtual_io) - return psf->vio.read (ptr, bytes*items, psf->vio_user_data) / bytes ; - - items *= bytes ; - - /* Do this check after the multiplication above. */ - if (items <= 0) - return 0 ; - - while (items > 0) - { /* Break the writes down to a sensible size. */ - count = (items > SENSIBLE_SIZE) ? SENSIBLE_SIZE : (ssize_t) items ; - - if (ReadFile (psf->hfile, ((char*) ptr) + total, count, &dwNumberOfBytesRead, 0) == 0) - { psf_log_syserr (psf, GetLastError ()) ; - break ; - } - else - count = dwNumberOfBytesRead ; - - if (count == 0) - break ; - - total += count ; - items -= count ; - } ; - - if (psf->is_pipe) - psf->pipeoffset += total ; - - return total / bytes ; -} /* psf_fread */ - -/* USE_WINDOWS_API */ sf_count_t -psf_fwrite (const void *ptr, sf_count_t bytes, sf_count_t items, SF_PRIVATE *psf) -{ sf_count_t total = 0 ; - ssize_t count ; - DWORD dwNumberOfBytesWritten ; - - if (psf->virtual_io) - return psf->vio.write (ptr, bytes * items, psf->vio_user_data) / bytes ; - - items *= bytes ; - - /* Do this check after the multiplication above. */ - if (items <= 0) - return 0 ; - - while (items > 0) - { /* Break the writes down to a sensible size. */ - count = (items > SENSIBLE_SIZE) ? SENSIBLE_SIZE : (ssize_t) items ; - - if (WriteFile (psf->hfile, ((const char*) ptr) + total, count, &dwNumberOfBytesWritten, 0) == 0) - { psf_log_syserr (psf, GetLastError ()) ; - break ; - } - else - count = dwNumberOfBytesWritten ; - - if (count == 0) - break ; - - total += count ; - items -= count ; - } ; - - if (psf->is_pipe) - psf->pipeoffset += total ; - - return total / bytes ; -} /* psf_fwrite */ - -/* USE_WINDOWS_API */ sf_count_t -psf_ftell (SF_PRIVATE *psf) -{ sf_count_t pos ; - LONG lDistanceToMoveLow, lDistanceToMoveHigh ; - DWORD dwResult, dwError ; - - if (psf->virtual_io) - return psf->vio.tell (psf->vio_user_data) ; - - if (psf->is_pipe) - return psf->pipeoffset ; - - lDistanceToMoveLow = 0 ; - lDistanceToMoveHigh = 0 ; - - dwResult = SetFilePointer (psf->hfile, lDistanceToMoveLow, &lDistanceToMoveHigh, FILE_CURRENT) ; - - if (dwResult == 0xFFFFFFFF) - dwError = GetLastError () ; - else - dwError = NO_ERROR ; - - if (dwError != NO_ERROR) - { psf_log_syserr (psf, dwError) ; - return -1 ; - } ; - - pos = (dwResult + ((__int64) lDistanceToMoveHigh << 32)) ; - - return pos - psf->fileoffset ; -} /* psf_ftell */ - -/* USE_WINDOWS_API */ static int -psf_close_handle (HANDLE handle) -{ if (CloseHandle (handle) == 0) - return -1 ; - - return 0 ; -} /* psf_close_handle */ - -/* USE_WINDOWS_API */ sf_count_t -psf_fgets (char *buffer, sf_count_t bufsize, SF_PRIVATE *psf) -{ sf_count_t k = 0 ; - sf_count_t count ; - DWORD dwNumberOfBytesRead ; - - while (k < bufsize - 1) - { if (ReadFile (psf->hfile, &(buffer [k]), 1, &dwNumberOfBytesRead, 0) == 0) - { psf_log_syserr (psf, GetLastError ()) ; - break ; - } - else - { count = dwNumberOfBytesRead ; - /* note that we only check for '\n' not other line endings such as CRLF */ - if (count == 0 || buffer [k++] == '\n') - break ; - } ; - } ; - - buffer [k] = 0 ; - - return k ; -} /* psf_fgets */ - -/* USE_WINDOWS_API */ int -psf_is_pipe (SF_PRIVATE *psf) -{ - if (psf->virtual_io) - return SF_FALSE ; - - if (GetFileType (psf->hfile) == FILE_TYPE_DISK) - return SF_FALSE ; - - /* Default to maximum safety. */ - return SF_TRUE ; -} /* psf_is_pipe */ - -/* USE_WINDOWS_API */ sf_count_t -psf_get_filelen_handle (HANDLE handle) -{ sf_count_t filelen ; - DWORD dwFileSizeLow, dwFileSizeHigh, dwError = NO_ERROR ; - - dwFileSizeLow = GetFileSize (handle, &dwFileSizeHigh) ; - - if (dwFileSizeLow == 0xFFFFFFFF) - dwError = GetLastError () ; - - if (dwError != NO_ERROR) - return (sf_count_t) -1 ; - - filelen = dwFileSizeLow + ((__int64) dwFileSizeHigh << 32) ; - - return filelen ; -} /* psf_get_filelen_handle */ - -/* USE_WINDOWS_API */ void -psf_fsync (SF_PRIVATE *psf) -{ FlushFileBuffers (psf->hfile) ; -} /* psf_fsync */ - - -/* USE_WINDOWS_API */ int -psf_ftruncate (SF_PRIVATE *psf, sf_count_t len) -{ int retval = 0 ; - LONG lDistanceToMoveLow, lDistanceToMoveHigh ; - DWORD dwResult, dwError = NO_ERROR ; - - /* This implementation trashes the current file position. - ** should it save and restore it? what if the current position is past - ** the new end of file? - */ - - /* Returns 0 on success, non-zero on failure. */ - if (len < 0) - return 1 ; - - lDistanceToMoveLow = (DWORD) (len & 0xFFFFFFFF) ; - lDistanceToMoveHigh = (DWORD) ((len >> 32) & 0xFFFFFFFF) ; - - dwResult = SetFilePointer (psf->hfile, lDistanceToMoveLow, &lDistanceToMoveHigh, FILE_BEGIN) ; - - if (dwResult == 0xFFFFFFFF) - dwError = GetLastError () ; - - if (dwError != NO_ERROR) - { retval = -1 ; - psf_log_syserr (psf, dwError) ; - } - else - { /* Note: when SetEndOfFile is used to extend a file, the contents of the - ** new portion of the file is undefined. This is unlike chsize(), - ** which guarantees that the new portion of the file will be zeroed. - ** Not sure if this is important or not. - */ - if (SetEndOfFile (psf->hfile) == 0) - { retval = -1 ; - psf_log_syserr (psf, GetLastError ()) ; - } ; - } ; - - return retval ; -} /* psf_ftruncate */ - - -#else -/* Win32 file i/o functions implemented using Unix-style file i/o API */ - -/* Win32 has a 64 file offset seek function: -** -** __int64 _lseeki64 (int handle, __int64 offset, int origin) ; -** -** It also has a 64 bit fstat function: -** -** int fstati64 (int, struct _stati64) ; -** -** but the fscking thing doesn't work!!!!! The file size parameter returned -** by this function is only valid up until more data is written at the end of -** the file. That makes this function completely 100% useless. -*/ - -#include -#include - -#ifndef HAVE_SSIZE_T -typedef long ssize_t ; -#endif - -/* Win32 */ int -psf_fopen (SF_PRIVATE *psf, const char *pathname, int open_mode) -{ int oflag, mode ; - - switch (open_mode) - { case SFM_READ : - oflag = O_RDONLY | O_BINARY ; - mode = 0 ; - break ; - - case SFM_WRITE : - oflag = O_WRONLY | O_CREAT | O_TRUNC | O_BINARY ; - mode = S_IRUSR | S_IWUSR | S_IRGRP ; - break ; - - case SFM_RDWR : - oflag = O_RDWR | O_CREAT | O_BINARY ; - mode = S_IRUSR | S_IWUSR | S_IRGRP ; - break ; - - default : - psf->error = SFE_BAD_OPEN_MODE ; - return -1 ; - break ; - } ; - - if (mode == 0) - psf->filedes = open (pathname, oflag) ; - else - psf->filedes = open (pathname, oflag, mode) ; - - if (psf->filedes == -1) - psf_log_syserr (psf, errno) ; - - return psf->filedes ; -} /* psf_fopen */ - -/* Win32 */ sf_count_t -psf_fseek (SF_PRIVATE *psf, sf_count_t offset, int whence) -{ sf_count_t new_position ; - - if (psf->virtual_io) - return psf->vio.seek (offset, whence, psf->vio_user_data) ; - - switch (whence) - { case SEEK_SET : - offset += psf->fileoffset ; - break ; - - case SEEK_END : - if (psf->mode == SFM_WRITE) - { new_position = _lseeki64 (psf->filedes, offset, whence) ; - - if (new_position < 0) - psf_log_syserr (psf, errno) ; - - return new_position - psf->fileoffset ; - } ; - - /* Transform SEEK_END into a SEEK_SET, ie find the file - ** length add the requested offset (should be <= 0) to - ** get the offset wrt the start of file. - */ - whence = SEEK_SET ; - offset = _lseeki64 (psf->filedes, 0, SEEK_END) + offset ; - break ; - - default : - /* No need to do anything about SEEK_CUR. */ - break ; - } ; - - /* - ** Bypass weird Win32-ism if necessary. - ** _lseeki64() returns an "invalid parameter" error if called with the - ** offset == 0 and whence == SEEK_CUR. - *** Use the _telli64() function instead. - */ - if (offset == 0 && whence == SEEK_CUR) - new_position = _telli64 (psf->filedes) ; - else - new_position = _lseeki64 (psf->filedes, offset, whence) ; - - if (new_position < 0) - psf_log_syserr (psf, errno) ; - - new_position -= psf->fileoffset ; - - return new_position ; -} /* psf_fseek */ - -/* Win32 */ sf_count_t -psf_fread (void *ptr, sf_count_t bytes, sf_count_t items, SF_PRIVATE *psf) -{ sf_count_t total = 0 ; - ssize_t count ; - - if (psf->virtual_io) - return psf->vio.read (ptr, bytes*items, psf->vio_user_data) / bytes ; - - items *= bytes ; - - /* Do this check after the multiplication above. */ - if (items <= 0) - return 0 ; - - while (items > 0) - { /* Break the writes down to a sensible size. */ - count = (items > SENSIBLE_SIZE) ? SENSIBLE_SIZE : (ssize_t) items ; - - count = read (psf->filedes, ((char*) ptr) + total, (size_t) count) ; - - if (count == -1) - { if (errno == EINTR) - continue ; - - psf_log_syserr (psf, errno) ; - break ; - } ; - - if (count == 0) - break ; - - total += count ; - items -= count ; - } ; - - return total / bytes ; -} /* psf_fread */ - -/* Win32 */ sf_count_t -psf_fwrite (const void *ptr, sf_count_t bytes, sf_count_t items, SF_PRIVATE *psf) -{ sf_count_t total = 0 ; - ssize_t count ; - - if (psf->virtual_io) - return psf->vio.write (ptr, bytes*items, psf->vio_user_data) / bytes ; - - items *= bytes ; - - /* Do this check after the multiplication above. */ - if (items <= 0) - return 0 ; - - while (items > 0) - { /* Break the writes down to a sensible size. */ - count = (items > SENSIBLE_SIZE) ? SENSIBLE_SIZE : items ; - - count = write (psf->filedes, ((const char*) ptr) + total, count) ; - - if (count == -1) - { if (errno == EINTR) - continue ; - - psf_log_syserr (psf, errno) ; - break ; - } ; - - if (count == 0) - break ; - - total += count ; - items -= count ; - } ; - - return total / bytes ; -} /* psf_fwrite */ - -/* Win32 */ sf_count_t -psf_ftell (SF_PRIVATE *psf) -{ sf_count_t pos ; - - if (psf->virtual_io) - return psf->vio.tell (psf->vio_user_data) ; - - pos = _telli64 (psf->filedes) ; - - if (pos == ((sf_count_t) -1)) - { psf_log_syserr (psf, errno) ; - return -1 ; - } ; - - return pos - psf->fileoffset ; -} /* psf_ftell */ - -/* Win32 */ int -psf_fclose (SF_PRIVATE *psf) -{ int retval ; - - while ((retval = close (psf->filedes)) == -1 && errno == EINTR) - /* Do nothing. */ ; - - if (retval == -1) - psf_log_syserr (psf, errno) ; - - psf->filedes = -1 ; - - return retval ; -} /* psf_fclose */ - -/* Win32 */ sf_count_t -psf_fgets (char *buffer, sf_count_t bufsize, SF_PRIVATE *psf) -{ sf_count_t k = 0 ; - sf_count_t count ; - - while (k < bufsize - 1) - { count = read (psf->filedes, &(buffer [k]), 1) ; - - if (count == -1) - { if (errno == EINTR) - continue ; - - psf_log_syserr (psf, errno) ; - break ; - } ; - - if (count == 0 || buffer [k++] == '\n') - break ; - } ; - - buffer [k] = 0 ; - - return k ; -} /* psf_fgets */ - -/* Win32 */ int -psf_is_pipe (SF_PRIVATE *psf) -{ struct stat statbuf ; - - if (psf->virtual_io) - return SF_FALSE ; - - /* Not sure if this works. */ - if (fstat (psf->filedes, &statbuf) == -1) - { psf_log_syserr (psf, errno) ; - /* Default to maximum safety. */ - return SF_TRUE ; - } ; - - /* These macros are defined in Win32/unistd.h. */ - if (S_ISFIFO (statbuf.st_mode) || S_ISSOCK (statbuf.st_mode)) - return SF_TRUE ; - - return SF_FALSE ; -} /* psf_checkpipe */ - -/* Win32 */ sf_count_t -psf_get_filelen (SF_PRIVATE *psf) -{ -#if 0 - /* - ** Windoze is SOOOOO FUCKED!!!!!!! - ** This code should work but doesn't. Why? - ** Code below does work. - */ - struct _stati64 statbuf ; - - if (_fstati64 (psf->filedes, &statbuf)) - { psf_log_syserr (psf, errno) ; - return (sf_count_t) -1 ; - } ; - - return statbuf.st_size ; -#else - sf_count_t current, filelen ; - - if (psf->virtual_io) - return psf->vio.get_filelen (psf->vio_user_data) ; - - if ((current = _telli64 (psf->filedes)) < 0) - { psf_log_syserr (psf, errno) ; - return (sf_count_t) -1 ; - } ; - - /* - ** Lets face it, windoze if FUBAR!!! - ** - ** For some reason, I have to call _lseeki64() TWICE to get to the - ** end of the file. - ** - ** This might have been avoided if windows had implemented the POSIX - ** standard function fsync() but NO, that would have been too easy. - ** - ** I am VERY close to saying that windoze will no longer be supported - ** by libsndfile and changing the license to GPL at the same time. - */ - - _lseeki64 (psf->filedes, 0, SEEK_END) ; - - if ((filelen = _lseeki64 (psf->filedes, 0, SEEK_END)) < 0) - { psf_log_syserr (psf, errno) ; - return (sf_count_t) -1 ; - } ; - - if (filelen > current) - _lseeki64 (psf->filedes, current, SEEK_SET) ; - - switch (psf->mode) - { case SFM_WRITE : - filelen = filelen - psf->fileoffset ; - break ; - - case SFM_READ : - if (psf->fileoffset > 0 && psf->filelength > 0) - filelen = psf->filelength ; - break ; - - case SFM_RDWR : - /* - ** Cannot open embedded files SFM_RDWR so we don't need to - ** subtract psf->fileoffset. We already have the answer we - ** need. - */ - break ; - - default : - filelen = 0 ; - } ; - - return filelen ; -#endif -} /* psf_get_filelen */ - -/* Win32 */ int -psf_ftruncate (SF_PRIVATE *psf, sf_count_t len) -{ int retval ; - - /* Returns 0 on success, non-zero on failure. */ - if (len < 0) - return 1 ; - - /* The global village idiots at micorsoft decided to implement - ** nearly all the required 64 bit file offset functions except - ** for one, truncate. The fscking morons! - ** - ** This is not 64 bit file offset clean. Somone needs to clean - ** this up. - */ - if (len > 0x7FFFFFFF) - return -1 ; - - retval = chsize (psf->filedes, len) ; - - if (retval == -1) - psf_log_syserr (psf, errno) ; - - return retval ; -} /* psf_ftruncate */ - - -static void -psf_log_syserr (SF_PRIVATE *psf, int error) -{ - /* Only log an error if no error has been set yet. */ - if (psf->error == 0) - { psf->error = SFE_SYSTEM ; - LSF_SNPRINTF (psf->syserr, sizeof (psf->syserr), "System error : %s", strerror (error)) ; - } ; - - return ; -} /* psf_log_syserr */ - -#endif - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 749740d7-ecc7-47bd-8cf7-600f31d32e6d -*/ diff --git a/libs/libsndfile/src/flac.c b/libs/libsndfile/src/flac.c deleted file mode 100644 index a48ee348fe..0000000000 --- a/libs/libsndfile/src/flac.c +++ /dev/null @@ -1,1345 +0,0 @@ -/* -** Copyright (C) 2004, 2005 Erik de Castro Lopo -** Copyright (C) 2004 Tobias Gehrig -** -** This program is free software ; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation ; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY ; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program ; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include -#include - -#include "sndfile.h" -#include "common.h" - - -#ifndef HAVE_FLAC_ALL_H - -int -flac_open (SF_PRIVATE *psf) -{ if (psf) - return SFE_UNIMPLEMENTED ; - return (psf && 0) ; -} /* flac_open */ - - -#else - -#include - -#include "sfendian.h" -#include "float_cast.h" - -/* FLAC 1.1.3 has FLAC_API_VERSION_CURRENT == 8 */ -#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT < 8 -#define LEGACY_FLAC -#else -#undef LEGACY_FLAC -#endif - -/*------------------------------------------------------------------------------ -** Private static functions. -*/ - -#define ENC_BUFFER_SIZE 4096 - -typedef enum -{ PFLAC_PCM_SHORT = 0, - PFLAC_PCM_INT = 1, - PFLAC_PCM_FLOAT = 2, - PFLAC_PCM_DOUBLE = 3 -} PFLAC_PCM ; - -typedef struct -{ -#ifdef LEGACY_FLAC - FLAC__SeekableStreamDecoder *fsd ; - FLAC__SeekableStreamEncoder *fse ; -#else - FLAC__StreamDecoder *fsd ; - FLAC__StreamEncoder *fse ; -#endif - - PFLAC_PCM pcmtype ; - void* ptr ; - unsigned pos, len, remain ; - - const FLAC__int32 * const * wbuffer ; - FLAC__int32 * rbuffer [FLAC__MAX_CHANNELS] ; - - FLAC__int32* encbuffer ; - unsigned bufferpos ; - - const FLAC__Frame *frame ; - FLAC__bool bufferbackup ; -} FLAC_PRIVATE ; - -static sf_count_t flac_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ; -static int flac_close (SF_PRIVATE *psf) ; - -static int flac_enc_init (SF_PRIVATE *psf) ; -static int flac_read_header (SF_PRIVATE *psf) ; - -static sf_count_t flac_read_flac2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t flac_read_flac2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t flac_read_flac2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t flac_read_flac2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t flac_write_s2flac (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t flac_write_i2flac (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t flac_write_f2flac (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t flac_write_d2flac (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -static void f2flac8_array (const float *src, FLAC__int32 *dest, int count, int normalize) ; -static void f2flac16_array (const float *src, FLAC__int32 *dest, int count, int normalize) ; -static void f2flac24_array (const float *src, FLAC__int32 *dest, int count, int normalize) ; -static void f2flac8_clip_array (const float *src, FLAC__int32 *dest, int count, int normalize) ; -static void f2flac16_clip_array (const float *src, FLAC__int32 *dest, int count, int normalize) ; -static void f2flac24_clip_array (const float *src, FLAC__int32 *dest, int count, int normalize) ; -static void d2flac8_array (const double *src, FLAC__int32 *dest, int count, int normalize) ; -static void d2flac16_array (const double *src, FLAC__int32 *dest, int count, int normalize) ; -static void d2flac24_array (const double *src, FLAC__int32 *dest, int count, int normalize) ; -static void d2flac8_clip_array (const double *src, FLAC__int32 *dest, int count, int normalize) ; -static void d2flac16_clip_array (const double *src, FLAC__int32 *dest, int count, int normalize) ; -static void d2flac24_clip_array (const double *src, FLAC__int32 *dest, int count, int normalize) ; - -static int flac_command (SF_PRIVATE *psf, int command, void *data, int datasize) ; - -/* Decoder Callbacks */ -#ifdef LEGACY_FLAC -static FLAC__SeekableStreamDecoderReadStatus sf_flac_read_callback (const FLAC__SeekableStreamDecoder *decoder, FLAC__byte buffer [], unsigned *bytes, void *client_data) ; -static FLAC__SeekableStreamDecoderSeekStatus sf_flac_seek_callback (const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) ; -static FLAC__SeekableStreamDecoderTellStatus sf_flac_tell_callback (const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) ; -static FLAC__SeekableStreamDecoderLengthStatus sf_flac_length_callback (const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) ; -static FLAC__bool sf_flac_eof_callback (const FLAC__SeekableStreamDecoder *decoder, void *client_data) ; -static FLAC__StreamDecoderWriteStatus sf_flac_write_callback (const FLAC__SeekableStreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer [], void *client_data) ; -static void sf_flac_meta_callback (const FLAC__SeekableStreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) ; -static void sf_flac_error_callback (const FLAC__SeekableStreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) ; -#else -static FLAC__StreamDecoderReadStatus sf_flac_read_callback (const FLAC__StreamDecoder *decoder, FLAC__byte buffer [], size_t *bytes, void *client_data) ; -static FLAC__StreamDecoderSeekStatus sf_flac_seek_callback (const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) ; -static FLAC__StreamDecoderTellStatus sf_flac_tell_callback (const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) ; -static FLAC__StreamDecoderLengthStatus sf_flac_length_callback (const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) ; -static FLAC__bool sf_flac_eof_callback (const FLAC__StreamDecoder *decoder, void *client_data) ; -static FLAC__StreamDecoderWriteStatus sf_flac_write_callback (const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer [], void *client_data) ; -static void sf_flac_meta_callback (const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) ; -static void sf_flac_error_callback (const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) ; -#endif - -/* Encoder Callbacks */ -#ifdef LEGACY_FLAC -static FLAC__SeekableStreamEncoderSeekStatus sf_flac_enc_seek_callback (const FLAC__SeekableStreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data) ; -#ifdef HAVE_FLAC_1_1_1 -static FLAC__SeekableStreamEncoderTellStatus sf_flac_enc_tell_callback (const FLAC__SeekableStreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data) ; -#endif -static FLAC__StreamEncoderWriteStatus sf_flac_enc_write_callback (const FLAC__SeekableStreamEncoder *encoder, const FLAC__byte buffer [], unsigned bytes, unsigned samples, unsigned current_frame, void *client_data) ; -#else -static FLAC__StreamEncoderSeekStatus sf_flac_enc_seek_callback (const FLAC__StreamEncoder *encoder, FLAC__uint64 absolute_byte_offset, void *client_data) ; -static FLAC__StreamEncoderTellStatus sf_flac_enc_tell_callback (const FLAC__StreamEncoder *encoder, FLAC__uint64 *absolute_byte_offset, void *client_data) ; -static FLAC__StreamEncoderWriteStatus sf_flac_enc_write_callback (const FLAC__StreamEncoder *encoder, const FLAC__byte buffer [], size_t bytes, unsigned samples, unsigned current_frame, void *client_data) ; -#endif - -static const int legal_sample_rates [] = -{ 8000, 16000, 22050, 24000, 32000, 44100, 48000, 96000 -} ; - -static void -s2flac8_array (const short *src, FLAC__int32 *dest, int count) -{ while (--count >= 0) - dest [count] = src [count] >> 8 ; -} /* s2flac8_array */ - -static void -s2flac16_array (const short *src, FLAC__int32 *dest, int count) -{ while (--count >= 0) - dest [count] = src [count] ; -} /* s2flac16_array */ - -static void -s2flac24_array (const short *src, FLAC__int32 *dest, int count) -{ while (--count >= 0) - dest [count] = src [count] << 8 ; -} /* s2flac24_array */ - -static void -i2flac8_array (const int *src, FLAC__int32 *dest, int count) -{ while (--count >= 0) - dest [count] = src [count] >> 24 ; -} /* i2flac8_array */ - -static void -i2flac16_array (const int *src, FLAC__int32 *dest, int count) -{ - while (--count >= 0) - dest [count] = src [count] >> 16 ; -} /* i2flac16_array */ - -static void -i2flac24_array (const int *src, FLAC__int32 *dest, int count) -{ while (--count >= 0) - dest [count] = src [count] >> 8 ; -} /* i2flac24_array */ - -static sf_count_t -flac_buffer_copy (SF_PRIVATE *psf) -{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ; - const FLAC__Frame *frame = pflac->frame ; - const FLAC__int32* const *buffer = pflac->wbuffer ; - unsigned i = 0, j, offset ; - - if (pflac->ptr == NULL) - { /* - ** Not sure why this code is here and not elsewhere. - ** Removing it causes valgrind errors. - */ - pflac->bufferbackup = SF_TRUE ; - for (i = 0 ; i < frame->header.channels ; i++) - { if (pflac->rbuffer [i] == NULL) - pflac->rbuffer [i] = calloc (frame->header.blocksize, sizeof (FLAC__int32)) ; - memcpy (pflac->rbuffer [i], buffer [i], frame->header.blocksize * sizeof (FLAC__int32)) ; - } ; - pflac->wbuffer = (const FLAC__int32* const*) pflac->rbuffer ; - - return 0 ; - } ; - - switch (pflac->pcmtype) - { case PFLAC_PCM_SHORT : - { short *retpcm = ((short*) pflac->ptr) ; - int shift = 16 - frame->header.bits_per_sample ; - if (shift < 0) - { shift = abs (shift) ; - for (i = 0 ; i < frame->header.blocksize && pflac->remain > 0 ; i++) - { offset = pflac->pos + i * frame->header.channels ; - for (j = 0 ; j < frame->header.channels ; j++) - retpcm [offset + j] = buffer [j][pflac->bufferpos] >> shift ; - pflac->remain -= frame->header.channels ; - pflac->bufferpos++ ; - } - } - else - { for (i = 0 ; i < frame->header.blocksize && pflac->remain > 0 ; i++) - { offset = pflac->pos + i * frame->header.channels ; - - if (pflac->bufferpos >= frame->header.blocksize) - break ; - - for (j = 0 ; j < frame->header.channels ; j++) - retpcm [offset + j] = (buffer [j][pflac->bufferpos]) << shift ; - - pflac->remain -= frame->header.channels ; - pflac->bufferpos++ ; - } ; - } ; - } ; - break ; - - case PFLAC_PCM_INT : - { int *retpcm = ((int*) pflac->ptr) ; - int shift = 32 - frame->header.bits_per_sample ; - for (i = 0 ; i < frame->header.blocksize && pflac->remain > 0 ; i++) - { offset = pflac->pos + i * frame->header.channels ; - - if (pflac->bufferpos >= frame->header.blocksize) - break ; - - for (j = 0 ; j < frame->header.channels ; j++) - retpcm [offset + j] = buffer [j][pflac->bufferpos] << shift ; - pflac->remain -= frame->header.channels ; - pflac->bufferpos++ ; - } ; - } ; - break ; - - case PFLAC_PCM_FLOAT : - { float *retpcm = ((float*) pflac->ptr) ; - float norm = (psf->norm_float == SF_TRUE) ? 1.0 / (1 << (frame->header.bits_per_sample - 1)) : 1.0 ; - - for (i = 0 ; i < frame->header.blocksize && pflac->remain > 0 ; i++) - { offset = pflac->pos + i * frame->header.channels ; - - if (pflac->bufferpos >= frame->header.blocksize) - break ; - - for (j = 0 ; j < frame->header.channels ; j++) - retpcm [offset + j] = buffer [j][pflac->bufferpos] * norm ; - pflac->remain -= frame->header.channels ; - pflac->bufferpos++ ; - } ; - } ; - break ; - - case PFLAC_PCM_DOUBLE : - { double *retpcm = ((double*) pflac->ptr) ; - double norm = (psf->norm_double == SF_TRUE) ? 1.0 / (1 << (frame->header.bits_per_sample - 1)) : 1.0 ; - - for (i = 0 ; i < frame->header.blocksize && pflac->remain > 0 ; i++) - { offset = pflac->pos + i * frame->header.channels ; - - if (pflac->bufferpos >= frame->header.blocksize) - break ; - - for (j = 0 ; j < frame->header.channels ; j++) - retpcm [offset + j] = buffer [j][pflac->bufferpos] * norm ; - pflac->remain -= frame->header.channels ; - pflac->bufferpos++ ; - } ; - } ; - break ; - - default : - return 0 ; - } ; - - offset = i * frame->header.channels ; - pflac->pos += i * frame->header.channels ; - - return offset ; -} /* flac_buffer_copy */ - - -#ifdef LEGACY_FLAC -static FLAC__SeekableStreamDecoderReadStatus -sf_flac_read_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), FLAC__byte buffer [], unsigned *bytes, void *client_data) -#else -static FLAC__StreamDecoderReadStatus -sf_flac_read_callback (const FLAC__StreamDecoder * UNUSED (decoder), FLAC__byte buffer [], size_t *bytes, void *client_data) -#endif -{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ; - - *bytes = psf_fread (buffer, 1, *bytes, psf) ; - if (*bytes > 0 && psf->error == 0) -#ifdef LEGACY_FLAC - return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK ; - - return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_ERROR ; -#else - return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE ; - - return FLAC__STREAM_DECODER_READ_STATUS_ABORT ; -#endif -} /* sf_flac_read_callback */ - -#ifdef LEGACY_FLAC -static FLAC__SeekableStreamDecoderSeekStatus -sf_flac_seek_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), FLAC__uint64 absolute_byte_offset, void *client_data) -#else -static FLAC__StreamDecoderSeekStatus -sf_flac_seek_callback (const FLAC__StreamDecoder * UNUSED (decoder), FLAC__uint64 absolute_byte_offset, void *client_data) -#endif -{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ; - - psf_fseek (psf, absolute_byte_offset, SEEK_SET) ; - if (psf->error) -#ifdef LEGACY_FLAC - return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR ; - - return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK ; -#else - return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR ; - - return FLAC__STREAM_DECODER_SEEK_STATUS_OK ; -#endif -} /* sf_flac_seek_callback */ - -#ifdef LEGACY_FLAC -static FLAC__SeekableStreamDecoderTellStatus -sf_flac_tell_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), FLAC__uint64 *absolute_byte_offset, void *client_data) -#else -static FLAC__StreamDecoderTellStatus -sf_flac_tell_callback (const FLAC__StreamDecoder * UNUSED (decoder), FLAC__uint64 *absolute_byte_offset, void *client_data) -#endif -{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ; - - *absolute_byte_offset = psf_ftell (psf) ; - if (psf->error) -#ifdef LEGACY_FLAC - return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_ERROR ; - - return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK ; -#else - return FLAC__STREAM_DECODER_TELL_STATUS_ERROR ; - - return FLAC__STREAM_DECODER_TELL_STATUS_OK ; -#endif -} /* sf_flac_tell_callback */ - -#ifdef LEGACY_FLAC -static FLAC__SeekableStreamDecoderLengthStatus -sf_flac_length_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), FLAC__uint64 *stream_length, void *client_data) -#else -static FLAC__StreamDecoderLengthStatus -sf_flac_length_callback (const FLAC__StreamDecoder * UNUSED (decoder), FLAC__uint64 *stream_length, void *client_data) -#endif -{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ; - - if ((*stream_length = psf->filelength) == 0) -#ifdef LEGACY_FLAC - return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_ERROR ; - - return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK ; -#else - return FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR ; - - return FLAC__STREAM_DECODER_LENGTH_STATUS_OK ; -#endif -} /* sf_flac_length_callback */ - -static FLAC__bool -#ifdef LEGACY_FLAC -sf_flac_eof_callback (const FLAC__SeekableStreamDecoder *UNUSED (decoder), void *client_data) -#else -sf_flac_eof_callback (const FLAC__StreamDecoder *UNUSED (decoder), void *client_data) -#endif -{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ; - - if (psf_ftell (psf) == psf->filelength) - return SF_TRUE ; - - return SF_FALSE ; -} /* sf_flac_eof_callback */ - -static FLAC__StreamDecoderWriteStatus -#ifdef LEGACY_FLAC -sf_flac_write_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), const FLAC__Frame *frame, const FLAC__int32 * const buffer [], void *client_data) -#else -sf_flac_write_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC__Frame *frame, const FLAC__int32 * const buffer [], void *client_data) -#endif -{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ; - FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ; - - pflac->frame = frame ; - pflac->bufferpos = 0 ; - - pflac->bufferbackup = SF_FALSE ; - pflac->wbuffer = buffer ; - - flac_buffer_copy (psf) ; - - return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE ; -} /* sf_flac_write_callback */ - -static void -#ifdef LEGACY_FLAC -sf_flac_meta_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), const FLAC__StreamMetadata *metadata, void *client_data) -#else -sf_flac_meta_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC__StreamMetadata *metadata, void *client_data) -#endif -{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ; - - switch (metadata->type) - { case FLAC__METADATA_TYPE_STREAMINFO : - psf->sf.channels = metadata->data.stream_info.channels ; - psf->sf.samplerate = metadata->data.stream_info.sample_rate ; - psf->sf.frames = metadata->data.stream_info.total_samples ; - - switch (metadata->data.stream_info.bits_per_sample) - { case 8 : - psf->sf.format |= SF_FORMAT_PCM_S8 ; - break ; - case 16 : - psf->sf.format |= SF_FORMAT_PCM_16 ; - break ; - case 24 : - psf->sf.format |= SF_FORMAT_PCM_24 ; - break ; - default : - psf_log_printf (psf, "sf_flac_meta_callback : bits_per_sample %d not yet implemented.\n", metadata->data.stream_info.bits_per_sample) ; - break ; - } ; - break ; - - default : - psf_log_printf (psf, "sf_flac_meta_callback : metadata-type %d not yet implemented.\n", metadata->type) ; - break ; - } ; - - return ; -} /* sf_flac_meta_callback */ - -static void -#ifdef LEGACY_FLAC -sf_flac_error_callback (const FLAC__SeekableStreamDecoder * UNUSED (decoder), FLAC__StreamDecoderErrorStatus status, void *client_data) -#else -sf_flac_error_callback (const FLAC__StreamDecoder * UNUSED (decoder), FLAC__StreamDecoderErrorStatus status, void *client_data) -#endif -{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ; - - psf_log_printf (psf, "ERROR : %s\n", FLAC__StreamDecoderErrorStatusString [status]) ; - - switch (status) - { case FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC : - psf->error = SFE_FLAC_LOST_SYNC ; - break ; - case FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER : - psf->error = SFE_FLAC_BAD_HEADER ; - break ; - default : - psf->error = SFE_FLAC_UNKOWN_ERROR ; - break ; - } ; - - return ; -} /* sf_flac_error_callback */ - -#ifdef LEGACY_FLAC -static FLAC__SeekableStreamEncoderSeekStatus -sf_flac_enc_seek_callback (const FLAC__SeekableStreamEncoder * UNUSED (encoder), FLAC__uint64 absolute_byte_offset, void *client_data) -#else -static FLAC__StreamEncoderSeekStatus -sf_flac_enc_seek_callback (const FLAC__StreamEncoder * UNUSED (encoder), FLAC__uint64 absolute_byte_offset, void *client_data) -#endif -{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ; - - psf_fseek (psf, absolute_byte_offset, SEEK_SET) ; - if (psf->error) -#ifdef LEGACY_FLAC - return FLAC__SEEKABLE_STREAM_ENCODER_SEEK_STATUS_ERROR ; - - return FLAC__SEEKABLE_STREAM_ENCODER_SEEK_STATUS_OK ; -#else - return FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR ; - - return FLAC__STREAM_ENCODER_SEEK_STATUS_OK ; -#endif -} /* sf_flac_enc_seek_callback */ - -#ifdef LEGACY_FLAC -#ifdef HAVE_FLAC_1_1_1 -static FLAC__SeekableStreamEncoderTellStatus -sf_flac_enc_tell_callback (const FLAC__SeekableStreamEncoder *UNUSED (encoder), FLAC__uint64 *absolute_byte_offset, void *client_data) -{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ; - - *absolute_byte_offset = psf_ftell (psf) ; - if (psf->error) - return FLAC__SEEKABLE_STREAM_ENCODER_TELL_STATUS_ERROR ; - - return FLAC__SEEKABLE_STREAM_ENCODER_TELL_STATUS_OK ; -} /* sf_flac_enc_tell_callback */ -#endif -#else -static FLAC__StreamEncoderTellStatus -sf_flac_enc_tell_callback (const FLAC__StreamEncoder *UNUSED (encoder), FLAC__uint64 *absolute_byte_offset, void *client_data) -{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ; - - *absolute_byte_offset = psf_ftell (psf) ; - if (psf->error) - return FLAC__STREAM_ENCODER_TELL_STATUS_ERROR ; - - return FLAC__STREAM_ENCODER_TELL_STATUS_OK ; -} /* sf_flac_enc_tell_callback */ -#endif - -static FLAC__StreamEncoderWriteStatus -#ifdef LEGACY_FLAC -sf_flac_enc_write_callback (const FLAC__SeekableStreamEncoder * UNUSED (encoder), const FLAC__byte buffer [], unsigned bytes, unsigned UNUSED (samples), unsigned UNUSED (current_frame), void *client_data) -#else -sf_flac_enc_write_callback (const FLAC__StreamEncoder * UNUSED (encoder), const FLAC__byte buffer [], size_t bytes, unsigned UNUSED (samples), unsigned UNUSED (current_frame), void *client_data) -#endif -{ SF_PRIVATE *psf = (SF_PRIVATE*) client_data ; - - if (psf_fwrite (buffer, 1, bytes, psf) == bytes && psf->error == 0) - return FLAC__STREAM_ENCODER_WRITE_STATUS_OK ; - - return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR ; -} /* sf_flac_enc_write_callback */ - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -flac_open (SF_PRIVATE *psf) -{ int subformat ; - int error = 0 ; - - FLAC_PRIVATE* pflac = calloc (1, sizeof (FLAC_PRIVATE)) ; - psf->fdata = pflac ; - - if (psf->mode == SFM_RDWR) - return SFE_UNIMPLEMENTED ; - - if (psf->mode == SFM_READ) - { if ((error = flac_read_header (psf))) - return error ; - } ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - if (psf->mode == SFM_WRITE) - { if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_FLAC) - return SFE_BAD_OPEN_FORMAT ; - - psf->endian = SF_ENDIAN_BIG ; - - if ((error = flac_enc_init (psf))) - return error ; - } ; - - psf->datalength = psf->filelength ; - psf->dataoffset = 0 ; - psf->blockwidth = 0 ; - psf->bytewidth = 1 ; - - psf->container_close = flac_close ; - psf->seek = flac_seek ; - psf->command = flac_command ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - - switch (subformat) - { case SF_FORMAT_PCM_S8 : /* 8-bit FLAC. */ - case SF_FORMAT_PCM_16 : /* 16-bit FLAC. */ - case SF_FORMAT_PCM_24 : /* 24-bit FLAC. */ - error = flac_init (psf) ; - break ; - - default : return SFE_UNIMPLEMENTED ; - } ; - - return error ; -} /* flac_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -flac_close (SF_PRIVATE *psf) -{ FLAC_PRIVATE* pflac ; - int k ; - - if ((pflac = (FLAC_PRIVATE*) psf->fdata) == NULL) - return 0 ; - - if (psf->mode == SFM_WRITE) - { -#ifdef LEGACY_FLAC - FLAC__seekable_stream_encoder_finish (pflac->fse) ; - FLAC__seekable_stream_encoder_delete (pflac->fse) ; -#else - FLAC__stream_encoder_finish (pflac->fse) ; - FLAC__stream_encoder_delete (pflac->fse) ; -#endif - if (pflac->encbuffer) - free (pflac->encbuffer) ; - } ; - - if (psf->mode == SFM_READ) - { -#ifdef LEGACY_FLAC - FLAC__seekable_stream_decoder_finish (pflac->fsd) ; - FLAC__seekable_stream_decoder_delete (pflac->fsd) ; -#else - FLAC__stream_decoder_finish (pflac->fsd) ; - FLAC__stream_decoder_delete (pflac->fsd) ; -#endif - } ; - - for (k = 0 ; k < ARRAY_LEN (pflac->rbuffer) ; k++) - free (pflac->rbuffer [k]) ; - - free (pflac) ; - psf->fdata = NULL ; - - return 0 ; -} /* flac_close */ - -static int -flac_enc_init (SF_PRIVATE *psf) -{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ; - unsigned bps ; - int k, found ; - - found = 0 ; - for (k = 0 ; k < ARRAY_LEN (legal_sample_rates) ; k++) - if (psf->sf.samplerate == legal_sample_rates [k]) - { found = 1 ; - break ; - } ; - - if (found == 0) - return SFE_FLAC_BAD_SAMPLE_RATE ; - - psf_fseek (psf, 0, SEEK_SET) ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_S8 : - bps = 8 ; - break ; - case SF_FORMAT_PCM_16 : - bps = 16 ; - break ; - case SF_FORMAT_PCM_24 : - bps = 24 ; - break ; - - default : - bps = 0 ; - break ; - } ; - -#ifdef LEGACY_FLAC - if ((pflac->fse = FLAC__seekable_stream_encoder_new ()) == NULL) - return SFE_FLAC_NEW_DECODER ; - FLAC__seekable_stream_encoder_set_write_callback (pflac->fse, sf_flac_enc_write_callback) ; - FLAC__seekable_stream_encoder_set_seek_callback (pflac->fse, sf_flac_enc_seek_callback) ; - -#ifdef HAVE_FLAC_1_1_1 - FLAC__seekable_stream_encoder_set_tell_callback (pflac->fse, sf_flac_enc_tell_callback) ; -#endif - FLAC__seekable_stream_encoder_set_client_data (pflac->fse, psf) ; - FLAC__seekable_stream_encoder_set_channels (pflac->fse, psf->sf.channels) ; - FLAC__seekable_stream_encoder_set_sample_rate (pflac->fse, psf->sf.samplerate) ; - FLAC__seekable_stream_encoder_set_bits_per_sample (pflac->fse, bps) ; - - if ((bps = FLAC__seekable_stream_encoder_init (pflac->fse)) != FLAC__SEEKABLE_STREAM_DECODER_OK) - { psf_log_printf (psf, "Error : FLAC encoder init returned error : %s\n", FLAC__seekable_stream_encoder_get_resolved_state_string (pflac->fse)) ; - return SFE_FLAC_INIT_DECODER ; - } ; -#else - if ((pflac->fse = FLAC__stream_encoder_new ()) == NULL) - return SFE_FLAC_NEW_DECODER ; - FLAC__stream_encoder_set_channels (pflac->fse, psf->sf.channels) ; - FLAC__stream_encoder_set_sample_rate (pflac->fse, psf->sf.samplerate) ; - FLAC__stream_encoder_set_bits_per_sample (pflac->fse, bps) ; - - if ((bps = FLAC__stream_encoder_init_stream (pflac->fse, sf_flac_enc_write_callback, sf_flac_enc_seek_callback, sf_flac_enc_tell_callback, NULL, psf)) != FLAC__STREAM_DECODER_INIT_STATUS_OK) - { psf_log_printf (psf, "Error : FLAC encoder init returned error : %s\n", FLAC__StreamEncoderInitStatusString[bps]) ; - return SFE_FLAC_INIT_DECODER ; - } ; -#endif - - if (psf->error == 0) - psf->dataoffset = psf_ftell (psf) ; - pflac->encbuffer = calloc (ENC_BUFFER_SIZE, sizeof (FLAC__int32)) ; - - return psf->error ; -} /* flac_enc_init */ - -static int -flac_read_header (SF_PRIVATE *psf) -{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ; - - psf_fseek (psf, 0, SEEK_SET) ; -#ifdef LEGACY_FLAC - if ((pflac->fsd = FLAC__seekable_stream_decoder_new ()) == NULL) - return SFE_FLAC_NEW_DECODER ; - - FLAC__seekable_stream_decoder_set_read_callback (pflac->fsd, sf_flac_read_callback) ; - FLAC__seekable_stream_decoder_set_seek_callback (pflac->fsd, sf_flac_seek_callback) ; - FLAC__seekable_stream_decoder_set_tell_callback (pflac->fsd, sf_flac_tell_callback) ; - FLAC__seekable_stream_decoder_set_length_callback (pflac->fsd, sf_flac_length_callback) ; - FLAC__seekable_stream_decoder_set_eof_callback (pflac->fsd, sf_flac_eof_callback) ; - FLAC__seekable_stream_decoder_set_write_callback (pflac->fsd, sf_flac_write_callback) ; - FLAC__seekable_stream_decoder_set_metadata_callback (pflac->fsd, sf_flac_meta_callback) ; - FLAC__seekable_stream_decoder_set_error_callback (pflac->fsd, sf_flac_error_callback) ; - FLAC__seekable_stream_decoder_set_client_data (pflac->fsd, psf) ; - - if (FLAC__seekable_stream_decoder_init (pflac->fsd) != FLAC__SEEKABLE_STREAM_DECODER_OK) - return SFE_FLAC_INIT_DECODER ; - - FLAC__seekable_stream_decoder_process_until_end_of_metadata (pflac->fsd) ; -#else - if ((pflac->fsd = FLAC__stream_decoder_new ()) == NULL) - return SFE_FLAC_NEW_DECODER ; - - if (FLAC__stream_decoder_init_stream (pflac->fsd, sf_flac_read_callback, sf_flac_seek_callback, sf_flac_tell_callback, sf_flac_length_callback, sf_flac_eof_callback, sf_flac_write_callback, sf_flac_meta_callback, sf_flac_error_callback, psf) != FLAC__STREAM_DECODER_INIT_STATUS_OK) - return SFE_FLAC_INIT_DECODER ; - - FLAC__stream_decoder_process_until_end_of_metadata (pflac->fsd) ; -#endif - if (psf->error == 0) - { FLAC__uint64 position ; -#ifdef LEGACY_FLAC - FLAC__seekable_stream_decoder_get_decode_position (pflac->fsd, &position) ; -#else - FLAC__stream_decoder_get_decode_position (pflac->fsd, &position) ; -#endif - psf->dataoffset = position ; - } ; - - return psf->error ; -} /* flac_read_header */ - -static int -flac_command (SF_PRIVATE *psf, int command, void *data, int datasize) -{ - /* Avoid compiler warnings. */ - psf = psf ; - data = data ; - datasize = datasize ; - - switch (command) - { default : break ; - } ; - - return 0 ; -} /* flac_command */ - -int -flac_init (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_RDWR) - return SFE_BAD_MODE_RW ; - - if (psf->mode == SFM_READ) - { psf->read_short = flac_read_flac2s ; - psf->read_int = flac_read_flac2i ; - psf->read_float = flac_read_flac2f ; - psf->read_double = flac_read_flac2d ; - } ; - - if (psf->mode == SFM_WRITE) - { psf->write_short = flac_write_s2flac ; - psf->write_int = flac_write_i2flac ; - psf->write_float = flac_write_f2flac ; - psf->write_double = flac_write_d2flac ; - } ; - - psf->bytewidth = 1 ; - psf->blockwidth = psf->sf.channels ; - - if (psf->filelength > psf->dataoffset) - psf->datalength = (psf->dataend) ? psf->dataend - psf->dataoffset : psf->filelength - psf->dataoffset ; - else - psf->datalength = 0 ; - - return 0 ; -} /* flac_init */ - -static unsigned -flac_read_loop (SF_PRIVATE *psf, unsigned len) -{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ; - - pflac->pos = 0 ; - pflac->len = len ; - pflac->remain = len ; - if (pflac->frame != NULL && pflac->bufferpos < pflac->frame->header.blocksize) - flac_buffer_copy (psf) ; - - while (pflac->pos < pflac->len) - { -#ifdef LEGACY_FLAC - if (FLAC__seekable_stream_decoder_process_single (pflac->fsd) == 0) - break ; - if (FLAC__seekable_stream_decoder_get_state (pflac->fsd) != FLAC__SEEKABLE_STREAM_DECODER_OK) - break ; -#else - if (FLAC__stream_decoder_process_single (pflac->fsd) == 0) - break ; - if (FLAC__stream_decoder_get_state (pflac->fsd) >= FLAC__STREAM_DECODER_END_OF_STREAM) - break ; -#endif - } ; - - pflac->ptr = NULL ; - - return pflac->pos ; -} /* flac_read_loop */ - -static sf_count_t -flac_read_flac2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ; - sf_count_t total = 0, current ; - unsigned readlen ; - - pflac->pcmtype = PFLAC_PCM_SHORT ; - - while (total < len) - { pflac->ptr = ptr + total ; - readlen = (len - total > 0x1000000) ? 0x1000000 : (unsigned) (len - total) ; - current = flac_read_loop (psf, readlen) ; - if (current == 0) - break ; - total += current ; - } ; - - return total ; -} /* flac_read_flac2s */ - -static sf_count_t -flac_read_flac2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ; - sf_count_t total = 0, current ; - unsigned readlen ; - - pflac->pcmtype = PFLAC_PCM_INT ; - - while (total < len) - { pflac->ptr = ptr + total ; - readlen = (len - total > 0x1000000) ? 0x1000000 : (unsigned) (len - total) ; - current = flac_read_loop (psf, readlen) ; - if (current == 0) - break ; - total += current ; - } ; - - return total ; -} /* flac_read_flac2i */ - -static sf_count_t -flac_read_flac2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ; - sf_count_t total = 0, current ; - unsigned readlen ; - - pflac->pcmtype = PFLAC_PCM_FLOAT ; - - while (total < len) - { pflac->ptr = ptr + total ; - readlen = (len - total > 0x1000000) ? 0x1000000 : (unsigned) (len - total) ; - current = flac_read_loop (psf, readlen) ; - if (current == 0) - break ; - total += current ; - } ; - - return total ; -} /* flac_read_flac2f */ - -static sf_count_t -flac_read_flac2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ; - sf_count_t total = 0, current ; - unsigned readlen ; - - pflac->pcmtype = PFLAC_PCM_DOUBLE ; - - while (total < len) - { pflac->ptr = ptr + total ; - readlen = (len - total > 0x1000000) ? 0x1000000 : (unsigned) (len - total) ; - current = flac_read_loop (psf, readlen) ; - if (current == 0) - break ; - total += current ; - } ; - - return total ; -} /* flac_read_flac2d */ - -static sf_count_t -flac_write_s2flac (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ; - void (*convert) (const short *, FLAC__int32 *, int) ; - int bufferlen, writecount, thiswrite ; - sf_count_t total = 0 ; - FLAC__int32* buffer = pflac->encbuffer ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_S8 : - convert = s2flac8_array ; - break ; - case SF_FORMAT_PCM_16 : - convert = s2flac16_array ; - break ; - case SF_FORMAT_PCM_24 : - convert = s2flac24_array ; - break ; - default : - return -1 ; - } ; - - bufferlen = ENC_BUFFER_SIZE / (sizeof (FLAC__int32) * psf->sf.channels) ; - bufferlen *= psf->sf.channels ; - - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : (int) len ; - convert (ptr + total, buffer, writecount) ; -#ifdef LEGACY_FLAC - if (FLAC__seekable_stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels)) -#else - if (FLAC__stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels)) -#endif - thiswrite = writecount ; - else - break ; - total += thiswrite ; - if (thiswrite < writecount) - break ; - - len -= thiswrite ; - } ; - - return total ; -} /* flac_write_s2flac */ - -static sf_count_t -flac_write_i2flac (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ; - void (*convert) (const int *, FLAC__int32 *, int) ; - int bufferlen, writecount, thiswrite ; - sf_count_t total = 0 ; - FLAC__int32* buffer = pflac->encbuffer ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_S8 : - convert = i2flac8_array ; - break ; - case SF_FORMAT_PCM_16 : - convert = i2flac16_array ; - break ; - case SF_FORMAT_PCM_24 : - convert = i2flac24_array ; - break ; - default : - return -1 ; - } ; - - bufferlen = ENC_BUFFER_SIZE / (sizeof (FLAC__int32) * psf->sf.channels) ; - bufferlen *= psf->sf.channels ; - - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : (int) len ; - convert (ptr + total, buffer, writecount) ; -#ifdef LEGACY_FLAC - if (FLAC__seekable_stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels)) -#else - if (FLAC__stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels)) -#endif - thiswrite = writecount ; - else - break ; - total += thiswrite ; - if (thiswrite < writecount) - break ; - - len -= thiswrite ; - } ; - - return total ; -} /* flac_write_i2flac */ - -static sf_count_t -flac_write_f2flac (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ; - void (*convert) (const float *, FLAC__int32 *, int, int) ; - int bufferlen, writecount, thiswrite ; - sf_count_t total = 0 ; - FLAC__int32* buffer = pflac->encbuffer ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_S8 : - convert = (psf->add_clipping) ? f2flac8_clip_array : f2flac8_array ; - break ; - case SF_FORMAT_PCM_16 : - convert = (psf->add_clipping) ? f2flac16_clip_array : f2flac16_array ; - break ; - case SF_FORMAT_PCM_24 : - convert = (psf->add_clipping) ? f2flac24_clip_array : f2flac24_array ; - break ; - default : - return -1 ; - } ; - - bufferlen = ENC_BUFFER_SIZE / (sizeof (FLAC__int32) * psf->sf.channels) ; - bufferlen *= psf->sf.channels ; - - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : (int) len ; - convert (ptr + total, buffer, writecount, psf->norm_float) ; -#ifdef LEGACY_FLAC - if (FLAC__seekable_stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels)) -#else - if (FLAC__stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels)) -#endif - thiswrite = writecount ; - else - break ; - total += thiswrite ; - if (thiswrite < writecount) - break ; - - len -= thiswrite ; - } ; - - return total ; -} /* flac_write_f2flac */ - -static void -f2flac8_clip_array (const float *src, FLAC__int32 *dest, int count, int normalize) -{ float normfact, scaled_value ; - - normfact = normalize ? (8.0 * 0x10) : 1.0 ; - - while (--count >= 0) - { scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7F)) - { dest [count] = 0x7F ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10)) - { dest [count] = 0x80 ; - continue ; - } ; - dest [count] = lrintf (scaled_value) ; - } ; - - return ; -} /* f2flac8_clip_array */ - -static void -f2flac16_clip_array (const float *src, FLAC__int32 *dest, int count, int normalize) -{ - float normfact, scaled_value ; - - normfact = normalize ? (8.0 * 0x1000) : 1.0 ; - - while (--count >= 0) { - scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFF)) { - dest [count] = 0x7FFF ; - continue ; - } - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x1000)) { - dest [count] = 0x8000 ; - continue ; - } - dest [count] = lrintf (scaled_value) ; - } -} /* f2flac16_clip_array */ - -static void -f2flac24_clip_array (const float *src, FLAC__int32 *dest, int count, int normalize) -{ float normfact, scaled_value ; - - normfact = normalize ? (8.0 * 0x100000) : 1.0 ; - - while (--count >= 0) - { scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFF)) - { dest [count] = 0x7FFFFF ; - continue ; - } ; - - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x100000)) - { dest [count] = 0x800000 ; - continue ; - } - dest [count] = lrintf (scaled_value) ; - } ; - - return ; -} /* f2flac24_clip_array */ - -static void -f2flac8_array (const float *src, FLAC__int32 *dest, int count, int normalize) -{ float normfact = normalize ? (1.0 * 0x7F) : 1.0 ; - - while (--count >= 0) - dest [count] = lrintf (src [count] * normfact) ; -} /* f2flac8_array */ - -static void -f2flac16_array (const float *src, FLAC__int32 *dest, int count, int normalize) -{ float normfact = normalize ? (1.0 * 0x7FFF) : 1.0 ; - - while (--count >= 0) - dest [count] = lrintf (src [count] * normfact) ; -} /* f2flac16_array */ - -static void -f2flac24_array (const float *src, FLAC__int32 *dest, int count, int normalize) -{ float normfact = normalize ? (1.0 * 0x7FFFFF) : 1.0 ; - - while (--count >= 0) - dest [count] = lrintf (src [count] * normfact) ; -} /* f2flac24_array */ - -static sf_count_t -flac_write_d2flac (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ; - void (*convert) (const double *, FLAC__int32 *, int, int) ; - int bufferlen, writecount, thiswrite ; - sf_count_t total = 0 ; - FLAC__int32* buffer = pflac->encbuffer ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_S8 : - convert = (psf->add_clipping) ? d2flac8_clip_array : d2flac8_array ; - break ; - case SF_FORMAT_PCM_16 : - convert = (psf->add_clipping) ? d2flac16_clip_array : d2flac16_array ; - break ; - case SF_FORMAT_PCM_24 : - convert = (psf->add_clipping) ? d2flac24_clip_array : d2flac24_array ; - break ; - default : - return -1 ; - } ; - - bufferlen = ENC_BUFFER_SIZE / (sizeof (FLAC__int32) * psf->sf.channels) ; - bufferlen *= psf->sf.channels ; - - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : (int) len ; - convert (ptr + total, buffer, writecount, psf->norm_double) ; -#ifdef LEGACY_FLAC - if (FLAC__seekable_stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels)) -#else - if (FLAC__stream_encoder_process_interleaved (pflac->fse, buffer, writecount/psf->sf.channels)) -#endif - thiswrite = writecount ; - else - break ; - total += thiswrite ; - if (thiswrite < writecount) - break ; - - len -= thiswrite ; - } ; - - return total ; -} /* flac_write_d2flac */ - -static void -d2flac8_clip_array (const double *src, FLAC__int32 *dest, int count, int normalize) -{ double normfact, scaled_value ; - - normfact = normalize ? (8.0 * 0x10) : 1.0 ; - - while (--count >= 0) - { scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7F)) - { dest [count] = 0x7F ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10)) - { dest [count] = 0x80 ; - continue ; - } ; - dest [count] = lrint (scaled_value) ; - } ; - - return ; -} /* d2flac8_clip_array */ - -static void -d2flac16_clip_array (const double *src, FLAC__int32 *dest, int count, int normalize) -{ double normfact, scaled_value ; - - normfact = normalize ? (8.0 * 0x1000) : 1.0 ; - - while (--count >= 0) - { scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFF)) - { dest [count] = 0x7FFF ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x1000)) - { dest [count] = 0x8000 ; - continue ; - } ; - dest [count] = lrint (scaled_value) ; - } ; - - return ; -} /* d2flac16_clip_array */ - -static void -d2flac24_clip_array (const double *src, FLAC__int32 *dest, int count, int normalize) -{ double normfact, scaled_value ; - - normfact = normalize ? (8.0 * 0x100000) : 1.0 ; - - while (--count >= 0) - { scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFF)) - { dest [count] = 0x7FFFFF ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x100000)) - { dest [count] = 0x800000 ; - continue ; - } ; - dest [count] = lrint (scaled_value) ; - } ; - - return ; -} /* d2flac24_clip_array */ - -static void -d2flac8_array (const double *src, FLAC__int32 *dest, int count, int normalize) -{ double normfact = normalize ? (1.0 * 0x7F) : 1.0 ; - - while (--count >= 0) - dest [count] = lrint (src [count] * normfact) ; -} /* d2flac8_array */ - -static void -d2flac16_array (const double *src, FLAC__int32 *dest, int count, int normalize) -{ double normfact = normalize ? (1.0 * 0x7FFF) : 1.0 ; - - while (--count >= 0) - dest [count] = lrint (src [count] * normfact) ; -} /* d2flac16_array */ - -static void -d2flac24_array (const double *src, FLAC__int32 *dest, int count, int normalize) -{ double normfact = normalize ? (1.0 * 0x7FFFFF) : 1.0 ; - - while (--count >= 0) - dest [count] = lrint (src [count] * normfact) ; -} /* d2flac24_array */ - -static sf_count_t -flac_seek (SF_PRIVATE *psf, int UNUSED (mode), sf_count_t offset) -{ FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->fdata ; - - if (pflac == NULL) - return 0 ; - - if (psf->dataoffset < 0) - { psf->error = SFE_BAD_SEEK ; - return ((sf_count_t) -1) ; - } ; - - pflac->frame = NULL ; - - if (psf->mode == SFM_READ) - { FLAC__uint64 position ; -#ifdef LEGACY_FLAC - if (FLAC__seekable_stream_decoder_seek_absolute (pflac->fsd, offset)) - { FLAC__seekable_stream_decoder_get_decode_position (pflac->fsd, &position) ; - return offset ; - } ; -#else - if (FLAC__stream_decoder_seek_absolute (pflac->fsd, offset)) - { FLAC__stream_decoder_get_decode_position (pflac->fsd, &position) ; - return offset ; - } ; -#endif - - return ((sf_count_t) -1) ; - } ; - - /* Seeking in write mode not yet supported. */ - psf->error = SFE_BAD_SEEK ; - - return ((sf_count_t) -1) ; -} /* flac_seek */ - -#endif - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 46d49617-ebff-42b4-8f66-a0e428147360 -*/ diff --git a/libs/libsndfile/src/float32.c b/libs/libsndfile/src/float32.c deleted file mode 100644 index b376e60f7d..0000000000 --- a/libs/libsndfile/src/float32.c +++ /dev/null @@ -1,961 +0,0 @@ -/* -** Copyright (C) 1999-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" -#include "float_cast.h" - -#if CPU_IS_LITTLE_ENDIAN - #define FLOAT32_READ float32_le_read - #define FLOAT32_WRITE float32_le_write -#elif CPU_IS_BIG_ENDIAN - #define FLOAT32_READ float32_be_read - #define FLOAT32_WRITE float32_be_write -#endif - -/*-------------------------------------------------------------------------------------------- -** Processor floating point capabilities. float32_get_capability () returns one of the -** latter four values. -*/ - -enum -{ FLOAT_UNKNOWN = 0x00, - FLOAT_CAN_RW_LE = 0x12, - FLOAT_CAN_RW_BE = 0x23, - FLOAT_BROKEN_LE = 0x34, - FLOAT_BROKEN_BE = 0x45 -} ; - -/*-------------------------------------------------------------------------------------------- -** Prototypes for private functions. -*/ - -static sf_count_t host_read_f2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t host_read_f2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t host_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t host_read_f2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t host_write_s2f (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t host_write_i2f (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t host_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t host_write_d2f (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -static void float32_peak_update (SF_PRIVATE *psf, const float *buffer, int count, sf_count_t indx) ; - -static sf_count_t replace_read_f2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t replace_read_f2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t replace_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t replace_read_f2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t replace_write_s2f (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t replace_write_i2f (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t replace_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t replace_write_d2f (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -static void bf2f_array (float *buffer, int count) ; -static void f2bf_array (float *buffer, int count) ; - -static int float32_get_capability (SF_PRIVATE *psf) ; - -/*-------------------------------------------------------------------------------------------- -** Exported functions. -*/ - -int -float32_init (SF_PRIVATE *psf) -{ static int float_caps ; - - float_caps = float32_get_capability (psf) ; - - psf->blockwidth = sizeof (float) * psf->sf.channels ; - - if (psf->mode == SFM_READ || psf->mode == SFM_RDWR) - { switch (psf->endian + float_caps) - { case (SF_ENDIAN_BIG + FLOAT_CAN_RW_BE) : - psf->float_endswap = SF_FALSE ; - psf->read_short = host_read_f2s ; - psf->read_int = host_read_f2i ; - psf->read_float = host_read_f ; - psf->read_double = host_read_f2d ; - break ; - - case (SF_ENDIAN_LITTLE + FLOAT_CAN_RW_LE) : - psf->float_endswap = SF_FALSE ; - psf->read_short = host_read_f2s ; - psf->read_int = host_read_f2i ; - psf->read_float = host_read_f ; - psf->read_double = host_read_f2d ; - break ; - - case (SF_ENDIAN_BIG + FLOAT_CAN_RW_LE) : - psf->float_endswap = SF_TRUE ; - psf->read_short = host_read_f2s ; - psf->read_int = host_read_f2i ; - psf->read_float = host_read_f ; - psf->read_double = host_read_f2d ; - break ; - - case (SF_ENDIAN_LITTLE + FLOAT_CAN_RW_BE) : - psf->float_endswap = SF_TRUE ; - psf->read_short = host_read_f2s ; - psf->read_int = host_read_f2i ; - psf->read_float = host_read_f ; - psf->read_double = host_read_f2d ; - break ; - - /* When the CPU is not IEEE compatible. */ - case (SF_ENDIAN_BIG + FLOAT_BROKEN_LE) : - psf->float_endswap = SF_TRUE ; - psf->read_short = replace_read_f2s ; - psf->read_int = replace_read_f2i ; - psf->read_float = replace_read_f ; - psf->read_double = replace_read_f2d ; - break ; - - case (SF_ENDIAN_LITTLE + FLOAT_BROKEN_LE) : - psf->float_endswap = SF_FALSE ; - psf->read_short = replace_read_f2s ; - psf->read_int = replace_read_f2i ; - psf->read_float = replace_read_f ; - psf->read_double = replace_read_f2d ; - break ; - - case (SF_ENDIAN_BIG + FLOAT_BROKEN_BE) : - psf->float_endswap = SF_FALSE ; - psf->read_short = replace_read_f2s ; - psf->read_int = replace_read_f2i ; - psf->read_float = replace_read_f ; - psf->read_double = replace_read_f2d ; - break ; - - case (SF_ENDIAN_LITTLE + FLOAT_BROKEN_BE) : - psf->float_endswap = SF_TRUE ; - psf->read_short = replace_read_f2s ; - psf->read_int = replace_read_f2i ; - psf->read_float = replace_read_f ; - psf->read_double = replace_read_f2d ; - break ; - - default : break ; - } ; - } ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { switch (psf->endian + float_caps) - { case (SF_ENDIAN_LITTLE + FLOAT_CAN_RW_LE) : - psf->float_endswap = SF_FALSE ; - psf->write_short = host_write_s2f ; - psf->write_int = host_write_i2f ; - psf->write_float = host_write_f ; - psf->write_double = host_write_d2f ; - break ; - - case (SF_ENDIAN_BIG + FLOAT_CAN_RW_BE) : - psf->float_endswap = SF_FALSE ; - psf->write_short = host_write_s2f ; - psf->write_int = host_write_i2f ; - psf->write_float = host_write_f ; - psf->write_double = host_write_d2f ; - break ; - - case (SF_ENDIAN_BIG + FLOAT_CAN_RW_LE) : - psf->float_endswap = SF_TRUE ; - psf->write_short = host_write_s2f ; - psf->write_int = host_write_i2f ; - psf->write_float = host_write_f ; - psf->write_double = host_write_d2f ; - break ; - - case (SF_ENDIAN_LITTLE + FLOAT_CAN_RW_BE) : - psf->float_endswap = SF_TRUE ; - psf->write_short = host_write_s2f ; - psf->write_int = host_write_i2f ; - psf->write_float = host_write_f ; - psf->write_double = host_write_d2f ; - break ; - - /* When the CPU is not IEEE compatible. */ - case (SF_ENDIAN_BIG + FLOAT_BROKEN_LE) : - psf->float_endswap = SF_TRUE ; - psf->write_short = replace_write_s2f ; - psf->write_int = replace_write_i2f ; - psf->write_float = replace_write_f ; - psf->write_double = replace_write_d2f ; - break ; - - case (SF_ENDIAN_LITTLE + FLOAT_BROKEN_LE) : - psf->float_endswap = SF_FALSE ; - psf->write_short = replace_write_s2f ; - psf->write_int = replace_write_i2f ; - psf->write_float = replace_write_f ; - psf->write_double = replace_write_d2f ; - break ; - - case (SF_ENDIAN_BIG + FLOAT_BROKEN_BE) : - psf->float_endswap = SF_FALSE ; - psf->write_short = replace_write_s2f ; - psf->write_int = replace_write_i2f ; - psf->write_float = replace_write_f ; - psf->write_double = replace_write_d2f ; - break ; - - case (SF_ENDIAN_LITTLE + FLOAT_BROKEN_BE) : - psf->float_endswap = SF_TRUE ; - psf->write_short = replace_write_s2f ; - psf->write_int = replace_write_i2f ; - psf->write_float = replace_write_f ; - psf->write_double = replace_write_d2f ; - break ; - - default : break ; - } ; - } ; - - if (psf->filelength > psf->dataoffset) - { psf->datalength = (psf->dataend > 0) ? psf->dataend - psf->dataoffset : - psf->filelength - psf->dataoffset ; - } - else - psf->datalength = 0 ; - - psf->sf.frames = psf->datalength / psf->blockwidth ; - - return 0 ; -} /* float32_init */ - -float -float32_be_read (unsigned char *cptr) -{ int exponent, mantissa, negative ; - float fvalue ; - - negative = cptr [0] & 0x80 ; - exponent = ((cptr [0] & 0x7F) << 1) | ((cptr [1] & 0x80) ? 1 : 0) ; - mantissa = ((cptr [1] & 0x7F) << 16) | (cptr [2] << 8) | (cptr [3]) ; - - if (! (exponent || mantissa)) - return 0.0 ; - - mantissa |= 0x800000 ; - exponent = exponent ? exponent - 127 : 0 ; - - fvalue = mantissa ? ((float) mantissa) / ((float) 0x800000) : 0.0 ; - - if (negative) - fvalue *= -1 ; - - if (exponent > 0) - fvalue *= (1 << exponent) ; - else if (exponent < 0) - fvalue /= (1 << abs (exponent)) ; - - return fvalue ; -} /* float32_be_read */ - -float -float32_le_read (unsigned char *cptr) -{ int exponent, mantissa, negative ; - float fvalue ; - - negative = cptr [3] & 0x80 ; - exponent = ((cptr [3] & 0x7F) << 1) | ((cptr [2] & 0x80) ? 1 : 0) ; - mantissa = ((cptr [2] & 0x7F) << 16) | (cptr [1] << 8) | (cptr [0]) ; - - if (! (exponent || mantissa)) - return 0.0 ; - - mantissa |= 0x800000 ; - exponent = exponent ? exponent - 127 : 0 ; - - fvalue = mantissa ? ((float) mantissa) / ((float) 0x800000) : 0.0 ; - - if (negative) - fvalue *= -1 ; - - if (exponent > 0) - fvalue *= (1 << exponent) ; - else if (exponent < 0) - fvalue /= (1 << abs (exponent)) ; - - return fvalue ; -} /* float32_le_read */ - -void -float32_le_write (float in, unsigned char *out) -{ int exponent, mantissa, negative = 0 ; - - memset (out, 0, sizeof (int)) ; - - if (fabs (in) < 1e-30) - return ; - - if (in < 0.0) - { in *= -1.0 ; - negative = 1 ; - } ; - - in = frexp (in, &exponent) ; - - exponent += 126 ; - - in *= (float) 0x1000000 ; - mantissa = (((int) in) & 0x7FFFFF) ; - - if (negative) - out [3] |= 0x80 ; - - if (exponent & 0x01) - out [2] |= 0x80 ; - - out [0] = mantissa & 0xFF ; - out [1] = (mantissa >> 8) & 0xFF ; - out [2] |= (mantissa >> 16) & 0x7F ; - out [3] |= (exponent >> 1) & 0x7F ; - - return ; -} /* float32_le_write */ - -void -float32_be_write (float in, unsigned char *out) -{ int exponent, mantissa, negative = 0 ; - - memset (out, 0, sizeof (int)) ; - - if (fabs (in) < 1e-30) - return ; - - if (in < 0.0) - { in *= -1.0 ; - negative = 1 ; - } ; - - in = frexp (in, &exponent) ; - - exponent += 126 ; - - in *= (float) 0x1000000 ; - mantissa = (((int) in) & 0x7FFFFF) ; - - if (negative) - out [0] |= 0x80 ; - - if (exponent & 0x01) - out [1] |= 0x80 ; - - out [3] = mantissa & 0xFF ; - out [2] = (mantissa >> 8) & 0xFF ; - out [1] |= (mantissa >> 16) & 0x7F ; - out [0] |= (exponent >> 1) & 0x7F ; - - return ; -} /* float32_be_write */ - -/*============================================================================================== -** Private functions. -*/ - -static void -float32_peak_update (SF_PRIVATE *psf, const float *buffer, int count, sf_count_t indx) -{ int chan ; - int k, position ; - float fmaxval ; - - for (chan = 0 ; chan < psf->sf.channels ; chan++) - { fmaxval = fabs (buffer [chan]) ; - position = 0 ; - for (k = chan ; k < count ; k += psf->sf.channels) - if (fmaxval < fabs (buffer [k])) - { fmaxval = fabs (buffer [k]) ; - position = k ; - } ; - - if (fmaxval > psf->peak_info->peaks [chan].value) - { psf->peak_info->peaks [chan].value = fmaxval ; - psf->peak_info->peaks [chan].position = psf->write_current + indx + (position / psf->sf.channels) ; - } ; - } ; - - return ; -} /* float32_peak_update */ - -static int -float32_get_capability (SF_PRIVATE *psf) -{ union - { float f ; - int i ; - unsigned char c [4] ; - } data ; - - data.f = (float) 1.23456789 ; /* Some abitrary value. */ - - if (! psf->ieee_replace) - { /* If this test is true ints and floats are compatible and little endian. */ - if (data.c [0] == 0x52 && data.c [1] == 0x06 && data.c [2] == 0x9e && data.c [3] == 0x3f) - return FLOAT_CAN_RW_LE ; - - /* If this test is true ints and floats are compatible and big endian. */ - if (data.c [3] == 0x52 && data.c [2] == 0x06 && data.c [1] == 0x9e && data.c [0] == 0x3f) - return FLOAT_CAN_RW_BE ; - } ; - - /* Floats are broken. Don't expect reading or writing to be fast. */ - psf_log_printf (psf, "Using IEEE replacement code for float.\n") ; - - return (CPU_IS_LITTLE_ENDIAN) ? FLOAT_BROKEN_LE : FLOAT_BROKEN_BE ; -} /* float32_get_capability */ - -/*======================================================================================= -*/ - -static inline void -f2s_array (const float *src, int count, short *dest, float scale) -{ while (--count >= 0) - { dest [count] = lrintf (scale * src [count]) ; - } ; -} /* f2s_array */ - -static inline void -f2i_array (const float *src, int count, int *dest, float scale) -{ while (--count >= 0) - { dest [count] = lrintf (scale * src [count]) ; - } ; -} /* f2i_array */ - -static inline void -f2d_array (const float *src, int count, double *dest) -{ while (--count >= 0) - { dest [count] = src [count] ; - } ; -} /* f2d_array */ - -static inline void -s2f_array (const short *src, float *dest, int count) -{ while (--count >= 0) - { dest [count] = src [count] ; - } ; - -} /* s2f_array */ - -static inline void -i2f_array (const int *src, float *dest, int count) -{ while (--count >= 0) - { dest [count] = src [count] ; - } ; -} /* i2f_array */ - -static inline void -d2f_array (const double *src, float *dest, int count) -{ while (--count >= 0) - { dest [count] = src [count] ; - } ; -} /* d2f_array */ - -/*---------------------------------------------------------------------------------------------- -*/ - -static sf_count_t -host_read_f2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - float scale ; - - bufferlen = ARRAY_LEN (psf->u.fbuf) ; - scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFF / psf->float_max ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ; - -/* Fix me : Need lef2s_array */ - if (psf->float_endswap == SF_TRUE) - endswap_int_array (psf->u.ibuf, bufferlen) ; - - f2s_array (psf->u.fbuf, readcount, ptr + total, scale) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* host_read_f2s */ - -static sf_count_t -host_read_f2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - float scale ; - - bufferlen = ARRAY_LEN (psf->u.fbuf) ; - scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFFFFFF / psf->float_max ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ; - - if (psf->float_endswap == SF_TRUE) - endswap_int_array (psf->u.ibuf, bufferlen) ; - - f2i_array (psf->u.fbuf, readcount, ptr + total, scale) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* host_read_f2i */ - -static sf_count_t -host_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - if (psf->float_endswap != SF_TRUE) - return psf_fread (ptr, sizeof (float), len, psf) ; - - bufferlen = ARRAY_LEN (psf->u.fbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ; - - endswap_int_copy ((int*) (ptr + total), psf->u.ibuf, readcount) ; - - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* host_read_f */ - -static sf_count_t -host_read_f2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.fbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ; - - if (psf->float_endswap == SF_TRUE) - endswap_int_array (psf->u.ibuf, bufferlen) ; - -/* Fix me : Need lef2d_array */ - f2d_array (psf->u.fbuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* host_read_f2d */ - -static sf_count_t -host_write_s2f (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.fbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - s2f_array (ptr + total, psf->u.fbuf, bufferlen) ; - - if (psf->peak_info) - float32_peak_update (psf, psf->u.fbuf, bufferlen, total / psf->sf.channels) ; - - if (psf->float_endswap == SF_TRUE) - endswap_int_array (psf->u.ibuf, bufferlen) ; - - writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* host_write_s2f */ - -static sf_count_t -host_write_i2f (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.fbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - i2f_array (ptr + total, psf->u.fbuf, bufferlen) ; - - if (psf->peak_info) - float32_peak_update (psf, psf->u.fbuf, bufferlen, total / psf->sf.channels) ; - - if (psf->float_endswap == SF_TRUE) - endswap_int_array (psf->u.ibuf, bufferlen) ; - - writecount = psf_fwrite (psf->u.fbuf, sizeof (float) , bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* host_write_i2f */ - -static sf_count_t -host_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - if (psf->peak_info) - float32_peak_update (psf, ptr, len, 0) ; - - if (psf->float_endswap != SF_TRUE) - return psf_fwrite (ptr, sizeof (float), len, psf) ; - - bufferlen = ARRAY_LEN (psf->u.fbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - - endswap_int_copy (psf->u.ibuf, (const int*) (ptr + total), bufferlen) ; - - writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* host_write_f */ - -static sf_count_t -host_write_d2f (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.fbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - - d2f_array (ptr + total, psf->u.fbuf, bufferlen) ; - - if (psf->peak_info) - float32_peak_update (psf, psf->u.fbuf, bufferlen, total / psf->sf.channels) ; - - if (psf->float_endswap == SF_TRUE) - endswap_int_array (psf->u.ibuf, bufferlen) ; - - writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* host_write_d2f */ - -/*======================================================================================= -*/ - -static sf_count_t -replace_read_f2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - float scale ; - - bufferlen = ARRAY_LEN (psf->u.fbuf) ; - scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFF / psf->float_max ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ; - - if (psf->float_endswap == SF_TRUE) - endswap_int_array (psf->u.ibuf, bufferlen) ; - - bf2f_array (psf->u.fbuf, bufferlen) ; - - f2s_array (psf->u.fbuf, readcount, ptr + total, scale) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* replace_read_f2s */ - -static sf_count_t -replace_read_f2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - float scale ; - - bufferlen = ARRAY_LEN (psf->u.fbuf) ; - scale = (psf->float_int_mult == 0) ? 1.0 : 0x7FFF / psf->float_max ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ; - - if (psf->float_endswap == SF_TRUE) - endswap_int_array (psf->u.ibuf, bufferlen) ; - - bf2f_array (psf->u.fbuf, bufferlen) ; - - f2i_array (psf->u.fbuf, readcount, ptr + total, scale) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* replace_read_f2i */ - -static sf_count_t -replace_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - /* FIX THIS */ - - bufferlen = ARRAY_LEN (psf->u.fbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ; - - if (psf->float_endswap == SF_TRUE) - endswap_int_array (psf->u.ibuf, bufferlen) ; - - bf2f_array (psf->u.fbuf, bufferlen) ; - - memcpy (ptr + total, psf->u.fbuf, bufferlen * sizeof (float)) ; - - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* replace_read_f */ - -static sf_count_t -replace_read_f2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.fbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.fbuf, sizeof (float), bufferlen, psf) ; - - if (psf->float_endswap == SF_TRUE) - endswap_int_array (psf->u.ibuf, bufferlen) ; - - bf2f_array (psf->u.fbuf, bufferlen) ; - - f2d_array (psf->u.fbuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* replace_read_f2d */ - -static sf_count_t -replace_write_s2f (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.fbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - s2f_array (ptr + total, psf->u.fbuf, bufferlen) ; - - if (psf->peak_info) - float32_peak_update (psf, psf->u.fbuf, bufferlen, total / psf->sf.channels) ; - - f2bf_array (psf->u.fbuf, bufferlen) ; - - if (psf->float_endswap == SF_TRUE) - endswap_int_array (psf->u.ibuf, bufferlen) ; - - writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* replace_write_s2f */ - -static sf_count_t -replace_write_i2f (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.fbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - i2f_array (ptr + total, psf->u.fbuf, bufferlen) ; - - if (psf->peak_info) - float32_peak_update (psf, psf->u.fbuf, bufferlen, total / psf->sf.channels) ; - - f2bf_array (psf->u.fbuf, bufferlen) ; - - if (psf->float_endswap == SF_TRUE) - endswap_int_array (psf->u.ibuf, bufferlen) ; - - writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* replace_write_i2f */ - -static sf_count_t -replace_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - /* FIX THIS */ - if (psf->peak_info) - float32_peak_update (psf, ptr, len, 0) ; - - bufferlen = ARRAY_LEN (psf->u.fbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - - memcpy (psf->u.fbuf, ptr + total, bufferlen * sizeof (float)) ; - - f2bf_array (psf->u.fbuf, bufferlen) ; - - if (psf->float_endswap == SF_TRUE) - endswap_int_array (psf->u.ibuf, bufferlen) ; - - writecount = psf_fwrite (psf->u.fbuf, sizeof (float) , bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* replace_write_f */ - -static sf_count_t -replace_write_d2f (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.fbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - d2f_array (ptr + total, psf->u.fbuf, bufferlen) ; - - if (psf->peak_info) - float32_peak_update (psf, psf->u.fbuf, bufferlen, total / psf->sf.channels) ; - - f2bf_array (psf->u.fbuf, bufferlen) ; - - if (psf->float_endswap == SF_TRUE) - endswap_int_array (psf->u.ibuf, bufferlen) ; - - writecount = psf_fwrite (psf->u.fbuf, sizeof (float), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* replace_write_d2f */ - -/*---------------------------------------------------------------------------------------------- -*/ - -static void -bf2f_array (float *buffer, int count) -{ while (--count >= 0) - { buffer [count] = FLOAT32_READ ((unsigned char *) (buffer + count)) ; - } ; -} /* bf2f_array */ - -static void -f2bf_array (float *buffer, int count) -{ while (--count >= 0) - { FLOAT32_WRITE (buffer [count], (unsigned char*) (buffer + count)) ; - } ; -} /* f2bf_array */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: b6c34917-488c-4145-9648-f4371fc4c889 -*/ diff --git a/libs/libsndfile/src/float_cast.h b/libs/libsndfile/src/float_cast.h deleted file mode 100644 index 099670a365..0000000000 --- a/libs/libsndfile/src/float_cast.h +++ /dev/null @@ -1,262 +0,0 @@ -/* -** Copyright (C) 2001-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -/* Version 1.4 */ - -#ifndef FLOAT_CAST_HEADER -#define FLOAT_CAST_HEADER - -/*============================================================================ -** On Intel Pentium processors (especially PIII and probably P4), converting -** from float to int is very slow. To meet the C specs, the code produced by -** most C compilers targeting Pentium needs to change the FPU rounding mode -** before the float to int conversion is performed. -** -** Changing the FPU rounding mode causes the FPU pipeline to be flushed. It -** is this flushing of the pipeline which is so slow. -** -** Fortunately the ISO C99 specifications define the functions lrint, lrintf, -** llrint and llrintf which fix this problem as a side effect. -** -** On Unix-like systems, the configure process should have detected the -** presence of these functions. If they weren't found we have to replace them -** here with a standard C cast. -*/ - -/* -** The C99 prototypes for lrint and lrintf are as follows: -** -** long int lrintf (float x) ; -** long int lrint (double x) ; -*/ - -#include "sfconfig.h" - -/* -** The presence of the required functions are detected during the configure -** process and the values HAVE_LRINT and HAVE_LRINTF are set accordingly in -** the sfconfig.h file. -*/ - -#define HAVE_LRINT_REPLACEMENT 0 - -#if (HAVE_LRINT && HAVE_LRINTF) - - /* - ** These defines enable functionality introduced with the 1999 ISO C - ** standard. They must be defined before the inclusion of math.h to - ** engage them. If optimisation is enabled, these functions will be - ** inlined. With optimisation switched off, you have to link in the - ** maths library using -lm. - */ - - #define _ISOC9X_SOURCE 1 - #define _ISOC99_SOURCE 1 - - #define __USE_ISOC9X 1 - #define __USE_ISOC99 1 - - #include - -#elif (defined (__CYGWIN__)) - - #include - - #undef HAVE_LRINT_REPLACEMENT - #define HAVE_LRINT_REPLACEMENT 1 - - #undef lrint - #undef lrintf - - #define lrint double2int - #define lrintf float2int - - /* - ** The native CYGWIN lrint and lrintf functions are buggy: - ** http://sourceware.org/ml/cygwin/2005-06/msg00153.html - ** http://sourceware.org/ml/cygwin/2005-09/msg00047.html - ** and slow. - ** These functions (pulled from the Public Domain MinGW math.h header) - ** replace the native versions. - */ - - static inline long double2int (double in) - { long retval ; - - __asm__ __volatile__ - ( "fistpl %0" - : "=m" (retval) - : "t" (in) - : "st" - ) ; - - return retval ; - } /* double2int */ - - static inline long float2int (float in) - { long retval ; - - __asm__ __volatile__ - ( "fistpl %0" - : "=m" (retval) - : "t" (in) - : "st" - ) ; - - return retval ; - } /* float2int */ - -#elif (defined (WIN32) || defined (_WIN32)) - - #undef HAVE_LRINT_REPLACEMENT - #define HAVE_LRINT_REPLACEMENT 1 - - #include - - /* - ** Win32 doesn't seem to have these functions. - ** Therefore implement inline versions of these functions here. - */ - - __inline long int - lrint (double flt) - { int intgr ; - - _asm - { fld flt - fistp intgr - } ; - - return intgr ; - } - - __inline long int - lrintf (float flt) - { int intgr ; - - _asm - { fld flt - fistp intgr - } ; - - return intgr ; - } - -#elif (defined (__MWERKS__) && defined (macintosh)) - - /* This MacOS 9 solution was provided by Stephane Letz */ - - #undef HAVE_LRINT_REPLACEMENT - #define HAVE_LRINT_REPLACEMENT 1 - #include - - #undef lrint - #undef lrintf - - #define lrint double2int - #define lrintf float2int - - inline int - float2int (register float in) - { long res [2] ; - - asm - { fctiw in, in - stfd in, res - } - return res [1] ; - } /* float2int */ - - inline int - double2int (register double in) - { long res [2] ; - - asm - { fctiw in, in - stfd in, res - } - return res [1] ; - } /* double2int */ - -#elif (defined (__MACH__) && defined (__APPLE__)) - - /* For Apple MacOSX. */ - - #undef HAVE_LRINT_REPLACEMENT - #define HAVE_LRINT_REPLACEMENT 1 - #include - - #undef lrint - #undef lrintf - - #define lrint double2int - #define lrintf float2int - - inline static long - float2int (register float in) - { int res [2] ; - - __asm__ __volatile__ - ( "fctiw %1, %1\n\t" - "stfd %1, %0" - : "=m" (res) /* Output */ - : "f" (in) /* Input */ - : "memory" - ) ; - - return res [1] ; - } /* lrintf */ - - inline static long - double2int (register double in) - { int res [2] ; - - __asm__ __volatile__ - ( "fctiw %1, %1\n\t" - "stfd %1, %0" - : "=m" (res) /* Output */ - : "f" (in) /* Input */ - : "memory" - ) ; - - return res [1] ; - } /* lrint */ - -#else - #ifndef __sgi - #warning "Don't have the functions lrint() and lrintf()." - #warning "Replacing these functions with a standard C cast." - #endif - - #include - - #define lrint(dbl) ((long) (dbl)) - #define lrintf(flt) ((long) (flt)) - -#endif - - -#endif /* FLOAT_CAST_HEADER */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 42db1693-ff61-4051-bac1-e4d24c4e30b7 -*/ diff --git a/libs/libsndfile/src/g72x.c b/libs/libsndfile/src/g72x.c deleted file mode 100644 index dbbf9dae52..0000000000 --- a/libs/libsndfile/src/g72x.c +++ /dev/null @@ -1,615 +0,0 @@ -/* -** Copyright (C) 1999-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "float_cast.h" -#include "common.h" -#include "G72x/g72x.h" - -/* This struct is private to the G72x code. */ -struct g72x_state ; -typedef struct g72x_state G72x_STATE ; - -typedef struct -{ /* Private data. Don't mess with it. */ - struct g72x_state * private ; - - /* Public data. Read only. */ - int blocksize, samplesperblock, bytesperblock ; - - /* Public data. Read and write. */ - int blocks_total, block_curr, sample_curr ; - unsigned char block [G72x_BLOCK_SIZE] ; - short samples [G72x_BLOCK_SIZE] ; -} G72x_PRIVATE ; - -static int psf_g72x_decode_block (SF_PRIVATE *psf, G72x_PRIVATE *pg72x) ; -static int psf_g72x_encode_block (SF_PRIVATE *psf, G72x_PRIVATE *pg72x) ; - -static sf_count_t g72x_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t g72x_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t g72x_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t g72x_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t g72x_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t g72x_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t g72x_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t g72x_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -static sf_count_t g72x_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ; - -static int g72x_close (SF_PRIVATE *psf) ; - - -/*============================================================================================ -** WAV G721 Reader initialisation function. -*/ - -int -g72x_init (SF_PRIVATE * psf) -{ G72x_PRIVATE *pg72x ; - int bitspersample, bytesperblock, codec ; - - if (psf->fdata != NULL) - { psf_log_printf (psf, "*** psf->fdata is not NULL.\n") ; - return SFE_INTERNAL ; - } ; - - psf->sf.seekable = SF_FALSE ; - - if (psf->sf.channels != 1) - return SFE_G72X_NOT_MONO ; - - if ((pg72x = calloc (1, sizeof (G72x_PRIVATE))) == NULL) - return SFE_MALLOC_FAILED ; - - psf->fdata = (void*) pg72x ; - - pg72x->block_curr = 0 ; - pg72x->sample_curr = 0 ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_G721_32 : - codec = G721_32_BITS_PER_SAMPLE ; - bytesperblock = G721_32_BYTES_PER_BLOCK ; - bitspersample = G721_32_BITS_PER_SAMPLE ; - break ; - - case SF_FORMAT_G723_24: - codec = G723_24_BITS_PER_SAMPLE ; - bytesperblock = G723_24_BYTES_PER_BLOCK ; - bitspersample = G723_24_BITS_PER_SAMPLE ; - break ; - - case SF_FORMAT_G723_40: - codec = G723_40_BITS_PER_SAMPLE ; - bytesperblock = G723_40_BYTES_PER_BLOCK ; - bitspersample = G723_40_BITS_PER_SAMPLE ; - break ; - - default : return SFE_UNIMPLEMENTED ; - } ; - - psf->blockwidth = psf->bytewidth = 1 ; - - psf->filelength = psf_get_filelen (psf) ; - if (psf->filelength < psf->dataoffset) - psf->filelength = psf->dataoffset ; - - psf->datalength = psf->filelength - psf->dataoffset ; - if (psf->dataend > 0) - psf->datalength -= psf->filelength - psf->dataend ; - - if (psf->mode == SFM_READ) - { pg72x->private = g72x_reader_init (codec, &(pg72x->blocksize), &(pg72x->samplesperblock)) ; - if (pg72x->private == NULL) - return SFE_MALLOC_FAILED ; - - pg72x->bytesperblock = bytesperblock ; - - psf->read_short = g72x_read_s ; - psf->read_int = g72x_read_i ; - psf->read_float = g72x_read_f ; - psf->read_double = g72x_read_d ; - - psf->seek = g72x_seek ; - - if (psf->datalength % pg72x->blocksize) - { psf_log_printf (psf, "*** Odd psf->datalength (%D) should be a multiple of %d\n", psf->datalength, pg72x->blocksize) ; - pg72x->blocks_total = (psf->datalength / pg72x->blocksize) + 1 ; - } - else - pg72x->blocks_total = psf->datalength / pg72x->blocksize ; - - psf->sf.frames = pg72x->blocks_total * pg72x->samplesperblock ; - - psf_g72x_decode_block (psf, pg72x) ; - } - else if (psf->mode == SFM_WRITE) - { pg72x->private = g72x_writer_init (codec, &(pg72x->blocksize), &(pg72x->samplesperblock)) ; - if (pg72x->private == NULL) - return SFE_MALLOC_FAILED ; - - pg72x->bytesperblock = bytesperblock ; - - psf->write_short = g72x_write_s ; - psf->write_int = g72x_write_i ; - psf->write_float = g72x_write_f ; - psf->write_double = g72x_write_d ; - - if (psf->datalength % pg72x->blocksize) - pg72x->blocks_total = (psf->datalength / pg72x->blocksize) + 1 ; - else - pg72x->blocks_total = psf->datalength / pg72x->blocksize ; - - if (psf->datalength > 0) - psf->sf.frames = (8 * psf->datalength) / bitspersample ; - - if ((psf->sf.frames * bitspersample) / 8 != psf->datalength) - psf_log_printf (psf, "*** Warning : weird psf->datalength.\n") ; - } ; - - psf->codec_close = g72x_close ; - - return 0 ; -} /* g72x_init */ - -/*============================================================================================ -** G721 Read Functions. -*/ - -static int -psf_g72x_decode_block (SF_PRIVATE *psf, G72x_PRIVATE *pg72x) -{ int k ; - - pg72x->block_curr ++ ; - pg72x->sample_curr = 0 ; - - if (pg72x->block_curr > pg72x->blocks_total) - { memset (pg72x->samples, 0, G72x_BLOCK_SIZE * sizeof (short)) ; - return 1 ; - } ; - - if ((k = psf_fread (pg72x->block, 1, pg72x->bytesperblock, psf)) != pg72x->bytesperblock) - psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, pg72x->bytesperblock) ; - - pg72x->blocksize = k ; - g72x_decode_block (pg72x->private, pg72x->block, pg72x->samples) ; - - return 1 ; -} /* psf_g72x_decode_block */ - -static int -g72x_read_block (SF_PRIVATE *psf, G72x_PRIVATE *pg72x, short *ptr, int len) -{ int count, total = 0, indx = 0 ; - - while (indx < len) - { if (pg72x->block_curr > pg72x->blocks_total) - { memset (&(ptr [indx]), 0, (len - indx) * sizeof (short)) ; - return total ; - } ; - - if (pg72x->sample_curr >= pg72x->samplesperblock) - psf_g72x_decode_block (psf, pg72x) ; - - count = pg72x->samplesperblock - pg72x->sample_curr ; - count = (len - indx > count) ? count : len - indx ; - - memcpy (&(ptr [indx]), &(pg72x->samples [pg72x->sample_curr]), count * sizeof (short)) ; - indx += count ; - pg72x->sample_curr += count ; - total = indx ; - } ; - - return total ; -} /* g72x_read_block */ - -static sf_count_t -g72x_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ G72x_PRIVATE *pg72x ; - int readcount, count ; - sf_count_t total = 0 ; - - if (psf->fdata == NULL) - return 0 ; - pg72x = (G72x_PRIVATE*) psf->fdata ; - - while (len > 0) - { readcount = (len > 0x10000000) ? 0x10000000 : (int) len ; - - count = g72x_read_block (psf, pg72x, ptr, readcount) ; - - total += count ; - len -= count ; - - if (count != readcount) - break ; - } ; - - return total ; -} /* g72x_read_s */ - -static sf_count_t -g72x_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ G72x_PRIVATE *pg72x ; - short *sptr ; - int k, bufferlen, readcount = 0, count ; - sf_count_t total = 0 ; - - if (psf->fdata == NULL) - return 0 ; - pg72x = (G72x_PRIVATE*) psf->fdata ; - - sptr = psf->u.sbuf ; - bufferlen = SF_BUFFER_LEN / sizeof (short) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = g72x_read_block (psf, pg72x, sptr, readcount) ; - - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = sptr [k] << 16 ; - - total += count ; - len -= readcount ; - if (count != readcount) - break ; - } ; - - return total ; -} /* g72x_read_i */ - -static sf_count_t -g72x_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ G72x_PRIVATE *pg72x ; - short *sptr ; - int k, bufferlen, readcount = 0, count ; - sf_count_t total = 0 ; - float normfact ; - - if (psf->fdata == NULL) - return 0 ; - pg72x = (G72x_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ; - - sptr = psf->u.sbuf ; - bufferlen = SF_BUFFER_LEN / sizeof (short) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = g72x_read_block (psf, pg72x, sptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = normfact * sptr [k] ; - - total += count ; - len -= readcount ; - if (count != readcount) - break ; - } ; - - return total ; -} /* g72x_read_f */ - -static sf_count_t -g72x_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ G72x_PRIVATE *pg72x ; - short *sptr ; - int k, bufferlen, readcount = 0, count ; - sf_count_t total = 0 ; - double normfact ; - - if (psf->fdata == NULL) - return 0 ; - pg72x = (G72x_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ; - - sptr = psf->u.sbuf ; - bufferlen = SF_BUFFER_LEN / sizeof (short) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = g72x_read_block (psf, pg72x, sptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = normfact * (double) (sptr [k]) ; - - total += count ; - len -= readcount ; - if (count != readcount) - break ; - } ; - - return total ; -} /* g72x_read_d */ - -static sf_count_t -g72x_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) -{ - /* Prevent compiler warnings. */ - mode ++ ; - offset ++ ; - - psf_log_printf (psf, "seek unsupported\n") ; - - /* No simple solution. To do properly, would need to seek - ** to start of file and decode everything up to seek position. - ** Maybe implement SEEK_SET to 0 only? - */ - return 0 ; - -/* -** G72x_PRIVATE *pg72x ; -** int newblock, newsample, sample_curr ; -** -** if (psf->fdata == NULL) -** return 0 ; -** pg72x = (G72x_PRIVATE*) psf->fdata ; -** -** if (! (psf->datalength && psf->dataoffset)) -** { psf->error = SFE_BAD_SEEK ; -** return PSF_SEEK_ERROR ; -** } ; -** -** sample_curr = (8 * psf->datalength) / G721_32_BITS_PER_SAMPLE ; -** -** switch (whence) -** { case SEEK_SET : -** if (offset < 0 || offset > sample_curr) -** { psf->error = SFE_BAD_SEEK ; -** return PSF_SEEK_ERROR ; -** } ; -** newblock = offset / pg72x->samplesperblock ; -** newsample = offset % pg72x->samplesperblock ; -** break ; -** -** case SEEK_CUR : -** if (psf->current + offset < 0 || psf->current + offset > sample_curr) -** { psf->error = SFE_BAD_SEEK ; -** return PSF_SEEK_ERROR ; -** } ; -** newblock = (8 * (psf->current + offset)) / pg72x->samplesperblock ; -** newsample = (8 * (psf->current + offset)) % pg72x->samplesperblock ; -** break ; -** -** case SEEK_END : -** if (offset > 0 || sample_curr + offset < 0) -** { psf->error = SFE_BAD_SEEK ; -** return PSF_SEEK_ERROR ; -** } ; -** newblock = (sample_curr + offset) / pg72x->samplesperblock ; -** newsample = (sample_curr + offset) % pg72x->samplesperblock ; -** break ; -** -** default : -** psf->error = SFE_BAD_SEEK ; -** return PSF_SEEK_ERROR ; -** } ; -** -** if (psf->mode == SFM_READ) -** { psf_fseek (psf, psf->dataoffset + newblock * pg72x->blocksize, SEEK_SET) ; -** pg72x->block_curr = newblock ; -** psf_g72x_decode_block (psf, pg72x) ; -** pg72x->sample_curr = newsample ; -** } -** else -** { /+* What to do about write??? *+/ -** psf->error = SFE_BAD_SEEK ; -** return PSF_SEEK_ERROR ; -** } ; -** -** psf->current = newblock * pg72x->samplesperblock + newsample ; -** return psf->current ; -** -*/ -} /* g72x_seek */ - -/*========================================================================================== -** G72x Write Functions. -*/ - -static int -psf_g72x_encode_block (SF_PRIVATE *psf, G72x_PRIVATE *pg72x) -{ int k ; - - /* Encode the samples. */ - g72x_encode_block (pg72x->private, pg72x->samples, pg72x->block) ; - - /* Write the block to disk. */ - if ((k = psf_fwrite (pg72x->block, 1, pg72x->blocksize, psf)) != pg72x->blocksize) - psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, pg72x->blocksize) ; - - pg72x->sample_curr = 0 ; - pg72x->block_curr ++ ; - - /* Set samples to zero for next block. */ - memset (pg72x->samples, 0, G72x_BLOCK_SIZE * sizeof (short)) ; - - return 1 ; -} /* psf_g72x_encode_block */ - -static int -g72x_write_block (SF_PRIVATE *psf, G72x_PRIVATE *pg72x, const short *ptr, int len) -{ int count, total = 0, indx = 0 ; - - while (indx < len) - { count = pg72x->samplesperblock - pg72x->sample_curr ; - - if (count > len - indx) - count = len - indx ; - - memcpy (&(pg72x->samples [pg72x->sample_curr]), &(ptr [indx]), count * sizeof (short)) ; - indx += count ; - pg72x->sample_curr += count ; - total = indx ; - - if (pg72x->sample_curr >= pg72x->samplesperblock) - psf_g72x_encode_block (psf, pg72x) ; - } ; - - return total ; -} /* g72x_write_block */ - -static sf_count_t -g72x_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ G72x_PRIVATE *pg72x ; - int writecount, count ; - sf_count_t total = 0 ; - - if (psf->fdata == NULL) - return 0 ; - pg72x = (G72x_PRIVATE*) psf->fdata ; - - while (len > 0) - { writecount = (len > 0x10000000) ? 0x10000000 : (int) len ; - - count = g72x_write_block (psf, pg72x, ptr, writecount) ; - - total += count ; - len -= count ; - if (count != writecount) - break ; - } ; - - return total ; -} /* g72x_write_s */ - -static sf_count_t -g72x_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ G72x_PRIVATE *pg72x ; - short *sptr ; - int k, bufferlen, writecount = 0, count ; - sf_count_t total = 0 ; - - if (psf->fdata == NULL) - return 0 ; - pg72x = (G72x_PRIVATE*) psf->fdata ; - - sptr = psf->u.sbuf ; - bufferlen = ((SF_BUFFER_LEN / psf->blockwidth) * psf->blockwidth) / sizeof (short) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - sptr [k] = ptr [total + k] >> 16 ; - count = g72x_write_block (psf, pg72x, sptr, writecount) ; - - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - return total ; -} /* g72x_write_i */ - -static sf_count_t -g72x_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ G72x_PRIVATE *pg72x ; - short *sptr ; - int k, bufferlen, writecount = 0, count ; - sf_count_t total = 0 ; - float normfact ; - - if (psf->fdata == NULL) - return 0 ; - pg72x = (G72x_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x8000) : 1.0 ; - - sptr = psf->u.sbuf ; - bufferlen = ((SF_BUFFER_LEN / psf->blockwidth) * psf->blockwidth) / sizeof (short) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - sptr [k] = lrintf (normfact * ptr [total + k]) ; - count = g72x_write_block (psf, pg72x, sptr, writecount) ; - - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - - return total ; -} /* g72x_write_f */ - -static sf_count_t -g72x_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ G72x_PRIVATE *pg72x ; - short *sptr ; - int k, bufferlen, writecount = 0, count ; - sf_count_t total = 0 ; - double normfact ; - - if (psf->fdata == NULL) - return 0 ; - pg72x = (G72x_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x8000) : 1.0 ; - - sptr = psf->u.sbuf ; - bufferlen = ((SF_BUFFER_LEN / psf->blockwidth) * psf->blockwidth) / sizeof (short) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - sptr [k] = lrint (normfact * ptr [total + k]) ; - count = g72x_write_block (psf, pg72x, sptr, writecount) ; - - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - - return total ; -} /* g72x_write_d */ - -static int -g72x_close (SF_PRIVATE *psf) -{ G72x_PRIVATE *pg72x ; - - pg72x = (G72x_PRIVATE*) psf->fdata ; - - if (psf->mode == SFM_WRITE) - { /* If a block has been partially assembled, write it out - ** as the final block. - */ - - if (pg72x->sample_curr && pg72x->sample_curr < G72x_BLOCK_SIZE) - psf_g72x_encode_block (psf, pg72x) ; - - if (psf->write_header) - psf->write_header (psf, SF_FALSE) ; - } ; - - /* Only free the pointer allocated by g72x_(reader|writer)_init. */ - free (pg72x->private) ; - - return 0 ; -} /* g72x_close */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 3cc5439e-7247-486b-b2e6-11a4affa5744 -*/ diff --git a/libs/libsndfile/src/gsm610.c b/libs/libsndfile/src/gsm610.c deleted file mode 100644 index db954ccb18..0000000000 --- a/libs/libsndfile/src/gsm610.c +++ /dev/null @@ -1,628 +0,0 @@ -/* -** Copyright (C) 1999-2006 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "float_cast.h" -#include "common.h" -#include "wav_w64.h" -#include "GSM610/gsm.h" - -#define GSM610_BLOCKSIZE 33 -#define GSM610_SAMPLES 160 - -typedef struct gsm610_tag -{ int blocks ; - int blockcount, samplecount ; - int samplesperblock, blocksize ; - - int (*decode_block) (SF_PRIVATE *psf, struct gsm610_tag *pgsm610) ; - int (*encode_block) (SF_PRIVATE *psf, struct gsm610_tag *pgsm610) ; - - short samples [WAV_W64_GSM610_SAMPLES] ; - unsigned char block [WAV_W64_GSM610_BLOCKSIZE] ; - - /* Damn I hate typedef-ed pointers; yes, gsm is a pointer type. */ - gsm gsm_data ; -} GSM610_PRIVATE ; - -static sf_count_t gsm610_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t gsm610_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t gsm610_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t gsm610_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t gsm610_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t gsm610_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t gsm610_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t gsm610_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -static int gsm610_read_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610, short *ptr, int len) ; -static int gsm610_write_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610, const short *ptr, int len) ; - -static int gsm610_decode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610) ; -static int gsm610_encode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610) ; - -static int gsm610_wav_decode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610) ; -static int gsm610_wav_encode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610) ; - -static sf_count_t gsm610_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ; - -static int gsm610_close (SF_PRIVATE *psf) ; - -/*============================================================================================ -** WAV GSM610 initialisation function. -*/ - -int -gsm610_init (SF_PRIVATE *psf) -{ GSM610_PRIVATE *pgsm610 ; - int true_flag = 1 ; - - if (psf->fdata != NULL) - { psf_log_printf (psf, "*** psf->fdata is not NULL.\n") ; - return SFE_INTERNAL ; - } ; - - if (psf->mode == SFM_RDWR) - return SFE_BAD_MODE_RW ; - - psf->sf.seekable = SF_FALSE ; - - if ((pgsm610 = calloc (1, sizeof (GSM610_PRIVATE))) == NULL) - return SFE_MALLOC_FAILED ; - - psf->fdata = (void*) pgsm610 ; - - memset (pgsm610, 0, sizeof (GSM610_PRIVATE)) ; - -/*============================================================ - -Need separate gsm_data structs for encode and decode. - -============================================================*/ - - if ((pgsm610->gsm_data = gsm_create ()) == NULL) - return SFE_MALLOC_FAILED ; - - switch (psf->sf.format & SF_FORMAT_TYPEMASK) - { case SF_FORMAT_WAV : - case SF_FORMAT_WAVEX : - case SF_FORMAT_W64 : - gsm_option (pgsm610->gsm_data, GSM_OPT_WAV49, &true_flag) ; - - pgsm610->encode_block = gsm610_wav_encode_block ; - pgsm610->decode_block = gsm610_wav_decode_block ; - - pgsm610->samplesperblock = WAV_W64_GSM610_SAMPLES ; - pgsm610->blocksize = WAV_W64_GSM610_BLOCKSIZE ; - break ; - - case SF_FORMAT_AIFF : - case SF_FORMAT_RAW : - pgsm610->encode_block = gsm610_encode_block ; - pgsm610->decode_block = gsm610_decode_block ; - - pgsm610->samplesperblock = GSM610_SAMPLES ; - pgsm610->blocksize = GSM610_BLOCKSIZE ; - break ; - - default : - return SFE_INTERNAL ; - break ; - } ; - - if (psf->mode == SFM_READ) - { if (psf->datalength % pgsm610->blocksize == 0) - pgsm610->blocks = psf->datalength / pgsm610->blocksize ; - else if (psf->datalength % pgsm610->blocksize == 1 && pgsm610->blocksize == GSM610_BLOCKSIZE) - { /* - ** Weird AIFF specific case. - ** AIFF chunks must be at an odd offset from the start of file and - ** GSM610_BLOCKSIZE is odd which can result in an odd length SSND - ** chunk. The SSND chunk then gets padded on write which means that - ** when it is read the datalength is too big by 1. - */ - pgsm610->blocks = psf->datalength / pgsm610->blocksize ; - } - else - { psf_log_printf (psf, "*** Warning : data chunk seems to be truncated.\n") ; - pgsm610->blocks = psf->datalength / pgsm610->blocksize + 1 ; - } ; - - psf->sf.frames = pgsm610->samplesperblock * pgsm610->blocks ; - - pgsm610->decode_block (psf, pgsm610) ; /* Read first block. */ - - psf->read_short = gsm610_read_s ; - psf->read_int = gsm610_read_i ; - psf->read_float = gsm610_read_f ; - psf->read_double = gsm610_read_d ; - } ; - - if (psf->mode == SFM_WRITE) - { pgsm610->blockcount = 0 ; - pgsm610->samplecount = 0 ; - - psf->write_short = gsm610_write_s ; - psf->write_int = gsm610_write_i ; - psf->write_float = gsm610_write_f ; - psf->write_double = gsm610_write_d ; - } ; - - psf->codec_close = gsm610_close ; - - psf->seek = gsm610_seek ; - - psf->filelength = psf_get_filelen (psf) ; - psf->datalength = psf->filelength - psf->dataoffset ; - - return 0 ; -} /* gsm610_init */ - -/*============================================================================================ -** GSM 6.10 Read Functions. -*/ - -static int -gsm610_wav_decode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610) -{ int k ; - - pgsm610->blockcount ++ ; - pgsm610->samplecount = 0 ; - - if (pgsm610->blockcount > pgsm610->blocks) - { memset (pgsm610->samples, 0, WAV_W64_GSM610_SAMPLES * sizeof (short)) ; - return 1 ; - } ; - - if ((k = psf_fread (pgsm610->block, 1, WAV_W64_GSM610_BLOCKSIZE, psf)) != WAV_W64_GSM610_BLOCKSIZE) - psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, WAV_W64_GSM610_BLOCKSIZE) ; - - if (gsm_decode (pgsm610->gsm_data, pgsm610->block, pgsm610->samples) < 0) - { psf_log_printf (psf, "Error from gsm_decode() on frame : %d\n", pgsm610->blockcount) ; - return 0 ; - } ; - - if (gsm_decode (pgsm610->gsm_data, pgsm610->block + (WAV_W64_GSM610_BLOCKSIZE + 1) / 2, pgsm610->samples + WAV_W64_GSM610_SAMPLES / 2) < 0) - { psf_log_printf (psf, "Error from gsm_decode() on frame : %d.5\n", pgsm610->blockcount) ; - return 0 ; - } ; - - return 1 ; -} /* gsm610_wav_decode_block */ - -static int -gsm610_decode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610) -{ int k ; - - pgsm610->blockcount ++ ; - pgsm610->samplecount = 0 ; - - if (pgsm610->blockcount > pgsm610->blocks) - { memset (pgsm610->samples, 0, GSM610_SAMPLES * sizeof (short)) ; - return 1 ; - } ; - - if ((k = psf_fread (pgsm610->block, 1, GSM610_BLOCKSIZE, psf)) != GSM610_BLOCKSIZE) - psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, GSM610_BLOCKSIZE) ; - - if (gsm_decode (pgsm610->gsm_data, pgsm610->block, pgsm610->samples) < 0) - { psf_log_printf (psf, "Error from gsm_decode() on frame : %d\n", pgsm610->blockcount) ; - return 0 ; - } ; - - return 1 ; -} /* gsm610_decode_block */ - -static int -gsm610_read_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610, short *ptr, int len) -{ int count, total = 0, indx = 0 ; - - while (indx < len) - { if (pgsm610->blockcount >= pgsm610->blocks && pgsm610->samplecount >= pgsm610->samplesperblock) - { memset (&(ptr [indx]), 0, (len - indx) * sizeof (short)) ; - return total ; - } ; - - if (pgsm610->samplecount >= pgsm610->samplesperblock) - pgsm610->decode_block (psf, pgsm610) ; - - count = pgsm610->samplesperblock - pgsm610->samplecount ; - count = (len - indx > count) ? count : len - indx ; - - memcpy (&(ptr [indx]), &(pgsm610->samples [pgsm610->samplecount]), count * sizeof (short)) ; - indx += count ; - pgsm610->samplecount += count ; - total = indx ; - } ; - - return total ; -} /* gsm610_read_block */ - -static sf_count_t -gsm610_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ GSM610_PRIVATE *pgsm610 ; - int readcount, count ; - sf_count_t total = 0 ; - - if (psf->fdata == NULL) - return 0 ; - pgsm610 = (GSM610_PRIVATE*) psf->fdata ; - - while (len > 0) - { readcount = (len > 0x10000000) ? 0x1000000 : (int) len ; - - count = gsm610_read_block (psf, pgsm610, ptr, readcount) ; - - total += count ; - len -= count ; - - if (count != readcount) - break ; - } ; - - return total ; -} /* gsm610_read_s */ - -static sf_count_t -gsm610_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ GSM610_PRIVATE *pgsm610 ; - short *sptr ; - int k, bufferlen, readcount = 0, count ; - sf_count_t total = 0 ; - - if (psf->fdata == NULL) - return 0 ; - pgsm610 = (GSM610_PRIVATE*) psf->fdata ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = gsm610_read_block (psf, pgsm610, sptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = sptr [k] << 16 ; - - total += count ; - len -= readcount ; - } ; - return total ; -} /* gsm610_read_i */ - -static sf_count_t -gsm610_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ GSM610_PRIVATE *pgsm610 ; - short *sptr ; - int k, bufferlen, readcount = 0, count ; - sf_count_t total = 0 ; - float normfact ; - - if (psf->fdata == NULL) - return 0 ; - pgsm610 = (GSM610_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = gsm610_read_block (psf, pgsm610, sptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = normfact * sptr [k] ; - - total += count ; - len -= readcount ; - } ; - return total ; -} /* gsm610_read_f */ - -static sf_count_t -gsm610_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ GSM610_PRIVATE *pgsm610 ; - short *sptr ; - int k, bufferlen, readcount = 0, count ; - sf_count_t total = 0 ; - double normfact ; - - normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ; - - if (psf->fdata == NULL) - return 0 ; - pgsm610 = (GSM610_PRIVATE*) psf->fdata ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = gsm610_read_block (psf, pgsm610, sptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = normfact * sptr [k] ; - - total += count ; - len -= readcount ; - } ; - return total ; -} /* gsm610_read_d */ - -static sf_count_t -gsm610_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) -{ GSM610_PRIVATE *pgsm610 ; - int newblock, newsample ; - - mode = mode ; - - if (psf->fdata == NULL) - return 0 ; - pgsm610 = (GSM610_PRIVATE*) psf->fdata ; - - if (psf->dataoffset < 0) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - if (offset == 0) - { int true_flag = 1 ; - - psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - pgsm610->blockcount = 0 ; - - gsm_init (pgsm610->gsm_data) ; - if ((psf->sf.format & SF_FORMAT_TYPEMASK) == SF_FORMAT_WAV || - (psf->sf.format & SF_FORMAT_TYPEMASK) == SF_FORMAT_W64) - gsm_option (pgsm610->gsm_data, GSM_OPT_WAV49, &true_flag) ; - - pgsm610->decode_block (psf, pgsm610) ; - pgsm610->samplecount = 0 ; - return 0 ; - } ; - - if (offset < 0 || offset > pgsm610->blocks * pgsm610->samplesperblock) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - newblock = offset / pgsm610->samplesperblock ; - newsample = offset % pgsm610->samplesperblock ; - - if (psf->mode == SFM_READ) - { if (psf->read_current != newblock * pgsm610->samplesperblock + newsample) - { psf_fseek (psf, psf->dataoffset + newblock * pgsm610->samplesperblock, SEEK_SET) ; - pgsm610->blockcount = newblock ; - pgsm610->decode_block (psf, pgsm610) ; - pgsm610->samplecount = newsample ; - } ; - - return newblock * pgsm610->samplesperblock + newsample ; - } ; - - /* What to do about write??? */ - psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; -} /* gsm610_seek */ - -/*========================================================================================== -** GSM 6.10 Write Functions. -*/ - -static int -gsm610_encode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610) -{ int k ; - - /* Encode the samples. */ - gsm_encode (pgsm610->gsm_data, pgsm610->samples, pgsm610->block) ; - - /* Write the block to disk. */ - if ((k = psf_fwrite (pgsm610->block, 1, GSM610_BLOCKSIZE, psf)) != GSM610_BLOCKSIZE) - psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, GSM610_BLOCKSIZE) ; - - pgsm610->samplecount = 0 ; - pgsm610->blockcount ++ ; - - /* Set samples to zero for next block. */ - memset (pgsm610->samples, 0, WAV_W64_GSM610_SAMPLES * sizeof (short)) ; - - return 1 ; -} /* gsm610_encode_block */ - -static int -gsm610_wav_encode_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610) -{ int k ; - - /* Encode the samples. */ - gsm_encode (pgsm610->gsm_data, pgsm610->samples, pgsm610->block) ; - gsm_encode (pgsm610->gsm_data, pgsm610->samples+WAV_W64_GSM610_SAMPLES/2, pgsm610->block+WAV_W64_GSM610_BLOCKSIZE/2) ; - - /* Write the block to disk. */ - if ((k = psf_fwrite (pgsm610->block, 1, WAV_W64_GSM610_BLOCKSIZE, psf)) != WAV_W64_GSM610_BLOCKSIZE) - psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, WAV_W64_GSM610_BLOCKSIZE) ; - - pgsm610->samplecount = 0 ; - pgsm610->blockcount ++ ; - - /* Set samples to zero for next block. */ - memset (pgsm610->samples, 0, WAV_W64_GSM610_SAMPLES * sizeof (short)) ; - - return 1 ; -} /* gsm610_wav_encode_block */ - -static int -gsm610_write_block (SF_PRIVATE *psf, GSM610_PRIVATE *pgsm610, const short *ptr, int len) -{ int count, total = 0, indx = 0 ; - - while (indx < len) - { count = pgsm610->samplesperblock - pgsm610->samplecount ; - - if (count > len - indx) - count = len - indx ; - - memcpy (&(pgsm610->samples [pgsm610->samplecount]), &(ptr [indx]), count * sizeof (short)) ; - indx += count ; - pgsm610->samplecount += count ; - total = indx ; - - if (pgsm610->samplecount >= pgsm610->samplesperblock) - pgsm610->encode_block (psf, pgsm610) ; - } ; - - return total ; -} /* gsm610_write_block */ - -static sf_count_t -gsm610_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ GSM610_PRIVATE *pgsm610 ; - int writecount, count ; - sf_count_t total = 0 ; - - if (psf->fdata == NULL) - return 0 ; - pgsm610 = (GSM610_PRIVATE*) psf->fdata ; - - while (len > 0) - { writecount = (len > 0x10000000) ? 0x10000000 : (int) len ; - - count = gsm610_write_block (psf, pgsm610, ptr, writecount) ; - - total += count ; - len -= count ; - - if (count != writecount) - break ; - } ; - - return total ; -} /* gsm610_write_s */ - -static sf_count_t -gsm610_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ GSM610_PRIVATE *pgsm610 ; - short *sptr ; - int k, bufferlen, writecount = 0, count ; - sf_count_t total = 0 ; - - if (psf->fdata == NULL) - return 0 ; - pgsm610 = (GSM610_PRIVATE*) psf->fdata ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - sptr [k] = ptr [total + k] >> 16 ; - count = gsm610_write_block (psf, pgsm610, sptr, writecount) ; - - total += count ; - len -= writecount ; - } ; - return total ; -} /* gsm610_write_i */ - -static sf_count_t -gsm610_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ GSM610_PRIVATE *pgsm610 ; - short *sptr ; - int k, bufferlen, writecount = 0, count ; - sf_count_t total = 0 ; - float normfact ; - - if (psf->fdata == NULL) - return 0 ; - pgsm610 = (GSM610_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - sptr [k] = lrintf (normfact * ptr [total + k]) ; - count = gsm610_write_block (psf, pgsm610, sptr, writecount) ; - - total += count ; - len -= writecount ; - } ; - return total ; -} /* gsm610_write_f */ - -static sf_count_t -gsm610_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ GSM610_PRIVATE *pgsm610 ; - short *sptr ; - int k, bufferlen, writecount = 0, count ; - sf_count_t total = 0 ; - double normfact ; - - if (psf->fdata == NULL) - return 0 ; - pgsm610 = (GSM610_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - sptr [k] = lrint (normfact * ptr [total + k]) ; - count = gsm610_write_block (psf, pgsm610, sptr, writecount) ; - - total += count ; - len -= writecount ; - } ; - return total ; -} /* gsm610_write_d */ - -static int -gsm610_close (SF_PRIVATE *psf) -{ GSM610_PRIVATE *pgsm610 ; - - if (psf->fdata == NULL) - return 0 ; - - pgsm610 = (GSM610_PRIVATE*) psf->fdata ; - - if (psf->mode == SFM_WRITE) - { /* If a block has been partially assembled, write it out - ** as the final block. - */ - - if (pgsm610->samplecount && pgsm610->samplecount < pgsm610->samplesperblock) - pgsm610->encode_block (psf, pgsm610) ; - } ; - - if (pgsm610->gsm_data) - gsm_destroy (pgsm610->gsm_data) ; - - return 0 ; -} /* gsm610_close */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 8575187d-af4f-4acf-b9dd-6ff705628345 -*/ diff --git a/libs/libsndfile/src/htk.c b/libs/libsndfile/src/htk.c deleted file mode 100644 index 716868b5b8..0000000000 --- a/libs/libsndfile/src/htk.c +++ /dev/null @@ -1,225 +0,0 @@ -/* -** Copyright (C) 2002-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -/*------------------------------------------------------------------------------ -** Macros to handle big/little endian issues. -*/ - -#define SFE_HTK_BAD_FILE_LEN 1666 -#define SFE_HTK_NOT_WAVEFORM 1667 - -/*------------------------------------------------------------------------------ -** Private static functions. -*/ - -static int htk_close (SF_PRIVATE *psf) ; - -static int htk_write_header (SF_PRIVATE *psf, int calc_length) ; -static int htk_read_header (SF_PRIVATE *psf) ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -htk_open (SF_PRIVATE *psf) -{ int subformat ; - int error = 0 ; - - if (psf->is_pipe) - return SFE_HTK_NO_PIPE ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = htk_read_header (psf))) - return error ; - } ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_HTK) - return SFE_BAD_OPEN_FORMAT ; - - psf->endian = SF_ENDIAN_BIG ; - - if (htk_write_header (psf, SF_FALSE)) - return psf->error ; - - psf->write_header = htk_write_header ; - } ; - - psf->container_close = htk_close ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - - switch (subformat) - { case SF_FORMAT_PCM_16 : /* 16-bit linear PCM. */ - error = pcm_init (psf) ; - break ; - - default : break ; - } ; - - return error ; -} /* htk_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -htk_close (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - htk_write_header (psf, SF_TRUE) ; - - return 0 ; -} /* htk_close */ - -static int -htk_write_header (SF_PRIVATE *psf, int calc_length) -{ sf_count_t current ; - int sample_count, sample_period ; - - current = psf_ftell (psf) ; - - if (calc_length) - psf->filelength = psf_get_filelen (psf) ; - - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - psf_fseek (psf, 0, SEEK_SET) ; - - if (psf->filelength > 12) - sample_count = (psf->filelength - 12) / 2 ; - else - sample_count = 0 ; - - sample_period = 10000000 / psf->sf.samplerate ; - - psf_binheader_writef (psf, "E444", sample_count, sample_period, 0x20000) ; - - /* Header construction complete so write it out. */ - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - if (psf->error) - return psf->error ; - - psf->dataoffset = psf->headindex ; - - if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* htk_write_header */ - -/* -** Found the following info in a comment block within Bill Schottstaedt's -** sndlib library. -** -** HTK format files consist of a contiguous sequence of samples preceded by a -** header. Each sample is a vector of either 2-byte integers or 4-byte floats. -** 2-byte integers are used for compressed forms as described below and for -** vector quantised data as described later in section 5.11. HTK format data -** files can also be used to store speech waveforms as described in section 5.8. -** -** The HTK file format header is 12 bytes long and contains the following data -** nSamples -- number of samples in file (4-byte integer) -** sampPeriod -- sample period in 100ns units (4-byte integer) -** sampSize -- number of bytes per sample (2-byte integer) -** parmKind -- a code indicating the sample kind (2-byte integer) -** -** The parameter kind consists of a 6 bit code representing the basic -** parameter kind plus additional bits for each of the possible qualifiers. -** The basic parameter kind codes are -** -** 0 WAVEFORM sampled waveform -** 1 LPC linear prediction filter coefficients -** 2 LPREFC linear prediction reflection coefficients -** 3 LPCEPSTRA LPC cepstral coefficients -** 4 LPDELCEP LPC cepstra plus delta coefficients -** 5 IREFC LPC reflection coef in 16 bit integer format -** 6 MFCC mel-frequency cepstral coefficients -** 7 FBANK log mel-filter bank channel outputs -** 8 MELSPEC linear mel-filter bank channel outputs -** 9 USER user defined sample kind -** 10 DISCRETE vector quantised data -** -** and the bit-encoding for the qualifiers (in octal) is -** _E 000100 has energy -** _N 000200 absolute energy suppressed -** _D 000400 has delta coefficients -** _A 001000 has acceleration coefficients -** _C 002000 is compressed -** _Z 004000 has zero mean static coef. -** _K 010000 has CRC checksum -** _O 020000 has 0'th cepstral coef. -*/ - -static int -htk_read_header (SF_PRIVATE *psf) -{ int sample_count, sample_period, marker ; - - psf_binheader_readf (psf, "pE444", 0, &sample_count, &sample_period, &marker) ; - - if (2 * sample_count + 12 != psf->filelength) - return SFE_HTK_BAD_FILE_LEN ; - - if (marker != 0x20000) - return SFE_HTK_NOT_WAVEFORM ; - - psf->sf.channels = 1 ; - psf->sf.samplerate = 10000000 / sample_period ; - - psf_log_printf (psf, "HTK Waveform file\n Sample Count : %d\n Sample Period : %d => %d Hz\n", - sample_count, sample_period, psf->sf.samplerate) ; - - psf->sf.format = SF_FORMAT_HTK | SF_FORMAT_PCM_16 ; - psf->bytewidth = 2 ; - - /* HTK always has a 12 byte header. */ - psf->dataoffset = 12 ; - psf->endian = SF_ENDIAN_BIG ; - - psf->datalength = psf->filelength - psf->dataoffset ; - - psf->blockwidth = psf->sf.channels * psf->bytewidth ; - - if (! psf->sf.frames && psf->blockwidth) - psf->sf.frames = (psf->filelength - psf->dataoffset) / psf->blockwidth ; - - return 0 ; -} /* htk_read_header */ -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: c350e972-082e-4c20-8934-03391a723560 -*/ diff --git a/libs/libsndfile/src/ima_adpcm.c b/libs/libsndfile/src/ima_adpcm.c deleted file mode 100644 index abc49e5774..0000000000 --- a/libs/libsndfile/src/ima_adpcm.c +++ /dev/null @@ -1,976 +0,0 @@ -/* -** Copyright (C) 1999-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "float_cast.h" -#include "common.h" - -typedef struct IMA_ADPCM_PRIVATE_tag -{ int (*decode_block) (SF_PRIVATE *psf, struct IMA_ADPCM_PRIVATE_tag *pima) ; - int (*encode_block) (SF_PRIVATE *psf, struct IMA_ADPCM_PRIVATE_tag *pima) ; - - int channels, blocksize, samplesperblock, blocks ; - int blockcount, samplecount ; - int previous [2] ; - int stepindx [2] ; - unsigned char *block ; - short *samples ; -#if HAVE_FLEXIBLE_ARRAY - short data [] ; /* ISO C99 struct flexible array. */ -#else - short data [0] ; /* This is a hack and might not work. */ -#endif -} IMA_ADPCM_PRIVATE ; - -/*============================================================================================ -** Predefined IMA ADPCM data. -*/ - -static int ima_indx_adjust [16] = -{ -1, -1, -1, -1, /* +0 - +3, decrease the step size */ - 2, 4, 6, 8, /* +4 - +7, increase the step size */ - -1, -1, -1, -1, /* -0 - -3, decrease the step size */ - 2, 4, 6, 8, /* -4 - -7, increase the step size */ -} ; - -static int ima_step_size [89] = -{ 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, - 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143, 157, 173, 190, 209, 230, - 253, 279, 307, 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, 876, 963, - 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, 3327, - 3660, 4026, 4428, 4871, 5358, 5894, 6484, 7132, 7845, 8630, 9493, 10442, - 11487, 12635, 13899, 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, - 32767 -} ; - -static int ima_reader_init (SF_PRIVATE *psf, int blockalign, int samplesperblock) ; -static int ima_writer_init (SF_PRIVATE *psf, int blockalign) ; - -static int ima_read_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima, short *ptr, int len) ; -static int ima_write_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima, const short *ptr, int len) ; - -static sf_count_t ima_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t ima_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t ima_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t ima_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t ima_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t ima_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t ima_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t ima_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -static sf_count_t ima_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ; - -static int ima_close (SF_PRIVATE *psf) ; - -static int wav_w64_ima_decode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima) ; -static int wav_w64_ima_encode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima) ; - -/*-static int aiff_ima_reader_init (SF_PRIVATE *psf, int blockalign, int samplesperblock) ;-*/ -static int aiff_ima_decode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima) ; -static int aiff_ima_encode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima) ; - - -/*============================================================================================ -** IMA ADPCM Reader initialisation function. -*/ - -int -wav_w64_ima_init (SF_PRIVATE *psf, int blockalign, int samplesperblock) -{ int error ; - - if (psf->fdata != NULL) - { psf_log_printf (psf, "*** psf->fdata is not NULL.\n") ; - return SFE_INTERNAL ; - } ; - - if (psf->mode == SFM_RDWR) - return SFE_BAD_MODE_RW ; - - if (psf->mode == SFM_READ) - if ((error = ima_reader_init (psf, blockalign, samplesperblock))) - return error ; - - if (psf->mode == SFM_WRITE) - if ((error = ima_writer_init (psf, blockalign))) - return error ; - - psf->codec_close = ima_close ; - psf->seek = ima_seek ; - - return 0 ; -} /* wav_w64_ima_init */ - -int -aiff_ima_init (SF_PRIVATE *psf, int blockalign, int samplesperblock) -{ int error ; - - if (psf->mode == SFM_RDWR) - return SFE_BAD_MODE_RW ; - - if (psf->mode == SFM_READ) - if ((error = ima_reader_init (psf, blockalign, samplesperblock))) - return error ; - - if (psf->mode == SFM_WRITE) - if ((error = ima_writer_init (psf, blockalign))) - return error ; - - psf->codec_close = ima_close ; - - return 0 ; -} /* aiff_ima_init */ - -static int -ima_close (SF_PRIVATE *psf) -{ IMA_ADPCM_PRIVATE *pima ; - - pima = (IMA_ADPCM_PRIVATE*) psf->fdata ; - - if (psf->mode == SFM_WRITE) - { /* If a block has been partially assembled, write it out - ** as the final block. - */ - if (pima->samplecount && pima->samplecount < pima->samplesperblock) - pima->encode_block (psf, pima) ; - - psf->sf.frames = pima->samplesperblock * pima->blockcount / psf->sf.channels ; - } ; - - return 0 ; -} /* ima_close */ - -/*============================================================================================ -** IMA ADPCM Read Functions. -*/ - -static int -ima_reader_init (SF_PRIVATE *psf, int blockalign, int samplesperblock) -{ IMA_ADPCM_PRIVATE *pima ; - int pimasize, count ; - - if (psf->mode != SFM_READ) - return SFE_BAD_MODE_RW ; - - pimasize = sizeof (IMA_ADPCM_PRIVATE) + blockalign * psf->sf.channels + 3 * psf->sf.channels * samplesperblock ; - - if (! (pima = malloc (pimasize))) - return SFE_MALLOC_FAILED ; - - psf->fdata = (void*) pima ; - - memset (pima, 0, pimasize) ; - - pima->samples = pima->data ; - pima->block = (unsigned char*) (pima->data + samplesperblock * psf->sf.channels) ; - - pima->channels = psf->sf.channels ; - pima->blocksize = blockalign ; - pima->samplesperblock = samplesperblock ; - - psf->filelength = psf_get_filelen (psf) ; - psf->datalength = (psf->dataend) ? psf->dataend - psf->dataoffset : - psf->filelength - psf->dataoffset ; - - if (psf->datalength % pima->blocksize) - pima->blocks = psf->datalength / pima->blocksize + 1 ; - else - pima->blocks = psf->datalength / pima->blocksize ; - - switch (psf->sf.format & SF_FORMAT_TYPEMASK) - { case SF_FORMAT_WAV : - case SF_FORMAT_W64 : - count = 2 * (pima->blocksize - 4 * pima->channels) / pima->channels + 1 ; - - if (pima->samplesperblock != count) - psf_log_printf (psf, "*** Warning : samplesperblock should be %d.\n", count) ; - - pima->decode_block = wav_w64_ima_decode_block ; - - psf->sf.frames = pima->samplesperblock * pima->blocks ; - break ; - - case SF_FORMAT_AIFF : - psf_log_printf (psf, "still need to check block count\n") ; - pima->decode_block = aiff_ima_decode_block ; - psf->sf.frames = pima->samplesperblock * pima->blocks / pima->channels ; - break ; - - default : - psf_log_printf (psf, "ima_reader_init: bad psf->sf.format\n") ; - return SFE_INTERNAL ; - break ; - } ; - - pima->decode_block (psf, pima) ; /* Read first block. */ - - psf->read_short = ima_read_s ; - psf->read_int = ima_read_i ; - psf->read_float = ima_read_f ; - psf->read_double = ima_read_d ; - - return 0 ; -} /* ima_reader_init */ - -static int -aiff_ima_decode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima) -{ unsigned char *blockdata ; - int chan, k, diff, bytecode ; - short step, stepindx, predictor, *sampledata ; - -static int count = 0 ; -count ++ ; - - pima->blockcount += pima->channels ; - pima->samplecount = 0 ; - - if (pima->blockcount > pima->blocks) - { memset (pima->samples, 0, pima->samplesperblock * pima->channels * sizeof (short)) ; - return 1 ; - } ; - - if ((k = psf_fread (pima->block, 1, pima->blocksize * pima->channels, psf)) != pima->blocksize * pima->channels) - psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, pima->blocksize) ; - - /* Read and check the block header. */ - for (chan = 0 ; chan < pima->channels ; chan++) - { blockdata = pima->block + chan * 34 ; - sampledata = pima->samples + chan ; - - predictor = (blockdata [0] << 8) | (blockdata [1] & 0x80) ; - stepindx = blockdata [1] & 0x7F ; - -{ -if (count < 5) -printf ("\nchan: %d predictor: %d stepindx: %d (%d)\n", - chan, predictor, stepindx, ima_step_size [stepindx]) ; -} - /* FIXME : Do this a better way. */ - if (stepindx < 0) stepindx = 0 ; - else if (stepindx > 88) stepindx = 88 ; - - /* - ** Pull apart the packed 4 bit samples and store them in their - ** correct sample positions. - */ - for (k = 0 ; k < pima->blocksize - 2 ; k++) - { bytecode = blockdata [k + 2] ; - sampledata [pima->channels * (2 * k + 0)] = bytecode & 0xF ; - sampledata [pima->channels * (2 * k + 1)] = (bytecode >> 4) & 0xF ; - } ; - - /* Decode the encoded 4 bit samples. */ - for (k = 0 ; k < pima->samplesperblock ; k ++) - { step = ima_step_size [stepindx] ; - - bytecode = pima->samples [pima->channels * k + chan] ; - - stepindx += ima_indx_adjust [bytecode] ; - - if (stepindx < 0) stepindx = 0 ; - else if (stepindx > 88) stepindx = 88 ; - - diff = step >> 3 ; - if (bytecode & 1) diff += step >> 2 ; - if (bytecode & 2) diff += step >> 1 ; - if (bytecode & 4) diff += step ; - if (bytecode & 8) diff = -diff ; - - predictor += diff ; - - pima->samples [pima->channels * k + chan] = predictor ; - } ; - } ; - -if (count < 5) -{ - for (k = 0 ; k < 10 ; k++) - printf ("% 7d,", pima->samples [k]) ; - puts ("") ; -} - - return 1 ; -} /* aiff_ima_decode_block */ - -static int -aiff_ima_encode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima) -{ int chan, k, step, diff, vpdiff, blockindx, indx ; - short bytecode, mask ; - -static int count = 0 ; -if (0 && count == 0) -{ pima->samples [0] = 0 ; - printf ("blocksize : %d\n", pima->blocksize) ; - printf ("pima->stepindx [0] : %d\n", pima->stepindx [0]) ; - } -count ++ ; - - /* Encode the block header. */ - for (chan = 0 ; chan < pima->channels ; chan ++) - { blockindx = chan * pima->blocksize ; - - pima->block [blockindx] = (pima->samples [chan] >> 8) & 0xFF ; - pima->block [blockindx + 1] = (pima->samples [chan] & 0x80) + (pima->stepindx [chan] & 0x7F) ; - - pima->previous [chan] = pima->samples [chan] ; - } ; - - /* Encode second and later samples for every block as a 4 bit value. */ - for (k = pima->channels ; k < (pima->samplesperblock * pima->channels) ; k ++) - { chan = (pima->channels > 1) ? (k % 2) : 0 ; - - diff = pima->samples [k] - pima->previous [chan] ; - - bytecode = 0 ; - step = ima_step_size [pima->stepindx [chan]] ; - vpdiff = step >> 3 ; - if (diff < 0) - { bytecode = 8 ; - diff = -diff ; - } ; - mask = 4 ; - while (mask) - { if (diff >= step) - { bytecode |= mask ; - diff -= step ; - vpdiff += step ; - } ; - step >>= 1 ; - mask >>= 1 ; - } ; - - if (bytecode & 8) - pima->previous [chan] -= vpdiff ; - else - pima->previous [chan] += vpdiff ; - - if (pima->previous [chan] > 32767) - pima->previous [chan] = 32767 ; - else if (pima->previous [chan] < -32768) - pima->previous [chan] = -32768 ; - - pima->stepindx [chan] += ima_indx_adjust [bytecode] ; - if (pima->stepindx [chan] < 0) - pima->stepindx [chan] = 0 ; - else if (pima->stepindx [chan] > 88) - pima->stepindx [chan] = 88 ; - - pima->samples [k] = bytecode ; - } ; - - /* Pack the 4 bit encoded samples. */ - - for (chan = 0 ; chan < pima->channels ; chan ++) - { for (indx = pima->channels ; indx < pima->channels * pima->samplesperblock ; indx += 2 * pima->channels) - { blockindx = chan * pima->blocksize + 2 + indx / 2 ; - -if (0 && count ++ < 5) - printf ("chan: %d blockindx: %3d indx: %3d\n", chan, blockindx, indx) ; - - pima->block [blockindx] = pima->samples [indx] & 0x0F ; - pima->block [blockindx] |= (pima->samples [indx + pima->channels] << 4) & 0xF0 ; - } ; - } ; - - /* Write the block to disk. */ - - if ((k = psf_fwrite (pima->block, 1, pima->channels * pima->blocksize, psf)) != pima->channels * pima->blocksize) - psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, pima->channels * pima->blocksize) ; - - memset (pima->samples, 0, pima->channels * pima->samplesperblock * sizeof (short)) ; - pima->samplecount = 0 ; - pima->blockcount ++ ; - - return 1 ; -} /* aiff_ima_encode_block */ - -static int -wav_w64_ima_decode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima) -{ int chan, k, current, blockindx, indx, indxstart, diff ; - short step, bytecode, stepindx [2] ; - - pima->blockcount ++ ; - pima->samplecount = 0 ; - - if (pima->blockcount > pima->blocks) - { memset (pima->samples, 0, pima->samplesperblock * pima->channels * sizeof (short)) ; - return 1 ; - } ; - - if ((k = psf_fread (pima->block, 1, pima->blocksize, psf)) != pima->blocksize) - psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, pima->blocksize) ; - - /* Read and check the block header. */ - - for (chan = 0 ; chan < pima->channels ; chan++) - { current = pima->block [chan*4] | (pima->block [chan*4+1] << 8) ; - if (current & 0x8000) - current -= 0x10000 ; - - stepindx [chan] = pima->block [chan*4+2] ; - if (stepindx [chan] < 0) - stepindx [chan] = 0 ; - else if (stepindx [chan] > 88) - stepindx [chan] = 88 ; - - if (pima->block [chan*4+3] != 0) - psf_log_printf (psf, "IMA ADPCM synchronisation error.\n") ; - - pima->samples [chan] = current ; - } ; - - /* - ** Pull apart the packed 4 bit samples and store them in their - ** correct sample positions. - */ - - blockindx = 4 * pima->channels ; - - indxstart = pima->channels ; - while (blockindx < pima->blocksize) - { for (chan = 0 ; chan < pima->channels ; chan++) - { indx = indxstart + chan ; - for (k = 0 ; k < 4 ; k++) - { bytecode = pima->block [blockindx++] ; - pima->samples [indx] = bytecode & 0x0F ; - indx += pima->channels ; - pima->samples [indx] = (bytecode >> 4) & 0x0F ; - indx += pima->channels ; - } ; - } ; - indxstart += 8 * pima->channels ; - } ; - - /* Decode the encoded 4 bit samples. */ - - for (k = pima->channels ; k < (pima->samplesperblock * pima->channels) ; k ++) - { chan = (pima->channels > 1) ? (k % 2) : 0 ; - - bytecode = pima->samples [k] & 0xF ; - - step = ima_step_size [stepindx [chan]] ; - current = pima->samples [k - pima->channels] ; - - diff = step >> 3 ; - if (bytecode & 1) - diff += step >> 2 ; - if (bytecode & 2) - diff += step >> 1 ; - if (bytecode & 4) - diff += step ; - if (bytecode & 8) - diff = -diff ; - - current += diff ; - - if (current > 32767) - current = 32767 ; - else if (current < -32768) - current = -32768 ; - - stepindx [chan] += ima_indx_adjust [bytecode] ; - - if (stepindx [chan] < 0) - stepindx [chan] = 0 ; - else if (stepindx [chan] > 88) - stepindx [chan] = 88 ; - - pima->samples [k] = current ; - } ; - - return 1 ; -} /* wav_w64_ima_decode_block */ - -static int -wav_w64_ima_encode_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima) -{ int chan, k, step, diff, vpdiff, blockindx, indx, indxstart ; - short bytecode, mask ; - - /* Encode the block header. */ - for (chan = 0 ; chan < pima->channels ; chan++) - { pima->block [chan*4] = pima->samples [chan] & 0xFF ; - pima->block [chan*4+1] = (pima->samples [chan] >> 8) & 0xFF ; - - pima->block [chan*4+2] = pima->stepindx [chan] ; - pima->block [chan*4+3] = 0 ; - - pima->previous [chan] = pima->samples [chan] ; - } ; - - /* Encode the samples as 4 bit. */ - - for (k = pima->channels ; k < (pima->samplesperblock * pima->channels) ; k ++) - { chan = (pima->channels > 1) ? (k % 2) : 0 ; - - diff = pima->samples [k] - pima->previous [chan] ; - - bytecode = 0 ; - step = ima_step_size [pima->stepindx [chan]] ; - vpdiff = step >> 3 ; - if (diff < 0) - { bytecode = 8 ; - diff = -diff ; - } ; - mask = 4 ; - while (mask) - { if (diff >= step) - { bytecode |= mask ; - diff -= step ; - vpdiff += step ; - } ; - step >>= 1 ; - mask >>= 1 ; - } ; - - if (bytecode & 8) - pima->previous [chan] -= vpdiff ; - else - pima->previous [chan] += vpdiff ; - - if (pima->previous [chan] > 32767) - pima->previous [chan] = 32767 ; - else if (pima->previous [chan] < -32768) - pima->previous [chan] = -32768 ; - - pima->stepindx [chan] += ima_indx_adjust [bytecode] ; - if (pima->stepindx [chan] < 0) - pima->stepindx [chan] = 0 ; - else if (pima->stepindx [chan] > 88) - pima->stepindx [chan] = 88 ; - - pima->samples [k] = bytecode ; - } ; - - /* Pack the 4 bit encoded samples. */ - - blockindx = 4 * pima->channels ; - - indxstart = pima->channels ; - while (blockindx < pima->blocksize) - { for (chan = 0 ; chan < pima->channels ; chan++) - { indx = indxstart + chan ; - for (k = 0 ; k < 4 ; k++) - { pima->block [blockindx] = pima->samples [indx] & 0x0F ; - indx += pima->channels ; - pima->block [blockindx] |= (pima->samples [indx] << 4) & 0xF0 ; - indx += pima->channels ; - blockindx ++ ; - } ; - } ; - indxstart += 8 * pima->channels ; - } ; - - /* Write the block to disk. */ - - if ((k = psf_fwrite (pima->block, 1, pima->blocksize, psf)) != pima->blocksize) - psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, pima->blocksize) ; - - memset (pima->samples, 0, pima->samplesperblock * sizeof (short)) ; - pima->samplecount = 0 ; - pima->blockcount ++ ; - - return 1 ; -} /* wav_w64_ima_encode_block */ - -static int -ima_read_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima, short *ptr, int len) -{ int count, total = 0, indx = 0 ; - - while (indx < len) - { if (pima->blockcount >= pima->blocks && pima->samplecount >= pima->samplesperblock) - { memset (&(ptr [indx]), 0, (size_t) ((len - indx) * sizeof (short))) ; - return total ; - } ; - - if (pima->samplecount >= pima->samplesperblock) - pima->decode_block (psf, pima) ; - - count = (pima->samplesperblock - pima->samplecount) * pima->channels ; - count = (len - indx > count) ? count : len - indx ; - - memcpy (&(ptr [indx]), &(pima->samples [pima->samplecount * pima->channels]), count * sizeof (short)) ; - indx += count ; - pima->samplecount += count / pima->channels ; - total = indx ; - } ; - - return total ; -} /* ima_read_block */ - -static sf_count_t -ima_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ IMA_ADPCM_PRIVATE *pima ; - int readcount, count ; - sf_count_t total = 0 ; - - if (! psf->fdata) - return 0 ; - pima = (IMA_ADPCM_PRIVATE*) psf->fdata ; - - while (len > 0) - { readcount = (len > 0x10000000) ? 0x10000000 : (int) len ; - - count = ima_read_block (psf, pima, ptr, readcount) ; - - total += count ; - len -= count ; - if (count != readcount) - break ; - } ; - - return total ; -} /* ima_read_s */ - -static sf_count_t -ima_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ IMA_ADPCM_PRIVATE *pima ; - short *sptr ; - int k, bufferlen, readcount, count ; - sf_count_t total = 0 ; - - if (! psf->fdata) - return 0 ; - pima = (IMA_ADPCM_PRIVATE*) psf->fdata ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : (int) len ; - count = ima_read_block (psf, pima, sptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = ((int) sptr [k]) << 16 ; - total += count ; - len -= readcount ; - if (count != readcount) - break ; - } ; - - return total ; -} /* ima_read_i */ - -static sf_count_t -ima_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ IMA_ADPCM_PRIVATE *pima ; - short *sptr ; - int k, bufferlen, readcount, count ; - sf_count_t total = 0 ; - float normfact ; - - if (! psf->fdata) - return 0 ; - pima = (IMA_ADPCM_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : (int) len ; - count = ima_read_block (psf, pima, sptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = normfact * (float) (sptr [k]) ; - total += count ; - len -= readcount ; - if (count != readcount) - break ; - } ; - - return total ; -} /* ima_read_f */ - -static sf_count_t -ima_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ IMA_ADPCM_PRIVATE *pima ; - short *sptr ; - int k, bufferlen, readcount, count ; - sf_count_t total = 0 ; - double normfact ; - - if (! psf->fdata) - return 0 ; - pima = (IMA_ADPCM_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : (int) len ; - count = ima_read_block (psf, pima, sptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = normfact * (double) (sptr [k]) ; - total += count ; - len -= readcount ; - if (count != readcount) - break ; - } ; - - return total ; -} /* ima_read_d */ - -static sf_count_t -ima_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) -{ IMA_ADPCM_PRIVATE *pima ; - int newblock, newsample ; - - if (! psf->fdata) - return 0 ; - pima = (IMA_ADPCM_PRIVATE*) psf->fdata ; - - if (psf->datalength < 0 || psf->dataoffset < 0) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - if (offset == 0) - { psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - pima->blockcount = 0 ; - pima->decode_block (psf, pima) ; - pima->samplecount = 0 ; - return 0 ; - } ; - - if (offset < 0 || offset > pima->blocks * pima->samplesperblock) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - newblock = offset / pima->samplesperblock ; - newsample = offset % pima->samplesperblock ; - - if (mode == SFM_READ) - { psf_fseek (psf, psf->dataoffset + newblock * pima->blocksize, SEEK_SET) ; - pima->blockcount = newblock ; - pima->decode_block (psf, pima) ; - pima->samplecount = newsample ; - } - else - { /* What to do about write??? */ - psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - return newblock * pima->samplesperblock + newsample ; -} /* ima_seek */ - -/*========================================================================================== -** IMA ADPCM Write Functions. -*/ - -static int -ima_writer_init (SF_PRIVATE *psf, int blockalign) -{ IMA_ADPCM_PRIVATE *pima ; - int samplesperblock ; - unsigned int pimasize ; - - if (psf->mode != SFM_WRITE) - return SFE_BAD_MODE_RW ; - - samplesperblock = 2 * (blockalign - 4 * psf->sf.channels) / psf->sf.channels + 1 ; - - pimasize = sizeof (IMA_ADPCM_PRIVATE) + blockalign + 3 * psf->sf.channels * samplesperblock ; - - if ((pima = calloc (1, pimasize)) == NULL) - return SFE_MALLOC_FAILED ; - - psf->fdata = (void*) pima ; - - pima->channels = psf->sf.channels ; - pima->blocksize = blockalign ; - pima->samplesperblock = samplesperblock ; - - pima->block = (unsigned char*) pima->data ; - pima->samples = (short*) (pima->data + blockalign) ; - - pima->samplecount = 0 ; - - switch (psf->sf.format & SF_FORMAT_TYPEMASK) - { case SF_FORMAT_WAV : - case SF_FORMAT_W64 : - pima->encode_block = wav_w64_ima_encode_block ; - break ; - - case SF_FORMAT_AIFF : - pima->encode_block = aiff_ima_encode_block ; - break ; - - default : - psf_log_printf (psf, "ima_reader_init: bad psf->sf.format\n") ; - return SFE_INTERNAL ; - break ; - } ; - - psf->write_short = ima_write_s ; - psf->write_int = ima_write_i ; - psf->write_float = ima_write_f ; - psf->write_double = ima_write_d ; - - return 0 ; -} /* ima_writer_init */ - -/*========================================================================================== -*/ - -static int -ima_write_block (SF_PRIVATE *psf, IMA_ADPCM_PRIVATE *pima, const short *ptr, int len) -{ int count, total = 0, indx = 0 ; - - while (indx < len) - { count = (pima->samplesperblock - pima->samplecount) * pima->channels ; - - if (count > len - indx) - count = len - indx ; - - memcpy (&(pima->samples [pima->samplecount * pima->channels]), &(ptr [total]), count * sizeof (short)) ; - indx += count ; - pima->samplecount += count / pima->channels ; - total = indx ; - - if (pima->samplecount >= pima->samplesperblock) - pima->encode_block (psf, pima) ; - } ; - - return total ; -} /* ima_write_block */ - -static sf_count_t -ima_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ IMA_ADPCM_PRIVATE *pima ; - int writecount, count ; - sf_count_t total = 0 ; - - if (! psf->fdata) - return 0 ; - pima = (IMA_ADPCM_PRIVATE*) psf->fdata ; - - while (len) - { writecount = (len > 0x10000000) ? 0x10000000 : (int) len ; - - count = ima_write_block (psf, pima, ptr, writecount) ; - - total += count ; - len -= count ; - if (count != writecount) - break ; - } ; - - return total ; -} /* ima_write_s */ - -static sf_count_t -ima_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ IMA_ADPCM_PRIVATE *pima ; - short *sptr ; - int k, bufferlen, writecount, count ; - sf_count_t total = 0 ; - - if (! psf->fdata) - return 0 ; - pima = (IMA_ADPCM_PRIVATE*) psf->fdata ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : (int) len ; - for (k = 0 ; k < writecount ; k++) - sptr [k] = ptr [total + k] >> 16 ; - count = ima_write_block (psf, pima, sptr, writecount) ; - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - - return total ; -} /* ima_write_i */ - -static sf_count_t -ima_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ IMA_ADPCM_PRIVATE *pima ; - short *sptr ; - int k, bufferlen, writecount, count ; - sf_count_t total = 0 ; - float normfact ; - - if (! psf->fdata) - return 0 ; - pima = (IMA_ADPCM_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : (int) len ; - for (k = 0 ; k < writecount ; k++) - sptr [k] = lrintf (normfact * ptr [total + k]) ; - count = ima_write_block (psf, pima, sptr, writecount) ; - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - - return total ; -} /* ima_write_f */ - -static sf_count_t -ima_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ IMA_ADPCM_PRIVATE *pima ; - short *sptr ; - int k, bufferlen, writecount, count ; - sf_count_t total = 0 ; - double normfact ; - - if (! psf->fdata) - return 0 ; - pima = (IMA_ADPCM_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : (int) len ; - for (k = 0 ; k < writecount ; k++) - sptr [k] = lrint (normfact * ptr [total + k]) ; - count = ima_write_block (psf, pima, sptr, writecount) ; - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - - return total ; -} /* ima_write_d */ - - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 75a54b82-ad18-4758-9933-64e00a7f24e0 -*/ diff --git a/libs/libsndfile/src/interleave.c b/libs/libsndfile/src/interleave.c deleted file mode 100644 index 7c18bd46c2..0000000000 --- a/libs/libsndfile/src/interleave.c +++ /dev/null @@ -1,306 +0,0 @@ -/* -** Copyright (C) 2002-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfendian.h" - -#include - -#include "sndfile.h" -#include "common.h" - -#define INTERLEAVE_CHANNELS 6 - -typedef struct -{ double buffer [SF_BUFFER_LEN / sizeof (double)] ; - - sf_count_t channel_len ; - - sf_count_t (*read_short) (SF_PRIVATE*, short *ptr, sf_count_t len) ; - sf_count_t (*read_int) (SF_PRIVATE*, int *ptr, sf_count_t len) ; - sf_count_t (*read_float) (SF_PRIVATE*, float *ptr, sf_count_t len) ; - sf_count_t (*read_double) (SF_PRIVATE*, double *ptr, sf_count_t len) ; - -} INTERLEAVE_DATA ; - - - -static sf_count_t interleave_read_short (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t interleave_read_int (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t interleave_read_float (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t interleave_read_double (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t interleave_seek (SF_PRIVATE*, int mode, sf_count_t samples_from_start) ; - - - - -int -interleave_init (SF_PRIVATE *psf) -{ INTERLEAVE_DATA *pdata ; - - if (psf->mode != SFM_READ) - return SFE_INTERLEAVE_MODE ; - - if (psf->interleave) - { psf_log_printf (psf, "*** Weird, already have interleave.\n") ; - return 666 ; - } ; - - /* Free this in sf_close() function. */ - if (! (pdata = malloc (sizeof (INTERLEAVE_DATA)))) - return SFE_MALLOC_FAILED ; - -puts ("interleave_init") ; - - psf->interleave = pdata ; - - /* Save the existing methods. */ - pdata->read_short = psf->read_short ; - pdata->read_int = psf->read_int ; - pdata->read_float = psf->read_float ; - pdata->read_double = psf->read_double ; - - pdata->channel_len = psf->sf.frames * psf->bytewidth ; - - /* Insert our new methods. */ - psf->read_short = interleave_read_short ; - psf->read_int = interleave_read_int ; - psf->read_float = interleave_read_float ; - psf->read_double = interleave_read_double ; - - psf->seek = interleave_seek ; - - return 0 ; -} /* pcm_interleave_init */ - -/*------------------------------------------------------------------------------ -*/ - -static sf_count_t -interleave_read_short (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ INTERLEAVE_DATA *pdata ; - sf_count_t offset, templen ; - int chan, count, k ; - short *inptr, *outptr ; - - if (! (pdata = psf->interleave)) - return 0 ; - - inptr = (short*) pdata->buffer ; - - for (chan = 0 ; chan < psf->sf.channels ; chan++) - { outptr = ptr + chan ; - - offset = psf->dataoffset + chan * psf->bytewidth * psf->read_current ; - - if (psf_fseek (psf, offset, SEEK_SET) != offset) - { psf->error = SFE_INTERLEAVE_SEEK ; - return 0 ; - } ; - - templen = len / psf->sf.channels ; - - while (templen > 0) - { if (templen > SIGNED_SIZEOF (pdata->buffer) / SIGNED_SIZEOF (short)) - count = SIGNED_SIZEOF (pdata->buffer) / SIGNED_SIZEOF (short) ; - else - count = (int) templen ; - - if (pdata->read_short (psf, inptr, count) != count) - { psf->error = SFE_INTERLEAVE_READ ; - return 0 ; - } ; - - for (k = 0 ; k < count ; k++) - { *outptr = inptr [k] ; - outptr += psf->sf.channels ; - } ; - - templen -= count ; - } ; - } ; - - return len ; -} /* interleave_read_short */ - -static sf_count_t -interleave_read_int (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ INTERLEAVE_DATA *pdata ; - sf_count_t offset, templen ; - int chan, count, k ; - int *inptr, *outptr ; - - if (! (pdata = psf->interleave)) - return 0 ; - - inptr = (int*) pdata->buffer ; - - for (chan = 0 ; chan < psf->sf.channels ; chan++) - { outptr = ptr + chan ; - - offset = psf->dataoffset + chan * psf->bytewidth * psf->read_current ; - - if (psf_fseek (psf, offset, SEEK_SET) != offset) - { psf->error = SFE_INTERLEAVE_SEEK ; - return 0 ; - } ; - - templen = len / psf->sf.channels ; - - while (templen > 0) - { if (templen > SIGNED_SIZEOF (pdata->buffer) / SIGNED_SIZEOF (int)) - count = SIGNED_SIZEOF (pdata->buffer) / SIGNED_SIZEOF (int) ; - else - count = (int) templen ; - - if (pdata->read_int (psf, inptr, count) != count) - { psf->error = SFE_INTERLEAVE_READ ; - return 0 ; - } ; - - for (k = 0 ; k < count ; k++) - { *outptr = inptr [k] ; - outptr += psf->sf.channels ; - } ; - - templen -= count ; - } ; - } ; - - return len ; -} /* interleave_read_int */ - -static sf_count_t -interleave_read_float (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ INTERLEAVE_DATA *pdata ; - sf_count_t offset, templen ; - int chan, count, k ; - float *inptr, *outptr ; - - if (! (pdata = psf->interleave)) - return 0 ; - - inptr = (float*) pdata->buffer ; - - for (chan = 0 ; chan < psf->sf.channels ; chan++) - { outptr = ptr + chan ; - - offset = psf->dataoffset + pdata->channel_len * chan + psf->read_current * psf->bytewidth ; - -/*-printf ("chan : %d read_current : %6lld offset : %6lld\n", chan, psf->read_current, offset) ;-*/ - - if (psf_fseek (psf, offset, SEEK_SET) != offset) - { psf->error = SFE_INTERLEAVE_SEEK ; -/*-puts ("interleave_seek error") ; exit (1) ;-*/ - return 0 ; - } ; - - templen = len / psf->sf.channels ; - - while (templen > 0) - { if (templen > SIGNED_SIZEOF (pdata->buffer) / SIGNED_SIZEOF (float)) - count = SIGNED_SIZEOF (pdata->buffer) / SIGNED_SIZEOF (float) ; - else - count = (int) templen ; - - if (pdata->read_float (psf, inptr, count) != count) - { psf->error = SFE_INTERLEAVE_READ ; -/*-puts ("interleave_read error") ; exit (1) ;-*/ - return 0 ; - } ; - - for (k = 0 ; k < count ; k++) - { *outptr = inptr [k] ; - outptr += psf->sf.channels ; - } ; - - templen -= count ; - } ; - } ; - - return len ; -} /* interleave_read_float */ - -static sf_count_t -interleave_read_double (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ INTERLEAVE_DATA *pdata ; - sf_count_t offset, templen ; - int chan, count, k ; - double *inptr, *outptr ; - - if (! (pdata = psf->interleave)) - return 0 ; - - inptr = (double*) pdata->buffer ; - - for (chan = 0 ; chan < psf->sf.channels ; chan++) - { outptr = ptr + chan ; - - offset = psf->dataoffset + chan * psf->bytewidth * psf->read_current ; - - if (psf_fseek (psf, offset, SEEK_SET) != offset) - { psf->error = SFE_INTERLEAVE_SEEK ; - return 0 ; - } ; - - templen = len / psf->sf.channels ; - - while (templen > 0) - { if (templen > SIGNED_SIZEOF (pdata->buffer) / SIGNED_SIZEOF (double)) - count = SIGNED_SIZEOF (pdata->buffer) / SIGNED_SIZEOF (double) ; - else - count = (int) templen ; - - if (pdata->read_double (psf, inptr, count) != count) - { psf->error = SFE_INTERLEAVE_READ ; - return 0 ; - } ; - - for (k = 0 ; k < count ; k++) - { *outptr = inptr [k] ; - outptr += psf->sf.channels ; - } ; - - templen -= count ; - } ; - } ; - - return len ; -} /* interleave_read_double */ - -/*------------------------------------------------------------------------------ -*/ - -static sf_count_t -interleave_seek (SF_PRIVATE *psf, int mode, sf_count_t samples_from_start) -{ psf = psf ; mode = mode ; - - /* - ** Do nothing here. This is a place holder to prevent the default - ** seek function from being called. - */ - - return samples_from_start ; -} /* interleave_seek */ -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 82314e13-0225-4408-a2f2-e6dab3f38904 -*/ diff --git a/libs/libsndfile/src/ircam.c b/libs/libsndfile/src/ircam.c deleted file mode 100644 index 003809f3fa..0000000000 --- a/libs/libsndfile/src/ircam.c +++ /dev/null @@ -1,331 +0,0 @@ -/* -** Copyright (C) 2001-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -/*------------------------------------------------------------------------------ -** Macros to handle big/little endian issues. -*/ - -/* The IRCAM magic number is weird in that one byte in the number can have -** values of 0x1, 0x2, 0x03 or 0x04. Hence the need for a marker and a mask. -*/ - -#define IRCAM_BE_MASK (MAKE_MARKER (0xFF, 0xFF, 0x00, 0xFF)) -#define IRCAM_BE_MARKER (MAKE_MARKER (0x64, 0xA3, 0x00, 0x00)) - -#define IRCAM_LE_MASK (MAKE_MARKER (0xFF, 0x00, 0xFF, 0xFF)) -#define IRCAM_LE_MARKER (MAKE_MARKER (0x00, 0x00, 0xA3, 0x64)) - -#define IRCAM_02B_MARKER (MAKE_MARKER (0x64, 0xA3, 0x02, 0x00)) -#define IRCAM_03L_MARKER (MAKE_MARKER (0x64, 0xA3, 0x03, 0x00)) - -#define IRCAM_DATA_OFFSET (1024) - -/*------------------------------------------------------------------------------ -** Typedefs. -*/ - -enum -{ IRCAM_PCM_16 = 0x00002, - IRCAM_FLOAT = 0x00004, - IRCAM_ALAW = 0x10001, - IRCAM_ULAW = 0x20001, - IRCAM_PCM_32 = 0x40004 -} ; - - -/*------------------------------------------------------------------------------ -** Private static functions. -*/ - -static int ircam_close (SF_PRIVATE *psf) ; -static int ircam_write_header (SF_PRIVATE *psf, int calc_length) ; -static int ircam_read_header (SF_PRIVATE *psf) ; - -static int get_encoding (int subformat) ; - -static const char* get_encoding_str (int encoding) ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -ircam_open (SF_PRIVATE *psf) -{ int subformat ; - int error = SFE_NO_ERROR ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = ircam_read_header (psf))) - return error ; - } ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_IRCAM) - return SFE_BAD_OPEN_FORMAT ; - - psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ; - if (psf->endian == 0 || psf->endian == SF_ENDIAN_CPU) - psf->endian = (CPU_IS_BIG_ENDIAN) ? SF_ENDIAN_BIG : SF_ENDIAN_LITTLE ; - - psf->dataoffset = IRCAM_DATA_OFFSET ; - - if ((error = ircam_write_header (psf, SF_FALSE))) - return error ; - - psf->write_header = ircam_write_header ; - } ; - - psf->container_close = ircam_close ; - - switch (subformat) - { case SF_FORMAT_ULAW : /* 8-bit Ulaw encoding. */ - error = ulaw_init (psf) ; - break ; - - case SF_FORMAT_ALAW : /* 8-bit Alaw encoding. */ - error = alaw_init (psf) ; - break ; - - case SF_FORMAT_PCM_16 : /* 16-bit linear PCM. */ - case SF_FORMAT_PCM_32 : /* 32-bit linear PCM. */ - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_FLOAT : /* 32-bit linear PCM. */ - error = float32_init (psf) ; - break ; - - default : break ; - } ; - - return error ; -} /* ircam_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -ircam_read_header (SF_PRIVATE *psf) -{ unsigned int marker, encoding ; - float samplerate ; - int error = SFE_NO_ERROR ; - - psf_binheader_readf (psf, "epmf44", 0, &marker, &samplerate, &(psf->sf.channels), &encoding) ; - - if (((marker & IRCAM_BE_MASK) != IRCAM_BE_MARKER) && ((marker & IRCAM_LE_MASK) != IRCAM_LE_MARKER)) - { psf_log_printf (psf, "marker: 0x%X\n", marker) ; - return SFE_IRCAM_NO_MARKER ; - } ; - - psf->endian = SF_ENDIAN_LITTLE ; - - if (psf->sf.channels > 256) - { psf_binheader_readf (psf, "Epmf44", 0, &marker, &samplerate, &(psf->sf.channels), &encoding) ; - - /* Sanity checking for endian-ness detection. */ - if (psf->sf.channels > 256) - { psf_log_printf (psf, "marker: 0x%X\n", marker) ; - return SFE_IRCAM_BAD_CHANNELS ; - } ; - - psf->endian = SF_ENDIAN_BIG ; - } ; - - psf_log_printf (psf, "marker: 0x%X\n", marker) ; - - psf->sf.samplerate = (int) samplerate ; - - psf_log_printf (psf, " Sample Rate : %d\n" - " Channels : %d\n" - " Encoding : %X => %s\n", psf->sf.samplerate, psf->sf.channels, encoding, get_encoding_str (encoding)) ; - - switch (encoding) - { case IRCAM_PCM_16 : - psf->bytewidth = 2 ; - psf->blockwidth = psf->sf.channels * psf->bytewidth ; - - psf->sf.format = SF_FORMAT_IRCAM | SF_FORMAT_PCM_16 ; - break ; - - case IRCAM_PCM_32 : - psf->bytewidth = 4 ; - psf->blockwidth = psf->sf.channels * psf->bytewidth ; - - psf->sf.format = SF_FORMAT_IRCAM | SF_FORMAT_PCM_32 ; - break ; - - case IRCAM_FLOAT : - psf->bytewidth = 4 ; - psf->blockwidth = psf->sf.channels * psf->bytewidth ; - - psf->sf.format = SF_FORMAT_IRCAM | SF_FORMAT_FLOAT ; - break ; - - case IRCAM_ALAW : - psf->bytewidth = 1 ; - psf->blockwidth = psf->sf.channels * psf->bytewidth ; - - psf->sf.format = SF_FORMAT_IRCAM | SF_FORMAT_ALAW ; - break ; - - case IRCAM_ULAW : - psf->bytewidth = 1 ; - psf->blockwidth = psf->sf.channels * psf->bytewidth ; - - psf->sf.format = SF_FORMAT_IRCAM | SF_FORMAT_ULAW ; - break ; - - default : - error = SFE_IRCAM_UNKNOWN_FORMAT ; - break ; - } ; - - if (psf->endian == SF_ENDIAN_BIG) - psf->sf.format |= SF_ENDIAN_BIG ; - else - psf->sf.format |= SF_ENDIAN_LITTLE ; - - if (error) - return error ; - - psf->dataoffset = IRCAM_DATA_OFFSET ; - psf->datalength = psf->filelength - psf->dataoffset ; - - if (psf->sf.frames == 0 && psf->blockwidth) - psf->sf.frames = psf->datalength / psf->blockwidth ; - - psf_log_printf (psf, " Samples : %d\n", psf->sf.frames) ; - - psf_binheader_readf (psf, "p", IRCAM_DATA_OFFSET) ; - - return 0 ; -} /* ircam_read_header */ - -static int -ircam_close (SF_PRIVATE *psf) -{ - psf_log_printf (psf, "close\n") ; - - return 0 ; -} /* ircam_close */ - -static int -ircam_write_header (SF_PRIVATE *psf, int calc_length) -{ int encoding ; - float samplerate ; - sf_count_t current ; - - if (psf->pipeoffset > 0) - return 0 ; - - current = psf_ftell (psf) ; - - calc_length = calc_length ; - - /* This also sets psf->endian. */ - encoding = get_encoding (psf->sf.format & SF_FORMAT_SUBMASK) ; - - if (encoding == 0) - return SFE_BAD_OPEN_FORMAT ; - - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - - if (psf->is_pipe == SF_FALSE) - psf_fseek (psf, 0, SEEK_SET) ; - - samplerate = psf->sf.samplerate ; - - switch (psf->endian) - { case SF_ENDIAN_BIG : - psf_binheader_writef (psf, "Emf", IRCAM_02B_MARKER, samplerate) ; - psf_binheader_writef (psf, "E44", psf->sf.channels, encoding) ; - break ; - - case SF_ENDIAN_LITTLE : - psf_binheader_writef (psf, "emf", IRCAM_03L_MARKER, samplerate) ; - psf_binheader_writef (psf, "e44", psf->sf.channels, encoding) ; - break ; - - default : return SFE_BAD_OPEN_FORMAT ; - } ; - - psf_binheader_writef (psf, "z", (size_t) (IRCAM_DATA_OFFSET - psf->headindex)) ; - - /* Header construction complete so write it out. */ - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - if (psf->error) - return psf->error ; - - if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* ircam_write_header */ - -static int -get_encoding (int subformat) -{ switch (subformat) - { case SF_FORMAT_PCM_16 : return IRCAM_PCM_16 ; - case SF_FORMAT_PCM_32 : return IRCAM_PCM_32 ; - - case SF_FORMAT_FLOAT : return IRCAM_FLOAT ; - - case SF_FORMAT_ULAW : return IRCAM_ULAW ; - case SF_FORMAT_ALAW : return IRCAM_ALAW ; - - default : break ; - } ; - - return 0 ; -} /* get_encoding */ - -static const char* -get_encoding_str (int encoding) -{ switch (encoding) - { case IRCAM_PCM_16 : return "16 bit PCM" ; - case IRCAM_FLOAT : return "32 bit float" ; - case IRCAM_ALAW : return "A law" ; - case IRCAM_ULAW : return "u law" ; - case IRCAM_PCM_32 : return "32 bit PCM" ; - } ; - return "Unknown encoding" ; -} /* get_encoding_str */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: f2714ab8-f286-4c94-9740-edaf673a1c71 -*/ diff --git a/libs/libsndfile/src/libsndfile.def b/libs/libsndfile/src/libsndfile.def deleted file mode 100644 index 7b144538fc..0000000000 --- a/libs/libsndfile/src/libsndfile.def +++ /dev/null @@ -1,39 +0,0 @@ -; Auto-generated by create_symbols_file.py - -LIBRARY libsndfile-1.dll -EXPORTS - -sf_command @1 -sf_open @2 -sf_close @3 -sf_seek @4 -sf_error @7 -sf_perror @8 -sf_error_str @9 -sf_error_number @10 -sf_format_check @11 -sf_read_raw @16 -sf_readf_short @17 -sf_readf_int @18 -sf_readf_float @19 -sf_readf_double @20 -sf_read_short @21 -sf_read_int @22 -sf_read_float @23 -sf_read_double @24 -sf_write_raw @32 -sf_writef_short @33 -sf_writef_int @34 -sf_writef_float @35 -sf_writef_double @36 -sf_write_short @37 -sf_write_int @38 -sf_write_float @39 -sf_write_double @40 -sf_strerror @50 -sf_get_string @60 -sf_set_string @61 -sf_open_fd @70 -sf_open_virtual @80 -sf_write_sync @90 - diff --git a/libs/libsndfile/src/macbinary3.c b/libs/libsndfile/src/macbinary3.c deleted file mode 100644 index 32a10593a4..0000000000 --- a/libs/libsndfile/src/macbinary3.c +++ /dev/null @@ -1,58 +0,0 @@ -/* -** Copyright (C) 2003-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -#if (OS_IS_MACOSX == 1) - -#include - -int -macbinary3_open (SF_PRIVATE *psf) -{ - if (psf) - return 0 ; - - return 0 ; -} /* macbinary3_open */ - -#else - -int -macbinary3_open (SF_PRIVATE *psf) -{ - psf = psf ; - return 0 ; -} /* macbinary3_open */ - -#endif /* OS_IS_MACOSX */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: c397a7d7-1a31-4349-9684-bd29ef06211e -*/ diff --git a/libs/libsndfile/src/macos.c b/libs/libsndfile/src/macos.c deleted file mode 100644 index bb5543aa0c..0000000000 --- a/libs/libsndfile/src/macos.c +++ /dev/null @@ -1,63 +0,0 @@ -/* -** Copyright (C) 2003-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -#define STR_MARKER MAKE_MARKER ('S', 'T', 'R', ' ') - -int -macos_guess_file_type (SF_PRIVATE *psf, const char *filename) -{ static char rsrc_name [1024] ; - struct stat statbuf ; - int format ; - - psf = psf ; - - snprintf (rsrc_name, sizeof (rsrc_name), "%s/rsrc", filename) ; - - /* If there is no resource fork, just return. */ - if (stat (rsrc_name, &statbuf) != 0) - { psf_log_printf (psf, "No resource fork.\n") ; - return 0 ; - } ; - - if (statbuf.st_size == 0) - { psf_log_printf (psf, "Have zero size resource fork.\n") ; - return 0 ; - } ; - - format = 0 ; - - return format ; -} /* macos_guess_file_type */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 5fbf66d7-9547-442a-9c73-92fd164f3a95 -*/ diff --git a/libs/libsndfile/src/mat4.c b/libs/libsndfile/src/mat4.c deleted file mode 100644 index fcc6111506..0000000000 --- a/libs/libsndfile/src/mat4.c +++ /dev/null @@ -1,394 +0,0 @@ -/* -** Copyright (C) 2002-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" -#include "float_cast.h" - -/*------------------------------------------------------------------------------ -** Information on how to decode and encode this file was obtained in a PDF -** file which I found on http://www.wotsit.org/. -** Also did a lot of testing with GNU Octave but do not have access to -** Matlab (tm) and so could not test it there. -*/ - -/*------------------------------------------------------------------------------ -** Macros to handle big/little endian issues. -*/ - -#define MAT4_BE_DOUBLE (MAKE_MARKER (0, 0, 0x03, 0xE8)) -#define MAT4_LE_DOUBLE (MAKE_MARKER (0, 0, 0, 0)) - -#define MAT4_BE_FLOAT (MAKE_MARKER (0, 0, 0x03, 0xF2)) -#define MAT4_LE_FLOAT (MAKE_MARKER (0x0A, 0, 0, 0)) - -#define MAT4_BE_PCM_32 (MAKE_MARKER (0, 0, 0x03, 0xFC)) -#define MAT4_LE_PCM_32 (MAKE_MARKER (0x14, 0, 0, 0)) - -#define MAT4_BE_PCM_16 (MAKE_MARKER (0, 0, 0x04, 0x06)) -#define MAT4_LE_PCM_16 (MAKE_MARKER (0x1E, 0, 0, 0)) - -/* Can't see any reason to ever implement this. */ -#define MAT4_BE_PCM_U8 (MAKE_MARKER (0, 0, 0x04, 0x1A)) -#define MAT4_LE_PCM_U8 (MAKE_MARKER (0x32, 0, 0, 0)) - -/*------------------------------------------------------------------------------ -** Private static functions. -*/ - -static int mat4_close (SF_PRIVATE *psf) ; - -static int mat4_format_to_encoding (int format, int endian) ; - -static int mat4_write_header (SF_PRIVATE *psf, int calc_length) ; -static int mat4_read_header (SF_PRIVATE *psf) ; - -static const char * mat4_marker_to_str (int marker) ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -mat4_open (SF_PRIVATE *psf) -{ int subformat, error = 0 ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = mat4_read_header (psf))) - return error ; - } ; - - if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_MAT4) - return SFE_BAD_OPEN_FORMAT ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if (psf->is_pipe) - return SFE_NO_PIPE_WRITE ; - - psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ; - if (CPU_IS_LITTLE_ENDIAN && (psf->endian == SF_ENDIAN_CPU || psf->endian == 0)) - psf->endian = SF_ENDIAN_LITTLE ; - else if (CPU_IS_BIG_ENDIAN && (psf->endian == SF_ENDIAN_CPU || psf->endian == 0)) - psf->endian = SF_ENDIAN_BIG ; - - if ((error = mat4_write_header (psf, SF_FALSE))) - return error ; - - psf->write_header = mat4_write_header ; - } ; - - psf->container_close = mat4_close ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - - switch (subformat) - { case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_32 : - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_FLOAT : - error = float32_init (psf) ; - break ; - - case SF_FORMAT_DOUBLE : - error = double64_init (psf) ; - break ; - - default : break ; - } ; - - if (error) - return error ; - - return error ; -} /* mat4_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -mat4_close (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - mat4_write_header (psf, SF_TRUE) ; - - return 0 ; -} /* mat4_close */ - -/*------------------------------------------------------------------------------ -*/ - -static int -mat4_write_header (SF_PRIVATE *psf, int calc_length) -{ sf_count_t current ; - int encoding ; - double samplerate ; - - current = psf_ftell (psf) ; - - if (calc_length) - { psf->filelength = psf_get_filelen (psf) ; - - psf->datalength = psf->filelength - psf->dataoffset ; - if (psf->dataend) - psf->datalength -= psf->filelength - psf->dataend ; - - psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ; - } ; - - encoding = mat4_format_to_encoding (psf->sf.format & SF_FORMAT_SUBMASK, psf->endian) ; - - if (encoding == -1) - return SFE_BAD_OPEN_FORMAT ; - - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - psf_fseek (psf, 0, SEEK_SET) ; - - /* Need sample rate as a double for writing to the header. */ - samplerate = psf->sf.samplerate ; - - if (psf->endian == SF_ENDIAN_BIG) - { psf_binheader_writef (psf, "Em444", MAT4_BE_DOUBLE, 1, 1, 0) ; - psf_binheader_writef (psf, "E4bd", 11, "samplerate", 11, samplerate) ; - psf_binheader_writef (psf, "tEm484", encoding, psf->sf.channels, psf->sf.frames, 0) ; - psf_binheader_writef (psf, "E4b", 9, "wavedata", 9) ; - } - else if (psf->endian == SF_ENDIAN_LITTLE) - { psf_binheader_writef (psf, "em444", MAT4_LE_DOUBLE, 1, 1, 0) ; - psf_binheader_writef (psf, "e4bd", 11, "samplerate", 11, samplerate) ; - psf_binheader_writef (psf, "tem484", encoding, psf->sf.channels, psf->sf.frames, 0) ; - psf_binheader_writef (psf, "e4b", 9, "wavedata", 9) ; - } - else - return SFE_BAD_OPEN_FORMAT ; - - /* Header construction complete so write it out. */ - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - if (psf->error) - return psf->error ; - - psf->dataoffset = psf->headindex ; - - if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* mat4_write_header */ - -static int -mat4_read_header (SF_PRIVATE *psf) -{ int marker, namesize, rows, cols, imag ; - double value ; - const char *marker_str ; - char name [64] ; - - psf_binheader_readf (psf, "pm", 0, &marker) ; - - /* MAT4 file must start with a double for the samplerate. */ - if (marker == MAT4_BE_DOUBLE) - { psf->endian = psf->rwf_endian = SF_ENDIAN_BIG ; - marker_str = "big endian double" ; - } - else if (marker == MAT4_LE_DOUBLE) - { psf->endian = psf->rwf_endian = SF_ENDIAN_LITTLE ; - marker_str = "little endian double" ; - } - else - return SFE_UNIMPLEMENTED ; - - psf_log_printf (psf, "GNU Octave 2.0 / MATLAB v4.2 format\nMarker : %s\n", marker_str) ; - - psf_binheader_readf (psf, "444", &rows, &cols, &imag) ; - - psf_log_printf (psf, " Rows : %d\n Cols : %d\n Imag : %s\n", rows, cols, imag ? "True" : "False") ; - - psf_binheader_readf (psf, "4", &namesize) ; - - if (namesize >= SIGNED_SIZEOF (name)) - return SFE_MAT4_BAD_NAME ; - - psf_binheader_readf (psf, "b", name, namesize) ; - name [namesize] = 0 ; - - psf_log_printf (psf, " Name : %s\n", name) ; - - psf_binheader_readf (psf, "d", &value) ; - - LSF_SNPRINTF (psf->u.cbuf, sizeof (psf->u.cbuf), " Value : %f\n", value) ; - psf_log_printf (psf, psf->u.cbuf) ; - - if ((rows != 1) || (cols != 1)) - return SFE_MAT4_NO_SAMPLERATE ; - - psf->sf.samplerate = lrint (value) ; - - /* Now write out the audio data. */ - - psf_binheader_readf (psf, "m", &marker) ; - - psf_log_printf (psf, "Marker : %s\n", mat4_marker_to_str (marker)) ; - - psf_binheader_readf (psf, "444", &rows, &cols, &imag) ; - - psf_log_printf (psf, " Rows : %d\n Cols : %d\n Imag : %s\n", rows, cols, imag ? "True" : "False") ; - - psf_binheader_readf (psf, "4", &namesize) ; - - if (namesize >= SIGNED_SIZEOF (name)) - return SFE_MAT4_BAD_NAME ; - - psf_binheader_readf (psf, "b", name, namesize) ; - name [namesize] = 0 ; - - psf_log_printf (psf, " Name : %s\n", name) ; - - psf->dataoffset = psf_ftell (psf) ; - - if (rows == 0 && cols == 0) - { psf_log_printf (psf, "*** Error : zero channel count.\n") ; - return SFE_MAT4_ZERO_CHANNELS ; - } ; - - psf->sf.channels = rows ; - psf->sf.frames = cols ; - - psf->sf.format = psf->endian | SF_FORMAT_MAT4 ; - switch (marker) - { case MAT4_BE_DOUBLE : - case MAT4_LE_DOUBLE : - psf->sf.format |= SF_FORMAT_DOUBLE ; - psf->bytewidth = 8 ; - break ; - - case MAT4_BE_FLOAT : - case MAT4_LE_FLOAT : - psf->sf.format |= SF_FORMAT_FLOAT ; - psf->bytewidth = 4 ; - break ; - - case MAT4_BE_PCM_32 : - case MAT4_LE_PCM_32 : - psf->sf.format |= SF_FORMAT_PCM_32 ; - psf->bytewidth = 4 ; - break ; - - case MAT4_BE_PCM_16 : - case MAT4_LE_PCM_16 : - psf->sf.format |= SF_FORMAT_PCM_16 ; - psf->bytewidth = 2 ; - break ; - - default : - psf_log_printf (psf, "*** Error : Bad marker %08X\n", marker) ; - return SFE_UNIMPLEMENTED ; - } ; - - if ((psf->filelength - psf->dataoffset) < psf->sf.channels * psf->sf.frames * psf->bytewidth) - { psf_log_printf (psf, "*** File seems to be truncated. %D <--> %D\n", - psf->filelength - psf->dataoffset, psf->sf.channels * psf->sf.frames * psf->bytewidth) ; - } - else if ((psf->filelength - psf->dataoffset) > psf->sf.channels * psf->sf.frames * psf->bytewidth) - psf->dataend = psf->dataoffset + rows * cols * psf->bytewidth ; - - psf->datalength = psf->filelength - psf->dataoffset - psf->dataend ; - - psf->sf.sections = 1 ; - - return 0 ; -} /* mat4_read_header */ - -static int -mat4_format_to_encoding (int format, int endian) -{ - switch (format | endian) - { case (SF_FORMAT_PCM_16 | SF_ENDIAN_BIG) : - return MAT4_BE_PCM_16 ; - - case (SF_FORMAT_PCM_16 | SF_ENDIAN_LITTLE) : - return MAT4_LE_PCM_16 ; - - case (SF_FORMAT_PCM_32 | SF_ENDIAN_BIG) : - return MAT4_BE_PCM_32 ; - - case (SF_FORMAT_PCM_32 | SF_ENDIAN_LITTLE) : - return MAT4_LE_PCM_32 ; - - case (SF_FORMAT_FLOAT | SF_ENDIAN_BIG) : - return MAT4_BE_FLOAT ; - - case (SF_FORMAT_FLOAT | SF_ENDIAN_LITTLE) : - return MAT4_LE_FLOAT ; - - case (SF_FORMAT_DOUBLE | SF_ENDIAN_BIG) : - return MAT4_BE_DOUBLE ; - - case (SF_FORMAT_DOUBLE | SF_ENDIAN_LITTLE) : - return MAT4_LE_DOUBLE ; - - default : break ; - } ; - - return -1 ; -} /* mat4_format_to_encoding */ - -static const char * -mat4_marker_to_str (int marker) -{ static char str [32] ; - - switch (marker) - { - case MAT4_BE_PCM_16 : return "big endian 16 bit PCM" ; - case MAT4_LE_PCM_16 : return "little endian 16 bit PCM" ; - - case MAT4_BE_PCM_32 : return "big endian 32 bit PCM" ; - case MAT4_LE_PCM_32 : return "little endian 32 bit PCM" ; - - - case MAT4_BE_FLOAT : return "big endian float" ; - case MAT4_LE_FLOAT : return "big endian float" ; - - case MAT4_BE_DOUBLE : return "big endian double" ; - case MAT4_LE_DOUBLE : return "little endian double" ; - } ; - - /* This is a little unsafe but is really only for debugging. */ - str [sizeof (str) - 1] = 0 ; - LSF_SNPRINTF (str, sizeof (str) - 1, "%08X", marker) ; - return str ; -} /* mat4_marker_to_str */ -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: f7e5f5d6-fc39-452e-bc4a-59627116ff59 -*/ diff --git a/libs/libsndfile/src/mat5.c b/libs/libsndfile/src/mat5.c deleted file mode 100644 index dfef7b517a..0000000000 --- a/libs/libsndfile/src/mat5.c +++ /dev/null @@ -1,507 +0,0 @@ -/* -** Copyright (C) 2002-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" -#include "float_cast.h" - -/*------------------------------------------------------------------------------ -** Information on how to decode and encode this file was obtained in a PDF -** file which I found on http://www.wotsit.org/. -** Also did a lot of testing with GNU Octave but do not have access to -** Matlab (tm) and so could not test it there. -*/ - -/*------------------------------------------------------------------------------ -** Macros to handle big/little endian issues. -*/ - -#define MATL_MARKER (MAKE_MARKER ('M', 'A', 'T', 'L')) - -#define IM_MARKER (('I' << 8) + 'M') -#define MI_MARKER (('M' << 8) + 'I') - -/*------------------------------------------------------------------------------ -** Enums and typedefs. -*/ - -enum -{ MAT5_TYPE_SCHAR = 0x1, - MAT5_TYPE_UCHAR = 0x2, - MAT5_TYPE_INT16 = 0x3, - MAT5_TYPE_UINT16 = 0x4, - MAT5_TYPE_INT32 = 0x5, - MAT5_TYPE_UINT32 = 0x6, - MAT5_TYPE_FLOAT = 0x7, - MAT5_TYPE_DOUBLE = 0x9, - MAT5_TYPE_ARRAY = 0xE, - - MAT5_TYPE_COMP_USHORT = 0x00020004, - MAT5_TYPE_COMP_UINT = 0x00040006 -} ; - -typedef struct -{ sf_count_t size ; - int rows, cols ; - char name [32] ; -} MAT5_MATRIX ; - -/*------------------------------------------------------------------------------ -** Private static functions. -*/ - -static int mat5_close (SF_PRIVATE *psf) ; - -static int mat5_write_header (SF_PRIVATE *psf, int calc_length) ; -static int mat5_read_header (SF_PRIVATE *psf) ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -mat5_open (SF_PRIVATE *psf) -{ int subformat, error = 0 ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = mat5_read_header (psf))) - return error ; - } ; - - if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_MAT5) - return SFE_BAD_OPEN_FORMAT ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if (psf->is_pipe) - return SFE_NO_PIPE_WRITE ; - - psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ; - if (CPU_IS_LITTLE_ENDIAN && (psf->endian == SF_ENDIAN_CPU || psf->endian == 0)) - psf->endian = SF_ENDIAN_LITTLE ; - else if (CPU_IS_BIG_ENDIAN && (psf->endian == SF_ENDIAN_CPU || psf->endian == 0)) - psf->endian = SF_ENDIAN_BIG ; - - if ((error = mat5_write_header (psf, SF_FALSE))) - return error ; - - psf->write_header = mat5_write_header ; - } ; - - psf->container_close = mat5_close ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - - switch (subformat) - { case SF_FORMAT_PCM_U8 : - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_32 : - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_FLOAT : - error = float32_init (psf) ; - break ; - - case SF_FORMAT_DOUBLE : - error = double64_init (psf) ; - break ; - - default : break ; - } ; - - return error ; -} /* mat5_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -mat5_close (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - mat5_write_header (psf, SF_TRUE) ; - - return 0 ; -} /* mat5_close */ - -/*------------------------------------------------------------------------------ -*/ - -static int -mat5_write_header (SF_PRIVATE *psf, int calc_length) -{ static const char *filename = "MATLAB 5.0 MAT-file, written by " PACKAGE "-" VERSION ", " ; - static const char *sr_name = "samplerate\0\0\0\0\0\0\0\0\0\0\0" ; - static const char *wd_name = "wavedata\0" ; - sf_count_t current, datasize ; - int encoding ; - - current = psf_ftell (psf) ; - - if (calc_length) - { psf_fseek (psf, 0, SEEK_END) ; - psf->filelength = psf_ftell (psf) ; - psf_fseek (psf, 0, SEEK_SET) ; - - psf->datalength = psf->filelength - psf->dataoffset ; - if (psf->dataend) - psf->datalength -= psf->filelength - psf->dataend ; - - psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ; - } ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_U8 : - encoding = MAT5_TYPE_UCHAR ; - break ; - - case SF_FORMAT_PCM_16 : - encoding = MAT5_TYPE_INT16 ; - break ; - - case SF_FORMAT_PCM_32 : - encoding = MAT5_TYPE_INT32 ; - break ; - - case SF_FORMAT_FLOAT : - encoding = MAT5_TYPE_FLOAT ; - break ; - - case SF_FORMAT_DOUBLE : - encoding = MAT5_TYPE_DOUBLE ; - break ; - - default : - return SFE_BAD_OPEN_FORMAT ; - } ; - - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - psf_fseek (psf, 0, SEEK_SET) ; - - psf_get_date_str (psf->u.cbuf, sizeof (psf->u.scbuf)) ; - psf_binheader_writef (psf, "bb", filename, strlen (filename), psf->u.cbuf, strlen (psf->u.cbuf) + 1) ; - - memset (psf->u.scbuf, ' ', 124 - psf->headindex) ; - psf_binheader_writef (psf, "b", psf->u.scbuf, 124 - psf->headindex) ; - - psf->rwf_endian = psf->endian ; - - if (psf->rwf_endian == SF_ENDIAN_BIG) - psf_binheader_writef (psf, "2b", 0x0100, "MI", 2) ; - else - psf_binheader_writef (psf, "2b", 0x0100, "IM", 2) ; - - psf_binheader_writef (psf, "444444", MAT5_TYPE_ARRAY, 64, MAT5_TYPE_UINT32, 8, 6, 0) ; - psf_binheader_writef (psf, "4444", MAT5_TYPE_INT32, 8, 1, 1) ; - psf_binheader_writef (psf, "44b", MAT5_TYPE_SCHAR, strlen (sr_name), sr_name, 16) ; - - if (psf->sf.samplerate > 0xFFFF) - psf_binheader_writef (psf, "44", MAT5_TYPE_COMP_UINT, psf->sf.samplerate) ; - else - { unsigned short samplerate = psf->sf.samplerate ; - - psf_binheader_writef (psf, "422", MAT5_TYPE_COMP_USHORT, samplerate, 0) ; - } ; - - datasize = psf->sf.frames * psf->sf.channels * psf->bytewidth ; - - psf_binheader_writef (psf, "t484444", MAT5_TYPE_ARRAY, datasize + 64, MAT5_TYPE_UINT32, 8, 6, 0) ; - psf_binheader_writef (psf, "t4448", MAT5_TYPE_INT32, 8, psf->sf.channels, psf->sf.frames) ; - psf_binheader_writef (psf, "44b", MAT5_TYPE_SCHAR, strlen (wd_name), wd_name, strlen (wd_name)) ; - - datasize = psf->sf.frames * psf->sf.channels * psf->bytewidth ; - if (datasize > 0x7FFFFFFF) - datasize = 0x7FFFFFFF ; - - psf_binheader_writef (psf, "t48", encoding, datasize) ; - - /* Header construction complete so write it out. */ - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - if (psf->error) - return psf->error ; - - psf->dataoffset = psf->headindex ; - - if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* mat5_write_header */ - -static int -mat5_read_header (SF_PRIVATE *psf) -{ char name [32] ; - short version, endian ; - int type, size, flags1, flags2, rows, cols ; - - psf_binheader_readf (psf, "pb", 0, psf->u.cbuf, 124) ; - - psf->u.scbuf [125] = 0 ; - - if (strlen (psf->u.cbuf) >= 124) - return SFE_UNIMPLEMENTED ; - - if (strstr (psf->u.cbuf, "MATLAB 5.0 MAT-file") == psf->u.cbuf) - psf_log_printf (psf, "%s\n", psf->u.scbuf) ; - - - psf_binheader_readf (psf, "E22", &version, &endian) ; - - if (endian == MI_MARKER) - { psf->endian = psf->rwf_endian = SF_ENDIAN_BIG ; - if (CPU_IS_LITTLE_ENDIAN) version = ENDSWAP_SHORT (version) ; - } - else if (endian == IM_MARKER) - { psf->endian = psf->rwf_endian = SF_ENDIAN_LITTLE ; - if (CPU_IS_BIG_ENDIAN) version = ENDSWAP_SHORT (version) ; - } - else - return SFE_MAT5_BAD_ENDIAN ; - - if ((CPU_IS_LITTLE_ENDIAN && endian == IM_MARKER) || - (CPU_IS_BIG_ENDIAN && endian == MI_MARKER)) - version = ENDSWAP_SHORT (version) ; - - psf_log_printf (psf, "Version : 0x%04X\n", version) ; - psf_log_printf (psf, "Endian : 0x%04X => %s\n", endian, - (psf->endian == SF_ENDIAN_LITTLE) ? "Little" : "Big") ; - - /*========================================================*/ - psf_binheader_readf (psf, "44", &type, &size) ; - psf_log_printf (psf, "Block\n Type : %X Size : %d\n", type, size) ; - - if (type != MAT5_TYPE_ARRAY) - return SFE_MAT5_NO_BLOCK ; - - psf_binheader_readf (psf, "44", &type, &size) ; - psf_log_printf (psf, " Type : %X Size : %d\n", type, size) ; - - if (type != MAT5_TYPE_UINT32) - return SFE_MAT5_NO_BLOCK ; - - psf_binheader_readf (psf, "44", &flags1, &flags2) ; - psf_log_printf (psf, " Flg1 : %X Flg2 : %d\n", flags1, flags2) ; - - psf_binheader_readf (psf, "44", &type, &size) ; - psf_log_printf (psf, " Type : %X Size : %d\n", type, size) ; - - if (type != MAT5_TYPE_INT32) - return SFE_MAT5_NO_BLOCK ; - - psf_binheader_readf (psf, "44", &rows, &cols) ; - psf_log_printf (psf, " Rows : %X Cols : %d\n", rows, cols) ; - - if (rows != 1 || cols != 1) - return SFE_MAT5_SAMPLE_RATE ; - - psf_binheader_readf (psf, "4", &type) ; - - if (type == MAT5_TYPE_SCHAR) - { psf_binheader_readf (psf, "4", &size) ; - psf_log_printf (psf, " Type : %X Size : %d\n", type, size) ; - if (size > SIGNED_SIZEOF (name) - 1) - { psf_log_printf (psf, "Error : Bad name length.\n") ; - return SFE_MAT5_NO_BLOCK ; - } ; - - psf_binheader_readf (psf, "bj", name, size, (8 - (size % 8)) % 8) ; - name [size] = 0 ; - } - else if ((type & 0xFFFF) == MAT5_TYPE_SCHAR) - { size = type >> 16 ; - if (size > 4) - { psf_log_printf (psf, "Error : Bad name length.\n") ; - return SFE_MAT5_NO_BLOCK ; - } ; - - psf_log_printf (psf, " Type : %X\n", type) ; - psf_binheader_readf (psf, "4", &name) ; - name [size] = 0 ; - } - else - return SFE_MAT5_NO_BLOCK ; - - psf_log_printf (psf, " Name : %s\n", name) ; - - /*-----------------------------------------*/ - - psf_binheader_readf (psf, "44", &type, &size) ; - - switch (type) - { case MAT5_TYPE_DOUBLE : - { double samplerate ; - - psf_binheader_readf (psf, "d", &samplerate) ; - LSF_SNPRINTF (name, sizeof (name), "%f\n", samplerate) ; - psf_log_printf (psf, " Val : %s\n", name) ; - - psf->sf.samplerate = lrint (samplerate) ; - } ; - break ; - - case MAT5_TYPE_COMP_USHORT : - { unsigned short samplerate ; - - psf_binheader_readf (psf, "j2j", -4, &samplerate, 2) ; - psf_log_printf (psf, " Val : %u\n", samplerate) ; - psf->sf.samplerate = samplerate ; - } - break ; - - case MAT5_TYPE_COMP_UINT : - psf_log_printf (psf, " Val : %u\n", size) ; - psf->sf.samplerate = size ; - break ; - - default : - psf_log_printf (psf, " Type : %X Size : %d ***\n", type, size) ; - return SFE_MAT5_SAMPLE_RATE ; - } ; - - /*-----------------------------------------*/ - - - psf_binheader_readf (psf, "44", &type, &size) ; - psf_log_printf (psf, " Type : %X Size : %d\n", type, size) ; - - if (type != MAT5_TYPE_ARRAY) - return SFE_MAT5_NO_BLOCK ; - - psf_binheader_readf (psf, "44", &type, &size) ; - psf_log_printf (psf, " Type : %X Size : %d\n", type, size) ; - - if (type != MAT5_TYPE_UINT32) - return SFE_MAT5_NO_BLOCK ; - - psf_binheader_readf (psf, "44", &flags1, &flags2) ; - psf_log_printf (psf, " Flg1 : %X Flg2 : %d\n", flags1, flags2) ; - - psf_binheader_readf (psf, "44", &type, &size) ; - psf_log_printf (psf, " Type : %X Size : %d\n", type, size) ; - - if (type != MAT5_TYPE_INT32) - return SFE_MAT5_NO_BLOCK ; - - psf_binheader_readf (psf, "44", &rows, &cols) ; - psf_log_printf (psf, " Rows : %X Cols : %d\n", rows, cols) ; - - psf_binheader_readf (psf, "4", &type) ; - - if (type == MAT5_TYPE_SCHAR) - { psf_binheader_readf (psf, "4", &size) ; - psf_log_printf (psf, " Type : %X Size : %d\n", type, size) ; - if (size > SIGNED_SIZEOF (name) - 1) - { psf_log_printf (psf, "Error : Bad name length.\n") ; - return SFE_MAT5_NO_BLOCK ; - } ; - - psf_binheader_readf (psf, "bj", name, size, (8 - (size % 8)) % 8) ; - name [size] = 0 ; - } - else if ((type & 0xFFFF) == MAT5_TYPE_SCHAR) - { size = type >> 16 ; - if (size > 4) - { psf_log_printf (psf, "Error : Bad name length.\n") ; - return SFE_MAT5_NO_BLOCK ; - } ; - - psf_log_printf (psf, " Type : %X\n", type) ; - psf_binheader_readf (psf, "4", &name) ; - name [size] = 0 ; - } - else - return SFE_MAT5_NO_BLOCK ; - - psf_log_printf (psf, " Name : %s\n", name) ; - - psf_binheader_readf (psf, "44", &type, &size) ; - psf_log_printf (psf, " Type : %X Size : %d\n", type, size) ; - - /*++++++++++++++++++++++++++++++++++++++++++++++++++*/ - - if (rows == 0 && cols == 0) - { psf_log_printf (psf, "*** Error : zero channel count.\n") ; - return SFE_MAT5_ZERO_CHANNELS ; - } ; - - psf->sf.channels = rows ; - psf->sf.frames = cols ; - - psf->sf.format = psf->endian | SF_FORMAT_MAT5 ; - - switch (type) - { case MAT5_TYPE_DOUBLE : - psf_log_printf (psf, "Data type : double\n") ; - psf->sf.format |= SF_FORMAT_DOUBLE ; - psf->bytewidth = 8 ; - break ; - - case MAT5_TYPE_FLOAT : - psf_log_printf (psf, "Data type : float\n") ; - psf->sf.format |= SF_FORMAT_FLOAT ; - psf->bytewidth = 4 ; - break ; - - case MAT5_TYPE_INT32 : - psf_log_printf (psf, "Data type : 32 bit PCM\n") ; - psf->sf.format |= SF_FORMAT_PCM_32 ; - psf->bytewidth = 4 ; - break ; - - case MAT5_TYPE_INT16 : - psf_log_printf (psf, "Data type : 16 bit PCM\n") ; - psf->sf.format |= SF_FORMAT_PCM_16 ; - psf->bytewidth = 2 ; - break ; - - case MAT5_TYPE_UCHAR : - psf_log_printf (psf, "Data type : unsigned 8 bit PCM\n") ; - psf->sf.format |= SF_FORMAT_PCM_U8 ; - psf->bytewidth = 1 ; - break ; - - default : - psf_log_printf (psf, "*** Error : Bad marker %08X\n", type) ; - return SFE_UNIMPLEMENTED ; - } ; - - psf->dataoffset = psf_ftell (psf) ; - psf->datalength = psf->filelength - psf->dataoffset ; - - return 0 ; -} /* mat5_read_header */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: dfdb6742-b2be-4be8-b390-d0c674e8bc8e -*/ diff --git a/libs/libsndfile/src/ms_adpcm.c b/libs/libsndfile/src/ms_adpcm.c deleted file mode 100644 index bb774fa1b2..0000000000 --- a/libs/libsndfile/src/ms_adpcm.c +++ /dev/null @@ -1,834 +0,0 @@ -/* -** Copyright (C) 1999-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "float_cast.h" -#include "common.h" -#include "wav_w64.h" - -/* These required here because we write the header in this file. */ - -#define RIFF_MARKER (MAKE_MARKER ('R', 'I', 'F', 'F')) -#define WAVE_MARKER (MAKE_MARKER ('W', 'A', 'V', 'E')) -#define fmt_MARKER (MAKE_MARKER ('f', 'm', 't', ' ')) -#define fact_MARKER (MAKE_MARKER ('f', 'a', 'c', 't')) -#define data_MARKER (MAKE_MARKER ('d', 'a', 't', 'a')) - -#define WAVE_FORMAT_MS_ADPCM 0x0002 - -typedef struct -{ int channels, blocksize, samplesperblock, blocks, dataremaining ; - int blockcount ; - sf_count_t samplecount ; - short *samples ; - unsigned char *block ; -#if HAVE_FLEXIBLE_ARRAY - short dummydata [] ; /* ISO C99 struct flexible array. */ -#else - short dummydata [0] ; /* This is a hack an might not work. */ -#endif -} MSADPCM_PRIVATE ; - -/*============================================================================================ -** MS ADPCM static data and functions. -*/ - -static int AdaptationTable [] = -{ 230, 230, 230, 230, 307, 409, 512, 614, - 768, 614, 512, 409, 307, 230, 230, 230 -} ; - -/* TODO : The first 7 coef's are are always hardcode and must - appear in the actual WAVE file. They should be read in - in case a sound program added extras to the list. */ - -static int AdaptCoeff1 [MSADPCM_ADAPT_COEFF_COUNT] = -{ 256, 512, 0, 192, 240, 460, 392 -} ; - -static int AdaptCoeff2 [MSADPCM_ADAPT_COEFF_COUNT] = -{ 0, -256, 0, 64, 0, -208, -232 -} ; - -/*============================================================================================ -** MS ADPCM Block Layout. -** ====================== -** Block is usually 256, 512 or 1024 bytes depending on sample rate. -** For a mono file, the block is laid out as follows: -** byte purpose -** 0 block predictor [0..6] -** 1,2 initial idelta (positive) -** 3,4 sample 1 -** 5,6 sample 0 -** 7..n packed bytecodes -** -** For a stereo file, the block is laid out as follows: -** byte purpose -** 0 block predictor [0..6] for left channel -** 1 block predictor [0..6] for right channel -** 2,3 initial idelta (positive) for left channel -** 4,5 initial idelta (positive) for right channel -** 6,7 sample 1 for left channel -** 8,9 sample 1 for right channel -** 10,11 sample 0 for left channel -** 12,13 sample 0 for right channel -** 14..n packed bytecodes -*/ - -/*============================================================================================ -** Static functions. -*/ - -static int msadpcm_decode_block (SF_PRIVATE *psf, MSADPCM_PRIVATE *pms) ; -static sf_count_t msadpcm_read_block (SF_PRIVATE *psf, MSADPCM_PRIVATE *pms, short *ptr, int len) ; - -static int msadpcm_encode_block (SF_PRIVATE *psf, MSADPCM_PRIVATE *pms) ; -static sf_count_t msadpcm_write_block (SF_PRIVATE *psf, MSADPCM_PRIVATE *pms, const short *ptr, int len) ; - -static sf_count_t msadpcm_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t msadpcm_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t msadpcm_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t msadpcm_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t msadpcm_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t msadpcm_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t msadpcm_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t msadpcm_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -static sf_count_t msadpcm_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ; -static int msadpcm_close (SF_PRIVATE *psf) ; - -static void choose_predictor (unsigned int channels, short *data, int *bpred, int *idelta) ; - -/*============================================================================================ -** MS ADPCM Read Functions. -*/ - -int -wav_w64_msadpcm_init (SF_PRIVATE *psf, int blockalign, int samplesperblock) -{ MSADPCM_PRIVATE *pms ; - unsigned int pmssize ; - int count ; - - if (psf->fdata != NULL) - { psf_log_printf (psf, "*** psf->fdata is not NULL.\n") ; - return SFE_INTERNAL ; - } ; - - if (psf->mode == SFM_WRITE) - samplesperblock = 2 + 2 * (blockalign - 7 * psf->sf.channels) / psf->sf.channels ; - - pmssize = sizeof (MSADPCM_PRIVATE) + blockalign + 3 * psf->sf.channels * samplesperblock ; - - if (! (psf->fdata = malloc (pmssize))) - return SFE_MALLOC_FAILED ; - pms = (MSADPCM_PRIVATE*) psf->fdata ; - memset (pms, 0, pmssize) ; - - pms->samples = pms->dummydata ; - pms->block = (unsigned char*) (pms->dummydata + psf->sf.channels * samplesperblock) ; - - pms->channels = psf->sf.channels ; - pms->blocksize = blockalign ; - pms->samplesperblock = samplesperblock ; - - if (psf->mode == SFM_READ) - { pms->dataremaining = psf->datalength ; - - if (psf->datalength % pms->blocksize) - pms->blocks = psf->datalength / pms->blocksize + 1 ; - else - pms->blocks = psf->datalength / pms->blocksize ; - - count = 2 * (pms->blocksize - 6 * pms->channels) / pms->channels ; - if (pms->samplesperblock != count) - psf_log_printf (psf, "*** Warning : samplesperblock shoud be %d.\n", count) ; - - psf->sf.frames = (psf->datalength / pms->blocksize) * pms->samplesperblock ; - - psf_log_printf (psf, " bpred idelta\n") ; - - msadpcm_decode_block (psf, pms) ; - - psf->read_short = msadpcm_read_s ; - psf->read_int = msadpcm_read_i ; - psf->read_float = msadpcm_read_f ; - psf->read_double = msadpcm_read_d ; - } ; - - if (psf->mode == SFM_WRITE) - { pms->samples = pms->dummydata ; - - pms->samplecount = 0 ; - - psf->write_short = msadpcm_write_s ; - psf->write_int = msadpcm_write_i ; - psf->write_float = msadpcm_write_f ; - psf->write_double = msadpcm_write_d ; - } ; - - psf->codec_close = msadpcm_close ; - psf->seek = msadpcm_seek ; - - return 0 ; -} /* wav_w64_msadpcm_init */ - -static int -msadpcm_decode_block (SF_PRIVATE *psf, MSADPCM_PRIVATE *pms) -{ int chan, k, blockindx, sampleindx ; - short bytecode, bpred [2], chan_idelta [2] ; - - int predict ; - int current ; - int idelta ; - - pms->blockcount ++ ; - pms->samplecount = 0 ; - - if (pms->blockcount > pms->blocks) - { memset (pms->samples, 0, pms->samplesperblock * pms->channels) ; - return 1 ; - } ; - - if ((k = psf_fread (pms->block, 1, pms->blocksize, psf)) != pms->blocksize) - psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, pms->blocksize) ; - - /* Read and check the block header. */ - - if (pms->channels == 1) - { bpred [0] = pms->block [0] ; - - if (bpred [0] >= 7) - psf_log_printf (psf, "MS ADPCM synchronisation error (%d).\n", bpred [0]) ; - - chan_idelta [0] = pms->block [1] | (pms->block [2] << 8) ; - chan_idelta [1] = 0 ; - - psf_log_printf (psf, "(%d) (%d)\n", bpred [0], chan_idelta [0]) ; - - pms->samples [1] = pms->block [3] | (pms->block [4] << 8) ; - pms->samples [0] = pms->block [5] | (pms->block [6] << 8) ; - blockindx = 7 ; - } - else - { bpred [0] = pms->block [0] ; - bpred [1] = pms->block [1] ; - - if (bpred [0] >= 7 || bpred [1] >= 7) - psf_log_printf (psf, "MS ADPCM synchronisation error (%d %d).\n", bpred [0], bpred [1]) ; - - chan_idelta [0] = pms->block [2] | (pms->block [3] << 8) ; - chan_idelta [1] = pms->block [4] | (pms->block [5] << 8) ; - - psf_log_printf (psf, "(%d, %d) (%d, %d)\n", bpred [0], bpred [1], chan_idelta [0], chan_idelta [1]) ; - - pms->samples [2] = pms->block [6] | (pms->block [7] << 8) ; - pms->samples [3] = pms->block [8] | (pms->block [9] << 8) ; - - pms->samples [0] = pms->block [10] | (pms->block [11] << 8) ; - pms->samples [1] = pms->block [12] | (pms->block [13] << 8) ; - - blockindx = 14 ; - } ; - - /*-------------------------------------------------------- - This was left over from a time when calculations were done - as ints rather than shorts. Keep this around as a reminder - in case I ever find a file which decodes incorrectly. - - if (chan_idelta [0] & 0x8000) - chan_idelta [0] -= 0x10000 ; - if (chan_idelta [1] & 0x8000) - chan_idelta [1] -= 0x10000 ; - --------------------------------------------------------*/ - - /* Pull apart the packed 4 bit samples and store them in their - ** correct sample positions. - */ - - sampleindx = 2 * pms->channels ; - while (blockindx < pms->blocksize) - { bytecode = pms->block [blockindx++] ; - pms->samples [sampleindx++] = (bytecode >> 4) & 0x0F ; - pms->samples [sampleindx++] = bytecode & 0x0F ; - } ; - - /* Decode the encoded 4 bit samples. */ - - for (k = 2 * pms->channels ; k < (pms->samplesperblock * pms->channels) ; k ++) - { chan = (pms->channels > 1) ? (k % 2) : 0 ; - - bytecode = pms->samples [k] & 0xF ; - - /* Compute next Adaptive Scale Factor (ASF) */ - idelta = chan_idelta [chan] ; - chan_idelta [chan] = (AdaptationTable [bytecode] * idelta) >> 8 ; /* => / 256 => FIXED_POINT_ADAPTATION_BASE == 256 */ - if (chan_idelta [chan] < 16) - chan_idelta [chan] = 16 ; - if (bytecode & 0x8) - bytecode -= 0x10 ; - - predict = ((pms->samples [k - pms->channels] * AdaptCoeff1 [bpred [chan]]) - + (pms->samples [k - 2 * pms->channels] * AdaptCoeff2 [bpred [chan]])) >> 8 ; /* => / 256 => FIXED_POINT_COEFF_BASE == 256 */ - current = (bytecode * idelta) + predict ; - - if (current > 32767) - current = 32767 ; - else if (current < -32768) - current = -32768 ; - - pms->samples [k] = current ; - } ; - - return 1 ; -} /* msadpcm_decode_block */ - -static sf_count_t -msadpcm_read_block (SF_PRIVATE *psf, MSADPCM_PRIVATE *pms, short *ptr, int len) -{ int count, total = 0, indx = 0 ; - - while (indx < len) - { if (pms->blockcount >= pms->blocks && pms->samplecount >= pms->samplesperblock) - { memset (&(ptr [indx]), 0, (size_t) ((len - indx) * sizeof (short))) ; - return total ; - } ; - - if (pms->samplecount >= pms->samplesperblock) - msadpcm_decode_block (psf, pms) ; - - count = (pms->samplesperblock - pms->samplecount) * pms->channels ; - count = (len - indx > count) ? count : len - indx ; - - memcpy (&(ptr [indx]), &(pms->samples [pms->samplecount * pms->channels]), count * sizeof (short)) ; - indx += count ; - pms->samplecount += count / pms->channels ; - total = indx ; - } ; - - return total ; -} /* msadpcm_read_block */ - -static sf_count_t -msadpcm_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ MSADPCM_PRIVATE *pms ; - int readcount, count ; - sf_count_t total = 0 ; - - if (! psf->fdata) - return 0 ; - pms = (MSADPCM_PRIVATE*) psf->fdata ; - - while (len > 0) - { readcount = (len > 0x10000000) ? 0x10000000 : (int) len ; - - count = msadpcm_read_block (psf, pms, ptr, readcount) ; - - total += count ; - len -= count ; - if (count != readcount) - break ; - } ; - - return total ; -} /* msadpcm_read_s */ - -static sf_count_t -msadpcm_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ MSADPCM_PRIVATE *pms ; - short *sptr ; - int k, bufferlen, readcount = 0, count ; - sf_count_t total = 0 ; - - if (! psf->fdata) - return 0 ; - pms = (MSADPCM_PRIVATE*) psf->fdata ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = msadpcm_read_block (psf, pms, sptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = sptr [k] << 16 ; - total += count ; - len -= readcount ; - if (count != readcount) - break ; - } ; - return total ; -} /* msadpcm_read_i */ - -static sf_count_t -msadpcm_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ MSADPCM_PRIVATE *pms ; - short *sptr ; - int k, bufferlen, readcount = 0, count ; - sf_count_t total = 0 ; - float normfact ; - - if (! psf->fdata) - return 0 ; - pms = (MSADPCM_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ; - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = msadpcm_read_block (psf, pms, sptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = normfact * (float) (sptr [k]) ; - total += count ; - len -= readcount ; - if (count != readcount) - break ; - } ; - return total ; -} /* msadpcm_read_f */ - -static sf_count_t -msadpcm_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ MSADPCM_PRIVATE *pms ; - short *sptr ; - int k, bufferlen, readcount = 0, count ; - sf_count_t total = 0 ; - double normfact ; - - normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ; - - if (! psf->fdata) - return 0 ; - pms = (MSADPCM_PRIVATE*) psf->fdata ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = msadpcm_read_block (psf, pms, sptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = normfact * (double) (sptr [k]) ; - total += count ; - len -= readcount ; - if (count != readcount) - break ; - } ; - return total ; -} /* msadpcm_read_d */ - -static sf_count_t -msadpcm_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) -{ MSADPCM_PRIVATE *pms ; - int newblock, newsample ; - - if (! psf->fdata) - return 0 ; - pms = (MSADPCM_PRIVATE*) psf->fdata ; - - if (psf->datalength < 0 || psf->dataoffset < 0) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - if (offset == 0) - { psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - pms->blockcount = 0 ; - msadpcm_decode_block (psf, pms) ; - pms->samplecount = 0 ; - return 0 ; - } ; - - if (offset < 0 || offset > pms->blocks * pms->samplesperblock) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - newblock = offset / pms->samplesperblock ; - newsample = offset % pms->samplesperblock ; - - if (mode == SFM_READ) - { psf_fseek (psf, psf->dataoffset + newblock * pms->blocksize, SEEK_SET) ; - pms->blockcount = newblock ; - msadpcm_decode_block (psf, pms) ; - pms->samplecount = newsample ; - } - else - { /* What to do about write??? */ - psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - return newblock * pms->samplesperblock + newsample ; -} /* msadpcm_seek */ - -/*========================================================================================== -** MS ADPCM Write Functions. -*/ - -void -msadpcm_write_adapt_coeffs (SF_PRIVATE *psf) -{ int k ; - - for (k = 0 ; k < MSADPCM_ADAPT_COEFF_COUNT ; k++) - psf_binheader_writef (psf, "22", AdaptCoeff1 [k], AdaptCoeff2 [k]) ; -} /* msadpcm_write_adapt_coeffs */ - -/*========================================================================================== -*/ - -static int -msadpcm_encode_block (SF_PRIVATE *psf, MSADPCM_PRIVATE *pms) -{ unsigned int blockindx ; - unsigned char byte ; - int chan, k, predict, bpred [2], idelta [2], errordelta, newsamp ; - - choose_predictor (pms->channels, pms->samples, bpred, idelta) ; - - /* Write the block header. */ - - if (pms->channels == 1) - { pms->block [0] = bpred [0] ; - pms->block [1] = idelta [0] & 0xFF ; - pms->block [2] = idelta [0] >> 8 ; - pms->block [3] = pms->samples [1] & 0xFF ; - pms->block [4] = pms->samples [1] >> 8 ; - pms->block [5] = pms->samples [0] & 0xFF ; - pms->block [6] = pms->samples [0] >> 8 ; - - blockindx = 7 ; - byte = 0 ; - - /* Encode the samples as 4 bit. */ - - for (k = 2 ; k < pms->samplesperblock ; k++) - { predict = (pms->samples [k-1] * AdaptCoeff1 [bpred [0]] + pms->samples [k-2] * AdaptCoeff2 [bpred [0]]) >> 8 ; - errordelta = (pms->samples [k] - predict) / idelta [0] ; - if (errordelta < -8) - errordelta = -8 ; - else if (errordelta > 7) - errordelta = 7 ; - newsamp = predict + (idelta [0] * errordelta) ; - if (newsamp > 32767) - newsamp = 32767 ; - else if (newsamp < -32768) - newsamp = -32768 ; - if (errordelta < 0) - errordelta += 0x10 ; - - byte = (byte << 4) | (errordelta & 0xF) ; - if (k % 2) - { pms->block [blockindx++] = byte ; - byte = 0 ; - } ; - - idelta [0] = (idelta [0] * AdaptationTable [errordelta]) >> 8 ; - if (idelta [0] < 16) - idelta [0] = 16 ; - pms->samples [k] = newsamp ; - } ; - } - else - { /* Stereo file. */ - pms->block [0] = bpred [0] ; - pms->block [1] = bpred [1] ; - - pms->block [2] = idelta [0] & 0xFF ; - pms->block [3] = idelta [0] >> 8 ; - pms->block [4] = idelta [1] & 0xFF ; - pms->block [5] = idelta [1] >> 8 ; - - pms->block [6] = pms->samples [2] & 0xFF ; - pms->block [7] = pms->samples [2] >> 8 ; - pms->block [8] = pms->samples [3] & 0xFF ; - pms->block [9] = pms->samples [3] >> 8 ; - - pms->block [10] = pms->samples [0] & 0xFF ; - pms->block [11] = pms->samples [0] >> 8 ; - pms->block [12] = pms->samples [1] & 0xFF ; - pms->block [13] = pms->samples [1] >> 8 ; - - blockindx = 14 ; - byte = 0 ; - chan = 1 ; - - for (k = 4 ; k < 2 * pms->samplesperblock ; k++) - { chan = k & 1 ; - - predict = (pms->samples [k-2] * AdaptCoeff1 [bpred [chan]] + pms->samples [k-4] * AdaptCoeff2 [bpred [chan]]) >> 8 ; - errordelta = (pms->samples [k] - predict) / idelta [chan] ; - - - if (errordelta < -8) - errordelta = -8 ; - else if (errordelta > 7) - errordelta = 7 ; - newsamp = predict + (idelta [chan] * errordelta) ; - if (newsamp > 32767) - newsamp = 32767 ; - else if (newsamp < -32768) - newsamp = -32768 ; - if (errordelta < 0) - errordelta += 0x10 ; - - byte = (byte << 4) | (errordelta & 0xF) ; - - if (chan) - { pms->block [blockindx++] = byte ; - byte = 0 ; - } ; - - idelta [chan] = (idelta [chan] * AdaptationTable [errordelta]) >> 8 ; - if (idelta [chan] < 16) - idelta [chan] = 16 ; - pms->samples [k] = newsamp ; - } ; - } ; - - /* Write the block to disk. */ - - if ((k = psf_fwrite (pms->block, 1, pms->blocksize, psf)) != pms->blocksize) - psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, pms->blocksize) ; - - memset (pms->samples, 0, pms->samplesperblock * sizeof (short)) ; - - pms->blockcount ++ ; - pms->samplecount = 0 ; - - return 1 ; -} /* msadpcm_encode_block */ - -static sf_count_t -msadpcm_write_block (SF_PRIVATE *psf, MSADPCM_PRIVATE *pms, const short *ptr, int len) -{ int count, total = 0, indx = 0 ; - - while (indx < len) - { count = (pms->samplesperblock - pms->samplecount) * pms->channels ; - - if (count > len - indx) - count = len - indx ; - - memcpy (&(pms->samples [pms->samplecount * pms->channels]), &(ptr [total]), count * sizeof (short)) ; - indx += count ; - pms->samplecount += count / pms->channels ; - total = indx ; - - if (pms->samplecount >= pms->samplesperblock) - msadpcm_encode_block (psf, pms) ; - } ; - - return total ; -} /* msadpcm_write_block */ - -static sf_count_t -msadpcm_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ MSADPCM_PRIVATE *pms ; - int writecount, count ; - sf_count_t total = 0 ; - - if (! psf->fdata) - return 0 ; - pms = (MSADPCM_PRIVATE*) psf->fdata ; - - while (len > 0) - { writecount = (len > 0x10000000) ? 0x10000000 : (int) len ; - - count = msadpcm_write_block (psf, pms, ptr, writecount) ; - - total += count ; - len -= count ; - if (count != writecount) - break ; - } ; - - return total ; -} /* msadpcm_write_s */ - -static sf_count_t -msadpcm_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ MSADPCM_PRIVATE *pms ; - short *sptr ; - int k, bufferlen, writecount, count ; - sf_count_t total = 0 ; - - if (! psf->fdata) - return 0 ; - pms = (MSADPCM_PRIVATE*) psf->fdata ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - sptr [k] = ptr [total + k] >> 16 ; - count = msadpcm_write_block (psf, pms, sptr, writecount) ; - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - return total ; -} /* msadpcm_write_i */ - -static sf_count_t -msadpcm_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ MSADPCM_PRIVATE *pms ; - short *sptr ; - int k, bufferlen, writecount, count ; - sf_count_t total = 0 ; - float normfact ; - - if (! psf->fdata) - return 0 ; - pms = (MSADPCM_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - sptr [k] = lrintf (normfact * ptr [total + k]) ; - count = msadpcm_write_block (psf, pms, sptr, writecount) ; - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - return total ; -} /* msadpcm_write_f */ - -static sf_count_t -msadpcm_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ MSADPCM_PRIVATE *pms ; - short *sptr ; - int k, bufferlen, writecount, count ; - sf_count_t total = 0 ; - double normfact ; - - normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ; - - if (! psf->fdata) - return 0 ; - pms = (MSADPCM_PRIVATE*) psf->fdata ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - sptr [k] = lrint (normfact * ptr [total + k]) ; - count = msadpcm_write_block (psf, pms, sptr, writecount) ; - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - return total ; -} /* msadpcm_write_d */ - -/*======================================================================================== -*/ - -static int -msadpcm_close (SF_PRIVATE *psf) -{ MSADPCM_PRIVATE *pms ; - - pms = (MSADPCM_PRIVATE*) psf->fdata ; - - if (psf->mode == SFM_WRITE) - { /* Now we know static int for certain the length of the file we can - ** re-write the header. - */ - - if (pms->samplecount && pms->samplecount < pms->samplesperblock) - msadpcm_encode_block (psf, pms) ; - } ; - - return 0 ; -} /* msadpcm_close */ - -/*======================================================================================== -** Static functions. -*/ - -/*---------------------------------------------------------------------------------------- -** Choosing the block predictor. -** Each block requires a predictor and an idelta for each channel. -** The predictor is in the range [0..6] which is an indx into the two AdaptCoeff tables. -** The predictor is chosen by trying all of the possible predictors on a small set of -** samples at the beginning of the block. The predictor with the smallest average -** abs (idelta) is chosen as the best predictor for this block. -** The value of idelta is chosen to to give a 4 bit code value of +/- 4 (approx. half the -** max. code value). If the average abs (idelta) is zero, the sixth predictor is chosen. -** If the value of idelta is less then 16 it is set to 16. -** -** Microsoft uses an IDELTA_COUNT (number of sample pairs used to choose best predictor) -** value of 3. The best possible results would be obtained by using all the samples to -** choose the predictor. -*/ - -#define IDELTA_COUNT 3 - -static void -choose_predictor (unsigned int channels, short *data, int *block_pred, int *idelta) -{ unsigned int chan, k, bpred, idelta_sum, best_bpred, best_idelta ; - - for (chan = 0 ; chan < channels ; chan++) - { best_bpred = best_idelta = 0 ; - - for (bpred = 0 ; bpred < 7 ; bpred++) - { idelta_sum = 0 ; - for (k = 2 ; k < 2 + IDELTA_COUNT ; k++) - idelta_sum += abs (data [k * channels] - ((data [(k - 1) * channels] * AdaptCoeff1 [bpred] + data [(k - 2) * channels] * AdaptCoeff2 [bpred]) >> 8)) ; - idelta_sum /= (4 * IDELTA_COUNT) ; - - if (bpred == 0 || idelta_sum < best_idelta) - { best_bpred = bpred ; - best_idelta = idelta_sum ; - } ; - - if (! idelta_sum) - { best_bpred = bpred ; - best_idelta = 16 ; - break ; - } ; - - } ; /* for bpred ... */ - if (best_idelta < 16) - best_idelta = 16 ; - - block_pred [chan] = best_bpred ; - idelta [chan] = best_idelta ; - } ; - - return ; -} /* choose_predictor */ -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: a98908a3-5305-4935-872b-77d6a86c330f -*/ diff --git a/libs/libsndfile/src/nist.c b/libs/libsndfile/src/nist.c deleted file mode 100644 index 2ab20dbf96..0000000000 --- a/libs/libsndfile/src/nist.c +++ /dev/null @@ -1,367 +0,0 @@ -/* -** Copyright (C) 1999-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -/* -** Some of the information used to read NIST files was gleaned from -** reading the code of Bill Schottstaedt's sndlib library -** ftp://ccrma-ftp.stanford.edu/pub/Lisp/sndlib.tar.gz -** However, no code from that package was used. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -/*------------------------------------------------------------------------------ -*/ - -#define NIST_HEADER_LENGTH 1024 - -/*------------------------------------------------------------------------------ -** Private static functions. -*/ - -static int nist_close (SF_PRIVATE *psf) ; -static int nist_write_header (SF_PRIVATE *psf, int calc_length) ; -static int nist_read_header (SF_PRIVATE *psf) ; - -/*------------------------------------------------------------------------------ -*/ - -int -nist_open (SF_PRIVATE *psf) -{ int error ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = nist_read_header (psf))) - return error ; - } ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if (psf->is_pipe) - return SFE_NO_PIPE_WRITE ; - - if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_NIST) - return SFE_BAD_OPEN_FORMAT ; - - psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ; - if (psf->endian == 0 || psf->endian == SF_ENDIAN_CPU) - psf->endian = (CPU_IS_BIG_ENDIAN) ? SF_ENDIAN_BIG : SF_ENDIAN_LITTLE ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - psf->sf.frames = 0 ; - - if ((error = nist_write_header (psf, SF_FALSE))) - return error ; - - psf->write_header = nist_write_header ; - } ; - - psf->container_close = nist_close ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_S8 : - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_24 : - case SF_FORMAT_PCM_32 : - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_ULAW : - error = ulaw_init (psf) ; - break ; - - case SF_FORMAT_ALAW : - error = alaw_init (psf) ; - break ; - - default : error = SFE_UNIMPLEMENTED ; - break ; - } ; - - return error ; -} /* nist_open */ - -/*------------------------------------------------------------------------------ -*/ - -static char bad_header [] = -{ 'N', 'I', 'S', 'T', '_', '1', 'A', 0x0d, 0x0a, - ' ', ' ', ' ', '1', '0', '2', '4', 0x0d, 0x0a, - 0 -} ; - - static int -nist_read_header (SF_PRIVATE *psf) -{ char *psf_header ; - int bitwidth = 0, bytes = 0, count, encoding ; - char str [64], *cptr ; - long samples ; - - psf->sf.format = SF_FORMAT_NIST ; - - psf_header = psf->u.cbuf ; - - if (sizeof (psf->header) <= NIST_HEADER_LENGTH) - return SFE_INTERNAL ; - - /* Go to start of file and read in the whole header. */ - psf_binheader_readf (psf, "pb", 0, psf_header, NIST_HEADER_LENGTH) ; - - /* Header is a string, so make sure it is null terminated. */ - psf_header [NIST_HEADER_LENGTH] = 0 ; - - /* Now trim the header after the end marker. */ - if ((cptr = strstr (psf_header, "end_head"))) - { cptr += strlen ("end_head") + 1 ; - cptr [0] = 0 ; - } ; - - if (strstr (psf_header, bad_header) == psf_header) - return SFE_NIST_CRLF_CONVERISON ; - - /* Make sure its a NIST file. */ - if (strstr (psf_header, "NIST_1A\n") != psf_header) - { psf_log_printf (psf, "Not a NIST file.\n") ; - return SFE_NIST_BAD_HEADER ; - } ; - - if (sscanf (psf_header, "NIST_1A\n%d\n", &count) == 1) - psf->dataoffset = count ; - else - { psf_log_printf (psf, "*** Suspicious header length.\n") ; - psf->dataoffset = NIST_HEADER_LENGTH ; - } ; - - /* Determine sample encoding, start by assuming PCM. */ - encoding = SF_FORMAT_PCM_U8 ; - if ((cptr = strstr (psf_header, "sample_coding -s"))) - { sscanf (cptr, "sample_coding -s%d %63s", &count, str) ; - - if (strcmp (str, "pcm") == 0) - encoding = SF_FORMAT_PCM_U8 ; - else if (strcmp (str, "alaw") == 0) - encoding = SF_FORMAT_ALAW ; - else if ((strcmp (str, "ulaw") == 0) || (strcmp (str, "mu-law") == 0)) - encoding = SF_FORMAT_ULAW ; - else - { psf_log_printf (psf, "*** Unknown encoding : %s\n", str) ; - encoding = 0 ; - } ; - } ; - - if ((cptr = strstr (psf_header, "channel_count -i "))) - sscanf (cptr, "channel_count -i %d", &(psf->sf.channels)) ; - - if ((cptr = strstr (psf_header, "sample_rate -i "))) - sscanf (cptr, "sample_rate -i %d", &(psf->sf.samplerate)) ; - - if ((cptr = strstr (psf_header, "sample_count -i "))) - { sscanf (psf_header, "sample_count -i %ld", &samples) ; - psf->sf.frames = samples ; - } ; - - if ((cptr = strstr (psf_header, "sample_n_bytes -i "))) - sscanf (cptr, "sample_n_bytes -i %d", &(psf->bytewidth)) ; - - /* Default endian-ness (for 8 bit, u-law, A-law. */ - psf->endian = (CPU_IS_BIG_ENDIAN) ? SF_ENDIAN_BIG : SF_ENDIAN_LITTLE ; - - /* This is where we figure out endian-ness. */ - if ((cptr = strstr (psf_header, "sample_byte_format -s"))) - { sscanf (cptr, "sample_byte_format -s%d %8s", &bytes, str) ; - if (bytes > 1) - { if (psf->bytewidth == 0) - psf->bytewidth = bytes ; - else if (psf->bytewidth != bytes) - { psf_log_printf (psf, "psf->bytewidth (%d) != bytes (%d)\n", psf->bytewidth, bytes) ; - return SFE_NIST_BAD_ENCODING ; - } ; - - if (strstr (str, "01") == str) - psf->endian = SF_ENDIAN_LITTLE ; - else if (strstr (str, "10")) - psf->endian = SF_ENDIAN_BIG ; - else - { psf_log_printf (psf, "Weird endian-ness : %s\n", str) ; - return SFE_NIST_BAD_ENCODING ; - } ; - } ; - - psf->sf.format |= psf->endian ; - } ; - - if ((cptr = strstr (psf_header, "sample_sig_bits -i "))) - sscanf (cptr, "sample_sig_bits -i %d", &bitwidth) ; - - if (strstr (psf_header, "channels_interleaved -s5 FALSE")) - { psf_log_printf (psf, "Non-interleaved data unsupported.\n", str) ; - return SFE_NIST_BAD_ENCODING ; - } ; - - psf->blockwidth = psf->sf.channels * psf->bytewidth ; - psf->datalength = psf->filelength - psf->dataoffset ; - - psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - - if (encoding == SF_FORMAT_PCM_U8) - { switch (psf->bytewidth) - { case 1 : - psf->sf.format |= SF_FORMAT_PCM_S8 ; - break ; - - case 2 : - psf->sf.format |= SF_FORMAT_PCM_16 ; - break ; - - case 3 : - psf->sf.format |= SF_FORMAT_PCM_24 ; - break ; - - case 4 : - psf->sf.format |= SF_FORMAT_PCM_32 ; - break ; - - default : break ; - } ; - } - else if (encoding != 0) - psf->sf.format |= encoding ; - else - return SFE_UNIMPLEMENTED ; - - return 0 ; -} /* nist_read_header */ - -static int -nist_close (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - nist_write_header (psf, SF_TRUE) ; - - return 0 ; -} /* nist_close */ - -/*========================================================================= -*/ - -static int -nist_write_header (SF_PRIVATE *psf, int calc_length) -{ const char *end_str ; - long samples ; - sf_count_t current ; - - current = psf_ftell (psf) ; - - if (calc_length) - { psf->filelength = psf_get_filelen (psf) ; - - psf->datalength = psf->filelength - psf->dataoffset ; - - if (psf->dataend) - psf->datalength -= psf->filelength - psf->dataend ; - - if (psf->bytewidth > 0) - psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ; - } ; - - if (psf->endian == SF_ENDIAN_BIG) - end_str = "10" ; - else if (psf->endian == SF_ENDIAN_LITTLE) - end_str = "01" ; - else - end_str = "error" ; - - /* Clear the whole header. */ - memset (psf->header, 0, sizeof (psf->header)) ; - psf->headindex = 0 ; - - psf_fseek (psf, 0, SEEK_SET) ; - - psf_asciiheader_printf (psf, "NIST_1A\n 1024\n") ; - psf_asciiheader_printf (psf, "channel_count -i %d\n", psf->sf.channels) ; - psf_asciiheader_printf (psf, "sample_rate -i %d\n", psf->sf.samplerate) ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_S8 : - psf_asciiheader_printf (psf, "sample_coding -s3 pcm\n") ; - psf_asciiheader_printf (psf, "sample_n_bytes -i 1\n" - "sample_sig_bits -i 8\n") ; - break ; - - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_24 : - case SF_FORMAT_PCM_32 : - psf_asciiheader_printf (psf, "sample_n_bytes -i %d\n", psf->bytewidth) ; - psf_asciiheader_printf (psf, "sample_sig_bits -i %d\n", psf->bytewidth * 8) ; - psf_asciiheader_printf (psf, "sample_coding -s3 pcm\n" - "sample_byte_format -s%d %s\n", psf->bytewidth, end_str) ; - break ; - - case SF_FORMAT_ALAW : - psf_asciiheader_printf (psf, "sample_coding -s4 alaw\n") ; - psf_asciiheader_printf (psf, "sample_n_bytes -s1 1\n") ; - break ; - - case SF_FORMAT_ULAW : - psf_asciiheader_printf (psf, "sample_coding -s4 ulaw\n") ; - psf_asciiheader_printf (psf, "sample_n_bytes -s1 1\n") ; - break ; - - default : return SFE_UNIMPLEMENTED ; - } ; - - psf->dataoffset = NIST_HEADER_LENGTH ; - - /* Fix this */ - samples = psf->sf.frames ; - psf_asciiheader_printf (psf, "sample_count -i %ld\n", samples) ; - psf_asciiheader_printf (psf, "end_head\n") ; - - /* Zero fill to dataoffset. */ - psf_binheader_writef (psf, "z", (size_t) (NIST_HEADER_LENGTH - psf->headindex)) ; - - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - if (psf->error) - return psf->error ; - - if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* nist_write_header */ - - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: b45ed85d-9e22-4ad9-b78c-4b58b67152a8 -*/ diff --git a/libs/libsndfile/src/ogg.c b/libs/libsndfile/src/ogg.c deleted file mode 100644 index 869baa9500..0000000000 --- a/libs/libsndfile/src/ogg.c +++ /dev/null @@ -1,44 +0,0 @@ -/* -** Copyright (C) 2002-2004 Erik de Castro Lopo -** -** This program is free software ; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation ; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY ; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program ; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -int -ogg_open (SF_PRIVATE *psf) -{ if (psf) - return SFE_UNIMPLEMENTED ; - return (psf && 0) ; -} /* ogg_open */ - - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 9ff1fe9c-629e-4e9c-9ef5-3d0eb1e427a0 -*/ diff --git a/libs/libsndfile/src/paf.c b/libs/libsndfile/src/paf.c deleted file mode 100644 index 6114dac838..0000000000 --- a/libs/libsndfile/src/paf.c +++ /dev/null @@ -1,843 +0,0 @@ -/* -** Copyright (C) 1999-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "float_cast.h" -#include "common.h" - -/*------------------------------------------------------------------------------ -** Macros to handle big/little endian issues. -*/ - -#define FAP_MARKER (MAKE_MARKER ('f', 'a', 'p', ' ')) -#define PAF_MARKER (MAKE_MARKER (' ', 'p', 'a', 'f')) - -/*------------------------------------------------------------------------------ -** Other defines. -*/ - -#define PAF_HEADER_LENGTH 2048 - -#define PAF24_SAMPLES_PER_BLOCK 10 -#define PAF24_BLOCK_SIZE 32 - -/*------------------------------------------------------------------------------ -** Typedefs. -*/ - -typedef struct -{ int version ; - int endianness ; - int samplerate ; - int format ; - int channels ; - int source ; -} PAF_FMT ; - -typedef struct -{ int max_blocks, channels, samplesperblock, blocksize ; - int read_block, write_block, read_count, write_count ; - sf_count_t sample_count ; - int *samples ; - unsigned char *block ; -#if HAVE_FLEXIBLE_ARRAY - int data [] ; /* ISO C99 struct flexible array. */ -#else - int data [1] ; /* This is a hack and may not work. */ -#endif -} PAF24_PRIVATE ; - -/*------------------------------------------------------------------------------ -** Private static functions. -*/ - -static int paf24_init (SF_PRIVATE *psf) ; - -static int paf_read_header (SF_PRIVATE *psf) ; -static int paf_write_header (SF_PRIVATE *psf, int calc_length) ; - -static sf_count_t paf24_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t paf24_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t paf24_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t paf24_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t paf24_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t paf24_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t paf24_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t paf24_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -static sf_count_t paf24_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ; - -enum -{ PAF_PCM_16 = 0, - PAF_PCM_24 = 1, - PAF_PCM_S8 = 2 -} ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -paf_open (SF_PRIVATE *psf) -{ int subformat, error, endian ; - - psf->dataoffset = PAF_HEADER_LENGTH ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = paf_read_header (psf))) - return error ; - } ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_PAF) - return SFE_BAD_OPEN_FORMAT ; - - endian = psf->sf.format & SF_FORMAT_ENDMASK ; - - /* PAF is by default big endian. */ - psf->endian = SF_ENDIAN_BIG ; - - if (endian == SF_ENDIAN_LITTLE || (CPU_IS_LITTLE_ENDIAN && (endian == SF_ENDIAN_CPU))) - psf->endian = SF_ENDIAN_LITTLE ; - - if ((error = paf_write_header (psf, SF_FALSE))) - return error ; - - psf->write_header = paf_write_header ; - } ; - - switch (subformat) - { case SF_FORMAT_PCM_S8 : - psf->bytewidth = 1 ; - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_PCM_16 : - psf->bytewidth = 2 ; - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_PCM_24 : - /* No bytewidth because of whacky 24 bit encoding. */ - error = paf24_init (psf) ; - break ; - - default : return SFE_PAF_UNKNOWN_FORMAT ; - } ; - - return error ; -} /* paf_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -paf_read_header (SF_PRIVATE *psf) -{ PAF_FMT paf_fmt ; - int marker ; - - memset (&paf_fmt, 0, sizeof (paf_fmt)) ; - psf_binheader_readf (psf, "pm", 0, &marker) ; - - psf_log_printf (psf, "Signature : '%M'\n", marker) ; - - if (marker == PAF_MARKER) - { psf_binheader_readf (psf, "E444444", &(paf_fmt.version), &(paf_fmt.endianness), - &(paf_fmt.samplerate), &(paf_fmt.format), &(paf_fmt.channels), &(paf_fmt.source)) ; - } - else if (marker == FAP_MARKER) - { psf_binheader_readf (psf, "e444444", &(paf_fmt.version), &(paf_fmt.endianness), - &(paf_fmt.samplerate), &(paf_fmt.format), &(paf_fmt.channels), &(paf_fmt.source)) ; - } - else - return SFE_PAF_NO_MARKER ; - - psf_log_printf (psf, "Version : %d\n", paf_fmt.version) ; - - if (paf_fmt.version != 0) - { psf_log_printf (psf, "*** Bad version number. should be zero.\n") ; - return SFE_PAF_VERSION ; - } ; - - psf_log_printf (psf, "Sample Rate : %d\n", paf_fmt.samplerate) ; - psf_log_printf (psf, "Channels : %d\n", paf_fmt.channels) ; - - psf_log_printf (psf, "Endianness : %d => ", paf_fmt.endianness) ; - if (paf_fmt.endianness) - { psf_log_printf (psf, "Little\n", paf_fmt.endianness) ; - psf->endian = SF_ENDIAN_LITTLE ; - } - else - { psf_log_printf (psf, "Big\n", paf_fmt.endianness) ; - psf->endian = SF_ENDIAN_BIG ; - } ; - - if (psf->filelength < PAF_HEADER_LENGTH) - return SFE_PAF_SHORT_HEADER ; - - psf->datalength = psf->filelength - psf->dataoffset ; - - psf_binheader_readf (psf, "p", (int) psf->dataoffset) ; - - psf->sf.samplerate = paf_fmt.samplerate ; - psf->sf.channels = paf_fmt.channels ; - - /* Only fill in type major. */ - psf->sf.format = SF_FORMAT_PAF ; - - psf_log_printf (psf, "Format : %d => ", paf_fmt.format) ; - - /* PAF is by default big endian. */ - psf->sf.format |= paf_fmt.endianness ? SF_ENDIAN_LITTLE : SF_ENDIAN_BIG ; - - switch (paf_fmt.format) - { case PAF_PCM_S8 : - psf_log_printf (psf, "8 bit linear PCM\n") ; - psf->bytewidth = 1 ; - - psf->sf.format |= SF_FORMAT_PCM_S8 ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - psf->sf.frames = psf->datalength / psf->blockwidth ; - break ; - - case PAF_PCM_16 : - psf_log_printf (psf, "16 bit linear PCM\n") ; - psf->bytewidth = 2 ; - - psf->sf.format |= SF_FORMAT_PCM_16 ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - psf->sf.frames = psf->datalength / psf->blockwidth ; - break ; - - case PAF_PCM_24 : - psf_log_printf (psf, "24 bit linear PCM\n") ; - psf->bytewidth = 3 ; - - psf->sf.format |= SF_FORMAT_PCM_24 ; - - psf->blockwidth = 0 ; - psf->sf.frames = PAF24_SAMPLES_PER_BLOCK * psf->datalength / - (PAF24_BLOCK_SIZE * psf->sf.channels) ; - break ; - - default : psf_log_printf (psf, "Unknown\n") ; - return SFE_PAF_UNKNOWN_FORMAT ; - break ; - } ; - - psf_log_printf (psf, "Source : %d => ", paf_fmt.source) ; - - switch (paf_fmt.source) - { case 1 : psf_log_printf (psf, "Analog Recording\n") ; - break ; - case 2 : psf_log_printf (psf, "Digital Transfer\n") ; - break ; - case 3 : psf_log_printf (psf, "Multi-track Mixdown\n") ; - break ; - case 5 : psf_log_printf (psf, "Audio Resulting From DSP Processing\n") ; - break ; - default : psf_log_printf (psf, "Unknown\n") ; - break ; - } ; - - return 0 ; -} /* paf_read_header */ - -static int -paf_write_header (SF_PRIVATE *psf, int calc_length) -{ int paf_format ; - - /* PAF header already written so no need to re-write. */ - if (psf_ftell (psf) >= PAF_HEADER_LENGTH) - return 0 ; - - psf->dataoffset = PAF_HEADER_LENGTH ; - - psf->dataoffset = PAF_HEADER_LENGTH ; - - /* Prevent compiler warning. */ - calc_length = calc_length ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_S8 : - paf_format = PAF_PCM_S8 ; - break ; - - case SF_FORMAT_PCM_16 : - paf_format = PAF_PCM_16 ; - break ; - - case SF_FORMAT_PCM_24 : - paf_format = PAF_PCM_24 ; - break ; - - default : return SFE_PAF_UNKNOWN_FORMAT ; - } ; - - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - - if (psf->endian == SF_ENDIAN_BIG) - { /* Marker, version, endianness, samplerate */ - psf_binheader_writef (psf, "Em444", PAF_MARKER, 0, 0, psf->sf.samplerate) ; - /* format, channels, source */ - psf_binheader_writef (psf, "E444", paf_format, psf->sf.channels, 0) ; - } - else if (psf->endian == SF_ENDIAN_LITTLE) - { /* Marker, version, endianness, samplerate */ - psf_binheader_writef (psf, "em444", FAP_MARKER, 0, 1, psf->sf.samplerate) ; - /* format, channels, source */ - psf_binheader_writef (psf, "e444", paf_format, psf->sf.channels, 0) ; - } ; - - /* Zero fill to dataoffset. */ - psf_binheader_writef (psf, "z", (size_t) (psf->dataoffset - psf->headindex)) ; - - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - return psf->error ; -} /* paf_write_header */ - -/*=============================================================================== -** 24 bit PAF files have a really weird encoding. -** For a mono file, 10 samples (each being 3 bytes) are packed into a 32 byte -** block. The 8 ints in this 32 byte block are then endian swapped (as ints) -** if necessary before being written to disk. -** For a stereo file, blocks of 10 samples from the same channel are encoded -** into 32 bytes as for the mono case. The 32 byte blocks are then interleaved -** on disk. -** Reading has to reverse the above process :-). -** Weird!!! -** -** The code below attempts to gain efficiency while maintaining readability. -*/ - -static int paf24_read_block (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24) ; -static int paf24_write_block (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24) ; -static int paf24_close (SF_PRIVATE *psf) ; - - -static int -paf24_init (SF_PRIVATE *psf) -{ PAF24_PRIVATE *ppaf24 ; - int paf24size ; - - paf24size = sizeof (PAF24_PRIVATE) + psf->sf.channels * - (PAF24_BLOCK_SIZE + PAF24_SAMPLES_PER_BLOCK * sizeof (int)) ; - - /* - ** Not exatly sure why this needs to be here but the tests - ** fail without it. - */ - psf->last_op = 0 ; - - if (! (psf->fdata = malloc (paf24size))) - return SFE_MALLOC_FAILED ; - - ppaf24 = (PAF24_PRIVATE*) psf->fdata ; - memset (ppaf24, 0, paf24size) ; - - ppaf24->channels = psf->sf.channels ; - ppaf24->samples = ppaf24->data ; - ppaf24->block = (unsigned char*) (ppaf24->data + PAF24_SAMPLES_PER_BLOCK * ppaf24->channels) ; - - ppaf24->blocksize = PAF24_BLOCK_SIZE * ppaf24->channels ; - ppaf24->samplesperblock = PAF24_SAMPLES_PER_BLOCK ; - - if (psf->mode == SFM_READ || psf->mode == SFM_RDWR) - { paf24_read_block (psf, ppaf24) ; /* Read first block. */ - - psf->read_short = paf24_read_s ; - psf->read_int = paf24_read_i ; - psf->read_float = paf24_read_f ; - psf->read_double = paf24_read_d ; - } ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { psf->write_short = paf24_write_s ; - psf->write_int = paf24_write_i ; - psf->write_float = paf24_write_f ; - psf->write_double = paf24_write_d ; - } ; - - psf->seek = paf24_seek ; - psf->container_close = paf24_close ; - - psf->filelength = psf_get_filelen (psf) ; - psf->datalength = psf->filelength - psf->dataoffset ; - - if (psf->datalength % PAF24_BLOCK_SIZE) - { if (psf->mode == SFM_READ) - psf_log_printf (psf, "*** Warning : file seems to be truncated.\n") ; - ppaf24->max_blocks = psf->datalength / ppaf24->blocksize + 1 ; - } - else - ppaf24->max_blocks = psf->datalength / ppaf24->blocksize ; - - ppaf24->read_block = 0 ; - if (psf->mode == SFM_RDWR) - ppaf24->write_block = ppaf24->max_blocks ; - else - ppaf24->write_block = 0 ; - - psf->sf.frames = ppaf24->samplesperblock * ppaf24->max_blocks ; - ppaf24->sample_count = psf->sf.frames ; - - return 0 ; -} /* paf24_init */ - -static sf_count_t -paf24_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) -{ PAF24_PRIVATE *ppaf24 ; - int newblock, newsample ; - - if (psf->fdata == NULL) - { psf->error = SFE_INTERNAL ; - return PSF_SEEK_ERROR ; - } ; - - ppaf24 = (PAF24_PRIVATE*) psf->fdata ; - - if (mode == SFM_READ && ppaf24->write_count > 0) - paf24_write_block (psf, ppaf24) ; - - newblock = offset / ppaf24->samplesperblock ; - newsample = offset % ppaf24->samplesperblock ; - - switch (mode) - { case SFM_READ : - if (psf->last_op == SFM_WRITE && ppaf24->write_count) - paf24_write_block (psf, ppaf24) ; - - psf_fseek (psf, psf->dataoffset + newblock * ppaf24->blocksize, SEEK_SET) ; - ppaf24->read_block = newblock ; - paf24_read_block (psf, ppaf24) ; - ppaf24->read_count = newsample ; - break ; - - case SFM_WRITE : - if (offset > ppaf24->sample_count) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - if (psf->last_op == SFM_WRITE && ppaf24->write_count) - paf24_write_block (psf, ppaf24) ; - - psf_fseek (psf, psf->dataoffset + newblock * ppaf24->blocksize, SEEK_SET) ; - ppaf24->write_block = newblock ; - paf24_read_block (psf, ppaf24) ; - ppaf24->write_count = newsample ; - break ; - - default : - psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - return newblock * ppaf24->samplesperblock + newsample ; -} /* paf24_seek */ - -static int -paf24_close (SF_PRIVATE *psf) -{ PAF24_PRIVATE *ppaf24 ; - - if (psf->fdata == NULL) - return 0 ; - - ppaf24 = (PAF24_PRIVATE*) psf->fdata ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if (ppaf24->write_count > 0) - paf24_write_block (psf, ppaf24) ; - } ; - - return 0 ; -} /* paf24_close */ - -/*--------------------------------------------------------------------------- -*/ -static int -paf24_read_block (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24) -{ int k, channel ; - unsigned char *cptr ; - - ppaf24->read_block ++ ; - ppaf24->read_count = 0 ; - - if (ppaf24->read_block * ppaf24->samplesperblock > ppaf24->sample_count) - { memset (ppaf24->samples, 0, ppaf24->samplesperblock * ppaf24->channels) ; - return 1 ; - } ; - - /* Read the block. */ - if ((k = psf_fread (ppaf24->block, 1, ppaf24->blocksize, psf)) != ppaf24->blocksize) - psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, ppaf24->blocksize) ; - - - if (CPU_IS_LITTLE_ENDIAN) - { /* Do endian swapping if necessary. */ - if (psf->endian == SF_ENDIAN_BIG) - endswap_int_array (ppaf24->data, 8 * ppaf24->channels) ; - - /* Unpack block. */ - for (k = 0 ; k < PAF24_SAMPLES_PER_BLOCK * ppaf24->channels ; k++) - { channel = k % ppaf24->channels ; - cptr = ppaf24->block + PAF24_BLOCK_SIZE * channel + 3 * (k / ppaf24->channels) ; - ppaf24->samples [k] = (cptr [0] << 8) | (cptr [1] << 16) | (cptr [2] << 24) ; - } ; - } - else - { /* Do endian swapping if necessary. */ - if (psf->endian == SF_ENDIAN_BIG) - endswap_int_array (ppaf24->data, 8 * ppaf24->channels) ; - - /* Unpack block. */ - for (k = 0 ; k < PAF24_SAMPLES_PER_BLOCK * ppaf24->channels ; k++) - { channel = k % ppaf24->channels ; - cptr = ppaf24->block + PAF24_BLOCK_SIZE * channel + 3 * (k / ppaf24->channels) ; - ppaf24->samples [k] = (cptr [0] << 8) | (cptr [1] << 16) | (cptr [2] << 24) ; - } ; - } ; - - return 1 ; -} /* paf24_read_block */ - -static int -paf24_read (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24, int *ptr, int len) -{ int count, total = 0 ; - - while (total < len) - { if (ppaf24->read_block * ppaf24->samplesperblock >= ppaf24->sample_count) - { memset (&(ptr [total]), 0, (len - total) * sizeof (int)) ; - return total ; - } ; - - if (ppaf24->read_count >= ppaf24->samplesperblock) - paf24_read_block (psf, ppaf24) ; - - count = (ppaf24->samplesperblock - ppaf24->read_count) * ppaf24->channels ; - count = (len - total > count) ? count : len - total ; - - memcpy (&(ptr [total]), &(ppaf24->samples [ppaf24->read_count * ppaf24->channels]), count * sizeof (int)) ; - total += count ; - ppaf24->read_count += count / ppaf24->channels ; - } ; - - return total ; -} /* paf24_read */ - -static sf_count_t -paf24_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ PAF24_PRIVATE *ppaf24 ; - int *iptr ; - int k, bufferlen, readcount, count ; - sf_count_t total = 0 ; - - if (psf->fdata == NULL) - return 0 ; - ppaf24 = (PAF24_PRIVATE*) psf->fdata ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = paf24_read (psf, ppaf24, iptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = iptr [k] >> 16 ; - total += count ; - len -= readcount ; - } ; - return total ; -} /* paf24_read_s */ - -static sf_count_t -paf24_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ PAF24_PRIVATE *ppaf24 ; - int total ; - - if (psf->fdata == NULL) - return 0 ; - ppaf24 = (PAF24_PRIVATE*) psf->fdata ; - - total = paf24_read (psf, ppaf24, ptr, len) ; - - return total ; -} /* paf24_read_i */ - -static sf_count_t -paf24_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ PAF24_PRIVATE *ppaf24 ; - int *iptr ; - int k, bufferlen, readcount, count ; - sf_count_t total = 0 ; - float normfact ; - - if (psf->fdata == NULL) - return 0 ; - ppaf24 = (PAF24_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_float == SF_TRUE) ? (1.0 / 0x80000000) : (1.0 / 0x100) ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = paf24_read (psf, ppaf24, iptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = normfact * iptr [k] ; - total += count ; - len -= readcount ; - } ; - return total ; -} /* paf24_read_f */ - -static sf_count_t -paf24_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ PAF24_PRIVATE *ppaf24 ; - int *iptr ; - int k, bufferlen, readcount, count ; - sf_count_t total = 0 ; - double normfact ; - - if (psf->fdata == NULL) - return 0 ; - ppaf24 = (PAF24_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_double == SF_TRUE) ? (1.0 / 0x80000000) : (1.0 / 0x100) ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = paf24_read (psf, ppaf24, iptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = normfact * iptr [k] ; - total += count ; - len -= readcount ; - } ; - return total ; -} /* paf24_read_d */ - -/*--------------------------------------------------------------------------- -*/ - -static int -paf24_write_block (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24) -{ int k, nextsample, channel ; - unsigned char *cptr ; - - /* First pack block. */ - - if (CPU_IS_LITTLE_ENDIAN) - { for (k = 0 ; k < PAF24_SAMPLES_PER_BLOCK * ppaf24->channels ; k++) - { channel = k % ppaf24->channels ; - cptr = ppaf24->block + PAF24_BLOCK_SIZE * channel + 3 * (k / ppaf24->channels) ; - nextsample = ppaf24->samples [k] >> 8 ; - cptr [0] = nextsample ; - cptr [1] = nextsample >> 8 ; - cptr [2] = nextsample >> 16 ; - } ; - - /* Do endian swapping if necessary. */ - if (psf->endian == SF_ENDIAN_BIG) - endswap_int_array (ppaf24->data, 8 * ppaf24->channels) ; - } - else if (CPU_IS_BIG_ENDIAN) - { /* This is correct. */ - for (k = 0 ; k < PAF24_SAMPLES_PER_BLOCK * ppaf24->channels ; k++) - { channel = k % ppaf24->channels ; - cptr = ppaf24->block + PAF24_BLOCK_SIZE * channel + 3 * (k / ppaf24->channels) ; - nextsample = ppaf24->samples [k] >> 8 ; - cptr [0] = nextsample ; - cptr [1] = nextsample >> 8 ; - cptr [2] = nextsample >> 16 ; - } ; - if (psf->endian == SF_ENDIAN_BIG) - endswap_int_array (ppaf24->data, 8 * ppaf24->channels) ; - } ; - - /* Write block to disk. */ - if ((k = psf_fwrite (ppaf24->block, 1, ppaf24->blocksize, psf)) != ppaf24->blocksize) - psf_log_printf (psf, "*** Warning : short write (%d != %d).\n", k, ppaf24->blocksize) ; - - if (ppaf24->sample_count < ppaf24->write_block * ppaf24->samplesperblock + ppaf24->write_count) - ppaf24->sample_count = ppaf24->write_block * ppaf24->samplesperblock + ppaf24->write_count ; - - if (ppaf24->write_count == ppaf24->samplesperblock) - { ppaf24->write_block ++ ; - ppaf24->write_count = 0 ; - } ; - - return 1 ; -} /* paf24_write_block */ - -static int -paf24_write (SF_PRIVATE *psf, PAF24_PRIVATE *ppaf24, const int *ptr, int len) -{ int count, total = 0 ; - - while (total < len) - { count = (ppaf24->samplesperblock - ppaf24->write_count) * ppaf24->channels ; - - if (count > len - total) - count = len - total ; - - memcpy (&(ppaf24->samples [ppaf24->write_count * ppaf24->channels]), &(ptr [total]), count * sizeof (int)) ; - total += count ; - ppaf24->write_count += count / ppaf24->channels ; - - if (ppaf24->write_count >= ppaf24->samplesperblock) - paf24_write_block (psf, ppaf24) ; - } ; - - return total ; -} /* paf24_write */ - -static sf_count_t -paf24_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ PAF24_PRIVATE *ppaf24 ; - int *iptr ; - int k, bufferlen, writecount = 0, count ; - sf_count_t total = 0 ; - - if (psf->fdata == NULL) - return 0 ; - ppaf24 = (PAF24_PRIVATE*) psf->fdata ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - iptr [k] = ptr [total + k] << 16 ; - count = paf24_write (psf, ppaf24, iptr, writecount) ; - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - return total ; -} /* paf24_write_s */ - -static sf_count_t -paf24_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ PAF24_PRIVATE *ppaf24 ; - int writecount, count ; - sf_count_t total = 0 ; - - if (psf->fdata == NULL) - return 0 ; - ppaf24 = (PAF24_PRIVATE*) psf->fdata ; - - while (len > 0) - { writecount = (len > 0x10000000) ? 0x10000000 : (int) len ; - - count = paf24_write (psf, ppaf24, ptr, writecount) ; - - total += count ; - len -= count ; - if (count != writecount) - break ; - } ; - - return total ; -} /* paf24_write_i */ - -static sf_count_t -paf24_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ PAF24_PRIVATE *ppaf24 ; - int *iptr ; - int k, bufferlen, writecount = 0, count ; - sf_count_t total = 0 ; - float normfact ; - - if (psf->fdata == NULL) - return 0 ; - ppaf24 = (PAF24_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFFFFFF) : (1.0 / 0x100) ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - iptr [k] = lrintf (normfact * ptr [total + k]) ; - count = paf24_write (psf, ppaf24, iptr, writecount) ; - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - - return total ; -} /* paf24_write_f */ - -static sf_count_t -paf24_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ PAF24_PRIVATE *ppaf24 ; - int *iptr ; - int k, bufferlen, writecount = 0, count ; - sf_count_t total = 0 ; - double normfact ; - - if (psf->fdata == NULL) - return 0 ; - ppaf24 = (PAF24_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFFFFFF) : (1.0 / 0x100) ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - iptr [k] = lrint (normfact * ptr [total+k]) ; - count = paf24_write (psf, ppaf24, iptr, writecount) ; - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - - return total ; -} /* paf24_write_d */ - - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 477a5308-451e-4bbd-bab4-fab6caa4e884 -*/ diff --git a/libs/libsndfile/src/pcm.c b/libs/libsndfile/src/pcm.c deleted file mode 100644 index bad607c165..0000000000 --- a/libs/libsndfile/src/pcm.c +++ /dev/null @@ -1,2899 +0,0 @@ -/* -** Copyright (C) 1999-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include "sndfile.h" -#include "sfendian.h" -#include "float_cast.h" -#include "common.h" - -/* Need to be able to handle 3 byte (24 bit) integers. So defined a -** type and use SIZEOF_TRIBYTE instead of (tribyte). -*/ - -typedef void tribyte ; - -#define SIZEOF_TRIBYTE 3 - -static sf_count_t pcm_read_sc2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t pcm_read_uc2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t pcm_read_bes2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t pcm_read_les2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t pcm_read_bet2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t pcm_read_let2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t pcm_read_bei2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t pcm_read_lei2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; - -static sf_count_t pcm_read_sc2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t pcm_read_uc2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t pcm_read_bes2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t pcm_read_les2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t pcm_read_bet2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t pcm_read_let2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t pcm_read_bei2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t pcm_read_lei2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; - -static sf_count_t pcm_read_sc2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t pcm_read_uc2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t pcm_read_bes2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t pcm_read_les2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t pcm_read_bet2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t pcm_read_let2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t pcm_read_bei2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t pcm_read_lei2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; - -static sf_count_t pcm_read_sc2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; -static sf_count_t pcm_read_uc2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; -static sf_count_t pcm_read_bes2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; -static sf_count_t pcm_read_les2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; -static sf_count_t pcm_read_bet2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; -static sf_count_t pcm_read_let2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; -static sf_count_t pcm_read_bei2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; -static sf_count_t pcm_read_lei2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t pcm_write_s2sc (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t pcm_write_s2uc (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t pcm_write_s2bes (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t pcm_write_s2les (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t pcm_write_s2bet (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t pcm_write_s2let (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t pcm_write_s2bei (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t pcm_write_s2lei (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; - -static sf_count_t pcm_write_i2sc (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t pcm_write_i2uc (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t pcm_write_i2bes (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t pcm_write_i2les (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t pcm_write_i2bet (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t pcm_write_i2let (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t pcm_write_i2bei (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t pcm_write_i2lei (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; - -static sf_count_t pcm_write_f2sc (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t pcm_write_f2uc (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t pcm_write_f2bes (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t pcm_write_f2les (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t pcm_write_f2bet (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t pcm_write_f2let (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t pcm_write_f2bei (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t pcm_write_f2lei (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; - -static sf_count_t pcm_write_d2sc (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; -static sf_count_t pcm_write_d2uc (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; -static sf_count_t pcm_write_d2bes (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; -static sf_count_t pcm_write_d2les (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; -static sf_count_t pcm_write_d2bet (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; -static sf_count_t pcm_write_d2let (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; -static sf_count_t pcm_write_d2bei (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; -static sf_count_t pcm_write_d2lei (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -/*----------------------------------------------------------------------------------------------- -*/ - -enum -{ /* Char type for 8 bit files. */ - SF_CHARS_SIGNED = 200, - SF_CHARS_UNSIGNED = 201 -} ; - -/*----------------------------------------------------------------------------------------------- -*/ - -int -pcm_init (SF_PRIVATE *psf) -{ int chars = 0 ; - - if (psf->bytewidth == 0 || psf->sf.channels == 0) - return SFE_INTERNAL ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - - if ((psf->sf.format & SF_FORMAT_SUBMASK) == SF_FORMAT_PCM_S8) - chars = SF_CHARS_SIGNED ; - else if ((psf->sf.format & SF_FORMAT_SUBMASK) == SF_FORMAT_PCM_U8) - chars = SF_CHARS_UNSIGNED ; - - if (psf->mode == SFM_READ || psf->mode == SFM_RDWR) - { switch (psf->bytewidth * 0x10000 + psf->endian + chars) - { case (0x10000 + SF_ENDIAN_BIG + SF_CHARS_SIGNED) : - case (0x10000 + SF_ENDIAN_LITTLE + SF_CHARS_SIGNED) : - psf->read_short = pcm_read_sc2s ; - psf->read_int = pcm_read_sc2i ; - psf->read_float = pcm_read_sc2f ; - psf->read_double = pcm_read_sc2d ; - break ; - case (0x10000 + SF_ENDIAN_BIG + SF_CHARS_UNSIGNED) : - case (0x10000 + SF_ENDIAN_LITTLE + SF_CHARS_UNSIGNED) : - psf->read_short = pcm_read_uc2s ; - psf->read_int = pcm_read_uc2i ; - psf->read_float = pcm_read_uc2f ; - psf->read_double = pcm_read_uc2d ; - break ; - - case (2 * 0x10000 + SF_ENDIAN_BIG) : - psf->read_short = pcm_read_bes2s ; - psf->read_int = pcm_read_bes2i ; - psf->read_float = pcm_read_bes2f ; - psf->read_double = pcm_read_bes2d ; - break ; - case (3 * 0x10000 + SF_ENDIAN_BIG) : - psf->read_short = pcm_read_bet2s ; - psf->read_int = pcm_read_bet2i ; - psf->read_float = pcm_read_bet2f ; - psf->read_double = pcm_read_bet2d ; - break ; - case (4 * 0x10000 + SF_ENDIAN_BIG) : - psf->read_short = pcm_read_bei2s ; - psf->read_int = pcm_read_bei2i ; - psf->read_float = pcm_read_bei2f ; - psf->read_double = pcm_read_bei2d ; - break ; - - case (2 * 0x10000 + SF_ENDIAN_LITTLE) : - psf->read_short = pcm_read_les2s ; - psf->read_int = pcm_read_les2i ; - psf->read_float = pcm_read_les2f ; - psf->read_double = pcm_read_les2d ; - break ; - case (3 * 0x10000 + SF_ENDIAN_LITTLE) : - psf->read_short = pcm_read_let2s ; - psf->read_int = pcm_read_let2i ; - psf->read_float = pcm_read_let2f ; - psf->read_double = pcm_read_let2d ; - break ; - case (4 * 0x10000 + SF_ENDIAN_LITTLE) : - psf->read_short = pcm_read_lei2s ; - psf->read_int = pcm_read_lei2i ; - psf->read_float = pcm_read_lei2f ; - psf->read_double = pcm_read_lei2d ; - break ; - default : - psf_log_printf (psf, "pcm.c returning SFE_UNIMPLEMENTED\n") ; - return SFE_UNIMPLEMENTED ; - } ; - } ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { switch (psf->bytewidth * 0x10000 + psf->endian + chars) - { case (0x10000 + SF_ENDIAN_BIG + SF_CHARS_SIGNED) : - case (0x10000 + SF_ENDIAN_LITTLE + SF_CHARS_SIGNED) : - psf->write_short = pcm_write_s2sc ; - psf->write_int = pcm_write_i2sc ; - psf->write_float = pcm_write_f2sc ; - psf->write_double = pcm_write_d2sc ; - break ; - case (0x10000 + SF_ENDIAN_BIG + SF_CHARS_UNSIGNED) : - case (0x10000 + SF_ENDIAN_LITTLE + SF_CHARS_UNSIGNED) : - psf->write_short = pcm_write_s2uc ; - psf->write_int = pcm_write_i2uc ; - psf->write_float = pcm_write_f2uc ; - psf->write_double = pcm_write_d2uc ; - break ; - - case (2 * 0x10000 + SF_ENDIAN_BIG) : - psf->write_short = pcm_write_s2bes ; - psf->write_int = pcm_write_i2bes ; - psf->write_float = pcm_write_f2bes ; - psf->write_double = pcm_write_d2bes ; - break ; - - case (3 * 0x10000 + SF_ENDIAN_BIG) : - psf->write_short = pcm_write_s2bet ; - psf->write_int = pcm_write_i2bet ; - psf->write_float = pcm_write_f2bet ; - psf->write_double = pcm_write_d2bet ; - break ; - - case (4 * 0x10000 + SF_ENDIAN_BIG) : - psf->write_short = pcm_write_s2bei ; - psf->write_int = pcm_write_i2bei ; - psf->write_float = pcm_write_f2bei ; - psf->write_double = pcm_write_d2bei ; - break ; - - case (2 * 0x10000 + SF_ENDIAN_LITTLE) : - psf->write_short = pcm_write_s2les ; - psf->write_int = pcm_write_i2les ; - psf->write_float = pcm_write_f2les ; - psf->write_double = pcm_write_d2les ; - break ; - - case (3 * 0x10000 + SF_ENDIAN_LITTLE) : - psf->write_short = pcm_write_s2let ; - psf->write_int = pcm_write_i2let ; - psf->write_float = pcm_write_f2let ; - psf->write_double = pcm_write_d2let ; - break ; - - case (4 * 0x10000 + SF_ENDIAN_LITTLE) : - psf->write_short = pcm_write_s2lei ; - psf->write_int = pcm_write_i2lei ; - psf->write_float = pcm_write_f2lei ; - psf->write_double = pcm_write_d2lei ; - break ; - - default : - psf_log_printf (psf, "pcm.c returning SFE_UNIMPLEMENTED\n") ; - return SFE_UNIMPLEMENTED ; - } ; - - } ; - - if (psf->filelength > psf->dataoffset) - { psf->datalength = (psf->dataend > 0) ? psf->dataend - psf->dataoffset : - psf->filelength - psf->dataoffset ; - } - else - psf->datalength = 0 ; - - psf->sf.frames = psf->datalength / psf->blockwidth ; - - return 0 ; -} /* pcm_init */ - -/*============================================================================== -*/ - -static inline void -sc2s_array (signed char *src, int count, short *dest) -{ while (--count >= 0) - { dest [count] = src [count] << 8 ; - } ; -} /* sc2s_array */ - -static inline void -uc2s_array (unsigned char *src, int count, short *dest) -{ while (--count >= 0) - { dest [count] = (((short) src [count]) - 0x80) << 8 ; - } ; -} /* uc2s_array */ - -static inline void -let2s_array (tribyte *src, int count, short *dest) -{ unsigned char *ucptr ; - - ucptr = ((unsigned char*) src) + 3 * count ; - while (--count >= 0) - { ucptr -= 3 ; - dest [count] = LET2H_SHORT_PTR (ucptr) ; - } ; -} /* let2s_array */ - -static inline void -bet2s_array (tribyte *src, int count, short *dest) -{ unsigned char *ucptr ; - - ucptr = ((unsigned char*) src) + 3 * count ; - while (--count >= 0) - { ucptr -= 3 ; - dest [count] = BET2H_SHORT_PTR (ucptr) ; - } ; -} /* bet2s_array */ - -static inline void -lei2s_array (int *src, int count, short *dest) -{ int value ; - - while (--count >= 0) - { value = LEI2H_INT (src [count]) ; - dest [count] = value >> 16 ; - } ; -} /* lei2s_array */ - -static inline void -bei2s_array (int *src, int count, short *dest) -{ int value ; - - while (--count >= 0) - { value = BEI2H_INT (src [count]) ; - dest [count] = value >> 16 ; - } ; -} /* bei2s_array */ - -/*-------------------------------------------------------------------------- -*/ - -static inline void -sc2i_array (signed char *src, int count, int *dest) -{ while (--count >= 0) - { dest [count] = ((int) src [count]) << 24 ; - } ; -} /* sc2i_array */ - -static inline void -uc2i_array (unsigned char *src, int count, int *dest) -{ while (--count >= 0) - { dest [count] = (((int) src [count]) - 128) << 24 ; - } ; -} /* uc2i_array */ - -static inline void -bes2i_array (short *src, int count, int *dest) -{ short value ; - - while (--count >= 0) - { value = BES2H_SHORT (src [count]) ; - dest [count] = value << 16 ; - } ; -} /* bes2i_array */ - -static inline void -les2i_array (short *src, int count, int *dest) -{ short value ; - - while (--count >= 0) - { value = LES2H_SHORT (src [count]) ; - dest [count] = value << 16 ; - } ; -} /* les2i_array */ - -static inline void -bet2i_array (tribyte *src, int count, int *dest) -{ unsigned char *ucptr ; - - ucptr = ((unsigned char*) src) + 3 * count ; - while (--count >= 0) - { ucptr -= 3 ; - dest [count] = BET2H_INT_PTR (ucptr) ; - } ; -} /* bet2i_array */ - -static inline void -let2i_array (tribyte *src, int count, int *dest) -{ unsigned char *ucptr ; - - ucptr = ((unsigned char*) src) + 3 * count ; - while (--count >= 0) - { ucptr -= 3 ; - dest [count] = LET2H_INT_PTR (ucptr) ; - } ; -} /* let2i_array */ - -/*-------------------------------------------------------------------------- -*/ - -static inline void -sc2f_array (signed char *src, int count, float *dest, float normfact) -{ while (--count >= 0) - dest [count] = ((float) src [count]) * normfact ; -} /* sc2f_array */ - -static inline void -uc2f_array (unsigned char *src, int count, float *dest, float normfact) -{ while (--count >= 0) - dest [count] = (((int) src [count]) - 128) * normfact ; -} /* uc2f_array */ - -static inline void -les2f_array (short *src, int count, float *dest, float normfact) -{ short value ; - - while (--count >= 0) - { value = src [count] ; - value = LES2H_SHORT (value) ; - dest [count] = ((float) value) * normfact ; - } ; -} /* les2f_array */ - -static inline void -bes2f_array (short *src, int count, float *dest, float normfact) -{ short value ; - - while (--count >= 0) - { value = src [count] ; - value = BES2H_SHORT (value) ; - dest [count] = ((float) value) * normfact ; - } ; -} /* bes2f_array */ - -static inline void -let2f_array (tribyte *src, int count, float *dest, float normfact) -{ unsigned char *ucptr ; - int value ; - - ucptr = ((unsigned char*) src) + 3 * count ; - while (--count >= 0) - { ucptr -= 3 ; - value = LET2H_INT_PTR (ucptr) ; - dest [count] = ((float) value) * normfact ; - } ; -} /* let2f_array */ - -static inline void -bet2f_array (tribyte *src, int count, float *dest, float normfact) -{ unsigned char *ucptr ; - int value ; - - ucptr = ((unsigned char*) src) + 3 * count ; - while (--count >= 0) - { ucptr -= 3 ; - value = BET2H_INT_PTR (ucptr) ; - dest [count] = ((float) value) * normfact ; - } ; -} /* bet2f_array */ - -static inline void -lei2f_array (int *src, int count, float *dest, float normfact) -{ int value ; - - while (--count >= 0) - { value = src [count] ; - value = LEI2H_INT (value) ; - dest [count] = ((float) value) * normfact ; - } ; -} /* lei2f_array */ - -static inline void -bei2f_array (int *src, int count, float *dest, float normfact) -{ int value ; - - while (--count >= 0) - { value = src [count] ; - value = BEI2H_INT (value) ; - dest [count] = ((float) value) * normfact ; - } ; -} /* bei2f_array */ - -/*-------------------------------------------------------------------------- -*/ - -static inline void -sc2d_array (signed char *src, int count, double *dest, double normfact) -{ while (--count >= 0) - dest [count] = ((double) src [count]) * normfact ; -} /* sc2d_array */ - -static inline void -uc2d_array (unsigned char *src, int count, double *dest, double normfact) -{ while (--count >= 0) - dest [count] = (((int) src [count]) - 128) * normfact ; -} /* uc2d_array */ - -static inline void -les2d_array (short *src, int count, double *dest, double normfact) -{ short value ; - - while (--count >= 0) - { value = src [count] ; - value = LES2H_SHORT (value) ; - dest [count] = ((double) value) * normfact ; - } ; -} /* les2d_array */ - -static inline void -bes2d_array (short *src, int count, double *dest, double normfact) -{ short value ; - - while (--count >= 0) - { value = src [count] ; - value = BES2H_SHORT (value) ; - dest [count] = ((double) value) * normfact ; - } ; -} /* bes2d_array */ - -static inline void -let2d_array (tribyte *src, int count, double *dest, double normfact) -{ unsigned char *ucptr ; - int value ; - - ucptr = ((unsigned char*) src) + 3 * count ; - while (--count >= 0) - { ucptr -= 3 ; - value = LET2H_INT_PTR (ucptr) ; - dest [count] = ((double) value) * normfact ; - } ; -} /* let2d_array */ - -static inline void -bet2d_array (tribyte *src, int count, double *dest, double normfact) -{ unsigned char *ucptr ; - int value ; - - ucptr = ((unsigned char*) src) + 3 * count ; - while (--count >= 0) - { ucptr -= 3 ; - value = (ucptr [0] << 24) | (ucptr [1] << 16) | (ucptr [2] << 8) ; - dest [count] = ((double) value) * normfact ; - } ; -} /* bet2d_array */ - -static inline void -lei2d_array (int *src, int count, double *dest, double normfact) -{ int value ; - - while (--count >= 0) - { value = src [count] ; - value = LEI2H_INT (value) ; - dest [count] = ((double) value) * normfact ; - } ; -} /* lei2d_array */ - -static inline void -bei2d_array (int *src, int count, double *dest, double normfact) -{ int value ; - - while (--count >= 0) - { value = src [count] ; - value = BEI2H_INT (value) ; - dest [count] = ((double) value) * normfact ; - } ; -} /* bei2d_array */ - -/*-------------------------------------------------------------------------- -*/ - -static inline void -s2sc_array (const short *src, signed char *dest, int count) -{ while (--count >= 0) - dest [count] = src [count] >> 8 ; -} /* s2sc_array */ - -static inline void -s2uc_array (const short *src, unsigned char *dest, int count) -{ while (--count >= 0) - dest [count] = (src [count] >> 8) + 0x80 ; -} /* s2uc_array */ - -static inline void -s2let_array (const short *src, tribyte *dest, int count) -{ unsigned char *ucptr ; - - ucptr = ((unsigned char*) dest) + 3 * count ; - while (--count >= 0) - { ucptr -= 3 ; - ucptr [0] = 0 ; - ucptr [1] = src [count] ; - ucptr [2] = src [count] >> 8 ; - } ; -} /* s2let_array */ - -static inline void -s2bet_array (const short *src, tribyte *dest, int count) -{ unsigned char *ucptr ; - - ucptr = ((unsigned char*) dest) + 3 * count ; - while (--count >= 0) - { ucptr -= 3 ; - ucptr [2] = 0 ; - ucptr [1] = src [count] ; - ucptr [0] = src [count] >> 8 ; - } ; -} /* s2bet_array */ - -static inline void -s2lei_array (const short *src, int *dest, int count) -{ unsigned char *ucptr ; - - ucptr = ((unsigned char*) dest) + 4 * count ; - while (--count >= 0) - { ucptr -= 4 ; - ucptr [0] = 0 ; - ucptr [1] = 0 ; - ucptr [2] = src [count] ; - ucptr [3] = src [count] >> 8 ; - } ; -} /* s2lei_array */ - -static inline void -s2bei_array (const short *src, int *dest, int count) -{ unsigned char *ucptr ; - - ucptr = ((unsigned char*) dest) + 4 * count ; - while (--count >= 0) - { ucptr -= 4 ; - ucptr [0] = src [count] >> 8 ; - ucptr [1] = src [count] ; - ucptr [2] = 0 ; - ucptr [3] = 0 ; - } ; -} /* s2bei_array */ - -/*-------------------------------------------------------------------------- -*/ - -static inline void -i2sc_array (const int *src, signed char *dest, int count) -{ while (--count >= 0) - dest [count] = (src [count] >> 24) ; -} /* i2sc_array */ - -static inline void -i2uc_array (const int *src, unsigned char *dest, int count) -{ while (--count >= 0) - dest [count] = ((src [count] >> 24) + 128) ; -} /* i2uc_array */ - -static inline void -i2bes_array (const int *src, short *dest, int count) -{ unsigned char *ucptr ; - - ucptr = ((unsigned char*) dest) + 2 * count ; - while (--count >= 0) - { ucptr -= 2 ; - ucptr [0] = src [count] >> 24 ; - ucptr [1] = src [count] >> 16 ; - } ; -} /* i2bes_array */ - -static inline void -i2les_array (const int *src, short *dest, int count) -{ unsigned char *ucptr ; - - ucptr = ((unsigned char*) dest) + 2 * count ; - while (--count >= 0) - { ucptr -= 2 ; - ucptr [0] = src [count] >> 16 ; - ucptr [1] = src [count] >> 24 ; - } ; -} /* i2les_array */ - -static inline void -i2let_array (const int *src, tribyte *dest, int count) -{ unsigned char *ucptr ; - int value ; - - ucptr = ((unsigned char*) dest) + 3 * count ; - while (--count >= 0) - { ucptr -= 3 ; - value = src [count] >> 8 ; - ucptr [0] = value ; - ucptr [1] = value >> 8 ; - ucptr [2] = value >> 16 ; - } ; -} /* i2let_array */ - -static inline void -i2bet_array (const int *src, tribyte *dest, int count) -{ unsigned char *ucptr ; - int value ; - - ucptr = ((unsigned char*) dest) + 3 * count ; - while (--count >= 0) - { ucptr -= 3 ; - value = src [count] >> 8 ; - ucptr [2] = value ; - ucptr [1] = value >> 8 ; - ucptr [0] = value >> 16 ; - } ; -} /* i2bet_array */ - -/*=============================================================================================== -*/ - -static sf_count_t -pcm_read_sc2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.scbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; - sc2s_array (psf->u.scbuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_sc2s */ - -static sf_count_t -pcm_read_uc2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, sizeof (unsigned char), bufferlen, psf) ; - uc2s_array (psf->u.ucbuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_uc2s */ - -static sf_count_t -pcm_read_bes2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ int total ; - - total = psf_fread (ptr, sizeof (short), len, psf) ; - if (CPU_IS_LITTLE_ENDIAN) - endswap_short_array (ptr, len) ; - - return total ; -} /* pcm_read_bes2s */ - -static sf_count_t -pcm_read_les2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ int total ; - - total = psf_fread (ptr, sizeof (short), len, psf) ; - if (CPU_IS_BIG_ENDIAN) - endswap_short_array (ptr, len) ; - - return total ; -} /* pcm_read_les2s */ - -static sf_count_t -pcm_read_bet2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ; - bet2s_array ((tribyte*) (psf->u.ucbuf), readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_bet2s */ - -static sf_count_t -pcm_read_let2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ; - let2s_array ((tribyte*) (psf->u.ucbuf), readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_let2s */ - -static sf_count_t -pcm_read_bei2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ibuf, sizeof (int), bufferlen, psf) ; - bei2s_array (psf->u.ibuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_bei2s */ - -static sf_count_t -pcm_read_lei2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ibuf, sizeof (int), bufferlen, psf) ; - lei2s_array (psf->u.ibuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_lei2s */ - -/*----------------------------------------------------------------------------------------------- -*/ - -static sf_count_t -pcm_read_sc2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.scbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; - sc2i_array (psf->u.scbuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_sc2i */ - -static sf_count_t -pcm_read_uc2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, sizeof (unsigned char), bufferlen, psf) ; - uc2i_array (psf->u.ucbuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_uc2i */ - -static sf_count_t -pcm_read_bes2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - bes2i_array (psf->u.sbuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_bes2i */ - -static sf_count_t -pcm_read_les2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - les2i_array (psf->u.sbuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_les2i */ - -static sf_count_t -pcm_read_bet2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ; - bet2i_array ((tribyte*) (psf->u.ucbuf), readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_bet2i */ - -static sf_count_t -pcm_read_let2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ; - let2i_array ((tribyte*) (psf->u.ucbuf), readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_let2i */ - -static sf_count_t -pcm_read_bei2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ int total ; - - total = psf_fread (ptr, sizeof (int), len, psf) ; - if (CPU_IS_LITTLE_ENDIAN) - endswap_int_array (ptr, len) ; - - return total ; -} /* pcm_read_bei2i */ - -static sf_count_t -pcm_read_lei2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ int total ; - - total = psf_fread (ptr, sizeof (int), len, psf) ; - if (CPU_IS_BIG_ENDIAN) - endswap_int_array (ptr, len) ; - - return total ; -} /* pcm_read_lei2i */ - -/*----------------------------------------------------------------------------------------------- -*/ - -static sf_count_t -pcm_read_sc2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - float normfact ; - - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.scbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; - sc2f_array (psf->u.scbuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_sc2f */ - -static sf_count_t -pcm_read_uc2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - float normfact ; - - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, sizeof (unsigned char), bufferlen, psf) ; - uc2f_array (psf->u.ucbuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_uc2f */ - -static sf_count_t -pcm_read_bes2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - float normfact ; - - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - bes2f_array (psf->u.sbuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_bes2f */ - -static sf_count_t -pcm_read_les2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - float normfact ; - - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - les2f_array (psf->u.sbuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_les2f */ - -static sf_count_t -pcm_read_bet2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - float normfact ; - - /* Special normfactor because tribyte value is read into an int. */ - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80000000) : 1.0 / 256.0 ; - - bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ; - bet2f_array ((tribyte*) (psf->u.ucbuf), readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_bet2f */ - -static sf_count_t -pcm_read_let2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - float normfact ; - - /* Special normfactor because tribyte value is read into an int. */ - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80000000) : 1.0 / 256.0 ; - - bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ; - let2f_array ((tribyte*) (psf->u.ucbuf), readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_let2f */ - -static sf_count_t -pcm_read_bei2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - float normfact ; - - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80000000) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ibuf, sizeof (int), bufferlen, psf) ; - bei2f_array (psf->u.ibuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_bei2f */ - -static sf_count_t -pcm_read_lei2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - float normfact ; - - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80000000) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ibuf, sizeof (int), bufferlen, psf) ; - lei2f_array (psf->u.ibuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_lei2f */ - -/*----------------------------------------------------------------------------------------------- -*/ - -static sf_count_t -pcm_read_sc2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - double normfact ; - - normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.scbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; - sc2d_array (psf->u.scbuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_sc2d */ - -static sf_count_t -pcm_read_uc2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - double normfact ; - - normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, sizeof (unsigned char), bufferlen, psf) ; - uc2d_array (psf->u.ucbuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_uc2d */ - -static sf_count_t -pcm_read_bes2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - double normfact ; - - normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - bes2d_array (psf->u.sbuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_bes2d */ - -static sf_count_t -pcm_read_les2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - double normfact ; - - normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - les2d_array (psf->u.sbuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_les2d */ - -static sf_count_t -pcm_read_bet2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - double normfact ; - - normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80000000) : 1.0 / 256.0 ; - - bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ; - bet2d_array ((tribyte*) (psf->u.ucbuf), readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_bet2d */ - -static sf_count_t -pcm_read_let2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - double normfact ; - - /* Special normfactor because tribyte value is read into an int. */ - normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80000000) : 1.0 / 256.0 ; - - bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ; - let2d_array ((tribyte*) (psf->u.ucbuf), readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_let2d */ - -static sf_count_t -pcm_read_bei2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - double normfact ; - - normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80000000) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ibuf, sizeof (int), bufferlen, psf) ; - bei2d_array (psf->u.ibuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_bei2d */ - -static sf_count_t -pcm_read_lei2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - double normfact ; - - normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80000000) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ibuf, sizeof (int), bufferlen, psf) ; - lei2d_array (psf->u.ibuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* pcm_read_lei2d */ - -/*=============================================================================================== -**----------------------------------------------------------------------------------------------- -**=============================================================================================== -*/ - -static sf_count_t -pcm_write_s2sc (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.scbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - s2sc_array (ptr + total, psf->u.scbuf, bufferlen) ; - writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_s2sc */ - -static sf_count_t -pcm_write_s2uc (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - s2uc_array (ptr + total, psf->u.ucbuf, bufferlen) ; - writecount = psf_fwrite (psf->u.ucbuf, sizeof (unsigned char), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_s2uc */ - -static sf_count_t -pcm_write_s2bes (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - if (CPU_IS_BIG_ENDIAN) - return psf_fwrite (ptr, sizeof (short), len, psf) ; - else - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - endswap_short_copy (psf->u.sbuf, ptr + total, bufferlen) ; - writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_s2bes */ - -static sf_count_t -pcm_write_s2les (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - if (CPU_IS_LITTLE_ENDIAN) - return psf_fwrite (ptr, sizeof (short), len, psf) ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - endswap_short_copy (psf->u.sbuf, ptr + total, bufferlen) ; - writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_s2les */ - -static sf_count_t -pcm_write_s2bet (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - s2bet_array (ptr + total, (tribyte*) (psf->u.ucbuf), bufferlen) ; - writecount = psf_fwrite (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_s2bet */ - -static sf_count_t -pcm_write_s2let (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - s2let_array (ptr + total, (tribyte*) (psf->u.ucbuf), bufferlen) ; - writecount = psf_fwrite (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_s2let */ - -static sf_count_t -pcm_write_s2bei (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - s2bei_array (ptr + total, psf->u.ibuf, bufferlen) ; - writecount = psf_fwrite (psf->u.ibuf, sizeof (int), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_s2bei */ - -static sf_count_t -pcm_write_s2lei (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - s2lei_array (ptr + total, psf->u.ibuf, bufferlen) ; - writecount = psf_fwrite (psf->u.ibuf, sizeof (int), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_s2lei */ - -/*----------------------------------------------------------------------------------------------- -*/ - -static sf_count_t -pcm_write_i2sc (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.scbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - i2sc_array (ptr + total, psf->u.scbuf, bufferlen) ; - writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_i2sc */ - -static sf_count_t -pcm_write_i2uc (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - i2uc_array (ptr + total, psf->u.ucbuf, bufferlen) ; - writecount = psf_fwrite (psf->u.ucbuf, sizeof (signed char), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_i2uc */ - -static sf_count_t -pcm_write_i2bes (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - i2bes_array (ptr + total, psf->u.sbuf, bufferlen) ; - writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_i2bes */ - -static sf_count_t -pcm_write_i2les (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - i2les_array (ptr + total, psf->u.sbuf, bufferlen) ; - writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_i2les */ - -static sf_count_t -pcm_write_i2bet (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - i2bet_array (ptr + total, (tribyte*) (psf->u.ucbuf), bufferlen) ; - writecount = psf_fwrite (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_i2bet */ - -static sf_count_t -pcm_write_i2let (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - i2let_array (ptr + total, (tribyte*) (psf->u.ucbuf), bufferlen) ; - writecount = psf_fwrite (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_i2les */ - -static sf_count_t -pcm_write_i2bei (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - if (CPU_IS_BIG_ENDIAN) - return psf_fwrite (ptr, sizeof (int), len, psf) ; - - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - endswap_int_copy (psf->u.ibuf, ptr + total, bufferlen) ; - writecount = psf_fwrite (psf->u.ibuf, sizeof (int), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_i2bei */ - -static sf_count_t -pcm_write_i2lei (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - if (CPU_IS_LITTLE_ENDIAN) - return psf_fwrite (ptr, sizeof (int), len, psf) ; - - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - endswap_int_copy (psf->u.ibuf, ptr + total, bufferlen) ; - writecount = psf_fwrite (psf->u.ibuf, sizeof (int), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_i2lei */ - -/*------------------------------------------------------------------------------ -**============================================================================== -**------------------------------------------------------------------------------ -*/ - -static void -f2sc_array (const float *src, signed char *dest, int count, int normalize) -{ float normfact ; - - normfact = normalize ? (1.0 * 0x7F) : 1.0 ; - - while (--count >= 0) - { dest [count] = lrintf (src [count] * normfact) ; - } ; -} /* f2sc_array */ - -static void -f2sc_clip_array (const float *src, signed char *dest, int count, int normalize) -{ float normfact, scaled_value ; - - normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x1000000) ; - - while (--count >= 0) - { scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF)) - { dest [count] = 127 ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000)) - { dest [count] = -128 ; - continue ; - } ; - - dest [count] = lrintf (scaled_value) >> 24 ; - } ; -} /* f2sc_clip_array */ - -static sf_count_t -pcm_write_f2sc (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ void (*convert) (const float *, signed char *, int, int) ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - convert = (psf->add_clipping) ? f2sc_clip_array : f2sc_array ; - bufferlen = ARRAY_LEN (psf->u.scbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - convert (ptr + total, psf->u.scbuf, bufferlen, psf->norm_float) ; - writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_f2sc */ - -/*============================================================================== -*/ - -static void -f2uc_array (const float *src, unsigned char *dest, int count, int normalize) -{ float normfact ; - - normfact = normalize ? (1.0 * 0x7F) : 1.0 ; - - while (--count >= 0) - { dest [count] = lrintf (src [count] * normfact) + 128 ; - } ; -} /* f2uc_array */ - -static void -f2uc_clip_array (const float *src, unsigned char *dest, int count, int normalize) -{ float normfact, scaled_value ; - - normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x1000000) ; - - while (--count >= 0) - { scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF)) - { dest [count] = 0xFF ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000)) - { dest [count] = 0 ; - continue ; - } ; - - dest [count] = (lrintf (scaled_value) >> 24) + 128 ; - } ; -} /* f2uc_clip_array */ - -static sf_count_t -pcm_write_f2uc (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ void (*convert) (const float *, unsigned char *, int, int) ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - convert = (psf->add_clipping) ? f2uc_clip_array : f2uc_array ; - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - convert (ptr + total, psf->u.ucbuf, bufferlen, psf->norm_float) ; - writecount = psf_fwrite (psf->u.ucbuf, sizeof (unsigned char), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_f2uc */ - -/*============================================================================== -*/ - -static void -f2bes_array (const float *src, short *dest, int count, int normalize) -{ unsigned char *ucptr ; - float normfact ; - short value ; - - normfact = normalize ? (1.0 * 0x7FFF) : 1.0 ; - ucptr = ((unsigned char*) dest) + 2 * count ; - - while (--count >= 0) - { ucptr -= 2 ; - value = lrintf (src [count] * normfact) ; - ucptr [1] = value ; - ucptr [0] = value >> 8 ; - } ; -} /* f2bes_array */ - -static void -f2bes_clip_array (const float *src, short *dest, int count, int normalize) -{ unsigned char *ucptr ; - float normfact, scaled_value ; - int value ; - - normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x10000) ; - ucptr = ((unsigned char*) dest) + 2 * count ; - - while (--count >= 0) - { ucptr -= 2 ; - scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF)) - { ucptr [1] = 0xFF ; - ucptr [0] = 0x7F ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000)) - { ucptr [1] = 0x00 ; - ucptr [0] = 0x80 ; - continue ; - } ; - - value = lrintf (scaled_value) ; - ucptr [1] = value >> 16 ; - ucptr [0] = value >> 24 ; - } ; -} /* f2bes_clip_array */ - -static sf_count_t -pcm_write_f2bes (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ void (*convert) (const float *, short *t, int, int) ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - convert = (psf->add_clipping) ? f2bes_clip_array : f2bes_array ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - convert (ptr + total, psf->u.sbuf, bufferlen, psf->norm_float) ; - writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_f2bes */ - -/*============================================================================== -*/ - -static void -f2les_array (const float *src, short *dest, int count, int normalize) -{ unsigned char *ucptr ; - float normfact ; - int value ; - - normfact = normalize ? (1.0 * 0x7FFF) : 1.0 ; - ucptr = ((unsigned char*) dest) + 2 * count ; - - while (--count >= 0) - { ucptr -= 2 ; - value = lrintf (src [count] * normfact) ; - ucptr [0] = value ; - ucptr [1] = value >> 8 ; - } ; -} /* f2les_array */ - -static void -f2les_clip_array (const float *src, short *dest, int count, int normalize) -{ unsigned char *ucptr ; - float normfact, scaled_value ; - int value ; - - normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x10000) ; - ucptr = ((unsigned char*) dest) + 2 * count ; - - while (--count >= 0) - { ucptr -= 2 ; - scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF)) - { ucptr [0] = 0xFF ; - ucptr [1] = 0x7F ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000)) - { ucptr [0] = 0x00 ; - ucptr [1] = 0x80 ; - continue ; - } ; - - value = lrintf (scaled_value) ; - ucptr [0] = value >> 16 ; - ucptr [1] = value >> 24 ; - } ; -} /* f2les_clip_array */ - -static sf_count_t -pcm_write_f2les (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ void (*convert) (const float *, short *t, int, int) ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - convert = (psf->add_clipping) ? f2les_clip_array : f2les_array ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - convert (ptr + total, psf->u.sbuf, bufferlen, psf->norm_float) ; - writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_f2les */ - -/*============================================================================== -*/ - -static void -f2let_array (const float *src, tribyte *dest, int count, int normalize) -{ unsigned char *ucptr ; - float normfact ; - int value ; - - normfact = normalize ? (1.0 * 0x7FFFFF) : 1.0 ; - ucptr = ((unsigned char*) dest) + 3 * count ; - - while (--count >= 0) - { ucptr -= 3 ; - value = lrintf (src [count] * normfact) ; - ucptr [0] = value ; - ucptr [1] = value >> 8 ; - ucptr [2] = value >> 16 ; - } ; -} /* f2let_array */ - -static void -f2let_clip_array (const float *src, tribyte *dest, int count, int normalize) -{ unsigned char *ucptr ; - float normfact, scaled_value ; - int value ; - - normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x100) ; - ucptr = ((unsigned char*) dest) + 3 * count ; - - while (--count >= 0) - { ucptr -= 3 ; - scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF)) - { ucptr [0] = 0xFF ; - ucptr [1] = 0xFF ; - ucptr [2] = 0x7F ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000)) - { ucptr [0] = 0x00 ; - ucptr [1] = 0x00 ; - ucptr [2] = 0x80 ; - continue ; - } ; - - value = lrintf (scaled_value) ; - ucptr [0] = value >> 8 ; - ucptr [1] = value >> 16 ; - ucptr [2] = value >> 24 ; - } ; -} /* f2let_clip_array */ - -static sf_count_t -pcm_write_f2let (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ void (*convert) (const float *, tribyte *, int, int) ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - convert = (psf->add_clipping) ? f2let_clip_array : f2let_array ; - bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - convert (ptr + total, (tribyte*) (psf->u.ucbuf), bufferlen, psf->norm_float) ; - writecount = psf_fwrite (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_f2let */ - -/*============================================================================== -*/ - -static void -f2bet_array (const float *src, tribyte *dest, int count, int normalize) -{ unsigned char *ucptr ; - float normfact ; - int value ; - - normfact = normalize ? (1.0 * 0x7FFFFF) : 1.0 ; - ucptr = ((unsigned char*) dest) + 3 * count ; - - while (--count >= 0) - { ucptr -= 3 ; - value = lrintf (src [count] * normfact) ; - ucptr [0] = value >> 16 ; - ucptr [1] = value >> 8 ; - ucptr [2] = value ; - } ; -} /* f2bet_array */ - -static void -f2bet_clip_array (const float *src, tribyte *dest, int count, int normalize) -{ unsigned char *ucptr ; - float normfact, scaled_value ; - int value ; - - normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x100) ; - ucptr = ((unsigned char*) dest) + 3 * count ; - - while (--count >= 0) - { ucptr -= 3 ; - scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF)) - { ucptr [0] = 0x7F ; - ucptr [1] = 0xFF ; - ucptr [2] = 0xFF ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000)) - { ucptr [0] = 0x80 ; - ucptr [1] = 0x00 ; - ucptr [2] = 0x00 ; - continue ; - } ; - - value = lrint (scaled_value) ; - ucptr [0] = value >> 24 ; - ucptr [1] = value >> 16 ; - ucptr [2] = value >> 8 ; - } ; -} /* f2bet_clip_array */ - -static sf_count_t -pcm_write_f2bet (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ void (*convert) (const float *, tribyte *, int, int) ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - convert = (psf->add_clipping) ? f2bet_clip_array : f2bet_array ; - bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - convert (ptr + total, (tribyte*) (psf->u.ucbuf), bufferlen, psf->norm_float) ; - writecount = psf_fwrite (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_f2bet */ - -/*============================================================================== -*/ - -static void -f2bei_array (const float *src, int *dest, int count, int normalize) -{ unsigned char *ucptr ; - float normfact ; - int value ; - - normfact = normalize ? (1.0 * 0x7FFFFFFF) : 1.0 ; - ucptr = ((unsigned char*) dest) + 4 * count ; - while (--count >= 0) - { ucptr -= 4 ; - value = lrintf (src [count] * normfact) ; - ucptr [0] = value >> 24 ; - ucptr [1] = value >> 16 ; - ucptr [2] = value >> 8 ; - ucptr [3] = value ; - } ; -} /* f2bei_array */ - -static void -f2bei_clip_array (const float *src, int *dest, int count, int normalize) -{ unsigned char *ucptr ; - float normfact, scaled_value ; - int value ; - - normfact = normalize ? (8.0 * 0x10000000) : 1.0 ; - ucptr = ((unsigned char*) dest) + 4 * count ; - - while (--count >= 0) - { ucptr -= 4 ; - scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= 1.0 * 0x7FFFFFFF) - { ucptr [0] = 0x7F ; - ucptr [1] = 0xFF ; - ucptr [2] = 0xFF ; - ucptr [3] = 0xFF ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000)) - { ucptr [0] = 0x80 ; - ucptr [1] = 0x00 ; - ucptr [2] = 0x00 ; - ucptr [3] = 0x00 ; - continue ; - } ; - - value = lrintf (scaled_value) ; - ucptr [0] = value >> 24 ; - ucptr [1] = value >> 16 ; - ucptr [2] = value >> 8 ; - ucptr [3] = value ; - } ; -} /* f2bei_clip_array */ - -static sf_count_t -pcm_write_f2bei (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ void (*convert) (const float *, int *, int, int) ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - convert = (psf->add_clipping) ? f2bei_clip_array : f2bei_array ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - convert (ptr + total, psf->u.ibuf, bufferlen, psf->norm_float) ; - writecount = psf_fwrite (psf->u.ibuf, sizeof (int), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_f2bei */ - -/*============================================================================== -*/ - -static void -f2lei_array (const float *src, int *dest, int count, int normalize) -{ unsigned char *ucptr ; - float normfact ; - int value ; - - normfact = normalize ? (1.0 * 0x7FFFFFFF) : 1.0 ; - ucptr = ((unsigned char*) dest) + 4 * count ; - - while (--count >= 0) - { ucptr -= 4 ; - value = lrintf (src [count] * normfact) ; - ucptr [0] = value ; - ucptr [1] = value >> 8 ; - ucptr [2] = value >> 16 ; - ucptr [3] = value >> 24 ; - } ; -} /* f2lei_array */ - -static void -f2lei_clip_array (const float *src, int *dest, int count, int normalize) -{ unsigned char *ucptr ; - float normfact, scaled_value ; - int value ; - - normfact = normalize ? (8.0 * 0x10000000) : 1.0 ; - ucptr = ((unsigned char*) dest) + 4 * count ; - - while (--count >= 0) - { ucptr -= 4 ; - scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF)) - { ucptr [0] = 0xFF ; - ucptr [1] = 0xFF ; - ucptr [2] = 0xFF ; - ucptr [3] = 0x7F ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000)) - { ucptr [0] = 0x00 ; - ucptr [1] = 0x00 ; - ucptr [2] = 0x00 ; - ucptr [3] = 0x80 ; - continue ; - } ; - - value = lrintf (scaled_value) ; - ucptr [0] = value ; - ucptr [1] = value >> 8 ; - ucptr [2] = value >> 16 ; - ucptr [3] = value >> 24 ; - } ; -} /* f2lei_clip_array */ - -static sf_count_t -pcm_write_f2lei (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ void (*convert) (const float *, int *, int, int) ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - convert = (psf->add_clipping) ? f2lei_clip_array : f2lei_array ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - convert (ptr + total, psf->u.ibuf, bufferlen, psf->norm_float) ; - writecount = psf_fwrite (psf->u.ibuf, sizeof (int), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_f2lei */ - -/*============================================================================== -*/ - -static void -d2sc_array (const double *src, signed char *dest, int count, int normalize) -{ double normfact ; - - normfact = normalize ? (1.0 * 0x7F) : 1.0 ; - - while (--count >= 0) - { dest [count] = lrint (src [count] * normfact) ; - } ; -} /* d2sc_array */ - -static void -d2sc_clip_array (const double *src, signed char *dest, int count, int normalize) -{ double normfact, scaled_value ; - - normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x1000000) ; - - while (--count >= 0) - { scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF)) - { dest [count] = 127 ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000)) - { dest [count] = -128 ; - continue ; - } ; - - dest [count] = lrintf (scaled_value) >> 24 ; - } ; -} /* d2sc_clip_array */ - -static sf_count_t -pcm_write_d2sc (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ void (*convert) (const double *, signed char *, int, int) ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - convert = (psf->add_clipping) ? d2sc_clip_array : d2sc_array ; - bufferlen = ARRAY_LEN (psf->u.scbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - convert (ptr + total, psf->u.scbuf, bufferlen, psf->norm_double) ; - writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_d2sc */ - -/*============================================================================== -*/ - -static void -d2uc_array (const double *src, unsigned char *dest, int count, int normalize) -{ double normfact ; - - normfact = normalize ? (1.0 * 0x7F) : 1.0 ; - - while (--count >= 0) - { dest [count] = lrint (src [count] * normfact) + 128 ; - } ; -} /* d2uc_array */ - -static void -d2uc_clip_array (const double *src, unsigned char *dest, int count, int normalize) -{ double normfact, scaled_value ; - - normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x1000000) ; - - while (--count >= 0) - { scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF)) - { dest [count] = 255 ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000)) - { dest [count] = 0 ; - continue ; - } ; - - dest [count] = (lrint (src [count] * normfact) >> 24) + 128 ; - } ; -} /* d2uc_clip_array */ - -static sf_count_t -pcm_write_d2uc (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ void (*convert) (const double *, unsigned char *, int, int) ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - convert = (psf->add_clipping) ? d2uc_clip_array : d2uc_array ; - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - convert (ptr + total, psf->u.ucbuf, bufferlen, psf->norm_double) ; - writecount = psf_fwrite (psf->u.ucbuf, sizeof (unsigned char), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_d2uc */ - -/*============================================================================== -*/ - -static void -d2bes_array (const double *src, short *dest, int count, int normalize) -{ unsigned char *ucptr ; - short value ; - double normfact ; - - normfact = normalize ? (1.0 * 0x7FFF) : 1.0 ; - ucptr = ((unsigned char*) dest) + 2 * count ; - - while (--count >= 0) - { ucptr -= 2 ; - value = lrint (src [count] * normfact) ; - ucptr [1] = value ; - ucptr [0] = value >> 8 ; - } ; -} /* d2bes_array */ - -static void -d2bes_clip_array (const double *src, short *dest, int count, int normalize) -{ unsigned char *ucptr ; - double normfact, scaled_value ; - int value ; - - normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x10000) ; - ucptr = ((unsigned char*) dest) + 2 * count ; - - while (--count >= 0) - { ucptr -= 2 ; - scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF)) - { ucptr [1] = 0xFF ; - ucptr [0] = 0x7F ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000)) - { ucptr [1] = 0x00 ; - ucptr [0] = 0x80 ; - continue ; - } ; - - value = lrint (scaled_value) ; - ucptr [1] = value >> 16 ; - ucptr [0] = value >> 24 ; - } ; -} /* d2bes_clip_array */ - -static sf_count_t -pcm_write_d2bes (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ void (*convert) (const double *, short *, int, int) ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - convert = (psf->add_clipping) ? d2bes_clip_array : d2bes_array ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - convert (ptr + total, psf->u.sbuf, bufferlen, psf->norm_double) ; - writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_d2bes */ - -/*============================================================================== -*/ - -static void -d2les_array (const double *src, short *dest, int count, int normalize) -{ unsigned char *ucptr ; - short value ; - double normfact ; - - normfact = normalize ? (1.0 * 0x7FFF) : 1.0 ; - ucptr = ((unsigned char*) dest) + 2 * count ; - - while (--count >= 0) - { ucptr -= 2 ; - value = lrint (src [count] * normfact) ; - ucptr [0] = value ; - ucptr [1] = value >> 8 ; - } ; -} /* d2les_array */ - -static void -d2les_clip_array (const double *src, short *dest, int count, int normalize) -{ unsigned char *ucptr ; - int value ; - double normfact, scaled_value ; - - normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x10000) ; - ucptr = ((unsigned char*) dest) + 2 * count ; - - while (--count >= 0) - { ucptr -= 2 ; - scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF)) - { ucptr [0] = 0xFF ; - ucptr [1] = 0x7F ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000)) - { ucptr [0] = 0x00 ; - ucptr [1] = 0x80 ; - continue ; - } ; - - value = lrint (scaled_value) ; - ucptr [0] = value >> 16 ; - ucptr [1] = value >> 24 ; - } ; -} /* d2les_clip_array */ - -static sf_count_t -pcm_write_d2les (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ void (*convert) (const double *, short *, int, int) ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - convert = (psf->add_clipping) ? d2les_clip_array : d2les_array ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - convert (ptr + total, psf->u.sbuf, bufferlen, psf->norm_double) ; - writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_d2les */ - -/*============================================================================== -*/ - -static void -d2let_array (const double *src, tribyte *dest, int count, int normalize) -{ unsigned char *ucptr ; - int value ; - double normfact ; - - normfact = normalize ? (1.0 * 0x7FFFFF) : 1.0 ; - ucptr = ((unsigned char*) dest) + 3 * count ; - - while (--count >= 0) - { ucptr -= 3 ; - value = lrint (src [count] * normfact) ; - ucptr [0] = value ; - ucptr [1] = value >> 8 ; - ucptr [2] = value >> 16 ; - } ; -} /* d2let_array */ - -static void -d2let_clip_array (const double *src, tribyte *dest, int count, int normalize) -{ unsigned char *ucptr ; - int value ; - double normfact, scaled_value ; - - normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x100) ; - ucptr = ((unsigned char*) dest) + 3 * count ; - - while (--count >= 0) - { ucptr -= 3 ; - scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF)) - { ucptr [0] = 0xFF ; - ucptr [1] = 0xFF ; - ucptr [2] = 0x7F ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000)) - { ucptr [0] = 0x00 ; - ucptr [1] = 0x00 ; - ucptr [2] = 0x80 ; - continue ; - } ; - - value = lrint (scaled_value) ; - ucptr [0] = value >> 8 ; - ucptr [1] = value >> 16 ; - ucptr [2] = value >> 24 ; - } ; -} /* d2let_clip_array */ - -static sf_count_t -pcm_write_d2let (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ void (*convert) (const double *, tribyte *, int, int) ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - convert = (psf->add_clipping) ? d2let_clip_array : d2let_array ; - bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - convert (ptr + total, (tribyte*) (psf->u.ucbuf), bufferlen, psf->norm_double) ; - writecount = psf_fwrite (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_d2let */ - -/*============================================================================== -*/ - -static void -d2bet_array (const double *src, tribyte *dest, int count, int normalize) -{ unsigned char *ucptr ; - int value ; - double normfact ; - - normfact = normalize ? (1.0 * 0x7FFFFF) : 1.0 ; - ucptr = ((unsigned char*) dest) + 3 * count ; - - while (--count >= 0) - { ucptr -= 3 ; - value = lrint (src [count] * normfact) ; - ucptr [2] = value ; - ucptr [1] = value >> 8 ; - ucptr [0] = value >> 16 ; - } ; -} /* d2bet_array */ - -static void -d2bet_clip_array (const double *src, tribyte *dest, int count, int normalize) -{ unsigned char *ucptr ; - int value ; - double normfact, scaled_value ; - - normfact = normalize ? (8.0 * 0x10000000) : (1.0 * 0x100) ; - ucptr = ((unsigned char*) dest) + 3 * count ; - - while (--count >= 0) - { ucptr -= 3 ; - scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF)) - { ucptr [2] = 0xFF ; - ucptr [1] = 0xFF ; - ucptr [0] = 0x7F ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000)) - { ucptr [2] = 0x00 ; - ucptr [1] = 0x00 ; - ucptr [0] = 0x80 ; - continue ; - } ; - - value = lrint (scaled_value) ; - ucptr [2] = value >> 8 ; - ucptr [1] = value >> 16 ; - ucptr [0] = value >> 24 ; - } ; -} /* d2bet_clip_array */ - -static sf_count_t -pcm_write_d2bet (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ void (*convert) (const double *, tribyte *, int, int) ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - convert = (psf->add_clipping) ? d2bet_clip_array : d2bet_array ; - bufferlen = sizeof (psf->u.ucbuf) / SIZEOF_TRIBYTE ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - convert (ptr + total, (tribyte*) (psf->u.ucbuf), bufferlen, psf->norm_double) ; - writecount = psf_fwrite (psf->u.ucbuf, SIZEOF_TRIBYTE, bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_d2bet */ - -/*============================================================================== -*/ - -static void -d2bei_array (const double *src, int *dest, int count, int normalize) -{ unsigned char *ucptr ; - int value ; - double normfact ; - - normfact = normalize ? (1.0 * 0x7FFFFFFF) : 1.0 ; - ucptr = ((unsigned char*) dest) + 4 * count ; - - while (--count >= 0) - { ucptr -= 4 ; - value = lrint (src [count] * normfact) ; - ucptr [0] = value >> 24 ; - ucptr [1] = value >> 16 ; - ucptr [2] = value >> 8 ; - ucptr [3] = value ; - } ; -} /* d2bei_array */ - -static void -d2bei_clip_array (const double *src, int *dest, int count, int normalize) -{ unsigned char *ucptr ; - int value ; - double normfact, scaled_value ; - - normfact = normalize ? (8.0 * 0x10000000) : 1.0 ; - ucptr = ((unsigned char*) dest) + 4 * count ; - - while (--count >= 0) - { ucptr -= 4 ; - scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF)) - { ucptr [3] = 0xFF ; - ucptr [2] = 0xFF ; - ucptr [1] = 0xFF ; - ucptr [0] = 0x7F ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000)) - { ucptr [3] = 0x00 ; - ucptr [2] = 0x00 ; - ucptr [1] = 0x00 ; - ucptr [0] = 0x80 ; - continue ; - } ; - - value = lrint (scaled_value) ; - ucptr [0] = value >> 24 ; - ucptr [1] = value >> 16 ; - ucptr [2] = value >> 8 ; - ucptr [3] = value ; - } ; -} /* d2bei_clip_array */ - -static sf_count_t -pcm_write_d2bei (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ void (*convert) (const double *, int *, int, int) ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - convert = (psf->add_clipping) ? d2bei_clip_array : d2bei_array ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - convert (ptr + total, psf->u.ibuf, bufferlen, psf->norm_double) ; - writecount = psf_fwrite (psf->u.ibuf, sizeof (int), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_d2bei */ - -/*============================================================================== -*/ - -static void -d2lei_array (const double *src, int *dest, int count, int normalize) -{ unsigned char *ucptr ; - int value ; - double normfact ; - - normfact = normalize ? (1.0 * 0x7FFFFFFF) : 1.0 ; - ucptr = ((unsigned char*) dest) + 4 * count ; - - while (--count >= 0) - { ucptr -= 4 ; - value = lrint (src [count] * normfact) ; - ucptr [0] = value ; - ucptr [1] = value >> 8 ; - ucptr [2] = value >> 16 ; - ucptr [3] = value >> 24 ; - } ; -} /* d2lei_array */ - -static void -d2lei_clip_array (const double *src, int *dest, int count, int normalize) -{ unsigned char *ucptr ; - int value ; - double normfact, scaled_value ; - - normfact = normalize ? (8.0 * 0x10000000) : 1.0 ; - ucptr = ((unsigned char*) dest) + 4 * count ; - - while (--count >= 0) - { ucptr -= 4 ; - scaled_value = src [count] * normfact ; - if (CPU_CLIPS_POSITIVE == 0 && scaled_value >= (1.0 * 0x7FFFFFFF)) - { ucptr [0] = 0xFF ; - ucptr [1] = 0xFF ; - ucptr [2] = 0xFF ; - ucptr [3] = 0x7F ; - continue ; - } ; - if (CPU_CLIPS_NEGATIVE == 0 && scaled_value <= (-8.0 * 0x10000000)) - { ucptr [0] = 0x00 ; - ucptr [1] = 0x00 ; - ucptr [2] = 0x00 ; - ucptr [3] = 0x80 ; - continue ; - } ; - - value = lrint (scaled_value) ; - ucptr [0] = value ; - ucptr [1] = value >> 8 ; - ucptr [2] = value >> 16 ; - ucptr [3] = value >> 24 ; - } ; -} /* d2lei_clip_array */ - -static sf_count_t -pcm_write_d2lei (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ void (*convert) (const double *, int *, int, int) ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - convert = (psf->add_clipping) ? d2lei_clip_array : d2lei_array ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - convert (ptr + total, psf->u.ibuf, bufferlen, psf->norm_double) ; - writecount = psf_fwrite (psf->u.ibuf, sizeof (int), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* pcm_write_d2lei */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: d8bc7c0e-1e2f-4ff3-a28f-10ce1fbade3b -*/ diff --git a/libs/libsndfile/src/pvf.c b/libs/libsndfile/src/pvf.c deleted file mode 100644 index 1dab17ccb1..0000000000 --- a/libs/libsndfile/src/pvf.c +++ /dev/null @@ -1,199 +0,0 @@ -/* -** Copyright (C) 2002-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -/*------------------------------------------------------------------------------ -** Macros to handle big/little endian issues. -*/ - -#define PVF1_MARKER (MAKE_MARKER ('P', 'V', 'F', '1')) - -/*------------------------------------------------------------------------------ -** Private static functions. -*/ - -static int pvf_close (SF_PRIVATE *psf) ; - -static int pvf_write_header (SF_PRIVATE *psf, int calc_length) ; -static int pvf_read_header (SF_PRIVATE *psf) ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -pvf_open (SF_PRIVATE *psf) -{ int subformat ; - int error = 0 ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = pvf_read_header (psf))) - return error ; - } ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_PVF) - return SFE_BAD_OPEN_FORMAT ; - - psf->endian = SF_ENDIAN_BIG ; - - if (pvf_write_header (psf, SF_FALSE)) - return psf->error ; - - psf->write_header = pvf_write_header ; - } ; - - psf->container_close = pvf_close ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - - switch (subformat) - { case SF_FORMAT_PCM_S8 : /* 8-bit linear PCM. */ - case SF_FORMAT_PCM_16 : /* 16-bit linear PCM. */ - case SF_FORMAT_PCM_32 : /* 32-bit linear PCM. */ - error = pcm_init (psf) ; - break ; - - default : break ; - } ; - - return error ; -} /* pvf_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -pvf_close (SF_PRIVATE *psf) -{ - psf = psf ; - - return 0 ; -} /* pvf_close */ - -static int -pvf_write_header (SF_PRIVATE *psf, int calc_length) -{ sf_count_t current ; - - if (psf->pipeoffset > 0) - return 0 ; - - calc_length = calc_length ; /* Avoid a compiler warning. */ - - current = psf_ftell (psf) ; - - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - - if (psf->is_pipe == SF_FALSE) - psf_fseek (psf, 0, SEEK_SET) ; - - LSF_SNPRINTF ((char*) psf->header, sizeof (psf->header), "PVF1\n%d %d %d\n", - psf->sf.channels, psf->sf.samplerate, psf->bytewidth * 8) ; - - psf->headindex = strlen ((char*) psf->header) ; - - /* Header construction complete so write it out. */ - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - if (psf->error) - return psf->error ; - - psf->dataoffset = psf->headindex ; - - if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* pvf_write_header */ - -static int -pvf_read_header (SF_PRIVATE *psf) -{ char buffer [32] ; - int marker, channels, samplerate, bitwidth ; - - psf_binheader_readf (psf, "pmj", 0, &marker, 1) ; - psf_log_printf (psf, "%M\n", marker) ; - - if (marker != PVF1_MARKER) - return SFE_PVF_NO_PVF1 ; - - /* Grab characters up until a newline which is replaced by an EOS. */ - psf_binheader_readf (psf, "G", buffer, sizeof (buffer)) ; - - if (sscanf (buffer, "%d %d %d", &channels, &samplerate, &bitwidth) != 3) - return SFE_PVF_BAD_HEADER ; - - psf_log_printf (psf, " Channels : %d\n Sample rate : %d\n Bit width : %d\n", - channels, samplerate, bitwidth) ; - - psf->sf.channels = channels ; - psf->sf.samplerate = samplerate ; - - switch (bitwidth) - { case 8 : - psf->sf.format = SF_FORMAT_PVF | SF_FORMAT_PCM_S8 ; - psf->bytewidth = 1 ; - break ; - - case 16 : - psf->sf.format = SF_FORMAT_PVF | SF_FORMAT_PCM_16 ; - psf->bytewidth = 2 ; - break ; - case 32 : - psf->sf.format = SF_FORMAT_PVF | SF_FORMAT_PCM_32 ; - psf->bytewidth = 4 ; - break ; - - default : - return SFE_PVF_BAD_BITWIDTH ; - } ; - - psf->dataoffset = psf_ftell (psf) ; - psf_log_printf (psf, " Data Offset : %D\n", psf->dataoffset) ; - - psf->endian = SF_ENDIAN_BIG ; - - psf->datalength = psf->filelength - psf->dataoffset ; - psf->blockwidth = psf->sf.channels * psf->bytewidth ; - - if (! psf->sf.frames && psf->blockwidth) - psf->sf.frames = (psf->filelength - psf->dataoffset) / psf->blockwidth ; - - return 0 ; -} /* pvf_read_header */ -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 20a26761-8bc1-41d7-b1f3-9793bf3d9864 -*/ diff --git a/libs/libsndfile/src/raw.c b/libs/libsndfile/src/raw.c deleted file mode 100644 index 65be491feb..0000000000 --- a/libs/libsndfile/src/raw.c +++ /dev/null @@ -1,111 +0,0 @@ -/* -** Copyright (C) 1999-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include - -#include "sndfile.h" -#include "common.h" - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -raw_open (SF_PRIVATE *psf) -{ int subformat, error = SFE_NO_ERROR ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ; - - if (CPU_IS_BIG_ENDIAN && (psf->endian == 0 || psf->endian == SF_ENDIAN_CPU)) - psf->endian = SF_ENDIAN_BIG ; - else if (CPU_IS_LITTLE_ENDIAN && (psf->endian == 0 || psf->endian == SF_ENDIAN_CPU)) - psf->endian = SF_ENDIAN_LITTLE ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - psf->dataoffset = 0 ; - psf->datalength = psf->filelength ; - - switch (subformat) - { case SF_FORMAT_PCM_S8 : - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_PCM_U8 : - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_24 : - case SF_FORMAT_PCM_32 : - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_ULAW : - error = ulaw_init (psf) ; - break ; - - case SF_FORMAT_ALAW : - error = alaw_init (psf) ; - break ; - - case SF_FORMAT_GSM610 : - error = gsm610_init (psf) ; - break ; - - /* Lite remove start */ - case SF_FORMAT_FLOAT : - error = float32_init (psf) ; - break ; - - case SF_FORMAT_DOUBLE : - error = double64_init (psf) ; - break ; - - case SF_FORMAT_DWVW_12 : - error = dwvw_init (psf, 12) ; - break ; - - case SF_FORMAT_DWVW_16 : - error = dwvw_init (psf, 16) ; - break ; - - case SF_FORMAT_DWVW_24 : - error = dwvw_init (psf, 24) ; - break ; - - case SF_FORMAT_VOX_ADPCM : - error = vox_adpcm_init (psf) ; - break ; - /* Lite remove end */ - - default : return SFE_BAD_OPEN_FORMAT ; - } ; - - return error ; -} /* raw_open */ -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: f0066de7-d6ce-4f36-a1e0-e475c07d4e1a -*/ diff --git a/libs/libsndfile/src/rx2.c b/libs/libsndfile/src/rx2.c deleted file mode 100644 index d95f11fe78..0000000000 --- a/libs/libsndfile/src/rx2.c +++ /dev/null @@ -1,326 +0,0 @@ -/* -** Copyright (C) 2001-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -#if (ENABLE_EXPERIMENTAL_CODE == 0) - -int -rx2_open (SF_PRIVATE *psf) -{ if (psf) - return SFE_UNIMPLEMENTED ; - return (psf && 0) ; -} /* rx2_open */ - -#else - -/*------------------------------------------------------------------------------ - * Macros to handle big/little endian issues. -*/ - -#define CAT_MARKER (MAKE_MARKER ('C', 'A', 'T', ' ')) -#define GLOB_MARKER (MAKE_MARKER ('G', 'L', 'O', 'B')) - -#define RECY_MARKER (MAKE_MARKER ('R', 'E', 'C', 'Y')) - -#define SLCL_MARKER (MAKE_MARKER ('S', 'L', 'C', 'L')) -#define SLCE_MARKER (MAKE_MARKER ('S', 'L', 'C', 'E')) - -#define DEVL_MARKER (MAKE_MARKER ('D', 'E', 'V', 'L')) -#define TRSH_MARKER (MAKE_MARKER ('T', 'R', 'S', 'H')) - -#define EQ_MARKER (MAKE_MARKER ('E', 'Q', ' ', ' ')) -#define COMP_MARKER (MAKE_MARKER ('C', 'O', 'M', 'P')) - -#define SINF_MARKER (MAKE_MARKER ('S', 'I', 'N', 'F')) -#define SDAT_MARKER (MAKE_MARKER ('S', 'D', 'A', 'T')) - -/*------------------------------------------------------------------------------ - * Typedefs for file chunks. -*/ - - -/*------------------------------------------------------------------------------ - * Private static functions. -*/ -static int rx2_close (SF_PRIVATE *psf) ; - -/*------------------------------------------------------------------------------ -** Public functions. -*/ - -int -rx2_open (SF_PRIVATE *psf) -{ static const char *marker_type [4] = - { "Original Enabled", "Enabled Hidden", - "Additional/PencilTool", "Disabled" - } ; - - int error, marker, length, glob_offset, slce_count, frames ; - - int sdat_length = 0, slce_total = 0 ; - - int n_channels ; - - - /* So far only doing read. */ - - psf_binheader_readf (psf, "Epm4", 0, &marker, &length) ; - - if (marker != CAT_MARKER) - { psf_log_printf (psf, "length : %d\n", length) ; - return -1000 ; - } ; - - if (length != psf->filelength - 8) - psf_log_printf (psf, "%M : %d (should be %d)\n", marker, length, psf->filelength - 8) ; - else - psf_log_printf (psf, "%M : %d\n", marker, length) ; - - /* 'REX2' marker */ - psf_binheader_readf (psf, "m", &marker) ; - psf_log_printf (psf, "%M", marker) ; - - /* 'HEAD' marker */ - psf_binheader_readf (psf, "m", &marker) ; - psf_log_printf (psf, "%M\n", marker) ; - - /* Grab 'GLOB' offset. */ - psf_binheader_readf (psf, "E4", &glob_offset) ; - glob_offset += 0x14 ; /* Add the current file offset. */ - - /* Jump to offset 0x30 */ - psf_binheader_readf (psf, "p", 0x30) ; - - /* Get name length */ - length = 0 ; - psf_binheader_readf (psf, "1", &length) ; - if (length >= SIGNED_SIZEOF (psf->u.cbuf)) - { psf_log_printf (psf, " Text : %d *** Error : Too sf_count_t!\n") ; - return -1001 ; - } - - memset (psf->u.cbuf, 0, sizeof (psf->u.cbuf)) ; - psf_binheader_readf (psf, "b", psf->u.cbuf, length) ; - psf_log_printf (psf, " Text : \"%s\"\n", psf->u.cbuf) ; - - /* Jump to GLOB offset position. */ - if (glob_offset & 1) - glob_offset ++ ; - - psf_binheader_readf (psf, "p", glob_offset) ; - - slce_count = 0 ; - /* GLOB */ - while (1) - { psf_binheader_readf (psf, "m", &marker) ; - - if (marker != SLCE_MARKER && slce_count > 0) - { psf_log_printf (psf, " SLCE count : %d\n", slce_count) ; - slce_count = 0 ; - } - switch (marker) - { case GLOB_MARKER: - psf_binheader_readf (psf, "E4", &length) ; - psf_log_printf (psf, " %M : %d\n", marker, length) ; - psf_binheader_readf (psf, "j", length) ; - break ; - - case RECY_MARKER: - psf_binheader_readf (psf, "E4", &length) ; - psf_log_printf (psf, " %M : %d\n", marker, length) ; - psf_binheader_readf (psf, "j", (length+1) & 0xFFFFFFFE) ; /* ?????? */ - break ; - - case CAT_MARKER: - psf_binheader_readf (psf, "E4", &length) ; - psf_log_printf (psf, " %M : %d\n", marker, length) ; - /*-psf_binheader_readf (psf, "j", length) ;-*/ - break ; - - case DEVL_MARKER: - psf_binheader_readf (psf, "mE4", &marker, &length) ; - psf_log_printf (psf, " DEVL%M : %d\n", marker, length) ; - if (length & 1) - length ++ ; - psf_binheader_readf (psf, "j", length) ; - break ; - - case EQ_MARKER: - case COMP_MARKER: - psf_binheader_readf (psf, "E4", &length) ; - psf_log_printf (psf, " %M : %d\n", marker, length) ; - /* This is weird!!!! why make this (length - 1) */ - if (length & 1) - length ++ ; - psf_binheader_readf (psf, "j", length) ; - break ; - - case SLCL_MARKER: - psf_log_printf (psf, " %M\n (Offset, Next Offset, Type)\n", marker) ; - slce_count = 0 ; - break ; - - case SLCE_MARKER: - { int len [4], indx ; - - psf_binheader_readf (psf, "E4444", &len [0], &len [1], &len [2], &len [3]) ; - - indx = ((len [3] & 0x0000FFFF) >> 8) & 3 ; - - if (len [2] == 1) - { if (indx != 1) - indx = 3 ; /* 2 cases, where next slice offset = 1 -> disabled & enabled/hidden */ - - psf_log_printf (psf, " %M : (%6d, ?: 0x%X, %s)\n", marker, len [1], (len [3] & 0xFFFF0000) >> 16, marker_type [indx]) ; - } - else - { slce_total += len [2] ; - - psf_log_printf (psf, " %M : (%6d, SLCE_next_ofs:%d, ?: 0x%X, %s)\n", marker, len [1], len [2], (len [3] & 0xFFFF0000) >> 16, marker_type [indx]) ; - } ; - - slce_count ++ ; - } ; - break ; - - case SINF_MARKER: - psf_binheader_readf (psf, "E4", &length) ; - psf_log_printf (psf, " %M : %d\n", marker, length) ; - - psf_binheader_readf (psf, "E2", &n_channels) ; - n_channels = (n_channels & 0x0000FF00) >> 8 ; - psf_log_printf (psf, " Channels : %d\n", n_channels) ; - - psf_binheader_readf (psf, "E44", &psf->sf.samplerate, &frames) ; - psf->sf.frames = frames ; - psf_log_printf (psf, " Sample Rate : %d\n", psf->sf.samplerate) ; - psf_log_printf (psf, " Frames : %D\n", psf->sf.frames) ; - - psf_binheader_readf (psf, "E4", &length) ; - psf_log_printf (psf, " ??????????? : %d\n", length) ; - - psf_binheader_readf (psf, "E4", &length) ; - psf_log_printf (psf, " ??????????? : %d\n", length) ; - break ; - - case SDAT_MARKER: - psf_binheader_readf (psf, "E4", &length) ; - - sdat_length = length ; - - /* Get the current offset. */ - psf->dataoffset = psf_binheader_readf (psf, NULL) ; - - if (psf->dataoffset + length != psf->filelength) - psf_log_printf (psf, " %M : %d (should be %d)\n", marker, length, psf->dataoffset + psf->filelength) ; - else - psf_log_printf (psf, " %M : %d\n", marker, length) ; - break ; - - default : - psf_log_printf (psf, "Unknown marker : 0x%X %M", marker, marker) ; - return -1003 ; - break ; - } ; - - /* SDAT always last marker in file. */ - if (marker == SDAT_MARKER) - break ; - } ; - - puts (psf->logbuffer) ; - puts ("-----------------------------------") ; - - printf ("SDAT length : %d\n", sdat_length) ; - printf ("SLCE count : %d\n", slce_count) ; - - /* Hack for zero slice count. */ - if (slce_count == 0 && slce_total == 1) - slce_total = frames ; - - printf ("SLCE samples : %d\n", slce_total) ; - - /* Two bytes per sample. */ - printf ("Comp Ratio : %f:1\n", (2.0 * slce_total * n_channels) / sdat_length) ; - - puts (" ") ; - - psf->logbuffer [0] = 0 ; - - /* OK, have the header although not too sure what it all means. */ - - psf->endian = SF_ENDIAN_BIG ; - - psf->datalength = psf->filelength - psf->dataoffset ; - - if (psf_fseek (psf, psf->dataoffset, SEEK_SET)) - return SFE_BAD_SEEK ; - - psf->sf.format = (SF_FORMAT_REX2 | SF_FORMAT_DWVW_12) ; - - psf->sf.channels = 1 ; - psf->bytewidth = 2 ; - psf->blockwidth = psf->sf.channels * psf->bytewidth ; - - if ((error = dwvw_init (psf, 16))) - return error ; - - psf->container_close = rx2_close ; - - if (! psf->sf.frames && psf->blockwidth) - psf->sf.frames = psf->datalength / psf->blockwidth ; - - /* All done. */ - - return 0 ; -} /* rx2_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -rx2_close (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_WRITE) - { /* Now we know for certain the length of the file we can re-write - ** correct values for the FORM, 8SVX and BODY chunks. - */ - - } ; - - return 0 ; -} /* rx2_close */ - -#endif -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 7366e813-9fee-4d1f-881e-e4a691469370 -*/ diff --git a/libs/libsndfile/src/sd2.c b/libs/libsndfile/src/sd2.c deleted file mode 100644 index 7ef4814290..0000000000 --- a/libs/libsndfile/src/sd2.c +++ /dev/null @@ -1,613 +0,0 @@ -/* -** Copyright (C) 2001-2006 Erik de Castro Lopo -** Copyright (C) 2004 Paavo Jumppanen -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -/* -** The sd2 support implemented in this file was partially sponsored -** (financially) by Paavo Jumppanen. -*/ - -/* -** Documentation on the Mac resource fork was obtained here : -** http://developer.apple.com/documentation/mac/MoreToolbox/MoreToolbox-99.html -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -/*------------------------------------------------------------------------------ - * Markers. -*/ - -#define Sd2f_MARKER MAKE_MARKER ('S', 'd', '2', 'f') -#define Sd2a_MARKER MAKE_MARKER ('S', 'd', '2', 'a') -#define ALCH_MARKER MAKE_MARKER ('A', 'L', 'C', 'H') -#define lsf1_MARKER MAKE_MARKER ('l', 's', 'f', '1') - -#define STR_MARKER MAKE_MARKER ('S', 'T', 'R', ' ') -#define sdML_MARKER MAKE_MARKER ('s', 'd', 'M', 'L') - -enum -{ RSRC_STR = 111, - RSRC_BIN -} ; - -typedef struct -{ unsigned char * rsrc_data ; - int rsrc_len ; - - int data_offset, data_length ; - int map_offset, map_length ; - - int type_count, type_offset ; - int item_offset ; - - int str_index, str_count ; - - int string_offset ; - - /* All the above just to get these three. */ - int sample_size, sample_rate, channels ; -} SD2_RSRC ; - -typedef struct -{ int type ; - int id ; - char name [32] ; - char value [32] ; - int value_len ; -} STR_RSRC ; - -/*------------------------------------------------------------------------------ - * Private static functions. -*/ - -static int sd2_close (SF_PRIVATE *psf) ; - -static int sd2_parse_rsrc_fork (SF_PRIVATE *psf) ; -static int parse_str_rsrc (SF_PRIVATE *psf, SD2_RSRC * rsrc) ; - -static int sd2_write_rsrc_fork (SF_PRIVATE *psf, int calc_length) ; - -/*------------------------------------------------------------------------------ -** Public functions. -*/ - -int -sd2_open (SF_PRIVATE *psf) -{ int subformat, error = 0, valid ; - - /* SD2 is always big endian. */ - psf->endian = SF_ENDIAN_BIG ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->rsrclength > 0)) - { psf_use_rsrc (psf, SF_TRUE) ; - valid = psf_file_valid (psf) ; - psf_use_rsrc (psf, SF_FALSE) ; - if (! valid) - { psf_log_printf (psf, "sd2_open : psf->rsrcdes < 0\n") ; - return SFE_SD2_BAD_RSRC ; - } ; - - error = sd2_parse_rsrc_fork (psf) ; - - if (error) - goto error_cleanup ; - } ; - - if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_SD2) - { error = SFE_BAD_OPEN_FORMAT ; - goto error_cleanup ; - } ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - psf->dataoffset = 0 ; - - /* Only open and write the resource in RDWR mode is its current length is zero. */ - if (psf->mode == SFM_WRITE || (psf->mode == SFM_RDWR && psf->rsrclength == 0)) - { psf_open_rsrc (psf, psf->mode) ; - - error = sd2_write_rsrc_fork (psf, SF_FALSE) ; - - if (error) - goto error_cleanup ; - - /* Not needed. */ - psf->write_header = NULL ; - } ; - - psf->container_close = sd2_close ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - - switch (subformat) - { case SF_FORMAT_PCM_S8 : /* 8-bit linear PCM. */ - case SF_FORMAT_PCM_16 : /* 16-bit linear PCM. */ - case SF_FORMAT_PCM_24 : /* 24-bit linear PCM */ - error = pcm_init (psf) ; - break ; - - default : - error = SFE_UNIMPLEMENTED ; - break ; - } ; - - psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - -error_cleanup: - - /* Close the resource fork regardless. We won't need it again. */ - psf_close_rsrc (psf) ; - - return error ; -} /* sd2_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -sd2_close (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_WRITE) - { /* Now we know for certain the audio_length of the file we can re-write - ** correct values for the FORM, 8SVX and BODY chunks. - */ - - } ; - - return 0 ; -} /* sd2_close */ - -/*------------------------------------------------------------------------------ -*/ - -static inline void -write_char (unsigned char * data, int offset, char value) -{ data [offset] = value ; -} /* write_char */ - -static inline void -write_short (unsigned char * data, int offset, short value) -{ data [offset] = value >> 8 ; - data [offset + 1] = value ; -} /* write_char */ - -static inline void -write_int (unsigned char * data, int offset, int value) -{ data [offset] = value >> 24 ; - data [offset + 1] = value >> 16 ; - data [offset + 2] = value >> 8 ; - data [offset + 3] = value ; -} /* write_int */ - -static inline void -write_marker (unsigned char * data, int offset, int value) -{ - if (CPU_IS_BIG_ENDIAN) - { data [offset] = value >> 24 ; - data [offset + 1] = value >> 16 ; - data [offset + 2] = value >> 8 ; - data [offset + 3] = value ; - } - else - { data [offset] = value ; - data [offset + 1] = value >> 8 ; - data [offset + 2] = value >> 16 ; - data [offset + 3] = value >> 24 ; - } ; -} /* write_marker */ - -static void -write_str (unsigned char * data, int offset, char * buffer, int buffer_len) -{ memcpy (data + offset, buffer, buffer_len) ; -} /* write_str */ - -static int -sd2_write_rsrc_fork (SF_PRIVATE *psf, int UNUSED (calc_length)) -{ SD2_RSRC rsrc ; - STR_RSRC str_rsrc [] = - { { RSRC_STR, 1000, "_sample-size", "", 0 }, - { RSRC_STR, 1001, "_sample-rate", "", 0 }, - { RSRC_STR, 1002, "_channels", "", 0 }, - { RSRC_BIN, 1000, "_Markers", "", 8 } - } ; - - int k, str_offset, data_offset, next_str ; - - psf_use_rsrc (psf, SF_TRUE) ; - - memset (&rsrc, 0, sizeof (rsrc)) ; - - rsrc.sample_rate = psf->sf.samplerate ; - rsrc.sample_size = psf->bytewidth ; - rsrc.channels = psf->sf.channels ; - - rsrc.rsrc_data = psf->header ; - rsrc.rsrc_len = sizeof (psf->header) ; - memset (rsrc.rsrc_data, 0xea, rsrc.rsrc_len) ; - - LSF_SNPRINTF (str_rsrc [0].value, sizeof (str_rsrc [0].value), "_%d", rsrc.sample_size) ; - LSF_SNPRINTF (str_rsrc [1].value, sizeof (str_rsrc [1].value), "_%d.000000", rsrc.sample_rate) ; - LSF_SNPRINTF (str_rsrc [2].value, sizeof (str_rsrc [2].value), "_%d", rsrc.channels) ; - - for (k = 0 ; k < ARRAY_LEN (str_rsrc) ; k++) - { if (str_rsrc [k].value_len == 0) - { str_rsrc [k].value_len = strlen (str_rsrc [k].value) ; - str_rsrc [k].value [0] = str_rsrc [k].value_len - 1 ; - } ; - - /* Turn name string into a pascal string. */ - str_rsrc [k].name [0] = strlen (str_rsrc [k].name) - 1 ; - } ; - - rsrc.data_offset = 0x100 ; - - /* - ** Calculate data length : - ** length of strings, plus the length of the sdML chunk. - */ - rsrc.data_length = 0 ; - for (k = 0 ; k < ARRAY_LEN (str_rsrc) ; k++) - rsrc.data_length += str_rsrc [k].value_len + 4 ; - - rsrc.map_offset = rsrc.data_offset + rsrc.data_length ; - - /* Very start of resource fork. */ - write_int (rsrc.rsrc_data, 0, rsrc.data_offset) ; - write_int (rsrc.rsrc_data, 4, rsrc.map_offset) ; - write_int (rsrc.rsrc_data, 8, rsrc.data_length) ; - - write_char (rsrc.rsrc_data, 0x30, strlen (psf->filename)) ; - write_str (rsrc.rsrc_data, 0x31, psf->filename, strlen (psf->filename)) ; - - write_short (rsrc.rsrc_data, 0x50, 0) ; - write_marker (rsrc.rsrc_data, 0x52, Sd2f_MARKER) ; - write_marker (rsrc.rsrc_data, 0x56, lsf1_MARKER) ; - - /* Very start of resource map. */ - write_int (rsrc.rsrc_data, rsrc.map_offset + 0, rsrc.data_offset) ; - write_int (rsrc.rsrc_data, rsrc.map_offset + 4, rsrc.map_offset) ; - write_int (rsrc.rsrc_data, rsrc.map_offset + 8, rsrc.data_length) ; - - /* These I don't currently understand. */ - if (1) - { write_char (rsrc.rsrc_data, rsrc.map_offset+ 16, 1) ; - /* Next resource map. */ - write_int (rsrc.rsrc_data, rsrc.map_offset + 17, 0x12345678) ; - /* File ref number. */ - write_short (rsrc.rsrc_data, rsrc.map_offset + 21, 0xabcd) ; - /* Fork attributes. */ - write_short (rsrc.rsrc_data, rsrc.map_offset + 23, 0) ; - } ; - - /* Resource type offset. */ - rsrc.type_offset = rsrc.map_offset + 30 ; - write_short (rsrc.rsrc_data, rsrc.map_offset + 24, rsrc.type_offset - rsrc.map_offset - 2) ; - - /* Type index max. */ - rsrc.type_count = 2 ; - write_short (rsrc.rsrc_data, rsrc.map_offset + 28, rsrc.type_count - 1) ; - - rsrc.item_offset = rsrc.type_offset + rsrc.type_count * 8 ; - - rsrc.str_count = ARRAY_LEN (str_rsrc) ; - rsrc.string_offset = rsrc.item_offset + (rsrc.str_count + 1) * 12 - rsrc.map_offset ; - write_short (rsrc.rsrc_data, rsrc.map_offset + 26, rsrc.string_offset) ; - - /* Write 'STR ' resource type. */ - rsrc.str_count = 3 ; - write_marker (rsrc.rsrc_data, rsrc.type_offset, STR_MARKER) ; - write_short (rsrc.rsrc_data, rsrc.type_offset + 4, rsrc.str_count - 1) ; - write_short (rsrc.rsrc_data, rsrc.type_offset + 6, 0x12) ; - - /* Write 'sdML' resource type. */ - write_marker (rsrc.rsrc_data, rsrc.type_offset + 8, sdML_MARKER) ; - write_short (rsrc.rsrc_data, rsrc.type_offset + 12, 0) ; - write_short (rsrc.rsrc_data, rsrc.type_offset + 14, 0x36) ; - - str_offset = rsrc.map_offset + rsrc.string_offset ; - next_str = 0 ; - data_offset = rsrc.data_offset ; - for (k = 0 ; k < ARRAY_LEN (str_rsrc) ; k++) - { write_str (rsrc.rsrc_data, str_offset, str_rsrc [k].name, strlen (str_rsrc [k].name)) ; - - write_short (rsrc.rsrc_data, rsrc.item_offset + k * 12, str_rsrc [k].id) ; - write_short (rsrc.rsrc_data, rsrc.item_offset + k * 12 + 2, next_str) ; - - str_offset += strlen (str_rsrc [k].name) ; - next_str += strlen (str_rsrc [k].name) ; - - write_int (rsrc.rsrc_data, rsrc.item_offset + k * 12 + 4, data_offset - rsrc.data_offset) ; - - write_int (rsrc.rsrc_data, data_offset, str_rsrc [k].value_len) ; - write_str (rsrc.rsrc_data, data_offset + 4, str_rsrc [k].value, str_rsrc [k].value_len) ; - data_offset += 4 + str_rsrc [k].value_len ; - } ; - - /* Finally, calculate and set map length. */ - rsrc.map_length = str_offset - rsrc.map_offset ; - write_int (rsrc.rsrc_data, 12, rsrc.map_length) ; - write_int (rsrc.rsrc_data, rsrc.map_offset + 12, rsrc.map_length) ; - - rsrc.rsrc_len = rsrc.map_offset + rsrc.map_length ; - - psf_fwrite (rsrc.rsrc_data, rsrc.rsrc_len, 1, psf) ; - - psf_use_rsrc (psf, SF_FALSE) ; - - if (psf->error) - return psf->error ; - - return 0 ; -} /* sd2_write_rsrc_fork */ - -/*------------------------------------------------------------------------------ -*/ - -static inline int -read_char (const unsigned char * data, int offset) -{ return data [offset] ; -} /* read_char */ - -static inline int -read_short (const unsigned char * data, int offset) -{ return (data [offset] << 8) + data [offset + 1] ; -} /* read_short */ - -static inline int -read_int (const unsigned char * data, int offset) -{ return (data [offset] << 24) + (data [offset + 1] << 16) + (data [offset + 2] << 8) + data [offset + 3] ; -} /* read_int */ - -static inline int -read_marker (const unsigned char * data, int offset) -{ - if (CPU_IS_BIG_ENDIAN) - return (data [offset] << 24) + (data [offset + 1] << 16) + (data [offset + 2] << 8) + data [offset + 3] ; - else if (CPU_IS_LITTLE_ENDIAN) - return data [offset] + (data [offset + 1] << 8) + (data [offset + 2] << 16) + (data [offset + 3] << 24) ; - else - return 0x666 ; -} /* read_marker */ - -static void -read_str (const unsigned char * data, int offset, char * buffer, int buffer_len) -{ int k ; - - memset (buffer, 0, buffer_len) ; - - for (k = 0 ; k < buffer_len - 1 ; k++) - { if (isprint (data [offset + k]) == 0) - return ; - buffer [k] = data [offset + k] ; - } ; - return ; -} /* read_str */ - -static int -sd2_parse_rsrc_fork (SF_PRIVATE *psf) -{ SD2_RSRC rsrc ; - int k, marker, error = 0 ; - - psf_use_rsrc (psf, SF_TRUE) ; - - memset (&rsrc, 0, sizeof (rsrc)) ; - - rsrc.rsrc_len = psf_get_filelen (psf) ; - psf_log_printf (psf, "Resource length : %d (0x%04X)\n", rsrc.rsrc_len, rsrc.rsrc_len) ; - - if (rsrc.rsrc_len > SIGNED_SIZEOF (psf->header)) - rsrc.rsrc_data = calloc (1, rsrc.rsrc_len) ; - else - rsrc.rsrc_data = psf->header ; - - /* Read in the whole lot. */ - psf_fread (rsrc.rsrc_data, rsrc.rsrc_len, 1, psf) ; - - /* Reset the header storage because we have changed to the rsrcdes. */ - psf->headindex = psf->headend = rsrc.rsrc_len ; - - rsrc.data_offset = read_int (rsrc.rsrc_data, 0) ; - rsrc.map_offset = read_int (rsrc.rsrc_data, 4) ; - rsrc.data_length = read_int (rsrc.rsrc_data, 8) ; - rsrc.map_length = read_int (rsrc.rsrc_data, 12) ; - - if (rsrc.data_offset == 0x51607 && rsrc.map_offset == 0x20000) - { psf_log_printf (psf, "Trying offset of 0x52 bytes.\n") ; - rsrc.data_offset = read_int (rsrc.rsrc_data, 0x52 + 0) + 0x52 ; - rsrc.map_offset = read_int (rsrc.rsrc_data, 0x52 + 4) + 0x52 ; - rsrc.data_length = read_int (rsrc.rsrc_data, 0x52 + 8) ; - rsrc.map_length = read_int (rsrc.rsrc_data, 0x52 + 12) ; - } ; - - psf_log_printf (psf, " data offset : 0x%04X\n map offset : 0x%04X\n" - " data length : 0x%04X\n map length : 0x%04X\n", - rsrc.data_offset, rsrc.map_offset, rsrc.data_length, rsrc.map_length) ; - - if (rsrc.data_offset > rsrc.rsrc_len) - { psf_log_printf (psf, "Error : rsrc.data_offset (%d, 0x%x) > len\n", rsrc.data_offset, rsrc.data_offset) ; - error = SFE_SD2_BAD_DATA_OFFSET ; - goto parse_rsrc_fork_cleanup ; - } ; - - if (rsrc.map_offset > rsrc.rsrc_len) - { psf_log_printf (psf, "Error : rsrc.map_offset > len\n") ; - error = SFE_SD2_BAD_MAP_OFFSET ; - goto parse_rsrc_fork_cleanup ; - } ; - - if (rsrc.data_length > rsrc.rsrc_len) - { psf_log_printf (psf, "Error : rsrc.data_length > len\n") ; - error = SFE_SD2_BAD_DATA_LENGTH ; - goto parse_rsrc_fork_cleanup ; - } ; - - if (rsrc.map_length > rsrc.rsrc_len) - { psf_log_printf (psf, "Error : rsrc.map_length > len\n") ; - error = SFE_SD2_BAD_MAP_LENGTH ; - goto parse_rsrc_fork_cleanup ; - } ; - - if (rsrc.data_offset + rsrc.data_length != rsrc.map_offset || rsrc.map_offset + rsrc.map_length != rsrc.rsrc_len) - { psf_log_printf (psf, "Error : This does not look like a MacOSX resource fork.\n") ; - error = SFE_SD2_BAD_RSRC ; - goto parse_rsrc_fork_cleanup ; - } ; - - rsrc.string_offset = rsrc.map_offset + read_short (rsrc.rsrc_data, rsrc.map_offset + 26) ; - if (rsrc.string_offset > rsrc.rsrc_len) - { psf_log_printf (psf, "Bad string offset (%d).\n", rsrc.string_offset) ; - error = SFE_SD2_BAD_RSRC ; - goto parse_rsrc_fork_cleanup ; - } ; - - rsrc.type_offset = rsrc.map_offset + 30 ; - - rsrc.type_count = read_short (rsrc.rsrc_data, rsrc.map_offset + 28) + 1 ; - if (rsrc.type_count < 1) - { psf_log_printf (psf, "Bad type count.\n") ; - error = SFE_SD2_BAD_RSRC ; - goto parse_rsrc_fork_cleanup ; - } ; - - rsrc.item_offset = rsrc.type_offset + rsrc.type_count * 8 ; - if (rsrc.item_offset < 0 || rsrc.item_offset > rsrc.rsrc_len) - { psf_log_printf (psf, "Bad item offset (%d).\n", rsrc.item_offset) ; - error = SFE_SD2_BAD_RSRC ; - goto parse_rsrc_fork_cleanup ; - } ; - - rsrc.str_index = -1 ; - for (k = 0 ; k < rsrc.type_count ; k ++) - { marker = read_marker (rsrc.rsrc_data, rsrc.type_offset + k * 8) ; - - if (marker == STR_MARKER) - { rsrc.str_index = k ; - rsrc.str_count = read_short (rsrc.rsrc_data, rsrc.type_offset + k * 8 + 4) + 1 ; - error = parse_str_rsrc (psf, &rsrc) ; - goto parse_rsrc_fork_cleanup ; - } ; - } ; - - psf_log_printf (psf, "No 'STR ' resource.\n") ; - error = SFE_SD2_BAD_RSRC ; - -parse_rsrc_fork_cleanup : - - psf_use_rsrc (psf, SF_FALSE) ; - - if ((void *) rsrc.rsrc_data < (void *) psf || (void *) rsrc.rsrc_data > (void *) (psf + 1)) - free (rsrc.rsrc_data) ; - - return error ; -} /* sd2_parse_rsrc_fork */ - -static int -parse_str_rsrc (SF_PRIVATE *psf, SD2_RSRC * rsrc) -{ char name [32], value [32] ; - int k, str_offset, data_offset, data_len, rsrc_id ; - - psf_log_printf (psf, "Finding parameters :\n") ; - - str_offset = rsrc->string_offset ; - for (k = 0 ; k < rsrc->str_count ; k++) - { int slen ; - - slen = read_char (rsrc->rsrc_data, str_offset) ; - read_str (rsrc->rsrc_data, str_offset + 1, name, SF_MIN (SIGNED_SIZEOF (name), slen + 1)) ; - str_offset += slen + 1 ; - - rsrc_id = read_short (rsrc->rsrc_data, rsrc->item_offset + k * 12) ; - - data_offset = rsrc->data_offset + read_int (rsrc->rsrc_data, rsrc->item_offset + k * 12 + 4) ; - if (data_offset < 0 || data_offset > rsrc->rsrc_len) - { psf_log_printf (psf, "Bad data offset (%d)\n", data_offset) ; - return SFE_SD2_BAD_DATA_OFFSET ; - } ; - - data_len = read_int (rsrc->rsrc_data, data_offset) ; - if (data_len < 0 || data_len > rsrc->rsrc_len) - { psf_log_printf (psf, "Bad data length (%d).\n", data_len) ; - return SFE_SD2_BAD_RSRC ; - } ; - - slen = read_char (rsrc->rsrc_data, data_offset + 4) ; - read_str (rsrc->rsrc_data, data_offset + 5, value, SF_MIN (SIGNED_SIZEOF (value), slen + 1)) ; - - psf_log_printf (psf, " %-12s 0x%04x %4d %2d %2d '%s'\n", name, data_offset, rsrc_id, data_len, slen, value) ; - - if (strcmp (name, "sample-size") == 0 && rsrc->sample_size == 0) - rsrc->sample_size = strtol (value, NULL, 10) ; - else if (strcmp (name, "sample-rate") == 0 && rsrc->sample_rate == 0) - rsrc->sample_rate = strtol (value, NULL, 10) ; - else if (strcmp (name, "channels") == 0 && rsrc->channels == 0) - rsrc->channels = strtol (value, NULL, 10) ; - } ; - - if (rsrc->sample_rate < 0) - { psf_log_printf (psf, "Bad sample rate (%d)\n", rsrc->sample_rate) ; - return SFE_SD2_BAD_RSRC ; - } ; - - if (rsrc->channels < 0) - { psf_log_printf (psf, "Bad channel count (%d)\n", rsrc->channels) ; - return SFE_SD2_BAD_RSRC ; - } ; - - psf->sf.samplerate = rsrc->sample_rate ; - psf->sf.channels = rsrc->channels ; - psf->bytewidth = rsrc->sample_size ; - - switch (rsrc->sample_size) - { case 1 : - psf->sf.format = SF_FORMAT_SD2 | SF_FORMAT_PCM_S8 ; - break ; - - case 2 : - psf->sf.format = SF_FORMAT_SD2 | SF_FORMAT_PCM_16 ; - break ; - - case 3 : - psf->sf.format = SF_FORMAT_SD2 | SF_FORMAT_PCM_24 ; - break ; - - default : - psf_log_printf (psf, "Bad sample size (%d)\n", rsrc->sample_size) ; - return SFE_SD2_BAD_SAMPLE_SIZE ; - } ; - - psf_log_printf (psf, "ok\n") ; - - return 0 ; -} /* parse_str_rsrc */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 1ee183e5-6b9f-4c2c-bd0a-24f35595cefc -*/ diff --git a/libs/libsndfile/src/sds.c b/libs/libsndfile/src/sds.c deleted file mode 100644 index 3769bf021c..0000000000 --- a/libs/libsndfile/src/sds.c +++ /dev/null @@ -1,993 +0,0 @@ -/* -** Copyright (C) 2002-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" -#include "float_cast.h" - -/*------------------------------------------------------------------------------ -*/ - -#define SDS_DATA_OFFSET 0x15 -#define SDS_BLOCK_SIZE 127 - -#define SDS_AUDIO_BYTES_PER_BLOCK 120 - -#define SDS_3BYTE_TO_INT_DECODE(x) (((x) & 0x7F) | (((x) & 0x7F00) >> 1) | (((x) & 0x7F0000) >> 2)) -#define SDS_INT_TO_3BYTE_ENCODE(x) (((x) & 0x7F) | (((x) << 1) & 0x7F00) | (((x) << 2) & 0x7F0000)) - -/*------------------------------------------------------------------------------ -** Typedefs. -*/ - -typedef struct tag_SDS_PRIVATE -{ int bitwidth, frames ; - int samplesperblock, total_blocks ; - - int (*reader) (SF_PRIVATE *psf, struct tag_SDS_PRIVATE *psds) ; - int (*writer) (SF_PRIVATE *psf, struct tag_SDS_PRIVATE *psds) ; - - int read_block, read_count ; - unsigned char read_data [SDS_BLOCK_SIZE] ; - int read_samples [SDS_BLOCK_SIZE / 2] ; /* Maximum samples per block */ - - int write_block, write_count ; - unsigned char write_data [SDS_BLOCK_SIZE] ; - int write_samples [SDS_BLOCK_SIZE / 2] ; /* Maximum samples per block */ -} SDS_PRIVATE ; - -/*------------------------------------------------------------------------------ -** Private static functions. -*/ - -static int sds_close (SF_PRIVATE *psf) ; - -static int sds_write_header (SF_PRIVATE *psf, int calc_length) ; -static int sds_read_header (SF_PRIVATE *psf, SDS_PRIVATE *psds) ; - -static int sds_init (SF_PRIVATE *psf, SDS_PRIVATE *psds) ; - -static sf_count_t sds_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t sds_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t sds_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t sds_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t sds_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t sds_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t sds_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t sds_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -static sf_count_t sds_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ; - -static int sds_2byte_read (SF_PRIVATE *psf, SDS_PRIVATE *psds) ; -static int sds_3byte_read (SF_PRIVATE *psf, SDS_PRIVATE *psds) ; -static int sds_4byte_read (SF_PRIVATE *psf, SDS_PRIVATE *psds) ; - -static int sds_read (SF_PRIVATE *psf, SDS_PRIVATE *psds, int *iptr, int readcount) ; - -static int sds_2byte_write (SF_PRIVATE *psf, SDS_PRIVATE *psds) ; -static int sds_3byte_write (SF_PRIVATE *psf, SDS_PRIVATE *psds) ; -static int sds_4byte_write (SF_PRIVATE *psf, SDS_PRIVATE *psds) ; - -static int sds_write (SF_PRIVATE *psf, SDS_PRIVATE *psds, const int *iptr, int writecount) ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -sds_open (SF_PRIVATE *psf) -{ SDS_PRIVATE *psds ; - int error = 0 ; - - /* Hmmmm, need this here to pass update_header_test. */ - psf->sf.frames = 0 ; - - if (! (psds = calloc (1, sizeof (SDS_PRIVATE)))) - return SFE_MALLOC_FAILED ; - psf->fdata = psds ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = sds_read_header (psf, psds))) - return error ; - } ; - - if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_SDS) - return SFE_BAD_OPEN_FORMAT ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if (sds_write_header (psf, SF_FALSE)) - return psf->error ; - - psf->write_header = sds_write_header ; - - psf_fseek (psf, SDS_DATA_OFFSET, SEEK_SET) ; - } ; - - if ((error = sds_init (psf, psds)) != 0) - return error ; - - psf->seek = sds_seek ; - psf->container_close = sds_close ; - - psf->blockwidth = 0 ; - - return error ; -} /* sds_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -sds_close (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { SDS_PRIVATE *psds ; - - if ((psds = (SDS_PRIVATE *) psf->fdata) == NULL) - { psf_log_printf (psf, "*** Bad psf->fdata ptr.\n") ; - return SFE_INTERNAL ; - } ; - - if (psds->write_count > 0) - { memset (&(psds->write_data [psds->write_count]), 0, (psds->samplesperblock - psds->write_count) * sizeof (int)) ; - psds->writer (psf, psds) ; - } ; - - sds_write_header (psf, SF_TRUE) ; - } ; - - return 0 ; -} /* sds_close */ - -static int -sds_init (SF_PRIVATE *psf, SDS_PRIVATE *psds) -{ - if (psds->bitwidth < 8 || psds->bitwidth > 28) - return (psf->error = SFE_SDS_BAD_BIT_WIDTH) ; - - if (psds->bitwidth < 14) - { psds->reader = sds_2byte_read ; - psds->writer = sds_2byte_write ; - psds->samplesperblock = SDS_AUDIO_BYTES_PER_BLOCK / 2 ; - } - else if (psds->bitwidth < 21) - { psds->reader = sds_3byte_read ; - psds->writer = sds_3byte_write ; - psds->samplesperblock = SDS_AUDIO_BYTES_PER_BLOCK / 3 ; - } - else - { psds->reader = sds_4byte_read ; - psds->writer = sds_4byte_write ; - psds->samplesperblock = SDS_AUDIO_BYTES_PER_BLOCK / 4 ; - } ; - - if (psf->mode == SFM_READ || psf->mode == SFM_RDWR) - { psf->read_short = sds_read_s ; - psf->read_int = sds_read_i ; - psf->read_float = sds_read_f ; - psf->read_double = sds_read_d ; - - /* Read first block. */ - psds->reader (psf, psds) ; - } ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { psf->write_short = sds_write_s ; - psf->write_int = sds_write_i ; - psf->write_float = sds_write_f ; - psf->write_double = sds_write_d ; - } ; - - return 0 ; -} /* sds_init */ - -static int -sds_read_header (SF_PRIVATE *psf, SDS_PRIVATE *psds) -{ unsigned char channel, bitwidth, loop_type, byte ; - unsigned short sample_no, marker ; - unsigned int samp_period, data_length, sustain_loop_start, sustain_loop_end ; - int bytesread, blockcount ; - - /* Set position to start of file to begin reading header. */ - bytesread = psf_binheader_readf (psf, "pE211", 0, &marker, &channel, &byte) ; - - if (marker != 0xF07E || byte != 0x01) - return SFE_SDS_NOT_SDS ; - - psf_log_printf (psf, "Midi Sample Dump Standard (.sds)\nF07E\n Midi Channel : %d\n", channel) ; - - bytesread += psf_binheader_readf (psf, "e213", &sample_no, &bitwidth, &samp_period) ; - - sample_no = SDS_3BYTE_TO_INT_DECODE (sample_no) ; - samp_period = SDS_3BYTE_TO_INT_DECODE (samp_period) ; - - psds->bitwidth = bitwidth ; - - psf->sf.samplerate = 1000000000 / samp_period ; - - psf_log_printf (psf, " Sample Number : %d\n" - " Bit Width : %d\n" - " Sample Rate : %d\n", - sample_no, psds->bitwidth, psf->sf.samplerate) ; - - bytesread += psf_binheader_readf (psf, "e3331", &data_length, &sustain_loop_start, &sustain_loop_end, &loop_type) ; - - data_length = SDS_3BYTE_TO_INT_DECODE (data_length) ; - - sustain_loop_start = SDS_3BYTE_TO_INT_DECODE (sustain_loop_start) ; - sustain_loop_end = SDS_3BYTE_TO_INT_DECODE (sustain_loop_end) ; - - psf_log_printf (psf, " Sustain Loop\n" - " Start : %d\n" - " End : %d\n" - " Loop Type : %d\n", - sustain_loop_start, sustain_loop_end, loop_type) ; - - psf->dataoffset = SDS_DATA_OFFSET ; - psf->datalength = psf->filelength - psf->dataoffset ; - - if (data_length != psf->filelength - psf->dataoffset) - { psf_log_printf (psf, " Datalength : %d (truncated data??? %d)\n", data_length, psf->filelength - psf->dataoffset) ; - data_length = psf->filelength - psf->dataoffset ; - } - else - psf_log_printf (psf, " Datalength : %d\n", data_length) ; - - bytesread += psf_binheader_readf (psf, "1", &byte) ; - if (byte != 0xF7) - psf_log_printf (psf, "bad end : %X\n", byte & 0xFF) ; - - for (blockcount = 0 ; bytesread < psf->filelength ; blockcount++) - { - bytesread += psf_fread (&marker, 1, 2, psf) ; - - if (marker == 0) - break ; - - psf_fseek (psf, SDS_BLOCK_SIZE - 2, SEEK_CUR) ; - bytesread += SDS_BLOCK_SIZE - 2 ; - } ; - - psf_log_printf (psf, "\nBlocks : %d\n", blockcount) ; - psds->total_blocks = blockcount ; - - psds->samplesperblock = SDS_AUDIO_BYTES_PER_BLOCK / ((psds->bitwidth + 6) / 7) ; - psf_log_printf (psf, "Samples/Block : %d\n", psds->samplesperblock) ; - - psf_log_printf (psf, "Frames : %d\n", blockcount * psds->samplesperblock) ; - - psf->sf.frames = blockcount * psds->samplesperblock ; - psds->frames = blockcount * psds->samplesperblock ; - - /* Always Mono */ - psf->sf.channels = 1 ; - psf->sf.sections = 1 ; - - /* - ** Lie to the user about PCM bit width. Always round up to - ** the next multiple of 8. - */ - switch ((psds->bitwidth + 7) / 8) - { case 1 : - psf->sf.format = SF_FORMAT_SDS | SF_FORMAT_PCM_S8 ; - break ; - - case 2 : - psf->sf.format = SF_FORMAT_SDS | SF_FORMAT_PCM_16 ; - break ; - - case 3 : - psf->sf.format = SF_FORMAT_SDS | SF_FORMAT_PCM_24 ; - break ; - - case 4 : - psf->sf.format = SF_FORMAT_SDS | SF_FORMAT_PCM_32 ; - break ; - - default : - psf_log_printf (psf, "*** Weird byte width (%d)\n", (psds->bitwidth + 7) / 8) ; - return SFE_SDS_BAD_BIT_WIDTH ; - } ; - - psf_fseek (psf, SDS_DATA_OFFSET, SEEK_SET) ; - - return 0 ; -} /* sds_read_header */ - -static int -sds_write_header (SF_PRIVATE *psf, int calc_length) -{ SDS_PRIVATE *psds ; - sf_count_t current ; - int samp_period, data_length, sustain_loop_start, sustain_loop_end ; - unsigned char loop_type = 0 ; - - if ((psds = (SDS_PRIVATE *) psf->fdata) == NULL) - { psf_log_printf (psf, "*** Bad psf->fdata ptr.\n") ; - return SFE_INTERNAL ; - } ; - - if (psf->pipeoffset > 0) - return 0 ; - - current = psf_ftell (psf) ; - - if (calc_length) - psf->sf.frames = psds->total_blocks * psds->samplesperblock + psds->write_count ; - - if (psds->write_count > 0) - { int current_count = psds->write_count ; - int current_block = psds->write_block ; - - psds->writer (psf, psds) ; - - psf_fseek (psf, -1 * SDS_BLOCK_SIZE, SEEK_CUR) ; - - psds->write_count = current_count ; - psds->write_block = current_block ; - } ; - - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - - if (psf->is_pipe == SF_FALSE) - psf_fseek (psf, 0, SEEK_SET) ; - - psf_binheader_writef (psf, "E211", 0xF07E, 0, 1) ; - - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_S8 : - psds->bitwidth = 8 ; - break ; - case SF_FORMAT_PCM_16 : - psds->bitwidth = 16 ; - break ; - case SF_FORMAT_PCM_24 : - psds->bitwidth = 24 ; - break ; - default: - return SFE_SDS_BAD_BIT_WIDTH ; - } ; - - samp_period = SDS_INT_TO_3BYTE_ENCODE (1000000000 / psf->sf.samplerate) ; - - psf_binheader_writef (psf, "e213", 0, psds->bitwidth, samp_period) ; - - data_length = SDS_INT_TO_3BYTE_ENCODE (psds->total_blocks * SDS_BLOCK_SIZE) ; - sustain_loop_start = SDS_INT_TO_3BYTE_ENCODE (0) ; - sustain_loop_end = SDS_INT_TO_3BYTE_ENCODE (psf->sf.frames) ; - - psf_binheader_writef (psf, "e33311", data_length, sustain_loop_start, sustain_loop_end, loop_type, 0xF7) ; - - /* Header construction complete so write it out. */ - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - if (psf->error) - return psf->error ; - - psf->dataoffset = psf->headindex ; - psf->datalength = psds->write_block * SDS_BLOCK_SIZE ; - - if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* sds_write_header */ - - -/*------------------------------------------------------------------------------ -*/ - -static int -sds_2byte_read (SF_PRIVATE *psf, SDS_PRIVATE *psds) -{ unsigned char *ucptr, checksum ; - unsigned int sample ; - int k ; - - psds->read_block ++ ; - psds->read_count = 0 ; - - if (psds->read_block * psds->samplesperblock > psds->frames) - { memset (psds->read_samples, 0, psds->samplesperblock * sizeof (int)) ; - return 1 ; - } ; - - if ((k = psf_fread (psds->read_data, 1, SDS_BLOCK_SIZE, psf)) != SDS_BLOCK_SIZE) - psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, SDS_BLOCK_SIZE) ; - - if (psds->read_data [0] != 0xF0) - { printf ("Error A : %02X\n", psds->read_data [0] & 0xFF) ; - } ; - - checksum = psds->read_data [1] ; - if (checksum != 0x7E) - { printf ("Error 1 : %02X\n", checksum & 0xFF) ; - } - - for (k = 2 ; k < SDS_BLOCK_SIZE - 3 ; k ++) - checksum ^= psds->read_data [k] ; - - checksum &= 0x7F ; - - if (checksum != psds->read_data [SDS_BLOCK_SIZE - 2]) - { psf_log_printf (psf, "Block %d : checksum is %02X should be %02X\n", psds->read_data [4], checksum, psds->read_data [SDS_BLOCK_SIZE - 2]) ; - } ; - - ucptr = psds->read_data + 5 ; - for (k = 0 ; k < 120 ; k += 2) - { sample = (ucptr [k] << 25) + (ucptr [k + 1] << 18) ; - psds->read_samples [k / 2] = (int) (sample - 0x80000000) ; - } ; - - return 1 ; -} /* sds_2byte_read */ - -static int -sds_3byte_read (SF_PRIVATE *psf, SDS_PRIVATE *psds) -{ unsigned char *ucptr, checksum ; - unsigned int sample ; - int k ; - - psds->read_block ++ ; - psds->read_count = 0 ; - - if (psds->read_block * psds->samplesperblock > psds->frames) - { memset (psds->read_samples, 0, psds->samplesperblock * sizeof (int)) ; - return 1 ; - } ; - - if ((k = psf_fread (psds->read_data, 1, SDS_BLOCK_SIZE, psf)) != SDS_BLOCK_SIZE) - psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, SDS_BLOCK_SIZE) ; - - if (psds->read_data [0] != 0xF0) - { printf ("Error A : %02X\n", psds->read_data [0] & 0xFF) ; - } ; - - checksum = psds->read_data [1] ; - if (checksum != 0x7E) - { printf ("Error 1 : %02X\n", checksum & 0xFF) ; - } - - for (k = 2 ; k < SDS_BLOCK_SIZE - 3 ; k ++) - checksum ^= psds->read_data [k] ; - - checksum &= 0x7F ; - - if (checksum != psds->read_data [SDS_BLOCK_SIZE - 2]) - { psf_log_printf (psf, "Block %d : checksum is %02X should be %02X\n", psds->read_data [4], checksum, psds->read_data [SDS_BLOCK_SIZE - 2]) ; - } ; - - ucptr = psds->read_data + 5 ; - for (k = 0 ; k < 120 ; k += 3) - { sample = (ucptr [k] << 25) + (ucptr [k + 1] << 18) + (ucptr [k + 2] << 11) ; - psds->read_samples [k / 3] = (int) (sample - 0x80000000) ; - } ; - - return 1 ; -} /* sds_3byte_read */ - -static int -sds_4byte_read (SF_PRIVATE *psf, SDS_PRIVATE *psds) -{ unsigned char *ucptr, checksum ; - unsigned int sample ; - int k ; - - psds->read_block ++ ; - psds->read_count = 0 ; - - if (psds->read_block * psds->samplesperblock > psds->frames) - { memset (psds->read_samples, 0, psds->samplesperblock * sizeof (int)) ; - return 1 ; - } ; - - if ((k = psf_fread (psds->read_data, 1, SDS_BLOCK_SIZE, psf)) != SDS_BLOCK_SIZE) - psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, SDS_BLOCK_SIZE) ; - - if (psds->read_data [0] != 0xF0) - { printf ("Error A : %02X\n", psds->read_data [0] & 0xFF) ; - } ; - - checksum = psds->read_data [1] ; - if (checksum != 0x7E) - { printf ("Error 1 : %02X\n", checksum & 0xFF) ; - } - - for (k = 2 ; k < SDS_BLOCK_SIZE - 3 ; k ++) - checksum ^= psds->read_data [k] ; - - checksum &= 0x7F ; - - if (checksum != psds->read_data [SDS_BLOCK_SIZE - 2]) - { psf_log_printf (psf, "Block %d : checksum is %02X should be %02X\n", psds->read_data [4], checksum, psds->read_data [SDS_BLOCK_SIZE - 2]) ; - } ; - - ucptr = psds->read_data + 5 ; - for (k = 0 ; k < 120 ; k += 4) - { sample = (ucptr [k] << 25) + (ucptr [k + 1] << 18) + (ucptr [k + 2] << 11) + (ucptr [k + 3] << 4) ; - psds->read_samples [k / 4] = (int) (sample - 0x80000000) ; - } ; - - return 1 ; -} /* sds_4byte_read */ - - -static sf_count_t -sds_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ SDS_PRIVATE *psds ; - int *iptr ; - int k, bufferlen, readcount, count ; - sf_count_t total = 0 ; - - if (psf->fdata == NULL) - return 0 ; - psds = (SDS_PRIVATE*) psf->fdata ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = sds_read (psf, psds, iptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = iptr [k] >> 16 ; - total += count ; - len -= readcount ; - } ; - - return total ; -} /* sds_read_s */ - -static sf_count_t -sds_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ SDS_PRIVATE *psds ; - int total ; - - if (psf->fdata == NULL) - return 0 ; - psds = (SDS_PRIVATE*) psf->fdata ; - - total = sds_read (psf, psds, ptr, len) ; - - return total ; -} /* sds_read_i */ - -static sf_count_t -sds_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ SDS_PRIVATE *psds ; - int *iptr ; - int k, bufferlen, readcount, count ; - sf_count_t total = 0 ; - float normfact ; - - if (psf->fdata == NULL) - return 0 ; - psds = (SDS_PRIVATE*) psf->fdata ; - - if (psf->norm_float == SF_TRUE) - normfact = 1.0 / 0x80000000 ; - else - normfact = 1.0 / (1 << psds->bitwidth) ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = sds_read (psf, psds, iptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = normfact * iptr [k] ; - total += count ; - len -= readcount ; - } ; - - return total ; -} /* sds_read_f */ - -static sf_count_t -sds_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ SDS_PRIVATE *psds ; - int *iptr ; - int k, bufferlen, readcount, count ; - sf_count_t total = 0 ; - double normfact ; - - if (psf->fdata == NULL) - return 0 ; - psds = (SDS_PRIVATE*) psf->fdata ; - - if (psf->norm_double == SF_TRUE) - normfact = 1.0 / 0x80000000 ; - else - normfact = 1.0 / (1 << psds->bitwidth) ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = sds_read (psf, psds, iptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = normfact * iptr [k] ; - total += count ; - len -= readcount ; - } ; - - return total ; -} /* sds_read_d */ - -static int -sds_read (SF_PRIVATE *psf, SDS_PRIVATE *psds, int *ptr, int len) -{ int count, total = 0 ; - - while (total < len) - { if (psds->read_block * psds->samplesperblock >= psds->frames) - { memset (&(ptr [total]), 0, (len - total) * sizeof (int)) ; - return total ; - } ; - - if (psds->read_count >= psds->samplesperblock) - psds->reader (psf, psds) ; - - count = (psds->samplesperblock - psds->read_count) ; - count = (len - total > count) ? count : len - total ; - - memcpy (&(ptr [total]), &(psds->read_samples [psds->read_count]), count * sizeof (int)) ; - total += count ; - psds->read_count += count ; - } ; - - return total ; -} /* sds_read */ - -/*============================================================================== -*/ - -static sf_count_t -sds_seek (SF_PRIVATE *psf, int mode, sf_count_t seek_from_start) -{ SDS_PRIVATE *psds ; - sf_count_t file_offset ; - int newblock, newsample ; - - if ((psds = psf->fdata) == NULL) - { psf->error = SFE_INTERNAL ; - return PSF_SEEK_ERROR ; - } ; - - if (psf->datalength < 0 || psf->dataoffset < 0) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - if (seek_from_start < 0 || seek_from_start > psf->sf.frames) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - if (mode == SFM_READ && psds->write_count > 0) - psds->writer (psf, psds) ; - - newblock = seek_from_start / psds->samplesperblock ; - newsample = seek_from_start % psds->samplesperblock ; - - switch (mode) - { case SFM_READ : - if (newblock > psds->total_blocks) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - file_offset = psf->dataoffset + newblock * SDS_BLOCK_SIZE ; - - if (psf_fseek (psf, file_offset, SEEK_SET) != file_offset) - { psf->error = SFE_SEEK_FAILED ; - return PSF_SEEK_ERROR ; - } ; - - psds->read_block = newblock ; - psds->reader (psf, psds) ; - psds->read_count = newsample ; - break ; - - case SFM_WRITE : - if (newblock > psds->total_blocks) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - file_offset = psf->dataoffset + newblock * SDS_BLOCK_SIZE ; - - if (psf_fseek (psf, file_offset, SEEK_SET) != file_offset) - { psf->error = SFE_SEEK_FAILED ; - return PSF_SEEK_ERROR ; - } ; - - psds->write_block = newblock ; - psds->reader (psf, psds) ; - psds->write_count = newsample ; - break ; - - default : - psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - break ; - } ; - - return seek_from_start ; -} /* sds_seek */ - -/*============================================================================== -*/ - -static int -sds_2byte_write (SF_PRIVATE *psf, SDS_PRIVATE *psds) -{ unsigned char *ucptr, checksum ; - unsigned int sample ; - int k ; - - psds->write_data [0] = 0xF0 ; - psds->write_data [1] = 0x7E ; - psds->write_data [2] = 0 ; /* Channel number */ - psds->write_data [3] = psds->write_block & 0x7F ; /* Packet number */ - - ucptr = psds->write_data + 5 ; - for (k = 0 ; k < 120 ; k += 2) - { sample = psds->write_samples [k / 2] ; - sample += 0x80000000 ; - ucptr [k] = (sample >> 25) & 0x7F ; - ucptr [k + 1] = (sample >> 18) & 0x7F ; - } ; - - checksum = psds->write_data [1] ; - for (k = 2 ; k < SDS_BLOCK_SIZE - 3 ; k ++) - checksum ^= psds->write_data [k] ; - checksum &= 0x7F ; - - psds->write_data [SDS_BLOCK_SIZE - 2] = checksum ; - psds->write_data [SDS_BLOCK_SIZE - 1] = 0xF7 ; - - if ((k = psf_fwrite (psds->write_data, 1, SDS_BLOCK_SIZE, psf)) != SDS_BLOCK_SIZE) - psf_log_printf (psf, "*** Warning : psf_fwrite (%d != %d).\n", k, SDS_BLOCK_SIZE) ; - - psds->write_block ++ ; - psds->write_count = 0 ; - - if (psds->write_block > psds->total_blocks) - psds->total_blocks = psds->write_block ; - psds->frames = psds->total_blocks * psds->samplesperblock ; - - return 1 ; -} /* sds_2byte_write */ - -static int -sds_3byte_write (SF_PRIVATE *psf, SDS_PRIVATE *psds) -{ unsigned char *ucptr, checksum ; - unsigned int sample ; - int k ; - - psds->write_data [0] = 0xF0 ; - psds->write_data [1] = 0x7E ; - psds->write_data [2] = 0 ; /* Channel number */ - psds->write_data [3] = psds->write_block & 0x7F ; /* Packet number */ - - ucptr = psds->write_data + 5 ; - for (k = 0 ; k < 120 ; k += 3) - { sample = psds->write_samples [k / 3] ; - sample += 0x80000000 ; - ucptr [k] = (sample >> 25) & 0x7F ; - ucptr [k + 1] = (sample >> 18) & 0x7F ; - ucptr [k + 2] = (sample >> 11) & 0x7F ; - } ; - - checksum = psds->write_data [1] ; - for (k = 2 ; k < SDS_BLOCK_SIZE - 3 ; k ++) - checksum ^= psds->write_data [k] ; - checksum &= 0x7F ; - - psds->write_data [SDS_BLOCK_SIZE - 2] = checksum ; - psds->write_data [SDS_BLOCK_SIZE - 1] = 0xF7 ; - - if ((k = psf_fwrite (psds->write_data, 1, SDS_BLOCK_SIZE, psf)) != SDS_BLOCK_SIZE) - psf_log_printf (psf, "*** Warning : psf_fwrite (%d != %d).\n", k, SDS_BLOCK_SIZE) ; - - psds->write_block ++ ; - psds->write_count = 0 ; - - if (psds->write_block > psds->total_blocks) - psds->total_blocks = psds->write_block ; - psds->frames = psds->total_blocks * psds->samplesperblock ; - - return 1 ; -} /* sds_3byte_write */ - -static int -sds_4byte_write (SF_PRIVATE *psf, SDS_PRIVATE *psds) -{ unsigned char *ucptr, checksum ; - unsigned int sample ; - int k ; - - psds->write_data [0] = 0xF0 ; - psds->write_data [1] = 0x7E ; - psds->write_data [2] = 0 ; /* Channel number */ - psds->write_data [3] = psds->write_block & 0x7F ; /* Packet number */ - - ucptr = psds->write_data + 5 ; - for (k = 0 ; k < 120 ; k += 4) - { sample = psds->write_samples [k / 4] ; - sample += 0x80000000 ; - ucptr [k] = (sample >> 25) & 0x7F ; - ucptr [k + 1] = (sample >> 18) & 0x7F ; - ucptr [k + 2] = (sample >> 11) & 0x7F ; - ucptr [k + 3] = (sample >> 4) & 0x7F ; - } ; - - checksum = psds->write_data [1] ; - for (k = 2 ; k < SDS_BLOCK_SIZE - 3 ; k ++) - checksum ^= psds->write_data [k] ; - checksum &= 0x7F ; - - psds->write_data [SDS_BLOCK_SIZE - 2] = checksum ; - psds->write_data [SDS_BLOCK_SIZE - 1] = 0xF7 ; - - if ((k = psf_fwrite (psds->write_data, 1, SDS_BLOCK_SIZE, psf)) != SDS_BLOCK_SIZE) - psf_log_printf (psf, "*** Warning : psf_fwrite (%d != %d).\n", k, SDS_BLOCK_SIZE) ; - - psds->write_block ++ ; - psds->write_count = 0 ; - - if (psds->write_block > psds->total_blocks) - psds->total_blocks = psds->write_block ; - psds->frames = psds->total_blocks * psds->samplesperblock ; - - return 1 ; -} /* sds_4byte_write */ - -static sf_count_t -sds_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ SDS_PRIVATE *psds ; - int *iptr ; - int k, bufferlen, writecount, count ; - sf_count_t total = 0 ; - - if (psf->fdata == NULL) - return 0 ; - psds = (SDS_PRIVATE*) psf->fdata ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - iptr [k] = ptr [total + k] << 16 ; - count = sds_write (psf, psds, iptr, writecount) ; - total += count ; - len -= writecount ; - } ; - - return total ; -} /* sds_write_s */ - -static sf_count_t -sds_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ SDS_PRIVATE *psds ; - int total ; - - if (psf->fdata == NULL) - return 0 ; - psds = (SDS_PRIVATE*) psf->fdata ; - - total = sds_write (psf, psds, ptr, len) ; - - return total ; -} /* sds_write_i */ - -static sf_count_t -sds_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ SDS_PRIVATE *psds ; - int *iptr ; - int k, bufferlen, writecount, count ; - sf_count_t total = 0 ; - float normfact ; - - if (psf->fdata == NULL) - return 0 ; - psds = (SDS_PRIVATE*) psf->fdata ; - - if (psf->norm_float == SF_TRUE) - normfact = 1.0 * 0x80000000 ; - else - normfact = 1.0 * (1 << psds->bitwidth) ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - iptr [k] = normfact * ptr [total + k] ; - count = sds_write (psf, psds, iptr, writecount) ; - total += count ; - len -= writecount ; - } ; - - return total ; -} /* sds_write_f */ - -static sf_count_t -sds_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ SDS_PRIVATE *psds ; - int *iptr ; - int k, bufferlen, writecount, count ; - sf_count_t total = 0 ; - double normfact ; - - if (psf->fdata == NULL) - return 0 ; - psds = (SDS_PRIVATE*) psf->fdata ; - - if (psf->norm_double == SF_TRUE) - normfact = 1.0 * 0x80000000 ; - else - normfact = 1.0 * (1 << psds->bitwidth) ; - - iptr = psf->u.ibuf ; - bufferlen = ARRAY_LEN (psf->u.ibuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : len ; - for (k = 0 ; k < writecount ; k++) - iptr [k] = normfact * ptr [total + k] ; - count = sds_write (psf, psds, iptr, writecount) ; - total += count ; - len -= writecount ; - } ; - - return total ; -} /* sds_write_d */ - -static int -sds_write (SF_PRIVATE *psf, SDS_PRIVATE *psds, const int *ptr, int len) -{ int count, total = 0 ; - - while (total < len) - { count = psds->samplesperblock - psds->write_count ; - if (count > len - total) - count = len - total ; - - memcpy (&(psds->write_samples [psds->write_count]), &(ptr [total]), count * sizeof (int)) ; - total += count ; - psds->write_count += count ; - - if (psds->write_count >= psds->samplesperblock) - psds->writer (psf, psds) ; - } ; - - return total ; -} /* sds_write */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: d5d26aa3-368c-4ca6-bb85-377e5a2578cc -*/ diff --git a/libs/libsndfile/src/sf_unistd.h b/libs/libsndfile/src/sf_unistd.h deleted file mode 100644 index f24ae67e98..0000000000 --- a/libs/libsndfile/src/sf_unistd.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -** Copyright (C) 2002-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -/* Some defines that microsoft 'forgot' to implement. */ - -#ifndef S_IRWXU -#define S_IRWXU 0000700 /* rwx, owner */ -#endif - -#ifndef S_IRUSR -#define S_IRUSR 0000400 /* read permission, owner */ -#endif - -#ifndef S_IWUSR -#define S_IWUSR 0000200 /* write permission, owner */ -#endif - -#ifndef S_IXUSR -#define S_IXUSR 0000100 /* execute/search permission, owner */ -#endif - -#define S_IRWXG 0000070 /* rwx, group */ -#define S_IRGRP 0000040 /* read permission, group */ -#define S_IWGRP 0000020 /* write permission, grougroup */ -#define S_IXGRP 0000010 /* execute/search permission, group */ - -#define S_IRWXO 0000007 /* rwx, other */ -#define S_IROTH 0000004 /* read permission, other */ -#define S_IWOTH 0000002 /* write permission, other */ -#define S_IXOTH 0000001 /* execute/search permission, other */ - -#ifndef S_ISFIFO -#define S_ISFIFO(mode) (((mode) & _S_IFMT) == _S_IFIFO) -#endif - -#ifndef S_ISREG -#define S_ISREG(mode) (((mode) & _S_IFREG) == _S_IFREG) -#endif - -/* -** Don't know if these are still needed. -** -** #define _IFMT _S_IFMT -** #define _IFREG _S_IFREG -*/ -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 253aea6d-6299-46fd-8d06-bc5f6224c8fe -*/ diff --git a/libs/libsndfile/src/sfconfig.h b/libs/libsndfile/src/sfconfig.h deleted file mode 100644 index f12df6d787..0000000000 --- a/libs/libsndfile/src/sfconfig.h +++ /dev/null @@ -1,108 +0,0 @@ -/* -** Copyright (C) 2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -/* -** Autoconf leaves many config parameters undefined. -** Here we change then from being undefined to defining them to 0. -** This allows things like: -** -** #if HAVE_CONFIG_PARAM -** -** and -** -** if (HAVE_CONFIG_PARAM) -** do_something () ; -*/ - -#ifndef SFCONFIG_H -#define SFCONFIG_H - -/* Include the Autoconf generated file. */ -#include "config.h" - -/* Now fiddle the values. */ - -#ifndef HAVE_ALSA_ASOUNDLIB_H -#define HAVE_ALSA_ASOUNDLIB_H 0 -#endif - -#ifndef HAVE_BYTESWAP_H -#define HAVE_BYTESWAP_H 0 -#endif - -#ifndef HAVE_DECL_S_IRGRP -#define HAVE_DECL_S_IRGRP 0 -#endif - -#ifndef HAVE_ENDIAN_H -#define HAVE_ENDIAN_H 0 -#endif - -#ifndef HAVE_FSYNC -#define HAVE_FSYNC 0 -#endif - -#ifndef HAVE_LOCALE_H -#define HAVE_LOCALE_H 0 -#endif - -#ifndef HAVE_LRINT -#define HAVE_LRINT 0 -#endif - -#ifndef HAVE_LRINTF -#define HAVE_LRINTF 0 -#endif - -#ifndef HAVE_MMAP -#define HAVE_MMAP 0 -#endif - -#ifndef HAVE_PREAD -#define HAVE_PREAD 0 -#endif - -#ifndef HAVE_PWRITE -#define HAVE_PWRITE 0 -#endif - -#ifndef HAVE_SETLOCALE -#define HAVE_SETLOCALE 0 -#endif - -#ifndef HAVE_SQLITE3 -#define HAVE_SQLITE3 0 -#endif - -#ifndef HAVE_STDINT_H -#define HAVE_STDINT_H 0 -#endif - -#ifndef HAVE_UNISTD_H -#define HAVE_UNISTD_H 0 -#endif - -#endif - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 2df2316e-8f9d-4860-bba7-f3c16c63eed3 -*/ diff --git a/libs/libsndfile/src/sfendian.h b/libs/libsndfile/src/sfendian.h deleted file mode 100644 index efc1c1060a..0000000000 --- a/libs/libsndfile/src/sfendian.h +++ /dev/null @@ -1,256 +0,0 @@ -/* -** Copyright (C) 1999-2006 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#if HAVE_STDINT_H -#include -#elif HAVE_INTTYPES_H -#include -#endif - -#if (defined (SIZEOF_INT64_T) && (SIZEOF_INT64_T == 8)) -/* Good, we have int64_t. */ -#elif (defined (SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 8)) -typedef long long int64_t ; -#elif (defined (SIZEOF_LONG) && (SIZEOF_LONG == 8)) -typedef long int64_t ; -#elif (defined (WIN32) || defined (_WIN32)) -typedef __int64 int64_t ; -#else -#error "No 64 bit integer type." -#endif - -#if HAVE_BYTESWAP_H - -#include - -#define ENDSWAP_SHORT(x) ((short) bswap_16 (x)) -#define ENDSWAP_INT(x) ((int) bswap_32 (x)) - -#else - -#define ENDSWAP_SHORT(x) ((((x) >> 8) & 0xFF) + (((x) & 0xFF) << 8)) -#define ENDSWAP_INT(x) ((((x) >> 24) & 0xFF) + (((x) >> 8) & 0xFF00) + (((x) & 0xFF00) << 8) + (((x) & 0xFF) << 24)) - -#endif - -/* -** Many file types (ie WAV, AIFF) use sets of four consecutive bytes as a -** marker indicating different sections of the file. -** The following MAKE_MARKER macro allows th creation of integer constants -** for these markers. -*/ - -#if (CPU_IS_LITTLE_ENDIAN == 1) - #define MAKE_MARKER(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((d) << 24)) -#elif (CPU_IS_BIG_ENDIAN == 1) - #define MAKE_MARKER(a,b,c,d) (((a) << 24) | ((b) << 16) | ((c) << 8) | (d)) -#else - #error "Target CPU endian-ness unknown. May need to hand edit src/sfconfig.h" -#endif - -/* -** Macros to handle reading of data of a specific endian-ness into host endian -** shorts and ints. The single input is an unsigned char* pointer to the start -** of the object. There are two versions of each macro as we need to deal with -** both big and little endian CPUs. -*/ - -#if (CPU_IS_LITTLE_ENDIAN == 1) - #define LES2H_SHORT(x) (x) - #define LEI2H_INT(x) (x) - - #define BES2H_SHORT(x) ENDSWAP_SHORT (x) - #define BEI2H_INT(x) ENDSWAP_INT (x) - - #define H2BE_SHORT(x) ENDSWAP_SHORT (x) - #define H2BE_INT(x) ENDSWAP_INT (x) - -#elif (CPU_IS_BIG_ENDIAN == 1) - #define LES2H_SHORT(x) ENDSWAP_SHORT (x) - #define LEI2H_INT(x) ENDSWAP_INT (x) - - #define BES2H_SHORT(x) (x) - #define BEI2H_INT(x) (x) - - #define H2LE_SHORT(x) ENDSWAP_SHORT (x) - #define H2LE_INT(x) ENDSWAP_INT (x) - -#else - #error "Target CPU endian-ness unknown. May need to hand edit src/sfconfig.h" -#endif - -#define LET2H_SHORT_PTR(x) ((x) [1] + ((x) [2] << 8)) -#define LET2H_INT_PTR(x) (((x) [0] << 8) + ((x) [1] << 16) + ((x) [2] << 24)) - -#define BET2H_SHORT_PTR(x) (((x) [0] << 8) + (x) [1]) -#define BET2H_INT_PTR(x) (((x) [0] << 24) + ((x) [1] << 16) + ((x) [2] << 8)) - -/*----------------------------------------------------------------------------------------------- -** Generic functions for performing endian swapping on integer arrays. -*/ - -static inline void -endswap_short_array (short *ptr, int len) -{ short temp ; - - while (--len >= 0) - { temp = ptr [len] ; - ptr [len] = ENDSWAP_SHORT (temp) ; - } ; -} /* endswap_short_array */ - -static inline void -endswap_short_copy (short *dest, const short *src, int len) -{ - while (--len >= 0) - { dest [len] = ENDSWAP_SHORT (src [len]) ; - } ; -} /* endswap_short_copy */ - -static inline void -endswap_int_array (int *ptr, int len) -{ int temp ; - - while (--len >= 0) - { temp = ptr [len] ; - ptr [len] = ENDSWAP_INT (temp) ; - } ; -} /* endswap_int_array */ - -static inline void -endswap_int_copy (int *dest, const int *src, int len) -{ - while (--len >= 0) - { dest [len] = ENDSWAP_INT (src [len]) ; - } ; -} /* endswap_int_copy */ - -/*======================================================================================== -*/ - -#if (HAVE_BYTESWAP_H && defined (SIZEOF_INT64_T) && (SIZEOF_INT64_T == 8)) - -static inline void -endswap_int64_t_array (int64_t *ptr, int len) -{ int64_t value ; - - while (--len >= 0) - { value = ptr [len] ; - ptr [len] = bswap_64 (value) ; - } ; -} /* endswap_int64_t_array */ - -static inline void -endswap_int64_t_copy (int64_t *dest, const int64_t *src, int len) -{ int64_t value ; - - while (--len >= 0) - { value = src [len] ; - dest [len] = bswap_64 (value) ; - } ; -} /* endswap_int64_t_copy */ - -#else - -static inline void -endswap_int64_t_array (int64_t *ptr, int len) -{ unsigned char *ucptr, temp ; - - ucptr = (unsigned char *) ptr ; - ucptr += 8 * len ; - while (--len >= 0) - { ucptr -= 8 ; - - temp = ucptr [0] ; - ucptr [0] = ucptr [7] ; - ucptr [7] = temp ; - - temp = ucptr [1] ; - ucptr [1] = ucptr [6] ; - ucptr [6] = temp ; - - temp = ucptr [2] ; - ucptr [2] = ucptr [5] ; - ucptr [5] = temp ; - - temp = ucptr [3] ; - ucptr [3] = ucptr [4] ; - ucptr [4] = temp ; - } ; -} /* endswap_int64_t_array */ - -static inline void -endswap_int64_t_copy (int64_t *dest, const int64_t *src, int len) -{ const unsigned char *psrc ; - unsigned char *pdest ; - - if (dest == src) - { endswap_int64_t_array (dest, len) ; - return ; - } ; - - psrc = ((const unsigned char *) src) + 8 * len ; - pdest = ((unsigned char *) dest) + 8 * len ; - while (--len >= 0) - { psrc -= 8 ; - pdest -= 8 ; - - pdest [0] = psrc [7] ; - pdest [2] = psrc [5] ; - pdest [4] = psrc [3] ; - pdest [6] = psrc [1] ; - pdest [7] = psrc [0] ; - pdest [1] = psrc [6] ; - pdest [3] = psrc [4] ; - pdest [5] = psrc [2] ; - } ; -} /* endswap_int64_t_copy */ - -#endif - -/* A couple of wrapper functions. */ - -static inline void -endswap_float_array (float *ptr, int len) -{ endswap_int_array ((void *) ptr, len) ; -} /* endswap_float_array */ - -static inline void -endswap_double_array (double *ptr, int len) -{ endswap_int64_t_array ((void *) ptr, len) ; -} /* endswap_double_array */ - -static inline void -endswap_float_copy (float *dest, const float *src, int len) -{ endswap_int_copy ((int *) dest, (const int *) src, len) ; -} /* endswap_float_copy */ - -static inline void -endswap_double_copy (double *dest, const double *src, int len) -{ endswap_int64_t_copy ((int64_t *) dest, (const int64_t *) src, len) ; -} /* endswap_double_copy */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: f0c5cd54-42d3-4237-90ec-11fe24995de7 -*/ diff --git a/libs/libsndfile/src/sndfile.c b/libs/libsndfile/src/sndfile.c deleted file mode 100644 index 8de582fec0..0000000000 --- a/libs/libsndfile/src/sndfile.c +++ /dev/null @@ -1,2709 +0,0 @@ -/* -** Copyright (C) 1999-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -#define SNDFILE_MAGICK 0x1234C0DE - -typedef struct -{ int error ; - const char *str ; -} ErrorStruct ; - -static -ErrorStruct SndfileErrors [] = -{ - /* Public error values and their associated strings. */ - { SF_ERR_NO_ERROR , "No Error." }, - { SF_ERR_UNRECOGNISED_FORMAT , "File opened for read. Format not recognised." }, - { SF_ERR_SYSTEM , "System error." /* Often replaced. */ }, - { SF_ERR_MALFORMED_FILE , "Supported file format but file is malformed." }, - { SF_ERR_UNSUPPORTED_ENCODING , "Supported file format but unsupported encoding." }, - - /* Private error values and their associated strings. */ - { SFE_BAD_FILE , "File does not exist or is not a regular file (possibly a pipe?)." }, - { SFE_BAD_FILE_READ , "File exists but no data could be read." }, - { SFE_OPEN_FAILED , "Could not open file." }, - { SFE_BAD_SNDFILE_PTR , "Not a valid SNDFILE* pointer." }, - { SFE_BAD_SF_INFO_PTR , "NULL SF_INFO pointer passed to libsndfile." }, - { SFE_BAD_SF_INCOMPLETE , "SF_PRIVATE struct incomplete and end of header parsing." }, - { SFE_BAD_FILE_PTR , "Bad FILE pointer." }, - { SFE_BAD_INT_PTR , "Internal error, Bad pointer." }, - { SFE_BAD_STAT_SIZE , "Error : software was misconfigured at compile time (sizeof statbuf.st_size)." }, - - { SFE_MALLOC_FAILED , "Internal malloc () failed." }, - { SFE_UNIMPLEMENTED , "File contains data in an unimplemented format." }, - { SFE_BAD_READ_ALIGN , "Attempt to read a non-integer number of channels." }, - { SFE_BAD_WRITE_ALIGN , "Attempt to write a non-integer number of channels." }, - { SFE_UNKNOWN_FORMAT , "File contains data in an unknown format." }, - { SFE_NOT_READMODE , "Read attempted on file currently open for write." }, - { SFE_NOT_WRITEMODE , "Write attempted on file currently open for read." }, - { SFE_BAD_MODE_RW , "This file format does not support read/write mode." }, - { SFE_BAD_SF_INFO , "Internal error : SF_INFO struct incomplete." }, - { SFE_BAD_OFFSET , "Error : supplied offset beyond end of file." }, - { SFE_NO_EMBED_SUPPORT , "Error : embedding not supported for this file format." }, - { SFE_NO_EMBEDDED_RDWR , "Error : cannot open embedded file read/write." }, - { SFE_NO_PIPE_WRITE , "Error : this file format does not support pipe write." }, - { SFE_BAD_RDWR_FORMAT , "Attempted to open read only format for RDWR." }, - { SFE_BAD_VIRTUAL_IO , "Error : bad pointer on SF_VIRTUAL_IO struct." }, - - { SFE_INTERLEAVE_MODE , "Attempt to write to file with non-interleaved data." }, - { SFE_INTERLEAVE_SEEK , "Bad karma in seek during interleave read operation." }, - { SFE_INTERLEAVE_READ , "Bad karma in read during interleave read operation." }, - - { SFE_INTERNAL , "Unspecified internal error." }, - { SFE_BAD_CONTROL_CMD , "Bad command passed to function sf_command()." }, - { SFE_BAD_ENDIAN , "Bad endian-ness. Try default endian-ness" }, - { SFE_CHANNEL_COUNT , "Too many channels specified." }, - - { SFE_BAD_SEEK , "Internal psf_fseek() failed." }, - { SFE_NOT_SEEKABLE , "Seek attempted on unseekable file type." }, - { SFE_AMBIGUOUS_SEEK , "Error : combination of file open mode and seek command is ambiguous." }, - { SFE_WRONG_SEEK , "Error : invalid seek parameters." }, - { SFE_SEEK_FAILED , "Error : parameters OK, but psf_seek() failed." }, - - { SFE_BAD_OPEN_MODE , "Error : bad mode parameter for file open." }, - { SFE_OPEN_PIPE_RDWR , "Error : attempt toopen a pipe in read/write mode." }, - { SFE_RDWR_POSITION , "Error on RDWR position (cryptic)." }, - { SFE_RDWR_BAD_HEADER , "Error : Cannot open file in read/write mode due to string data in header." }, - - { SFE_STR_NO_SUPPORT , "Error : File type does not support string data." }, - { SFE_STR_NOT_WRITE , "Error : Trying to set a string when file is not in write mode." }, - { SFE_STR_MAX_DATA , "Error : Maximum string data storage reached." }, - { SFE_STR_MAX_COUNT , "Error : Maximum string data count reached." }, - { SFE_STR_BAD_TYPE , "Error : Bad string data type." }, - { SFE_STR_NO_ADD_END , "Error : file type does not support strings added at end of file." }, - { SFE_STR_BAD_STRING , "Error : bad string." }, - { SFE_STR_WEIRD , "Error : Weird string error." }, - - { SFE_WAV_NO_RIFF , "Error in WAV file. No 'RIFF' chunk marker." }, - { SFE_WAV_NO_WAVE , "Error in WAV file. No 'WAVE' chunk marker." }, - { SFE_WAV_NO_FMT , "Error in WAV file. No 'fmt ' chunk marker." }, - { SFE_WAV_FMT_SHORT , "Error in WAV file. Short 'fmt ' chunk." }, - - { SFE_WAV_BAD_FACT , "Error in WAV file. 'fact' chunk out of place." }, - { SFE_WAV_BAD_PEAK , "Error in WAV file. Bad 'PEAK' chunk." }, - { SFE_WAV_PEAK_B4_FMT , "Error in WAV file. 'PEAK' chunk found before 'fmt ' chunk." }, - - { SFE_WAV_BAD_FORMAT , "Error in WAV file. Errors in 'fmt ' chunk." }, - { SFE_WAV_BAD_BLOCKALIGN , "Error in WAV file. Block alignment in 'fmt ' chunk is incorrect." }, - { SFE_WAV_NO_DATA , "Error in WAV file. No 'data' chunk marker." }, - { SFE_WAV_BAD_LIST , "Error in WAV file. Malformed LIST chunk." }, - { SFE_WAV_UNKNOWN_CHUNK , "Error in WAV file. File contains an unknown chunk marker." }, - { SFE_WAV_WVPK_DATA , "Error in WAV file. Data is in WAVPACK format." }, - - { SFE_WAV_ADPCM_NOT4BIT , "Error in ADPCM WAV file. Invalid bit width." }, - { SFE_WAV_ADPCM_CHANNELS , "Error in ADPCM WAV file. Invalid number of channels." }, - { SFE_WAV_GSM610_FORMAT , "Error in GSM610 WAV file. Invalid format chunk." }, - - { SFE_AIFF_NO_FORM , "Error in AIFF file, bad 'FORM' marker." }, - { SFE_AIFF_AIFF_NO_FORM , "Error in AIFF file, 'AIFF' marker without 'FORM'." }, - { SFE_AIFF_COMM_NO_FORM , "Error in AIFF file, 'COMM' marker without 'FORM'." }, - { SFE_AIFF_SSND_NO_COMM , "Error in AIFF file, 'SSND' marker without 'COMM'." }, - { SFE_AIFF_UNKNOWN_CHUNK , "Error in AIFF file, unknown chunk." }, - { SFE_AIFF_COMM_CHUNK_SIZE, "Error in AIFF file, bad 'COMM' chunk size." }, - { SFE_AIFF_BAD_COMM_CHUNK , "Error in AIFF file, bad 'COMM' chunk." }, - { SFE_AIFF_PEAK_B4_COMM , "Error in AIFF file. 'PEAK' chunk found before 'COMM' chunk." }, - { SFE_AIFF_BAD_PEAK , "Error in AIFF file. Bad 'PEAK' chunk." }, - { SFE_AIFF_NO_SSND , "Error in AIFF file, bad 'SSND' chunk." }, - { SFE_AIFF_NO_DATA , "Error in AIFF file, no sound data." }, - { SFE_AIFF_RW_SSND_NOT_LAST, "Error in AIFF file, RDWR only possible if SSND chunk at end of file." }, - - { SFE_AU_UNKNOWN_FORMAT , "Error in AU file, unknown format." }, - { SFE_AU_NO_DOTSND , "Error in AU file, missing '.snd' or 'dns.' marker." }, - { SFE_AU_EMBED_BAD_LEN , "Embedded AU file with unknown length." }, - - { SFE_RAW_READ_BAD_SPEC , "Error while opening RAW file for read. Must specify format and channels.\n" - "Possibly trying to open unsupported format." - }, - { SFE_RAW_BAD_BITWIDTH , "Error. RAW file bitwidth must be a multiple of 8." }, - { SFE_RAW_BAD_FORMAT , "Error. Bad format field in SF_INFO struct when openning a RAW file for read." }, - - { SFE_PAF_NO_MARKER , "Error in PAF file, no marker." }, - { SFE_PAF_VERSION , "Error in PAF file, bad version." }, - { SFE_PAF_UNKNOWN_FORMAT , "Error in PAF file, unknown format." }, - { SFE_PAF_SHORT_HEADER , "Error in PAF file. File shorter than minimal header." }, - - { SFE_SVX_NO_FORM , "Error in 8SVX / 16SV file, no 'FORM' marker." }, - { SFE_SVX_NO_BODY , "Error in 8SVX / 16SV file, no 'BODY' marker." }, - { SFE_SVX_NO_DATA , "Error in 8SVX / 16SV file, no sound data." }, - { SFE_SVX_BAD_COMP , "Error in 8SVX / 16SV file, unsupported compression format." }, - { SFE_SVX_BAD_NAME_LENGTH , "Error in 8SVX / 16SV file, NAME chunk too long." }, - - { SFE_NIST_BAD_HEADER , "Error in NIST file, bad header." }, - { SFE_NIST_CRLF_CONVERISON, "Error : NIST file damaged by Windows CR -> CRLF conversion process." }, - { SFE_NIST_BAD_ENCODING , "Error in NIST file, unsupported compression format." }, - - { SFE_VOC_NO_CREATIVE , "Error in VOC file, no 'Creative Voice File' marker." }, - { SFE_VOC_BAD_FORMAT , "Error in VOC file, bad format." }, - { SFE_VOC_BAD_VERSION , "Error in VOC file, bad version number." }, - { SFE_VOC_BAD_MARKER , "Error in VOC file, bad marker in file." }, - { SFE_VOC_BAD_SECTIONS , "Error in VOC file, incompatible VOC sections." }, - { SFE_VOC_MULTI_SAMPLERATE, "Error in VOC file, more than one sample rate defined." }, - { SFE_VOC_MULTI_SECTION , "Unimplemented VOC file feature, file contains multiple sound sections." }, - { SFE_VOC_MULTI_PARAM , "Error in VOC file, file contains multiple bit or channel widths." }, - { SFE_VOC_SECTION_COUNT , "Error in VOC file, too many sections." }, - { SFE_VOC_NO_PIPE , "Error : not able to operate on VOC files over a pipe." }, - - { SFE_IRCAM_NO_MARKER , "Error in IRCAM file, bad IRCAM marker." }, - { SFE_IRCAM_BAD_CHANNELS , "Error in IRCAM file, bad channel count." }, - { SFE_IRCAM_UNKNOWN_FORMAT, "Error in IRCAM file, unknow encoding format." }, - - { SFE_W64_64_BIT , "Error in W64 file, file contains 64 bit offset." }, - - { SFE_W64_NO_RIFF , "Error in W64 file. No 'riff' chunk marker." }, - { SFE_W64_NO_WAVE , "Error in W64 file. No 'wave' chunk marker." }, - { SFE_W64_NO_FMT , "Error in W64 file. No 'fmt ' chunk marker." }, - { SFE_W64_NO_DATA , "Error in W64 file. No 'data' chunk marker." }, - - { SFE_W64_FMT_SHORT , "Error in W64 file. Short 'fmt ' chunk." }, - { SFE_W64_FMT_TOO_BIG , "Error in W64 file. 'fmt ' chunk too large." }, - - { SFE_W64_ADPCM_NOT4BIT , "Error in ADPCM W64 file. Invalid bit width." }, - { SFE_W64_ADPCM_CHANNELS , "Error in ADPCM W64 file. Invalid number of channels." }, - { SFE_W64_GSM610_FORMAT , "Error in GSM610 W64 file. Invalid format chunk." }, - - { SFE_MAT4_BAD_NAME , "Error in MAT4 file. No variable name." }, - { SFE_MAT4_NO_SAMPLERATE , "Error in MAT4 file. No sample rate." }, - { SFE_MAT4_ZERO_CHANNELS , "Error in MAT4 file. Channel count is zero." }, - - { SFE_MAT5_BAD_ENDIAN , "Error in MAT5 file. Not able to determine endian-ness." }, - { SFE_MAT5_NO_BLOCK , "Error in MAT5 file. Bad block structure." }, - { SFE_MAT5_SAMPLE_RATE , "Error in MAT5 file. Not able to determine sample rate." }, - { SFE_MAT5_ZERO_CHANNELS , "Error in MAT5 file. Channel count is zero." }, - - { SFE_PVF_NO_PVF1 , "Error in PVF file. No PVF1 marker." }, - { SFE_PVF_BAD_HEADER , "Error in PVF file. Bad header." }, - { SFE_PVF_BAD_BITWIDTH , "Error in PVF file. Bad bit width." }, - - { SFE_XI_BAD_HEADER , "Error in XI file. Bad header." }, - { SFE_XI_EXCESS_SAMPLES , "Error in XI file. Excess samples in file." }, - { SFE_XI_NO_PIPE , "Error : not able to operate on XI files over a pipe." }, - - { SFE_HTK_NO_PIPE , "Error : not able to operate on HTK files over a pipe." }, - - { SFE_SDS_NOT_SDS , "Error : not an SDS file." }, - { SFE_SDS_BAD_BIT_WIDTH , "Error : bad bit width for SDS file." }, - - { SFE_SD2_FD_DISALLOWED , "Error : cannot open SD2 file without a file name." }, - { SFE_SD2_BAD_DATA_OFFSET , "Error : bad data offset." }, - { SFE_SD2_BAD_MAP_OFFSET , "Error : bad map offset." }, - { SFE_SD2_BAD_DATA_LENGTH , "Error : bad data length." }, - { SFE_SD2_BAD_MAP_LENGTH , "Error : bad map length." }, - { SFE_SD2_BAD_RSRC , "Error : bad resource fork." }, - { SFE_SD2_BAD_SAMPLE_SIZE , "Error : bad sample size." }, - - { SFE_FLAC_BAD_HEADER , "Error : bad flac header." }, - { SFE_FLAC_NEW_DECODER , "Error : problem while creating flac decoder." }, - { SFE_FLAC_INIT_DECODER , "Error : problem while initialization of the flac decoder." }, - { SFE_FLAC_LOST_SYNC , "Error : flac decoder lost sync." }, - { SFE_FLAC_BAD_SAMPLE_RATE, "Error : flac does not support this sample rate." }, - { SFE_FLAC_UNKOWN_ERROR , "Error : unkown error in flac decoder." }, - - { SFE_DWVW_BAD_BITWIDTH , "Error : Bad bit width for DWVW encoding. Must be 12, 16 or 24." }, - { SFE_G72X_NOT_MONO , "Error : G72x encoding does not support more than 1 channel." }, - - { SFE_MAX_ERROR , "Maximum error number." }, - { SFE_MAX_ERROR + 1 , NULL } -} ; - -/*------------------------------------------------------------------------------ -*/ - -static int format_from_extension (SF_PRIVATE *psf) ; -static int guess_file_type (SF_PRIVATE *psf) ; -static int validate_sfinfo (SF_INFO *sfinfo) ; -static int validate_psf (SF_PRIVATE *psf) ; -static void save_header_info (SF_PRIVATE *psf) ; -static void copy_filename (SF_PRIVATE *psf, const char *path) ; -static int psf_close (SF_PRIVATE *psf) ; -static int psf_open_file (SF_PRIVATE *psf, int mode, SF_INFO *sfinfo) ; - -static int try_resource_fork (SF_PRIVATE * psf, int mode) ; - -/*------------------------------------------------------------------------------ -** Private (static) variables. -*/ - -static int sf_errno = 0 ; -static char sf_logbuffer [SF_BUFFER_LEN] = { 0 } ; -static char sf_syserr [SF_SYSERR_LEN] = { 0 } ; - -/*------------------------------------------------------------------------------ -*/ - -#define VALIDATE_SNDFILE_AND_ASSIGN_PSF(a,b,c) \ - { if (! (a)) \ - { sf_errno = SFE_BAD_SNDFILE_PTR ; \ - return 0 ; \ - } ; \ - (b) = (SF_PRIVATE*) (a) ; \ - if ((b)->virtual_io == SF_FALSE && \ - psf_file_valid (b) == 0) \ - { (b)->error = SFE_BAD_FILE_PTR ; \ - return 0 ; \ - } ; \ - if ((b)->Magick != SNDFILE_MAGICK) \ - { (b)->error = SFE_BAD_SNDFILE_PTR ; \ - return 0 ; \ - } ; \ - if (c) (b)->error = 0 ; \ - } - -/*------------------------------------------------------------------------------ -** Public functions. -*/ - -SNDFILE* -sf_open (const char *path, int mode, SF_INFO *sfinfo) -{ SF_PRIVATE *psf ; - int error = 0 ; - - if ((psf = calloc (1, sizeof (SF_PRIVATE))) == NULL) - { sf_errno = SFE_MALLOC_FAILED ; - return NULL ; - } ; - - memset (psf, 0, sizeof (SF_PRIVATE)) ; - psf_init_files (psf) ; - - psf_log_printf (psf, "File : %s\n", path) ; - - copy_filename (psf, path) ; - - if (strcmp (path, "-") == 0) - error = psf_set_stdio (psf, mode) ; - else - error = psf_fopen (psf, path, mode) ; - - if (error == 0) - error = psf_open_file (psf, mode, sfinfo) ; - - if (error) - { sf_errno = error ; - if (error == SFE_SYSTEM) - LSF_SNPRINTF (sf_syserr, sizeof (sf_syserr), "%s", psf->syserr) ; - LSF_SNPRINTF (sf_logbuffer, sizeof (sf_logbuffer), "%s", psf->logbuffer) ; - psf_close (psf) ; - return NULL ; - } ; - - memcpy (sfinfo, &(psf->sf), sizeof (SF_INFO)) ; - - return (SNDFILE*) psf ; -} /* sf_open */ - -SNDFILE* -sf_open_fd (int fd, int mode, SF_INFO *sfinfo, int close_desc) -{ SF_PRIVATE *psf ; - int error ; - - if ((sfinfo->format & SF_FORMAT_TYPEMASK) == SF_FORMAT_SD2) - { sf_errno = SFE_SD2_FD_DISALLOWED ; - return NULL ; - } ; - - if ((psf = calloc (1, sizeof (SF_PRIVATE))) == NULL) - { sf_errno = SFE_MALLOC_FAILED ; - return NULL ; - } ; - - psf_init_files (psf) ; - - psf_set_file (psf, fd) ; - psf->is_pipe = psf_is_pipe (psf) ; - psf->fileoffset = psf_ftell (psf) ; - - if (! close_desc) - psf->do_not_close_descriptor = SF_TRUE ; - - error = psf_open_file (psf, mode, sfinfo) ; - - if (error) - { sf_errno = error ; - if (error == SFE_SYSTEM) - LSF_SNPRINTF (sf_syserr, sizeof (sf_syserr), "%s", psf->syserr) ; - LSF_SNPRINTF (sf_logbuffer, sizeof (sf_logbuffer), "%s", psf->logbuffer) ; - psf_close (psf) ; - return NULL ; - } ; - - memcpy (sfinfo, &(psf->sf), sizeof (SF_INFO)) ; - - return (SNDFILE*) psf ; -} /* sf_open_fd */ - -SNDFILE* -sf_open_virtual (SF_VIRTUAL_IO *sfvirtual, int mode, SF_INFO *sfinfo, void *user_data) -{ SF_PRIVATE *psf ; - int error = 0 ; - - /* Make sure we have a valid set ot virtual pointers. */ - if (sfvirtual->get_filelen == NULL || sfvirtual->seek == NULL || sfvirtual->tell == NULL) - { sf_errno = SFE_BAD_VIRTUAL_IO ; - LSF_SNPRINTF (sf_logbuffer, sizeof (sf_logbuffer), "Bad vio_get_filelen / vio_seek / vio_tell in SF_VIRTUAL_IO struct.\n") ; - return NULL ; - } ; - - if ((mode == SFM_READ || mode == SFM_RDWR) && sfvirtual->read == NULL) - { sf_errno = SFE_BAD_VIRTUAL_IO ; - LSF_SNPRINTF (sf_logbuffer, sizeof (sf_logbuffer), "Bad vio_read in SF_VIRTUAL_IO struct.\n") ; - return NULL ; - } ; - - if ((mode == SFM_WRITE || mode == SFM_RDWR) && sfvirtual->write == NULL) - { sf_errno = SFE_BAD_VIRTUAL_IO ; - LSF_SNPRINTF (sf_logbuffer, sizeof (sf_logbuffer), "Bad vio_write in SF_VIRTUAL_IO struct.\n") ; - return NULL ; - } ; - - if ((psf = calloc (1, sizeof (SF_PRIVATE))) == NULL) - { sf_errno = SFE_MALLOC_FAILED ; - return NULL ; - } ; - - psf_init_files (psf) ; - - psf->virtual_io = SF_TRUE ; - psf->vio = *sfvirtual ; - psf->vio_user_data = user_data ; - - psf->mode = mode ; - - error = psf_open_file (psf, mode, sfinfo) ; - - if (error) - { sf_errno = error ; - if (error == SFE_SYSTEM) - LSF_SNPRINTF (sf_syserr, sizeof (sf_syserr), "%s", psf->syserr) ; - LSF_SNPRINTF (sf_logbuffer, sizeof (sf_logbuffer), "%s", psf->logbuffer) ; - psf_close (psf) ; - return NULL ; - } ; - - memcpy (sfinfo, &(psf->sf), sizeof (SF_INFO)) ; - - return (SNDFILE*) psf ; -} /* sf_open_virtual */ - -int -sf_close (SNDFILE *sndfile) -{ SF_PRIVATE *psf ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - return psf_close (psf) ; -} /* sf_close */ - -void -sf_write_sync (SNDFILE *sndfile) -{ SF_PRIVATE *psf ; - - if ((psf = (SF_PRIVATE *) sndfile) == NULL) - return ; - - psf_fsync (psf) ; - - return ; -} /* sf_write_sync */ - -/*============================================================================== -*/ - -const char* -sf_error_number (int errnum) -{ static const char *bad_errnum = - "No error defined for this error number. This is a bug in libsndfile." ; - int k ; - - if (errnum == SFE_MAX_ERROR) - return SndfileErrors [0].str ; - - if (errnum < 0 || errnum > SFE_MAX_ERROR) - { /* This really shouldn't happen in release versions. */ - printf ("Not a valid error number (%d).\n", errnum) ; - return bad_errnum ; - } ; - - for (k = 0 ; SndfileErrors [k].str ; k++) - if (errnum == SndfileErrors [k].error) - return SndfileErrors [k].str ; - - return bad_errnum ; -} /* sf_error_number */ - -const char* -sf_strerror (SNDFILE *sndfile) -{ SF_PRIVATE *psf = NULL ; - int errnum ; - - if (! sndfile) - { errnum = sf_errno ; - if (errnum == SFE_SYSTEM && sf_syserr [0]) - return sf_syserr ; - } - else - { psf = (SF_PRIVATE *) sndfile ; - - if (psf->Magick != SNDFILE_MAGICK) - return "sf_strerror : Bad magic number." ; - - errnum = psf->error ; - - if (errnum == SFE_SYSTEM && psf->syserr [0]) - return psf->syserr ; - } ; - - return sf_error_number (errnum) ; -} /* sf_strerror */ - -/*------------------------------------------------------------------------------ -*/ - -int -sf_error (SNDFILE *sndfile) -{ SF_PRIVATE *psf ; - - if (! sndfile) - { return sf_errno ; - } ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 0) ; - - if (psf->error) - return psf->error ; - - return 0 ; -} /* sf_error */ - -/*------------------------------------------------------------------------------ -*/ - -int -sf_perror (SNDFILE *sndfile) -{ SF_PRIVATE *psf ; - int errnum ; - - if (! sndfile) - { errnum = sf_errno ; - } - else - { VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 0) ; - errnum = psf->error ; - } ; - - fprintf (stderr, "%s\n", sf_error_number (errnum)) ; - return SFE_NO_ERROR ; -} /* sf_perror */ - - -/*------------------------------------------------------------------------------ -*/ - -int -sf_error_str (SNDFILE *sndfile, char *str, size_t maxlen) -{ SF_PRIVATE *psf ; - int errnum ; - - if (! str) - return SFE_INTERNAL ; - - if (! sndfile) - errnum = sf_errno ; - else - { VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 0) ; - errnum = psf->error ; - } ; - - LSF_SNPRINTF (str, maxlen, "%s", sf_error_number (errnum)) ; - - return SFE_NO_ERROR ; -} /* sf_error_str */ - -/*============================================================================== -*/ - -int -sf_format_check (const SF_INFO *info) -{ int subformat, endian ; - - subformat = info->format & SF_FORMAT_SUBMASK ; - endian = info->format & SF_FORMAT_ENDMASK ; - - /* This is the place where each file format can check if the suppiled - ** SF_INFO struct is valid. - ** Return 0 on failure, 1 ons success. - */ - - if (info->channels < 1 || info->channels > 256) - return 0 ; - - if (info->samplerate < 0) - return 0 ; - - switch (info->format & SF_FORMAT_TYPEMASK) - { case SF_FORMAT_WAV : - case SF_FORMAT_WAVEX : - /* WAV now allows both endian, RIFF or RIFX (little or big respectively) */ - if (subformat == SF_FORMAT_PCM_U8 || subformat == SF_FORMAT_PCM_16) - return 1 ; - if (subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32) - return 1 ; - if ((subformat == SF_FORMAT_IMA_ADPCM || subformat == SF_FORMAT_MS_ADPCM) && info->channels <= 2) - return 1 ; - if (subformat == SF_FORMAT_GSM610 && info->channels == 1) - return 1 ; - if (subformat == SF_FORMAT_G721_32 && info->channels == 1) - return 1 ; - if (subformat == SF_FORMAT_ULAW || subformat == SF_FORMAT_ALAW) - return 1 ; - if (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE) - return 1 ; - break ; - - case SF_FORMAT_AIFF : - /* AIFF does allow both endian-nesses for PCM data.*/ - if (subformat == SF_FORMAT_PCM_16 || subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32) - return 1 ; - /* Other encodings. Check for endian-ness. */ - if (endian == SF_ENDIAN_LITTLE || endian == SF_ENDIAN_CPU) - return 0 ; - if (subformat == SF_FORMAT_PCM_U8 || subformat == SF_FORMAT_PCM_S8) - return 1 ; - if (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE) - return 1 ; - if (subformat == SF_FORMAT_ULAW || subformat == SF_FORMAT_ALAW) - return 1 ; - if ((subformat == SF_FORMAT_DWVW_12 || subformat == SF_FORMAT_DWVW_16 || - subformat == SF_FORMAT_DWVW_24) && info-> channels == 1) - return 1 ; - if (subformat == SF_FORMAT_GSM610 && info->channels == 1) - return 1 ; - if (subformat == SF_FORMAT_IMA_ADPCM && (info->channels == 1 || info->channels == 2)) - return 1 ; - break ; - - case SF_FORMAT_AU : - if (subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16) - return 1 ; - if (subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32) - return 1 ; - if (subformat == SF_FORMAT_ULAW || subformat == SF_FORMAT_ALAW) - return 1 ; - if (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE) - return 1 ; - if (subformat == SF_FORMAT_G721_32 && info->channels == 1) - return 1 ; - if (subformat == SF_FORMAT_G723_24 && info->channels == 1) - return 1 ; - if (subformat == SF_FORMAT_G723_40 && info->channels == 1) - return 1 ; - break ; - - case SF_FORMAT_CAF : - if (subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16) - return 1 ; - if (subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32) - return 1 ; - if (subformat == SF_FORMAT_ULAW || subformat == SF_FORMAT_ALAW) - return 1 ; - if (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE) - return 1 ; - break ; - - case SF_FORMAT_RAW : - if (subformat == SF_FORMAT_PCM_U8 || subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16) - return 1 ; - if (subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32) - return 1 ; - if (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE) - return 1 ; - if (subformat == SF_FORMAT_ALAW || subformat == SF_FORMAT_ULAW) - return 1 ; - if ((subformat == SF_FORMAT_DWVW_12 || subformat == SF_FORMAT_DWVW_16 || - subformat == SF_FORMAT_DWVW_24) && info-> channels == 1) - return 1 ; - if (subformat == SF_FORMAT_GSM610 && info->channels == 1) - return 1 ; - if (subformat == SF_FORMAT_VOX_ADPCM && info->channels == 1) - return 1 ; - break ; - - case SF_FORMAT_PAF : - if (subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16) - return 1 ; - if (subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32) - return 1 ; - break ; - - case SF_FORMAT_SVX : - /* SVX currently does not support more than one channel for write. - ** Read will allow more than one channel but only allow one here. - */ - if (info->channels != 1) - return 0 ; - /* Always big endian. */ - if (endian == SF_ENDIAN_LITTLE || endian == SF_ENDIAN_CPU) - return 0 ; - - if ((subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16) && info->channels == 1) - return 1 ; - break ; - - case SF_FORMAT_NIST : - if (subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16) - return 1 ; - if (subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32) - return 1 ; - if (subformat == SF_FORMAT_ULAW || subformat == SF_FORMAT_ALAW) - return 1 ; - break ; - - case SF_FORMAT_IRCAM : - if (subformat == SF_FORMAT_PCM_16 || subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32) - return 1 ; - if (subformat == SF_FORMAT_ULAW || subformat == SF_FORMAT_ALAW || subformat == SF_FORMAT_FLOAT) - return 1 ; - break ; - - case SF_FORMAT_VOC : - /* VOC is strictly little endian. */ - if (endian == SF_ENDIAN_BIG || endian == SF_ENDIAN_CPU) - return 0 ; - if (subformat == SF_FORMAT_PCM_U8 || subformat == SF_FORMAT_PCM_16) - return 1 ; - if (subformat == SF_FORMAT_ULAW || subformat == SF_FORMAT_ALAW) - return 1 ; - break ; - - case SF_FORMAT_W64 : - /* W64 is strictly little endian. */ - if (endian == SF_ENDIAN_BIG || endian == SF_ENDIAN_CPU) - return 0 ; - if (subformat == SF_FORMAT_PCM_U8 || subformat == SF_FORMAT_PCM_16) - return 1 ; - if (subformat == SF_FORMAT_PCM_24 || subformat == SF_FORMAT_PCM_32) - return 1 ; - if ((subformat == SF_FORMAT_IMA_ADPCM || subformat == SF_FORMAT_MS_ADPCM) && info->channels <= 2) - return 1 ; - if (subformat == SF_FORMAT_GSM610 && info->channels == 1) - return 1 ; - if (subformat == SF_FORMAT_ULAW || subformat == SF_FORMAT_ALAW) - return 1 ; - if (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE) - return 1 ; - break ; - - case SF_FORMAT_MAT4 : - if (subformat == SF_FORMAT_PCM_16 || subformat == SF_FORMAT_PCM_32) - return 1 ; - if (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE) - return 1 ; - break ; - - case SF_FORMAT_MAT5 : - if (subformat == SF_FORMAT_PCM_U8 || subformat == SF_FORMAT_PCM_16 || subformat == SF_FORMAT_PCM_32) - return 1 ; - if (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE) - return 1 ; - break ; - - case SF_FORMAT_PVF : - if (subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16 || subformat == SF_FORMAT_PCM_32) - return 1 ; - break ; - - case SF_FORMAT_XI : - if (info->channels != 1) - return 0 ; - if (subformat == SF_FORMAT_DPCM_8 || subformat == SF_FORMAT_DPCM_16) - return 1 ; - break ; - - case SF_FORMAT_HTK : - /* HTK is strictly big endian. */ - if (endian == SF_ENDIAN_LITTLE || endian == SF_ENDIAN_CPU) - return 0 ; - if (info->channels != 1) - return 0 ; - if (subformat == SF_FORMAT_PCM_16) - return 1 ; - break ; - - case SF_FORMAT_SDS : - /* SDS is strictly big endian. */ - if (endian == SF_ENDIAN_LITTLE || endian == SF_ENDIAN_CPU) - return 0 ; - if (info->channels != 1) - return 0 ; - if (subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16 || subformat == SF_FORMAT_PCM_24) - return 1 ; - break ; - - case SF_FORMAT_AVR : - /* SDS is strictly big endian. */ - if (endian == SF_ENDIAN_LITTLE || endian == SF_ENDIAN_CPU) - return 0 ; - if (info->channels > 2) - return 0 ; - if (subformat == SF_FORMAT_PCM_U8 || subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16) - return 1 ; - break ; - - case SF_FORMAT_FLAC : - /* FLAC can't do more than 8 channels. */ - if (info->channels > 8) - return 0 ; - if (subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16 || subformat == SF_FORMAT_PCM_24) - return 1 ; - break ; - - case SF_FORMAT_SD2 : - /* SD2 is strictly big endian. */ - if (endian == SF_ENDIAN_LITTLE || endian == SF_ENDIAN_CPU) - return 0 ; - if (subformat == SF_FORMAT_PCM_S8 || subformat == SF_FORMAT_PCM_16 || subformat == SF_FORMAT_PCM_24) - return 1 ; - break ; - - default : break ; - } ; - - return 0 ; -} /* sf_format_check */ - -/*------------------------------------------------------------------------------ -*/ - -int -sf_command (SNDFILE *sndfile, int command, void *data, int datasize) -{ SF_PRIVATE *psf = NULL ; - int old_value ; - - /* This set of commands do not need the sndfile parameter. */ - switch (command) - { case SFC_GET_LIB_VERSION : - if (data == NULL) - return (psf->error = SFE_BAD_CONTROL_CMD) ; - if (ENABLE_EXPERIMENTAL_CODE) - LSF_SNPRINTF (data, datasize, "%s-%s-exp", PACKAGE_NAME, PACKAGE_VERSION) ; - else - LSF_SNPRINTF (data, datasize, "%s-%s", PACKAGE_NAME, PACKAGE_VERSION) ; - return strlen (data) ; - - case SFC_GET_SIMPLE_FORMAT_COUNT : - if (data == NULL || datasize != SIGNED_SIZEOF (int)) - return (sf_errno = SFE_BAD_CONTROL_CMD) ; - *((int*) data) = psf_get_format_simple_count () ; - return 0 ; - - case SFC_GET_SIMPLE_FORMAT : - if (data == NULL || datasize != SIGNED_SIZEOF (SF_FORMAT_INFO)) - return (sf_errno = SFE_BAD_CONTROL_CMD) ; - return psf_get_format_simple (data) ; - - case SFC_GET_FORMAT_MAJOR_COUNT : - if (data == NULL || datasize != SIGNED_SIZEOF (int)) - return (sf_errno = SFE_BAD_CONTROL_CMD) ; - *((int*) data) = psf_get_format_major_count () ; - return 0 ; - - case SFC_GET_FORMAT_MAJOR : - if (data == NULL || datasize != SIGNED_SIZEOF (SF_FORMAT_INFO)) - return (sf_errno = SFE_BAD_CONTROL_CMD) ; - return psf_get_format_major (data) ; - - case SFC_GET_FORMAT_SUBTYPE_COUNT : - if (data == NULL || datasize != SIGNED_SIZEOF (int)) - return (sf_errno = SFE_BAD_CONTROL_CMD) ; - *((int*) data) = psf_get_format_subtype_count () ; - return 0 ; - - case SFC_GET_FORMAT_SUBTYPE : - if (data == NULL || datasize != SIGNED_SIZEOF (SF_FORMAT_INFO)) - return (sf_errno = SFE_BAD_CONTROL_CMD) ; - return psf_get_format_subtype (data) ; - - case SFC_GET_FORMAT_INFO : - if (data == NULL || datasize != SIGNED_SIZEOF (SF_FORMAT_INFO)) - return (sf_errno = SFE_BAD_CONTROL_CMD) ; - return psf_get_format_info (data) ; - } ; - - if (sndfile == NULL && command == SFC_GET_LOG_INFO) - { if (data == NULL) - return (psf->error = SFE_BAD_CONTROL_CMD) ; - LSF_SNPRINTF (data, datasize, "%s", sf_logbuffer) ; - return strlen (data) ; - } ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - switch (command) - { case SFC_SET_NORM_FLOAT : - old_value = psf->norm_float ; - psf->norm_float = (datasize) ? SF_TRUE : SF_FALSE ; - return old_value ; - - case SFC_SET_NORM_DOUBLE : - old_value = psf->norm_double ; - psf->norm_double = (datasize) ? SF_TRUE : SF_FALSE ; - return old_value ; - - case SFC_GET_NORM_FLOAT : - return psf->norm_float ; - - case SFC_GET_NORM_DOUBLE : - return psf->norm_double ; - - case SFC_SET_SCALE_FLOAT_INT_READ : - old_value = psf->float_int_mult ; - - psf->float_int_mult = (datasize != 0) ? SF_TRUE : SF_FALSE ; - if (psf->float_int_mult && psf->float_max < 0.0) - psf->float_max = psf_calc_signal_max (psf, SF_FALSE) ; - return old_value ; - - case SFC_SET_ADD_PEAK_CHUNK : - { int format = psf->sf.format & SF_FORMAT_TYPEMASK ; - - /* Only WAV and AIFF support the PEAK chunk. */ - if (format != SF_FORMAT_WAV && format != SF_FORMAT_WAVEX && format != SF_FORMAT_AIFF) - return SF_FALSE ; - - format = psf->sf.format & SF_FORMAT_SUBMASK ; - - /* Only files containg the following data types support the PEAK chunk. */ - if (format != SF_FORMAT_FLOAT && format != SF_FORMAT_DOUBLE) - return SF_FALSE ; - - } ; - /* Can only do this is in SFM_WRITE mode. */ - if (psf->mode != SFM_WRITE) - return SF_FALSE ; - /* If data has already been written this must fail. */ - if (psf->have_written) - return SF_FALSE ; - /* Everything seems OK, so set psf->has_peak and re-write header. */ - if (datasize == SF_FALSE && psf->peak_info != NULL) - { free (psf->peak_info) ; - psf->peak_info = NULL ; - } - else if (psf->peak_info == NULL) - { psf->peak_info = peak_info_calloc (psf->sf.channels) ; - psf->peak_info->peak_loc = SF_PEAK_START ; - } ; - - if (psf->write_header) - psf->write_header (psf, SF_TRUE) ; - return datasize ; - - case SFC_GET_LOG_INFO : - if (data == NULL) - return (psf->error = SFE_BAD_CONTROL_CMD) ; - LSF_SNPRINTF (data, datasize, "%s", psf->logbuffer) ; - break ; - - case SFC_CALC_SIGNAL_MAX : - if (data == NULL || datasize != sizeof (double)) - return (psf->error = SFE_BAD_CONTROL_CMD) ; - *((double*) data) = psf_calc_signal_max (psf, SF_FALSE) ; - break ; - - case SFC_CALC_NORM_SIGNAL_MAX : - if (data == NULL || datasize != sizeof (double)) - return (psf->error = SFE_BAD_CONTROL_CMD) ; - *((double*) data) = psf_calc_signal_max (psf, SF_TRUE) ; - break ; - - case SFC_CALC_MAX_ALL_CHANNELS : - if (data == NULL || datasize != SIGNED_SIZEOF (double) * psf->sf.channels) - return (psf->error = SFE_BAD_CONTROL_CMD) ; - return psf_calc_max_all_channels (psf, (double*) data, SF_FALSE) ; - - case SFC_CALC_NORM_MAX_ALL_CHANNELS : - if (data == NULL || datasize != SIGNED_SIZEOF (double) * psf->sf.channels) - return (psf->error = SFE_BAD_CONTROL_CMD) ; - return psf_calc_max_all_channels (psf, (double*) data, SF_TRUE) ; - - case SFC_GET_SIGNAL_MAX : - if (data == NULL || datasize != sizeof (double)) - { psf->error = SFE_BAD_CONTROL_CMD ; - return SF_FALSE ; - } ; - return psf_get_signal_max (psf, (double *) data) ; - - case SFC_GET_MAX_ALL_CHANNELS : - if (data == NULL || datasize != SIGNED_SIZEOF (double) * psf->sf.channels) - { psf->error = SFE_BAD_CONTROL_CMD ; - return SF_FALSE ; - } ; - return psf_get_max_all_channels (psf, (double*) data) ; - - case SFC_UPDATE_HEADER_NOW : - if (psf->write_header) - psf->write_header (psf, SF_TRUE) ; - break ; - - case SFC_SET_UPDATE_HEADER_AUTO : - psf->auto_header = datasize ? SF_TRUE : SF_FALSE ; - return psf->auto_header ; - break ; - - case SFC_SET_ADD_DITHER_ON_WRITE : - case SFC_SET_ADD_DITHER_ON_READ : - /* - ** FIXME ! - ** These are obsolete. Just return. - ** Remove some time after version 1.0.8. - */ - break ; - - case SFC_SET_DITHER_ON_WRITE : - if (data == NULL || datasize != SIGNED_SIZEOF (SF_DITHER_INFO)) - return (psf->error = SFE_BAD_CONTROL_CMD) ; - memcpy (&psf->write_dither, data, sizeof (psf->write_dither)) ; - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - dither_init (psf, SFM_WRITE) ; - break ; - - case SFC_SET_DITHER_ON_READ : - if (data == NULL || datasize != SIGNED_SIZEOF (SF_DITHER_INFO)) - return (psf->error = SFE_BAD_CONTROL_CMD) ; - memcpy (&psf->read_dither, data, sizeof (psf->read_dither)) ; - if (psf->mode == SFM_READ || psf->mode == SFM_RDWR) - dither_init (psf, SFM_READ) ; - break ; - - case SFC_FILE_TRUNCATE : - if (psf->mode != SFM_WRITE && psf->mode != SFM_RDWR) - return SF_TRUE ; - if (datasize != sizeof (sf_count_t)) - return SF_TRUE ; - { sf_count_t position ; - - position = *((sf_count_t*) data) ; - - if (sf_seek (sndfile, position, SEEK_SET) != position) - return SF_TRUE ; - - psf->sf.frames = position ; - - position = psf_fseek (psf, 0, SEEK_CUR) ; - - return psf_ftruncate (psf, position) ; - } ; - break ; - - case SFC_SET_RAW_START_OFFSET : - if (data == NULL || datasize != sizeof (sf_count_t)) - return (psf->error = SFE_BAD_CONTROL_CMD) ; - if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_RAW) - return (psf->error = SFE_BAD_CONTROL_CMD) ; - - psf->dataoffset = *((sf_count_t*) data) ; - sf_seek (sndfile, 0, SEEK_CUR) ; - break ; - - case SFC_GET_EMBED_FILE_INFO : - if (data == NULL || datasize != sizeof (SF_EMBED_FILE_INFO)) - return (psf->error = SFE_BAD_CONTROL_CMD) ; - - ((SF_EMBED_FILE_INFO*) data)->offset = psf->fileoffset ; - ((SF_EMBED_FILE_INFO*) data)->length = psf->filelength ; - break ; - - /* Lite remove start */ - case SFC_TEST_IEEE_FLOAT_REPLACE : - psf->ieee_replace = (datasize) ? SF_TRUE : SF_FALSE ; - if ((psf->sf.format & SF_FORMAT_SUBMASK) == SF_FORMAT_FLOAT) - float32_init (psf) ; - else if ((psf->sf.format & SF_FORMAT_SUBMASK) == SF_FORMAT_DOUBLE) - double64_init (psf) ; - else - return (psf->error = SFE_BAD_CONTROL_CMD) ; - break ; - /* Lite remove end */ - - case SFC_SET_CLIPPING : - psf->add_clipping = (datasize) ? SF_TRUE : SF_FALSE ; - return psf->add_clipping ; - - case SFC_GET_CLIPPING : - return psf->add_clipping ; - - case SFC_GET_LOOP_INFO : - if (datasize != sizeof (SF_LOOP_INFO) || data == NULL) - return SF_FALSE ; - if (psf->loop_info == NULL) - return SF_FALSE ; - memcpy (data, psf->loop_info, sizeof (SF_LOOP_INFO)) ; - return SF_TRUE ; - - case SFC_SET_BROADCAST_INFO : { - int format = psf->sf.format & SF_FORMAT_TYPEMASK ; - - /* Only WAV supports the BEXT (Broadcast) chunk. */ - if (format != SF_FORMAT_WAV && format != SF_FORMAT_WAVEX) - return SF_FALSE ; - - /* Can only do this is in SFM_RDWR or SFM_WRITE modes. */ - if (psf->mode == SFM_READ) - return SF_FALSE ; - - /* If data has already been written this must fail. */ - if (psf->broadcast_info == NULL && psf->have_written) - return SF_FALSE ; - - if (psf->broadcast_info == NULL) - psf->broadcast_info = broadcast_info_alloc () ; - - broadcast_info_copy (psf->broadcast_info, data) ; - broadcast_add_coding_history (psf->broadcast_info, psf->sf.channels, psf->sf.samplerate) ; - - if (psf->auto_header && psf->write_header) - psf->write_header (psf, SF_TRUE) ; - - return SF_TRUE ; - } - - case SFC_GET_BROADCAST_INFO : - if (datasize != sizeof (SF_BROADCAST_INFO) || data == NULL) - return SF_FALSE ; - if (psf->broadcast_info == NULL) - return SF_FALSE ; - return broadcast_info_copy (data, psf->broadcast_info) ; - - case SFC_GET_INSTRUMENT : - if (datasize != sizeof (SF_INSTRUMENT) || data == NULL) - return SF_FALSE ; - if (psf->instrument == NULL) - return SF_FALSE ; - memcpy (data, psf->instrument, sizeof (SF_INSTRUMENT)) ; - return SF_TRUE ; - - case SFC_SET_INSTRUMENT : - /* If data has already been written this must fail. */ - if (psf->have_written) - return SF_FALSE ; - if (datasize != sizeof (SF_INSTRUMENT) || data == NULL) - return SF_FALSE ; - if (psf->instrument == NULL && (psf->instrument = psf_instrument_alloc ()) == NULL) - { psf->error = SFE_MALLOC_FAILED ; - return SF_FALSE ; - } ; - memcpy (psf->instrument, data, sizeof (SF_INSTRUMENT)) ; - return SF_TRUE ; - - default : - /* Must be a file specific command. Pass it on. */ - if (psf->command) - return psf->command (psf, command, data, datasize) ; - - psf_log_printf (psf, "*** sf_command : cmd = 0x%X\n", command) ; - return (psf->error = SFE_BAD_CONTROL_CMD) ; - } ; - - return 0 ; -} /* sf_command */ - -/*------------------------------------------------------------------------------ -*/ - -sf_count_t -sf_seek (SNDFILE *sndfile, sf_count_t offset, int whence) -{ SF_PRIVATE *psf ; - sf_count_t seek_from_start = 0, retval ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (! psf->sf.seekable) - { psf->error = SFE_NOT_SEEKABLE ; - return PSF_SEEK_ERROR ; - } ; - - /* If the whence parameter has a mode ORed in, check to see that - ** it makes sense. - */ - if (((whence & SFM_MASK) == SFM_WRITE && psf->mode == SFM_READ) || - ((whence & SFM_MASK) == SFM_READ && psf->mode == SFM_WRITE)) - { psf->error = SFE_WRONG_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - /* Convert all SEEK_CUR and SEEK_END into seek_from_start to be - ** used with SEEK_SET. - */ - switch (whence) - { /* The SEEK_SET behaviour is independant of mode. */ - case SEEK_SET : - case SEEK_SET | SFM_READ : - case SEEK_SET | SFM_WRITE : - case SEEK_SET | SFM_RDWR : - seek_from_start = offset ; - break ; - - /* The SEEK_CUR is a little more tricky. */ - case SEEK_CUR : - if (offset == 0) - { if (psf->mode == SFM_READ) - return psf->read_current ; - if (psf->mode == SFM_WRITE) - return psf->write_current ; - } ; - if (psf->mode == SFM_READ) - seek_from_start = psf->read_current + offset ; - else if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - seek_from_start = psf->write_current + offset ; - else - psf->error = SFE_AMBIGUOUS_SEEK ; - break ; - - case SEEK_CUR | SFM_READ : - if (offset == 0) - return psf->read_current ; - seek_from_start = psf->read_current + offset ; - break ; - - case SEEK_CUR | SFM_WRITE : - if (offset == 0) - return psf->write_current ; - seek_from_start = psf->write_current + offset ; - break ; - - /* The SEEK_END */ - case SEEK_END : - case SEEK_END | SFM_READ : - case SEEK_END | SFM_WRITE : - seek_from_start = psf->sf.frames + offset ; - break ; - - default : - psf->error = SFE_BAD_SEEK ; - break ; - } ; - - if (psf->error) - return PSF_SEEK_ERROR ; - -#ifdef ECDL_ORIGINAL - if (seek_from_start < 0 || seek_from_start > psf->sf.frames) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; -#else - if (((whence & SFM_MASK) == SFM_WRITE) || (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR)) - { if (seek_from_start < 0 /* || (seek_from_start > psf->sf.frames && post-audio chunks exist) */ ) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } - } - else /* seek for reading */ - { if (seek_from_start < 0 || seek_from_start > psf->sf.frames) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } - } -#endif - - if (psf->seek) - { int new_mode = (whence & SFM_MASK) ? (whence & SFM_MASK) : psf->mode ; - - retval = psf->seek (psf, new_mode, seek_from_start) ; - - switch (new_mode) - { case SFM_READ : - psf->read_current = retval ; - break ; - case SFM_WRITE : - psf->write_current = retval ; - break ; - case SFM_RDWR : - psf->read_current = retval ; - psf->write_current = retval ; - new_mode = SFM_READ ; - break ; - } ; - - - psf->last_op = new_mode ; - - return retval ; - } ; - - psf->error = SFE_AMBIGUOUS_SEEK ; - return PSF_SEEK_ERROR ; -} /* sf_seek */ - -/*------------------------------------------------------------------------------ -*/ - -const char* -sf_get_string (SNDFILE *sndfile, int str_type) -{ SF_PRIVATE *psf ; - - if ((psf = (SF_PRIVATE*) sndfile) == NULL) - return NULL ; - if (psf->Magick != SNDFILE_MAGICK) - return NULL ; - - return psf_get_string (psf, str_type) ; -} /* sf_get_string */ - -int -sf_set_string (SNDFILE *sndfile, int str_type, const char* str) -{ SF_PRIVATE *psf ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - return psf_set_string (psf, str_type, str) ; -} /* sf_get_string */ - -/*============================================================================== -*/ - -sf_count_t -sf_read_raw (SNDFILE *sndfile, void *ptr, sf_count_t bytes) -{ SF_PRIVATE *psf ; - sf_count_t count ; - int bytewidth, blockwidth ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - bytewidth = (psf->bytewidth > 0) ? psf->bytewidth : 1 ; - blockwidth = (psf->blockwidth > 0) ? psf->blockwidth : 1 ; - - if (psf->mode == SFM_WRITE) - { psf->error = SFE_NOT_READMODE ; - return 0 ; - } ; - - if (bytes < 0 || psf->read_current >= psf->datalength) - { psf_memset (ptr, 0, bytes) ; - return 0 ; - } ; - - if (bytes % (psf->sf.channels * bytewidth)) - { psf->error = SFE_BAD_READ_ALIGN ; - return 0 ; - } ; - - count = psf_fread (ptr, 1, bytes, psf) ; - - if (count < bytes) - psf_memset (((char*) ptr) + count, 0, bytes - count) ; - - psf->read_current += count / blockwidth ; - - psf->last_op = SFM_READ ; - - return count ; -} /* sf_read_raw */ - -/*------------------------------------------------------------------------------ -*/ - -sf_count_t -sf_read_short (SNDFILE *sndfile, short *ptr, sf_count_t len) -{ SF_PRIVATE *psf ; - sf_count_t count, extra ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (psf->mode == SFM_WRITE) - { psf->error = SFE_NOT_READMODE ; - return 0 ; - } ; - - if (len % psf->sf.channels) - { psf->error = SFE_BAD_READ_ALIGN ; - return 0 ; - } ; - - if (len <= 0 || psf->read_current >= psf->sf.frames) - { psf_memset (ptr, 0, len * sizeof (short)) ; - return 0 ; /* End of file. */ - } ; - - if (! psf->read_short || psf->seek == NULL) - { psf->error = SFE_UNIMPLEMENTED ; - return 0 ; - } ; - - if (psf->last_op != SFM_READ) - if (psf->seek (psf, SFM_READ, psf->read_current) < 0) - return 0 ; - - count = psf->read_short (psf, ptr, len) ; - - if (psf->read_current + count / psf->sf.channels > psf->sf.frames) - { count = (psf->sf.frames - psf->read_current) * psf->sf.channels ; - extra = len - count ; - psf_memset (ptr + count, 0, extra * sizeof (short)) ; - psf->read_current = psf->sf.frames ; - } ; - - psf->read_current += count / psf->sf.channels ; - - psf->last_op = SFM_READ ; - - if (psf->read_current > psf->sf.frames) - { count = psf->sf.channels * (psf->read_current - psf->sf.frames) ; - psf->read_current = psf->sf.frames ; - } ; - - return count ; -} /* sf_read_short */ - -sf_count_t -sf_readf_short (SNDFILE *sndfile, short *ptr, sf_count_t frames) -{ SF_PRIVATE *psf ; - sf_count_t count, extra ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (psf->mode == SFM_WRITE) - { psf->error = SFE_NOT_READMODE ; - return 0 ; - } ; - - if (frames <= 0 || psf->read_current >= psf->sf.frames) - { psf_memset (ptr, 0, frames * psf->sf.channels * sizeof (short)) ; - return 0 ; /* End of file. */ - } ; - - if (! psf->read_short || psf->seek == NULL) - { psf->error = SFE_UNIMPLEMENTED ; - return 0 ; - } ; - - if (psf->last_op != SFM_READ) - if (psf->seek (psf, SFM_READ, psf->read_current) < 0) - return 0 ; - - count = psf->read_short (psf, ptr, frames * psf->sf.channels) ; - - if (psf->read_current + count / psf->sf.channels > psf->sf.frames) - { count = (psf->sf.frames - psf->read_current) * psf->sf.channels ; - extra = frames * psf->sf.channels - count ; - psf_memset (ptr + count, 0, extra * sizeof (short)) ; - psf->read_current = psf->sf.frames ; - } ; - - psf->read_current += count / psf->sf.channels ; - - psf->last_op = SFM_READ ; - - if (psf->read_current > psf->sf.frames) - { count = psf->sf.channels * (psf->read_current - psf->sf.frames) ; - psf->read_current = psf->sf.frames ; - } ; - - return count / psf->sf.channels ; -} /* sf_readf_short */ - -/*------------------------------------------------------------------------------ -*/ - -sf_count_t -sf_read_int (SNDFILE *sndfile, int *ptr, sf_count_t len) -{ SF_PRIVATE *psf ; - sf_count_t count, extra ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (psf->mode == SFM_WRITE) - { psf->error = SFE_NOT_READMODE ; - return 0 ; - } ; - - if (len % psf->sf.channels) - { psf->error = SFE_BAD_READ_ALIGN ; - return 0 ; - } ; - - if (len <= 0 || psf->read_current >= psf->sf.frames) - { psf_memset (ptr, 0, len * sizeof (int)) ; - return 0 ; - } ; - - if (! psf->read_int || psf->seek == NULL) - { psf->error = SFE_UNIMPLEMENTED ; - return 0 ; - } ; - - if (psf->last_op != SFM_READ) - if (psf->seek (psf, SFM_READ, psf->read_current) < 0) - return 0 ; - - count = psf->read_int (psf, ptr, len) ; - - if (psf->read_current + count / psf->sf.channels > psf->sf.frames) - { count = (psf->sf.frames - psf->read_current) * psf->sf.channels ; - extra = len - count ; - psf_memset (ptr + count, 0, extra * sizeof (int)) ; - psf->read_current = psf->sf.frames ; - } ; - - psf->read_current += count / psf->sf.channels ; - - psf->last_op = SFM_READ ; - - if (psf->read_current > psf->sf.frames) - { count = psf->sf.channels * (psf->read_current - psf->sf.frames) ; - psf->read_current = psf->sf.frames ; - } ; - - return count ; -} /* sf_read_int */ - -sf_count_t -sf_readf_int (SNDFILE *sndfile, int *ptr, sf_count_t frames) -{ SF_PRIVATE *psf ; - sf_count_t count, extra ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (psf->mode == SFM_WRITE) - { psf->error = SFE_NOT_READMODE ; - return 0 ; - } ; - - if (frames <= 0 || psf->read_current >= psf->sf.frames) - { psf_memset (ptr, 0, frames * psf->sf.channels * sizeof (int)) ; - return 0 ; - } ; - - if (! psf->read_int || psf->seek == NULL) - { psf->error = SFE_UNIMPLEMENTED ; - return 0 ; - } ; - - if (psf->last_op != SFM_READ) - if (psf->seek (psf, SFM_READ, psf->read_current) < 0) - return 0 ; - - count = psf->read_int (psf, ptr, frames * psf->sf.channels) ; - - if (psf->read_current + count / psf->sf.channels > psf->sf.frames) - { count = (psf->sf.frames - psf->read_current) * psf->sf.channels ; - extra = frames * psf->sf.channels - count ; - psf_memset (ptr + count, 0, extra * sizeof (int)) ; - psf->read_current = psf->sf.frames ; - } ; - - psf->read_current += count / psf->sf.channels ; - - psf->last_op = SFM_READ ; - - if (psf->read_current > psf->sf.frames) - { count = psf->sf.channels * (psf->read_current - psf->sf.frames) ; - psf->read_current = psf->sf.frames ; - } ; - - return count / psf->sf.channels ; -} /* sf_readf_int */ - -/*------------------------------------------------------------------------------ -*/ - -sf_count_t -sf_read_float (SNDFILE *sndfile, float *ptr, sf_count_t len) -{ SF_PRIVATE *psf ; - sf_count_t count, extra ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (psf->mode == SFM_WRITE) - { psf->error = SFE_NOT_READMODE ; - return 0 ; - } ; - - if (len % psf->sf.channels) - { psf->error = SFE_BAD_READ_ALIGN ; - return 0 ; - } ; - - if (len <= 0 || psf->read_current >= psf->sf.frames) - { psf_memset (ptr, 0, len * sizeof (float)) ; - return 0 ; - } ; - - if (! psf->read_float || psf->seek == NULL) - { psf->error = SFE_UNIMPLEMENTED ; - return 0 ; - } ; - - if (psf->last_op != SFM_READ) - if (psf->seek (psf, SFM_READ, psf->read_current) < 0) - return 0 ; - - count = psf->read_float (psf, ptr, len) ; - - if (psf->read_current + count / psf->sf.channels > psf->sf.frames) - { count = (psf->sf.frames - psf->read_current) * psf->sf.channels ; - extra = len - count ; - psf_memset (ptr + count, 0, extra * sizeof (float)) ; - psf->read_current = psf->sf.frames ; - } ; - - psf->read_current += count / psf->sf.channels ; - - psf->last_op = SFM_READ ; - - if (psf->read_current > psf->sf.frames) - { count = psf->sf.channels * (psf->read_current - psf->sf.frames) ; - psf->read_current = psf->sf.frames ; - } ; - - return count ; -} /* sf_read_float */ - -sf_count_t -sf_readf_float (SNDFILE *sndfile, float *ptr, sf_count_t frames) -{ SF_PRIVATE *psf ; - sf_count_t count, extra ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (psf->mode == SFM_WRITE) - { psf->error = SFE_NOT_READMODE ; - return 0 ; - } ; - - if (frames <= 0 || psf->read_current >= psf->sf.frames) - { psf_memset (ptr, 0, frames * psf->sf.channels * sizeof (float)) ; - return 0 ; - } ; - - if (! psf->read_float || psf->seek == NULL) - { psf->error = SFE_UNIMPLEMENTED ; - return 0 ; - } ; - - if (psf->last_op != SFM_READ) - if (psf->seek (psf, SFM_READ, psf->read_current) < 0) - return 0 ; - - count = psf->read_float (psf, ptr, frames * psf->sf.channels) ; - - if (psf->read_current + count / psf->sf.channels > psf->sf.frames) - { count = (psf->sf.frames - psf->read_current) * psf->sf.channels ; - extra = frames * psf->sf.channels - count ; - psf_memset (ptr + count, 0, extra * sizeof (float)) ; - psf->read_current = psf->sf.frames ; - } ; - - psf->read_current += count / psf->sf.channels ; - - psf->last_op = SFM_READ ; - - if (psf->read_current > psf->sf.frames) - { count = psf->sf.channels * (psf->read_current - psf->sf.frames) ; - psf->read_current = psf->sf.frames ; - } ; - - return count / psf->sf.channels ; -} /* sf_readf_float */ - -/*------------------------------------------------------------------------------ -*/ - -sf_count_t -sf_read_double (SNDFILE *sndfile, double *ptr, sf_count_t len) -{ SF_PRIVATE *psf ; - sf_count_t count, extra ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (psf->mode == SFM_WRITE) - { psf->error = SFE_NOT_READMODE ; - return 0 ; - } ; - - if (len % psf->sf.channels) - { psf->error = SFE_BAD_READ_ALIGN ; - return 0 ; - } ; - - if (len <= 0 || psf->read_current >= psf->sf.frames) - { psf_memset (ptr, 0, len * sizeof (double)) ; - return 0 ; - } ; - - if (! psf->read_double || psf->seek == NULL) - { psf->error = SFE_UNIMPLEMENTED ; - return 0 ; - } ; - - if (psf->last_op != SFM_READ) - if (psf->seek (psf, SFM_READ, psf->read_current) < 0) - return 0 ; - - count = psf->read_double (psf, ptr, len) ; - - if (psf->read_current + count / psf->sf.channels > psf->sf.frames) - { count = (psf->sf.frames - psf->read_current) * psf->sf.channels ; - extra = len - count ; - psf_memset (ptr + count, 0, extra * sizeof (double)) ; - psf->read_current = psf->sf.frames ; - } ; - - psf->read_current += count / psf->sf.channels ; - - psf->last_op = SFM_READ ; - - if (psf->read_current > psf->sf.frames) - { count = psf->sf.channels * (psf->read_current - psf->sf.frames) ; - psf->read_current = psf->sf.frames ; - } ; - - return count ; -} /* sf_read_double */ - -sf_count_t -sf_readf_double (SNDFILE *sndfile, double *ptr, sf_count_t frames) -{ SF_PRIVATE *psf ; - sf_count_t count, extra ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (psf->mode == SFM_WRITE) - { psf->error = SFE_NOT_READMODE ; - return 0 ; - } ; - - if (frames <= 0 || psf->read_current >= psf->sf.frames) - { psf_memset (ptr, 0, frames * psf->sf.channels * sizeof (double)) ; - return 0 ; - } ; - - if (! psf->read_double || psf->seek == NULL) - { psf->error = SFE_UNIMPLEMENTED ; - return 0 ; - } ; - - if (psf->last_op != SFM_READ) - if (psf->seek (psf, SFM_READ, psf->read_current) < 0) - return 0 ; - - count = psf->read_double (psf, ptr, frames * psf->sf.channels) ; - - if (psf->read_current + count / psf->sf.channels > psf->sf.frames) - { count = (psf->sf.frames - psf->read_current) * psf->sf.channels ; - extra = frames * psf->sf.channels - count ; - psf_memset (ptr + count, 0, extra * sizeof (double)) ; - psf->read_current = psf->sf.frames ; - } ; - - psf->read_current += count / psf->sf.channels ; - - psf->last_op = SFM_READ ; - - if (psf->read_current > psf->sf.frames) - { count = psf->sf.channels * (psf->read_current - psf->sf.frames) ; - psf->read_current = psf->sf.frames ; - } ; - - return count / psf->sf.channels ; -} /* sf_readf_double */ - -/*------------------------------------------------------------------------------ -*/ - -sf_count_t -sf_write_raw (SNDFILE *sndfile, const void *ptr, sf_count_t len) -{ SF_PRIVATE *psf ; - sf_count_t count ; - int bytewidth, blockwidth ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - bytewidth = (psf->bytewidth > 0) ? psf->bytewidth : 1 ; - blockwidth = (psf->blockwidth > 0) ? psf->blockwidth : 1 ; - - if (psf->mode == SFM_READ) - { psf->error = SFE_NOT_WRITEMODE ; - return 0 ; - } ; - - if (len % (psf->sf.channels * bytewidth)) - { psf->error = SFE_BAD_WRITE_ALIGN ; - return 0 ; - } ; - - if (psf->have_written == SF_FALSE && psf->write_header != NULL) - psf->write_header (psf, SF_FALSE) ; - psf->have_written = SF_TRUE ; - - count = psf_fwrite (ptr, 1, len, psf) ; - - psf->write_current += count / blockwidth ; - - if (psf->write_current > psf->sf.frames) - psf->sf.frames = psf->write_current ; - - psf->last_op = SFM_WRITE ; - - return count ; -} /* sf_write_raw */ - -/*------------------------------------------------------------------------------ -*/ - -sf_count_t -sf_write_short (SNDFILE *sndfile, const short *ptr, sf_count_t len) -{ SF_PRIVATE *psf ; - sf_count_t count ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (psf->mode == SFM_READ) - { psf->error = SFE_NOT_WRITEMODE ; - return 0 ; - } ; - - if (len % psf->sf.channels) - { psf->error = SFE_BAD_WRITE_ALIGN ; - return 0 ; - } ; - - if (! psf->write_short || psf->seek == NULL) - { psf->error = SFE_UNIMPLEMENTED ; - return 0 ; - } ; - - if (psf->last_op != SFM_WRITE) - if (psf->seek (psf, SFM_WRITE, psf->write_current) < 0) - return 0 ; - - if (psf->have_written == SF_FALSE && psf->write_header != NULL) - psf->write_header (psf, SF_FALSE) ; - psf->have_written = SF_TRUE ; - - count = psf->write_short (psf, ptr, len) ; - - psf->write_current += count / psf->sf.channels ; - - psf->last_op = SFM_WRITE ; - - if (psf->auto_header && psf->write_header != NULL) - psf->write_header (psf, SF_TRUE) ; - - if (psf->write_current > psf->sf.frames) - psf->sf.frames = psf->write_current ; - - return count ; -} /* sf_write_short */ - -sf_count_t -sf_writef_short (SNDFILE *sndfile, const short *ptr, sf_count_t frames) -{ SF_PRIVATE *psf ; - sf_count_t count ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (psf->mode == SFM_READ) - { psf->error = SFE_NOT_WRITEMODE ; - return 0 ; - } ; - - if (! psf->write_short || psf->seek == NULL) - { psf->error = SFE_UNIMPLEMENTED ; - return 0 ; - } ; - - if (psf->last_op != SFM_WRITE) - if (psf->seek (psf, SFM_WRITE, psf->write_current) < 0) - return 0 ; - - if (psf->have_written == SF_FALSE && psf->write_header != NULL) - psf->write_header (psf, SF_FALSE) ; - psf->have_written = SF_TRUE ; - - count = psf->write_short (psf, ptr, frames * psf->sf.channels) ; - - psf->write_current += count / psf->sf.channels ; - - psf->last_op = SFM_WRITE ; - - if (psf->auto_header && psf->write_header != NULL) - psf->write_header (psf, SF_TRUE) ; - - if (psf->write_current > psf->sf.frames) - psf->sf.frames = psf->write_current ; - - return count / psf->sf.channels ; -} /* sf_writef_short */ - -/*------------------------------------------------------------------------------ -*/ - -sf_count_t -sf_write_int (SNDFILE *sndfile, const int *ptr, sf_count_t len) -{ SF_PRIVATE *psf ; - sf_count_t count ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (psf->mode == SFM_READ) - { psf->error = SFE_NOT_WRITEMODE ; - return 0 ; - } ; - - if (len % psf->sf.channels) - { psf->error = SFE_BAD_WRITE_ALIGN ; - return 0 ; - } ; - - if (! psf->write_int || psf->seek == NULL) - { psf->error = SFE_UNIMPLEMENTED ; - return 0 ; - } ; - - if (psf->last_op != SFM_WRITE) - if (psf->seek (psf, SFM_WRITE, psf->write_current) < 0) - return 0 ; - - if (psf->have_written == SF_FALSE && psf->write_header != NULL) - psf->write_header (psf, SF_FALSE) ; - psf->have_written = SF_TRUE ; - - count = psf->write_int (psf, ptr, len) ; - - psf->write_current += count / psf->sf.channels ; - - psf->last_op = SFM_WRITE ; - - if (psf->auto_header && psf->write_header != NULL) - psf->write_header (psf, SF_TRUE) ; - - if (psf->write_current > psf->sf.frames) - psf->sf.frames = psf->write_current ; - - return count ; -} /* sf_write_int */ - -sf_count_t -sf_writef_int (SNDFILE *sndfile, const int *ptr, sf_count_t frames) -{ SF_PRIVATE *psf ; - sf_count_t count ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (psf->mode == SFM_READ) - { psf->error = SFE_NOT_WRITEMODE ; - return 0 ; - } ; - - if (! psf->write_int || psf->seek == NULL) - { psf->error = SFE_UNIMPLEMENTED ; - return 0 ; - } ; - - if (psf->last_op != SFM_WRITE) - if (psf->seek (psf, SFM_WRITE, psf->write_current) < 0) - return 0 ; - - if (psf->have_written == SF_FALSE && psf->write_header != NULL) - psf->write_header (psf, SF_FALSE) ; - psf->have_written = SF_TRUE ; - - count = psf->write_int (psf, ptr, frames * psf->sf.channels) ; - - psf->write_current += count / psf->sf.channels ; - - psf->last_op = SFM_WRITE ; - - if (psf->auto_header && psf->write_header != NULL) - psf->write_header (psf, SF_TRUE) ; - - if (psf->write_current > psf->sf.frames) - psf->sf.frames = psf->write_current ; - - return count / psf->sf.channels ; -} /* sf_writef_int */ - -/*------------------------------------------------------------------------------ -*/ - -sf_count_t -sf_write_float (SNDFILE *sndfile, const float *ptr, sf_count_t len) -{ SF_PRIVATE *psf ; - sf_count_t count ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (psf->mode == SFM_READ) - { psf->error = SFE_NOT_WRITEMODE ; - return 0 ; - } ; - - if (len % psf->sf.channels) - { psf->error = SFE_BAD_WRITE_ALIGN ; - return 0 ; - } ; - - if (! psf->write_float || psf->seek == NULL) - { psf->error = SFE_UNIMPLEMENTED ; - return 0 ; - } ; - - if (psf->last_op != SFM_WRITE) - if (psf->seek (psf, SFM_WRITE, psf->write_current) < 0) - return 0 ; - - if (psf->have_written == SF_FALSE && psf->write_header != NULL) - psf->write_header (psf, SF_FALSE) ; - psf->have_written = SF_TRUE ; - - count = psf->write_float (psf, ptr, len) ; - - psf->write_current += count / psf->sf.channels ; - - psf->last_op = SFM_WRITE ; - - if (psf->auto_header && psf->write_header != NULL) - psf->write_header (psf, SF_TRUE) ; - - if (psf->write_current > psf->sf.frames) - psf->sf.frames = psf->write_current ; - - return count ; -} /* sf_write_float */ - -sf_count_t -sf_writef_float (SNDFILE *sndfile, const float *ptr, sf_count_t frames) -{ SF_PRIVATE *psf ; - sf_count_t count ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (psf->mode == SFM_READ) - { psf->error = SFE_NOT_WRITEMODE ; - return 0 ; - } ; - - if (! psf->write_float || psf->seek == NULL) - { psf->error = SFE_UNIMPLEMENTED ; - return 0 ; - } ; - - if (psf->last_op != SFM_WRITE) - if (psf->seek (psf, SFM_WRITE, psf->write_current) < 0) - return 0 ; - - if (psf->have_written == SF_FALSE && psf->write_header != NULL) - psf->write_header (psf, SF_FALSE) ; - psf->have_written = SF_TRUE ; - - count = psf->write_float (psf, ptr, frames * psf->sf.channels) ; - - psf->write_current += count / psf->sf.channels ; - - psf->last_op = SFM_WRITE ; - - if (psf->auto_header && psf->write_header != NULL) - psf->write_header (psf, SF_TRUE) ; - - if (psf->write_current > psf->sf.frames) - psf->sf.frames = psf->write_current ; - - return count / psf->sf.channels ; -} /* sf_writef_float */ - -/*------------------------------------------------------------------------------ -*/ - -sf_count_t -sf_write_double (SNDFILE *sndfile, const double *ptr, sf_count_t len) -{ SF_PRIVATE *psf ; - sf_count_t count ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (psf->mode == SFM_READ) - { psf->error = SFE_NOT_WRITEMODE ; - return 0 ; - } ; - - if (len % psf->sf.channels) - { psf->error = SFE_BAD_WRITE_ALIGN ; - return 0 ; - } ; - - if (! psf->write_double || psf->seek == NULL) - { psf->error = SFE_UNIMPLEMENTED ; - return 0 ; - } ; - - if (psf->last_op != SFM_WRITE) - if (psf->seek (psf, SFM_WRITE, psf->write_current) < 0) - return 0 ; - - if (psf->have_written == SF_FALSE && psf->write_header != NULL) - psf->write_header (psf, SF_FALSE) ; - psf->have_written = SF_TRUE ; - - count = psf->write_double (psf, ptr, len) ; - - psf->write_current += count / psf->sf.channels ; - - psf->last_op = SFM_WRITE ; - - if (psf->auto_header && psf->write_header != NULL) - psf->write_header (psf, SF_TRUE) ; - - if (psf->write_current > psf->sf.frames) - psf->sf.frames = psf->write_current ; - - return count ; -} /* sf_write_double */ - -sf_count_t -sf_writef_double (SNDFILE *sndfile, const double *ptr, sf_count_t frames) -{ SF_PRIVATE *psf ; - sf_count_t count ; - - VALIDATE_SNDFILE_AND_ASSIGN_PSF (sndfile, psf, 1) ; - - if (psf->mode == SFM_READ) - { psf->error = SFE_NOT_WRITEMODE ; - return 0 ; - } ; - - if (! psf->write_double || psf->seek == NULL) - { psf->error = SFE_UNIMPLEMENTED ; - return 0 ; - } ; - - if (psf->last_op != SFM_WRITE) - if (psf->seek (psf, SFM_WRITE, psf->write_current) < 0) - return 0 ; - - if (psf->have_written == SF_FALSE && psf->write_header != NULL) - psf->write_header (psf, SF_FALSE) ; - psf->have_written = SF_TRUE ; - - count = psf->write_double (psf, ptr, frames * psf->sf.channels) ; - - psf->write_current += count / psf->sf.channels ; - - psf->last_op = SFM_WRITE ; - - if (psf->auto_header && psf->write_header != NULL) - psf->write_header (psf, SF_TRUE) ; - - if (psf->write_current > psf->sf.frames) - psf->sf.frames = psf->write_current ; - - return count / psf->sf.channels ; -} /* sf_writef_double */ - -/*========================================================================= -** Private functions. -*/ - -static int -try_resource_fork (SF_PRIVATE * psf, int mode) -{ - if (psf_open_rsrc (psf, mode) != 0) - return 0 ; - - /* More checking here. */ - psf_log_printf (psf, "Resource fork : %s\n", psf->rsrcpath) ; - - return SF_FORMAT_SD2 ; -} /* try_resource_fork */ - -static int -format_from_extension (SF_PRIVATE *psf) -{ char *cptr ; - char buffer [16] ; - - if (psf->filename == NULL) - return 0 ; - - if ((cptr = strrchr (psf->filename, '.')) == NULL) - return 0 ; - - cptr ++ ; - if (strlen (cptr) > sizeof (buffer) - 1) - return 0 ; - - strncpy (buffer, cptr, sizeof (buffer)) ; - buffer [sizeof (buffer) - 1] = 0 ; - - /* Convert everything in the buffer to lower case. */ - cptr = buffer ; - while (*cptr) - { *cptr = tolower (*cptr) ; - cptr ++ ; - } ; - - cptr = buffer ; - - if (strcmp (cptr, "au") == 0) - { psf->sf.channels = 1 ; - psf->sf.samplerate = 8000 ; - return SF_FORMAT_RAW | SF_FORMAT_ULAW ; - } ; - - if (strcmp (cptr, "snd") == 0) - { psf->sf.channels = 1 ; - psf->sf.samplerate = 8000 ; - return SF_FORMAT_RAW | SF_FORMAT_ULAW ; - } ; - - if (strcmp (cptr, "vox") == 0) - { psf->sf.channels = 1 ; - psf->sf.samplerate = 8000 ; - return SF_FORMAT_RAW | SF_FORMAT_VOX_ADPCM ; - } ; - - if (strcmp (cptr, "gsm") == 0) - { psf->sf.channels = 1 ; - psf->sf.samplerate = 8000 ; - return SF_FORMAT_RAW | SF_FORMAT_GSM610 ; - } ; - - return 0 ; -} /* format_from_extension */ - -static int -guess_file_type (SF_PRIVATE *psf) -{ int buffer [3], format ; - - if (psf_binheader_readf (psf, "b", &buffer, SIGNED_SIZEOF (buffer)) != SIGNED_SIZEOF (buffer)) - { psf->error = SFE_BAD_FILE_READ ; - return 0 ; - } ; - - if ((buffer [0] == MAKE_MARKER ('R', 'I', 'F', 'F') || buffer [0] == MAKE_MARKER ('R', 'I', 'F', 'X')) - && buffer [2] == MAKE_MARKER ('W', 'A', 'V', 'E')) - return SF_FORMAT_WAV ; - - if (buffer [0] == MAKE_MARKER ('F', 'O', 'R', 'M')) - { if (buffer [2] == MAKE_MARKER ('A', 'I', 'F', 'F') || buffer [2] == MAKE_MARKER ('A', 'I', 'F', 'C')) - return SF_FORMAT_AIFF ; - if (buffer [2] == MAKE_MARKER ('8', 'S', 'V', 'X') || buffer [2] == MAKE_MARKER ('1', '6', 'S', 'V')) - return SF_FORMAT_SVX ; - return 0 ; - } ; - - if (buffer [0] == MAKE_MARKER ('.', 's', 'n', 'd') || buffer [0] == MAKE_MARKER ('d', 'n', 's', '.')) - return SF_FORMAT_AU ; - - if ((buffer [0] == MAKE_MARKER ('f', 'a', 'p', ' ') || buffer [0] == MAKE_MARKER (' ', 'p', 'a', 'f'))) - return SF_FORMAT_PAF ; - - if (buffer [0] == MAKE_MARKER ('N', 'I', 'S', 'T')) - return SF_FORMAT_NIST ; - - if (buffer [0] == MAKE_MARKER ('C', 'r', 'e', 'a') && buffer [1] == MAKE_MARKER ('t', 'i', 'v', 'e')) - return SF_FORMAT_VOC ; - - if ((buffer [0] & MAKE_MARKER (0xFF, 0xFF, 0xF8, 0xFF)) == MAKE_MARKER (0x64, 0xA3, 0x00, 0x00) || - (buffer [0] & MAKE_MARKER (0xFF, 0xF8, 0xFF, 0xFF)) == MAKE_MARKER (0x00, 0x00, 0xA3, 0x64)) - return SF_FORMAT_IRCAM ; - - if (buffer [0] == MAKE_MARKER ('r', 'i', 'f', 'f')) - return SF_FORMAT_W64 ; - - if (buffer [0] == MAKE_MARKER (0, 0, 0x03, 0xE8) && buffer [1] == MAKE_MARKER (0, 0, 0, 1) && - buffer [2] == MAKE_MARKER (0, 0, 0, 1)) - return SF_FORMAT_MAT4 ; - - if (buffer [0] == MAKE_MARKER (0, 0, 0, 0) && buffer [1] == MAKE_MARKER (1, 0, 0, 0) && - buffer [2] == MAKE_MARKER (1, 0, 0, 0)) - return SF_FORMAT_MAT4 ; - - if (buffer [0] == MAKE_MARKER ('M', 'A', 'T', 'L') && buffer [1] == MAKE_MARKER ('A', 'B', ' ', '5')) - return SF_FORMAT_MAT5 ; - - if (buffer [0] == MAKE_MARKER ('P', 'V', 'F', '1')) - return SF_FORMAT_PVF ; - - if (buffer [0] == MAKE_MARKER ('E', 'x', 't', 'e') && buffer [1] == MAKE_MARKER ('n', 'd', 'e', 'd') && - buffer [2] == MAKE_MARKER (' ', 'I', 'n', 's')) - return SF_FORMAT_XI ; - - if (buffer [0] == MAKE_MARKER ('c', 'a', 'f', 'f') && buffer [2] == MAKE_MARKER ('d', 'e', 's', 'c')) - return SF_FORMAT_CAF ; - - if (ENABLE_EXPERIMENTAL_CODE && buffer [0] == MAKE_MARKER ('O', 'g', 'g', 'S')) - return SF_FORMAT_OGG ; - - if (buffer [0] == MAKE_MARKER ('A', 'L', 'a', 'w') && buffer [1] == MAKE_MARKER ('S', 'o', 'u', 'n') - && buffer [2] == MAKE_MARKER ('d', 'F', 'i', 'l')) - return SF_FORMAT_WVE ; - - if (buffer [0] == MAKE_MARKER ('D', 'i', 'a', 'm') && buffer [1] == MAKE_MARKER ('o', 'n', 'd', 'W') - && buffer [2] == MAKE_MARKER ('a', 'r', 'e', ' ')) - return SF_FORMAT_DWD ; - - if (buffer [0] == MAKE_MARKER ('L', 'M', '8', '9') || buffer [0] == MAKE_MARKER ('5', '3', 0, 0)) - return SF_FORMAT_TXW ; - - if ((buffer [0] & MAKE_MARKER (0xFF, 0xFF, 0x80, 0xFF)) == MAKE_MARKER (0xF0, 0x7E, 0, 0x01)) - return SF_FORMAT_SDS ; - - if (buffer [0] == MAKE_MARKER ('C', 'A', 'T', ' ') && buffer [2] == MAKE_MARKER ('R', 'E', 'X', '2')) - return SF_FORMAT_REX2 ; - - if (buffer [0] == MAKE_MARKER (0x30, 0x26, 0xB2, 0x75) && buffer [1] == MAKE_MARKER (0x8E, 0x66, 0xCF, 0x11)) - return 0 /*-SF_FORMAT_WMA-*/ ; - - /* HMM (Hidden Markov Model) Tool Kit. */ - if (2 * BEI2H_INT (buffer [0]) + 12 == psf->filelength && buffer [2] == MAKE_MARKER (0, 2, 0, 0)) - return SF_FORMAT_HTK ; - - if (buffer [0] == MAKE_MARKER ('f', 'L', 'a', 'C')) - return SF_FORMAT_FLAC ; - - /* Turtle Beach SMP 16-bit */ - if (buffer [0] == MAKE_MARKER ('S', 'O', 'U', 'N') && buffer [1] == MAKE_MARKER ('D', ' ', 'S', 'A')) - return 0 ; - - if (buffer [0] == MAKE_MARKER ('S', 'Y', '8', '0') || buffer [0] == MAKE_MARKER ('S', 'Y', '8', '5')) - return 0 ; - - if (buffer [0] == MAKE_MARKER ('a', 'j', 'k', 'g')) - return 0 /*-SF_FORMAT_SHN-*/ ; - - if (buffer [0] == MAKE_MARKER ('2', 'B', 'I', 'T')) - return SF_FORMAT_AVR ; - - /* This must be the second last one. */ - if (psf->filelength > 0 && (format = try_resource_fork (psf, SFM_READ)) != 0) - return format ; - - return 0 ; -} /* guess_file_type */ - - -static int -validate_sfinfo (SF_INFO *sfinfo) -{ if (sfinfo->samplerate < 1) - return 0 ; - if (sfinfo->frames < 0) - return 0 ; - if (sfinfo->channels < 1) - return 0 ; - if ((sfinfo->format & SF_FORMAT_TYPEMASK) == 0) - return 0 ; - if ((sfinfo->format & SF_FORMAT_SUBMASK) == 0) - return 0 ; - if (sfinfo->sections < 1) - return 0 ; - return 1 ; -} /* validate_sfinfo */ - -static int -validate_psf (SF_PRIVATE *psf) -{ - if (psf->datalength < 0) - { psf_log_printf (psf, "Invalid SF_PRIVATE field : datalength == %D.\n", psf->datalength) ; - return 0 ; - } ; - if (psf->dataoffset < 0) - { psf_log_printf (psf, "Invalid SF_PRIVATE field : dataoffset == %D.\n", psf->dataoffset) ; - return 0 ; - } ; - if (psf->blockwidth && psf->blockwidth != psf->sf.channels * psf->bytewidth) - { psf_log_printf (psf, "Invalid SF_PRIVATE field : channels * bytewidth == %d.\n", - psf->sf.channels * psf->bytewidth) ; - return 0 ; - } ; - return 1 ; -} /* validate_psf */ - -static void -save_header_info (SF_PRIVATE *psf) -{ LSF_SNPRINTF (sf_logbuffer, sizeof (sf_logbuffer), "%s", psf->logbuffer) ; -} /* save_header_info */ - -static void -copy_filename (SF_PRIVATE *psf, const char *path) -{ const char *ccptr ; - char *cptr ; - - LSF_SNPRINTF (psf->filepath, sizeof (psf->filepath), "%s", path) ; - if ((ccptr = strrchr (path, '/')) || (ccptr = strrchr (path, '\\'))) - ccptr ++ ; - else - ccptr = path ; - - LSF_SNPRINTF (psf->filename, sizeof (psf->filename), "%s", ccptr) ; - - /* Now grab the directory. */ - LSF_SNPRINTF (psf->directory, sizeof (psf->directory), "%s", path) ; - if ((cptr = strrchr (psf->directory, '/')) || (cptr = strrchr (psf->directory, '\\'))) - cptr [1] = 0 ; - else - psf->directory [0] = 0 ; - - return ; -} /* copy_filename */ - -/*============================================================================== -*/ - -static int -psf_close (SF_PRIVATE *psf) -{ int error ; - - if (psf->codec_close) - error = psf->codec_close (psf) ; - if (psf->container_close) - error = psf->container_close (psf) ; - - psf_fclose (psf) ; - psf_close_rsrc (psf) ; - - if (psf->fdata) - free (psf->fdata) ; - - if (psf->interleave) - free (psf->interleave) ; - - if (psf->dither) - free (psf->dither) ; - - if (psf->peak_info) - free (psf->peak_info) ; - - if (psf->broadcast_info) - free (psf->broadcast_info) ; - - if (psf->loop_info) - free (psf->loop_info) ; - - if (psf->instrument) - free (psf->instrument) ; - - if (psf->format_desc) - { memset (psf->format_desc, 0, strlen (psf->format_desc)) ; - free (psf->format_desc) ; - } ; - - memset (psf, 0, sizeof (SF_PRIVATE)) ; - free (psf) ; - - return 0 ; -} /* psf_close */ - -static int -psf_open_file (SF_PRIVATE *psf, int mode, SF_INFO *sfinfo) -{ int error, format ; - - if (mode != SFM_READ && mode != SFM_WRITE && mode != SFM_RDWR) - return SFE_BAD_OPEN_MODE ; - - if (sfinfo == NULL) - return SFE_BAD_SF_INFO_PTR ; - - /* Zero out these fields. */ - sfinfo->frames = 0 ; - sfinfo->sections = 0 ; - sfinfo->seekable = 0 ; - - if (mode == SFM_READ) - { if ((sfinfo->format & SF_FORMAT_TYPEMASK) == SF_FORMAT_RAW) - { if (sf_format_check (sfinfo) == 0) - return SFE_RAW_BAD_FORMAT ; - } - else - memset (sfinfo, 0, sizeof (SF_INFO)) ; - } ; - - sf_errno = error = 0 ; - sf_logbuffer [0] = 0 ; - - memcpy (&(psf->sf), sfinfo, sizeof (SF_INFO)) ; - - psf->Magick = SNDFILE_MAGICK ; - psf->norm_float = SF_TRUE ; - psf->norm_double = SF_TRUE ; - psf->mode = mode ; - psf->dataoffset = -1 ; - psf->datalength = -1 ; - psf->read_current = -1 ; - psf->write_current = -1 ; - psf->auto_header = SF_FALSE ; - psf->rwf_endian = SF_ENDIAN_LITTLE ; - psf->seek = psf_default_seek ; - psf->float_int_mult = 0 ; - psf->float_max = -1.0 ; - - psf->sf.sections = 1 ; - - psf->is_pipe = psf_is_pipe (psf) ; - - if (psf->is_pipe) - { psf->sf.seekable = SF_FALSE ; - psf->filelength = SF_COUNT_MAX ; - } - else - { psf->sf.seekable = SF_TRUE ; - - /* File is open, so get the length. */ - psf->filelength = psf_get_filelen (psf) ; - } ; - - if (psf->fileoffset > 0) - { switch (psf->mode) - { case SFM_READ : - if (psf->filelength < 44) - { psf_log_printf (psf, "Short filelength: %D (fileoffset: %D)\n", psf->filelength, psf->fileoffset) ; - return SFE_BAD_OFFSET ; - } ; - break ; - - case SFM_WRITE : - psf->fileoffset = 0 ; - psf_fseek (psf, 0, SEEK_END) ; - psf->fileoffset = psf_ftell (psf) ; - break ; - - case SFM_RDWR : - return SFE_NO_EMBEDDED_RDWR ; - } ; - - psf_log_printf (psf, "Embedded file offset : %D\n", psf->fileoffset) ; - } ; - - if (psf->filelength == SF_COUNT_MAX) - psf_log_printf (psf, "Length : unknown\n") ; - else - psf_log_printf (psf, "Length : %D\n", psf->filelength) ; - - if (mode == SFM_WRITE || (mode == SFM_RDWR && psf->filelength == 0)) - { /* If the file is being opened for write or RDWR and the file is currently - ** empty, then the SF_INFO struct must contain valid data. - */ - if (sf_format_check (&(psf->sf)) == 0) - return SFE_BAD_OPEN_FORMAT ; - } - else if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_RAW) - { /* If type RAW has not been specified then need to figure out file type. */ - psf->sf.format = guess_file_type (psf) ; - - if (psf->sf.format == 0) - psf->sf.format = format_from_extension (psf) ; - } ; - - /* Prevent unnecessary seeks */ - psf->last_op = psf->mode ; - - /* Set bytewidth if known. */ - switch (psf->sf.format & SF_FORMAT_SUBMASK) - { case SF_FORMAT_PCM_S8 : - case SF_FORMAT_PCM_U8 : - case SF_FORMAT_ULAW : - case SF_FORMAT_ALAW : - case SF_FORMAT_DPCM_8 : - psf->bytewidth = 1 ; - break ; - - case SF_FORMAT_PCM_16 : - case SF_FORMAT_DPCM_16 : - psf->bytewidth = 2 ; - break ; - - case SF_FORMAT_PCM_24 : - psf->bytewidth = 3 ; - break ; - - case SF_FORMAT_PCM_32 : - case SF_FORMAT_FLOAT : - psf->bytewidth = 4 ; - break ; - - case SF_FORMAT_DOUBLE : - psf->bytewidth = 8 ; - break ; - } ; - - /* Call the initialisation function for the relevant file type. */ - switch (psf->sf.format & SF_FORMAT_TYPEMASK) - { case SF_FORMAT_WAV : - case SF_FORMAT_WAVEX : - error = wav_open (psf) ; - break ; - - case SF_FORMAT_AIFF : - error = aiff_open (psf) ; - break ; - - case SF_FORMAT_AU : - error = au_open (psf) ; - break ; - - case SF_FORMAT_RAW : - error = raw_open (psf) ; - break ; - - case SF_FORMAT_W64 : - error = w64_open (psf) ; - break ; - - /* Lite remove start */ - case SF_FORMAT_PAF : - error = paf_open (psf) ; - break ; - - case SF_FORMAT_SVX : - error = svx_open (psf) ; - break ; - - case SF_FORMAT_NIST : - error = nist_open (psf) ; - break ; - - case SF_FORMAT_IRCAM : - error = ircam_open (psf) ; - break ; - - case SF_FORMAT_VOC : - error = voc_open (psf) ; - break ; - - case SF_FORMAT_SDS : - error = sds_open (psf) ; - break ; - - case SF_FORMAT_OGG : - error = ogg_open (psf) ; - break ; - - case SF_FORMAT_TXW : - error = txw_open (psf) ; - break ; - - case SF_FORMAT_WVE : - error = wve_open (psf) ; - break ; - - case SF_FORMAT_DWD : - error = dwd_open (psf) ; - break ; - - case SF_FORMAT_MAT4 : - error = mat4_open (psf) ; - break ; - - case SF_FORMAT_MAT5 : - error = mat5_open (psf) ; - break ; - - case SF_FORMAT_PVF : - error = pvf_open (psf) ; - break ; - - case SF_FORMAT_XI : - error = xi_open (psf) ; - break ; - - case SF_FORMAT_HTK : - error = htk_open (psf) ; - break ; - - case SF_FORMAT_SD2 : - error = sd2_open (psf) ; - break ; - - case SF_FORMAT_REX2 : - error = rx2_open (psf) ; - break ; - - case SF_FORMAT_AVR : - error = avr_open (psf) ; - break ; - - case SF_FORMAT_FLAC : - error = flac_open (psf) ; - break ; - - case SF_FORMAT_CAF : - error = caf_open (psf) ; - break ; - - /* Lite remove end */ - - default : - error = SFE_UNKNOWN_FORMAT ; - } ; - - if (error) - { if (error != SF_ERR_SYSTEM && error != SF_ERR_UNSUPPORTED_ENCODING) - { psf_log_printf (psf, "Parse error : %s\n", sf_error_number (error)) ; - error = SF_ERR_MALFORMED_FILE ; - } ; - - return error ; - } ; - - /* For now, check whether embedding is supported. */ - format = psf->sf.format & SF_FORMAT_TYPEMASK ; - if (psf->fileoffset > 0 && - (format != SF_FORMAT_WAV) && (format != SF_FORMAT_WAVEX) && - (format != SF_FORMAT_AIFF) && (format != SF_FORMAT_AU) - ) - return SFE_NO_EMBED_SUPPORT ; - - if (psf->fileoffset > 0) - psf_log_printf (psf, "Embedded file length : %D\n", psf->filelength) ; - - if (mode == SFM_RDWR && sf_format_check (&(psf->sf)) == 0) - return SFE_BAD_RDWR_FORMAT ; - - if (validate_sfinfo (&(psf->sf)) == 0) - { psf_log_SF_INFO (psf) ; - save_header_info (psf) ; - return SFE_BAD_SF_INFO ; - } ; - - if (validate_psf (psf) == 0) - { save_header_info (psf) ; - return SFE_INTERNAL ; - } ; - - psf->read_current = 0 ; - psf->write_current = (psf->mode == SFM_RDWR) ? psf->sf.frames : 0 ; - - memcpy (sfinfo, &(psf->sf), sizeof (SF_INFO)) ; - - return 0 ; -} /* psf_open_file */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: cd4f9e91-a8ec-4154-9bf6-fe4b8c69a615 -*/ diff --git a/libs/libsndfile/src/sndfile.h.in b/libs/libsndfile/src/sndfile.h.in deleted file mode 100644 index 93f1d61e2b..0000000000 --- a/libs/libsndfile/src/sndfile.h.in +++ /dev/null @@ -1,554 +0,0 @@ -/* -** Copyright (C) 1999-2006 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -/* -** sndfile.h -- system-wide definitions -** -** API documentation is in the doc/ directory of the source code tarball -** and at http://www.mega-nerd.com/libsndfile/api.html. -*/ - -#ifndef SNDFILE_H -#define SNDFILE_H - -/* This is the version 1.0.X header file. */ -#define SNDFILE_1 - -#include - -/* For the Metrowerks CodeWarrior Pro Compiler (mainly MacOS) */ - -#if (defined (__MWERKS__)) -#include -#else -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* The following file types can be read and written. -** A file type would consist of a major type (ie SF_FORMAT_WAV) bitwise -** ORed with a minor type (ie SF_FORMAT_PCM). SF_FORMAT_TYPEMASK and -** SF_FORMAT_SUBMASK can be used to separate the major and minor file -** types. -*/ - -enum -{ /* Major formats. */ - SF_FORMAT_WAV = 0x010000, /* Microsoft WAV format (little endian default). */ - SF_FORMAT_AIFF = 0x020000, /* Apple/SGI AIFF format (big endian). */ - SF_FORMAT_AU = 0x030000, /* Sun/NeXT AU format (big endian). */ - SF_FORMAT_RAW = 0x040000, /* RAW PCM data. */ - SF_FORMAT_PAF = 0x050000, /* Ensoniq PARIS file format. */ - SF_FORMAT_SVX = 0x060000, /* Amiga IFF / SVX8 / SV16 format. */ - SF_FORMAT_NIST = 0x070000, /* Sphere NIST format. */ - SF_FORMAT_VOC = 0x080000, /* VOC files. */ - SF_FORMAT_IRCAM = 0x0A0000, /* Berkeley/IRCAM/CARL */ - SF_FORMAT_W64 = 0x0B0000, /* Sonic Foundry's 64 bit RIFF/WAV */ - SF_FORMAT_MAT4 = 0x0C0000, /* Matlab (tm) V4.2 / GNU Octave 2.0 */ - SF_FORMAT_MAT5 = 0x0D0000, /* Matlab (tm) V5.0 / GNU Octave 2.1 */ - SF_FORMAT_PVF = 0x0E0000, /* Portable Voice Format */ - SF_FORMAT_XI = 0x0F0000, /* Fasttracker 2 Extended Instrument */ - SF_FORMAT_HTK = 0x100000, /* HMM Tool Kit format */ - SF_FORMAT_SDS = 0x110000, /* Midi Sample Dump Standard */ - SF_FORMAT_AVR = 0x120000, /* Audio Visual Research */ - SF_FORMAT_WAVEX = 0x130000, /* MS WAVE with WAVEFORMATEX */ - SF_FORMAT_SD2 = 0x160000, /* Sound Designer 2 */ - SF_FORMAT_FLAC = 0x170000, /* FLAC lossless file format */ - SF_FORMAT_CAF = 0x180000, /* Core Audio File format */ - - /* Subtypes from here on. */ - - SF_FORMAT_PCM_S8 = 0x0001, /* Signed 8 bit data */ - SF_FORMAT_PCM_16 = 0x0002, /* Signed 16 bit data */ - SF_FORMAT_PCM_24 = 0x0003, /* Signed 24 bit data */ - SF_FORMAT_PCM_32 = 0x0004, /* Signed 32 bit data */ - - SF_FORMAT_PCM_U8 = 0x0005, /* Unsigned 8 bit data (WAV and RAW only) */ - - SF_FORMAT_FLOAT = 0x0006, /* 32 bit float data */ - SF_FORMAT_DOUBLE = 0x0007, /* 64 bit float data */ - - SF_FORMAT_ULAW = 0x0010, /* U-Law encoded. */ - SF_FORMAT_ALAW = 0x0011, /* A-Law encoded. */ - SF_FORMAT_IMA_ADPCM = 0x0012, /* IMA ADPCM. */ - SF_FORMAT_MS_ADPCM = 0x0013, /* Microsoft ADPCM. */ - - SF_FORMAT_GSM610 = 0x0020, /* GSM 6.10 encoding. */ - SF_FORMAT_VOX_ADPCM = 0x0021, /* OKI / Dialogix ADPCM */ - - SF_FORMAT_G721_32 = 0x0030, /* 32kbs G721 ADPCM encoding. */ - SF_FORMAT_G723_24 = 0x0031, /* 24kbs G723 ADPCM encoding. */ - SF_FORMAT_G723_40 = 0x0032, /* 40kbs G723 ADPCM encoding. */ - - SF_FORMAT_DWVW_12 = 0x0040, /* 12 bit Delta Width Variable Word encoding. */ - SF_FORMAT_DWVW_16 = 0x0041, /* 16 bit Delta Width Variable Word encoding. */ - SF_FORMAT_DWVW_24 = 0x0042, /* 24 bit Delta Width Variable Word encoding. */ - SF_FORMAT_DWVW_N = 0x0043, /* N bit Delta Width Variable Word encoding. */ - - SF_FORMAT_DPCM_8 = 0x0050, /* 8 bit differential PCM (XI only) */ - SF_FORMAT_DPCM_16 = 0x0051, /* 16 bit differential PCM (XI only) */ - - /* Endian-ness options. */ - - SF_ENDIAN_FILE = 0x00000000, /* Default file endian-ness. */ - SF_ENDIAN_LITTLE = 0x10000000, /* Force little endian-ness. */ - SF_ENDIAN_BIG = 0x20000000, /* Force big endian-ness. */ - SF_ENDIAN_CPU = 0x30000000, /* Force CPU endian-ness. */ - - SF_FORMAT_SUBMASK = 0x0000FFFF, - SF_FORMAT_TYPEMASK = 0x0FFF0000, - SF_FORMAT_ENDMASK = 0x30000000 -} ; - -/* -** The following are the valid command numbers for the sf_command() -** interface. The use of these commands is documented in the file -** command.html in the doc directory of the source code distribution. -*/ - -enum -{ SFC_GET_LIB_VERSION = 0x1000, - SFC_GET_LOG_INFO = 0x1001, - - SFC_GET_NORM_DOUBLE = 0x1010, - SFC_GET_NORM_FLOAT = 0x1011, - SFC_SET_NORM_DOUBLE = 0x1012, - SFC_SET_NORM_FLOAT = 0x1013, - SFC_SET_SCALE_FLOAT_INT_READ = 0x1014, - - SFC_GET_SIMPLE_FORMAT_COUNT = 0x1020, - SFC_GET_SIMPLE_FORMAT = 0x1021, - - SFC_GET_FORMAT_INFO = 0x1028, - - SFC_GET_FORMAT_MAJOR_COUNT = 0x1030, - SFC_GET_FORMAT_MAJOR = 0x1031, - SFC_GET_FORMAT_SUBTYPE_COUNT = 0x1032, - SFC_GET_FORMAT_SUBTYPE = 0x1033, - - SFC_CALC_SIGNAL_MAX = 0x1040, - SFC_CALC_NORM_SIGNAL_MAX = 0x1041, - SFC_CALC_MAX_ALL_CHANNELS = 0x1042, - SFC_CALC_NORM_MAX_ALL_CHANNELS = 0x1043, - SFC_GET_SIGNAL_MAX = 0x1044, - SFC_GET_MAX_ALL_CHANNELS = 0x1045, - - SFC_SET_ADD_PEAK_CHUNK = 0x1050, - - SFC_UPDATE_HEADER_NOW = 0x1060, - SFC_SET_UPDATE_HEADER_AUTO = 0x1061, - - SFC_FILE_TRUNCATE = 0x1080, - - SFC_SET_RAW_START_OFFSET = 0x1090, - - SFC_SET_DITHER_ON_WRITE = 0x10A0, - SFC_SET_DITHER_ON_READ = 0x10A1, - - SFC_GET_DITHER_INFO_COUNT = 0x10A2, - SFC_GET_DITHER_INFO = 0x10A3, - - SFC_GET_EMBED_FILE_INFO = 0x10B0, - - SFC_SET_CLIPPING = 0x10C0, - SFC_GET_CLIPPING = 0x10C1, - - SFC_GET_INSTRUMENT = 0x10D0, - SFC_SET_INSTRUMENT = 0x10D1, - - SFC_GET_LOOP_INFO = 0x10E0, - - SFC_GET_BROADCAST_INFO = 0x10F0, - SFC_SET_BROADCAST_INFO = 0x10F1, - - /* Following commands for testing only. */ - SFC_TEST_IEEE_FLOAT_REPLACE = 0x6001, - - /* - ** SFC_SET_ADD_* values are deprecated and will disappear at some - ** time in the future. They are guaranteed to be here up to and - ** including version 1.0.8 to avoid breakage of existng software. - ** They currently do nothing and will continue to do nothing. - */ - SFC_SET_ADD_DITHER_ON_WRITE = 0x1070, - SFC_SET_ADD_DITHER_ON_READ = 0x1071 -} ; - - -/* -** String types that can be set and read from files. Not all file types -** support this and even the file types which support one, may not support -** all string types. -*/ - -enum -{ SF_STR_TITLE = 0x01, - SF_STR_COPYRIGHT = 0x02, - SF_STR_SOFTWARE = 0x03, - SF_STR_ARTIST = 0x04, - SF_STR_COMMENT = 0x05, - SF_STR_DATE = 0x06 -} ; - -/* -** Use the following as the start and end index when doing metadata -** transcoding. -*/ - -#define SF_STR_FIRST SF_STR_TITLE -#define SF_STR_LAST SF_STR_DATE - -enum -{ /* True and false */ - SF_FALSE = 0, - SF_TRUE = 1, - - /* Modes for opening files. */ - SFM_READ = 0x10, - SFM_WRITE = 0x20, - SFM_RDWR = 0x30 -} ; - -/* Public error values. These are guaranteed to remain unchanged for the duration -** of the library major version number. -** There are also a large number of private error numbers which are internal to -** the library which can change at any time. -*/ - -enum -{ SF_ERR_NO_ERROR = 0, - SF_ERR_UNRECOGNISED_FORMAT = 1, - SF_ERR_SYSTEM = 2, - SF_ERR_MALFORMED_FILE = 3, - SF_ERR_UNSUPPORTED_ENCODING = 4 -} ; - -/* A SNDFILE* pointer can be passed around much like stdio.h's FILE* pointer. */ - -typedef struct SNDFILE_tag SNDFILE ; - -/* The following typedef is system specific and is defined when libsndfile is. -** compiled. sf_count_t can be one of loff_t (Linux), off_t (*BSD), -** off64_t (Solaris), __int64_t (Win32) etc. -*/ - -typedef @TYPEOF_SF_COUNT_T@ sf_count_t ; - -#define SF_COUNT_MAX @SF_COUNT_MAX@ - -/* A pointer to a SF_INFO structure is passed to sf_open_read () and filled in. -** On write, the SF_INFO structure is filled in by the user and passed into -** sf_open_write (). -*/ - -struct SF_INFO -{ sf_count_t frames ; /* Used to be called samples. Changed to avoid confusion. */ - int samplerate ; - int channels ; - int format ; - int sections ; - int seekable ; -} ; - -typedef struct SF_INFO SF_INFO ; - -/* The SF_FORMAT_INFO struct is used to retrieve information about the sound -** file formats libsndfile supports using the sf_command () interface. -** -** Using this interface will allow applications to support new file formats -** and encoding types when libsndfile is upgraded, without requiring -** re-compilation of the application. -** -** Please consult the libsndfile documentation (particularly the information -** on the sf_command () interface) for examples of its use. -*/ - -typedef struct -{ int format ; - const char *name ; - const char *extension ; -} SF_FORMAT_INFO ; - -/* -** Enums and typedefs for adding dither on read and write. -** See the html documentation for sf_command(), SFC_SET_DITHER_ON_WRITE -** and SFC_SET_DITHER_ON_READ. -*/ - -enum -{ SFD_DEFAULT_LEVEL = 0, - SFD_CUSTOM_LEVEL = 0x40000000, - - SFD_NO_DITHER = 500, - SFD_WHITE = 501, - SFD_TRIANGULAR_PDF = 502 -} ; - -typedef struct -{ int type ; - double level ; - const char *name ; -} SF_DITHER_INFO ; - -/* Struct used to retrieve information about a file embedded within a -** larger file. See SFC_GET_EMBED_FILE_INFO. -*/ - -typedef struct -{ sf_count_t offset ; - sf_count_t length ; -} SF_EMBED_FILE_INFO ; - -/* -** Structs used to retrieve music sample information from a file. -*/ - -enum -{ /* - ** The loop mode field in SF_INSTRUMENT will be one of the following. - */ - SF_LOOP_NONE = 800, - SF_LOOP_FORWARD, - SF_LOOP_BACKWARD, - SF_LOOP_ALTERNATING -} ; - -typedef struct -{ int gain ; - char basenote, detune ; - char velocity_lo, velocity_hi ; - char key_lo, key_hi ; - int loop_count ; - - struct - { int mode ; - unsigned int start ; - unsigned int end ; - unsigned int count ; - } loops [16] ; /* make variable in a sensible way */ -} SF_INSTRUMENT ; - - - -/* Struct used to retrieve loop information from a file.*/ -typedef struct -{ - short time_sig_num ; /* any positive integer > 0 */ - short time_sig_den ; /* any positive power of 2 > 0 */ - int loop_mode ; /* see SF_LOOP enum */ - - int num_beats ; /* this is NOT the amount of quarter notes !!!*/ - /* a full bar of 4/4 is 4 beats */ - /* a full bar of 7/8 is 7 beats */ - - float bpm ; /* suggestion, as it can be calculated using other fields:*/ - /* file's lenght, file's sampleRate and our time_sig_den*/ - /* -> bpms are always the amount of _quarter notes_ per minute */ - - int root_key ; /* MIDI note, or -1 for None */ - int future [6] ; -} SF_LOOP_INFO ; - - -/* Struct used to retrieve broadcast (EBU) information from a file. -** Strongly (!) based on EBU "bext" chunk format used in Broadcast WAVE. -*/ -typedef struct -{ char description [256] ; - char originator [32] ; - char originator_reference [32] ; - char origination_date [10] ; - char origination_time [8] ; - int time_reference_low ; - int time_reference_high ; - short version ; - char umid [64] ; - char reserved [190] ; - unsigned int coding_history_size ; - char coding_history [256] ; -} SF_BROADCAST_INFO ; - -typedef sf_count_t (*sf_vio_get_filelen) (void *user_data) ; -typedef sf_count_t (*sf_vio_seek) (sf_count_t offset, int whence, void *user_data) ; -typedef sf_count_t (*sf_vio_read) (void *ptr, sf_count_t count, void *user_data) ; -typedef sf_count_t (*sf_vio_write) (const void *ptr, sf_count_t count, void *user_data) ; -typedef sf_count_t (*sf_vio_tell) (void *user_data) ; - -struct SF_VIRTUAL_IO -{ sf_vio_get_filelen get_filelen ; - sf_vio_seek seek ; - sf_vio_read read ; - sf_vio_write write ; - sf_vio_tell tell ; -} ; - -typedef struct SF_VIRTUAL_IO SF_VIRTUAL_IO ; - -/* Open the specified file for read, write or both. On error, this will -** return a NULL pointer. To find the error number, pass a NULL SNDFILE -** to sf_perror () or sf_error_str (). -** All calls to sf_open() should be matched with a call to sf_close(). -*/ - -SNDFILE* sf_open (const char *path, int mode, SF_INFO *sfinfo) ; - -/* Use the existing file descriptor to create a SNDFILE object. If close_desc -** is TRUE, the file descriptor will be closed when sf_close() is called. If -** it is FALSE, the descritor will not be closed. -** When passed a descriptor like this, the library will assume that the start -** of file header is at the current file offset. This allows sound files within -** larger container files to be read and/or written. -** On error, this will return a NULL pointer. To find the error number, pass a -** NULL SNDFILE to sf_perror () or sf_error_str (). -** All calls to sf_open_fd() should be matched with a call to sf_close(). - -*/ - -SNDFILE* sf_open_fd (int fd, int mode, SF_INFO *sfinfo, int close_desc) ; - -SNDFILE* sf_open_virtual (SF_VIRTUAL_IO *sfvirtual, int mode, SF_INFO *sfinfo, void *user_data) ; - -/* sf_error () returns a error number which can be translated to a text -** string using sf_error_number(). -*/ - -int sf_error (SNDFILE *sndfile) ; - -/* sf_strerror () returns to the caller a pointer to the current error message for -** the given SNDFILE. -*/ - -const char* sf_strerror (SNDFILE *sndfile) ; - -/* sf_error_number () allows the retrieval of the error string for each internal -** error number. -** -*/ - -const char* sf_error_number (int errnum) ; - -/* The following three error functions are deprecated but they will remain in the -** library for the forseeable future. The function sf_strerror() should be used -** in their place. -*/ - -int sf_perror (SNDFILE *sndfile) ; -int sf_error_str (SNDFILE *sndfile, char* str, size_t len) ; - - -/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */ - -int sf_command (SNDFILE *sndfile, int command, void *data, int datasize) ; - -/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */ - -int sf_format_check (const SF_INFO *info) ; - -/* Seek within the waveform data chunk of the SNDFILE. sf_seek () uses -** the same values for whence (SEEK_SET, SEEK_CUR and SEEK_END) as -** stdio.h function fseek (). -** An offset of zero with whence set to SEEK_SET will position the -** read / write pointer to the first data sample. -** On success sf_seek returns the current position in (multi-channel) -** samples from the start of the file. -** Please see the libsndfile documentation for moving the read pointer -** separately from the write pointer on files open in mode SFM_RDWR. -** On error all of these functions return -1. -*/ - -sf_count_t sf_seek (SNDFILE *sndfile, sf_count_t frames, int whence) ; - -/* Functions for retrieving and setting string data within sound files. -** Not all file types support this features; AIFF and WAV do. For both -** functions, the str_type parameter must be one of the SF_STR_* values -** defined above. -** On error, sf_set_string() returns non-zero while sf_get_string() -** returns NULL. -*/ - -int sf_set_string (SNDFILE *sndfile, int str_type, const char* str) ; - -const char* sf_get_string (SNDFILE *sndfile, int str_type) ; - -/* Functions for reading/writing the waveform data of a sound file. -*/ - -sf_count_t sf_read_raw (SNDFILE *sndfile, void *ptr, sf_count_t bytes) ; -sf_count_t sf_write_raw (SNDFILE *sndfile, const void *ptr, sf_count_t bytes) ; - -/* Functions for reading and writing the data chunk in terms of frames. -** The number of items actually read/written = frames * number of channels. -** sf_xxxx_raw read/writes the raw data bytes from/to the file -** sf_xxxx_short passes data in the native short format -** sf_xxxx_int passes data in the native int format -** sf_xxxx_float passes data in the native float format -** sf_xxxx_double passes data in the native double format -** All of these read/write function return number of frames read/written. -*/ - -sf_count_t sf_readf_short (SNDFILE *sndfile, short *ptr, sf_count_t frames) ; -sf_count_t sf_writef_short (SNDFILE *sndfile, const short *ptr, sf_count_t frames) ; - -sf_count_t sf_readf_int (SNDFILE *sndfile, int *ptr, sf_count_t frames) ; -sf_count_t sf_writef_int (SNDFILE *sndfile, const int *ptr, sf_count_t frames) ; - -sf_count_t sf_readf_float (SNDFILE *sndfile, float *ptr, sf_count_t frames) ; -sf_count_t sf_writef_float (SNDFILE *sndfile, const float *ptr, sf_count_t frames) ; - -sf_count_t sf_readf_double (SNDFILE *sndfile, double *ptr, sf_count_t frames) ; -sf_count_t sf_writef_double (SNDFILE *sndfile, const double *ptr, sf_count_t frames) ; - -/* Functions for reading and writing the data chunk in terms of items. -** Otherwise similar to above. -** All of these read/write function return number of items read/written. -*/ - -sf_count_t sf_read_short (SNDFILE *sndfile, short *ptr, sf_count_t items) ; -sf_count_t sf_write_short (SNDFILE *sndfile, const short *ptr, sf_count_t items) ; - -sf_count_t sf_read_int (SNDFILE *sndfile, int *ptr, sf_count_t items) ; -sf_count_t sf_write_int (SNDFILE *sndfile, const int *ptr, sf_count_t items) ; - -sf_count_t sf_read_float (SNDFILE *sndfile, float *ptr, sf_count_t items) ; -sf_count_t sf_write_float (SNDFILE *sndfile, const float *ptr, sf_count_t items) ; - -sf_count_t sf_read_double (SNDFILE *sndfile, double *ptr, sf_count_t items) ; -sf_count_t sf_write_double (SNDFILE *sndfile, const double *ptr, sf_count_t items) ; - -/* Close the SNDFILE and clean up all memory allocations associated with this -** file. -** Returns 0 on success, or an error number. -*/ - -int sf_close (SNDFILE *sndfile) ; - -/* If the file is opened SFM_WRITE or SFM_RDWR, call fsync() on the file -** to force the writing of data to disk. If the file is opened SFM_READ -** no action is taken. -*/ - -void sf_write_sync (SNDFILE *sndfile) ; - -#ifdef __cplusplus -} /* extern "C" */ -#endif /* __cplusplus */ - -#endif /* SNDFILE_H */ diff --git a/libs/libsndfile/src/stamp-h1 b/libs/libsndfile/src/stamp-h1 deleted file mode 100644 index 57ea58e405..0000000000 --- a/libs/libsndfile/src/stamp-h1 +++ /dev/null @@ -1 +0,0 @@ -timestamp for src/config.h diff --git a/libs/libsndfile/src/strings.c b/libs/libsndfile/src/strings.c deleted file mode 100644 index 2433f9b069..0000000000 --- a/libs/libsndfile/src/strings.c +++ /dev/null @@ -1,204 +0,0 @@ -/* -** Copyright (C) 2001-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include - -#include "sndfile.h" -#include "common.h" - -#define STRINGS_DEBUG 0 -#if STRINGS_DEBUG -static void hexdump (void *data, int len) ; -#endif - -int -psf_store_string (SF_PRIVATE *psf, int str_type, const char *str) -{ static char lsf_name [] = PACKAGE "-" VERSION ; - static char bracket_name [] = " (" PACKAGE "-" VERSION ")" ; - int k, str_len, len_remaining, str_flags ; - - if (str == NULL) - return SFE_STR_BAD_STRING ; - - str_len = strlen (str) ; - - /* A few extra checks for write mode. */ - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if ((psf->str_flags & SF_STR_ALLOW_START) == 0) - return SFE_STR_NO_SUPPORT ; - if ((psf->str_flags & SF_STR_ALLOW_END) == 0) - return SFE_STR_NO_SUPPORT ; - /* Only allow zero length strings for software. */ - if (str_type != SF_STR_SOFTWARE && str_len == 0) - return SFE_STR_BAD_STRING ; - } ; - - /* Determine flags */ - str_flags = SF_STR_LOCATE_START ; - if (psf->have_written) - { if ((psf->str_flags & SF_STR_ALLOW_END) == 0) - return SFE_STR_NO_ADD_END ; - str_flags = SF_STR_LOCATE_END ; - } ; - - /* Find next free slot in table. */ - for (k = 0 ; k < SF_MAX_STRINGS ; k++) - if (psf->strings [k].type == 0) - break ; - - /* More sanity checking. */ - if (k >= SF_MAX_STRINGS) - return SFE_STR_MAX_COUNT ; - - if (k == 0 && psf->str_end != NULL) - { psf_log_printf (psf, "SFE_STR_WEIRD : k == 0 && psf->str_end != NULL\n") ; - return SFE_STR_WEIRD ; - } ; - - if (k != 0 && psf->str_end == NULL) - { psf_log_printf (psf, "SFE_STR_WEIRD : k != 0 && psf->str_end == NULL\n") ; - return SFE_STR_WEIRD ; - } ; - - /* Special case for the first string. */ - if (k == 0) - psf->str_end = psf->str_storage ; - - -#if STRINGS_DEBUG - psf_log_printf (psf, "str_storage : %X\n", (int) psf->str_storage) ; - psf_log_printf (psf, "str_end : %X\n", (int) psf->str_end) ; - psf_log_printf (psf, "sizeof (str_storage) : %d\n", SIGNED_SIZEOF (psf->str_storage)) ; -#endif - - len_remaining = SIGNED_SIZEOF (psf->str_storage) - (psf->str_end - psf->str_storage) ; - - if (len_remaining < str_len + 2) - return SFE_STR_MAX_DATA ; - - switch (str_type) - { case SF_STR_SOFTWARE : - /* In write mode, want to append libsndfile-version to string. */ - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { psf->strings [k].type = str_type ; - psf->strings [k].str = psf->str_end ; - psf->strings [k].flags = str_flags ; - - memcpy (psf->str_end, str, str_len + 1) ; - psf->str_end += str_len ; - - /* - ** If the supplied string does not already contain a - ** libsndfile-X.Y.Z component, then add it. - */ - if (strstr (str, PACKAGE) == NULL && len_remaining > (int) (strlen (bracket_name) + str_len + 2)) - { if (strlen (str) == 0) - strncat (psf->str_end, lsf_name, len_remaining) ; - else - strncat (psf->str_end, bracket_name, len_remaining) ; - psf->str_end += strlen (psf->str_end) ; - } ; - - /* Plus one to catch string terminator. */ - psf->str_end += 1 ; - break ; - } ; - - /* Fall though if not write mode. */ - - case SF_STR_TITLE : - case SF_STR_COPYRIGHT : - case SF_STR_ARTIST : - case SF_STR_COMMENT : - case SF_STR_DATE : - psf->strings [k].type = str_type ; - psf->strings [k].str = psf->str_end ; - psf->strings [k].flags = str_flags ; - - /* Plus one to catch string terminator. */ - memcpy (psf->str_end, str, str_len + 1) ; - psf->str_end += str_len + 1 ; - break ; - - default : - return SFE_STR_BAD_TYPE ; - } ; - - psf->str_flags |= (psf->have_written) ? SF_STR_LOCATE_END : SF_STR_LOCATE_START ; - -#if STRINGS_DEBUG - hexdump (psf->str_storage, 300) ; -#endif - - return 0 ; -} /* psf_store_string */ - -int -psf_set_string (SF_PRIVATE *psf, int str_type, const char *str) -{ if (psf->mode == SFM_READ) - return SFE_STR_NOT_WRITE ; - - return psf_store_string (psf, str_type, str) ; -} /* psf_set_string */ - -const char* -psf_get_string (SF_PRIVATE *psf, int str_type) -{ int k ; - - for (k = 0 ; k < SF_MAX_STRINGS ; k++) - if (str_type == psf->strings [k].type) - return psf->strings [k].str ; - - return NULL ; -} /* psf_get_string */ - -#if STRINGS_DEBUG - -#include -static void -hexdump (void *data, int len) -{ unsigned char *ptr ; - int k ; - - ptr = data ; - - puts ("---------------------------------------------------------") ; - while (len >= 16) - { for (k = 0 ; k < 16 ; k++) - printf ("%02X ", ptr [k] & 0xFF) ; - printf (" ") ; - for (k = 0 ; k < 16 ; k++) - printf ("%c", isprint (ptr [k]) ? ptr [k] : '.') ; - puts ("") ; - ptr += 16 ; - len -= 16 ; - } ; -} /* hexdump */ - -#endif -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 04393aa1-9389-46fe-baf2-58a7bd544fd6 -*/ diff --git a/libs/libsndfile/src/svx.c b/libs/libsndfile/src/svx.c deleted file mode 100644 index 3ef461ddec..0000000000 --- a/libs/libsndfile/src/svx.c +++ /dev/null @@ -1,410 +0,0 @@ -/* -** Copyright (C) 1999-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - - -/*------------------------------------------------------------------------------ - * Macros to handle big/little endian issues. -*/ - -#define FORM_MARKER (MAKE_MARKER ('F', 'O', 'R', 'M')) -#define SVX8_MARKER (MAKE_MARKER ('8', 'S', 'V', 'X')) -#define SV16_MARKER (MAKE_MARKER ('1', '6', 'S', 'V')) -#define VHDR_MARKER (MAKE_MARKER ('V', 'H', 'D', 'R')) -#define BODY_MARKER (MAKE_MARKER ('B', 'O', 'D', 'Y')) - -#define ATAK_MARKER (MAKE_MARKER ('A', 'T', 'A', 'K')) -#define RLSE_MARKER (MAKE_MARKER ('R', 'L', 'S', 'E')) - -#define c_MARKER (MAKE_MARKER ('(', 'c', ')', ' ')) -#define NAME_MARKER (MAKE_MARKER ('N', 'A', 'M', 'E')) -#define AUTH_MARKER (MAKE_MARKER ('A', 'U', 'T', 'H')) -#define ANNO_MARKER (MAKE_MARKER ('A', 'N', 'N', 'O')) -#define CHAN_MARKER (MAKE_MARKER ('C', 'H', 'A', 'N')) - -/*------------------------------------------------------------------------------ - * Typedefs for file chunks. -*/ - -typedef struct -{ unsigned int oneShotHiSamples, repeatHiSamples, samplesPerHiCycle ; - unsigned short samplesPerSec ; - unsigned char octave, compression ; - unsigned int volume ; -} VHDR_CHUNK ; - -enum { - HAVE_FORM = 0x01, - - HAVE_SVX = 0x02, - HAVE_VHDR = 0x04, - HAVE_BODY = 0x08 -} ; - -/*------------------------------------------------------------------------------ - * Private static functions. -*/ - -static int svx_close (SF_PRIVATE *psf) ; -static int svx_write_header (SF_PRIVATE *psf, int calc_length) ; -static int svx_read_header (SF_PRIVATE *psf) ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -svx_open (SF_PRIVATE *psf) -{ int error ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = svx_read_header (psf))) - return error ; - - psf->endian = SF_ENDIAN_BIG ; /* All SVX files are big endian. */ - - psf->blockwidth = psf->sf.channels * psf->bytewidth ; - if (psf->blockwidth) - psf->sf.frames = psf->datalength / psf->blockwidth ; - - psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - } ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if (psf->is_pipe) - return SFE_NO_PIPE_WRITE ; - - if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_SVX) - return SFE_BAD_OPEN_FORMAT ; - - psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ; - - if (psf->endian == SF_ENDIAN_LITTLE || (CPU_IS_LITTLE_ENDIAN && psf->endian == SF_ENDIAN_CPU)) - return SFE_BAD_ENDIAN ; - - psf->endian = SF_ENDIAN_BIG ; /* All SVX files are big endian. */ - - error = svx_write_header (psf, SF_FALSE) ; - if (error) - return error ; - - psf->write_header = svx_write_header ; - } ; - - psf->container_close = svx_close ; - - if ((error = pcm_init (psf))) - return error ; - - return 0 ; -} /* svx_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -svx_read_header (SF_PRIVATE *psf) -{ VHDR_CHUNK vhdr ; - unsigned int FORMsize, vhdrsize, dword, marker ; - int filetype = 0, parsestage = 0, done = 0 ; - int bytecount = 0, channels ; - - memset (&vhdr, 0, sizeof (vhdr)) ; - psf_binheader_readf (psf, "p", 0) ; - - /* Set default number of channels. Currently can't handle stereo SVX files. */ - psf->sf.channels = 1 ; - - psf->sf.format = SF_FORMAT_SVX ; - - while (! done) - { psf_binheader_readf (psf, "m", &marker) ; - switch (marker) - { case FORM_MARKER : - if (parsestage) - return SFE_SVX_NO_FORM ; - - psf_binheader_readf (psf, "E4", &FORMsize) ; - - if (FORMsize != psf->filelength - 2 * sizeof (dword)) - { dword = psf->filelength - 2 * sizeof (dword) ; - psf_log_printf (psf, "FORM : %d (should be %d)\n", FORMsize, dword) ; - FORMsize = dword ; - } - else - psf_log_printf (psf, "FORM : %d\n", FORMsize) ; - parsestage |= HAVE_FORM ; - break ; - - case SVX8_MARKER : - case SV16_MARKER : - if (! (parsestage & HAVE_FORM)) - return SFE_SVX_NO_FORM ; - filetype = marker ; - psf_log_printf (psf, " %M\n", marker) ; - parsestage |= HAVE_SVX ; - break ; - - case VHDR_MARKER : - if (! (parsestage & (HAVE_FORM | HAVE_SVX))) - return SFE_SVX_NO_FORM ; - - psf_binheader_readf (psf, "E4", &vhdrsize) ; - - psf_log_printf (psf, " VHDR : %d\n", vhdrsize) ; - - psf_binheader_readf (psf, "E4442114", &(vhdr.oneShotHiSamples), &(vhdr.repeatHiSamples), - &(vhdr.samplesPerHiCycle), &(vhdr.samplesPerSec), &(vhdr.octave), &(vhdr.compression), - &(vhdr.volume)) ; - - psf_log_printf (psf, " OneShotHiSamples : %d\n", vhdr.oneShotHiSamples) ; - psf_log_printf (psf, " RepeatHiSamples : %d\n", vhdr.repeatHiSamples) ; - psf_log_printf (psf, " samplesPerHiCycle : %d\n", vhdr.samplesPerHiCycle) ; - psf_log_printf (psf, " Sample Rate : %d\n", vhdr.samplesPerSec) ; - psf_log_printf (psf, " Octave : %d\n", vhdr.octave) ; - - psf_log_printf (psf, " Compression : %d => ", vhdr.compression) ; - - switch (vhdr.compression) - { case 0 : psf_log_printf (psf, "None.\n") ; - break ; - case 1 : psf_log_printf (psf, "Fibonacci delta\n") ; - break ; - case 2 : psf_log_printf (psf, "Exponential delta\n") ; - break ; - } ; - - psf_log_printf (psf, " Volume : %d\n", vhdr.volume) ; - - psf->sf.samplerate = vhdr.samplesPerSec ; - - if (filetype == SVX8_MARKER) - { psf->sf.format |= SF_FORMAT_PCM_S8 ; - psf->bytewidth = 1 ; - } - else if (filetype == SV16_MARKER) - { psf->sf.format |= SF_FORMAT_PCM_16 ; - psf->bytewidth = 2 ; - } ; - - parsestage |= HAVE_VHDR ; - break ; - - case BODY_MARKER : - if (! (parsestage & HAVE_VHDR)) - return SFE_SVX_NO_BODY ; - - psf_binheader_readf (psf, "E4", &dword) ; - psf->datalength = dword ; - - psf->dataoffset = psf_ftell (psf) ; - - if (psf->datalength > psf->filelength - psf->dataoffset) - { psf_log_printf (psf, " BODY : %D (should be %D)\n", psf->datalength, psf->filelength - psf->dataoffset) ; - psf->datalength = psf->filelength - psf->dataoffset ; - } - else - psf_log_printf (psf, " BODY : %D\n", psf->datalength) ; - - parsestage |= HAVE_BODY ; - - if (! psf->sf.seekable) - break ; - - psf_fseek (psf, psf->datalength, SEEK_CUR) ; - break ; - - case NAME_MARKER : - if (! (parsestage & HAVE_SVX)) - return SFE_SVX_NO_FORM ; - - psf_binheader_readf (psf, "E4", &dword) ; - - psf_log_printf (psf, " %M : %d\n", marker, dword) ; - - if (strlen (psf->filename) != dword) - { if (dword > sizeof (psf->filename) - 1) - return SFE_SVX_BAD_NAME_LENGTH ; - - psf_binheader_readf (psf, "b", psf->filename, dword) ; - psf->filename [dword] = 0 ; - } - else - psf_binheader_readf (psf, "j", dword) ; - break ; - - case ANNO_MARKER : - if (! (parsestage & HAVE_SVX)) - return SFE_SVX_NO_FORM ; - - psf_binheader_readf (psf, "E4", &dword) ; - - psf_log_printf (psf, " %M : %d\n", marker, dword) ; - - psf_binheader_readf (psf, "j", dword) ; - break ; - - case CHAN_MARKER : - if (! (parsestage & HAVE_SVX)) - return SFE_SVX_NO_FORM ; - - psf_binheader_readf (psf, "E4", &dword) ; - - psf_log_printf (psf, " %M : %d\n", marker, dword) ; - - bytecount += psf_binheader_readf (psf, "E4", &channels) ; - psf->sf.channels = channels ; - - psf_log_printf (psf, " Channels : %d\n", channels) ; - - psf_binheader_readf (psf, "j", dword - bytecount) ; - break ; - - - case AUTH_MARKER : - case c_MARKER : - if (! (parsestage & HAVE_SVX)) - return SFE_SVX_NO_FORM ; - - psf_binheader_readf (psf, "E4", &dword) ; - - psf_log_printf (psf, " %M : %d\n", marker, dword) ; - - psf_binheader_readf (psf, "j", dword) ; - break ; - - default : - if (isprint ((marker >> 24) & 0xFF) && isprint ((marker >> 16) & 0xFF) - && isprint ((marker >> 8) & 0xFF) && isprint (marker & 0xFF)) - { psf_binheader_readf (psf, "E4", &dword) ; - - psf_log_printf (psf, "%M : %d (unknown marker)\n", marker, dword) ; - - psf_binheader_readf (psf, "j", dword) ; - break ; - } ; - if ((dword = psf_ftell (psf)) & 0x03) - { psf_log_printf (psf, " Unknown chunk marker at position %d. Resynching.\n", dword - 4) ; - - psf_binheader_readf (psf, "j", -3) ; - break ; - } ; - psf_log_printf (psf, "*** Unknown chunk marker : %X. Exiting parser.\n", marker) ; - done = 1 ; - } ; /* switch (marker) */ - - if (! psf->sf.seekable && (parsestage & HAVE_BODY)) - break ; - - if (psf_ftell (psf) >= psf->filelength - SIGNED_SIZEOF (dword)) - break ; - } ; /* while (1) */ - - if (vhdr.compression) - return SFE_SVX_BAD_COMP ; - - if (psf->dataoffset <= 0) - return SFE_SVX_NO_DATA ; - - return 0 ; -} /* svx_read_header */ - -static int -svx_close (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - svx_write_header (psf, SF_TRUE) ; - - return 0 ; -} /* svx_close */ - -static int -svx_write_header (SF_PRIVATE *psf, int calc_length) -{ static char annotation [] = "libsndfile by Erik de Castro Lopo\0\0\0" ; - sf_count_t current ; - - current = psf_ftell (psf) ; - - if (calc_length) - { psf->filelength = psf_get_filelen (psf) ; - - psf->datalength = psf->filelength - psf->dataoffset ; - - if (psf->dataend) - psf->datalength -= psf->filelength - psf->dataend ; - - psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ; - } ; - - psf->header [0] = 0 ; - psf->headindex = 0 ; - psf_fseek (psf, 0, SEEK_SET) ; - - /* FORM marker and FORM size. */ - psf_binheader_writef (psf, "Etm8", FORM_MARKER, (psf->filelength < 8) ? - psf->filelength * 0 : psf->filelength - 8) ; - - psf_binheader_writef (psf, "m", (psf->bytewidth == 1) ? SVX8_MARKER : SV16_MARKER) ; - - /* VHDR chunk. */ - psf_binheader_writef (psf, "Em4", VHDR_MARKER, sizeof (VHDR_CHUNK)) ; - /* VHDR : oneShotHiSamples, repeatHiSamples, samplesPerHiCycle */ - psf_binheader_writef (psf, "E444", psf->sf.frames, 0, 0) ; - /* VHDR : samplesPerSec, octave, compression */ - psf_binheader_writef (psf, "E211", psf->sf.samplerate, 1, 0) ; - /* VHDR : volume */ - psf_binheader_writef (psf, "E4", (psf->bytewidth == 1) ? 0xFF : 0xFFFF) ; - - /* Filename and annotation strings. */ - psf_binheader_writef (psf, "Emsms", NAME_MARKER, psf->filename, ANNO_MARKER, annotation) ; - - /* BODY marker and size. */ - psf_binheader_writef (psf, "Etm8", BODY_MARKER, (psf->datalength < 0) ? - psf->datalength * 0 : psf->datalength) ; - - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - if (psf->error) - return psf->error ; - - psf->dataoffset = psf->headindex ; - - if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* svx_write_header */ - - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: a80ab6fb-7d75-4d32-a6b0-0061a3f05d95 -*/ diff --git a/libs/libsndfile/src/txw.c b/libs/libsndfile/src/txw.c deleted file mode 100644 index 0f0add673d..0000000000 --- a/libs/libsndfile/src/txw.c +++ /dev/null @@ -1,379 +0,0 @@ -/* -** Copyright (C) 2002-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -/*=========================================================================== -** Yamaha TX16 Sampler Files. -** -** This header parser was written using information from the SoX source code -** and trial and error experimentation. The code here however is all original. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -#if (ENABLE_EXPERIMENTAL_CODE == 0) - -int -txw_open (SF_PRIVATE *psf) -{ if (psf) - return SFE_UNIMPLEMENTED ; - return (psf && 0) ; -} /* txw_open */ - -#else - -/*------------------------------------------------------------------------------ -** Markers. -*/ - -#define TXW_DATA_OFFSET 32 - -#define TXW_LOOPED 0x49 -#define TXW_NO_LOOP 0xC9 - -/*------------------------------------------------------------------------------ -** Private static functions. -*/ - -static int txw_read_header (SF_PRIVATE *psf) ; - -static sf_count_t txw_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t txw_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t txw_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t txw_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t txw_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ; - -/*------------------------------------------------------------------------------ -** Public functions. -*/ - -/* - * ftp://ftp.t0.or.at/pub/sound/tx16w/samples.yamaha - * ftp://ftp.t0.or.at/pub/sound/tx16w/faq/tx16w.tec - * http://www.t0.or.at/~mpakesch/tx16w/ - * - * from tx16w.c sox 12.15: (7-Oct-98) (Mark Lakata and Leigh Smith) - * char filetype[6] "LM8953" - * nulls[10], - * dummy_aeg[6] - * format 0x49 = looped, 0xC9 = non-looped - * sample_rate 1 = 33 kHz, 2 = 50 kHz, 3 = 16 kHz - * atc_length[3] if sample rate 0, [2]&0xfe = 6: 33kHz, 0x10:50, 0xf6: 16, - * depending on [5] but to heck with it - * rpt_length[3] (these are for looped samples, attack and loop lengths) - * unused[2] - */ - -typedef struct -{ unsigned char format, srate, sr2, sr3 ; - unsigned short srhash ; - unsigned int attacklen, repeatlen ; -} TXW_HEADER ; - -#define ERROR_666 666 - -int -txw_open (SF_PRIVATE *psf) -{ int error ; - - if (psf->mode != SFM_READ) - return SFE_UNIMPLEMENTED ; - - if ((error = txw_read_header (psf))) - return error ; - - if (psf_fseek (psf, psf->dataoffset, SEEK_SET) != psf->dataoffset) - return SFE_BAD_SEEK ; - - psf->read_short = txw_read_s ; - psf->read_int = txw_read_i ; - psf->read_float = txw_read_f ; - psf->read_double = txw_read_d ; - - psf->seek = txw_seek ; - - return 0 ; -} /* txw_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -txw_read_header (SF_PRIVATE *psf) -{ TXW_HEADER txwh ; - char *strptr ; - - memset (&txwh, 0, sizeof (txwh)) ; - memset (psf->u.cbuf, 0, sizeof (psf->u.cbuf)) ; - psf_binheader_readf (psf, "pb", 0, psf->u.cbuf, 16) ; - - if (memcmp (psf->u.cbuf, "LM8953\0\0\0\0\0\0\0\0\0\0", 16) != 0) - return ERROR_666 ; - - psf_log_printf (psf, "Read only : Yamaha TX-16 Sampler (.txw)\nLM8953\n") ; - - /* Jump 6 bytes (dummp_aeg), read format, read sample rate. */ - psf_binheader_readf (psf, "j11", 6, &txwh.format, &txwh.srate) ; - - /* 8 bytes (atc_length[3], rpt_length[3], unused[2]). */ - psf_binheader_readf (psf, "e33j", &txwh.attacklen, &txwh.repeatlen, 2) ; - txwh.sr2 = (txwh.attacklen >> 16) & 0xFE ; - txwh.sr3 = (txwh.repeatlen >> 16) & 0xFE ; - txwh.attacklen &= 0x1FFFF ; - txwh.repeatlen &= 0x1FFFF ; - - switch (txwh.format) - { case TXW_LOOPED : - strptr = "looped" ; - break ; - - case TXW_NO_LOOP : - strptr = "non-looped" ; - break ; - - default : - psf_log_printf (psf, " Format : 0x%02x => ?????\n", txwh.format) ; - return ERROR_666 ; - } ; - - psf_log_printf (psf, " Format : 0x%02X => %s\n", txwh.format, strptr) ; - - strptr = NULL ; - - switch (txwh.srate) - { case 1 : - psf->sf.samplerate = 33333 ; - break ; - - case 2 : - psf->sf.samplerate = 50000 ; - break ; - - case 3 : - psf->sf.samplerate = 16667 ; - break ; - - default : - /* This is ugly and braindead. */ - txwh.srhash = ((txwh.sr2 & 0xFE) << 8) | (txwh.sr3 & 0xFE) ; - switch (txwh.srhash) - { case ((0x6 << 8) | 0x52) : - psf->sf.samplerate = 33333 ; - break ; - - case ((0x10 << 8) | 0x52) : - psf->sf.samplerate = 50000 ; - break ; - - case ((0xF6 << 8) | 0x52) : - psf->sf.samplerate = 166667 ; - break ; - - default : - strptr = " Sample Rate : Unknown : forcing to 33333\n" ; - psf->sf.samplerate = 33333 ; - break ; - } ; - } ; - - - if (strptr) - psf_log_printf (psf, strptr) ; - else if (txwh.srhash) - psf_log_printf (psf, " Sample Rate : %d (0x%X) => %d\n", txwh.srate, txwh.srhash, psf->sf.samplerate) ; - else - psf_log_printf (psf, " Sample Rate : %d => %d\n", txwh.srate, psf->sf.samplerate) ; - - if (txwh.format == TXW_LOOPED) - { psf_log_printf (psf, " Attack Len : %d\n", txwh.attacklen) ; - psf_log_printf (psf, " Repeat Len : %d\n", txwh.repeatlen) ; - } ; - - psf->dataoffset = TXW_DATA_OFFSET ; - psf->datalength = psf->filelength - TXW_DATA_OFFSET ; - psf->sf.frames = 2 * psf->datalength / 3 ; - - - if (psf->datalength % 3 == 1) - psf_log_printf (psf, "*** File seems to be truncated, %d extra bytes.\n", - (int) (psf->datalength % 3)) ; - - if (txwh.attacklen + txwh.repeatlen > psf->sf.frames) - psf_log_printf (psf, "*** File has been truncated.\n") ; - - psf->sf.format = SF_FORMAT_TXW | SF_FORMAT_PCM_16 ; - psf->sf.channels = 1 ; - psf->sf.sections = 1 ; - psf->sf.seekable = SF_TRUE ; - - return 0 ; -} /* txw_read_header */ - -static sf_count_t -txw_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ unsigned char *ucptr ; - short sample ; - int k, bufferlen, readcount, count ; - sf_count_t total = 0 ; - - bufferlen = sizeof (psf->u.cbuf) / 3 ; - bufferlen -= (bufferlen & 1) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = psf_fread (psf->u.cbuf, 3, readcount, psf) ; - - ucptr = psf->u.ucbuf ; - for (k = 0 ; k < readcount ; k += 2) - { sample = (ucptr [0] << 8) | (ucptr [1] & 0xF0) ; - ptr [total + k] = sample ; - sample = (ucptr [2] << 8) | ((ucptr [1] & 0xF) << 4) ; - ptr [total + k + 1] = sample ; - ucptr += 3 ; - } ; - - total += count ; - len -= readcount ; - } ; - - return total ; -} /* txw_read_s */ - -static sf_count_t -txw_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ unsigned char *ucptr ; - short sample ; - int k, bufferlen, readcount, count ; - sf_count_t total = 0 ; - - bufferlen = sizeof (psf->u.cbuf) / 3 ; - bufferlen -= (bufferlen & 1) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = psf_fread (psf->u.cbuf, 3, readcount, psf) ; - - ucptr = psf->u.ucbuf ; - for (k = 0 ; k < readcount ; k += 2) - { sample = (ucptr [0] << 8) | (ucptr [1] & 0xF0) ; - ptr [total + k] = sample << 16 ; - sample = (ucptr [2] << 8) | ((ucptr [1] & 0xF) << 4) ; - ptr [total + k + 1] = sample << 16 ; - ucptr += 3 ; - } ; - - total += count ; - len -= readcount ; - } ; - - return total ; -} /* txw_read_i */ - -static sf_count_t -txw_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ unsigned char *ucptr ; - short sample ; - int k, bufferlen, readcount, count ; - sf_count_t total = 0 ; - float normfact ; - - if (psf->norm_float == SF_TRUE) - normfact = 1.0 / 0x8000 ; - else - normfact = 1.0 / 0x10 ; - - bufferlen = sizeof (psf->u.cbuf) / 3 ; - bufferlen -= (bufferlen & 1) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = psf_fread (psf->u.cbuf, 3, readcount, psf) ; - - ucptr = psf->u.ucbuf ; - for (k = 0 ; k < readcount ; k += 2) - { sample = (ucptr [0] << 8) | (ucptr [1] & 0xF0) ; - ptr [total + k] = normfact * sample ; - sample = (ucptr [2] << 8) | ((ucptr [1] & 0xF) << 4) ; - ptr [total + k + 1] = normfact * sample ; - ucptr += 3 ; - } ; - - total += count ; - len -= readcount ; - } ; - - return total ; -} /* txw_read_f */ - -static sf_count_t -txw_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ unsigned char *ucptr ; - short sample ; - int k, bufferlen, readcount, count ; - sf_count_t total = 0 ; - double normfact ; - - if (psf->norm_double == SF_TRUE) - normfact = 1.0 / 0x8000 ; - else - normfact = 1.0 / 0x10 ; - - bufferlen = sizeof (psf->u.cbuf) / 3 ; - bufferlen -= (bufferlen & 1) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : len ; - count = psf_fread (psf->u.cbuf, 3, readcount, psf) ; - - ucptr = psf->u.ucbuf ; - for (k = 0 ; k < readcount ; k += 2) - { sample = (ucptr [0] << 8) | (ucptr [1] & 0xF0) ; - ptr [total + k] = normfact * sample ; - sample = (ucptr [2] << 8) | ((ucptr [1] & 0xF) << 4) ; - ptr [total + k + 1] = normfact * sample ; - ucptr += 3 ; - } ; - - total += count ; - len -= readcount ; - } ; - - return total ; -} /* txw_read_d */ - -static sf_count_t -txw_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) -{ if (psf && mode) - return offset ; - - return 0 ; -} /* txw_seek */ - -#endif -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 4d0ba7af-b1c5-46b4-a900-7c6f59fd9a89 -*/ diff --git a/libs/libsndfile/src/ulaw.c b/libs/libsndfile/src/ulaw.c deleted file mode 100644 index e476c0a781..0000000000 --- a/libs/libsndfile/src/ulaw.c +++ /dev/null @@ -1,1047 +0,0 @@ -/* -** Copyright (C) 1999-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sndfile.h" -#include "float_cast.h" -#include "common.h" - -static sf_count_t ulaw_read_ulaw2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t ulaw_read_ulaw2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t ulaw_read_ulaw2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t ulaw_read_ulaw2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t ulaw_write_s2ulaw (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t ulaw_write_i2ulaw (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t ulaw_write_f2ulaw (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t ulaw_write_d2ulaw (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -int -ulaw_init (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_READ || psf->mode == SFM_RDWR) - { psf->read_short = ulaw_read_ulaw2s ; - psf->read_int = ulaw_read_ulaw2i ; - psf->read_float = ulaw_read_ulaw2f ; - psf->read_double = ulaw_read_ulaw2d ; - } ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { psf->write_short = ulaw_write_s2ulaw ; - psf->write_int = ulaw_write_i2ulaw ; - psf->write_float = ulaw_write_f2ulaw ; - psf->write_double = ulaw_write_d2ulaw ; - } ; - - psf->bytewidth = 1 ; - psf->blockwidth = psf->sf.channels ; - - if (psf->filelength > psf->dataoffset) - psf->datalength = (psf->dataend) ? psf->dataend - psf->dataoffset : - psf->filelength - psf->dataoffset ; - else - psf->datalength = 0 ; - - psf->sf.frames = psf->datalength / psf->blockwidth ; - - return 0 ; -} /* ulaw_init */ - -/*============================================================================== -*/ - -static short ulaw_decode [256] = -{ -32124, -31100, -30076, -29052, -28028, -27004, -25980, -24956, - -23932, -22908, -21884, -20860, -19836, -18812, -17788, -16764, - -15996, -15484, -14972, -14460, -13948, -13436, -12924, -12412, - -11900, -11388, -10876, -10364, -9852, -9340, -8828, -8316, - -7932, -7676, -7420, -7164, -6908, -6652, -6396, -6140, - -5884, -5628, -5372, -5116, -4860, -4604, -4348, -4092, - -3900, -3772, -3644, -3516, -3388, -3260, -3132, -3004, - -2876, -2748, -2620, -2492, -2364, -2236, -2108, -1980, - -1884, -1820, -1756, -1692, -1628, -1564, -1500, -1436, - -1372, -1308, -1244, -1180, -1116, -1052, -988, -924, - -876, -844, -812, -780, -748, -716, -684, -652, - -620, -588, -556, -524, -492, -460, -428, -396, - -372, -356, -340, -324, -308, -292, -276, -260, - -244, -228, -212, -196, -180, -164, -148, -132, - -120, -112, -104, -96, -88, -80, -72, -64, - -56, -48, -40, -32, -24, -16, -8, 0, - - 32124, 31100, 30076, 29052, 28028, 27004, 25980, 24956, - 23932, 22908, 21884, 20860, 19836, 18812, 17788, 16764, - 15996, 15484, 14972, 14460, 13948, 13436, 12924, 12412, - 11900, 11388, 10876, 10364, 9852, 9340, 8828, 8316, - 7932, 7676, 7420, 7164, 6908, 6652, 6396, 6140, - 5884, 5628, 5372, 5116, 4860, 4604, 4348, 4092, - 3900, 3772, 3644, 3516, 3388, 3260, 3132, 3004, - 2876, 2748, 2620, 2492, 2364, 2236, 2108, 1980, - 1884, 1820, 1756, 1692, 1628, 1564, 1500, 1436, - 1372, 1308, 1244, 1180, 1116, 1052, 988, 924, - 876, 844, 812, 780, 748, 716, 684, 652, - 620, 588, 556, 524, 492, 460, 428, 396, - 372, 356, 340, 324, 308, 292, 276, 260, - 244, 228, 212, 196, 180, 164, 148, 132, - 120, 112, 104, 96, 88, 80, 72, 64, - 56, 48, 40, 32, 24, 16, 8, 0 -} ; - -static -unsigned char ulaw_encode [8193] = -{ 0xff, 0xfe, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, 0xfb, 0xfb, 0xfa, 0xfa, 0xf9, - 0xf9, 0xf8, 0xf8, 0xf7, 0xf7, 0xf6, 0xf6, 0xf5, 0xf5, 0xf4, 0xf4, 0xf3, - 0xf3, 0xf2, 0xf2, 0xf1, 0xf1, 0xf0, 0xf0, 0xef, 0xef, 0xef, 0xef, 0xee, - 0xee, 0xee, 0xee, 0xed, 0xed, 0xed, 0xed, 0xec, 0xec, 0xec, 0xec, 0xeb, - 0xeb, 0xeb, 0xeb, 0xea, 0xea, 0xea, 0xea, 0xe9, 0xe9, 0xe9, 0xe9, 0xe8, - 0xe8, 0xe8, 0xe8, 0xe7, 0xe7, 0xe7, 0xe7, 0xe6, 0xe6, 0xe6, 0xe6, 0xe5, - 0xe5, 0xe5, 0xe5, 0xe4, 0xe4, 0xe4, 0xe4, 0xe3, 0xe3, 0xe3, 0xe3, 0xe2, - 0xe2, 0xe2, 0xe2, 0xe1, 0xe1, 0xe1, 0xe1, 0xe0, 0xe0, 0xe0, 0xe0, 0xdf, - 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xde, 0xde, 0xde, 0xde, 0xde, - 0xde, 0xde, 0xde, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdc, - 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, - 0xdb, 0xdb, 0xdb, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xd9, - 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, - 0xd8, 0xd8, 0xd8, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd6, - 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, - 0xd5, 0xd5, 0xd5, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd3, - 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, - 0xd2, 0xd2, 0xd2, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd0, - 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, - 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xce, - 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, - 0xce, 0xce, 0xce, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, - 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, - 0xcb, 0xcb, 0xcb, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, - 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, - 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc8, - 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, - 0xc8, 0xc8, 0xc8, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, - 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, - 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc5, - 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, - 0xc5, 0xc5, 0xc5, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, - 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, - 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, - 0xc2, 0xc2, 0xc2, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, - 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, - 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xbf, - 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, - 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, - 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, - 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, - 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, - 0xbe, 0xbe, 0xbe, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, - 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, - 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbc, - 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, - 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, - 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, - 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, - 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, - 0xbb, 0xbb, 0xbb, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, - 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, - 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xb9, - 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, - 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, - 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, - 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, - 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, - 0xb8, 0xb8, 0xb8, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, - 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, - 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb6, - 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, - 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, - 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, - 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, - 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, - 0xb5, 0xb5, 0xb5, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, - 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, - 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb3, - 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, - 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, - 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, - 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, - 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, - 0xb2, 0xb2, 0xb2, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, - 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, - 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb0, - 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, - 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, - 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, - 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, - 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, - 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, - 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, - 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xae, - 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, - 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, - 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, - 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, - 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, - 0xae, 0xae, 0xae, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, - 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, - 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, - 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, - 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, - 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xac, 0xac, 0xac, 0xac, 0xac, - 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, - 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, - 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, - 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, - 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xab, - 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, - 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, - 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, - 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, - 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, - 0xab, 0xab, 0xab, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, - 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, - 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, - 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, - 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, - 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa8, - 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, - 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, - 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, - 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, - 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, - 0xa8, 0xa8, 0xa8, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, - 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, - 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, - 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, - 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, - 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, - 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, - 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, - 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, - 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, - 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa5, - 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, - 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, - 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, - 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, - 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, - 0xa5, 0xa5, 0xa5, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, - 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, - 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, - 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, - 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, - 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, - 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, - 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, - 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, - 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, - 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, - 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, - 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, - 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, - 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, - 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, - 0xa2, 0xa2, 0xa2, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, - 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, - 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, - 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, - 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, - 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, - 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, - 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, - 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, - 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, - 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x9f, - 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, - 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, - 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, - 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, - 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, - 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, - 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, - 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, - 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, - 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, - 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, - 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, - 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, - 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, - 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, - 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, - 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, - 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, - 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, - 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, - 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, - 0x9e, 0x9e, 0x9e, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, - 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, - 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, - 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, - 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, - 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, - 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, - 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, - 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, - 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, - 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9c, - 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, - 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, - 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, - 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, - 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, - 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, - 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, - 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, - 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, - 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, - 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, - 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, - 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, - 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, - 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, - 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, - 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, - 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, - 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, - 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, - 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, - 0x9b, 0x9b, 0x9b, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, - 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, - 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, - 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, - 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, - 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, - 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, - 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, - 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, - 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, - 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x99, - 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, - 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, - 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, - 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, - 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, - 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, - 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, - 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, - 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, - 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, - 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x98, 0x98, - 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, - 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, - 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, - 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, - 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, - 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, - 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, - 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, - 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, - 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, - 0x98, 0x98, 0x98, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, - 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, - 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, - 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, - 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, - 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, - 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, - 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, - 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, - 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, - 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x96, - 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, - 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, - 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, - 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, - 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, - 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, - 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, - 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, - 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, - 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, - 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x95, 0x95, 0x95, 0x95, 0x95, - 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, - 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, - 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, - 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, - 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, - 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, - 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, - 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, - 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, - 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, - 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, - 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, - 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, - 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, - 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, - 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, - 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, - 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, - 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, - 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, - 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x93, - 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, - 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, - 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, - 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, - 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, - 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, - 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, - 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, - 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, - 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, - 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x92, 0x92, - 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, - 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, - 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, - 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, - 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, - 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, - 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, - 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, - 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, - 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, - 0x92, 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, - 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, - 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, - 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, - 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, - 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, - 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, - 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, - 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, - 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, - 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x90, - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, - 0x8e, 0x8e, 0x8e, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, - 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x8b, 0x8b, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, - 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, - 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, - 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, - 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, - 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, - 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, - 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, - 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00 -} ; - -static inline void -ulaw2s_array (unsigned char *buffer, int count, short *ptr) -{ while (--count >= 0) - ptr [count] = ulaw_decode [(int) buffer [count]] ; -} /* ulaw2s_array */ - -static inline void -ulaw2i_array (unsigned char *buffer, int count, int *ptr) -{ while (--count >= 0) - ptr [count] = ulaw_decode [buffer [count]] << 16 ; -} /* ulaw2i_array */ - -static inline void -ulaw2f_array (unsigned char *buffer, int count, float *ptr, float normfact) -{ while (--count >= 0) - ptr [count] = normfact * ulaw_decode [(int) buffer [count]] ; -} /* ulaw2f_array */ - -static inline void -ulaw2d_array (const unsigned char *buffer, int count, double *ptr, double normfact) -{ while (--count >= 0) - ptr [count] = normfact * ulaw_decode [(int) buffer [count]] ; -} /* ulaw2d_array */ - -static inline void -s2ulaw_array (const short *ptr, int count, unsigned char *buffer) -{ while (--count >= 0) - { if (ptr [count] >= 0) - buffer [count] = ulaw_encode [ptr [count] / 4] ; - else - buffer [count] = 0x7F & ulaw_encode [ptr [count] / -4] ; - } ; -} /* s2ulaw_array */ - -static inline void -i2ulaw_array (const int *ptr, int count, unsigned char *buffer) -{ while (--count >= 0) - { if (ptr [count] >= 0) - buffer [count] = ulaw_encode [ptr [count] >> (16 + 2)] ; - else - buffer [count] = 0x7F & ulaw_encode [-ptr [count] >> (16 + 2)] ; - } ; -} /* i2ulaw_array */ - -static inline void -f2ulaw_array (const float *ptr, int count, unsigned char *buffer, float normfact) -{ while (--count >= 0) - { if (ptr [count] >= 0) - buffer [count] = ulaw_encode [lrintf (normfact * ptr [count])] ; - else - buffer [count] = 0x7F & ulaw_encode [- lrintf (normfact * ptr [count])] ; - } ; -} /* f2ulaw_array */ - -static inline void -d2ulaw_array (const double *ptr, int count, unsigned char *buffer, double normfact) -{ while (--count >= 0) - { if (ptr [count] >= 0) - buffer [count] = ulaw_encode [lrint (normfact * ptr [count])] ; - else - buffer [count] = 0x7F & ulaw_encode [- lrint (normfact * ptr [count])] ; - } ; -} /* d2ulaw_array */ - -/*============================================================================== -*/ - -static sf_count_t -ulaw_read_ulaw2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ; - ulaw2s_array (psf->u.ucbuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* ulaw_read_ulaw2s */ - -static sf_count_t -ulaw_read_ulaw2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ; - ulaw2i_array (psf->u.ucbuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* ulaw_read_ulaw2i */ - -static sf_count_t -ulaw_read_ulaw2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - float normfact ; - - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ; - ulaw2f_array (psf->u.ucbuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* ulaw_read_ulaw2f */ - -static sf_count_t -ulaw_read_ulaw2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ int bufferlen, readcount ; - sf_count_t total = 0 ; - double normfact ; - - normfact = (psf->norm_double) ? 1.0 / ((double) 0x8000) : 1.0 ; - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.ucbuf, 1, bufferlen, psf) ; - ulaw2d_array (psf->u.ucbuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* ulaw_read_ulaw2d */ - -/*============================================================================================= -*/ - -static sf_count_t -ulaw_write_s2ulaw (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - s2ulaw_array (ptr + total, bufferlen, psf->u.ucbuf) ; - writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* ulaw_write_s2ulaw */ - -static sf_count_t -ulaw_write_i2ulaw (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - i2ulaw_array (ptr + total, bufferlen, psf->u.ucbuf) ; - writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* ulaw_write_i2ulaw */ - -static sf_count_t -ulaw_write_f2ulaw (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - float normfact ; - - /* Factor in a divide by 4. */ - normfact = (psf->norm_float == SF_TRUE) ? (0.25 * 0x7FFF) : 0.25 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - f2ulaw_array (ptr + total, bufferlen, psf->u.ucbuf, normfact) ; - writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* ulaw_write_f2ulaw */ - -static sf_count_t -ulaw_write_d2ulaw (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ int bufferlen, writecount ; - sf_count_t total = 0 ; - double normfact ; - - /* Factor in a divide by 4. */ - normfact = (psf->norm_double) ? (0.25 * 0x7FFF) : 0.25 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - d2ulaw_array (ptr + total, bufferlen, psf->u.ucbuf, normfact) ; - writecount = psf_fwrite (psf->u.ucbuf, 1, bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* ulaw_write_d2ulaw */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 655cc790-f058-45e8-89c9-86967cccc37e -*/ diff --git a/libs/libsndfile/src/voc.c b/libs/libsndfile/src/voc.c deleted file mode 100644 index e1388c4542..0000000000 --- a/libs/libsndfile/src/voc.c +++ /dev/null @@ -1,878 +0,0 @@ -/* -** Copyright (C) 2001-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -/* RANT: -** The VOC file format is the most brain damaged format I have yet had to deal -** with. No one programmer could have bee stupid enough to put this together. -** Instead it looks like a series of manic, dyslexic assembly language programmers -** hacked it to fit their needs. -** Utterly woeful. -*/ - -#include "sfconfig.h" - -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - - -/*------------------------------------------------------------------------------ - * Typedefs for file chunks. -*/ - -#define VOC_MAX_SECTIONS 200 - -enum -{ VOC_TERMINATOR = 0, - VOC_SOUND_DATA = 1, - VOC_SOUND_CONTINUE = 2, - VOC_SILENCE = 3, - VOC_MARKER = 4, - VOC_ASCII = 5, - VOC_REPEAT = 6, - VOC_END_REPEAT = 7, - VOC_EXTENDED = 8, - VOC_EXTENDED_II = 9 -} ; - -typedef struct -{ int samples ; - int offset ; /* Offset of zero => silence. */ -} SND_DATA_BLOCKS ; - -typedef struct -{ unsigned int sections, section_types ; - int samplerate, channels, bitwidth ; - SND_DATA_BLOCKS blocks [VOC_MAX_SECTIONS] ; -} VOC_DATA ; - -/*------------------------------------------------------------------------------ - * Private static functions. -*/ - -static int voc_close (SF_PRIVATE *psf) ; -static int voc_write_header (SF_PRIVATE *psf, int calc_length) ; -static int voc_read_header (SF_PRIVATE *psf) ; - -static const char* voc_encoding2str (int encoding) ; - -#if 0 - -/* These functions would be required for files with more than one VOC_SOUND_DATA -** segment. Not sure whether to bother implementing this. -*/ - -static int voc_multi_init (SF_PRIVATE *psf, VOC_DATA *pvoc) ; - -static int voc_multi_read_uc2s (SF_PRIVATE *psf, short *ptr, int len) ; -static int voc_multi_read_les2s (SF_PRIVATE *psf, short *ptr, int len) ; - -static int voc_multi_read_uc2i (SF_PRIVATE *psf, int *ptr, int len) ; -static int voc_multi_read_les2i (SF_PRIVATE *psf, int *ptr, int len) ; - -static int voc_multi_read_uc2f (SF_PRIVATE *psf, float *ptr, int len) ; -static int voc_multi_read_les2f (SF_PRIVATE *psf, float *ptr, int len) ; - -static int voc_multi_read_uc2d (SF_PRIVATE *psf, double *ptr, int len) ; -static int voc_multi_read_les2d (SF_PRIVATE *psf, double *ptr, int len) ; -#endif - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -voc_open (SF_PRIVATE *psf) -{ int subformat, error = 0 ; - - if (psf->is_pipe) - return SFE_VOC_NO_PIPE ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = voc_read_header (psf))) - return error ; - } ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_VOC) - return SFE_BAD_OPEN_FORMAT ; - - psf->endian = SF_ENDIAN_LITTLE ; - - if ((error = voc_write_header (psf, SF_FALSE))) - return error ; - - psf->write_header = voc_write_header ; - } ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - - psf->container_close = voc_close ; - - switch (subformat) - { case SF_FORMAT_PCM_U8 : - case SF_FORMAT_PCM_16 : - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_ALAW : - error = alaw_init (psf) ; - break ; - - case SF_FORMAT_ULAW : - error = ulaw_init (psf) ; - break ; - - default : return SFE_UNIMPLEMENTED ; - } ; - - return error ; -} /* voc_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -voc_read_header (SF_PRIVATE *psf) -{ VOC_DATA *pvoc ; - char creative [20] ; - unsigned char block_type, rate_byte ; - short version, checksum, encoding, dataoffset ; - int offset ; - - /* Set position to start of file to begin reading header. */ - offset = psf_binheader_readf (psf, "pb", 0, creative, SIGNED_SIZEOF (creative)) ; - - if (creative [sizeof (creative) - 1] != 0x1A) - return SFE_VOC_NO_CREATIVE ; - - /* Terminate the string. */ - creative [sizeof (creative) - 1] = 0 ; - - if (strcmp ("Creative Voice File", creative)) - return SFE_VOC_NO_CREATIVE ; - - psf_log_printf (psf, "%s\n", creative) ; - - offset += psf_binheader_readf (psf, "e222", &dataoffset, &version, &checksum) ; - - psf->dataoffset = dataoffset ; - - psf_log_printf (psf, "dataoffset : %d\n" - "version : 0x%X\n" - "checksum : 0x%X\n", psf->dataoffset, version, checksum) ; - - if (version != 0x010A && version != 0x0114) - return SFE_VOC_BAD_VERSION ; - - if (! (psf->fdata = malloc (sizeof (VOC_DATA)))) - return SFE_MALLOC_FAILED ; - - pvoc = (VOC_DATA*) psf->fdata ; - - memset (pvoc, 0, sizeof (VOC_DATA)) ; - - /* Set the default encoding now. */ - psf->sf.format = SF_FORMAT_VOC ; /* Major format */ - encoding = SF_FORMAT_PCM_U8 ; /* Minor format */ - psf->endian = SF_ENDIAN_LITTLE ; - - while (1) - { offset += psf_binheader_readf (psf, "1", &block_type) ; - - switch (block_type) - { case VOC_ASCII : - { int size ; - - offset += psf_binheader_readf (psf, "e3", &size) ; - - psf_log_printf (psf, " ASCII : %d\n", size) ; - - offset += psf_binheader_readf (psf, "b", psf->header, size) ; - psf->header [size] = 0 ; - psf_log_printf (psf, " text : %s\n", psf->header) ; - } ; - continue ; - - case VOC_SOUND_DATA : - case VOC_EXTENDED : - case VOC_EXTENDED_II : - break ; - - default : psf_log_printf (psf, "*** Weird block marker (%d)\n", block_type) ; - } ; - - break ; - } ; - - if (block_type == VOC_SOUND_DATA) - { unsigned char compression ; - int size ; - - offset += psf_binheader_readf (psf, "e311", &size, &rate_byte, &compression) ; - - psf->sf.samplerate = 1000000 / (256 - (rate_byte & 0xFF)) ; - - psf_log_printf (psf, " Sound Data : %d\n sr : %d => %dHz\n comp : %d\n", - size, rate_byte, psf->sf.samplerate, compression) ; - - if (offset + size - 1 > psf->filelength) - { psf_log_printf (psf, "Seems to be a truncated file.\n") ; - psf_log_printf (psf, "offset: %d size: %d sum: %d filelength: %D\n", offset, size, offset + size, psf->filelength) ; - return SFE_VOC_BAD_SECTIONS ; - } - else if (offset + size - 1 < psf->filelength) - { psf_log_printf (psf, "Seems to be a multi-segment file (#1).\n") ; - psf_log_printf (psf, "offset: %d size: %d sum: %d filelength: %D\n", offset, size, offset + size, psf->filelength) ; - return SFE_VOC_BAD_SECTIONS ; - } ; - - psf->dataoffset = offset ; - psf->dataend = psf->filelength - 1 ; - - psf->sf.channels = 1 ; - psf->bytewidth = 1 ; - - psf->sf.format = SF_FORMAT_VOC | SF_FORMAT_PCM_U8 ; - - return 0 ; - } ; - - if (block_type == VOC_EXTENDED) - { unsigned char pack, stereo, compression ; - unsigned short rate_short ; - int size ; - - offset += psf_binheader_readf (psf, "e3211", &size, &rate_short, &pack, &stereo) ; - - psf_log_printf (psf, " Extended : %d\n", size) ; - if (size == 4) - psf_log_printf (psf, " size : 4\n") ; - else - psf_log_printf (psf, " size : %d (should be 4)\n", size) ; - - psf_log_printf (psf, " pack : %d\n" - " stereo : %s\n", pack, (stereo ? "yes" : "no")) ; - - if (stereo) - { psf->sf.channels = 2 ; - psf->sf.samplerate = 128000000 / (65536 - rate_short) ; - } - else - { psf->sf.channels = 1 ; - psf->sf.samplerate = 256000000 / (65536 - rate_short) ; - } ; - - psf_log_printf (psf, " sr : %d => %dHz\n", (rate_short & 0xFFFF), psf->sf.samplerate) ; - - offset += psf_binheader_readf (psf, "1", &block_type) ; - - if (block_type != VOC_SOUND_DATA) - { psf_log_printf (psf, "*** Expecting VOC_SOUND_DATA section.\n") ; - return SFE_VOC_BAD_FORMAT ; - } ; - - offset += psf_binheader_readf (psf, "e311", &size, &rate_byte, &compression) ; - - psf_log_printf (psf, " Sound Data : %d\n" - " sr : %d\n" - " comp : %d\n", size, rate_byte, compression) ; - - - if (offset + size - 1 > psf->filelength) - { psf_log_printf (psf, "Seems to be a truncated file.\n") ; - psf_log_printf (psf, "offset: %d size: %d sum: %d filelength: %D\n", offset, size, offset + size, psf->filelength) ; - return SFE_VOC_BAD_SECTIONS ; - } - else if (offset + size - 1 < psf->filelength) - { psf_log_printf (psf, "Seems to be a multi-segment file (#2).\n") ; - psf_log_printf (psf, "offset: %d size: %d sum: %d filelength: %D\n", offset, size, offset + size, psf->filelength) ; - return SFE_VOC_BAD_SECTIONS ; - } ; - - psf->dataoffset = offset ; - psf->dataend = psf->filelength - 1 ; - - psf->bytewidth = 1 ; - - psf->sf.format = SF_FORMAT_VOC | SF_FORMAT_PCM_U8 ; - - return 0 ; - } - - if (block_type == VOC_EXTENDED_II) - { unsigned char bitwidth, channels ; - int size, fourbytes ; - - offset += psf_binheader_readf (psf, "e341124", &size, &psf->sf.samplerate, - &bitwidth, &channels, &encoding, &fourbytes) ; - - if (size * 2 == psf->filelength - 39) - { int temp_size = psf->filelength - 31 ; - - psf_log_printf (psf, " Extended II : %d (SoX bug: should be %d)\n", size, temp_size) ; - size = temp_size ; - } - else - psf_log_printf (psf, " Extended II : %d\n", size) ; - - psf_log_printf (psf, " sample rate : %d\n" - " bit width : %d\n" - " channels : %d\n", psf->sf.samplerate, bitwidth, channels) ; - - if (bitwidth == 16 && encoding == 0) - { encoding = 4 ; - psf_log_printf (psf, " encoding : 0 (SoX bug: should be 4 for 16 bit signed PCM)\n") ; - } - else - psf_log_printf (psf, " encoding : %d => %s\n", encoding, voc_encoding2str (encoding)) ; - - - psf_log_printf (psf, " fourbytes : %X\n", fourbytes) ; - - psf->sf.channels = channels ; - - psf->dataoffset = offset ; - psf->dataend = psf->filelength - 1 ; - - if (size + 31 == psf->filelength + 1) - { /* Hack for reading files produced using - ** sf_command (SFC_UPDATE_HEADER_NOW). - */ - psf_log_printf (psf, "Missing zero byte at end of file.\n") ; - size = psf->filelength - 30 ; - psf->dataend = 0 ; - } - else if (size + 31 > psf->filelength) - { psf_log_printf (psf, "Seems to be a truncated file.\n") ; - size = psf->filelength - 31 ; - } - else if (size + 31 < psf->filelength) - psf_log_printf (psf, "Seems to be a multi-segment file (#3).\n") ; - - switch (encoding) - { case 0 : - psf->sf.format = SF_FORMAT_VOC | SF_FORMAT_PCM_U8 ; - psf->bytewidth = 1 ; - break ; - - case 4 : - psf->sf.format = SF_FORMAT_VOC | SF_FORMAT_PCM_16 ; - psf->bytewidth = 2 ; - break ; - - case 6 : - psf->sf.format = SF_FORMAT_VOC | SF_FORMAT_ALAW ; - psf->bytewidth = 1 ; - break ; - - case 7 : - psf->sf.format = SF_FORMAT_VOC | SF_FORMAT_ULAW ; - psf->bytewidth = 1 ; - break ; - - default : /* Unknown */ - return SFE_UNKNOWN_FORMAT ; - break ; - } ; - - } ; - - return 0 ; -} /* voc_read_header */ - -/*==================================================================================== -*/ - -static int -voc_write_header (SF_PRIVATE *psf, int calc_length) -{ sf_count_t current ; - int rate_const, subformat ; - - current = psf_ftell (psf) ; - - if (calc_length) - { psf->filelength = psf_get_filelen (psf) ; - - psf->datalength = psf->filelength - psf->dataoffset ; - if (psf->dataend) - psf->datalength -= psf->filelength - psf->dataend ; - - psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ; - } ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - psf_fseek (psf, 0, SEEK_SET) ; - - /* VOC marker and 0x1A byte. */ - psf_binheader_writef (psf, "eb1", "Creative Voice File", 19, 0x1A) ; - - /* Data offset, version and other. */ - psf_binheader_writef (psf, "e222", 26, 0x0114, 0x111F) ; - - /* Use same logic as SOX. - ** If the file is mono 8 bit data, use VOC_SOUND_DATA. - ** If the file is mono 16 bit data, use VOC_EXTENED. - ** Otherwise use VOC_EXTENED_2. - */ - - if (subformat == SF_FORMAT_PCM_U8 && psf->sf.channels == 1) - { /* samplerate = 1000000 / (256 - rate_const) ; */ - rate_const = 256 - 1000000 / psf->sf.samplerate ; - - /* First type marker, length, rate_const and compression */ - psf_binheader_writef (psf, "e1311", VOC_SOUND_DATA, (int) (psf->datalength + 1), rate_const, 0) ; - } - else if (subformat == SF_FORMAT_PCM_U8 && psf->sf.channels == 2) - { /* sample_rate = 128000000 / (65536 - rate_short) ; */ - rate_const = 65536 - 128000000 / psf->sf.samplerate ; - - /* First write the VOC_EXTENDED section - ** marker, length, rate_const and compression - */ - psf_binheader_writef (psf, "e13211", VOC_EXTENDED, 4, rate_const, 0, 1) ; - - /* samplerate = 1000000 / (256 - rate_const) ; */ - rate_const = 256 - 1000000 / psf->sf.samplerate ; - - /* Now write the VOC_SOUND_DATA section - ** marker, length, rate_const and compression - */ - psf_binheader_writef (psf, "e1311", VOC_SOUND_DATA, (int) (psf->datalength + 1), rate_const, 0) ; - } - else - { int length ; - - if (psf->sf.channels < 1 || psf->sf.channels > 2) - return SFE_CHANNEL_COUNT ; - - switch (subformat) - { case SF_FORMAT_PCM_U8 : - psf->bytewidth = 1 ; - length = psf->sf.frames * psf->sf.channels * psf->bytewidth + 12 ; - /* Marker, length, sample rate, bitwidth, stereo flag, encoding and fourt zero bytes. */ - psf_binheader_writef (psf, "e1341124", VOC_EXTENDED_II, length, psf->sf.samplerate, 16, psf->sf.channels, 4, 0) ; - break ; - - case SF_FORMAT_PCM_16 : - psf->bytewidth = 2 ; - length = psf->sf.frames * psf->sf.channels * psf->bytewidth + 12 ; - /* Marker, length, sample rate, bitwidth, stereo flag, encoding and fourt zero bytes. */ - psf_binheader_writef (psf, "e1341124", VOC_EXTENDED_II, length, psf->sf.samplerate, 16, psf->sf.channels, 4, 0) ; - break ; - - case SF_FORMAT_ALAW : - psf->bytewidth = 1 ; - length = psf->sf.frames * psf->sf.channels * psf->bytewidth + 12 ; - psf_binheader_writef (psf, "e1341124", VOC_EXTENDED_II, length, psf->sf.samplerate, 8, psf->sf.channels, 6, 0) ; - break ; - - case SF_FORMAT_ULAW : - psf->bytewidth = 1 ; - length = psf->sf.frames * psf->sf.channels * psf->bytewidth + 12 ; - psf_binheader_writef (psf, "e1341124", VOC_EXTENDED_II, length, psf->sf.samplerate, 8, psf->sf.channels, 7, 0) ; - break ; - - default : return SFE_UNIMPLEMENTED ; - } ; - } ; - - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - if (psf->error) - return psf->error ; - - psf->dataoffset = psf->headindex ; - - if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* voc_write_header */ - -static int -voc_close (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { /* Now we know for certain the length of the file we can re-write - ** correct values for the FORM, 8SVX and BODY chunks. - */ - unsigned byte = VOC_TERMINATOR ; - - - psf_fseek (psf, 0, SEEK_END) ; - - /* Write terminator */ - psf_fwrite (&byte, 1, 1, psf) ; - - voc_write_header (psf, SF_TRUE) ; - } ; - - return 0 ; -} /* voc_close */ - -static const char* -voc_encoding2str (int encoding) -{ - switch (encoding) - { case 0 : return "8 bit unsigned PCM" ; - case 4 : return "16 bit signed PCM" ; - case 6 : return "A-law" ; - case 7 : return "u-law" ; - default : break ; - } - return "*** Unknown ***" ; -} /* voc_encoding2str */ - -/*==================================================================================== -*/ - -#if 0 -static int -voc_multi_init (SF_PRIVATE *psf, VOC_DATA *pvoc) -{ - psf->sf.frames = 0 ; - - if (pvoc->bitwidth == 8) - { psf->read_short = voc_multi_read_uc2s ; - psf->read_int = voc_multi_read_uc2i ; - psf->read_float = voc_multi_read_uc2f ; - psf->read_double = voc_multi_read_uc2d ; - return 0 ; - } ; - - if (pvoc->bitwidth == 16) - { psf->read_short = voc_multi_read_les2s ; - psf->read_int = voc_multi_read_les2i ; - psf->read_float = voc_multi_read_les2f ; - psf->read_double = voc_multi_read_les2d ; - return 0 ; - } ; - - psf_log_printf (psf, "Error : bitwith != 8 && bitwidth != 16.\n") ; - - return SFE_UNIMPLEMENTED ; -} /* voc_multi_read_int */ - -/*------------------------------------------------------------------------------------ -*/ - -static int -voc_multi_read_uc2s (SF_PRIVATE *psf, short *ptr, int len) -{ - - return 0 ; -} /* voc_multi_read_uc2s */ - -static int -voc_multi_read_les2s (SF_PRIVATE *psf, short *ptr, int len) -{ - - return 0 ; -} /* voc_multi_read_les2s */ - - -static int -voc_multi_read_uc2i (SF_PRIVATE *psf, int *ptr, int len) -{ - - return 0 ; -} /* voc_multi_read_uc2i */ - -static int -voc_multi_read_les2i (SF_PRIVATE *psf, int *ptr, int len) -{ - - return 0 ; -} /* voc_multi_read_les2i */ - - -static int -voc_multi_read_uc2f (SF_PRIVATE *psf, float *ptr, int len) -{ - - return 0 ; -} /* voc_multi_read_uc2f */ - -static int -voc_multi_read_les2f (SF_PRIVATE *psf, float *ptr, int len) -{ - - return 0 ; -} /* voc_multi_read_les2f */ - - -static int -voc_multi_read_uc2d (SF_PRIVATE *psf, double *ptr, int len) -{ - - return 0 ; -} /* voc_multi_read_uc2d */ - -static int -voc_multi_read_les2d (SF_PRIVATE *psf, double *ptr, int len) -{ - - return 0 ; -} /* voc_multi_read_les2d */ - -#endif - -/*------------------------------------------------------------------------------------ - -Creative Voice (VOC) file format --------------------------------- - -~From: galt@dsd.es.com - -(byte numbers are hex!) - - HEADER (bytes 00-19) - Series of DATA BLOCKS (bytes 1A+) [Must end w/ Terminator Block] - -- --------------------------------------------------------------- - -HEADER: -======= - byte # Description - ------ ------------------------------------------ - 00-12 "Creative Voice File" - 13 1A (eof to abort printing of file) - 14-15 Offset of first datablock in .voc file (std 1A 00 - in Intel Notation) - 16-17 Version number (minor,major) (VOC-HDR puts 0A 01) - 18-19 1's Comp of Ver. # + 1234h (VOC-HDR puts 29 11) - -- --------------------------------------------------------------- - -DATA BLOCK: -=========== - - Data Block: TYPE(1-byte), SIZE(3-bytes), INFO(0+ bytes) - NOTE: Terminator Block is an exception -- it has only the TYPE byte. - - TYPE Description Size (3-byte int) Info - ---- ----------- ----------------- ----------------------- - 00 Terminator (NONE) (NONE) - 01 Sound data 2+length of data * - 02 Sound continue length of data Voice Data - 03 Silence 3 ** - 04 Marker 2 Marker# (2 bytes) - 05 ASCII length of string null terminated string - 06 Repeat 2 Count# (2 bytes) - 07 End repeat 0 (NONE) - 08 Extended 4 *** - - *Sound Info Format: - --------------------- - 00 Sample Rate - 01 Compression Type - 02+ Voice Data - - **Silence Info Format: - ---------------------------- - 00-01 Length of silence - 1 - 02 Sample Rate - - - ***Extended Info Format: - --------------------- - 00-01 Time Constant: Mono: 65536 - (256000000/sample_rate) - Stereo: 65536 - (25600000/(2*sample_rate)) - 02 Pack - 03 Mode: 0 = mono - 1 = stereo - - - Marker# -- Driver keeps the most recent marker in a status byte - Count# -- Number of repetitions + 1 - Count# may be 1 to FFFE for 0 - FFFD repetitions - or FFFF for endless repetitions - Sample Rate -- SR byte = 256-(1000000/sample_rate) - Length of silence -- in units of sampling cycle - Compression Type -- of voice data - 8-bits = 0 - 4-bits = 1 - 2.6-bits = 2 - 2-bits = 3 - Multi DAC = 3+(# of channels) [interesting-- - this isn't in the developer's manual] - - ---------------------------------------------------------------------------------- -Addendum submitted by Votis Kokavessis: - -After some experimenting with .VOC files I found out that there is a Data Block -Type 9, which is not covered in the VOC.TXT file. Here is what I was able to discover -about this block type: - - -TYPE: 09 -SIZE: 12 + length of data -INFO: 12 (twelve) bytes - -INFO STRUCTURE: - -Bytes 0-1: (Word) Sample Rate (e.g. 44100) -Bytes 2-3: zero (could be that bytes 0-3 are a DWord for Sample Rate) -Byte 4: Sample Size in bits (e.g. 16) -Byte 5: Number of channels (e.g. 1 for mono, 2 for stereo) -Byte 6: Unknown (equal to 4 in all files I examined) -Bytes 7-11: zero - - --------------------------------------------------------------------------------------*/ - -/*===================================================================================== -**===================================================================================== -**===================================================================================== -**===================================================================================== -*/ - -/*------------------------------------------------------------------------ -The following is taken from the Audio File Formats FAQ dated 2-Jan-1995 -and submitted by Guido van Rossum . --------------------------------------------------------------------------- -Creative Voice (VOC) file format --------------------------------- - -From: galt@dsd.es.com - -(byte numbers are hex!) - - HEADER (bytes 00-19) - Series of DATA BLOCKS (bytes 1A+) [Must end w/ Terminator Block] - -- --------------------------------------------------------------- - -HEADER: -------- - byte # Description - ------ ------------------------------------------ - 00-12 "Creative Voice File" - 13 1A (eof to abort printing of file) - 14-15 Offset of first datablock in .voc file (std 1A 00 - in Intel Notation) - 16-17 Version number (minor,major) (VOC-HDR puts 0A 01) - 18-19 2's Comp of Ver. # + 1234h (VOC-HDR puts 29 11) - -- --------------------------------------------------------------- - -DATA BLOCK: ------------ - - Data Block: TYPE(1-byte), SIZE(3-bytes), INFO(0+ bytes) - NOTE: Terminator Block is an exception -- it has only the TYPE byte. - - TYPE Description Size (3-byte int) Info - ---- ----------- ----------------- ----------------------- - 00 Terminator (NONE) (NONE) - 01 Sound data 2+length of data * - 02 Sound continue length of data Voice Data - 03 Silence 3 ** - 04 Marker 2 Marker# (2 bytes) - 05 ASCII length of string null terminated string - 06 Repeat 2 Count# (2 bytes) - 07 End repeat 0 (NONE) - 08 Extended 4 *** - - *Sound Info Format: **Silence Info Format: - --------------------- ---------------------------- - 00 Sample Rate 00-01 Length of silence - 1 - 01 Compression Type 02 Sample Rate - 02+ Voice Data - - ***Extended Info Format: - --------------------- - 00-01 Time Constant: Mono: 65536 - (256000000/sample_rate) - Stereo: 65536 - (25600000/(2*sample_rate)) - 02 Pack - 03 Mode: 0 = mono - 1 = stereo - - - Marker# -- Driver keeps the most recent marker in a status byte - Count# -- Number of repetitions + 1 - Count# may be 1 to FFFE for 0 - FFFD repetitions - or FFFF for endless repetitions - Sample Rate -- SR byte = 256-(1000000/sample_rate) - Length of silence -- in units of sampling cycle - Compression Type -- of voice data - 8-bits = 0 - 4-bits = 1 - 2.6-bits = 2 - 2-bits = 3 - Multi DAC = 3+(# of channels) [interesting-- - this isn't in the developer's manual] - -Detailed description of new data blocks (VOC files version 1.20 and above): - - (Source is fax from Barry Boone at Creative Labs, 405/742-6622) - -BLOCK 8 - digitized sound attribute extension, must preceed block 1. - Used to define stereo, 8 bit audio - BYTE bBlockID; // = 8 - BYTE nBlockLen[3]; // 3 byte length - WORD wTimeConstant; // time constant = same as block 1 - BYTE bPackMethod; // same as in block 1 - BYTE bVoiceMode; // 0-mono, 1-stereo - - Data is stored left, right - -BLOCK 9 - data block that supersedes blocks 1 and 8. - Used for stereo, 16 bit. - - BYTE bBlockID; // = 9 - BYTE nBlockLen[3]; // length 12 plus length of sound - DWORD dwSamplesPerSec; // samples per second, not time const. - BYTE bBitsPerSample; // e.g., 8 or 16 - BYTE bChannels; // 1 for mono, 2 for stereo - WORD wFormat; // see below - BYTE reserved[4]; // pad to make block w/o data - // have a size of 16 bytes - - Valid values of wFormat are: - - 0x0000 8-bit unsigned PCM - 0x0001 Creative 8-bit to 4-bit ADPCM - 0x0002 Creative 8-bit to 3-bit ADPCM - 0x0003 Creative 8-bit to 2-bit ADPCM - 0x0004 16-bit signed PCM - 0x0006 CCITT a-Law - 0x0007 CCITT u-Law - 0x02000 Creative 16-bit to 4-bit ADPCM - - Data is stored left, right - -------------------------------------------------------------------------*/ -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 40a50167-a81c-463a-9e1d-3282ff84e09d -*/ diff --git a/libs/libsndfile/src/vox_adpcm.c b/libs/libsndfile/src/vox_adpcm.c deleted file mode 100644 index f743a72911..0000000000 --- a/libs/libsndfile/src/vox_adpcm.c +++ /dev/null @@ -1,537 +0,0 @@ -/* -** Copyright (C) 2002-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -/* -** This is the OKI / Dialogic ADPCM encoder/decoder. It converts from -** 12 bit linear sample data to a 4 bit ADPCM. -** -** Implemented from the description found here: -** -** http://www.comptek.ru:8100/telephony/tnotes/tt1-13.html -** -** and compared against the encoder/decoder found here: -** -** http://ibiblio.org/pub/linux/apps/sound/convert/vox.tar.gz -*/ - -#include "sfconfig.h" - -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "float_cast.h" -#include "common.h" - -#define VOX_DATA_LEN 2048 -#define PCM_DATA_LEN (VOX_DATA_LEN *2) - -typedef struct -{ short last ; - short step_index ; - - int vox_bytes, pcm_samples ; - - unsigned char vox_data [VOX_DATA_LEN] ; - short pcm_data [PCM_DATA_LEN] ; -} VOX_ADPCM_PRIVATE ; - -static int vox_adpcm_encode_block (VOX_ADPCM_PRIVATE *pvox) ; -static int vox_adpcm_decode_block (VOX_ADPCM_PRIVATE *pvox) ; - -static short vox_adpcm_decode (char code, VOX_ADPCM_PRIVATE *pvox) ; -static char vox_adpcm_encode (short samp, VOX_ADPCM_PRIVATE *pvox) ; - -static sf_count_t vox_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t vox_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t vox_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t vox_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t vox_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t vox_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t vox_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t vox_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -static int vox_read_block (SF_PRIVATE *psf, VOX_ADPCM_PRIVATE *pvox, short *ptr, int len) ; - -/*============================================================================================ -** Predefined OKI ADPCM encoder/decoder tables. -*/ - -static short step_size_table [49] = -{ 16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, 50, 55, 60, - 66, 73, 80, 88, 97, 107, 118, 130, 143, 157, 173, 190, 209, - 230, 253, 279, 307, 337, 371, 408, 449, 494, 544, 598, 658, - 724, 796, 876, 963, 1060, 1166, 1282, 1408, 1552 -} ; /* step_size_table */ - -static short step_adjust_table [8] = -{ -1, -1, -1, -1, 2, 4, 6, 8 -} ; /* step_adjust_table */ - -/*------------------------------------------------------------------------------ -*/ - -int -vox_adpcm_init (SF_PRIVATE *psf) -{ VOX_ADPCM_PRIVATE *pvox = NULL ; - - if (psf->mode == SFM_RDWR) - return SFE_BAD_MODE_RW ; - - if (psf->mode == SFM_WRITE && psf->sf.channels != 1) - return SFE_CHANNEL_COUNT ; - - if ((pvox = malloc (sizeof (VOX_ADPCM_PRIVATE))) == NULL) - return SFE_MALLOC_FAILED ; - - psf->fdata = (void*) pvox ; - memset (pvox, 0, sizeof (VOX_ADPCM_PRIVATE)) ; - - if (psf->mode == SFM_WRITE) - { psf->write_short = vox_write_s ; - psf->write_int = vox_write_i ; - psf->write_float = vox_write_f ; - psf->write_double = vox_write_d ; - } - else - { psf_log_printf (psf, "Header-less OKI Dialogic ADPCM encoded file.\n") ; - psf_log_printf (psf, "Setting up for 8kHz, mono, Vox ADPCM.\n") ; - - psf->read_short = vox_read_s ; - psf->read_int = vox_read_i ; - psf->read_float = vox_read_f ; - psf->read_double = vox_read_d ; - } ; - - /* Standard sample rate chennels etc. */ - if (psf->sf.samplerate < 1) - psf->sf.samplerate = 8000 ; - psf->sf.channels = 1 ; - - psf->sf.frames = psf->filelength * 2 ; - - psf->sf.seekable = SF_FALSE ; - - /* Seek back to start of data. */ - if (psf_fseek (psf, 0 , SEEK_SET) == -1) - return SFE_BAD_SEEK ; - - return 0 ; -} /* vox_adpcm_init */ - -/*------------------------------------------------------------------------------ -*/ - -static char -vox_adpcm_encode (short samp, VOX_ADPCM_PRIVATE *pvox) -{ short code ; - short diff, error, stepsize ; - - stepsize = step_size_table [pvox->step_index] ; - code = 0 ; - - diff = samp - pvox->last ; - if (diff < 0) - { code = 0x08 ; - error = -diff ; - } - else - error = diff ; - - if (error >= stepsize) - { code = code | 0x04 ; - error -= stepsize ; - } ; - - if (error >= stepsize / 2) - { code = code | 0x02 ; - error -= stepsize / 2 ; - } ; - - if (error >= stepsize / 4) - code = code | 0x01 ; - - /* - ** To close the feedback loop, the deocder is used to set the - ** estimate of last sample and in doing so, also set the step_index. - */ - pvox->last = vox_adpcm_decode (code, pvox) ; - - return code ; -} /* vox_adpcm_encode */ - -static short -vox_adpcm_decode (char code, VOX_ADPCM_PRIVATE *pvox) -{ short diff, error, stepsize, samp ; - - stepsize = step_size_table [pvox->step_index] ; - - error = stepsize / 8 ; - - if (code & 0x01) - error += stepsize / 4 ; - - if (code & 0x02) - error += stepsize / 2 ; - - if (code & 0x04) - error += stepsize ; - - diff = (code & 0x08) ? -error : error ; - samp = pvox->last + diff ; - - /* - ** Apply clipping. - */ - if (samp > 2048) - samp = 2048 ; - if (samp < -2048) - samp = -2048 ; - - pvox->last = samp ; - pvox->step_index += step_adjust_table [code & 0x7] ; - - if (pvox->step_index < 0) - pvox->step_index = 0 ; - if (pvox->step_index > 48) - pvox->step_index = 48 ; - - return samp ; -} /* vox_adpcm_decode */ - -static int -vox_adpcm_encode_block (VOX_ADPCM_PRIVATE *pvox) -{ unsigned char code ; - int j, k ; - - /* If data_count is odd, add an extra zero valued sample. */ - if (pvox->pcm_samples & 1) - pvox->pcm_data [pvox->pcm_samples++] = 0 ; - - for (j = k = 0 ; k < pvox->pcm_samples ; j++) - { code = vox_adpcm_encode (pvox->pcm_data [k++] / 16, pvox) << 4 ; - code |= vox_adpcm_encode (pvox->pcm_data [k++] / 16, pvox) ; - pvox->vox_data [j] = code ; - } ; - - pvox->vox_bytes = j ; - - return 0 ; -} /* vox_adpcm_encode_block */ - -static int -vox_adpcm_decode_block (VOX_ADPCM_PRIVATE *pvox) -{ unsigned char code ; - int j, k ; - - for (j = k = 0 ; j < pvox->vox_bytes ; j++) - { code = pvox->vox_data [j] ; - pvox->pcm_data [k++] = 16 * vox_adpcm_decode ((code >> 4) & 0x0f, pvox) ; - pvox->pcm_data [k++] = 16 * vox_adpcm_decode (code & 0x0f, pvox) ; - } ; - - pvox->pcm_samples = k ; - - return 0 ; -} /* vox_adpcm_decode_block */ - -/*============================================================================== -*/ - -static int -vox_read_block (SF_PRIVATE *psf, VOX_ADPCM_PRIVATE *pvox, short *ptr, int len) -{ int indx = 0, k ; - - while (indx < len) - { pvox->vox_bytes = (len - indx > PCM_DATA_LEN) ? VOX_DATA_LEN : (len - indx + 1) / 2 ; - - if ((k = psf_fread (pvox->vox_data, 1, pvox->vox_bytes, psf)) != pvox->vox_bytes) - { if (psf_ftell (psf) + k != psf->filelength) - psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, pvox->vox_bytes) ; - if (k == 0) - break ; - } ; - - pvox->vox_bytes = k ; - - vox_adpcm_decode_block (pvox) ; - - memcpy (&(ptr [indx]), pvox->pcm_data, pvox->pcm_samples * sizeof (short)) ; - indx += pvox->pcm_samples ; - } ; - - return indx ; -} /* vox_read_block */ - - -static sf_count_t -vox_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ VOX_ADPCM_PRIVATE *pvox ; - int readcount, count ; - sf_count_t total = 0 ; - - if (! psf->fdata) - return 0 ; - pvox = (VOX_ADPCM_PRIVATE*) psf->fdata ; - - while (len > 0) - { readcount = (len > 0x10000000) ? 0x10000000 : (int) len ; - - count = vox_read_block (psf, pvox, ptr, readcount) ; - - total += count ; - len -= count ; - if (count != readcount) - break ; - } ; - - return total ; -} /* vox_read_s */ - -static sf_count_t -vox_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ VOX_ADPCM_PRIVATE *pvox ; - short *sptr ; - int k, bufferlen, readcount, count ; - sf_count_t total = 0 ; - - if (! psf->fdata) - return 0 ; - pvox = (VOX_ADPCM_PRIVATE*) psf->fdata ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : (int) len ; - count = vox_read_block (psf, pvox, sptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = ((int) sptr [k]) << 16 ; - total += count ; - len -= readcount ; - if (count != readcount) - break ; - } ; - - return total ; -} /* vox_read_i */ - -static sf_count_t -vox_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ VOX_ADPCM_PRIVATE *pvox ; - short *sptr ; - int k, bufferlen, readcount, count ; - sf_count_t total = 0 ; - float normfact ; - - if (! psf->fdata) - return 0 ; - pvox = (VOX_ADPCM_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : (int) len ; - count = vox_read_block (psf, pvox, sptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = normfact * (float) (sptr [k]) ; - total += count ; - len -= readcount ; - if (count != readcount) - break ; - } ; - - return total ; -} /* vox_read_f */ - -static sf_count_t -vox_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ VOX_ADPCM_PRIVATE *pvox ; - short *sptr ; - int k, bufferlen, readcount, count ; - sf_count_t total = 0 ; - double normfact ; - - if (! psf->fdata) - return 0 ; - pvox = (VOX_ADPCM_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { readcount = (len >= bufferlen) ? bufferlen : (int) len ; - count = vox_read_block (psf, pvox, sptr, readcount) ; - for (k = 0 ; k < readcount ; k++) - ptr [total + k] = normfact * (double) (sptr [k]) ; - total += count ; - len -= readcount ; - if (count != readcount) - break ; - } ; - - return total ; -} /* vox_read_d */ - -/*------------------------------------------------------------------------------ -*/ - -static int -vox_write_block (SF_PRIVATE *psf, VOX_ADPCM_PRIVATE *pvox, const short *ptr, int len) -{ int indx = 0, k ; - - while (indx < len) - { pvox->pcm_samples = (len - indx > PCM_DATA_LEN) ? PCM_DATA_LEN : len - indx ; - - memcpy (pvox->pcm_data, &(ptr [indx]), pvox->pcm_samples * sizeof (short)) ; - - vox_adpcm_encode_block (pvox) ; - - if ((k = psf_fwrite (pvox->vox_data, 1, pvox->vox_bytes, psf)) != pvox->vox_bytes) - psf_log_printf (psf, "*** Warning : short read (%d != %d).\n", k, pvox->vox_bytes) ; - - indx += pvox->pcm_samples ; - } ; - - return indx ; -} /* vox_write_block */ - -static sf_count_t -vox_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ VOX_ADPCM_PRIVATE *pvox ; - int writecount, count ; - sf_count_t total = 0 ; - - if (! psf->fdata) - return 0 ; - pvox = (VOX_ADPCM_PRIVATE*) psf->fdata ; - - while (len) - { writecount = (len > 0x10000000) ? 0x10000000 : (int) len ; - - count = vox_write_block (psf, pvox, ptr, writecount) ; - - total += count ; - len -= count ; - if (count != writecount) - break ; - } ; - - return total ; -} /* vox_write_s */ - -static sf_count_t -vox_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ VOX_ADPCM_PRIVATE *pvox ; - short *sptr ; - int k, bufferlen, writecount, count ; - sf_count_t total = 0 ; - - if (! psf->fdata) - return 0 ; - pvox = (VOX_ADPCM_PRIVATE*) psf->fdata ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : (int) len ; - for (k = 0 ; k < writecount ; k++) - sptr [k] = ptr [total + k] >> 16 ; - count = vox_write_block (psf, pvox, sptr, writecount) ; - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - - return total ; -} /* vox_write_i */ - -static sf_count_t -vox_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ VOX_ADPCM_PRIVATE *pvox ; - short *sptr ; - int k, bufferlen, writecount, count ; - sf_count_t total = 0 ; - float normfact ; - - if (! psf->fdata) - return 0 ; - pvox = (VOX_ADPCM_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : (int) len ; - for (k = 0 ; k < writecount ; k++) - sptr [k] = lrintf (normfact * ptr [total + k]) ; - count = vox_write_block (psf, pvox, sptr, writecount) ; - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - - return total ; -} /* vox_write_f */ - -static sf_count_t -vox_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ VOX_ADPCM_PRIVATE *pvox ; - short *sptr ; - int k, bufferlen, writecount, count ; - sf_count_t total = 0 ; - double normfact ; - - if (! psf->fdata) - return 0 ; - pvox = (VOX_ADPCM_PRIVATE*) psf->fdata ; - - normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ; - - sptr = psf->u.sbuf ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (len > 0) - { writecount = (len >= bufferlen) ? bufferlen : (int) len ; - for (k = 0 ; k < writecount ; k++) - sptr [k] = lrint (normfact * ptr [total + k]) ; - count = vox_write_block (psf, pvox, sptr, writecount) ; - total += count ; - len -= writecount ; - if (count != writecount) - break ; - } ; - - return total ; -} /* vox_write_d */ - - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: e15e97fe-ff9d-4b46-a489-7059fb2d0b1e -*/ diff --git a/libs/libsndfile/src/w64.c b/libs/libsndfile/src/w64.c deleted file mode 100644 index 756b093153..0000000000 --- a/libs/libsndfile/src/w64.c +++ /dev/null @@ -1,578 +0,0 @@ -/* -** Copyright (C) 1999-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" -#include "wav_w64.h" - -/*------------------------------------------------------------------------------ -** W64 files use 16 byte markers as opposed to the four byte marker of -** WAV files. -** For comparison purposes, an integer is required, so make an integer -** hash for the 16 bytes using MAKE_HASH16 macro, but also create a 16 -** byte array containing the complete 16 bytes required when writing the -** header. -*/ - -#define MAKE_HASH16(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,xa,xb,xc,xd,xe,xf) \ - ( (x0) ^ ((x1) << 1) ^ ((x2) << 2) ^ ((x3) << 3) ^ \ - ((x4) << 4) ^ ((x5) << 5) ^ ((x6) << 6) ^ ((x7) << 7) ^ \ - ((x8) << 8) ^ ((x9) << 9) ^ ((xa) << 10) ^ ((xb) << 11) ^ \ - ((xc) << 12) ^ ((xd) << 13) ^ ((xe) << 14) ^ ((xf) << 15) ) - -#define MAKE_MARKER16(name,x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,xa,xb,xc,xd,xe,xf) \ - static unsigned char name [16] = { (x0), (x1), (x2), (x3), (x4), (x5), \ - (x6), (x7), (x8), (x9), (xa), (xb), (xc), (xd), (xe), (xf) } - -#define riff_HASH16 MAKE_HASH16 ('r', 'i', 'f', 'f', 0x2E, 0x91, 0xCF, 0x11, 0xA5, \ - 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00) - -#define wave_HASH16 MAKE_HASH16 ('w', 'a', 'v', 'e', 0xF3, 0xAC, 0xD3, 0x11, \ - 0x8C, 0xD1, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A) - -#define fmt_HASH16 MAKE_HASH16 ('f', 'm', 't', ' ', 0xF3, 0xAC, 0xD3, 0x11, \ - 0x8C, 0xD1, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A) - -#define fact_HASH16 MAKE_HASH16 ('f', 'a', 'c', 't', 0xF3, 0xAC, 0xD3, 0x11, \ - 0x8C, 0xD1, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A) - -#define data_HASH16 MAKE_HASH16 ('d', 'a', 't', 'a', 0xF3, 0xAC, 0xD3, 0x11, \ - 0x8C, 0xD1, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A) - -#define ACID_HASH16 MAKE_HASH16 (0x6D, 0x07, 0x1C, 0xEA, 0xA3, 0xEF, 0x78, 0x4C, \ - 0x90, 0x57, 0x7F, 0x79, 0xEE, 0x25, 0x2A, 0xAE) - -MAKE_MARKER16 (riff_MARKER16, 'r', 'i', 'f', 'f', 0x2E, 0x91, 0xCF, 0x11, - 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00) ; - - -MAKE_MARKER16 (wave_MARKER16, 'w', 'a', 'v', 'e', 0xF3, 0xAC, 0xD3, 0x11, - 0x8C, 0xD1, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A) ; - -MAKE_MARKER16 (fmt_MARKER16, 'f', 'm', 't', ' ', 0xF3, 0xAC, 0xD3, 0x11, - 0x8C, 0xD1, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A) ; - -MAKE_MARKER16 (fact_MARKER16, 'f', 'a', 'c', 't', 0xF3, 0xAC, 0xD3, 0x11, - 0x8C, 0xD1, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A) ; - -MAKE_MARKER16 (data_MARKER16, 'd', 'a', 't', 'a', 0xF3, 0xAC, 0xD3, 0x11, - 0x8C, 0xD1, 0x00, 0xC0, 0x4F, 0x8E, 0xDB, 0x8A) ; - -enum -{ HAVE_riff = 0x01, - HAVE_wave = 0x02, - HAVE_fmt = 0x04, - HAVE_fact = 0x08, - HAVE_data = 0x20 -} ; - -/*------------------------------------------------------------------------------ - * Private static functions. - */ - -static int w64_read_header (SF_PRIVATE *psf, int *blockalign, int *framesperblock) ; -static int w64_write_header (SF_PRIVATE *psf, int calc_length) ; -static int w64_close (SF_PRIVATE *psf) ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -w64_open (SF_PRIVATE *psf) -{ int subformat, error, blockalign = 0, framesperblock = 0 ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR &&psf->filelength > 0)) - { if ((error = w64_read_header (psf, &blockalign, &framesperblock))) - return error ; - } ; - - if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_W64) - return SFE_BAD_OPEN_FORMAT ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if (psf->is_pipe) - return SFE_NO_PIPE_WRITE ; - - psf->endian = SF_ENDIAN_LITTLE ; /* All W64 files are little endian. */ - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - - if (subformat == SF_FORMAT_IMA_ADPCM || subformat == SF_FORMAT_MS_ADPCM) - { blockalign = wav_w64_srate2blocksize (psf->sf.samplerate * psf->sf.channels) ; - framesperblock = -1 ; - - /* FIXME : This block must go */ - psf->filelength = SF_COUNT_MAX ; - psf->datalength = psf->filelength ; - if (psf->sf.frames <= 0) - psf->sf.frames = (psf->blockwidth) ? psf->filelength / psf->blockwidth : psf->filelength ; - /* EMXIF : This block must go */ - } ; - - if ((error = w64_write_header (psf, SF_FALSE))) - return error ; - - psf->write_header = w64_write_header ; - } ; - - psf->container_close = w64_close ; - - switch (subformat) - { case SF_FORMAT_PCM_U8 : - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_24 : - case SF_FORMAT_PCM_32 : - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_ULAW : - error = ulaw_init (psf) ; - break ; - - case SF_FORMAT_ALAW : - error = alaw_init (psf) ; - break ; - - /* Lite remove start */ - case SF_FORMAT_FLOAT : - error = float32_init (psf) ; - break ; - - case SF_FORMAT_DOUBLE : - error = double64_init (psf) ; - break ; - - case SF_FORMAT_IMA_ADPCM : - error = wav_w64_ima_init (psf, blockalign, framesperblock) ; - break ; - - case SF_FORMAT_MS_ADPCM : - error = wav_w64_msadpcm_init (psf, blockalign, framesperblock) ; - break ; - /* Lite remove end */ - - case SF_FORMAT_GSM610 : - error = gsm610_init (psf) ; - break ; - - default : return SFE_UNIMPLEMENTED ; - } ; - - return error ; -} /* w64_open */ - -/*========================================================================= -** Private functions. -*/ - -static int -w64_read_header (SF_PRIVATE *psf, int *blockalign, int *framesperblock) -{ WAV_FMT wav_fmt ; - int dword = 0, marker, format = 0 ; - sf_count_t chunk_size, bytesread = 0 ; - int parsestage = 0, error, done = 0 ; - - /* Set position to start of file to begin reading header. */ - memset (&wav_fmt, 0, sizeof (wav_fmt)) ; - psf_binheader_readf (psf, "p", 0) ; - - while (! done) - { /* Read the 4 byte marker and jump 12 bytes. */ - bytesread += psf_binheader_readf (psf, "h", &marker) ; - chunk_size = 0 ; - - switch (marker) - { case riff_HASH16 : - if (parsestage) - return SFE_W64_NO_RIFF ; - - bytesread += psf_binheader_readf (psf, "e8", &chunk_size) ; - - if (psf->filelength < chunk_size) - psf_log_printf (psf, "riff : %D (should be %D)\n", chunk_size, psf->filelength) ; - else - psf_log_printf (psf, "riff : %D\n", chunk_size) ; - - parsestage |= HAVE_riff ; - break ; - - case ACID_HASH16: - psf_log_printf (psf, "Looks like an ACID file. Exiting.\n") ; - return SFE_UNIMPLEMENTED ; - - case wave_HASH16 : - if ((parsestage & HAVE_riff) != HAVE_riff) - return SFE_W64_NO_WAVE ; - psf_log_printf (psf, "wave\n") ; - parsestage |= HAVE_wave ; - break ; - - case fmt_HASH16 : - if ((parsestage & (HAVE_riff | HAVE_wave)) != (HAVE_riff | HAVE_wave)) - return SFE_W64_NO_FMT ; - - bytesread += psf_binheader_readf (psf, "e8", &chunk_size) ; - psf_log_printf (psf, " fmt : %D\n", chunk_size) ; - - /* size of 16 byte marker and 8 byte chunk_size value. */ - chunk_size -= 24 ; - - if ((error = wav_w64_read_fmt_chunk (psf, &wav_fmt, (int) chunk_size))) - return error ; - - if (chunk_size % 8) - psf_binheader_readf (psf, "j", 8 - (chunk_size % 8)) ; - - format = wav_fmt.format ; - parsestage |= HAVE_fmt ; - break ; - - case fact_HASH16: - { sf_count_t frames ; - - psf_binheader_readf (psf, "e88", &chunk_size, &frames) ; - psf_log_printf (psf, " fact : %D\n frames : %D\n", - chunk_size, frames) ; - } ; - break ; - - - case data_HASH16 : - if ((parsestage & (HAVE_riff | HAVE_wave | HAVE_fmt)) != (HAVE_riff | HAVE_wave | HAVE_fmt)) - return SFE_W64_NO_DATA ; - - psf_binheader_readf (psf, "e8", &chunk_size) ; - - psf->dataoffset = psf_ftell (psf) ; - - psf->datalength = chunk_size - 24 ; - - if (chunk_size % 8) - chunk_size += 8 - (chunk_size % 8) ; - - psf_log_printf (psf, "data : %D\n", chunk_size) ; - - parsestage |= HAVE_data ; - - if (! psf->sf.seekable) - break ; - - /* Seek past data and continue reading header. */ - psf_fseek (psf, chunk_size, SEEK_CUR) ; - break ; - - default : - if (psf_ftell (psf) & 0x0F) - { psf_log_printf (psf, " Unknown chunk marker at position %d. Resynching.\n", dword - 4) ; - psf_binheader_readf (psf, "j", -3) ; - break ; - } ; - psf_log_printf (psf, "*** Unknown chunk marker : %X. Exiting parser.\n", marker) ; - done = SF_TRUE ; - break ; - } ; /* switch (dword) */ - - if (psf->sf.seekable == 0 && (parsestage & HAVE_data)) - break ; - - if (psf_ftell (psf) >= (psf->filelength - (2 * SIGNED_SIZEOF (dword)))) - break ; - } ; /* while (1) */ - - if (! psf->dataoffset) - return SFE_W64_NO_DATA ; - - psf->endian = SF_ENDIAN_LITTLE ; /* All WAV files are little endian. */ - - if (psf_ftell (psf) != psf->dataoffset) - psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - - if (psf->blockwidth) - { if (psf->filelength - psf->dataoffset < psf->datalength) - psf->sf.frames = (psf->filelength - psf->dataoffset) / psf->blockwidth ; - else - psf->sf.frames = psf->datalength / psf->blockwidth ; - } ; - - switch (format) - { case WAVE_FORMAT_PCM : - case WAVE_FORMAT_EXTENSIBLE : - /* extensible might be FLOAT, MULAW, etc as well! */ - psf->sf.format = SF_FORMAT_W64 | u_bitwidth_to_subformat (psf->bytewidth * 8) ; - break ; - - case WAVE_FORMAT_MULAW : - psf->sf.format = (SF_FORMAT_W64 | SF_FORMAT_ULAW) ; - break ; - - case WAVE_FORMAT_ALAW : - psf->sf.format = (SF_FORMAT_W64 | SF_FORMAT_ALAW) ; - break ; - - case WAVE_FORMAT_MS_ADPCM : - psf->sf.format = (SF_FORMAT_W64 | SF_FORMAT_MS_ADPCM) ; - *blockalign = wav_fmt.msadpcm.blockalign ; - *framesperblock = wav_fmt.msadpcm.samplesperblock ; - break ; - - case WAVE_FORMAT_IMA_ADPCM : - psf->sf.format = (SF_FORMAT_W64 | SF_FORMAT_IMA_ADPCM) ; - *blockalign = wav_fmt.ima.blockalign ; - *framesperblock = wav_fmt.ima.samplesperblock ; - break ; - - case WAVE_FORMAT_GSM610 : - psf->sf.format = (SF_FORMAT_W64 | SF_FORMAT_GSM610) ; - break ; - - case WAVE_FORMAT_IEEE_FLOAT : - psf->sf.format = SF_FORMAT_W64 ; - psf->sf.format |= (psf->bytewidth == 8) ? SF_FORMAT_DOUBLE : SF_FORMAT_FLOAT ; - break ; - - default : return SFE_UNIMPLEMENTED ; - } ; - - return 0 ; -} /* w64_read_header */ - -static int -w64_write_header (SF_PRIVATE *psf, int calc_length) -{ sf_count_t fmt_size, current ; - size_t fmt_pad = 0 ; - int subformat, add_fact_chunk = SF_FALSE ; - - current = psf_ftell (psf) ; - - if (calc_length) - { psf->filelength = psf_get_filelen (psf) ; - - psf->datalength = psf->filelength - psf->dataoffset ; - if (psf->dataend) - psf->datalength -= psf->filelength - psf->dataend ; - - if (psf->bytewidth) - psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ; - } ; - - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - psf_fseek (psf, 0, SEEK_SET) ; - - /* riff marker, length, wave and 'fmt ' markers. */ - psf_binheader_writef (psf, "eh8hh", riff_MARKER16, psf->filelength - 8, wave_MARKER16, fmt_MARKER16) ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - switch (subformat) - { case SF_FORMAT_PCM_U8 : - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_24 : - case SF_FORMAT_PCM_32 : - fmt_size = 24 + 2 + 2 + 4 + 4 + 2 + 2 ; - fmt_pad = (size_t) (8 - (fmt_size & 0x7)) ; - fmt_size += fmt_pad ; - - /* fmt : format, channels, samplerate */ - psf_binheader_writef (psf, "e8224", fmt_size, WAVE_FORMAT_PCM, psf->sf.channels, psf->sf.samplerate) ; - /* fmt : bytespersec */ - psf_binheader_writef (psf, "e4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ; - /* fmt : blockalign, bitwidth */ - psf_binheader_writef (psf, "e22", psf->bytewidth * psf->sf.channels, psf->bytewidth * 8) ; - break ; - - case SF_FORMAT_FLOAT : - case SF_FORMAT_DOUBLE : - fmt_size = 24 + 2 + 2 + 4 + 4 + 2 + 2 ; - fmt_pad = (size_t) (8 - (fmt_size & 0x7)) ; - fmt_size += fmt_pad ; - - /* fmt : format, channels, samplerate */ - psf_binheader_writef (psf, "e8224", fmt_size, WAVE_FORMAT_IEEE_FLOAT, psf->sf.channels, psf->sf.samplerate) ; - /* fmt : bytespersec */ - psf_binheader_writef (psf, "e4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ; - /* fmt : blockalign, bitwidth */ - psf_binheader_writef (psf, "e22", psf->bytewidth * psf->sf.channels, psf->bytewidth * 8) ; - - add_fact_chunk = SF_TRUE ; - break ; - - case SF_FORMAT_ULAW : - fmt_size = 24 + 2 + 2 + 4 + 4 + 2 + 2 ; - fmt_pad = (size_t) (8 - (fmt_size & 0x7)) ; - fmt_size += fmt_pad ; - - /* fmt : format, channels, samplerate */ - psf_binheader_writef (psf, "e8224", fmt_size, WAVE_FORMAT_MULAW, psf->sf.channels, psf->sf.samplerate) ; - /* fmt : bytespersec */ - psf_binheader_writef (psf, "e4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ; - /* fmt : blockalign, bitwidth */ - psf_binheader_writef (psf, "e22", psf->bytewidth * psf->sf.channels, 8) ; - - add_fact_chunk = SF_TRUE ; - break ; - - case SF_FORMAT_ALAW : - fmt_size = 24 + 2 + 2 + 4 + 4 + 2 + 2 ; - fmt_pad = (size_t) (8 - (fmt_size & 0x7)) ; - fmt_size += fmt_pad ; - - /* fmt : format, channels, samplerate */ - psf_binheader_writef (psf, "e8224", fmt_size, WAVE_FORMAT_ALAW, psf->sf.channels, psf->sf.samplerate) ; - /* fmt : bytespersec */ - psf_binheader_writef (psf, "e4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ; - /* fmt : blockalign, bitwidth */ - psf_binheader_writef (psf, "e22", psf->bytewidth * psf->sf.channels, 8) ; - - add_fact_chunk = SF_TRUE ; - break ; - - /* Lite remove start */ - case SF_FORMAT_IMA_ADPCM : - { int blockalign, framesperblock, bytespersec ; - - blockalign = wav_w64_srate2blocksize (psf->sf.samplerate * psf->sf.channels) ; - framesperblock = 2 * (blockalign - 4 * psf->sf.channels) / psf->sf.channels + 1 ; - bytespersec = (psf->sf.samplerate * blockalign) / framesperblock ; - - /* fmt chunk. */ - fmt_size = 24 + 2 + 2 + 4 + 4 + 2 + 2 + 2 + 2 ; - fmt_pad = (size_t) (8 - (fmt_size & 0x7)) ; - fmt_size += fmt_pad ; - - /* fmt : size, WAV format type, channels. */ - psf_binheader_writef (psf, "e822", fmt_size, WAVE_FORMAT_IMA_ADPCM, psf->sf.channels) ; - - /* fmt : samplerate, bytespersec. */ - psf_binheader_writef (psf, "e44", psf->sf.samplerate, bytespersec) ; - - /* fmt : blockalign, bitwidth, extrabytes, framesperblock. */ - psf_binheader_writef (psf, "e2222", blockalign, 4, 2, framesperblock) ; - } ; - - add_fact_chunk = SF_TRUE ; - break ; - - case SF_FORMAT_MS_ADPCM : - { int blockalign, framesperblock, bytespersec, extrabytes ; - - blockalign = wav_w64_srate2blocksize (psf->sf.samplerate * psf->sf.channels) ; - framesperblock = 2 + 2 * (blockalign - 7 * psf->sf.channels) / psf->sf.channels ; - bytespersec = (psf->sf.samplerate * blockalign) / framesperblock ; - - /* fmt chunk. */ - extrabytes = 2 + 2 + MSADPCM_ADAPT_COEFF_COUNT * (2 + 2) ; - fmt_size = 24 + 2 + 2 + 4 + 4 + 2 + 2 + 2 + extrabytes ; - fmt_pad = (size_t) (8 - (fmt_size & 0x7)) ; - fmt_size += fmt_pad ; - - /* fmt : size, W64 format type, channels. */ - psf_binheader_writef (psf, "e822", fmt_size, WAVE_FORMAT_MS_ADPCM, psf->sf.channels) ; - - /* fmt : samplerate, bytespersec. */ - psf_binheader_writef (psf, "e44", psf->sf.samplerate, bytespersec) ; - - /* fmt : blockalign, bitwidth, extrabytes, framesperblock. */ - psf_binheader_writef (psf, "e22222", blockalign, 4, extrabytes, framesperblock, 7) ; - - msadpcm_write_adapt_coeffs (psf) ; - } ; - - add_fact_chunk = SF_TRUE ; - break ; - /* Lite remove end */ - - case SF_FORMAT_GSM610 : - { int bytespersec ; - - bytespersec = (psf->sf.samplerate * WAV_W64_GSM610_BLOCKSIZE) / WAV_W64_GSM610_SAMPLES ; - - /* fmt chunk. */ - fmt_size = 24 + 2 + 2 + 4 + 4 + 2 + 2 + 2 + 2 ; - fmt_pad = (size_t) (8 - (fmt_size & 0x7)) ; - fmt_size += fmt_pad ; - - /* fmt : size, WAV format type, channels. */ - psf_binheader_writef (psf, "e822", fmt_size, WAVE_FORMAT_GSM610, psf->sf.channels) ; - - /* fmt : samplerate, bytespersec. */ - psf_binheader_writef (psf, "e44", psf->sf.samplerate, bytespersec) ; - - /* fmt : blockalign, bitwidth, extrabytes, framesperblock. */ - psf_binheader_writef (psf, "e2222", WAV_W64_GSM610_BLOCKSIZE, 0, 2, WAV_W64_GSM610_SAMPLES) ; - } ; - - add_fact_chunk = SF_TRUE ; - break ; - - default : return SFE_UNIMPLEMENTED ; - } ; - - /* Pad to 8 bytes with zeros. */ - if (fmt_pad > 0) - psf_binheader_writef (psf, "z", fmt_pad) ; - - if (add_fact_chunk) - psf_binheader_writef (psf, "eh88", fact_MARKER16, (sf_count_t) (16 + 8 + 8), psf->sf.frames) ; - - psf_binheader_writef (psf, "eh8", data_MARKER16, psf->datalength + 24) ; - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - if (psf->error) - return psf->error ; - - psf->dataoffset = psf->headindex ; - - if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* w64_write_header */ - -static int -w64_close (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - w64_write_header (psf, SF_TRUE) ; - - return 0 ; -} /* w64_close */ - - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 9aa4e141-538a-4dd9-99c9-b3f0f2dd4f4a -*/ diff --git a/libs/libsndfile/src/wav.c b/libs/libsndfile/src/wav.c deleted file mode 100644 index c627738c39..0000000000 --- a/libs/libsndfile/src/wav.c +++ /dev/null @@ -1,1632 +0,0 @@ -/* -** Copyright (C) 1999-2006 Erik de Castro Lopo -** Copyright (C) 2004-2005 David Viens -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" -#include "wav_w64.h" - -/*------------------------------------------------------------------------------ - * Macros to handle big/little endian issues. - */ - -#define RIFF_MARKER (MAKE_MARKER ('R', 'I', 'F', 'F')) -#define RIFX_MARKER (MAKE_MARKER ('R', 'I', 'F', 'X')) -#define WAVE_MARKER (MAKE_MARKER ('W', 'A', 'V', 'E')) -#define fmt_MARKER (MAKE_MARKER ('f', 'm', 't', ' ')) -#define data_MARKER (MAKE_MARKER ('d', 'a', 't', 'a')) -#define fact_MARKER (MAKE_MARKER ('f', 'a', 'c', 't')) -#define PEAK_MARKER (MAKE_MARKER ('P', 'E', 'A', 'K')) - -#define cue_MARKER (MAKE_MARKER ('c', 'u', 'e', ' ')) -#define LIST_MARKER (MAKE_MARKER ('L', 'I', 'S', 'T')) -#define slnt_MARKER (MAKE_MARKER ('s', 'l', 'n', 't')) -#define wavl_MARKER (MAKE_MARKER ('w', 'a', 'v', 'l')) -#define INFO_MARKER (MAKE_MARKER ('I', 'N', 'F', 'O')) -#define plst_MARKER (MAKE_MARKER ('p', 'l', 's', 't')) -#define adtl_MARKER (MAKE_MARKER ('a', 'd', 't', 'l')) -#define labl_MARKER (MAKE_MARKER ('l', 'a', 'b', 'l')) -#define ltxt_MARKER (MAKE_MARKER ('l', 't', 'x', 't')) -#define note_MARKER (MAKE_MARKER ('n', 'o', 't', 'e')) -#define smpl_MARKER (MAKE_MARKER ('s', 'm', 'p', 'l')) -#define bext_MARKER (MAKE_MARKER ('b', 'e', 'x', 't')) -#define levl_MARKER (MAKE_MARKER ('l', 'e', 'v', 'l')) -#define MEXT_MARKER (MAKE_MARKER ('M', 'E', 'X', 'T')) -#define DISP_MARKER (MAKE_MARKER ('D', 'I', 'S', 'P')) -#define acid_MARKER (MAKE_MARKER ('a', 'c', 'i', 'd')) -#define strc_MARKER (MAKE_MARKER ('s', 't', 'r', 'c')) -#define PAD_MARKER (MAKE_MARKER ('P', 'A', 'D', ' ')) -#define afsp_MARKER (MAKE_MARKER ('a', 'f', 's', 'p')) -#define clm_MARKER (MAKE_MARKER ('c', 'l', 'm', ' ')) -#define elmo_MARKER (MAKE_MARKER ('e', 'l', 'm', 'o')) - -#define ISFT_MARKER (MAKE_MARKER ('I', 'S', 'F', 'T')) -#define ICRD_MARKER (MAKE_MARKER ('I', 'C', 'R', 'D')) -#define ICOP_MARKER (MAKE_MARKER ('I', 'C', 'O', 'P')) -#define IARL_MARKER (MAKE_MARKER ('I', 'A', 'R', 'L')) -#define IART_MARKER (MAKE_MARKER ('I', 'A', 'R', 'T')) -#define INAM_MARKER (MAKE_MARKER ('I', 'N', 'A', 'M')) -#define IENG_MARKER (MAKE_MARKER ('I', 'E', 'N', 'G')) -#define IART_MARKER (MAKE_MARKER ('I', 'A', 'R', 'T')) -#define ICOP_MARKER (MAKE_MARKER ('I', 'C', 'O', 'P')) -#define IPRD_MARKER (MAKE_MARKER ('I', 'P', 'R', 'D')) -#define ISRC_MARKER (MAKE_MARKER ('I', 'S', 'R', 'C')) -#define ISBJ_MARKER (MAKE_MARKER ('I', 'S', 'B', 'J')) -#define ICMT_MARKER (MAKE_MARKER ('I', 'C', 'M', 'T')) - -/* Weird WAVPACK marker which can show up at the start of the DATA section. */ -#define wvpk_MARKER (MAKE_MARKER ('w', 'v', 'p', 'k')) -#define OggS_MARKER (MAKE_MARKER ('O', 'g', 'g', 'S')) - -#define WAV_PEAK_CHUNK_SIZE(ch) (2 * sizeof (int) + ch * (sizeof (float) + sizeof (int))) -#define WAV_BEXT_CHUNK_SIZE 602 - -enum -{ HAVE_RIFF = 0x01, - HAVE_WAVE = 0x02, - HAVE_fmt = 0x04, - HAVE_fact = 0x08, - HAVE_PEAK = 0x10, - HAVE_data = 0x20, - HAVE_other = 0x80000000 -} ; - - - -/* known WAVEFORMATEXTENSIBLE GUIDS */ -static const EXT_SUBFORMAT MSGUID_SUBTYPE_PCM = -{ 0x00000001, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } -} ; - -static const EXT_SUBFORMAT MSGUID_SUBTYPE_MS_ADPCM = -{ 0x00000002, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } -} ; - -static const EXT_SUBFORMAT MSGUID_SUBTYPE_IEEE_FLOAT = -{ 0x00000003, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } -} ; - -static const EXT_SUBFORMAT MSGUID_SUBTYPE_ALAW = -{ 0x00000006, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } -} ; - -static const EXT_SUBFORMAT MSGUID_SUBTYPE_MULAW = -{ 0x00000007, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } -} ; - -/* -** the next two are from -** http://dream.cs.bath.ac.uk/researchdev/wave-ex/bformat.html -*/ -static const EXT_SUBFORMAT MSGUID_SUBTYPE_AMBISONIC_B_FORMAT_PCM = -{ 0x00000001, 0x0721, 0x11d3, { 0x86, 0x44, 0xC8, 0xC1, 0xCA, 0x00, 0x00, 0x00 } -} ; - -static const EXT_SUBFORMAT MSGUID_SUBTYPE_AMBISONIC_B_FORMAT_IEEE_FLOAT = -{ 0x00000003, 0x0721, 0x11d3, { 0x86, 0x44, 0xC8, 0xC1, 0xCA, 0x00, 0x00, 0x00 } -} ; - - -#if 0 -/* maybe interesting one day to read the following through sf_read_raw */ -/* http://www.bath.ac.uk/~masrwd/pvocex/pvocex.html */ -static const EXT_SUBFORMAT MSGUID_SUBTYPE_PVOCEX = -{ 0x8312B9C2, 0x2E6E, 0x11d4, { 0xA8, 0x24, 0xDE, 0x5B, 0x96, 0xC3, 0xAB, 0x21 } -} ; -#endif - -/*------------------------------------------------------------------------------ -** Private static functions. -*/ - -static int wav_read_header (SF_PRIVATE *psf, int *blockalign, int *framesperblock) ; -static int wav_write_header (SF_PRIVATE *psf, int calc_length) ; - -static int wavex_write_header (SF_PRIVATE *psf, int calc_length) ; - -static int wav_write_tailer (SF_PRIVATE *psf) ; -static void wav_write_strings (SF_PRIVATE *psf, int location) ; -static int wav_command (SF_PRIVATE *psf, int command, void *data, int datasize) ; -static int wav_close (SF_PRIVATE *psf) ; - -static int wav_subchunk_parse (SF_PRIVATE *psf, int chunk) ; -static int wav_read_smpl_chunk (SF_PRIVATE *psf, unsigned int chunklen) ; -static int wav_read_acid_chunk (SF_PRIVATE *psf, unsigned int chunklen) ; -static int wav_read_bext_chunk (SF_PRIVATE *psf, unsigned int chunklen) ; -static int wav_write_bext_chunk (SF_PRIVATE *psf) ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -wav_open (SF_PRIVATE *psf) -{ int format, subformat, error, blockalign = 0, framesperblock = 0 ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = wav_read_header (psf, &blockalign, &framesperblock))) - return error ; - } ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if (psf->is_pipe) - return SFE_NO_PIPE_WRITE ; - - format = psf->sf.format & SF_FORMAT_TYPEMASK ; - if (format != SF_FORMAT_WAV && format != SF_FORMAT_WAVEX) - return SFE_BAD_OPEN_FORMAT ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - - /* RIFF WAVs are little-endian, RIFX WAVs are big-endian, default to little */ - psf->endian = psf->sf.format & SF_FORMAT_ENDMASK ; - if (CPU_IS_BIG_ENDIAN && psf->endian == SF_ENDIAN_CPU) - psf->endian = SF_ENDIAN_BIG ; - else if (psf->endian != SF_ENDIAN_BIG) - psf->endian = SF_ENDIAN_LITTLE ; - - if (psf->mode != SFM_RDWR || psf->filelength < 44) - { psf->filelength = 0 ; - psf->datalength = 0 ; - psf->dataoffset = 0 ; - psf->sf.frames = 0 ; - } ; - - if (subformat == SF_FORMAT_IMA_ADPCM || subformat == SF_FORMAT_MS_ADPCM) - { blockalign = wav_w64_srate2blocksize (psf->sf.samplerate * psf->sf.channels) ; - framesperblock = -1 ; /* Corrected later. */ - } ; - - psf->str_flags = SF_STR_ALLOW_START | SF_STR_ALLOW_END ; - - /* By default, add the peak chunk to floating point files. Default behaviour - ** can be switched off using sf_command (SFC_SET_PEAK_CHUNK, SF_FALSE). - */ - if (psf->mode == SFM_WRITE && (subformat == SF_FORMAT_FLOAT || subformat == SF_FORMAT_DOUBLE)) - { if ((psf->peak_info = peak_info_calloc (psf->sf.channels)) == NULL) - return SFE_MALLOC_FAILED ; - psf->peak_info->peak_loc = SF_PEAK_START ; - } ; - - psf->write_header = (format == SF_FORMAT_WAV) ? wav_write_header : wavex_write_header ; - } ; - - psf->container_close = wav_close ; - psf->command = wav_command ; - - switch (subformat) - { case SF_FORMAT_PCM_U8 : - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_24 : - case SF_FORMAT_PCM_32 : - error = pcm_init (psf) ; - break ; - - case SF_FORMAT_ULAW : - error = ulaw_init (psf) ; - break ; - - case SF_FORMAT_ALAW : - error = alaw_init (psf) ; - break ; - - /* Lite remove start */ - case SF_FORMAT_FLOAT : - error = float32_init (psf) ; - break ; - - case SF_FORMAT_DOUBLE : - error = double64_init (psf) ; - break ; - - case SF_FORMAT_IMA_ADPCM : - error = wav_w64_ima_init (psf, blockalign, framesperblock) ; - break ; - - case SF_FORMAT_MS_ADPCM : - error = wav_w64_msadpcm_init (psf, blockalign, framesperblock) ; - break ; - - case SF_FORMAT_G721_32 : - error = g72x_init (psf) ; - break ; - /* Lite remove end */ - - case SF_FORMAT_GSM610 : - error = gsm610_init (psf) ; - break ; - - default : return SFE_UNIMPLEMENTED ; - } ; - - if (psf->mode == SFM_WRITE || (psf->mode == SFM_RDWR && psf->filelength == 0)) - return psf->write_header (psf, SF_FALSE) ; - - return error ; -} /* wav_open */ - -/*========================================================================= -** Private functions. -*/ - -static int -wav_read_header (SF_PRIVATE *psf, int *blockalign, int *framesperblock) -{ WAV_FMT wav_fmt ; - FACT_CHUNK fact_chunk ; - unsigned dword = 0, marker, RIFFsize, done = 0 ; - int parsestage = 0, error, format = 0 ; - char *cptr ; - - memset (&wav_fmt, 0, sizeof (wav_fmt)) ; - /* Set position to start of file to begin reading header. */ - psf_binheader_readf (psf, "p", 0) ; - - while (! done) - { psf_binheader_readf (psf, "m", &marker) ; - - switch (marker) - { case RIFF_MARKER : - case RIFX_MARKER : - if (parsestage) - return SFE_WAV_NO_RIFF ; - - parsestage |= HAVE_RIFF ; - - /* RIFX signifies big-endian format for all header and data - ** to prevent lots of code copying here, we'll set the psf->rwf_endian - ** flag once here, and never specify endian-ness for all other header ops - */ - if (marker == RIFF_MARKER) - psf->rwf_endian = SF_ENDIAN_LITTLE ; - else - psf->rwf_endian = SF_ENDIAN_BIG ; - - psf_binheader_readf (psf, "4", &RIFFsize) ; - - if (psf->fileoffset > 0 && psf->filelength > RIFFsize + 8) - { /* Set file length. */ - psf->filelength = RIFFsize + 8 ; - if (marker == RIFF_MARKER) - psf_log_printf (psf, "RIFF : %u\n", RIFFsize) ; - else - psf_log_printf (psf, "RIFX : %u\n", RIFFsize) ; - } - else if (psf->filelength < RIFFsize + 2 * SIGNED_SIZEOF (dword)) - { if (marker == RIFF_MARKER) - psf_log_printf (psf, "RIFF : %u (should be %D)\n", RIFFsize, psf->filelength - 2 * SIGNED_SIZEOF (dword)) ; - else - psf_log_printf (psf, "RIFX : %u (should be %D)\n", RIFFsize, psf->filelength - 2 * SIGNED_SIZEOF (dword)) ; - - RIFFsize = dword ; - } - else - { if (marker == RIFF_MARKER) - psf_log_printf (psf, "RIFF : %u\n", RIFFsize) ; - else - psf_log_printf (psf, "RIFX : %u\n", RIFFsize) ; - } ; - break ; - - case WAVE_MARKER : - if ((parsestage & HAVE_RIFF) != HAVE_RIFF) - return SFE_WAV_NO_WAVE ; - parsestage |= HAVE_WAVE ; - - psf_log_printf (psf, "WAVE\n") ; - break ; - - case fmt_MARKER : - if ((parsestage & (HAVE_RIFF | HAVE_WAVE)) != (HAVE_RIFF | HAVE_WAVE)) - return SFE_WAV_NO_FMT ; - - /* If this file has a SECOND fmt chunk, I don't want to know about it. */ - if (parsestage & HAVE_fmt) - break ; - - parsestage |= HAVE_fmt ; - - psf_binheader_readf (psf, "4", &dword) ; - psf_log_printf (psf, "fmt : %d\n", dword) ; - - if ((error = wav_w64_read_fmt_chunk (psf, &wav_fmt, dword))) - return error ; - - format = wav_fmt.format ; - break ; - - case data_MARKER : - if ((parsestage & (HAVE_RIFF | HAVE_WAVE | HAVE_fmt)) != (HAVE_RIFF | HAVE_WAVE | HAVE_fmt)) - return SFE_WAV_NO_DATA ; - - if (psf->mode == SFM_RDWR && (parsestage & HAVE_other) != 0) - return SFE_RDWR_BAD_HEADER ; - - parsestage |= HAVE_data ; - - psf_binheader_readf (psf, "4", &dword) ; - - psf->datalength = dword ; - psf->dataoffset = psf_ftell (psf) ; - - if (dword == 0 && RIFFsize == 8 && psf->filelength > 44) - { psf_log_printf (psf, "*** Looks like a WAV file which wasn't closed properly. Fixing it.\n") ; - psf->datalength = dword = psf->filelength - psf->dataoffset ; - } ; - - if (psf->datalength > psf->filelength - psf->dataoffset) - { psf_log_printf (psf, "data : %D (should be %D)\n", psf->datalength, psf->filelength - psf->dataoffset) ; - psf->datalength = psf->filelength - psf->dataoffset ; - } - else - psf_log_printf (psf, "data : %D\n", psf->datalength) ; - - /* Only set dataend if there really is data at the end. */ - if (psf->datalength + psf->dataoffset < psf->filelength) - psf->dataend = psf->datalength + psf->dataoffset ; - - if (format == WAVE_FORMAT_MS_ADPCM && psf->datalength % 2) - { psf->datalength ++ ; - psf_log_printf (psf, "*** Data length odd. Increasing it by 1.\n") ; - } ; - - if (! psf->sf.seekable) - break ; - - /* Seek past data and continue reading header. */ - psf_fseek (psf, psf->datalength, SEEK_CUR) ; - - dword = psf_ftell (psf) ; - if (dword != (sf_count_t) (psf->dataoffset + psf->datalength)) - psf_log_printf (psf, "*** psf_fseek past end error ***\n", dword, psf->dataoffset + psf->datalength) ; - break ; - - case fact_MARKER : - if ((parsestage & (HAVE_RIFF | HAVE_WAVE)) != (HAVE_RIFF | HAVE_WAVE)) - return SFE_WAV_BAD_FACT ; - - parsestage |= HAVE_fact ; - - if ((parsestage & HAVE_fmt) != HAVE_fmt) - psf_log_printf (psf, "*** Should have 'fmt ' chunk before 'fact'\n") ; - - psf_binheader_readf (psf, "44", &dword, & (fact_chunk.frames)) ; - - if (dword > SIGNED_SIZEOF (fact_chunk)) - psf_binheader_readf (psf, "j", (int) (dword - SIGNED_SIZEOF (fact_chunk))) ; - - if (dword) - psf_log_printf (psf, "%M : %d\n", marker, dword) ; - else - psf_log_printf (psf, "%M : %d (should not be zero)\n", marker, dword) ; - - psf_log_printf (psf, " frames : %d\n", fact_chunk.frames) ; - break ; - - case PEAK_MARKER : - if ((parsestage & (HAVE_RIFF | HAVE_WAVE | HAVE_fmt)) != (HAVE_RIFF | HAVE_WAVE | HAVE_fmt)) - return SFE_WAV_PEAK_B4_FMT ; - - parsestage |= HAVE_PEAK ; - - psf_binheader_readf (psf, "4", &dword) ; - - psf_log_printf (psf, "%M : %d\n", marker, dword) ; - if (dword != WAV_PEAK_CHUNK_SIZE (psf->sf.channels)) - { psf_binheader_readf (psf, "j", dword) ; - psf_log_printf (psf, "*** File PEAK chunk size doesn't fit with number of channels (%d).\n", psf->sf.channels) ; - return SFE_WAV_BAD_PEAK ; - } ; - - if ((psf->peak_info = peak_info_calloc (psf->sf.channels)) == NULL) - return SFE_MALLOC_FAILED ; - - /* read in rest of PEAK chunk. */ - psf_binheader_readf (psf, "44", & (psf->peak_info->version), & (psf->peak_info->timestamp)) ; - - if (psf->peak_info->version != 1) - psf_log_printf (psf, " version : %d *** (should be version 1)\n", psf->peak_info->version) ; - else - psf_log_printf (psf, " version : %d\n", psf->peak_info->version) ; - - psf_log_printf (psf, " time stamp : %d\n", psf->peak_info->timestamp) ; - psf_log_printf (psf, " Ch Position Value\n") ; - - cptr = psf->u.cbuf ; - for (dword = 0 ; dword < (unsigned) psf->sf.channels ; dword++) - { float value ; - unsigned int position ; - psf_binheader_readf (psf, "f4", &value, &position) ; - psf->peak_info->peaks [dword].value = value ; - psf->peak_info->peaks [dword].position = position ; - - LSF_SNPRINTF (cptr, sizeof (psf->u.cbuf), " %2d %-12ld %g\n", - dword, (long) psf->peak_info->peaks [dword].position, psf->peak_info->peaks [dword].value) ; - cptr [sizeof (psf->u.cbuf) - 1] = 0 ; - psf_log_printf (psf, cptr) ; - } ; - - psf->peak_info->peak_loc = ((parsestage & HAVE_data) == 0) ? SF_PEAK_START : SF_PEAK_END ; - break ; - - case cue_MARKER : - parsestage |= HAVE_other ; - - { unsigned bytesread, cue_count ; - int id, position, chunk_id, chunk_start, block_start, offset ; - - bytesread = psf_binheader_readf (psf, "44", &dword, &cue_count) ; - bytesread -= 4 ; /* Remove bytes for first dword. */ - psf_log_printf (psf, "%M : %u\n", marker, dword) ; - - if (cue_count > 10) - { psf_log_printf (psf, " Count : %d (skipping)\n", cue_count) ; - psf_binheader_readf (psf, "j", cue_count * 24) ; - break ; - } ; - - psf_log_printf (psf, " Count : %d\n", cue_count) ; - - while (cue_count) - { bytesread += psf_binheader_readf (psf, "444444", &id, &position, - &chunk_id, &chunk_start, &block_start, &offset) ; - psf_log_printf (psf, " Cue ID : %2d" - " Pos : %5u Chunk : %M" - " Chk Start : %d Blk Start : %d" - " Offset : %5d\n", - id, position, chunk_id, chunk_start, block_start, offset) ; - cue_count -- ; - } ; - - if (bytesread != dword) - { psf_log_printf (psf, "**** Chunk size weirdness (%d != %d)\n", dword, bytesread) ; - psf_binheader_readf (psf, "j", dword - bytesread) ; - } ; - } ; - break ; - - case smpl_MARKER : - parsestage |= HAVE_other ; - - psf_binheader_readf (psf, "4", &dword) ; - psf_log_printf (psf, "smpl : %u\n", dword) ; - - if ((error = wav_read_smpl_chunk (psf, dword))) - return error ; - break ; - - case acid_MARKER : - parsestage |= HAVE_other ; - - psf_binheader_readf (psf, "4", &dword) ; - psf_log_printf (psf, "acid : %u\n", dword) ; - - if ((error = wav_read_acid_chunk (psf, dword))) - return error ; - break ; - - case INFO_MARKER : - case LIST_MARKER : - parsestage |= HAVE_other ; - - if ((error = wav_subchunk_parse (psf, marker)) != 0) - return error ; - break ; - - case bext_MARKER : - - psf_binheader_readf (psf, "4", &dword) ; - if (dword < WAV_BEXT_CHUNK_SIZE) - psf_log_printf (psf, "bext : %u (should be >= %d)\n", dword, WAV_BEXT_CHUNK_SIZE) ; - else - psf_log_printf (psf, "bext : %u\n", dword) ; - - if ((error = wav_read_bext_chunk (psf, dword))) - return error ; - break ; - - case strc_MARKER : /* Multiple of 32 bytes. */ - - case afsp_MARKER : - case clm_MARKER : - case elmo_MARKER : - case levl_MARKER : - case plst_MARKER : - case DISP_MARKER : - case MEXT_MARKER : - case PAD_MARKER : - parsestage |= HAVE_other ; - - psf_binheader_readf (psf, "4", &dword) ; - psf_log_printf (psf, "%M : %u\n", marker, dword) ; - dword += (dword & 1) ; - psf_binheader_readf (psf, "j", dword) ; - break ; - - default : - parsestage |= HAVE_other ; - if (isprint ((marker >> 24) & 0xFF) && isprint ((marker >> 16) & 0xFF) - && isprint ((marker >> 8) & 0xFF) && isprint (marker & 0xFF)) - { psf_binheader_readf (psf, "4", &dword) ; - psf_log_printf (psf, "*** %M : %d (unknown marker)\n", marker, dword) ; - psf_binheader_readf (psf, "j", dword) ; - break ; - } ; - if (psf_ftell (psf) & 0x03) - { psf_log_printf (psf, " Unknown chunk marker at position %d. Resynching.\n", dword - 4) ; - psf_binheader_readf (psf, "j", -3) ; - break ; - } ; - psf_log_printf (psf, "*** Unknown chunk marker (%X) at position %D. Exiting parser.\n", marker, psf_ftell (psf) - 4) ; - done = SF_TRUE ; - break ; - } ; /* switch (dword) */ - - if (! psf->sf.seekable && (parsestage & HAVE_data)) - break ; - - if (psf_ftell (psf) >= psf->filelength - SIGNED_SIZEOF (dword)) - { psf_log_printf (psf, "End\n") ; - break ; - } ; - } ; /* while (1) */ - - if (! psf->dataoffset) - return SFE_WAV_NO_DATA ; - - /* WAVs can be little or big endian */ - psf->endian = psf->rwf_endian ; - - psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - - if (psf->is_pipe == 0) - { /* - ** Check for 'wvpk' at the start of the DATA section. Not able to - ** handle this. - */ - psf_binheader_readf (psf, "4", &marker) ; - if (marker == wvpk_MARKER || marker == OggS_MARKER) - return SFE_WAV_WVPK_DATA ; - } ; - - /* Seek to start of DATA section. */ - psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - - if (psf->blockwidth) - { if (psf->filelength - psf->dataoffset < psf->datalength) - psf->sf.frames = (psf->filelength - psf->dataoffset) / psf->blockwidth ; - else - psf->sf.frames = psf->datalength / psf->blockwidth ; - } ; - - switch (format) - { case WAVE_FORMAT_EXTENSIBLE : - if (psf->sf.format == (SF_FORMAT_WAVEX | SF_FORMAT_MS_ADPCM)) - { *blockalign = wav_fmt.msadpcm.blockalign ; - *framesperblock = wav_fmt.msadpcm.samplesperblock ; - } ; - break ; - - case WAVE_FORMAT_PCM : - psf->sf.format = SF_FORMAT_WAV | u_bitwidth_to_subformat (psf->bytewidth * 8) ; - break ; - - case WAVE_FORMAT_MULAW : - case IBM_FORMAT_MULAW : - psf->sf.format = (SF_FORMAT_WAV | SF_FORMAT_ULAW) ; - break ; - - case WAVE_FORMAT_ALAW : - case IBM_FORMAT_ALAW : - psf->sf.format = (SF_FORMAT_WAV | SF_FORMAT_ALAW) ; - break ; - - case WAVE_FORMAT_MS_ADPCM : - psf->sf.format = (SF_FORMAT_WAV | SF_FORMAT_MS_ADPCM) ; - *blockalign = wav_fmt.msadpcm.blockalign ; - *framesperblock = wav_fmt.msadpcm.samplesperblock ; - break ; - - case WAVE_FORMAT_IMA_ADPCM : - psf->sf.format = (SF_FORMAT_WAV | SF_FORMAT_IMA_ADPCM) ; - *blockalign = wav_fmt.ima.blockalign ; - *framesperblock = wav_fmt.ima.samplesperblock ; - break ; - - case WAVE_FORMAT_GSM610 : - psf->sf.format = (SF_FORMAT_WAV | SF_FORMAT_GSM610) ; - break ; - - case WAVE_FORMAT_IEEE_FLOAT : - psf->sf.format = SF_FORMAT_WAV ; - psf->sf.format |= (psf->bytewidth == 8) ? SF_FORMAT_DOUBLE : SF_FORMAT_FLOAT ; - break ; - - case WAVE_FORMAT_G721_ADPCM : - psf->sf.format = SF_FORMAT_WAV | SF_FORMAT_G721_32 ; - break ; - - default : return SFE_UNIMPLEMENTED ; - } ; - - /* Only set the format endian-ness if its non-standard big-endian. */ - if (psf->endian == SF_ENDIAN_BIG) - psf->sf.format |= SF_ENDIAN_BIG ; - - return 0 ; -} /* wav_read_header */ - -static int -wav_write_header (SF_PRIVATE *psf, int calc_length) -{ sf_count_t current ; - int fmt_size, k, subformat, add_fact_chunk = SF_FALSE ; - - current = psf_ftell (psf) ; - - if (calc_length) - { psf->filelength = psf_get_filelen (psf) ; - - psf->datalength = psf->filelength - psf->dataoffset ; - - if (psf->dataend) - psf->datalength -= psf->filelength - psf->dataend ; - - if (psf->bytewidth > 0) - psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ; - } ; - - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - psf_fseek (psf, 0, SEEK_SET) ; - - /* - ** RIFX signifies big-endian format for all header and data. - ** To prevent lots of code copying here, we'll set the psf->rwf_endian flag - ** once here, and never specify endian-ness for all other header operations. - */ - - /* RIFF/RIFX marker, length, WAVE and 'fmt ' markers. */ - - if (psf->endian == SF_ENDIAN_LITTLE) - psf_binheader_writef (psf, "etm8", RIFF_MARKER, (psf->filelength < 8) ? 8 : psf->filelength - 8) ; - else - psf_binheader_writef (psf, "Etm8", RIFX_MARKER, (psf->filelength < 8) ? 8 : psf->filelength - 8) ; - - /* WAVE and 'fmt ' markers. */ - psf_binheader_writef (psf, "mm", WAVE_MARKER, fmt_MARKER) ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - switch (subformat) - { case SF_FORMAT_PCM_U8 : - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_24 : - case SF_FORMAT_PCM_32 : - fmt_size = 2 + 2 + 4 + 4 + 2 + 2 ; - - /* fmt : format, channels, samplerate */ - psf_binheader_writef (psf, "4224", fmt_size, WAVE_FORMAT_PCM, psf->sf.channels, psf->sf.samplerate) ; - /* fmt : bytespersec */ - psf_binheader_writef (psf, "4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ; - /* fmt : blockalign, bitwidth */ - psf_binheader_writef (psf, "22", psf->bytewidth * psf->sf.channels, psf->bytewidth * 8) ; - break ; - - case SF_FORMAT_FLOAT : - case SF_FORMAT_DOUBLE : - fmt_size = 2 + 2 + 4 + 4 + 2 + 2 ; - - /* fmt : format, channels, samplerate */ - psf_binheader_writef (psf, "4224", fmt_size, WAVE_FORMAT_IEEE_FLOAT, psf->sf.channels, psf->sf.samplerate) ; - /* fmt : bytespersec */ - psf_binheader_writef (psf, "4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ; - /* fmt : blockalign, bitwidth */ - psf_binheader_writef (psf, "22", psf->bytewidth * psf->sf.channels, psf->bytewidth * 8) ; - - add_fact_chunk = SF_TRUE ; - break ; - - case SF_FORMAT_ULAW : - fmt_size = 2 + 2 + 4 + 4 + 2 + 2 ; - - /* fmt : format, channels, samplerate */ - psf_binheader_writef (psf, "4224", fmt_size, WAVE_FORMAT_MULAW, psf->sf.channels, psf->sf.samplerate) ; - /* fmt : bytespersec */ - psf_binheader_writef (psf, "4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ; - /* fmt : blockalign, bitwidth */ - psf_binheader_writef (psf, "22", psf->bytewidth * psf->sf.channels, 8) ; - - add_fact_chunk = SF_TRUE ; - break ; - - case SF_FORMAT_ALAW : - fmt_size = 2 + 2 + 4 + 4 + 2 + 2 ; - - /* fmt : format, channels, samplerate */ - psf_binheader_writef (psf, "4224", fmt_size, WAVE_FORMAT_ALAW, psf->sf.channels, psf->sf.samplerate) ; - /* fmt : bytespersec */ - psf_binheader_writef (psf, "4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ; - /* fmt : blockalign, bitwidth */ - psf_binheader_writef (psf, "22", psf->bytewidth * psf->sf.channels, 8) ; - - add_fact_chunk = SF_TRUE ; - break ; - - /* Lite remove start */ - case SF_FORMAT_IMA_ADPCM : - { int blockalign, framesperblock, bytespersec ; - - blockalign = wav_w64_srate2blocksize (psf->sf.samplerate * psf->sf.channels) ; - framesperblock = 2 * (blockalign - 4 * psf->sf.channels) / psf->sf.channels + 1 ; - bytespersec = (psf->sf.samplerate * blockalign) / framesperblock ; - - /* fmt chunk. */ - fmt_size = 2 + 2 + 4 + 4 + 2 + 2 + 2 + 2 ; - - /* fmt : size, WAV format type, channels, samplerate, bytespersec */ - psf_binheader_writef (psf, "42244", fmt_size, WAVE_FORMAT_IMA_ADPCM, - psf->sf.channels, psf->sf.samplerate, bytespersec) ; - - /* fmt : blockalign, bitwidth, extrabytes, framesperblock. */ - psf_binheader_writef (psf, "2222", blockalign, 4, 2, framesperblock) ; - } ; - - add_fact_chunk = SF_TRUE ; - break ; - - case SF_FORMAT_MS_ADPCM : - { int blockalign, framesperblock, bytespersec, extrabytes ; - - blockalign = wav_w64_srate2blocksize (psf->sf.samplerate * psf->sf.channels) ; - framesperblock = 2 + 2 * (blockalign - 7 * psf->sf.channels) / psf->sf.channels ; - bytespersec = (psf->sf.samplerate * blockalign) / framesperblock ; - - /* fmt chunk. */ - extrabytes = 2 + 2 + MSADPCM_ADAPT_COEFF_COUNT * (2 + 2) ; - fmt_size = 2 + 2 + 4 + 4 + 2 + 2 + 2 + extrabytes ; - - /* fmt : size, WAV format type, channels. */ - psf_binheader_writef (psf, "422", fmt_size, WAVE_FORMAT_MS_ADPCM, psf->sf.channels) ; - - /* fmt : samplerate, bytespersec. */ - psf_binheader_writef (psf, "44", psf->sf.samplerate, bytespersec) ; - - /* fmt : blockalign, bitwidth, extrabytes, framesperblock. */ - psf_binheader_writef (psf, "22222", blockalign, 4, extrabytes, framesperblock, 7) ; - - msadpcm_write_adapt_coeffs (psf) ; - } ; - - add_fact_chunk = SF_TRUE ; - break ; - - - case SF_FORMAT_G721_32 : - /* fmt chunk. */ - fmt_size = 2 + 2 + 4 + 4 + 2 + 2 + 2 + 2 ; - - /* fmt : size, WAV format type, channels, samplerate, bytespersec */ - psf_binheader_writef (psf, "42244", fmt_size, WAVE_FORMAT_G721_ADPCM, - psf->sf.channels, psf->sf.samplerate, psf->sf.samplerate * psf->sf.channels / 2) ; - - /* fmt : blockalign, bitwidth, extrabytes, auxblocksize. */ - psf_binheader_writef (psf, "2222", 64, 4, 2, 0) ; - - add_fact_chunk = SF_TRUE ; - break ; - - /* Lite remove end */ - - case SF_FORMAT_GSM610 : - { int blockalign, framesperblock, bytespersec ; - - blockalign = WAV_W64_GSM610_BLOCKSIZE ; - framesperblock = WAV_W64_GSM610_SAMPLES ; - bytespersec = (psf->sf.samplerate * blockalign) / framesperblock ; - - /* fmt chunk. */ - fmt_size = 2 + 2 + 4 + 4 + 2 + 2 + 2 + 2 ; - - /* fmt : size, WAV format type, channels. */ - psf_binheader_writef (psf, "422", fmt_size, WAVE_FORMAT_GSM610, psf->sf.channels) ; - - /* fmt : samplerate, bytespersec. */ - psf_binheader_writef (psf, "44", psf->sf.samplerate, bytespersec) ; - - /* fmt : blockalign, bitwidth, extrabytes, framesperblock. */ - psf_binheader_writef (psf, "2222", blockalign, 0, 2, framesperblock) ; - } ; - - add_fact_chunk = SF_TRUE ; - break ; - - default : return SFE_UNIMPLEMENTED ; - } ; - - if (add_fact_chunk) - psf_binheader_writef (psf, "tm48", fact_MARKER, 4, psf->sf.frames) ; - - if (psf->str_flags & SF_STR_LOCATE_START) - wav_write_strings (psf, SF_STR_LOCATE_START) ; - - if (psf->peak_info != NULL && psf->peak_info->peak_loc == SF_PEAK_START) - { psf_binheader_writef (psf, "m4", PEAK_MARKER, WAV_PEAK_CHUNK_SIZE (psf->sf.channels)) ; - psf_binheader_writef (psf, "44", 1, time (NULL)) ; - for (k = 0 ; k < psf->sf.channels ; k++) - psf_binheader_writef (psf, "ft8", (float) psf->peak_info->peaks [k].value, psf->peak_info->peaks [k].position) ; - } ; - - if (psf->broadcast_info != NULL) - wav_write_bext_chunk (psf) ; - - if (psf->instrument != NULL) - { int tmp ; - double dtune = (double) (0x40000000) / 25.0 ; - - psf_binheader_writef (psf, "m4", smpl_MARKER, 9 * 4 + psf->instrument->loop_count * 6 * 4) ; - psf_binheader_writef (psf, "44", 0, 0) ; /* Manufacturer zero is everyone */ - tmp = (int) (1.0e9 / psf->sf.samplerate) ; /* Sample period in nano seconds */ - psf_binheader_writef (psf, "44", tmp, psf->instrument->basenote) ; - tmp = (unsigned int) (psf->instrument->detune * dtune + 0.5) ; - psf_binheader_writef (psf, "4", tmp) ; - psf_binheader_writef (psf, "44", 0, 0) ; /* SMTPE format */ - psf_binheader_writef (psf, "44", psf->instrument->loop_count, 0) ; - - for (tmp = 0 ; tmp < psf->instrument->loop_count ; tmp++) - { int type ; - - type = psf->instrument->loops [tmp].mode ; - type = (type == SF_LOOP_FORWARD ? 0 : type==SF_LOOP_BACKWARD ? 2 : type == SF_LOOP_ALTERNATING ? 1 : 32) ; - - psf_binheader_writef (psf, "44", tmp, type) ; - psf_binheader_writef (psf, "44", psf->instrument->loops [tmp].start, psf->instrument->loops [tmp].end) ; - psf_binheader_writef (psf, "44", 0, psf->instrument->loops [tmp].count) ; - } ; - } ; - - psf_binheader_writef (psf, "tm8", data_MARKER, psf->datalength) ; - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - if (psf->error) - return psf->error ; - - psf->dataoffset = psf->headindex ; - - if (current < psf->dataoffset) - psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - else if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* wav_write_header */ - - - -static int -wavex_write_header (SF_PRIVATE *psf, int calc_length) -{ sf_count_t current ; - int fmt_size, k, subformat, add_fact_chunk = SF_FALSE ; - - current = psf_ftell (psf) ; - - if (calc_length) - { psf->filelength = psf_get_filelen (psf) ; - - psf->datalength = psf->filelength - psf->dataoffset ; - - if (psf->dataend) - psf->datalength -= psf->filelength - psf->dataend ; - - if (psf->bytewidth > 0) - psf->sf.frames = psf->datalength / (psf->bytewidth * psf->sf.channels) ; - } ; - - - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - psf_fseek (psf, 0, SEEK_SET) ; - - /* RIFX signifies big-endian format for all header and data - ** to prevent lots of code copying here, we'll set the psf->rwf_endian - ** flag once here, and never specify endian-ness for all other header ops - */ - - /* RIFF marker, length, WAVE and 'fmt ' markers. */ - - if (psf->endian == SF_ENDIAN_LITTLE) - { if (psf->filelength < 8) - psf_binheader_writef (psf, "tm8", RIFF_MARKER, 8) ; - else - psf_binheader_writef (psf, "tm8", RIFF_MARKER, psf->filelength - 8) ; - } - else - { if (psf->filelength < 8) - psf_binheader_writef (psf, "Etm8", RIFX_MARKER, 8) ; - else - psf_binheader_writef (psf, "Etm8", RIFX_MARKER, psf->filelength - 8) ; - } ; - - /* WAVE and 'fmt ' markers. */ - psf_binheader_writef (psf, "mm", WAVE_MARKER, fmt_MARKER) ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - /* initial section (same for all, it appears) */ - switch (subformat) - { case SF_FORMAT_PCM_U8 : - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_24 : - case SF_FORMAT_PCM_32 : - case SF_FORMAT_FLOAT : - case SF_FORMAT_DOUBLE : - case SF_FORMAT_ULAW : - case SF_FORMAT_ALAW : - fmt_size = 2 + 2 + 4 + 4 + 2 + 2 + 2 + 2 + 4 + 4 + 2 + 2 + 8 ; - - /* fmt : format, channels, samplerate */ - psf_binheader_writef (psf, "4224", fmt_size, WAVE_FORMAT_EXTENSIBLE, psf->sf.channels, psf->sf.samplerate) ; - /* fmt : bytespersec */ - psf_binheader_writef (psf, "4", psf->sf.samplerate * psf->bytewidth * psf->sf.channels) ; - /* fmt : blockalign, bitwidth */ - psf_binheader_writef (psf, "22", psf->bytewidth * psf->sf.channels, psf->bytewidth * 8) ; - - /* cbSize 22 is sizeof (WAVEFORMATEXTENSIBLE) - sizeof (WAVEFORMATEX) */ - psf_binheader_writef (psf, "2", 22) ; - - /* wValidBitsPerSample, for our use same as bitwidth as we use it fully */ - psf_binheader_writef (psf, "2", psf->bytewidth * 8) ; - - /* - ** Ok some liberty is taken here to use the most commonly used channel masks - ** instead of "no mapping". If you really want to use "no mapping" for 8 channels and less - ** please don't use wavex. (otherwise we'll have to create a new SF_COMMAND) - */ - switch (psf->sf.channels) - { case 1 : /* center channel mono */ - psf_binheader_writef (psf, "4", 0x4) ; - break ; - - case 2 : /* front left and right */ - psf_binheader_writef (psf, "4", 0x1 | 0x2) ; - break ; - - case 4 : /* Quad */ - psf_binheader_writef (psf, "4", 0x1 | 0x2 | 0x10 | 0x20) ; - break ; - - case 6 : /* 5.1 */ - psf_binheader_writef (psf, "4", 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20) ; - break ; - - case 8 : /* 7.1 */ - psf_binheader_writef (psf, "4", 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80) ; - break ; - - default : /* 0 when in doubt , use direct out, ie NO mapping*/ - psf_binheader_writef (psf, "4", 0x0) ; - break ; - } - - break ; - - case SF_FORMAT_MS_ADPCM : /* Todo, GUID exists might have different header as per wav_write_header */ - default : - return SFE_UNIMPLEMENTED ; - } ; - - /* GUID section, different for each */ - - switch (subformat) - { case SF_FORMAT_PCM_U8 : - case SF_FORMAT_PCM_16 : - case SF_FORMAT_PCM_24 : - case SF_FORMAT_PCM_32 : - wavex_write_guid (psf, &MSGUID_SUBTYPE_PCM) ; - break ; - - case SF_FORMAT_FLOAT : - case SF_FORMAT_DOUBLE : - wavex_write_guid (psf, &MSGUID_SUBTYPE_IEEE_FLOAT) ; - add_fact_chunk = SF_TRUE ; - break ; - - case SF_FORMAT_ULAW : - wavex_write_guid (psf, &MSGUID_SUBTYPE_MULAW) ; - add_fact_chunk = SF_TRUE ; - break ; - - case SF_FORMAT_ALAW : - wavex_write_guid (psf, &MSGUID_SUBTYPE_ALAW) ; - add_fact_chunk = SF_TRUE ; - break ; - - case SF_FORMAT_MS_ADPCM : /* todo, GUID exists */ - - default : return SFE_UNIMPLEMENTED ; - } ; - - if (add_fact_chunk) - psf_binheader_writef (psf, "tm48", fact_MARKER, 4, psf->sf.frames) ; - - if (psf->str_flags & SF_STR_LOCATE_START) - wav_write_strings (psf, SF_STR_LOCATE_START) ; - - if (psf->peak_info != NULL && psf->peak_info->peak_loc == SF_PEAK_START) - { psf_binheader_writef (psf, "m4", PEAK_MARKER, WAV_PEAK_CHUNK_SIZE (psf->sf.channels)) ; - psf_binheader_writef (psf, "44", 1, time (NULL)) ; - for (k = 0 ; k < psf->sf.channels ; k++) - psf_binheader_writef (psf, "ft8", (float) psf->peak_info->peaks [k].value, psf->peak_info->peaks [k].position) ; - } ; - - psf_binheader_writef (psf, "tm8", data_MARKER, psf->datalength) ; - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - if (psf->error) - return psf->error ; - - psf->dataoffset = psf->headindex ; - - if (current < psf->dataoffset) - psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - else if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* wavex_write_header */ - - - -static int -wav_write_tailer (SF_PRIVATE *psf) -{ int k ; - - /* Reset the current header buffer length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - - psf->dataend = psf_fseek (psf, 0, SEEK_END) ; - - /* Add a PEAK chunk if requested. */ - if (psf->peak_info != NULL && psf->peak_info->peak_loc == SF_PEAK_END) - { psf_binheader_writef (psf, "m4", PEAK_MARKER, WAV_PEAK_CHUNK_SIZE (psf->sf.channels)) ; - psf_binheader_writef (psf, "44", 1, time (NULL)) ; - for (k = 0 ; k < psf->sf.channels ; k++) - psf_binheader_writef (psf, "f4", psf->peak_info->peaks [k].value, psf->peak_info->peaks [k].position) ; - } ; - - if (psf->str_flags & SF_STR_LOCATE_END) - wav_write_strings (psf, SF_STR_LOCATE_END) ; - - /* Write the tailer. */ - if (psf->headindex > 0) - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - return 0 ; -} /* wav_write_tailer */ - -static void -wav_write_strings (SF_PRIVATE *psf, int location) -{ int k, prev_head_index, saved_head_index ; - - prev_head_index = psf->headindex + 4 ; - - psf_binheader_writef (psf, "m4m", LIST_MARKER, 0xBADBAD, INFO_MARKER) ; - - for (k = 0 ; k < SF_MAX_STRINGS ; k++) - { if (psf->strings [k].type == 0) - break ; - if (psf->strings [k].flags != location) - continue ; - - switch (psf->strings [k].type) - { case SF_STR_SOFTWARE : - psf_binheader_writef (psf, "ms", ISFT_MARKER, psf->strings [k].str) ; - break ; - - case SF_STR_TITLE : - psf_binheader_writef (psf, "ms", INAM_MARKER, psf->strings [k].str) ; - break ; - - case SF_STR_COPYRIGHT : - psf_binheader_writef (psf, "ms", ICOP_MARKER, psf->strings [k].str) ; - break ; - - case SF_STR_ARTIST : - psf_binheader_writef (psf, "ms", IART_MARKER, psf->strings [k].str) ; - break ; - - case SF_STR_COMMENT : - psf_binheader_writef (psf, "ms", ICMT_MARKER, psf->strings [k].str) ; - break ; - - case SF_STR_DATE : - psf_binheader_writef (psf, "ms", ICRD_MARKER, psf->strings [k].str) ; - break ; - } ; - } ; - - saved_head_index = psf->headindex ; - psf->headindex = prev_head_index ; - psf_binheader_writef (psf, "4", saved_head_index - prev_head_index - 4) ; - psf->headindex = saved_head_index ; - -} /* wav_write_strings */ - -static int -wav_close (SF_PRIVATE *psf) -{ - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { wav_write_tailer (psf) ; - - psf->write_header (psf, SF_TRUE) ; - } ; - - return 0 ; -} /* wav_close */ - -static int -wav_command (SF_PRIVATE *psf, int command, void *data, int datasize) -{ - /* Avoid compiler warnings. */ - psf = psf ; - data = data ; - datasize = datasize ; - - switch (command) - { default : break ; - } ; - - return 0 ; -} /* wav_command */ - -static int -wav_subchunk_parse (SF_PRIVATE *psf, int chunk) -{ sf_count_t current_pos ; - char *cptr ; - int dword, bytesread, length ; - - current_pos = psf_fseek (psf, 0, SEEK_CUR) ; - - bytesread = psf_binheader_readf (psf, "4", &length) ; - - if (length <= 8) - { /* This case is for broken files generated by PEAK. */ - psf_log_printf (psf, "%M : %d (weird length)\n", chunk, length) ; - psf_binheader_readf (psf, "mj", &chunk, length - 4) ; - psf_log_printf (psf, " %M\n", chunk) ; - return 0 ; - } ; - - if (psf->headindex + length > SIGNED_SIZEOF (psf->header)) - { psf_log_printf (psf, "%M : %d (too long)\n", chunk, length) ; - psf_binheader_readf (psf, "j", length) ; - return 0 ; - } ; - - if (current_pos + length > psf->filelength) - { psf_log_printf (psf, "%M : %d (should be %d)\n", chunk, length, (int) (psf->filelength - current_pos)) ; - length = psf->filelength - current_pos ; - } - else - psf_log_printf (psf, "%M : %d\n", chunk, length) ; - - while (bytesread < length) - { bytesread += psf_binheader_readf (psf, "m", &chunk) ; - - switch (chunk) - { case adtl_MARKER : - case INFO_MARKER : - /* These markers don't contain anything. */ - psf_log_printf (psf, " %M\n", chunk) ; - break ; - - case data_MARKER: - psf_log_printf (psf, " %M inside a LIST block??? Backing out.\n", chunk) ; - /* Jump back four bytes and return to caller. */ - psf_binheader_readf (psf, "j", -4) ; - return 0 ; - - case ISFT_MARKER : - case ICOP_MARKER : - case IARL_MARKER : - case IART_MARKER : - case ICMT_MARKER : - case ICRD_MARKER : - case IENG_MARKER : - - case INAM_MARKER : - case IPRD_MARKER : - case ISBJ_MARKER : - case ISRC_MARKER : - bytesread += psf_binheader_readf (psf, "4", &dword) ; - dword += (dword & 1) ; - if (dword < 0 || dword > SIGNED_SIZEOF (psf->u.cbuf)) - { psf_log_printf (psf, " *** %M : %d (too big)\n", chunk, dword) ; - psf_binheader_readf (psf, "j", dword) ; - break ; - } ; - - cptr = psf->u.cbuf ; - psf_binheader_readf (psf, "b", cptr, dword) ; - bytesread += dword ; - cptr [dword - 1] = 0 ; - psf_log_printf (psf, " %M : %s\n", chunk, cptr) ; - break ; - - case labl_MARKER : - { int mark_id ; - - bytesread += psf_binheader_readf (psf, "44", &dword, &mark_id) ; - dword -= 4 ; - dword += (dword & 1) ; - if (dword < 1 || dword > SIGNED_SIZEOF (psf->u.cbuf)) - { psf_log_printf (psf, " *** %M : %d (too big)\n", chunk, dword) ; - psf_binheader_readf (psf, "j", dword) ; - break ; - } ; - - cptr = psf->u.cbuf ; - psf_binheader_readf (psf, "b", cptr, dword) ; - bytesread += dword ; - cptr [dword - 1] = 0 ; - psf_log_printf (psf, " %M : %d : %s\n", chunk, mark_id, cptr) ; - } ; - break ; - - - case DISP_MARKER : - case ltxt_MARKER : - case note_MARKER : - bytesread += psf_binheader_readf (psf, "4", &dword) ; - dword += (dword & 1) ; - psf_binheader_readf (psf, "j", dword) ; - bytesread += dword ; - psf_log_printf (psf, " %M : %d\n", chunk, dword) ; - break ; - - default : - psf_binheader_readf (psf, "4", &dword) ; - bytesread += sizeof (dword) ; - dword += (dword & 1) ; - psf_binheader_readf (psf, "j", dword) ; - bytesread += dword ; - psf_log_printf (psf, " *** %M : %d\n", chunk, dword) ; - if (dword > length) - return 0 ; - break ; - } ; - - switch (chunk) - { case ISFT_MARKER : - psf_store_string (psf, SF_STR_SOFTWARE, psf->u.cbuf) ; - break ; - case ICOP_MARKER : - psf_store_string (psf, SF_STR_COPYRIGHT, psf->u.cbuf) ; - break ; - case INAM_MARKER : - psf_store_string (psf, SF_STR_TITLE, psf->u.cbuf) ; - break ; - case IART_MARKER : - psf_store_string (psf, SF_STR_ARTIST, psf->u.cbuf) ; - break ; - case ICMT_MARKER : - psf_store_string (psf, SF_STR_COMMENT, psf->u.cbuf) ; - break ; - case ICRD_MARKER : - psf_store_string (psf, SF_STR_DATE, psf->u.cbuf) ; - break ; - } ; - } ; - - current_pos = psf_fseek (psf, 0, SEEK_CUR) - current_pos ; - - if (current_pos - 4 != length) - psf_log_printf (psf, "**** Bad chunk length %d sbould be %D\n", length, current_pos - 4) ; - - return 0 ; -} /* wav_subchunk_parse */ - -static int -wav_read_smpl_chunk (SF_PRIVATE *psf, unsigned int chunklen) -{ unsigned int bytesread = 0, dword, sampler_data, loop_count ; - unsigned int note, start, end, type = -1, count ; - int j, k ; - - chunklen += (chunklen & 1) ; - - bytesread += psf_binheader_readf (psf, "4", &dword) ; - psf_log_printf (psf, " Manufacturer : %X\n", dword) ; - - bytesread += psf_binheader_readf (psf, "4", &dword) ; - psf_log_printf (psf, " Product : %u\n", dword) ; - - bytesread += psf_binheader_readf (psf, "4", &dword) ; - psf_log_printf (psf, " Period : %u nsec\n", dword) ; - - bytesread += psf_binheader_readf (psf, "4", ¬e) ; - psf_log_printf (psf, " Midi Note : %u\n", note) ; - - bytesread += psf_binheader_readf (psf, "4", &dword) ; - if (dword != 0) - { LSF_SNPRINTF (psf->u.cbuf, sizeof (psf->u.cbuf), "%f", - (1.0 * 0x80000000) / ((unsigned int) dword)) ; - psf_log_printf (psf, " Pitch Fract. : %s\n", psf->u.cbuf) ; - } - else - psf_log_printf (psf, " Pitch Fract. : 0\n") ; - - bytesread += psf_binheader_readf (psf, "4", &dword) ; - psf_log_printf (psf, " SMPTE Format : %u\n", dword) ; - - bytesread += psf_binheader_readf (psf, "4", &dword) ; - LSF_SNPRINTF (psf->u.cbuf, sizeof (psf->u.cbuf), "%02d:%02d:%02d %02d", - (dword >> 24) & 0x7F, (dword >> 16) & 0x7F, (dword >> 8) & 0x7F, dword & 0x7F) ; - psf_log_printf (psf, " SMPTE Offset : %s\n", psf->u.cbuf) ; - - bytesread += psf_binheader_readf (psf, "4", &loop_count) ; - psf_log_printf (psf, " Loop Count : %u\n", loop_count) ; - - /* Sampler Data holds the number of data bytes after the CUE chunks which - ** is not actually CUE data. Display value after CUE data. - */ - bytesread += psf_binheader_readf (psf, "4", &sampler_data) ; - - if ((psf->instrument = psf_instrument_alloc ()) == NULL) - return SFE_MALLOC_FAILED ; - - psf->instrument->loop_count = loop_count ; - - for (j = 0 ; loop_count > 0 && chunklen - bytesread >= 24 ; j ++) - { bytesread += psf_binheader_readf (psf, "4", &dword) ; - psf_log_printf (psf, " Cue ID : %2u", dword) ; - - bytesread += psf_binheader_readf (psf, "4", &type) ; - psf_log_printf (psf, " Type : %2u", type) ; - - bytesread += psf_binheader_readf (psf, "4", &start) ; - psf_log_printf (psf, " Start : %5u", start) ; - - bytesread += psf_binheader_readf (psf, "4", &end) ; - psf_log_printf (psf, " End : %5u", end) ; - - bytesread += psf_binheader_readf (psf, "4", &dword) ; - psf_log_printf (psf, " Fraction : %5u", dword) ; - - bytesread += psf_binheader_readf (psf, "4", &count) ; - psf_log_printf (psf, " Count : %5u\n", count) ; - - if (j < ARRAY_LEN (psf->instrument->loops)) - { psf->instrument->loops [j].start = start ; - psf->instrument->loops [j].end = end ; - psf->instrument->loops [j].count = count ; - - switch (type) - { case 0 : - psf->instrument->loops [j].mode = SF_LOOP_FORWARD ; - break ; - case 1 : - psf->instrument->loops [j].mode = SF_LOOP_ALTERNATING ; - break ; - case 2 : - psf->instrument->loops [j].mode = SF_LOOP_BACKWARD ; - break ; - default: - psf->instrument->loops [j].mode = SF_LOOP_NONE ; - break ; - } ; - } ; - - loop_count -- ; - } ; - - if (chunklen - bytesread == 0) - { if (sampler_data != 0) - psf_log_printf (psf, " Sampler Data : %u (should be 0)\n", sampler_data) ; - else - psf_log_printf (psf, " Sampler Data : %u\n", sampler_data) ; - } - else - { if (sampler_data != chunklen - bytesread) - { psf_log_printf (psf, " Sampler Data : %u (should have been %u)\n", sampler_data, chunklen - bytesread) ; - sampler_data = chunklen - bytesread ; - } - else - psf_log_printf (psf, " Sampler Data : %u\n", sampler_data) ; - - psf_log_printf (psf, " ") ; - for (k = 0 ; k < (int) sampler_data ; k++) - { char ch ; - - if (k > 0 && (k % 20) == 0) - psf_log_printf (psf, "\n ") ; - - bytesread += psf_binheader_readf (psf, "1", &ch) ; - psf_log_printf (psf, "%02X ", ch & 0xFF) ; - } ; - - psf_log_printf (psf, "\n") ; - } ; - - psf->instrument->basenote = note ; - psf->instrument->gain = 1 ; - psf->instrument->velocity_lo = psf->instrument->key_lo = 0 ; - psf->instrument->velocity_hi = psf->instrument->key_hi = 127 ; - - return 0 ; -} /* wav_read_smpl_chunk */ - -/* -** The acid chunk goes a little something like this: -** -** 4 bytes 'acid' -** 4 bytes (int) length of chunk starting at next byte -** -** 4 bytes (int) type of file: -** this appears to be a bit mask,however some combinations -** are probably impossible and/or qualified as "errors" -** -** 0x01 On: One Shot Off: Loop -** 0x02 On: Root note is Set Off: No root -** 0x04 On: Stretch is On, Off: Strech is OFF -** 0x08 On: Disk Based Off: Ram based -** 0x10 On: ?????????? Off: ????????? (Acidizer puts that ON) -** -** 2 bytes (short) root note -** if type 0x10 is OFF : [C,C#,(...),B] -> [0x30 to 0x3B] -** if type 0x10 is ON : [C,C#,(...),B] -> [0x3C to 0x47] -** (both types fit on same MIDI pitch albeit different octaves, so who cares) -** -** 2 bytes (short) ??? always set to 0x8000 -** 4 bytes (float) ??? seems to be always 0 -** 4 bytes (int) number of beats -** 2 bytes (short) meter denominator //always 4 in SF/ACID -** 2 bytes (short) meter numerator //always 4 in SF/ACID -** //are we sure about the order?? usually its num/denom -** 4 bytes (float) tempo -** -*/ - -static int -wav_read_acid_chunk (SF_PRIVATE *psf, unsigned int chunklen) -{ unsigned int bytesread = 0 ; - int beats, flags ; - short rootnote, q1, meter_denom, meter_numer ; - float q2, tempo ; - - chunklen += (chunklen & 1) ; - - bytesread += psf_binheader_readf (psf, "422f", &flags, &rootnote, &q1, &q2) ; - - LSF_SNPRINTF (psf->u.cbuf, sizeof (psf->u.cbuf), "%f", q2) ; - - psf_log_printf (psf, " Flags : 0x%04x (%s,%s,%s,%s,%s)\n", flags, - (flags & 0x01) ? "OneShot" : "Loop", - (flags & 0x02) ? "RootNoteValid" : "RootNoteInvalid", - (flags & 0x04) ? "StretchOn" : "StretchOff", - (flags & 0x08) ? "DiskBased" : "RAMBased", - (flags & 0x10) ? "??On" : "??Off") ; - - psf_log_printf (psf, " Root note : 0x%x\n ???? : 0x%04x\n ???? : %s\n", - rootnote, q1, psf->u.cbuf) ; - - bytesread += psf_binheader_readf (psf, "422f", &beats, &meter_denom, &meter_numer, &tempo) ; - LSF_SNPRINTF (psf->u.cbuf, sizeof (psf->u.cbuf), "%f", tempo) ; - psf_log_printf (psf, " Beats : %d\n Meter : %d/%d\n Tempo : %s\n", - beats, meter_numer, meter_denom, psf->u.cbuf) ; - - psf_binheader_readf (psf, "j", chunklen - bytesread) ; - - if ((psf->loop_info = calloc (1, sizeof (SF_LOOP_INFO))) == NULL) - return SFE_MALLOC_FAILED ; - - psf->loop_info->time_sig_num = meter_numer ; - psf->loop_info->time_sig_den = meter_denom ; - psf->loop_info->loop_mode = (flags & 0x01) ? SF_LOOP_NONE : SF_LOOP_FORWARD ; - psf->loop_info->num_beats = beats ; - psf->loop_info->bpm = tempo ; - psf->loop_info->root_key = (flags & 0x02) ? rootnote : -1 ; - - return 0 ; -} /* wav_read_acid_chunk */ - -int -wav_read_bext_chunk (SF_PRIVATE *psf, unsigned int chunksize) -{ - SF_BROADCAST_INFO* b ; - - if ((psf->broadcast_info = calloc (1, sizeof (SF_BROADCAST_INFO))) == NULL) - { psf->error = SFE_MALLOC_FAILED ; - return -1 ; - } ; - - b = psf->broadcast_info ; - - psf_binheader_readf (psf, "b", b->description, sizeof (b->description)) ; - psf_binheader_readf (psf, "b", b->originator, sizeof (b->originator)) ; - psf_binheader_readf (psf, "b", b->originator_reference, sizeof (b->originator_reference)) ; - psf_binheader_readf (psf, "b", b->origination_date, sizeof (b->origination_date)) ; - psf_binheader_readf (psf, "b", b->origination_time, sizeof (b->origination_time)) ; - psf_binheader_readf (psf, "442", &b->time_reference_low, &b->time_reference_high, &b->version) ; - psf_binheader_readf (psf, "bj", &b->umid, sizeof (b->umid), 190) ; - - if (chunksize > WAV_BEXT_CHUNK_SIZE) - { /* File has coding history data. */ - - b->coding_history_size = chunksize - WAV_BEXT_CHUNK_SIZE ; - - if (b->coding_history_size > SIGNED_SIZEOF (b->coding_history)) - { free (psf->broadcast_info) ; - psf->broadcast_info = NULL ; - psf->error = SFE_MALLOC_FAILED ; - return -1 ; - } ; - - /* We do not parse the coding history */ - psf_binheader_readf (psf, "b", b->coding_history, b->coding_history_size) ; - b->coding_history [sizeof (b->coding_history) - 1] = 0 ; - } ; - - return 0 ; -} /* wav_read_bext_chunk */ - -static int -wav_write_bext_chunk (SF_PRIVATE *psf) -{ SF_BROADCAST_INFO *b ; - - if ((b = psf->broadcast_info) == NULL) - return -1 ; - - psf_binheader_writef (psf, "m4", bext_MARKER, WAV_BEXT_CHUNK_SIZE + b->coding_history_size) ; - - /* - ** Note that it is very important the the field widths of the SF_BROADCAST_INFO - ** struct match those for the bext chunk fields. - */ - - psf_binheader_writef (psf, "b", b->description, sizeof (b->description)) ; - psf_binheader_writef (psf, "b", b->originator, sizeof (b->originator)) ; - psf_binheader_writef (psf, "b", b->originator_reference, sizeof (b->originator_reference)) ; - psf_binheader_writef (psf, "b", b->origination_date, sizeof (b->origination_date)) ; - psf_binheader_writef (psf, "b", b->origination_time, sizeof (b->origination_time)) ; - psf_binheader_writef (psf, "442", b->time_reference_low, b->time_reference_high, b->version) ; - psf_binheader_writef (psf, "b", b->umid, sizeof (b->umid)) ; - psf_binheader_writef (psf, "z", make_size_t (190)) ; - - if (b->coding_history_size > 0) - psf_binheader_writef (psf, "b", b->coding_history, b->coding_history_size) ; - - return 0 ; -} /* wav_write_bext_chunk */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 9c551689-a1d8-4905-9f56-26a204374f18 -*/ diff --git a/libs/libsndfile/src/wav_w64.c b/libs/libsndfile/src/wav_w64.c deleted file mode 100644 index 85cb1323ec..0000000000 --- a/libs/libsndfile/src/wav_w64.c +++ /dev/null @@ -1,494 +0,0 @@ -/* -** Copyright (C) 1999-2005 Erik de Castro Lopo -** Copyright (C) 2004-2005 David Viens -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" -#include "wav_w64.h" - -/* Known WAVEFORMATEXTENSIBLE GUIDS. */ -static const EXT_SUBFORMAT MSGUID_SUBTYPE_PCM = -{ 0x00000001, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } -} ; - -static const EXT_SUBFORMAT MSGUID_SUBTYPE_MS_ADPCM = -{ 0x00000002, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } -} ; - -static const EXT_SUBFORMAT MSGUID_SUBTYPE_IEEE_FLOAT = -{ 0x00000003, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } -} ; - -static const EXT_SUBFORMAT MSGUID_SUBTYPE_ALAW = -{ 0x00000006, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } -} ; - -static const EXT_SUBFORMAT MSGUID_SUBTYPE_MULAW = -{ 0x00000007, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } -} ; - -/* -** the next two are from -** http://dream.cs.bath.ac.uk/researchdev/wave-ex/bformat.html -*/ - -static const EXT_SUBFORMAT MSGUID_SUBTYPE_AMBISONIC_B_FORMAT_PCM = -{ 0x00000001, 0x0721, 0x11d3, { 0x86, 0x44, 0xC8, 0xC1, 0xCA, 0x00, 0x00, 0x00 } -} ; - -static const EXT_SUBFORMAT MSGUID_SUBTYPE_AMBISONIC_B_FORMAT_IEEE_FLOAT = -{ 0x00000003, 0x0721, 0x11d3, { 0x86, 0x44, 0xC8, 0xC1, 0xCA, 0x00, 0x00, 0x00 } -} ; - - -#if 0 -/* maybe interesting one day to read the following through sf_read_raw */ -/* http://www.bath.ac.uk/~masrwd/pvocex/pvocex.html */ -static const EXT_SUBFORMAT MSGUID_SUBTYPE_PVOCEX = -{ 0x8312B9C2, 0x2E6E, 0x11d4, { 0xA8, 0x24, 0xDE, 0x5B, 0x96, 0xC3, 0xAB, 0x21 } -} ; -#endif - -/*------------------------------------------------------------------------------ - * Private static functions. - */ - -static int -wavex_write_guid_equal (const EXT_SUBFORMAT * first, const EXT_SUBFORMAT * second) -{ return !memcmp (first, second, sizeof (EXT_SUBFORMAT)) ; -} /* wavex_write_guid_equal */ - - - -int -wav_w64_read_fmt_chunk (SF_PRIVATE *psf, WAV_FMT *wav_fmt, int structsize) -{ int bytesread, k, bytespersec = 0 ; - - memset (wav_fmt, 0, sizeof (WAV_FMT)) ; - - if (structsize < 16) - return SFE_WAV_FMT_SHORT ; - - /* assume psf->rwf_endian is already properly set */ - - /* Read the minimal WAV file header here. */ - bytesread = - psf_binheader_readf (psf, "224422", &(wav_fmt->format), &(wav_fmt->min.channels), - &(wav_fmt->min.samplerate), &(wav_fmt->min.bytespersec), - &(wav_fmt->min.blockalign), &(wav_fmt->min.bitwidth)) ; - - psf_log_printf (psf, " Format : 0x%X => %s\n", wav_fmt->format, wav_w64_format_str (wav_fmt->format)) ; - psf_log_printf (psf, " Channels : %d\n", wav_fmt->min.channels) ; - psf_log_printf (psf, " Sample Rate : %d\n", wav_fmt->min.samplerate) ; - psf_log_printf (psf, " Block Align : %d\n", wav_fmt->min.blockalign) ; - - if (wav_fmt->format == WAVE_FORMAT_PCM && wav_fmt->min.bitwidth == 24 && - wav_fmt->min.blockalign == 4 * wav_fmt->min.channels) - { - psf_log_printf (psf, "\nInvalid file generated by Syntrillium's Cooledit!\n" - "Treating as WAVE_FORMAT_IEEE_FLOAT 32 bit floating point file.\n\n") ; - psf_log_printf (psf, " Bit Width : 24 (should be 32)\n") ; - wav_fmt->min.bitwidth = 32 ; - wav_fmt->format = WAVE_FORMAT_IEEE_FLOAT ; - } - else if (wav_fmt->format != WAVE_FORMAT_GSM610 && wav_fmt->min.bitwidth == 0) - psf_log_printf (psf, " Bit Width : %d (should not be 0)\n", wav_fmt->min.bitwidth) ; - else if (wav_fmt->format == WAVE_FORMAT_GSM610 && wav_fmt->min.bitwidth != 0) - psf_log_printf (psf, " Bit Width : %d (should be 0)\n", wav_fmt->min.bitwidth) ; - else - psf_log_printf (psf, " Bit Width : %d\n", wav_fmt->min.bitwidth) ; - - psf->sf.samplerate = wav_fmt->min.samplerate ; - psf->sf.frames = 0 ; /* Correct this when reading data chunk. */ - psf->sf.channels = wav_fmt->min.channels ; - - switch (wav_fmt->format) - { case WAVE_FORMAT_PCM : - case WAVE_FORMAT_IEEE_FLOAT : - bytespersec = wav_fmt->min.samplerate * wav_fmt->min.blockalign ; - if (wav_fmt->min.bytespersec != (unsigned) bytespersec) - psf_log_printf (psf, " Bytes/sec : %d (should be %d)\n", wav_fmt->min.bytespersec, bytespersec) ; - else - psf_log_printf (psf, " Bytes/sec : %d\n", wav_fmt->min.bytespersec) ; - - psf->bytewidth = BITWIDTH2BYTES (wav_fmt->min.bitwidth) ; - break ; - - case WAVE_FORMAT_ALAW : - case WAVE_FORMAT_MULAW : - if (wav_fmt->min.bytespersec / wav_fmt->min.blockalign != wav_fmt->min.samplerate) - psf_log_printf (psf, " Bytes/sec : %d (should be %d)\n", wav_fmt->min.bytespersec, wav_fmt->min.samplerate * wav_fmt->min.blockalign) ; - else - psf_log_printf (psf, " Bytes/sec : %d\n", wav_fmt->min.bytespersec) ; - - psf->bytewidth = 1 ; - if (structsize >= 18) - { bytesread += psf_binheader_readf (psf, "2", &(wav_fmt->size20.extrabytes)) ; - psf_log_printf (psf, " Extra Bytes : %d\n", wav_fmt->size20.extrabytes) ; - } ; - break ; - - case WAVE_FORMAT_IMA_ADPCM : - if (wav_fmt->min.bitwidth != 4) - return SFE_WAV_ADPCM_NOT4BIT ; - if (wav_fmt->min.channels < 1 || wav_fmt->min.channels > 2) - return SFE_WAV_ADPCM_CHANNELS ; - - bytesread += - psf_binheader_readf (psf, "22", &(wav_fmt->ima.extrabytes), &(wav_fmt->ima.samplesperblock)) ; - - bytespersec = (wav_fmt->ima.samplerate * wav_fmt->ima.blockalign) / wav_fmt->ima.samplesperblock ; - if (wav_fmt->ima.bytespersec != (unsigned) bytespersec) - psf_log_printf (psf, " Bytes/sec : %d (should be %d)\n", wav_fmt->ima.bytespersec, bytespersec) ; - else - psf_log_printf (psf, " Bytes/sec : %d\n", wav_fmt->ima.bytespersec) ; - - psf->bytewidth = 2 ; - psf_log_printf (psf, " Extra Bytes : %d\n", wav_fmt->ima.extrabytes) ; - psf_log_printf (psf, " Samples/Block : %d\n", wav_fmt->ima.samplesperblock) ; - break ; - - case WAVE_FORMAT_MS_ADPCM : - if (wav_fmt->msadpcm.bitwidth != 4) - return SFE_WAV_ADPCM_NOT4BIT ; - if (wav_fmt->msadpcm.channels < 1 || wav_fmt->msadpcm.channels > 2) - return SFE_WAV_ADPCM_CHANNELS ; - - bytesread += - psf_binheader_readf (psf, "222", &(wav_fmt->msadpcm.extrabytes), - &(wav_fmt->msadpcm.samplesperblock), &(wav_fmt->msadpcm.numcoeffs)) ; - - bytespersec = (wav_fmt->min.samplerate * wav_fmt->min.blockalign) / wav_fmt->msadpcm.samplesperblock ; - if (wav_fmt->min.bytespersec == (unsigned) bytespersec) - psf_log_printf (psf, " Bytes/sec : %d\n", wav_fmt->min.bytespersec) ; - else if (wav_fmt->min.bytespersec == (wav_fmt->min.samplerate / wav_fmt->msadpcm.samplesperblock) * wav_fmt->min.blockalign) - psf_log_printf (psf, " Bytes/sec : %d (should be %d (MS BUG!))\n", wav_fmt->min.bytespersec, bytespersec) ; - else - psf_log_printf (psf, " Bytes/sec : %d (should be %d)\n", wav_fmt->min.bytespersec, bytespersec) ; - - - psf->bytewidth = 2 ; - psf_log_printf (psf, " Extra Bytes : %d\n", wav_fmt->msadpcm.extrabytes) ; - psf_log_printf (psf, " Samples/Block : %d\n", wav_fmt->msadpcm.samplesperblock) ; - if (wav_fmt->msadpcm.numcoeffs > SIGNED_SIZEOF (MS_ADPCM_WAV_FMT) / SIGNED_SIZEOF (int)) - { psf_log_printf (psf, " No. of Coeffs : %d ****\n", wav_fmt->msadpcm.numcoeffs) ; - wav_fmt->msadpcm.numcoeffs = SIGNED_SIZEOF (MS_ADPCM_WAV_FMT) / SIGNED_SIZEOF (int) ; - } - else - psf_log_printf (psf, " No. of Coeffs : %d\n", wav_fmt->msadpcm.numcoeffs) ; - - psf_log_printf (psf, " Index Coeffs1 Coeffs2\n") ; - for (k = 0 ; k < wav_fmt->msadpcm.numcoeffs ; k++) - { bytesread += - psf_binheader_readf (psf, "22", &(wav_fmt->msadpcm.coeffs [k].coeff1), &(wav_fmt->msadpcm.coeffs [k].coeff2)) ; - LSF_SNPRINTF (psf->u.cbuf, sizeof (psf->u.cbuf), " %2d %7d %7d\n", k, wav_fmt->msadpcm.coeffs [k].coeff1, wav_fmt->msadpcm.coeffs [k].coeff2) ; - psf_log_printf (psf, psf->u.cbuf) ; - } ; - break ; - - case WAVE_FORMAT_GSM610 : - if (wav_fmt->gsm610.channels != 1 || wav_fmt->gsm610.blockalign != 65) - return SFE_WAV_GSM610_FORMAT ; - - bytesread += - psf_binheader_readf (psf, "22", &(wav_fmt->gsm610.extrabytes), &(wav_fmt->gsm610.samplesperblock)) ; - - if (wav_fmt->gsm610.samplesperblock != 320) - return SFE_WAV_GSM610_FORMAT ; - - bytespersec = (wav_fmt->gsm610.samplerate * wav_fmt->gsm610.blockalign) / wav_fmt->gsm610.samplesperblock ; - if (wav_fmt->gsm610.bytespersec != (unsigned) bytespersec) - psf_log_printf (psf, " Bytes/sec : %d (should be %d)\n", wav_fmt->gsm610.bytespersec, bytespersec) ; - else - psf_log_printf (psf, " Bytes/sec : %d\n", wav_fmt->gsm610.bytespersec) ; - - psf->bytewidth = 2 ; - psf_log_printf (psf, " Extra Bytes : %d\n", wav_fmt->gsm610.extrabytes) ; - psf_log_printf (psf, " Samples/Block : %d\n", wav_fmt->gsm610.samplesperblock) ; - break ; - - case WAVE_FORMAT_EXTENSIBLE : - if (wav_fmt->ext.bytespersec / wav_fmt->ext.blockalign != wav_fmt->ext.samplerate) - psf_log_printf (psf, " Bytes/sec : %d (should be %d)\n", wav_fmt->ext.bytespersec, wav_fmt->ext.samplerate * wav_fmt->ext.blockalign) ; - else - psf_log_printf (psf, " Bytes/sec : %d\n", wav_fmt->ext.bytespersec) ; - - bytesread += - psf_binheader_readf (psf, "224", &(wav_fmt->ext.extrabytes), &(wav_fmt->ext.validbits), - &(wav_fmt->ext.channelmask)) ; - - psf_log_printf (psf, " Valid Bits : %d\n", wav_fmt->ext.validbits) ; - psf_log_printf (psf, " Channel Mask : 0x%X\n", wav_fmt->ext.channelmask) ; - - bytesread += - psf_binheader_readf (psf, "422", &(wav_fmt->ext.esf.esf_field1), &(wav_fmt->ext.esf.esf_field2), - &(wav_fmt->ext.esf.esf_field3)) ; - - /* compare the esf_fields with each known GUID? and print? */ - psf_log_printf (psf, " Subformat\n") ; - psf_log_printf (psf, " esf_field1 : 0x%X\n", wav_fmt->ext.esf.esf_field1) ; - psf_log_printf (psf, " esf_field2 : 0x%X\n", wav_fmt->ext.esf.esf_field2) ; - psf_log_printf (psf, " esf_field3 : 0x%X\n", wav_fmt->ext.esf.esf_field3) ; - psf_log_printf (psf, " esf_field4 : ") ; - for (k = 0 ; k < 8 ; k++) - { bytesread += psf_binheader_readf (psf, "1", &(wav_fmt->ext.esf.esf_field4 [k])) ; - psf_log_printf (psf, "0x%X ", wav_fmt->ext.esf.esf_field4 [k] & 0xFF) ; - } ; - psf_log_printf (psf, "\n") ; - psf->bytewidth = BITWIDTH2BYTES (wav_fmt->ext.bitwidth) ; - - /* Compare GUIDs for known ones. */ - if (wavex_write_guid_equal (&wav_fmt->ext.esf, &MSGUID_SUBTYPE_PCM) - || wavex_write_guid_equal (&wav_fmt->ext.esf, &MSGUID_SUBTYPE_AMBISONIC_B_FORMAT_PCM)) - { psf->sf.format = SF_FORMAT_WAVEX | u_bitwidth_to_subformat (psf->bytewidth * 8) ; - psf_log_printf (psf, " format : pcm\n") ; - } - else if (wavex_write_guid_equal (&wav_fmt->ext.esf, &MSGUID_SUBTYPE_MS_ADPCM)) - { psf->sf.format = (SF_FORMAT_WAVEX | SF_FORMAT_MS_ADPCM) ; - psf_log_printf (psf, " format : ms adpcm\n") ; - } - else if (wavex_write_guid_equal (&wav_fmt->ext.esf, &MSGUID_SUBTYPE_IEEE_FLOAT) - || wavex_write_guid_equal (&wav_fmt->ext.esf, &MSGUID_SUBTYPE_AMBISONIC_B_FORMAT_PCM)) - { psf->sf.format = SF_FORMAT_WAVEX | ((psf->bytewidth == 8) ? SF_FORMAT_DOUBLE : SF_FORMAT_FLOAT) ; - psf_log_printf (psf, " format : IEEE float\n") ; - } - else if (wavex_write_guid_equal (&wav_fmt->ext.esf, &MSGUID_SUBTYPE_ALAW)) - { psf->sf.format = (SF_FORMAT_WAVEX | SF_FORMAT_ALAW) ; - psf_log_printf (psf, " format : A-law\n") ; - } - else if (wavex_write_guid_equal (&wav_fmt->ext.esf, &MSGUID_SUBTYPE_MULAW)) - { psf->sf.format = (SF_FORMAT_WAVEX | SF_FORMAT_ULAW) ; - psf_log_printf (psf, " format : u-law\n") ; - } - else - return SFE_UNIMPLEMENTED ; - break ; - - case WAVE_FORMAT_G721_ADPCM : - psf_log_printf (psf, " Bytes/sec : %d\n", wav_fmt->g72x.bytespersec) ; - if (structsize >= 20) - { bytesread += psf_binheader_readf (psf, "22", &(wav_fmt->g72x.extrabytes), &(wav_fmt->g72x.auxblocksize)) ; - if (wav_fmt->g72x.extrabytes == 0) - psf_log_printf (psf, " Extra Bytes : %d (should be 2)\n", wav_fmt->g72x.extrabytes) ; - else - psf_log_printf (psf, " Extra Bytes : %d\n", wav_fmt->g72x.extrabytes) ; - psf_log_printf (psf, " Aux Blk Size : %d\n", wav_fmt->g72x.auxblocksize) ; - } - else if (structsize == 18) - { bytesread += psf_binheader_readf (psf, "2", &(wav_fmt->g72x.extrabytes)) ; - psf_log_printf (psf, " Extra Bytes : %d%s\n", wav_fmt->g72x.extrabytes, wav_fmt->g72x.extrabytes != 0 ? " (should be 0)" : "") ; - } - else - psf_log_printf (psf, "*** 'fmt ' chunk should be bigger than this!\n") ; - break ; - - default : - psf_log_printf (psf, "*** No 'fmt ' chunk dumper for this format!\n") ; - break ; - } ; - - if (bytesread > structsize) - { psf_log_printf (psf, "*** wav_w64_read_fmt_chunk (bytesread > structsize)\n") ; - return SFE_W64_FMT_SHORT ; - } - else - psf_binheader_readf (psf, "j", structsize - bytesread) ; - - psf->blockwidth = wav_fmt->min.channels * psf->bytewidth ; - - return 0 ; -} /* wav_w64_read_fmt_chunk */ - -void -wavex_write_guid (SF_PRIVATE *psf, const EXT_SUBFORMAT * subformat) -{ - psf_binheader_writef (psf, "422b", subformat->esf_field1, - subformat->esf_field2, subformat->esf_field3, - subformat->esf_field4, 8) ; -} /* wavex_write_guid */ - - -/*============================================================================== -*/ - -typedef struct -{ int ID ; - const char *name ; -} WAV_FORMAT_DESC ; - -#define STR(x) #x -#define FORMAT_TYPE(x) { x, STR (x) } - -static WAV_FORMAT_DESC wave_descs [] = -{ FORMAT_TYPE (WAVE_FORMAT_PCM), - FORMAT_TYPE (WAVE_FORMAT_MS_ADPCM), - FORMAT_TYPE (WAVE_FORMAT_IEEE_FLOAT), - FORMAT_TYPE (WAVE_FORMAT_VSELP), - FORMAT_TYPE (WAVE_FORMAT_IBM_CVSD), - FORMAT_TYPE (WAVE_FORMAT_ALAW), - FORMAT_TYPE (WAVE_FORMAT_MULAW), - FORMAT_TYPE (WAVE_FORMAT_OKI_ADPCM), - FORMAT_TYPE (WAVE_FORMAT_IMA_ADPCM), - FORMAT_TYPE (WAVE_FORMAT_MEDIASPACE_ADPCM), - FORMAT_TYPE (WAVE_FORMAT_SIERRA_ADPCM), - FORMAT_TYPE (WAVE_FORMAT_G723_ADPCM), - FORMAT_TYPE (WAVE_FORMAT_DIGISTD), - FORMAT_TYPE (WAVE_FORMAT_DIGIFIX), - FORMAT_TYPE (WAVE_FORMAT_DIALOGIC_OKI_ADPCM), - FORMAT_TYPE (WAVE_FORMAT_MEDIAVISION_ADPCM), - FORMAT_TYPE (WAVE_FORMAT_CU_CODEC), - FORMAT_TYPE (WAVE_FORMAT_YAMAHA_ADPCM), - FORMAT_TYPE (WAVE_FORMAT_SONARC), - FORMAT_TYPE (WAVE_FORMAT_DSPGROUP_TRUESPEECH), - FORMAT_TYPE (WAVE_FORMAT_ECHOSC1), - FORMAT_TYPE (WAVE_FORMAT_AUDIOFILE_AF36), - FORMAT_TYPE (WAVE_FORMAT_APTX), - FORMAT_TYPE (WAVE_FORMAT_AUDIOFILE_AF10), - FORMAT_TYPE (WAVE_FORMAT_PROSODY_1612), - FORMAT_TYPE (WAVE_FORMAT_LRC), - FORMAT_TYPE (WAVE_FORMAT_DOLBY_AC2), - FORMAT_TYPE (WAVE_FORMAT_GSM610), - FORMAT_TYPE (WAVE_FORMAT_MSNAUDIO), - FORMAT_TYPE (WAVE_FORMAT_ANTEX_ADPCME), - FORMAT_TYPE (WAVE_FORMAT_CONTROL_RES_VQLPC), - FORMAT_TYPE (WAVE_FORMAT_DIGIREAL), - FORMAT_TYPE (WAVE_FORMAT_DIGIADPCM), - FORMAT_TYPE (WAVE_FORMAT_CONTROL_RES_CR10), - FORMAT_TYPE (WAVE_FORMAT_NMS_VBXADPCM), - FORMAT_TYPE (WAVE_FORMAT_ROLAND_RDAC), - FORMAT_TYPE (WAVE_FORMAT_ECHOSC3), - FORMAT_TYPE (WAVE_FORMAT_ROCKWELL_ADPCM), - FORMAT_TYPE (WAVE_FORMAT_ROCKWELL_DIGITALK), - FORMAT_TYPE (WAVE_FORMAT_XEBEC), - FORMAT_TYPE (WAVE_FORMAT_G721_ADPCM), - FORMAT_TYPE (WAVE_FORMAT_G728_CELP), - FORMAT_TYPE (WAVE_FORMAT_MSG723), - FORMAT_TYPE (WAVE_FORMAT_MPEG), - FORMAT_TYPE (WAVE_FORMAT_RT24), - FORMAT_TYPE (WAVE_FORMAT_PAC), - FORMAT_TYPE (WAVE_FORMAT_MPEGLAYER3), - FORMAT_TYPE (WAVE_FORMAT_LUCENT_G723), - FORMAT_TYPE (WAVE_FORMAT_CIRRUS), - FORMAT_TYPE (WAVE_FORMAT_ESPCM), - FORMAT_TYPE (WAVE_FORMAT_VOXWARE), - FORMAT_TYPE (WAVE_FORMAT_CANOPUS_ATRAC), - FORMAT_TYPE (WAVE_FORMAT_G726_ADPCM), - FORMAT_TYPE (WAVE_FORMAT_G722_ADPCM), - FORMAT_TYPE (WAVE_FORMAT_DSAT), - FORMAT_TYPE (WAVE_FORMAT_DSAT_DISPLAY), - FORMAT_TYPE (WAVE_FORMAT_VOXWARE_BYTE_ALIGNED), - FORMAT_TYPE (WAVE_FORMAT_VOXWARE_AC8), - FORMAT_TYPE (WAVE_FORMAT_VOXWARE_AC10), - FORMAT_TYPE (WAVE_FORMAT_VOXWARE_AC16), - FORMAT_TYPE (WAVE_FORMAT_VOXWARE_AC20), - FORMAT_TYPE (WAVE_FORMAT_VOXWARE_RT24), - FORMAT_TYPE (WAVE_FORMAT_VOXWARE_RT29), - FORMAT_TYPE (WAVE_FORMAT_VOXWARE_RT29HW), - FORMAT_TYPE (WAVE_FORMAT_VOXWARE_VR12), - FORMAT_TYPE (WAVE_FORMAT_VOXWARE_VR18), - FORMAT_TYPE (WAVE_FORMAT_VOXWARE_TQ40), - FORMAT_TYPE (WAVE_FORMAT_SOFTSOUND), - FORMAT_TYPE (WAVE_FORMAT_VOXARE_TQ60), - FORMAT_TYPE (WAVE_FORMAT_MSRT24), - FORMAT_TYPE (WAVE_FORMAT_G729A), - FORMAT_TYPE (WAVE_FORMAT_MVI_MV12), - FORMAT_TYPE (WAVE_FORMAT_DF_G726), - FORMAT_TYPE (WAVE_FORMAT_DF_GSM610), - FORMAT_TYPE (WAVE_FORMAT_ONLIVE), - FORMAT_TYPE (WAVE_FORMAT_SBC24), - FORMAT_TYPE (WAVE_FORMAT_DOLBY_AC3_SPDIF), - FORMAT_TYPE (WAVE_FORMAT_ZYXEL_ADPCM), - FORMAT_TYPE (WAVE_FORMAT_PHILIPS_LPCBB), - FORMAT_TYPE (WAVE_FORMAT_PACKED), - FORMAT_TYPE (WAVE_FORMAT_RHETOREX_ADPCM), - FORMAT_TYPE (IBM_FORMAT_MULAW), - FORMAT_TYPE (IBM_FORMAT_ALAW), - FORMAT_TYPE (IBM_FORMAT_ADPCM), - FORMAT_TYPE (WAVE_FORMAT_VIVO_G723), - FORMAT_TYPE (WAVE_FORMAT_VIVO_SIREN), - FORMAT_TYPE (WAVE_FORMAT_DIGITAL_G723), - FORMAT_TYPE (WAVE_FORMAT_CREATIVE_ADPCM), - FORMAT_TYPE (WAVE_FORMAT_CREATIVE_FASTSPEECH8), - FORMAT_TYPE (WAVE_FORMAT_CREATIVE_FASTSPEECH10), - FORMAT_TYPE (WAVE_FORMAT_QUARTERDECK), - FORMAT_TYPE (WAVE_FORMAT_FM_TOWNS_SND), - FORMAT_TYPE (WAVE_FORMAT_BZV_DIGITAL), - FORMAT_TYPE (WAVE_FORMAT_VME_VMPCM), - FORMAT_TYPE (WAVE_FORMAT_OLIGSM), - FORMAT_TYPE (WAVE_FORMAT_OLIADPCM), - FORMAT_TYPE (WAVE_FORMAT_OLICELP), - FORMAT_TYPE (WAVE_FORMAT_OLISBC), - FORMAT_TYPE (WAVE_FORMAT_OLIOPR), - FORMAT_TYPE (WAVE_FORMAT_LH_CODEC), - FORMAT_TYPE (WAVE_FORMAT_NORRIS), - FORMAT_TYPE (WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS), - FORMAT_TYPE (WAVE_FORMAT_DVM), - FORMAT_TYPE (WAVE_FORMAT_INTERWAV_VSC112), - FORMAT_TYPE (WAVE_FORMAT_EXTENSIBLE), -} ; - -char const* -wav_w64_format_str (int k) -{ int lower, upper, mid ; - - lower = -1 ; - upper = sizeof (wave_descs) / sizeof (WAV_FORMAT_DESC) ; - - /* binary search */ - if ((wave_descs [0].ID <= k) & (k <= wave_descs [upper - 1].ID)) - { - while (lower + 1 < upper) - { mid = (upper + lower) / 2 ; - - if (k == wave_descs [mid].ID) - return wave_descs [mid].name ; - if (k < wave_descs [mid].ID) - upper = mid ; - else - lower = mid ; - } ; - } ; - - return "Unknown format" ; -} /* wav_w64_format_str */ - -int -wav_w64_srate2blocksize (int srate_chan_product) -{ if (srate_chan_product < 12000) - return 256 ; - if (srate_chan_product < 23000) - return 512 ; - if (srate_chan_product < 44000) - return 1024 ; - return 2048 ; -} /* srate2blocksize */ -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 43c1b1dd-8abd-43da-a8cd-44da914b64a5 -*/ diff --git a/libs/libsndfile/src/wav_w64.h b/libs/libsndfile/src/wav_w64.h deleted file mode 100644 index 3f33f1b800..0000000000 --- a/libs/libsndfile/src/wav_w64.h +++ /dev/null @@ -1,283 +0,0 @@ -/* -** Copyright (C) 1999-2005 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -/* This file contains definitions commong to WAV and W64 files. */ - - -#ifndef WAV_W64_H_INCLUDED -#define WAV_W64_H_INCLUDED - -/*------------------------------------------------------------------------------ -** List of known WAV format tags -*/ - -enum -{ - /* keep sorted for wav_w64_format_str() */ - WAVE_FORMAT_UNKNOWN = 0x0000, /* Microsoft Corporation */ - WAVE_FORMAT_PCM = 0x0001, /* Microsoft PCM format */ - WAVE_FORMAT_MS_ADPCM = 0x0002, /* Microsoft ADPCM */ - WAVE_FORMAT_IEEE_FLOAT = 0x0003, /* Micrososft 32 bit float format */ - WAVE_FORMAT_VSELP = 0x0004, /* Compaq Computer Corporation */ - WAVE_FORMAT_IBM_CVSD = 0x0005, /* IBM Corporation */ - WAVE_FORMAT_ALAW = 0x0006, /* Microsoft Corporation */ - WAVE_FORMAT_MULAW = 0x0007, /* Microsoft Corporation */ - WAVE_FORMAT_OKI_ADPCM = 0x0010, /* OKI */ - WAVE_FORMAT_IMA_ADPCM = 0x0011, /* Intel Corporation */ - WAVE_FORMAT_MEDIASPACE_ADPCM = 0x0012, /* Videologic */ - WAVE_FORMAT_SIERRA_ADPCM = 0x0013, /* Sierra Semiconductor Corp */ - WAVE_FORMAT_G723_ADPCM = 0x0014, /* Antex Electronics Corporation */ - WAVE_FORMAT_DIGISTD = 0x0015, /* DSP Solutions, Inc. */ - WAVE_FORMAT_DIGIFIX = 0x0016, /* DSP Solutions, Inc. */ - WAVE_FORMAT_DIALOGIC_OKI_ADPCM = 0x0017, /* Dialogic Corporation */ - WAVE_FORMAT_MEDIAVISION_ADPCM = 0x0018, /* Media Vision, Inc. */ - WAVE_FORMAT_CU_CODEC = 0x0019, /* Hewlett-Packard Company */ - WAVE_FORMAT_YAMAHA_ADPCM = 0x0020, /* Yamaha Corporation of America */ - WAVE_FORMAT_SONARC = 0x0021, /* Speech Compression */ - WAVE_FORMAT_DSPGROUP_TRUESPEECH = 0x0022, /* DSP Group, Inc */ - WAVE_FORMAT_ECHOSC1 = 0x0023, /* Echo Speech Corporation */ - WAVE_FORMAT_AUDIOFILE_AF36 = 0x0024, /* Audiofile, Inc. */ - WAVE_FORMAT_APTX = 0x0025, /* Audio Processing Technology */ - WAVE_FORMAT_AUDIOFILE_AF10 = 0x0026, /* Audiofile, Inc. */ - WAVE_FORMAT_PROSODY_1612 = 0x0027, /* Aculab plc */ - WAVE_FORMAT_LRC = 0x0028, /* Merging Technologies S.A. */ - WAVE_FORMAT_DOLBY_AC2 = 0x0030, /* Dolby Laboratories */ - WAVE_FORMAT_GSM610 = 0x0031, /* Microsoft Corporation */ - WAVE_FORMAT_MSNAUDIO = 0x0032, /* Microsoft Corporation */ - WAVE_FORMAT_ANTEX_ADPCME = 0x0033, /* Antex Electronics Corporation */ - WAVE_FORMAT_CONTROL_RES_VQLPC = 0x0034, /* Control Resources Limited */ - WAVE_FORMAT_DIGIREAL = 0x0035, /* DSP Solutions, Inc. */ - WAVE_FORMAT_DIGIADPCM = 0x0036, /* DSP Solutions, Inc. */ - WAVE_FORMAT_CONTROL_RES_CR10 = 0x0037, /* Control Resources Limited */ - WAVE_FORMAT_NMS_VBXADPCM = 0x0038, /* Natural MicroSystems */ - WAVE_FORMAT_ROLAND_RDAC = 0x0039, /* Roland */ - WAVE_FORMAT_ECHOSC3 = 0x003A, /* Echo Speech Corporation */ - WAVE_FORMAT_ROCKWELL_ADPCM = 0x003B, /* Rockwell International */ - WAVE_FORMAT_ROCKWELL_DIGITALK = 0x003C, /* Rockwell International */ - WAVE_FORMAT_XEBEC = 0x003D, /* Xebec Multimedia Solutions Limited */ - WAVE_FORMAT_G721_ADPCM = 0x0040, /* Antex Electronics Corporation */ - WAVE_FORMAT_G728_CELP = 0x0041, /* Antex Electronics Corporation */ - WAVE_FORMAT_MSG723 = 0x0042, /* Microsoft Corporation */ - WAVE_FORMAT_MPEG = 0x0050, /* Microsoft Corporation */ - WAVE_FORMAT_RT24 = 0x0052, /* InSoft Inc. */ - WAVE_FORMAT_PAC = 0x0053, /* InSoft Inc. */ - WAVE_FORMAT_MPEGLAYER3 = 0x0055, /* MPEG 3 Layer 1 */ - WAVE_FORMAT_LUCENT_G723 = 0x0059, /* Lucent Technologies */ - WAVE_FORMAT_CIRRUS = 0x0060, /* Cirrus Logic */ - WAVE_FORMAT_ESPCM = 0x0061, /* ESS Technology */ - WAVE_FORMAT_VOXWARE = 0x0062, /* Voxware Inc */ - WAVE_FORMAT_CANOPUS_ATRAC = 0x0063, /* Canopus, Co., Ltd. */ - WAVE_FORMAT_G726_ADPCM = 0x0064, /* APICOM */ - WAVE_FORMAT_G722_ADPCM = 0x0065, /* APICOM */ - WAVE_FORMAT_DSAT = 0x0066, /* Microsoft Corporation */ - WAVE_FORMAT_DSAT_DISPLAY = 0x0067, /* Microsoft Corporation */ - WAVE_FORMAT_VOXWARE_BYTE_ALIGNED = 0x0069, /* Voxware Inc. */ - WAVE_FORMAT_VOXWARE_AC8 = 0x0070, /* Voxware Inc. */ - WAVE_FORMAT_VOXWARE_AC10 = 0x0071, /* Voxware Inc. */ - WAVE_FORMAT_VOXWARE_AC16 = 0x0072, /* Voxware Inc. */ - WAVE_FORMAT_VOXWARE_AC20 = 0x0073, /* Voxware Inc. */ - WAVE_FORMAT_VOXWARE_RT24 = 0x0074, /* Voxware Inc. */ - WAVE_FORMAT_VOXWARE_RT29 = 0x0075, /* Voxware Inc. */ - WAVE_FORMAT_VOXWARE_RT29HW = 0x0076, /* Voxware Inc. */ - WAVE_FORMAT_VOXWARE_VR12 = 0x0077, /* Voxware Inc. */ - WAVE_FORMAT_VOXWARE_VR18 = 0x0078, /* Voxware Inc. */ - WAVE_FORMAT_VOXWARE_TQ40 = 0x0079, /* Voxware Inc. */ - WAVE_FORMAT_SOFTSOUND = 0x0080, /* Softsound, Ltd. */ - WAVE_FORMAT_VOXARE_TQ60 = 0x0081, /* Voxware Inc. */ - WAVE_FORMAT_MSRT24 = 0x0082, /* Microsoft Corporation */ - WAVE_FORMAT_G729A = 0x0083, /* AT&T Laboratories */ - WAVE_FORMAT_MVI_MV12 = 0x0084, /* Motion Pixels */ - WAVE_FORMAT_DF_G726 = 0x0085, /* DataFusion Systems (Pty) (Ltd) */ - WAVE_FORMAT_DF_GSM610 = 0x0086, /* DataFusion Systems (Pty) (Ltd) */ - /* removed because duplicate */ - /* WAVE_FORMAT_ISIAUDIO = 0x0088, */ /* Iterated Systems, Inc. */ - WAVE_FORMAT_ONLIVE = 0x0089, /* OnLive! Technologies, Inc. */ - WAVE_FORMAT_SBC24 = 0x0091, /* Siemens Business Communications Systems */ - WAVE_FORMAT_DOLBY_AC3_SPDIF = 0x0092, /* Sonic Foundry */ - WAVE_FORMAT_ZYXEL_ADPCM = 0x0097, /* ZyXEL Communications, Inc. */ - WAVE_FORMAT_PHILIPS_LPCBB = 0x0098, /* Philips Speech Processing */ - WAVE_FORMAT_PACKED = 0x0099, /* Studer Professional Audio AG */ - WAVE_FORMAT_RHETOREX_ADPCM = 0x0100, /* Rhetorex, Inc. */ - - /* removed because of the following */ - /* WAVE_FORMAT_IRAT = 0x0101,*/ /* BeCubed Software Inc. */ - - /* these three are unofficial */ - IBM_FORMAT_MULAW = 0x0101, /* IBM mu-law format */ - IBM_FORMAT_ALAW = 0x0102, /* IBM a-law format */ - IBM_FORMAT_ADPCM = 0x0103, /* IBM AVC Adaptive Differential PCM format */ - - WAVE_FORMAT_VIVO_G723 = 0x0111, /* Vivo Software */ - WAVE_FORMAT_VIVO_SIREN = 0x0112, /* Vivo Software */ - WAVE_FORMAT_DIGITAL_G723 = 0x0123, /* Digital Equipment Corporation */ - WAVE_FORMAT_CREATIVE_ADPCM = 0x0200, /* Creative Labs, Inc */ - WAVE_FORMAT_CREATIVE_FASTSPEECH8 = 0x0202, /* Creative Labs, Inc */ - WAVE_FORMAT_CREATIVE_FASTSPEECH10 = 0x0203, /* Creative Labs, Inc */ - WAVE_FORMAT_QUARTERDECK = 0x0220, /* Quarterdeck Corporation */ - WAVE_FORMAT_FM_TOWNS_SND = 0x0300, /* Fujitsu Corporation */ - WAVE_FORMAT_BZV_DIGITAL = 0x0400, /* Brooktree Corporation */ - WAVE_FORMAT_VME_VMPCM = 0x0680, /* AT&T Labs, Inc. */ - WAVE_FORMAT_OLIGSM = 0x1000, /* Ing C. Olivetti & C., S.p.A. */ - WAVE_FORMAT_OLIADPCM = 0x1001, /* Ing C. Olivetti & C., S.p.A. */ - WAVE_FORMAT_OLICELP = 0x1002, /* Ing C. Olivetti & C., S.p.A. */ - WAVE_FORMAT_OLISBC = 0x1003, /* Ing C. Olivetti & C., S.p.A. */ - WAVE_FORMAT_OLIOPR = 0x1004, /* Ing C. Olivetti & C., S.p.A. */ - WAVE_FORMAT_LH_CODEC = 0x1100, /* Lernout & Hauspie */ - WAVE_FORMAT_NORRIS = 0x1400, /* Norris Communications, Inc. */ - /* removed because duplicate */ - /* WAVE_FORMAT_ISIAUDIO = 0x1401, */ /* AT&T Labs, Inc. */ - WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS = 0x1500, /* AT&T Labs, Inc. */ - WAVE_FORMAT_DVM = 0x2000, /* FAST Multimedia AG */ - WAVE_FORMAT_INTERWAV_VSC112 = 0x7150, /* ????? */ - WAVE_FORMAT_EXTENSIBLE = 0xFFFE -} ; - -typedef struct -{ unsigned short format ; - unsigned short channels ; - unsigned int samplerate ; - unsigned int bytespersec ; - unsigned short blockalign ; - unsigned short bitwidth ; -} MIN_WAV_FMT ; - -typedef struct -{ unsigned short format ; - unsigned short channels ; - unsigned int samplerate ; - unsigned int bytespersec ; - unsigned short blockalign ; - unsigned short bitwidth ; - unsigned short extrabytes ; - unsigned short dummy ; -} WAV_FMT_SIZE20 ; - -typedef struct -{ unsigned short format ; - unsigned short channels ; - unsigned int samplerate ; - unsigned int bytespersec ; - unsigned short blockalign ; - unsigned short bitwidth ; - unsigned short extrabytes ; - unsigned short samplesperblock ; - unsigned short numcoeffs ; - struct - { short coeff1 ; - short coeff2 ; - } coeffs [7] ; -} MS_ADPCM_WAV_FMT ; - -typedef struct -{ unsigned short format ; - unsigned short channels ; - unsigned int samplerate ; - unsigned int bytespersec ; - unsigned short blockalign ; - unsigned short bitwidth ; - unsigned short extrabytes ; - unsigned short samplesperblock ; -} IMA_ADPCM_WAV_FMT ; - -typedef struct -{ unsigned short format ; - unsigned short channels ; - unsigned int samplerate ; - unsigned int bytespersec ; - unsigned short blockalign ; - unsigned short bitwidth ; - unsigned short extrabytes ; - unsigned short auxblocksize ; -} G72x_ADPCM_WAV_FMT ; - - -typedef struct -{ unsigned short format ; - unsigned short channels ; - unsigned int samplerate ; - unsigned int bytespersec ; - unsigned short blockalign ; - unsigned short bitwidth ; - unsigned short extrabytes ; - unsigned short samplesperblock ; -} GSM610_WAV_FMT ; - -typedef struct -{ unsigned int esf_field1 ; - unsigned short esf_field2 ; - unsigned short esf_field3 ; - char esf_field4 [8] ; -} EXT_SUBFORMAT ; - -typedef struct -{ unsigned short format ; - unsigned short channels ; - unsigned int samplerate ; - unsigned int bytespersec ; - unsigned short blockalign ; - unsigned short bitwidth ; - unsigned short extrabytes ; - unsigned short validbits ; - unsigned int channelmask ; - EXT_SUBFORMAT esf ; -} EXTENSIBLE_WAV_FMT ; - -typedef union -{ unsigned short format ; - MIN_WAV_FMT min ; - IMA_ADPCM_WAV_FMT ima ; - MS_ADPCM_WAV_FMT msadpcm ; - G72x_ADPCM_WAV_FMT g72x ; - EXTENSIBLE_WAV_FMT ext ; - GSM610_WAV_FMT gsm610 ; - WAV_FMT_SIZE20 size20 ; - char padding [512] ; -} WAV_FMT ; - -typedef struct -{ int frames ; -} FACT_CHUNK ; - -#define WAV_W64_GSM610_BLOCKSIZE 65 -#define WAV_W64_GSM610_SAMPLES 320 - -/*------------------------------------------------------------------------------------ -** Functions defined in wav_ms_adpcm.c -*/ - -#define MSADPCM_ADAPT_COEFF_COUNT 7 - -void msadpcm_write_adapt_coeffs (SF_PRIVATE *psf) ; - -/*------------------------------------------------------------------------------------ -** Functions defined in wav_w64.c -*/ - -int wav_w64_srate2blocksize (int srate_chan_product) ; -char const* wav_w64_format_str (int k) ; -int wav_w64_read_fmt_chunk (SF_PRIVATE *psf, WAV_FMT *wav_fmt, int structsize) ; -void wavex_write_guid (SF_PRIVATE *psf, const EXT_SUBFORMAT * subformat) ; - -#endif -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 877fde12-9be3-4a31-8a5a-fdae39958613 -*/ diff --git a/libs/libsndfile/src/wve.c b/libs/libsndfile/src/wve.c deleted file mode 100644 index 54a08336c2..0000000000 --- a/libs/libsndfile/src/wve.c +++ /dev/null @@ -1,125 +0,0 @@ -/* -** Copyright (C) 2002-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" - -#if (ENABLE_EXPERIMENTAL_CODE == 0) - -int -wve_open (SF_PRIVATE *psf) -{ if (psf) - return SFE_UNIMPLEMENTED ; - return (psf && 0) ; -} /* wve_open */ - -#else - -#define SFE_WVE_NOT_WVE 666 - -/*------------------------------------------------------------------------------ -** Macros to handle big/little endian issues. -*/ - -#define ALAW_MARKER MAKE_MARKER ('A', 'L', 'a', 'w') -#define SOUN_MARKER MAKE_MARKER ('S', 'o', 'u', 'n') -#define DFIL_MARKER MAKE_MARKER ('d', 'F', 'i', 'l') - -/*------------------------------------------------------------------------------ -** Private static functions. -*/ - -static int wve_read_header (SF_PRIVATE *psf) ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -wve_open (SF_PRIVATE *psf) -{ int subformat, error = 0 ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - return SFE_UNIMPLEMENTED ; - - if ((error = wve_read_header (psf))) - return error ; - - if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_WVE) - return SFE_BAD_OPEN_FORMAT ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - return error ; -} /* wve_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -wve_read_header (SF_PRIVATE *psf) -{ int marker ; - - /* Set position to start of file to begin reading header. */ - psf_binheader_readf (psf, "pm", 0, &marker) ; - if (marker != ALAW_MARKER) - return SFE_WVE_NOT_WVE ; - - psf_binheader_readf (psf, "m", &marker) ; - if (marker != SOUN_MARKER) - return SFE_WVE_NOT_WVE ; - - psf_binheader_readf (psf, "m", &marker) ; - if (marker != DFIL_MARKER) - return SFE_WVE_NOT_WVE ; - - psf_log_printf (psf, "Read only : Psion Palmtop Alaw (.wve)\n" - " Sample Rate : 8000\n" - " Channels : 1\n" - " Encoding : A-law\n") ; - - psf->dataoffset = 0x20 ; - psf->datalength = psf->filelength - psf->dataoffset ; - - psf->sf.format = SF_FORMAT_WVE | SF_FORMAT_ALAW ; - psf->sf.samplerate = 8000 ; - psf->sf.frames = psf->datalength ; - psf->sf.channels = 1 ; - - return alaw_init (psf) ; -} /* wve_read_header */ - -/*------------------------------------------------------------------------------ -*/ - -#endif -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: ba368cb5-523f-45e4-98c1-5b99a102f73f -*/ diff --git a/libs/libsndfile/src/xi.c b/libs/libsndfile/src/xi.c deleted file mode 100644 index dcd8120b1e..0000000000 --- a/libs/libsndfile/src/xi.c +++ /dev/null @@ -1,1204 +0,0 @@ -/* -** Copyright (C) 2003-2006 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU Lesser General Public License as published by -** the Free Software Foundation; either version 2.1 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU Lesser General Public License for more details. -** -** You should have received a copy of the GNU Lesser General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "sfconfig.h" - -#include -#include -#include -#include -#include - -#include "sndfile.h" -#include "sfendian.h" -#include "common.h" -#include "float_cast.h" - -#define MAX_XI_SAMPLES 16 - -/*------------------------------------------------------------------------------ -** Private static functions and tyepdefs. -*/ - -typedef struct -{ /* Warning, this filename is NOT nul terminated. */ - char filename [22] ; - char software [20] ; - char sample_name [22] ; - - int loop_begin, loop_end ; - int sample_flags ; - - /* Data for encoder and decoder. */ - short last_16 ; -} XI_PRIVATE ; - -static int xi_close (SF_PRIVATE *psf) ; -static int xi_write_header (SF_PRIVATE *psf, int calc_length) ; -static int xi_read_header (SF_PRIVATE *psf) ; -static int dpcm_init (SF_PRIVATE *psf) ; - - -static sf_count_t dpcm_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ; - -/*------------------------------------------------------------------------------ -** Public function. -*/ - -int -xi_open (SF_PRIVATE *psf) -{ XI_PRIVATE *pxi ; - int subformat, error = 0 ; - - if (psf->is_pipe) - return SFE_XI_NO_PIPE ; - - if (psf->fdata) - pxi = psf->fdata ; - else if ((pxi = calloc (1, sizeof (XI_PRIVATE))) == NULL) - return SFE_MALLOC_FAILED ; - - psf->fdata = pxi ; - - if (psf->mode == SFM_READ || (psf->mode == SFM_RDWR && psf->filelength > 0)) - { if ((error = xi_read_header (psf))) - return error ; - } ; - - subformat = psf->sf.format & SF_FORMAT_SUBMASK ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { if ((psf->sf.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_XI) - return SFE_BAD_OPEN_FORMAT ; - - psf->endian = SF_ENDIAN_LITTLE ; - psf->sf.channels = 1 ; /* Always mono */ - psf->sf.samplerate = 44100 ; /* Always */ - - /* Set up default instrument and software name. */ - memcpy (pxi->filename, "Default Name ", sizeof (pxi->filename)) ; - memcpy (pxi->software, PACKAGE "-" VERSION " ", sizeof (pxi->software)) ; - - memset (pxi->sample_name, 0, sizeof (pxi->sample_name)) ; - LSF_SNPRINTF (pxi->sample_name, sizeof (pxi->sample_name), "%s", "Sample #1") ; - - pxi->sample_flags = (subformat == SF_FORMAT_DPCM_16) ? 16 : 0 ; - - if (xi_write_header (psf, SF_FALSE)) - return psf->error ; - - psf->write_header = xi_write_header ; - } ; - - psf->container_close = xi_close ; - psf->seek = dpcm_seek ; - - psf->sf.seekable = SF_FALSE ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - - switch (subformat) - { case SF_FORMAT_DPCM_8 : /* 8-bit differential PCM. */ - case SF_FORMAT_DPCM_16 : /* 16-bit differential PCM. */ - error = dpcm_init (psf) ; - break ; - - default : break ; - } ; - - return error ; -} /* xi_open */ - -/*------------------------------------------------------------------------------ -*/ - -static int -xi_close (SF_PRIVATE *psf) -{ - psf = psf ; - - return 0 ; -} /* xi_close */ - -/*============================================================================== -*/ - -static sf_count_t dpcm_read_dsc2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t dpcm_read_dsc2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t dpcm_read_dsc2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t dpcm_read_dsc2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t dpcm_write_s2dsc (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t dpcm_write_i2dsc (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t dpcm_write_f2dsc (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t dpcm_write_d2dsc (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -static sf_count_t dpcm_read_dles2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ; -static sf_count_t dpcm_read_dles2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ; -static sf_count_t dpcm_read_dles2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ; -static sf_count_t dpcm_read_dles2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ; - -static sf_count_t dpcm_write_s2dles (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ; -static sf_count_t dpcm_write_i2dles (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ; -static sf_count_t dpcm_write_f2dles (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ; -static sf_count_t dpcm_write_d2dles (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ; - -static int -dpcm_init (SF_PRIVATE *psf) -{ if (psf->bytewidth == 0 || psf->sf.channels == 0) - return SFE_INTERNAL ; - - psf->blockwidth = psf->bytewidth * psf->sf.channels ; - - if (psf->mode == SFM_READ || psf->mode == SFM_RDWR) - { switch (psf->bytewidth) - { case 1 : - psf->read_short = dpcm_read_dsc2s ; - psf->read_int = dpcm_read_dsc2i ; - psf->read_float = dpcm_read_dsc2f ; - psf->read_double = dpcm_read_dsc2d ; - break ; - case 2 : - psf->read_short = dpcm_read_dles2s ; - psf->read_int = dpcm_read_dles2i ; - psf->read_float = dpcm_read_dles2f ; - psf->read_double = dpcm_read_dles2d ; - break ; - default : - psf_log_printf (psf, "dpcm_init() returning SFE_UNIMPLEMENTED\n") ; - return SFE_UNIMPLEMENTED ; - } ; - } ; - - if (psf->mode == SFM_WRITE || psf->mode == SFM_RDWR) - { switch (psf->bytewidth) - { case 1 : - psf->write_short = dpcm_write_s2dsc ; - psf->write_int = dpcm_write_i2dsc ; - psf->write_float = dpcm_write_f2dsc ; - psf->write_double = dpcm_write_d2dsc ; - break ; - case 2 : - psf->write_short = dpcm_write_s2dles ; - psf->write_int = dpcm_write_i2dles ; - psf->write_float = dpcm_write_f2dles ; - psf->write_double = dpcm_write_d2dles ; - break ; - default : - psf_log_printf (psf, "dpcm_init() returning SFE_UNIMPLEMENTED\n") ; - return SFE_UNIMPLEMENTED ; - } ; - } ; - - psf->filelength = psf_get_filelen (psf) ; - psf->datalength = (psf->dataend) ? psf->dataend - psf->dataoffset : - psf->filelength - psf->dataoffset ; - psf->sf.frames = psf->datalength / psf->blockwidth ; - - return 0 ; -} /* dpcm_init */ - -/*============================================================================== -*/ - -static sf_count_t -dpcm_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) -{ XI_PRIVATE *pxi ; - int total, bufferlen, len ; - - if ((pxi = psf->fdata) == NULL) - return SFE_INTERNAL ; - - if (psf->datalength < 0 || psf->dataoffset < 0) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - if (offset == 0) - { psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - pxi->last_16 = 0 ; - return 0 ; - } ; - - if (offset < 0 || offset > psf->sf.frames) - { psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - if (mode != SFM_READ) - { /* What to do about write??? */ - psf->error = SFE_BAD_SEEK ; - return PSF_SEEK_ERROR ; - } ; - - psf_fseek (psf, psf->dataoffset, SEEK_SET) ; - - if ((psf->sf.format & SF_FORMAT_SUBMASK) == SF_FORMAT_DPCM_16) - { total = offset ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (total > 0) - { len = (total > bufferlen) ? bufferlen : total ; - total -= dpcm_read_dles2s (psf, psf->u.sbuf, len) ; - } ; - } - else - { total = offset ; - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - while (total > 0) - { len = (total > bufferlen) ? bufferlen : total ; - total -= dpcm_read_dsc2s (psf, psf->u.sbuf, len) ; - } ; - } ; - - return offset ; -} /* dpcm_seek */ - - -static int -xi_write_header (SF_PRIVATE *psf, int calc_length) -{ XI_PRIVATE *pxi ; - sf_count_t current ; - const char *string ; - - if ((pxi = psf->fdata) == NULL) - return SFE_INTERNAL ; - - calc_length = calc_length ; /* Avoid a compiler warning. */ - - current = psf_ftell (psf) ; - - /* Reset the current header length to zero. */ - psf->header [0] = 0 ; - psf->headindex = 0 ; - psf_fseek (psf, 0, SEEK_SET) ; - - string = "Extended Instrument: " ; - psf_binheader_writef (psf, "b", string, strlen (string)) ; - psf_binheader_writef (psf, "b1", pxi->filename, sizeof (pxi->filename), 0x1A) ; - - /* Write software version and two byte XI version. */ - psf_binheader_writef (psf, "eb2", pxi->software, sizeof (pxi->software), (1 << 8) + 2) ; - - /* - ** Jump note numbers (96), volume envelope (48), pan envelope (48), - ** volume points (1), pan points (1) - */ - psf_binheader_writef (psf, "z", (size_t) (96 + 48 + 48 + 1 + 1)) ; - - /* Jump volume loop (3 bytes), pan loop (3), envelope flags (3), vibrato (3) - ** fade out (2), 22 unknown bytes, and then write sample_count (2 bytes). - */ - psf_binheader_writef (psf, "ez2z2", (size_t) (4 * 3), 0x1234, make_size_t (22), 1) ; - - pxi->loop_begin = 0 ; - pxi->loop_end = 0 ; - - psf_binheader_writef (psf, "et844", psf->sf.frames, pxi->loop_begin, pxi->loop_end) ; - - /* volume, fine tune, flags, pan, note, namelen */ - psf_binheader_writef (psf, "111111", 128, 0, pxi->sample_flags, 128, 0, strlen (pxi->sample_name)) ; - - psf_binheader_writef (psf, "b", pxi->sample_name, sizeof (pxi->sample_name)) ; - - - - - - /* Header construction complete so write it out. */ - psf_fwrite (psf->header, psf->headindex, 1, psf) ; - - if (psf->error) - return psf->error ; - - psf->dataoffset = psf->headindex ; - - if (current > 0) - psf_fseek (psf, current, SEEK_SET) ; - - return psf->error ; -} /* xi_write_header */ - -static int -xi_read_header (SF_PRIVATE *psf) -{ char buffer [64], name [32] ; - short version, fade_out, sample_count ; - int k, loop_begin, loop_end ; - int sample_sizes [MAX_XI_SAMPLES] ; - - psf_binheader_readf (psf, "pb", 0, buffer, 21) ; - - memset (sample_sizes, 0, sizeof (sample_sizes)) ; - - buffer [20] = 0 ; - if (strcmp (buffer, "Extended Instrument:") != 0) - return SFE_XI_BAD_HEADER ; - - memset (buffer, 0, sizeof (buffer)) ; - psf_binheader_readf (psf, "b", buffer, 23) ; - - if (buffer [22] != 0x1A) - return SFE_XI_BAD_HEADER ; - - buffer [22] = 0 ; - psf_log_printf (psf, "Extended Instrument : %s\n", buffer) ; - - psf_binheader_readf (psf, "be2", buffer, 20, &version) ; - buffer [19] = 0 ; - psf_log_printf (psf, "Software : %s\nVersion : %d.%02d\n", buffer, version / 256, version % 256) ; - - /* Jump note numbers (96), volume envelope (48), pan envelope (48), - ** volume points (1), pan points (1) - */ - psf_binheader_readf (psf, "j", 96 + 48 + 48 + 1 + 1) ; - - psf_binheader_readf (psf, "b", buffer, 12) ; - psf_log_printf (psf, "Volume Loop\n sustain : %u\n begin : %u\n end : %u\n", - buffer [0], buffer [1], buffer [2]) ; - psf_log_printf (psf, "Pan Loop\n sustain : %u\n begin : %u\n end : %u\n", - buffer [3], buffer [4], buffer [5]) ; - psf_log_printf (psf, "Envelope Flags\n volume : 0x%X\n pan : 0x%X\n", - buffer [6] & 0xFF, buffer [7] & 0xFF) ; - - psf_log_printf (psf, "Vibrato\n type : %u\n sweep : %u\n depth : %u\n rate : %u\n", - buffer [8], buffer [9], buffer [10], buffer [11]) ; - - /* - ** Read fade_out then jump reserved (2 bytes) and ???? (20 bytes) and - ** sample_count. - */ - psf_binheader_readf (psf, "e2j2", &fade_out, 2 + 20, &sample_count) ; - psf_log_printf (psf, "Fade out : %d\n", fade_out) ; - - /* XI file can contain up to 16 samples. */ - if (sample_count > MAX_XI_SAMPLES) - return SFE_XI_EXCESS_SAMPLES ; - - if (psf->instrument == NULL && (psf->instrument = psf_instrument_alloc ()) == NULL) - return SFE_MALLOC_FAILED ; - - /* Log all data for each sample. */ - for (k = 0 ; k < sample_count ; k++) - { psf_binheader_readf (psf, "e444", &(sample_sizes [k]), &loop_begin, &loop_end) ; - - /* Read 5 know bytes, 1 unknown byte and 22 name bytes. */ - psf_binheader_readf (psf, "bb", buffer, 6, name, 22) ; - name [21] = 0 ; - - psf_log_printf (psf, "Sample #%d\n name : %s\n", k + 1, name) ; - - psf_log_printf (psf, " size : %d\n", sample_sizes [k]) ; - - - - psf_log_printf (psf, " loop\n begin : %d\n end : %d\n", loop_begin, loop_end) ; - - psf_log_printf (psf, " volume : %u\n f. tune : %d\n flags : 0x%02X ", - buffer [0] & 0xFF, buffer [1] & 0xFF, buffer [2] & 0xFF) ; - - psf_log_printf (psf, " (") ; - if (buffer [2] & 1) - psf_log_printf (psf, " Loop") ; - if (buffer [2] & 2) - psf_log_printf (psf, " PingPong") ; - psf_log_printf (psf, (buffer [2] & 16) ? " 16bit" : " 8bit") ; - psf_log_printf (psf, " )\n") ; - - psf_log_printf (psf, " pan : %u\n note : %d\n namelen : %d\n", - buffer [3] & 0xFF, buffer [4], buffer [5]) ; - - if (k != 0) - continue ; - - if (buffer [2] & 16) - { psf->sf.format = SF_FORMAT_XI | SF_FORMAT_DPCM_16 ; - psf->bytewidth = 2 ; - } - else - { psf->sf.format = SF_FORMAT_XI | SF_FORMAT_DPCM_8 ; - psf->bytewidth = 1 ; - } ; - } ; - - while (sample_count > 1 && sample_sizes [sample_count - 1] == 0) - sample_count -- ; - - /* Currently, we can only handle 1 sample per file. */ - - if (sample_count > 2) - { psf_log_printf (psf, "*** Sample count is less than 16 but more than 1.\n") ; - psf_log_printf (psf, " sample count : %d sample_sizes [%d] : %d\n", - sample_count, sample_count - 1, sample_sizes [sample_count - 1]) ; - return SFE_XI_EXCESS_SAMPLES ; - } ; - - psf->dataoffset = psf_fseek (psf, 0, SEEK_CUR) ; - psf_log_printf (psf, "Data Offset : %D\n", psf->dataoffset) ; - - psf->datalength = sample_sizes [0] ; - - if (psf->dataoffset + psf->datalength > psf->filelength) - { psf_log_printf (psf, "*** File seems to be truncated. Should be at least %D bytes long.\n", - psf->dataoffset + sample_sizes [0]) ; - psf->datalength = psf->filelength - psf->dataoffset ; - } ; - - if (psf_fseek (psf, psf->dataoffset, SEEK_SET) != psf->dataoffset) - return SFE_BAD_SEEK ; - - psf->endian = SF_ENDIAN_LITTLE ; - psf->sf.channels = 1 ; /* Always mono */ - psf->sf.samplerate = 44100 ; /* Always */ - - psf->blockwidth = psf->sf.channels * psf->bytewidth ; - - if (! psf->sf.frames && psf->blockwidth) - psf->sf.frames = (psf->filelength - psf->dataoffset) / psf->blockwidth ; - - psf->instrument->basenote = 0 ; - psf->instrument->gain = 1 ; - psf->instrument->velocity_lo = psf->instrument->key_lo = 0 ; - psf->instrument->velocity_hi = psf->instrument->key_hi = 127 ; - - return 0 ; -} /* xi_read_header */ - -/*============================================================================== -*/ - -static void dsc2s_array (XI_PRIVATE *pxi, signed char *src, int count, short *dest) ; -static void dsc2i_array (XI_PRIVATE *pxi, signed char *src, int count, int *dest) ; -static void dsc2f_array (XI_PRIVATE *pxi, signed char *src, int count, float *dest, float normfact) ; -static void dsc2d_array (XI_PRIVATE *pxi, signed char *src, int count, double *dest, double normfact) ; - -static void dles2s_array (XI_PRIVATE *pxi, short *src, int count, short *dest) ; -static void dles2i_array (XI_PRIVATE *pxi, short *src, int count, int *dest) ; -static void dles2f_array (XI_PRIVATE *pxi, short *src, int count, float *dest, float normfact) ; -static void dles2d_array (XI_PRIVATE *pxi, short *src, int count, double *dest, double normfact) ; - -static sf_count_t -dpcm_read_dsc2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ XI_PRIVATE *pxi ; - int bufferlen, readcount ; - sf_count_t total = 0 ; - - if ((pxi = psf->fdata) == NULL) - return 0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; - dsc2s_array (pxi, psf->u.scbuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* dpcm_read_dsc2s */ - -static sf_count_t -dpcm_read_dsc2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ XI_PRIVATE *pxi ; - int bufferlen, readcount ; - sf_count_t total = 0 ; - - if ((pxi = psf->fdata) == NULL) - return 0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; - dsc2i_array (pxi, psf->u.scbuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* dpcm_read_dsc2i */ - -static sf_count_t -dpcm_read_dsc2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ XI_PRIVATE *pxi ; - int bufferlen, readcount ; - sf_count_t total = 0 ; - float normfact ; - - if ((pxi = psf->fdata) == NULL) - return 0 ; - - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x80) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; - dsc2f_array (pxi, psf->u.scbuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* dpcm_read_dsc2f */ - -static sf_count_t -dpcm_read_dsc2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ XI_PRIVATE *pxi ; - int bufferlen, readcount ; - sf_count_t total = 0 ; - double normfact ; - - if ((pxi = psf->fdata) == NULL) - return 0 ; - - normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x80) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; - dsc2d_array (pxi, psf->u.scbuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* dpcm_read_dsc2d */ - -/*------------------------------------------------------------------------------ -*/ - -static sf_count_t -dpcm_read_dles2s (SF_PRIVATE *psf, short *ptr, sf_count_t len) -{ XI_PRIVATE *pxi ; - int bufferlen, readcount ; - sf_count_t total = 0 ; - - if ((pxi = psf->fdata) == NULL) - return 0 ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - dles2s_array (pxi, psf->u.sbuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* dpcm_read_dles2s */ - -static sf_count_t -dpcm_read_dles2i (SF_PRIVATE *psf, int *ptr, sf_count_t len) -{ XI_PRIVATE *pxi ; - int bufferlen, readcount ; - sf_count_t total = 0 ; - - if ((pxi = psf->fdata) == NULL) - return 0 ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - dles2i_array (pxi, psf->u.sbuf, readcount, ptr + total) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* dpcm_read_dles2i */ - -static sf_count_t -dpcm_read_dles2f (SF_PRIVATE *psf, float *ptr, sf_count_t len) -{ XI_PRIVATE *pxi ; - int bufferlen, readcount ; - sf_count_t total = 0 ; - float normfact ; - - if ((pxi = psf->fdata) == NULL) - return 0 ; - - normfact = (psf->norm_float == SF_TRUE) ? 1.0 / ((float) 0x8000) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - dles2f_array (pxi, psf->u.sbuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* dpcm_read_dles2f */ - -static sf_count_t -dpcm_read_dles2d (SF_PRIVATE *psf, double *ptr, sf_count_t len) -{ XI_PRIVATE *pxi ; - int bufferlen, readcount ; - sf_count_t total = 0 ; - double normfact ; - - if ((pxi = psf->fdata) == NULL) - return 0 ; - - normfact = (psf->norm_double == SF_TRUE) ? 1.0 / ((double) 0x8000) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - readcount = psf_fread (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - dles2d_array (pxi, psf->u.sbuf, readcount, ptr + total, normfact) ; - total += readcount ; - if (readcount < bufferlen) - break ; - len -= readcount ; - } ; - - return total ; -} /* dpcm_read_dles2d */ - -/*============================================================================== -*/ - -static void s2dsc_array (XI_PRIVATE *pxi, const short *src, signed char *dest, int count) ; -static void i2dsc_array (XI_PRIVATE *pxi, const int *src, signed char *dest, int count) ; -static void f2dsc_array (XI_PRIVATE *pxi, const float *src, signed char *dest, int count, float normfact) ; -static void d2dsc_array (XI_PRIVATE *pxi, const double *src, signed char *dest, int count, double normfact) ; - -static void s2dles_array (XI_PRIVATE *pxi, const short *src, short *dest, int count) ; -static void i2dles_array (XI_PRIVATE *pxi, const int *src, short *dest, int count) ; -static void f2dles_array (XI_PRIVATE *pxi, const float *src, short *dest, int count, float normfact) ; -static void d2dles_array (XI_PRIVATE *pxi, const double *src, short *dest, int count, double normfact) ; - - -static sf_count_t -dpcm_write_s2dsc (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ XI_PRIVATE *pxi ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - if ((pxi = psf->fdata) == NULL) - return 0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - s2dsc_array (pxi, ptr + total, psf->u.scbuf, bufferlen) ; - writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* dpcm_write_s2dsc */ - -static sf_count_t -dpcm_write_i2dsc (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ XI_PRIVATE *pxi ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - if ((pxi = psf->fdata) == NULL) - return 0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - i2dsc_array (pxi, ptr + total, psf->u.scbuf, bufferlen) ; - writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* dpcm_write_i2dsc */ - -static sf_count_t -dpcm_write_f2dsc (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ XI_PRIVATE *pxi ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - float normfact ; - - if ((pxi = psf->fdata) == NULL) - return 0 ; - - normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7F) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - f2dsc_array (pxi, ptr + total, psf->u.scbuf, bufferlen, normfact) ; - writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* dpcm_write_f2dsc */ - -static sf_count_t -dpcm_write_d2dsc (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ XI_PRIVATE *pxi ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - double normfact ; - - if ((pxi = psf->fdata) == NULL) - return 0 ; - - normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7F) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.ucbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - d2dsc_array (pxi, ptr + total, psf->u.scbuf, bufferlen, normfact) ; - writecount = psf_fwrite (psf->u.scbuf, sizeof (signed char), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* dpcm_write_d2dsc */ - - -static sf_count_t -dpcm_write_s2dles (SF_PRIVATE *psf, const short *ptr, sf_count_t len) -{ XI_PRIVATE *pxi ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - if ((pxi = psf->fdata) == NULL) - return 0 ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - s2dles_array (pxi, ptr + total, psf->u.sbuf, bufferlen) ; - writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* dpcm_write_s2dles */ - -static sf_count_t -dpcm_write_i2dles (SF_PRIVATE *psf, const int *ptr, sf_count_t len) -{ XI_PRIVATE *pxi ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - - if ((pxi = psf->fdata) == NULL) - return 0 ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - i2dles_array (pxi, ptr + total, psf->u.sbuf, bufferlen) ; - writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* dpcm_write_i2dles */ - -static sf_count_t -dpcm_write_f2dles (SF_PRIVATE *psf, const float *ptr, sf_count_t len) -{ XI_PRIVATE *pxi ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - float normfact ; - - if ((pxi = psf->fdata) == NULL) - return 0 ; - - normfact = (psf->norm_float == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - f2dles_array (pxi, ptr + total, psf->u.sbuf, bufferlen, normfact) ; - writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* dpcm_write_f2dles */ - -static sf_count_t -dpcm_write_d2dles (SF_PRIVATE *psf, const double *ptr, sf_count_t len) -{ XI_PRIVATE *pxi ; - int bufferlen, writecount ; - sf_count_t total = 0 ; - double normfact ; - - if ((pxi = psf->fdata) == NULL) - return 0 ; - - normfact = (psf->norm_double == SF_TRUE) ? (1.0 * 0x7FFF) : 1.0 ; - - bufferlen = ARRAY_LEN (psf->u.sbuf) ; - - while (len > 0) - { if (len < bufferlen) - bufferlen = (int) len ; - d2dles_array (pxi, ptr + total, psf->u.sbuf, bufferlen, normfact) ; - writecount = psf_fwrite (psf->u.sbuf, sizeof (short), bufferlen, psf) ; - total += writecount ; - if (writecount < bufferlen) - break ; - len -= writecount ; - } ; - - return total ; -} /* dpcm_write_d2dles */ - - -/*============================================================================== -*/ - -static void -dsc2s_array (XI_PRIVATE *pxi, signed char *src, int count, short *dest) -{ signed char last_val ; - int k ; - - last_val = pxi->last_16 >> 8 ; - - for (k = 0 ; k < count ; k++) - { last_val += src [k] ; - dest [k] = last_val << 8 ; - } ; - - pxi->last_16 = last_val << 8 ; -} /* dsc2s_array */ - -static void -dsc2i_array (XI_PRIVATE *pxi, signed char *src, int count, int *dest) -{ signed char last_val ; - int k ; - - last_val = pxi->last_16 >> 8 ; - - for (k = 0 ; k < count ; k++) - { last_val += src [k] ; - dest [k] = last_val << 24 ; - } ; - - pxi->last_16 = last_val << 8 ; -} /* dsc2i_array */ - -static void -dsc2f_array (XI_PRIVATE *pxi, signed char *src, int count, float *dest, float normfact) -{ signed char last_val ; - int k ; - - last_val = pxi->last_16 >> 8 ; - - for (k = 0 ; k < count ; k++) - { last_val += src [k] ; - dest [k] = last_val * normfact ; - } ; - - pxi->last_16 = last_val << 8 ; -} /* dsc2f_array */ - -static void -dsc2d_array (XI_PRIVATE *pxi, signed char *src, int count, double *dest, double normfact) -{ signed char last_val ; - int k ; - - last_val = pxi->last_16 >> 8 ; - - for (k = 0 ; k < count ; k++) - { last_val += src [k] ; - dest [k] = last_val * normfact ; - } ; - - pxi->last_16 = last_val << 8 ; -} /* dsc2d_array */ - -/*------------------------------------------------------------------------------ -*/ - -static void -s2dsc_array (XI_PRIVATE *pxi, const short *src, signed char *dest, int count) -{ signed char last_val, current ; - int k ; - - last_val = pxi->last_16 >> 8 ; - - for (k = 0 ; k < count ; k++) - { current = src [k] >> 8 ; - dest [k] = current - last_val ; - last_val = current ; - } ; - - pxi->last_16 = last_val << 8 ; -} /* s2dsc_array */ - -static void -i2dsc_array (XI_PRIVATE *pxi, const int *src, signed char *dest, int count) -{ signed char last_val, current ; - int k ; - - last_val = pxi->last_16 >> 8 ; - - for (k = 0 ; k < count ; k++) - { current = src [k] >> 24 ; - dest [k] = current - last_val ; - last_val = current ; - } ; - - pxi->last_16 = last_val << 8 ; -} /* i2dsc_array */ - -static void -f2dsc_array (XI_PRIVATE *pxi, const float *src, signed char *dest, int count, float normfact) -{ signed char last_val, current ; - int k ; - - last_val = pxi->last_16 >> 8 ; - - for (k = 0 ; k < count ; k++) - { current = lrintf (src [k] * normfact) ; - dest [k] = current - last_val ; - last_val = current ; - } ; - - pxi->last_16 = last_val << 8 ; -} /* f2dsc_array */ - -static void -d2dsc_array (XI_PRIVATE *pxi, const double *src, signed char *dest, int count, double normfact) -{ signed char last_val, current ; - int k ; - - last_val = pxi->last_16 >> 8 ; - - for (k = 0 ; k < count ; k++) - { current = lrint (src [k] * normfact) ; - dest [k] = current - last_val ; - last_val = current ; - } ; - - pxi->last_16 = last_val << 8 ; -} /* d2dsc_array */ - -/*============================================================================== -*/ - -static void -dles2s_array (XI_PRIVATE *pxi, short *src, int count, short *dest) -{ short last_val ; - int k ; - - last_val = pxi->last_16 ; - - for (k = 0 ; k < count ; k++) - { last_val += LES2H_SHORT (src [k]) ; - dest [k] = last_val ; - } ; - - pxi->last_16 = last_val ; -} /* dles2s_array */ - -static void -dles2i_array (XI_PRIVATE *pxi, short *src, int count, int *dest) -{ short last_val ; - int k ; - - last_val = pxi->last_16 ; - - for (k = 0 ; k < count ; k++) - { last_val += LES2H_SHORT (src [k]) ; - dest [k] = last_val << 16 ; - } ; - - pxi->last_16 = last_val ; -} /* dles2i_array */ - -static void -dles2f_array (XI_PRIVATE *pxi, short *src, int count, float *dest, float normfact) -{ short last_val ; - int k ; - - last_val = pxi->last_16 ; - - for (k = 0 ; k < count ; k++) - { last_val += LES2H_SHORT (src [k]) ; - dest [k] = last_val * normfact ; - } ; - - pxi->last_16 = last_val ; -} /* dles2f_array */ - -static void -dles2d_array (XI_PRIVATE *pxi, short *src, int count, double *dest, double normfact) -{ short last_val ; - int k ; - - last_val = pxi->last_16 ; - - for (k = 0 ; k < count ; k++) - { last_val += LES2H_SHORT (src [k]) ; - dest [k] = last_val * normfact ; - } ; - - pxi->last_16 = last_val ; -} /* dles2d_array */ - -/*------------------------------------------------------------------------------ -*/ - -static void -s2dles_array (XI_PRIVATE *pxi, const short *src, short *dest, int count) -{ short diff, last_val ; - int k ; - - last_val = pxi->last_16 ; - - for (k = 0 ; k < count ; k++) - { diff = src [k] - last_val ; - dest [k] = LES2H_SHORT (diff) ; - last_val = src [k] ; - } ; - - pxi->last_16 = last_val ; -} /* s2dles_array */ - -static void -i2dles_array (XI_PRIVATE *pxi, const int *src, short *dest, int count) -{ short diff, last_val ; - int k ; - - last_val = pxi->last_16 ; - - for (k = 0 ; k < count ; k++) - { diff = (src [k] >> 16) - last_val ; - dest [k] = LES2H_SHORT (diff) ; - last_val = src [k] >> 16 ; - } ; - - pxi->last_16 = last_val ; -} /* i2dles_array */ - -static void -f2dles_array (XI_PRIVATE *pxi, const float *src, short *dest, int count, float normfact) -{ short diff, last_val, current ; - int k ; - - last_val = pxi->last_16 ; - - for (k = 0 ; k < count ; k++) - { current = lrintf (src [k] * normfact) ; - diff = current - last_val ; - dest [k] = LES2H_SHORT (diff) ; - last_val = current ; - } ; - - pxi->last_16 = last_val ; -} /* f2dles_array */ - -static void -d2dles_array (XI_PRIVATE *pxi, const double *src, short *dest, int count, double normfact) -{ short diff, last_val, current ; - int k ; - - last_val = pxi->last_16 ; - - for (k = 0 ; k < count ; k++) - { current = lrint (src [k] * normfact) ; - diff = current - last_val ; - dest [k] = LES2H_SHORT (diff) ; - last_val = current ; - } ; - - pxi->last_16 = last_val ; -} /* d2dles_array */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 1ab2dbe0-29af-4d80-9c6f-cb21b67521bc -*/ diff --git a/libs/midi++2/jack_midiport.cc b/libs/midi++2/jack_midiport.cc index 5b9fb79a4f..bcaa683bf8 100644 --- a/libs/midi++2/jack_midiport.cc +++ b/libs/midi++2/jack_midiport.cc @@ -116,7 +116,11 @@ JACK_MidiPort::write(byte * msg, size_t msglen, timestamp_t timestamp) } else { assert(_jack_output_port); - assert(timestamp < _nframes_this_cycle); + + // XXX This had to be temporarily commented out to make export work again + if (!(timestamp < _nframes_this_cycle)) { + std::cerr << "assertion timestamp < _nframes_this_cycle failed!" << std::endl; + } if (_currently_in_cycle) { if (timestamp == 0) { diff --git a/libs/taglib/AUTHORS b/libs/taglib/AUTHORS new file mode 100644 index 0000000000..8872bd80e0 --- /dev/null +++ b/libs/taglib/AUTHORS @@ -0,0 +1,11 @@ +Scott Wheeler + Author, maintainer +Ismael Orenstein + Xing header implementation +Allan Sandfeld Jensen + FLAC metadata implementation +Teemu Tervo + Numerous bug reports and fixes + +Please send all patches and questions to taglib-devel@kde.org rather than to +individual developers! diff --git a/libs/taglib/CMakeLists.txt b/libs/taglib/CMakeLists.txt new file mode 100644 index 0000000000..436627e0a6 --- /dev/null +++ b/libs/taglib/CMakeLists.txt @@ -0,0 +1,56 @@ +project(taglib) + +OPTION(BUILD_TESTS "Build the test suite" OFF) +OPTION(BUILD_EXAMPLES "Build the examples" OFF) + +OPTION(NO_ITUNES_HACKS "Disable workarounds for iTunes bugs" OFF) + +#add some KDE specific stuff +set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" ) +set(EXEC_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} CACHE PATH "Base directory for executables and libraries" FORCE) +# +## the following are directories where stuff will be installed to +set(BIN_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/bin" CACHE PATH "The kde info install dir (default prefix/info)" FORCE) +set(LIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" FORCE) +set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The subdirectory to the header prefix" FORCE) + +if (CMAKE_COMPILER_IS_GNUCXX) + if (CMAKE_SYSTEM_NAME MATCHES Linux) + set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-long-long -ansi -Wundef -Wcast-align -Werror-implicit-function-declaration -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-common") + set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -fno-check-new -fno-common") + endif (CMAKE_SYSTEM_NAME MATCHES Linux) +endif (CMAKE_COMPILER_IS_GNUCXX) +if(MSVC) + add_definitions( -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE ) +endif(MSVC) +if (WIN32) + set(CMAKE_DEBUG_POSTFIX "d") +endif (WIN32) + +SET(TAGLIB_LIB_MAJOR_VERSION "1") +SET(TAGLIB_LIB_MINOR_VERSION "5") +SET(TAGLIB_LIB_PATCH_VERSION "0") + +SET(TAGLIB_LIB_VERSION_STRING "${TAGLIB_LIB_MAJOR_VERSION}.${TAGLIB_LIB_MINOR_VERSION}.${TAGLIB_LIB_PATCH_VERSION}") + + +include(ConfigureChecks.cmake) + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/taglib-config.cmake ${CMAKE_CURRENT_BINARY_DIR}/taglib-config ) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/taglib.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/taglib.pc ) + +configure_file(config-taglib.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h ) + +ADD_SUBDIRECTORY( taglib ) + +ADD_SUBDIRECTORY(tests) +ADD_SUBDIRECTORY(examples) + +ADD_SUBDIRECTORY(bindings) +if(NOT WIN32) + INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/taglib.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig ) +endif(NOT WIN32) + +INSTALL( PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/taglib-config DESTINATION ${BIN_INSTALL_DIR}) + + diff --git a/libs/taglib/COPYING.LGPL b/libs/taglib/COPYING.LGPL new file mode 100644 index 0000000000..e38ffa8374 --- /dev/null +++ b/libs/taglib/COPYING.LGPL @@ -0,0 +1,481 @@ + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 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. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + 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 Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, 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 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 a program 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. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, 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 companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + 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, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +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 compile 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) 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. + + c) 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. + + d) 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 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. + + 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 to +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 Library 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 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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/libs/taglib/COPYING.MPL b/libs/taglib/COPYING.MPL new file mode 100644 index 0000000000..7714141d15 --- /dev/null +++ b/libs/taglib/COPYING.MPL @@ -0,0 +1,470 @@ + MOZILLA PUBLIC LICENSE + Version 1.1 + + --------------- + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the NPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] + diff --git a/libs/taglib/ConfigureChecks.cmake b/libs/taglib/ConfigureChecks.cmake new file mode 100644 index 0000000000..033dab1699 --- /dev/null +++ b/libs/taglib/ConfigureChecks.cmake @@ -0,0 +1,28 @@ +# NOTE: only add something here if it is really needed by all of kdelibs. +# Otherwise please prefer adding to the relevant config-foo.h.cmake file, +# and the CMakeLists.txt that generates it (or a separate ConfigureChecks.make file if you prefer) +# to minimize recompilations and increase modularity. + +include(CheckIncludeFile) +include(CheckIncludeFiles) +include(CheckSymbolExists) +include(CheckFunctionExists) +include(CheckLibraryExists) +include(CheckTypeSize) +include(CheckCXXSourceCompiles) + +#check for libz using the cmake supplied FindZLIB.cmake +FIND_PACKAGE(ZLIB) + +IF(ZLIB_FOUND) + SET(HAVE_ZLIB 1) +ELSE(ZLIB_FOUND) + SET(HAVE_ZLIB 0) +ENDIF(ZLIB_FOUND) + +SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) +FIND_PACKAGE(CppUnit) +IF (NOT CPPUNIT_FOUND AND BUILD_TESTS) + MESSAGE(STATUS "CppUnit not found, disabling tests.") + SET(BUILD_TESTS OFF) +ENDIF(NOT CPPUNIT_FOUND AND BUILD_TESTS) diff --git a/libs/taglib/INSTALL b/libs/taglib/INSTALL new file mode 100644 index 0000000000..02a4a0740a --- /dev/null +++ b/libs/taglib/INSTALL @@ -0,0 +1,167 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes a while. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Type `make install' to install the programs and any data files and + documentation. + + 4. You can remove the program binaries and object files from the + source code directory by typing `make clean'. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. + diff --git a/libs/taglib/Makefile.am b/libs/taglib/Makefile.am new file mode 100644 index 0000000000..f454f7ef0f --- /dev/null +++ b/libs/taglib/Makefile.am @@ -0,0 +1,54 @@ +SUBDIRS = taglib bindings tests + +AUTOMAKE_OPTIONS = foreign + +$(top_srcdir)/configure.in: configure.in.in $(top_srcdir)/subdirs + cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common configure.in ; + +$(top_srcdir)/subdirs: + cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common subdirs + +$(top_srcdir)/acinclude.m4: $(top_srcdir)/admin/acinclude.m4.in $(top_srcdir)/admin/libtool.m4.in + @cd $(top_srcdir) && cat admin/acinclude.m4.in admin/libtool.m4.in > acinclude.m4 + +MAINTAINERCLEANFILES = subdirs configure.in acinclude.m4 configure.files + +bin_SCRIPTS = taglib-config + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = taglib.pc + +package-messages: + $(MAKE) -f admin/Makefile.common package-messages + +dist-hook: + cd $(top_distdir) && perl admin/am_edit -padmin + cd $(top_distdir) && $(MAKE) -f admin/Makefile.common subdirs + +examples: examples-all + +examples-all: + cd examples ; \ + $(MAKE) all + +apidox: + $(mkinstalldirs) doc/api; \ + if test ! -x doc/common; then \ + $(LN_S) $(kde_libs_htmldir)/en/common doc/common ; \ + fi; \ + cp $(top_srcdir)/admin/Doxyfile.global taglib.doxyfile; \ + echo "PROJECT_NAME = TagLib" >> taglib.doxyfile; \ + echo "PROJECT_NUMBER = \"Version 1.5\"" >> taglib.doxyfile; \ + echo "INPUT = $(srcdir)" >> taglib.doxyfile; \ + echo "OUTPUT_DIRECTORY = doc/api" >> taglib.doxyfile; \ + echo "HTML_OUTPUT = html" >> taglib.doxyfile; \ + echo "GENERATE_HTML = YES" >> taglib.doxyfile ; \ + echo "GENERATE_MAN = NO" >> taglib.doxyfile ; \ + echo "GENERATE_LATEX = NO" >> taglib.doxyfile ; \ + echo "HTML_HEADER = doc/common/header.html" >> taglib.doxyfile ; \ + echo "HTML_FOOTER = doc/common/footer.html" >> taglib.doxyfile ; \ + echo "HTML_STYLESHEET = doc/common/doxygen.css" >> taglib.doxyfile ; \ + echo "FILE_PATTERNS = *.h" >> taglib.doxyfile ; \ + echo "PREDEFINED = DO_NOT_DOCUMENT DOXYGEN" >> taglib.doxyfile ; \ + echo "EXTRACT_ALL = YES" >> taglib.doxyfile ; \ + doxygen taglib.doxyfile diff --git a/libs/taglib/Makefile.cvs b/libs/taglib/Makefile.cvs new file mode 100644 index 0000000000..ac8066e05f --- /dev/null +++ b/libs/taglib/Makefile.cvs @@ -0,0 +1,14 @@ +all: + @echo "This Makefile is only for the CVS repository" + @echo "This will be deleted before making the distribution" + @echo "" + @if test ! -d admin; then \ + echo "Please recheckout this module!" ;\ + echo "for cvs: use checkout once and after that update again" ;\ + echo "for cvsup: checkout kde-common from cvsup and" ;\ + echo " link kde-common/admin to ./admin" ;\ + exit 1 ;\ + fi + $(MAKE) -f admin/Makefile.common cvs + +.SILENT: diff --git a/libs/taglib/Makefile.in b/libs/taglib/Makefile.in new file mode 100644 index 0000000000..f3547d2b6d --- /dev/null +++ b/libs/taglib/Makefile.in @@ -0,0 +1,862 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# KDE tags expanded automatically by am_edit - $Revision: 483858 $ +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 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@ + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +subdir = . +DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(srcdir)/taglib-config.in $(srcdir)/taglib.pc.in \ + $(top_srcdir)/configure AUTHORS INSTALL admin/compile \ + admin/config.guess admin/config.sub admin/depcomp \ + admin/install-sh admin/ltmain.sh admin/missing \ + admin/mkinstalldirs admin/ylwrap +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = taglib-config taglib.pc +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)" +binSCRIPT_INSTALL = $(INSTALL_SCRIPT) +SCRIPTS = $(bin_SCRIPTS) +SOURCES = +DIST_SOURCES = +#>- RECURSIVE_TARGETS = all-recursive check-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 uninstall-recursive +#>+ 7 +RECURSIVE_TARGETS = all-recursive check-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 uninstall-recursive nmcheck-recursive bcheck-recursive +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 = `echo $$p | sed -e 's|^.*/||'`; +pkgconfigDATA_INSTALL = $(INSTALL_DATA) +DATA = $(pkgconfig_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +#>+ 1 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTODIRS = @AUTODIRS@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONF_FILES = @CONF_FILES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_PERMISSIVE_FLAG = @ENABLE_PERMISSIVE_FLAG@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +HAVE_GCC_VISIBILITY = @HAVE_GCC_VISIBILITY@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +KDE_CHECK_PLUGIN = @KDE_CHECK_PLUGIN@ +KDE_NO_UNDEFINED = @KDE_NO_UNDEFINED@ +KDE_PLUGIN = @KDE_PLUGIN@ +KDE_USE_CLOSURE_FALSE = @KDE_USE_CLOSURE_FALSE@ +KDE_USE_CLOSURE_TRUE = @KDE_USE_CLOSURE_TRUE@ +KDE_USE_FINAL_FALSE = @KDE_USE_FINAL_FALSE@ +KDE_USE_FINAL_TRUE = @KDE_USE_FINAL_TRUE@ +KDE_USE_NMCHECK_FALSE = @KDE_USE_NMCHECK_FALSE@ +KDE_USE_NMCHECK_TRUE = @KDE_USE_NMCHECK_TRUE@ +LDFLAGS = @LDFLAGS@ +LDFLAGS_AS_NEEDED = @LDFLAGS_AS_NEEDED@ +LDFLAGS_NEW_DTAGS = @LDFLAGS_NEW_DTAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NOOPT_CFLAGS = @NOOPT_CFLAGS@ +NOOPT_CXXFLAGS = @NOOPT_CXXFLAGS@ +OBJEXT = @OBJEXT@ +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@ +TOPSUBDIRS = @TOPSUBDIRS@ +USE_EXCEPTIONS = @USE_EXCEPTIONS@ +USE_RTTI = @USE_RTTI@ +VERSION = @VERSION@ +WOVERLOADED_VIRTUAL = @WOVERLOADED_VIRTUAL@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +all_includes = @all_includes@ +all_libraries = @all_libraries@ +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@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = taglib bindings tests +AUTOMAKE_OPTIONS = foreign +MAINTAINERCLEANFILES = subdirs configure.in acinclude.m4 configure.files +bin_SCRIPTS = taglib-config +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = taglib.pc +#>- all: config.h +#>+ 1 +all: docs-am config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +#>- @for dep in $?; do \ +#>- case '$(am__configure_deps)' in \ +#>- *$$dep*) \ +#>- echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ +#>- cd $(srcdir) && $(AUTOMAKE) --foreign \ +#>- && exit 0; \ +#>- exit 1;; \ +#>- esac; \ +#>- done; \ +#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ +#>- cd $(top_srcdir) && \ +#>- $(AUTOMAKE) --foreign Makefile +#>+ 14 + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ + ( \ + cd $(srcdir) && $(AUTOMAKE) --foreign \ + ) || exit 1; echo ' cd $(top_srcdir) && perl admin/am_edit '; cd $(top_srcdir) && perl admin/am_edit && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile + cd $(top_srcdir) && perl admin/am_edit Makefile.in +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) +#>- cd $(srcdir) && $(AUTOCONF) +#>+ 2 + cd $(srcdir) && rm -f configure + cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common configure +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) 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: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +taglib-config: $(top_builddir)/config.status $(srcdir)/taglib-config.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +taglib.pc: $(top_builddir)/config.status $(srcdir)/taglib.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ + else :; fi; \ + done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ + $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgconfigdir)/$$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): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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) \ + || eval $$failcom; \ + 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 + +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 + +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; \ + 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 || \ + 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; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +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 + +distdir: $(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 $(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='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -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 $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | 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 + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + 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 ../.. && 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 + $(am__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: + @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 $(SCRIPTS) $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(bindir)" "$(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: + $(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: + -test -z "$(CONFIG_CLEAN_FILES)" || 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." + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +#>- clean: clean-recursive +#>+ 1 +clean: kde-rpo-clean clean-recursive + +#>- clean-am: clean-generic clean-libtool mostlyclean-am +#>+ 1 +clean-am: clean-bcheck 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 + +info: info-recursive + +info-am: + +install-data-am: install-pkgconfigDATA + +install-dvi: install-dvi-recursive + +install-exec-am: install-binSCRIPTS + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +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-binSCRIPTS uninstall-pkgconfigDATA + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ + dist-gzip dist-hook dist-shar dist-tarZ dist-zip 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-binSCRIPTS 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-recursive \ + uninstall uninstall-am uninstall-binSCRIPTS \ + uninstall-pkgconfigDATA + + +$(top_srcdir)/configure.in: configure.in.in $(top_srcdir)/subdirs + cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common configure.in ; + +$(top_srcdir)/subdirs: + cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common subdirs + +$(top_srcdir)/acinclude.m4: $(top_srcdir)/admin/acinclude.m4.in $(top_srcdir)/admin/libtool.m4.in + @cd $(top_srcdir) && cat admin/acinclude.m4.in admin/libtool.m4.in > acinclude.m4 + +package-messages: + $(MAKE) -f admin/Makefile.common package-messages + +dist-hook: + cd $(top_distdir) && perl admin/am_edit -padmin + cd $(top_distdir) && $(MAKE) -f admin/Makefile.common subdirs + +examples: examples-all + +examples-all: + cd examples ; \ + $(MAKE) all + +apidox: + $(mkinstalldirs) doc/api; \ + if test ! -x doc/common; then \ + $(LN_S) $(kde_libs_htmldir)/en/common doc/common ; \ + fi; \ + cp $(top_srcdir)/admin/Doxyfile.global taglib.doxyfile; \ + echo "PROJECT_NAME = TagLib" >> taglib.doxyfile; \ + echo "PROJECT_NUMBER = \"Version 1.5\"" >> taglib.doxyfile; \ + echo "INPUT = $(srcdir)" >> taglib.doxyfile; \ + echo "OUTPUT_DIRECTORY = doc/api" >> taglib.doxyfile; \ + echo "HTML_OUTPUT = html" >> taglib.doxyfile; \ + echo "GENERATE_HTML = YES" >> taglib.doxyfile ; \ + echo "GENERATE_MAN = NO" >> taglib.doxyfile ; \ + echo "GENERATE_LATEX = NO" >> taglib.doxyfile ; \ + echo "HTML_HEADER = doc/common/header.html" >> taglib.doxyfile ; \ + echo "HTML_FOOTER = doc/common/footer.html" >> taglib.doxyfile ; \ + echo "HTML_STYLESHEET = doc/common/doxygen.css" >> taglib.doxyfile ; \ + echo "FILE_PATTERNS = *.h" >> taglib.doxyfile ; \ + echo "PREDEFINED = DO_NOT_DOCUMENT DOXYGEN" >> taglib.doxyfile ; \ + echo "EXTRACT_ALL = YES" >> taglib.doxyfile ; \ + doxygen taglib.doxyfile +# 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: + +#>+ 2 +KDE_DIST=taglib-config.in COPYING.LGPL subdirs configure.in.bot Makefile.in config-taglib.h.cmake configure.files taglib-config.cmake config.h.in taglib.pc.in configure.in Makefile.cvs COPYING.MPL aclocal.m4 ConfigureChecks.cmake taglib.pc.cmake configure.in.in acinclude.m4 CMakeLists.txt configure Makefile.am + +#>+ 2 +docs-am: + +#>+ 7 +force-reedit: + \ + cd $(srcdir) && $(AUTOMAKE) --foreign \ + + cd $(top_srcdir) && perl admin/am_edit Makefile.in + + +#>+ 21 +clean-bcheck: + rm -f *.bchecktest.cc *.bchecktest.cc.class a.out + +bcheck: bcheck-recursive + +bcheck-am: + @for i in ; do \ + if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \ + echo "int main() {return 0;}" > $$i.bchecktest.cc ; \ + echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \ + echo "$$i"; \ + if ! $(CXX) $(DEFS) -I. -I$(srcdir) -I$(top_builddir) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS) --dump-class-hierarchy -c $$i.bchecktest.cc; then \ + rm -f $$i.bchecktest.cc; exit 1; \ + fi ; \ + echo "" >> $$i.bchecktest.cc.class; \ + perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \ + rm -f a.out; \ + fi ; \ + done + + +#>+ 3 +final: + $(MAKE) all-am + +#>+ 3 +final-install: + $(MAKE) install-am + +#>+ 3 +no-final: + $(MAKE) all-am + +#>+ 3 +no-final-install: + $(MAKE) install-am + +#>+ 3 +kde-rpo-clean: + -rm -f *.rpo + +#>+ 3 +nmcheck: +nmcheck-am: nmcheck diff --git a/libs/taglib/SConscript b/libs/taglib/SConscript new file mode 100644 index 0000000000..a496cc9280 --- /dev/null +++ b/libs/taglib/SConscript @@ -0,0 +1,146 @@ +# -*- python -*- + +import os.path +import os +import glob +from shutil import copy + +Import('env install_prefix libraries') +taglib = env.Clone() + +taglib_files = glob.glob ('taglib/*.cpp') +taglib_files += glob.glob ('taglib/flac/*.cpp') +taglib_files += glob.glob ('taglib/mpc/*.cpp') +taglib_files += glob.glob ('taglib/mpeg/*.cpp') +taglib_files += glob.glob ('taglib/mpeg/id3v1/*.cpp') +taglib_files += glob.glob ('taglib/mpeg/id3v2/*.cpp') +taglib_files += glob.glob ('taglib/mpeg/id3v2/frames/*.cpp') +taglib_files += glob.glob ('taglib/ogg/*.cpp') +taglib_files += glob.glob ('taglib/ogg/vorbis/*.cpp') +taglib_files += glob.glob ('taglib/ogg/speex/*.cpp') +taglib_files += glob.glob ('taglib/ogg/flac/*.cpp') +taglib_files += glob.glob ('taglib/trueaudio/*.cpp') +taglib_files += glob.glob ('taglib/wavpack/*.cpp') +taglib_files += glob.glob ('taglib/ape/*.cpp') +taglib_files += glob.glob ('taglib/toolkit/*.cpp') + + +domain = 'taglib' + +taglib.Append(CCFLAGS = "-DPACKAGE=\\\"" + domain + "\\\"") +# mingw may need this +#taglib.Append(CCFLAGS="-no-undefined") +taglib.Append(PACKAGE = domain) +taglib.Append(POTFILE = domain + '.pot') +taglib.Append (CPPATH= [ '#libs/taglib/taglib', + '#libs/taglib/taglib/toolkit', + '#libs/taglib/taglib/flac' + + '#libs/taglib/taglib/ape', + '#libs/taglib/taglib/mpc', + '#libs/taglib/taglib/mpeg', + '#libs/taglib/taglib/mpeg/id3v1', + '#libs/taglib/taglib/mpeg/id3v2', + '#libs/taglib/taglib/wavpack', + '#libs/taglib/taglib/trueaudio', + '#libs/taglib/taglib/ogg' + '#libs/taglib/taglib/ogg/vorbis' + '#libs/taglib/taglib/ogg/speex' + '#libs/taglib/taglib/ogg/flac' + ], + CXXFLAGS= [ "-Ilibs/taglib/taglib", + "-Ilibs/taglib/taglib/toolkit", + "-Ilibs/taglib/taglib/flac", + "-Ilibs/taglib/taglib/ape", + "-Ilibs/taglib/taglib/mpc", + "-Ilibs/taglib/taglib/mpeg", + "-Ilibs/taglib/taglib/mpeg/id3v1", + "-Ilibs/taglib/taglib/mpeg/id3v2", + "-Ilibs/taglib/taglib/wavpack", + "-Ilibs/taglib/taglib/trueaudio", + "-Ilibs/taglib/taglib/ogg", + "-Ilibs/taglib/taglib/ogg/vorbis", + "-Ilibs/taglib/taglib/ogg/speex", + "-Ilibs/taglib/taglib/ogg/flac" + ] + ) + + +#conf = Configure(taglib) +#taglib = conf.finish () + +headers = Split (""" +taglib/audioproperties.h +taglib/fileref.h +taglib/tag.h +taglib/taglib_export.h +taglib/tagunion.h +taglib/ape/apefooter.h +taglib/ape/apeitem.h +taglib/ape/apetag.h +taglib/flac/flacfile.h +taglib/flac/flacproperties.h +taglib/mpc/mpcfile.h +taglib/mpc/mpcproperties.h +taglib/mpeg/mpegfile.h +taglib/mpeg/mpegheader.h +taglib/mpeg/mpegproperties.h +taglib/mpeg/xingheader.h +taglib/ogg/oggfile.h +taglib/ogg/oggpage.h +taglib/ogg/oggpageheader.h +taglib/ogg/xiphcomment.h +taglib/toolkit/taglib.h +taglib/toolkit/tbytevector.h +taglib/toolkit/tbytevectorlist.h +taglib/toolkit/tdebug.h +taglib/toolkit/tfile.h +taglib/toolkit/tlist.h +taglib/toolkit/tlist.tcc +taglib/toolkit/tmap.h +taglib/toolkit/tmap.tcc +taglib/toolkit/tstring.h +taglib/toolkit/tstringlist.h +taglib/toolkit/unicode.h +taglib/trueaudio/trueaudiofile.h +taglib/trueaudio/trueaudioproperties.h +taglib/wavpack/wavpackfile.h +taglib/wavpack/wavpackproperties.h +""") + +libtaglib = taglib.SharedLibrary ('taglib', taglib_files) + +# +# the header structure of this library is not very convenient +# if you don't want to install the library. headers are distributed +# all over the place, making a simple -Ipath flag for the compiler +# rather difficult. This hack creates a directory and copies +# the headers into it, allowing us to use -I#libs/taglib/headers +# + +def headercopy(env, target, source): + if os.access (str(target[0]), os.X_OK) != True: + os.makedirs (str(target[0])) + for file in source : + copy (str(file), str(target[0])) + +header_dir = taglib.Command ('#libs/taglib/headers/taglib', headers, headercopy) + +config_h = taglib.Command('config.h', ['config.h.in'], 'cd libs/taglib && ./configure && cd -', ENV=os.environ) + +Default([config_h,header_dir,libtaglib]) + +env.Alias('install', env.Install(os.path.join(install_prefix, env['LIBDIR'], 'ardour3'), libtaglib)) + +env.Alias('tarball', env.Distribute (env['DISTTREE'], + [ 'NEWS', 'README', 'AUTHORS', 'ChangeLog', + 'configure', + 'SConscript', + 'taglib.pc.in' + 'config.sub', + 'config.guess', + 'install-sh' + ] + + taglib_files + + headers + )) + diff --git a/libs/taglib/acinclude.m4 b/libs/taglib/acinclude.m4 new file mode 100644 index 0000000000..0f0ca180b3 --- /dev/null +++ b/libs/taglib/acinclude.m4 @@ -0,0 +1,11888 @@ +## -*- autoconf -*- + +dnl This file is part of the KDE libraries/packages +dnl Copyright (C) 1997 Janos Farkas (chexum@shadow.banki.hu) +dnl (C) 1997,98,99 Stephan Kulow (coolo@kde.org) + +dnl This file is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Library General Public +dnl License as published by the Free Software Foundation; either +dnl version 2 of the License, or (at your option) any later version. + +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Library General Public License for more details. + +dnl You should have received a copy of the GNU Library General Public License +dnl along with this library; see the file COPYING.LIB. If not, write to +dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +dnl Boston, MA 02110-1301, USA. + +dnl IMPORTANT NOTE: +dnl Please do not modify this file unless you expect your modifications to be +dnl carried into every other module in the repository. +dnl +dnl Single-module modifications are best placed in configure.in for kdelibs +dnl and kdebase or configure.in.in if present. + +# KDE_PATH_X_DIRECT +dnl Internal subroutine of AC_PATH_X. +dnl Set ac_x_includes and/or ac_x_libraries. +AC_DEFUN([KDE_PATH_X_DIRECT], +[ +AC_REQUIRE([KDE_CHECK_LIB64]) + +if test "$ac_x_includes" = NO; then + # Guess where to find include files, by looking for this one X11 .h file. + test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h + + # First, try using that file with no special directory specified. +AC_TRY_CPP([#include <$x_direct_test_include>], +[# We can compile using X headers with no special include directory. +ac_x_includes=], +[# Look for the header file in a standard set of common directories. +# Check X11 before X11Rn because it is often a symlink to the current release. + for ac_dir in \ + /usr/X11/include \ + /usr/X11R6/include \ + /usr/X11R5/include \ + /usr/X11R4/include \ + \ + /usr/include/X11 \ + /usr/include/X11R6 \ + /usr/include/X11R5 \ + /usr/include/X11R4 \ + \ + /usr/local/X11/include \ + /usr/local/X11R6/include \ + /usr/local/X11R5/include \ + /usr/local/X11R4/include \ + \ + /usr/local/include/X11 \ + /usr/local/include/X11R6 \ + /usr/local/include/X11R5 \ + /usr/local/include/X11R4 \ + \ + /usr/X386/include \ + /usr/x386/include \ + /usr/XFree86/include/X11 \ + \ + /usr/include \ + /usr/local/include \ + /usr/unsupported/include \ + /usr/athena/include \ + /usr/local/x11r5/include \ + /usr/lpp/Xamples/include \ + \ + /usr/openwin/include \ + /usr/openwin/share/include \ + ; \ + do + if test -r "$ac_dir/$x_direct_test_include"; then + ac_x_includes=$ac_dir + break + fi + done]) +fi # $ac_x_includes = NO + +if test "$ac_x_libraries" = NO; then + # Check for the libraries. + + test -z "$x_direct_test_library" && x_direct_test_library=Xt + test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc + + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS="$LIBS" + LIBS="-l$x_direct_test_library $LIBS" +AC_TRY_LINK([#include ], [${x_direct_test_function}(1)], +[LIBS="$ac_save_LIBS" +# We can link X programs with no special library path. +ac_x_libraries=], +[LIBS="$ac_save_LIBS" +# First see if replacing the include by lib works. +# Check X11 before X11Rn because it is often a symlink to the current release. +for ac_dir in `echo "$ac_x_includes" | sed s/include/lib${kdelibsuff}/` \ + /usr/X11/lib${kdelibsuff} \ + /usr/X11R6/lib${kdelibsuff} \ + /usr/X11R5/lib${kdelibsuff} \ + /usr/X11R4/lib${kdelibsuff} \ + \ + /usr/lib${kdelibsuff}/X11 \ + /usr/lib${kdelibsuff}/X11R6 \ + /usr/lib${kdelibsuff}/X11R5 \ + /usr/lib${kdelibsuff}/X11R4 \ + \ + /usr/local/X11/lib${kdelibsuff} \ + /usr/local/X11R6/lib${kdelibsuff} \ + /usr/local/X11R5/lib${kdelibsuff} \ + /usr/local/X11R4/lib${kdelibsuff} \ + \ + /usr/local/lib${kdelibsuff}/X11 \ + /usr/local/lib${kdelibsuff}/X11R6 \ + /usr/local/lib${kdelibsuff}/X11R5 \ + /usr/local/lib${kdelibsuff}/X11R4 \ + \ + /usr/X386/lib${kdelibsuff} \ + /usr/x386/lib${kdelibsuff} \ + /usr/XFree86/lib${kdelibsuff}/X11 \ + \ + /usr/lib${kdelibsuff} \ + /usr/local/lib${kdelibsuff} \ + /usr/unsupported/lib${kdelibsuff} \ + /usr/athena/lib${kdelibsuff} \ + /usr/local/x11r5/lib${kdelibsuff} \ + /usr/lpp/Xamples/lib${kdelibsuff} \ + /lib/usr/lib${kdelibsuff}/X11 \ + \ + /usr/openwin/lib${kdelibsuff} \ + /usr/openwin/share/lib${kdelibsuff} \ + ; \ +do +dnl Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl; do + if test -r $ac_dir/lib${x_direct_test_library}.$ac_extension; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done]) +fi # $ac_x_libraries = NO +]) + + +dnl ------------------------------------------------------------------------ +dnl Find a file (or one of more files in a list of dirs) +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_FIND_FILE], +[ +$3=NO +for i in $2; +do + for j in $1; + do + echo "configure: __oline__: $i/$j" >&AC_FD_CC + if test -r "$i/$j"; then + echo "taking that" >&AC_FD_CC + $3=$i + break 2 + fi + done +done +]) + +dnl KDE_FIND_PATH(program-name, variable-name, list-of-dirs, +dnl if-not-found, test-parameter, prepend-path) +dnl +dnl Look for program-name in list-of-dirs+$PATH. +dnl If prepend-path is set, look in $PATH+list-of-dirs instead. +dnl If found, $variable-name is set. If not, if-not-found is evaluated. +dnl test-parameter: if set, the program is executed with this arg, +dnl and only a successful exit code is required. +AC_DEFUN([KDE_FIND_PATH], +[ + AC_MSG_CHECKING([for $1]) + if test -n "$$2"; then + kde_cv_path="$$2"; + else + kde_cache=`echo $1 | sed 'y%./+-%__p_%'` + + AC_CACHE_VAL(kde_cv_path_$kde_cache, + [ + kde_cv_path="NONE" + kde_save_IFS=$IFS + IFS=':' + dirs="" + for dir in $PATH; do + dirs="$dirs $dir" + done + if test -z "$6"; then dnl Append dirs in PATH (default) + dirs="$3 $dirs" + else dnl Prepend dirs in PATH (if 6th arg is set) + dirs="$dirs $3" + fi + IFS=$kde_save_IFS + + for dir in $dirs; do + if test -x "$dir/$1"; then + if test -n "$5" + then + evalstr="$dir/$1 $5 2>&1 " + if eval $evalstr; then + kde_cv_path="$dir/$1" + break + fi + else + kde_cv_path="$dir/$1" + break + fi + fi + done + + eval "kde_cv_path_$kde_cache=$kde_cv_path" + + ]) + + eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\"" + + fi + + if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then + AC_MSG_RESULT(not found) + $4 + else + AC_MSG_RESULT($kde_cv_path) + $2=$kde_cv_path + + fi +]) + +AC_DEFUN([KDE_MOC_ERROR_MESSAGE], +[ + AC_MSG_ERROR([No Qt meta object compiler (moc) found! +Please check whether you installed Qt correctly. +You need to have a running moc binary. +configure tried to run $ac_cv_path_moc and the test didn't +succeed. If configure shouldn't have tried this one, set +the environment variable MOC to the right one before running +configure. +]) +]) + +AC_DEFUN([KDE_UIC_ERROR_MESSAGE], +[ + AC_MSG_WARN([No Qt ui compiler (uic) found! +Please check whether you installed Qt correctly. +You need to have a running uic binary. +configure tried to run $ac_cv_path_uic and the test didn't +succeed. If configure shouldn't have tried this one, set +the environment variable UIC to the right one before running +configure. +]) +]) + + +AC_DEFUN([KDE_CHECK_UIC_FLAG], +[ + AC_MSG_CHECKING([whether uic supports -$1 ]) + kde_cache=`echo $1 | sed 'y% .=/+-%____p_%'` + AC_CACHE_VAL(kde_cv_prog_uic_$kde_cache, + [ + cat >conftest.ui < +EOT + ac_uic_testrun="$UIC_PATH -$1 $2 conftest.ui >/dev/null" + if AC_TRY_EVAL(ac_uic_testrun); then + eval "kde_cv_prog_uic_$kde_cache=yes" + else + eval "kde_cv_prog_uic_$kde_cache=no" + fi + rm -f conftest* + ]) + + if eval "test \"`echo '$kde_cv_prog_uic_'$kde_cache`\" = yes"; then + AC_MSG_RESULT([yes]) + : + $3 + else + AC_MSG_RESULT([no]) + : + $4 + fi +]) + + +dnl ------------------------------------------------------------------------ +dnl Find the meta object compiler and the ui compiler in the PATH, +dnl in $QTDIR/bin, and some more usual places +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_PATH_QT_MOC_UIC], +[ + AC_REQUIRE([KDE_CHECK_PERL]) + qt_bindirs="" + for dir in $kde_qt_dirs; do + qt_bindirs="$qt_bindirs $dir/bin $dir/src/moc" + done + qt_bindirs="$qt_bindirs /usr/bin /usr/X11R6/bin /usr/local/qt/bin" + if test ! "$ac_qt_bindir" = "NO"; then + qt_bindirs="$ac_qt_bindir $qt_bindirs" + fi + + KDE_FIND_PATH(moc, MOC, [$qt_bindirs], [KDE_MOC_ERROR_MESSAGE]) + if test -z "$UIC_NOT_NEEDED"; then + KDE_FIND_PATH(uic, UIC_PATH, [$qt_bindirs], [UIC_PATH=""]) + if test -z "$UIC_PATH" ; then + KDE_UIC_ERROR_MESSAGE + exit 1 + else + UIC=$UIC_PATH + + if test $kde_qtver = 3; then + KDE_CHECK_UIC_FLAG(L,[/nonexistent],ac_uic_supports_libpath=yes,ac_uic_supports_libpath=no) + KDE_CHECK_UIC_FLAG(nounload,,ac_uic_supports_nounload=yes,ac_uic_supports_nounload=no) + + if test x$ac_uic_supports_libpath = xyes; then + UIC="$UIC -L \$(kde_widgetdir)" + fi + if test x$ac_uic_supports_nounload = xyes; then + UIC="$UIC -nounload" + fi + fi + fi + else + UIC="echo uic not available: " + fi + + AC_SUBST(MOC) + AC_SUBST(UIC) + + UIC_TR="i18n" + if test $kde_qtver = 3; then + UIC_TR="tr2i18n" + fi + + AC_SUBST(UIC_TR) +]) + +AC_DEFUN([KDE_1_CHECK_PATHS], +[ + KDE_1_CHECK_PATH_HEADERS + + KDE_TEST_RPATH= + + if test -n "$USE_RPATH"; then + + if test -n "$kde_libraries"; then + KDE_TEST_RPATH="-R $kde_libraries" + fi + + if test -n "$qt_libraries"; then + KDE_TEST_RPATH="$KDE_TEST_RPATH -R $qt_libraries" + fi + + if test -n "$x_libraries"; then + KDE_TEST_RPATH="$KDE_TEST_RPATH -R $x_libraries" + fi + + KDE_TEST_RPATH="$KDE_TEST_RPATH $KDE_EXTRA_RPATH" + fi + +AC_MSG_CHECKING([for KDE libraries installed]) +ac_link='$LIBTOOL_SHELL --silent --mode=link ${CXX-g++} -o conftest $CXXFLAGS $all_includes $CPPFLAGS $LDFLAGS $all_libraries conftest.$ac_ext $LIBS -lkdecore $LIBQT $KDE_TEST_RPATH 1>&5' + +if AC_TRY_EVAL(ac_link) && test -s conftest; then + AC_MSG_RESULT(yes) +else + AC_MSG_ERROR([your system fails at linking a small KDE application! +Check, if your compiler is installed correctly and if you have used the +same compiler to compile Qt and kdelibs as you did use now. +For more details about this problem, look at the end of config.log.]) +fi + +if eval `KDEDIR= ./conftest 2>&5`; then + kde_result=done +else + kde_result=problems +fi + +KDEDIR= ./conftest 2> /dev/null >&5 # make an echo for config.log +kde_have_all_paths=yes + +KDE_SET_PATHS($kde_result) + +]) + +AC_DEFUN([KDE_SET_PATHS], +[ + kde_cv_all_paths="kde_have_all_paths=\"yes\" \ + kde_htmldir=\"$kde_htmldir\" \ + kde_appsdir=\"$kde_appsdir\" \ + kde_icondir=\"$kde_icondir\" \ + kde_sounddir=\"$kde_sounddir\" \ + kde_datadir=\"$kde_datadir\" \ + kde_locale=\"$kde_locale\" \ + kde_cgidir=\"$kde_cgidir\" \ + kde_confdir=\"$kde_confdir\" \ + kde_kcfgdir=\"$kde_kcfgdir\" \ + kde_mimedir=\"$kde_mimedir\" \ + kde_toolbardir=\"$kde_toolbardir\" \ + kde_wallpaperdir=\"$kde_wallpaperdir\" \ + kde_templatesdir=\"$kde_templatesdir\" \ + kde_bindir=\"$kde_bindir\" \ + kde_servicesdir=\"$kde_servicesdir\" \ + kde_servicetypesdir=\"$kde_servicetypesdir\" \ + kde_moduledir=\"$kde_moduledir\" \ + kde_styledir=\"$kde_styledir\" \ + kde_widgetdir=\"$kde_widgetdir\" \ + xdg_appsdir=\"$xdg_appsdir\" \ + xdg_menudir=\"$xdg_menudir\" \ + xdg_directorydir=\"$xdg_directorydir\" \ + kde_result=$1" +]) + +AC_DEFUN([KDE_SET_DEFAULT_PATHS], +[ +if test "$1" = "default"; then + + if test -z "$kde_htmldir"; then + kde_htmldir='\${datadir}/doc/HTML' + fi + if test -z "$kde_appsdir"; then + kde_appsdir='\${datadir}/applnk' + fi + if test -z "$kde_icondir"; then + kde_icondir='\${datadir}/icons' + fi + if test -z "$kde_sounddir"; then + kde_sounddir='\${datadir}/sounds' + fi + if test -z "$kde_datadir"; then + kde_datadir='\${datadir}/apps' + fi + if test -z "$kde_locale"; then + kde_locale='\${datadir}/locale' + fi + if test -z "$kde_cgidir"; then + kde_cgidir='\${exec_prefix}/cgi-bin' + fi + if test -z "$kde_confdir"; then + kde_confdir='\${datadir}/config' + fi + if test -z "$kde_kcfgdir"; then + kde_kcfgdir='\${datadir}/config.kcfg' + fi + if test -z "$kde_mimedir"; then + kde_mimedir='\${datadir}/mimelnk' + fi + if test -z "$kde_toolbardir"; then + kde_toolbardir='\${datadir}/toolbar' + fi + if test -z "$kde_wallpaperdir"; then + kde_wallpaperdir='\${datadir}/wallpapers' + fi + if test -z "$kde_templatesdir"; then + kde_templatesdir='\${datadir}/templates' + fi + if test -z "$kde_bindir"; then + kde_bindir='\${exec_prefix}/bin' + fi + if test -z "$kde_servicesdir"; then + kde_servicesdir='\${datadir}/services' + fi + if test -z "$kde_servicetypesdir"; then + kde_servicetypesdir='\${datadir}/servicetypes' + fi + if test -z "$kde_moduledir"; then + if test "$kde_qtver" = "2"; then + kde_moduledir='\${libdir}/kde2' + else + kde_moduledir='\${libdir}/kde3' + fi + fi + if test -z "$kde_styledir"; then + kde_styledir='\${libdir}/kde3/plugins/styles' + fi + if test -z "$kde_widgetdir"; then + kde_widgetdir='\${libdir}/kde3/plugins/designer' + fi + if test -z "$xdg_appsdir"; then + xdg_appsdir='\${datadir}/applications/kde' + fi + if test -z "$xdg_menudir"; then + xdg_menudir='\${sysconfdir}/xdg/menus' + fi + if test -z "$xdg_directorydir"; then + xdg_directorydir='\${datadir}/desktop-directories' + fi + + KDE_SET_PATHS(defaults) + +else + + if test $kde_qtver = 1; then + AC_MSG_RESULT([compiling]) + KDE_1_CHECK_PATHS + else + AC_MSG_ERROR([path checking not yet supported for KDE 2]) + fi + +fi +]) + +AC_DEFUN([KDE_CHECK_PATHS_FOR_COMPLETENESS], +[ if test -z "$kde_htmldir" || test -z "$kde_appsdir" || + test -z "$kde_icondir" || test -z "$kde_sounddir" || + test -z "$kde_datadir" || test -z "$kde_locale" || + test -z "$kde_cgidir" || test -z "$kde_confdir" || + test -z "$kde_kcfgdir" || + test -z "$kde_mimedir" || test -z "$kde_toolbardir" || + test -z "$kde_wallpaperdir" || test -z "$kde_templatesdir" || + test -z "$kde_bindir" || test -z "$kde_servicesdir" || + test -z "$kde_servicetypesdir" || test -z "$kde_moduledir" || + test -z "$kde_styledir" || test -z "kde_widgetdir" || + test -z "$xdg_appsdir" || test -z "$xdg_menudir" || test -z "$xdg_directorydir" || + test "x$kde_have_all_paths" != "xyes"; then + kde_have_all_paths=no + fi +]) + +AC_DEFUN([KDE_MISSING_PROG_ERROR], +[ + AC_MSG_ERROR([The important program $1 was not found! +Please check whether you installed KDE correctly. +]) +]) + +AC_DEFUN([KDE_MISSING_ARTS_ERROR], +[ + AC_MSG_ERROR([The important program $1 was not found! +Please check whether you installed aRts correctly or use +--without-arts to compile without aRts support (this will remove functionality). +]) +]) + +AC_DEFUN([KDE_SET_DEFAULT_BINDIRS], +[ + kde_default_bindirs="/usr/bin /usr/local/bin /opt/local/bin /usr/X11R6/bin /opt/kde/bin /opt/kde3/bin /usr/kde/bin /usr/local/kde/bin" + test -n "$KDEDIR" && kde_default_bindirs="$KDEDIR/bin $kde_default_bindirs" + if test -n "$KDEDIRS"; then + kde_save_IFS=$IFS + IFS=: + for dir in $KDEDIRS; do + kde_default_bindirs="$dir/bin $kde_default_bindirs " + done + IFS=$kde_save_IFS + fi +]) + +AC_DEFUN([KDE_SUBST_PROGRAMS], +[ + AC_ARG_WITH(arts, + AC_HELP_STRING([--without-arts],[build without aRts [default=no]]), + [build_arts=$withval], + [build_arts=yes] + ) + AM_CONDITIONAL(include_ARTS, test "$build_arts" '!=' "no") + if test "$build_arts" = "no"; then + AC_DEFINE(WITHOUT_ARTS, 1, [Defined if compiling without arts]) + fi + + KDE_SET_DEFAULT_BINDIRS + kde_default_bindirs="$exec_prefix/bin $prefix/bin $kde_libs_prefix/bin $kde_default_bindirs" + KDE_FIND_PATH(dcopidl, DCOPIDL, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidl)]) + KDE_FIND_PATH(dcopidl2cpp, DCOPIDL2CPP, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidl2cpp)]) + if test "$build_arts" '!=' "no"; then + KDE_FIND_PATH(mcopidl, MCOPIDL, [$kde_default_bindirs], [KDE_MISSING_ARTS_ERROR(mcopidl)]) + KDE_FIND_PATH(artsc-config, ARTSCCONFIG, [$kde_default_bindirs], [KDE_MISSING_ARTS_ERROR(artsc-config)]) + fi + KDE_FIND_PATH(meinproc, MEINPROC, [$kde_default_bindirs]) + + kde32ornewer=1 + kde33ornewer=1 + if test -n "$kde_qtver" && test "$kde_qtver" -lt 3; then + kde32ornewer= + kde33ornewer= + else + if test "$kde_qtver" = "3"; then + if test "$kde_qtsubver" -le 1; then + kde32ornewer= + fi + if test "$kde_qtsubver" -le 2; then + kde33ornewer= + fi + if test "$KDECONFIG" != "compiled"; then + if test `$KDECONFIG --version | grep KDE | sed 's/KDE: \(...\).*/\1/'` = 3.2; then + kde33ornewer= + fi + fi + fi + fi + + if test -n "$kde32ornewer"; then + KDE_FIND_PATH(kconfig_compiler, KCONFIG_COMPILER, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(kconfig_compiler)]) + KDE_FIND_PATH(dcopidlng, DCOPIDLNG, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidlng)]) + fi + if test -n "$kde33ornewer"; then + KDE_FIND_PATH(makekdewidgets, MAKEKDEWIDGETS, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(makekdewidgets)]) + AC_SUBST(MAKEKDEWIDGETS) + fi + KDE_FIND_PATH(xmllint, XMLLINT, [${prefix}/bin ${exec_prefix}/bin], [XMLLINT=""]) + + if test -n "$MEINPROC" -a "$MEINPROC" != "compiled"; then + kde_sharedirs="/usr/share/kde /usr/local/share /usr/share /opt/kde3/share /opt/kde/share $prefix/share" + test -n "$KDEDIR" && kde_sharedirs="$KDEDIR/share $kde_sharedirs" + AC_FIND_FILE(apps/ksgmltools2/customization/kde-chunk.xsl, $kde_sharedirs, KDE_XSL_STYLESHEET) + if test "$KDE_XSL_STYLESHEET" = "NO"; then + KDE_XSL_STYLESHEET="" + else + KDE_XSL_STYLESHEET="$KDE_XSL_STYLESHEET/apps/ksgmltools2/customization/kde-chunk.xsl" + fi + fi + + DCOP_DEPENDENCIES='$(DCOPIDL)' + if test -n "$kde32ornewer"; then + KCFG_DEPENDENCIES='$(KCONFIG_COMPILER)' + DCOP_DEPENDENCIES='$(DCOPIDL) $(DCOPIDLNG)' + AC_SUBST(KCONFIG_COMPILER) + AC_SUBST(KCFG_DEPENDENCIES) + AC_SUBST(DCOPIDLNG) + fi + AC_SUBST(DCOPIDL) + AC_SUBST(DCOPIDL2CPP) + AC_SUBST(DCOP_DEPENDENCIES) + AC_SUBST(MCOPIDL) + AC_SUBST(ARTSCCONFIG) + AC_SUBST(MEINPROC) + AC_SUBST(KDE_XSL_STYLESHEET) + AC_SUBST(XMLLINT) +])dnl + +AC_DEFUN([AC_CREATE_KFSSTND], +[ +AC_REQUIRE([AC_CHECK_RPATH]) + +AC_MSG_CHECKING([for KDE paths]) +kde_result="" +kde_cached_paths=yes +AC_CACHE_VAL(kde_cv_all_paths, +[ + KDE_SET_DEFAULT_PATHS($1) + kde_cached_paths=no +]) +eval "$kde_cv_all_paths" +KDE_CHECK_PATHS_FOR_COMPLETENESS +if test "$kde_have_all_paths" = "no" && test "$kde_cached_paths" = "yes"; then + # wrong values were cached, may be, we can set better ones + kde_result= + kde_htmldir= kde_appsdir= kde_icondir= kde_sounddir= + kde_datadir= kde_locale= kde_cgidir= kde_confdir= kde_kcfgdir= + kde_mimedir= kde_toolbardir= kde_wallpaperdir= kde_templatesdir= + kde_bindir= kde_servicesdir= kde_servicetypesdir= kde_moduledir= + kde_have_all_paths= + kde_styledir= + kde_widgetdir= + xdg_appsdir = xdg_menudir= xdg_directorydir= + KDE_SET_DEFAULT_PATHS($1) + eval "$kde_cv_all_paths" + KDE_CHECK_PATHS_FOR_COMPLETENESS + kde_result="$kde_result (cache overridden)" +fi +if test "$kde_have_all_paths" = "no"; then + AC_MSG_ERROR([configure could not run a little KDE program to test the environment. +Since it had compiled and linked before, it must be a strange problem on your system. +Look at config.log for details. If you are not able to fix this, look at +http://www.kde.org/faq/installation.html or any www.kde.org mirror. +(If you're using an egcs version on Linux, you may update binutils!) +]) +else + rm -f conftest* + AC_MSG_RESULT($kde_result) +fi + +bindir=$kde_bindir + +KDE_SUBST_PROGRAMS + +]) + +AC_DEFUN([AC_SUBST_KFSSTND], +[ +AC_SUBST(kde_htmldir) +AC_SUBST(kde_appsdir) +AC_SUBST(kde_icondir) +AC_SUBST(kde_sounddir) +AC_SUBST(kde_datadir) +AC_SUBST(kde_locale) +AC_SUBST(kde_confdir) +AC_SUBST(kde_kcfgdir) +AC_SUBST(kde_mimedir) +AC_SUBST(kde_wallpaperdir) +AC_SUBST(kde_bindir) +dnl X Desktop Group standards +AC_SUBST(xdg_appsdir) +AC_SUBST(xdg_menudir) +AC_SUBST(xdg_directorydir) +dnl for KDE 2 +AC_SUBST(kde_templatesdir) +AC_SUBST(kde_servicesdir) +AC_SUBST(kde_servicetypesdir) +AC_SUBST(kde_moduledir) +AC_SUBST(kdeinitdir, '$(kde_moduledir)') +AC_SUBST(kde_styledir) +AC_SUBST(kde_widgetdir) +if test "$kde_qtver" = 1; then + kde_minidir="$kde_icondir/mini" +else +# for KDE 1 - this breaks KDE2 apps using minidir, but +# that's the plan ;-/ + kde_minidir="/dev/null" +fi +dnl AC_SUBST(kde_minidir) +dnl AC_SUBST(kde_cgidir) +dnl AC_SUBST(kde_toolbardir) +]) + +AC_DEFUN([KDE_MISC_TESTS], +[ + dnl Checks for libraries. + AC_CHECK_LIB(util, main, [LIBUTIL="-lutil"]) dnl for *BSD + AC_SUBST(LIBUTIL) + AC_CHECK_LIB(compat, main, [LIBCOMPAT="-lcompat"]) dnl for *BSD + AC_SUBST(LIBCOMPAT) + kde_have_crypt= + AC_CHECK_LIB(crypt, crypt, [LIBCRYPT="-lcrypt"; kde_have_crypt=yes], + AC_CHECK_LIB(c, crypt, [kde_have_crypt=yes], [ + AC_MSG_WARN([you have no crypt in either libcrypt or libc. +You should install libcrypt from another source or configure with PAM +support]) + kde_have_crypt=no + ])) + AC_SUBST(LIBCRYPT) + if test $kde_have_crypt = yes; then + AC_DEFINE_UNQUOTED(HAVE_CRYPT, 1, [Defines if your system has the crypt function]) + fi + AC_CHECK_SOCKLEN_T + AC_CHECK_LIB(dnet, dnet_ntoa, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"]) + if test $ac_cv_lib_dnet_dnet_ntoa = no; then + AC_CHECK_LIB(dnet_stub, dnet_ntoa, + [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"]) + fi + AC_CHECK_FUNC(inet_ntoa) + if test $ac_cv_func_inet_ntoa = no; then + AC_CHECK_LIB(nsl, inet_ntoa, X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl") + fi + AC_CHECK_FUNC(connect) + if test $ac_cv_func_connect = no; then + AC_CHECK_LIB(socket, connect, X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS", , + $X_EXTRA_LIBS) + fi + + AC_CHECK_FUNC(remove) + if test $ac_cv_func_remove = no; then + AC_CHECK_LIB(posix, remove, X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix") + fi + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. + AC_CHECK_FUNC(shmat, , + AC_CHECK_LIB(ipc, shmat, X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc")) + + # more headers that need to be explicitly included on darwin + AC_CHECK_HEADERS(sys/types.h stdint.h) + + # sys/bitypes.h is needed for uint32_t and friends on Tru64 + AC_CHECK_HEADERS(sys/bitypes.h) + + # darwin requires a poll emulation library + AC_CHECK_LIB(poll, poll, LIB_POLL="-lpoll") + + # for some image handling on Mac OS X + AC_CHECK_HEADERS(Carbon/Carbon.h) + + # CoreAudio framework + AC_CHECK_HEADER(CoreAudio/CoreAudio.h, [ + AC_DEFINE(HAVE_COREAUDIO, 1, [Define if you have the CoreAudio API]) + FRAMEWORK_COREAUDIO="-Wl,-framework,CoreAudio" + ]) + + AC_CHECK_RES_INIT + AC_SUBST(LIB_POLL) + AC_SUBST(FRAMEWORK_COREAUDIO) + LIBSOCKET="$X_EXTRA_LIBS" + AC_SUBST(LIBSOCKET) + AC_SUBST(X_EXTRA_LIBS) + AC_CHECK_LIB(ucb, killpg, [LIBUCB="-lucb"]) dnl for Solaris2.4 + AC_SUBST(LIBUCB) + + case $host in dnl this *is* LynxOS specific + *-*-lynxos* ) + AC_MSG_CHECKING([LynxOS header file wrappers]) + [CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__"] + AC_MSG_RESULT(disabled) + AC_CHECK_LIB(bsd, gethostbyname, [LIBSOCKET="-lbsd"]) dnl for LynxOS + ;; + esac + + KDE_CHECK_TYPES + KDE_CHECK_LIBDL + KDE_CHECK_STRLCPY + KDE_CHECK_PIE_SUPPORT + +# darwin needs this to initialize the environment +AC_CHECK_HEADERS(crt_externs.h) +AC_CHECK_FUNC(_NSGetEnviron, [AC_DEFINE(HAVE_NSGETENVIRON, 1, [Define if your system needs _NSGetEnviron to set up the environment])]) + +AH_VERBATIM(_DARWIN_ENVIRON, +[ +#if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H) +# include +# include +# define environ (*_NSGetEnviron()) +#endif +]) + +AH_VERBATIM(_AIX_STRINGS_H_BZERO, +[ +/* + * AIX defines FD_SET in terms of bzero, but fails to include + * that defines bzero. + */ + +#if defined(_AIX) +#include +#endif +]) + +AC_CHECK_FUNCS([vsnprintf snprintf]) + +AH_VERBATIM(_TRU64,[ +/* + * On HP-UX, the declaration of vsnprintf() is needed every time ! + */ + +#if !defined(HAVE_VSNPRINTF) || defined(hpux) +#if __STDC__ +#include +#include +#else +#include +#endif +#ifdef __cplusplus +extern "C" +#endif +int vsnprintf(char *str, size_t n, char const *fmt, va_list ap); +#ifdef __cplusplus +extern "C" +#endif +int snprintf(char *str, size_t n, char const *fmt, ...); +#endif +]) + +]) + +dnl ------------------------------------------------------------------------ +dnl Find the header files and libraries for X-Windows. Extended the +dnl macro AC_PATH_X +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([K_PATH_X], +[ +AC_REQUIRE([KDE_MISC_TESTS])dnl +AC_REQUIRE([KDE_CHECK_LIB64]) + +AC_ARG_ENABLE( + embedded, + AC_HELP_STRING([--enable-embedded],[link to Qt-embedded, don't use X]), + kde_use_qt_emb=$enableval, + kde_use_qt_emb=no +) + +AC_ARG_ENABLE( + qtopia, + AC_HELP_STRING([--enable-qtopia],[link to Qt-embedded, link to the Qtopia Environment]), + kde_use_qt_emb_palm=$enableval, + kde_use_qt_emb_palm=no +) + +AC_ARG_ENABLE( + mac, + AC_HELP_STRING([--enable-mac],[link to Qt/Mac (don't use X)]), + kde_use_qt_mac=$enableval, + kde_use_qt_mac=no +) + +# used to disable x11-specific stuff on special platforms +AM_CONDITIONAL(include_x11, test "$kde_use_qt_emb" = "no" && test "$kde_use_qt_mac" = "no") + +if test "$kde_use_qt_emb" = "no" && test "$kde_use_qt_mac" = "no"; then + +AC_MSG_CHECKING(for X) + +AC_CACHE_VAL(kde_cv_have_x, +[# One or both of the vars are not set, and there is no cached value. +if test "{$x_includes+set}" = set || test "$x_includes" = NONE; then + kde_x_includes=NO +else + kde_x_includes=$x_includes +fi +if test "{$x_libraries+set}" = set || test "$x_libraries" = NONE; then + kde_x_libraries=NO +else + kde_x_libraries=$x_libraries +fi + +# below we use the standard autoconf calls +ac_x_libraries=$kde_x_libraries +ac_x_includes=$kde_x_includes + +KDE_PATH_X_DIRECT +dnl AC_PATH_X_XMKMF picks /usr/lib as the path for the X libraries. +dnl Unfortunately, if compiling with the N32 ABI, this is not the correct +dnl location. The correct location is /usr/lib32 or an undefined value +dnl (the linker is smart enough to pick the correct default library). +dnl Things work just fine if you use just AC_PATH_X_DIRECT. +dnl Solaris has a similar problem. AC_PATH_X_XMKMF forces x_includes to +dnl /usr/openwin/include, which doesn't work. /usr/include does work, so +dnl x_includes should be left alone. +case "$host" in +mips-sgi-irix6*) + ;; +*-*-solaris*) + ;; +*) + _AC_PATH_X_XMKMF + if test -z "$ac_x_includes"; then + ac_x_includes="." + fi + if test -z "$ac_x_libraries"; then + ac_x_libraries="/usr/lib${kdelibsuff}" + fi +esac +#from now on we use our own again + +# when the user already gave --x-includes, we ignore +# what the standard autoconf macros told us. +if test "$kde_x_includes" = NO; then + kde_x_includes=$ac_x_includes +fi + +# for --x-libraries too +if test "$kde_x_libraries" = NO; then + kde_x_libraries=$ac_x_libraries +fi + +if test "$kde_x_includes" = NO; then + AC_MSG_ERROR([Can't find X includes. Please check your installation and add the correct paths!]) +fi + +if test "$kde_x_libraries" = NO; then + AC_MSG_ERROR([Can't find X libraries. Please check your installation and add the correct paths!]) +fi + +# Record where we found X for the cache. +kde_cv_have_x="have_x=yes \ + kde_x_includes=$kde_x_includes kde_x_libraries=$kde_x_libraries" +])dnl + +eval "$kde_cv_have_x" + +if test "$have_x" != yes; then + AC_MSG_RESULT($have_x) + no_x=yes +else + AC_MSG_RESULT([libraries $kde_x_libraries, headers $kde_x_includes]) +fi + +if test -z "$kde_x_includes" || test "x$kde_x_includes" = xNONE; then + X_INCLUDES="" + x_includes="."; dnl better than nothing :- + else + x_includes=$kde_x_includes + X_INCLUDES="-I$x_includes" +fi + +if test -z "$kde_x_libraries" || test "x$kde_x_libraries" = xNONE || test "$kde_x_libraries" = "/usr/lib"; then + X_LDFLAGS="" + x_libraries="/usr/lib"; dnl better than nothing :- + else + x_libraries=$kde_x_libraries + X_LDFLAGS="-L$x_libraries" +fi +all_includes="$X_INCLUDES" +all_libraries="$X_LDFLAGS $LDFLAGS_AS_NEEDED $LDFLAGS_NEW_DTAGS" + +# Check for libraries that X11R6 Xt/Xaw programs need. +ac_save_LDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS $X_LDFLAGS" +# SM needs ICE to (dynamically) link under SunOS 4.x (so we have to +# check for ICE first), but we must link in the order -lSM -lICE or +# we get undefined symbols. So assume we have SM if we have ICE. +# These have to be linked with before -lX11, unlike the other +# libraries we check for below, so use a different variable. +# --interran@uluru.Stanford.EDU, kb@cs.umb.edu. +AC_CHECK_LIB(ICE, IceConnectionNumber, + [LIBSM="-lSM -lICE"], , $X_EXTRA_LIBS) +LDFLAGS="$ac_save_LDFLAGS" + +LIB_X11='-lX11 $(LIBSOCKET)' + +AC_MSG_CHECKING(for libXext) +AC_CACHE_VAL(kde_cv_have_libXext, +[ +kde_ldflags_safe="$LDFLAGS" +kde_libs_safe="$LIBS" + +LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS" +LIBS="-lXext -lX11 $LIBSOCKET" + +AC_TRY_LINK([ +#include +#ifdef STDC_HEADERS +# include +#endif +], +[ +printf("hello Xext\n"); +], +kde_cv_have_libXext=yes, +kde_cv_have_libXext=no +) + +LDFLAGS=$kde_ldflags_safe +LIBS=$kde_libs_safe +]) + +AC_MSG_RESULT($kde_cv_have_libXext) + +if test "$kde_cv_have_libXext" = "no"; then + AC_MSG_ERROR([We need a working libXext to proceed. Since configure +can't find it itself, we stop here assuming that make wouldn't find +them either.]) +fi + +LIB_XEXT="-lXext" +QTE_NORTTI="" + +elif test "$kde_use_qt_emb" = "yes"; then + dnl We're using QT Embedded + CPPFLAGS=-DQWS + CXXFLAGS="$CXXFLAGS -fno-rtti" + QTE_NORTTI="-fno-rtti -DQWS" + X_PRE_LIBS="" + LIB_X11="" + LIB_XEXT="" + LIB_XRENDER="" + LIBSM="" + X_INCLUDES="" + X_LDFLAGS="" + x_includes="" + x_libraries="" +elif test "$kde_use_qt_mac" = "yes"; then + dnl We're using QT/Mac (I use QT_MAC so that qglobal.h doesn't *have* to + dnl be included to get the information) --Sam + CXXFLAGS="$CXXFLAGS -DQT_MAC -no-cpp-precomp" + CFLAGS="$CFLAGS -DQT_MAC -no-cpp-precomp" + X_PRE_LIBS="" + LIB_X11="" + LIB_XEXT="" + LIB_XRENDER="" + LIBSM="" + X_INCLUDES="" + X_LDFLAGS="" + x_includes="" + x_libraries="" +fi +AC_SUBST(X_PRE_LIBS) +AC_SUBST(LIB_X11) +AC_SUBST(LIB_XRENDER) +AC_SUBST(LIBSM) +AC_SUBST(X_INCLUDES) +AC_SUBST(X_LDFLAGS) +AC_SUBST(x_includes) +AC_SUBST(x_libraries) +AC_SUBST(QTE_NORTTI) +AC_SUBST(LIB_XEXT) + +]) + +AC_DEFUN([KDE_PRINT_QT_PROGRAM], +[ +AC_REQUIRE([KDE_USE_QT]) +cat > conftest.$ac_ext < +#include +EOF +if test "$kde_qtver" = "2"; then +cat >> conftest.$ac_ext < +#include +#include +EOF + +if test $kde_qtsubver -gt 0; then +cat >> conftest.$ac_ext <> conftest.$ac_ext < +#include +#include +EOF +fi + +echo "#if ! ($kde_qt_verstring)" >> conftest.$ac_ext +cat >> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <&AC_FD_CC + cat conftest.$ac_ext >&AC_FD_CC +fi + +rm -f conftest* +CXXFLAGS="$ac_cxxflags_safe" +LDFLAGS="$ac_ldflags_safe" +LIBS="$ac_libs_safe" + +LD_LIBRARY_PATH="$ac_LD_LIBRARY_PATH_safe" +export LD_LIBRARY_PATH +LIBRARY_PATH="$ac_LIBRARY_PATH" +export LIBRARY_PATH +AC_LANG_RESTORE +]) + +if test "$kde_cv_qt_direct" = "yes"; then + AC_MSG_RESULT(yes) + $1 +else + AC_MSG_RESULT(no) + $2 +fi +]) + +dnl ------------------------------------------------------------------------ +dnl Try to find the Qt headers and libraries. +dnl $(QT_LDFLAGS) will be -Lqtliblocation (if needed) +dnl and $(QT_INCLUDES) will be -Iqthdrlocation (if needed) +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_PATH_QT_1_3], +[ +AC_REQUIRE([K_PATH_X]) +AC_REQUIRE([KDE_USE_QT]) +AC_REQUIRE([KDE_CHECK_LIB64]) + +dnl ------------------------------------------------------------------------ +dnl Add configure flag to enable linking to MT version of Qt library. +dnl ------------------------------------------------------------------------ + +AC_ARG_ENABLE( + mt, + AC_HELP_STRING([--disable-mt],[link to non-threaded Qt (deprecated)]), + kde_use_qt_mt=$enableval, + [ + if test $kde_qtver = 3; then + kde_use_qt_mt=yes + else + kde_use_qt_mt=no + fi + ] +) + +USING_QT_MT="" + +dnl ------------------------------------------------------------------------ +dnl If we not get --disable-qt-mt then adjust some vars for the host. +dnl ------------------------------------------------------------------------ + +KDE_MT_LDFLAGS= +KDE_MT_LIBS= +if test "x$kde_use_qt_mt" = "xyes"; then + KDE_CHECK_THREADING + if test "x$kde_use_threading" = "xyes"; then + CPPFLAGS="$USE_THREADS -DQT_THREAD_SUPPORT $CPPFLAGS" + KDE_MT_LDFLAGS="$USE_THREADS" + KDE_MT_LIBS="$LIBPTHREAD" + else + kde_use_qt_mt=no + fi +fi +AC_SUBST(KDE_MT_LDFLAGS) +AC_SUBST(KDE_MT_LIBS) + +kde_qt_was_given=yes + +dnl ------------------------------------------------------------------------ +dnl If we haven't been told how to link to Qt, we work it out for ourselves. +dnl ------------------------------------------------------------------------ +if test -z "$LIBQT_GLOB"; then + if test "x$kde_use_qt_emb" = "xyes"; then + LIBQT_GLOB="libqte.*" + else + LIBQT_GLOB="libqt.*" + fi +fi + +dnl ------------------------------------------------------------ +dnl If we got --enable-embedded then adjust the Qt library name. +dnl ------------------------------------------------------------ +if test "x$kde_use_qt_emb" = "xyes"; then + qtlib="qte" +else + qtlib="qt" +fi + +kde_int_qt="-l$qtlib" + +if test -z "$LIBQPE"; then +dnl ------------------------------------------------------------ +dnl If we got --enable-palmtop then add -lqpe to the link line +dnl ------------------------------------------------------------ + if test "x$kde_use_qt_emb" = "xyes"; then + if test "x$kde_use_qt_emb_palm" = "xyes"; then + LIB_QPE="-lqpe" + else + LIB_QPE="" + fi + else + LIB_QPE="" + fi +fi + +dnl ------------------------------------------------------------------------ +dnl If we got --enable-qt-mt then adjust the Qt library name for the host. +dnl ------------------------------------------------------------------------ + +if test "x$kde_use_qt_mt" = "xyes"; then + LIBQT="-l$qtlib-mt" + kde_int_qt="-l$qtlib-mt" + LIBQT_GLOB="lib$qtlib-mt.*" + USING_QT_MT="using -mt" +else + LIBQT="-l$qtlib" +fi + +if test $kde_qtver != 1; then + + AC_REQUIRE([AC_FIND_PNG]) + AC_REQUIRE([AC_FIND_JPEG]) + LIBQT="$LIBQT $LIBPNG $LIBJPEG" +fi + +if test $kde_qtver = 3; then + AC_REQUIRE([KDE_CHECK_LIBDL]) + LIBQT="$LIBQT $LIBDL" +fi + +AC_MSG_CHECKING([for Qt]) + +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIBQT="$LIBQT $X_PRE_LIBS -lXext -lX11 $LIBSM $LIBSOCKET" +fi +ac_qt_includes=NO ac_qt_libraries=NO ac_qt_bindir=NO +qt_libraries="" +qt_includes="" +AC_ARG_WITH(qt-dir, + AC_HELP_STRING([--with-qt-dir=DIR],[where the root of Qt is installed ]), + [ ac_qt_includes="$withval"/include + ac_qt_libraries="$withval"/lib${kdelibsuff} + ac_qt_bindir="$withval"/bin + ]) + +AC_ARG_WITH(qt-includes, + AC_HELP_STRING([--with-qt-includes=DIR],[where the Qt includes are. ]), + [ + ac_qt_includes="$withval" + ]) + +kde_qt_libs_given=no + +AC_ARG_WITH(qt-libraries, + AC_HELP_STRING([--with-qt-libraries=DIR],[where the Qt library is installed.]), + [ ac_qt_libraries="$withval" + kde_qt_libs_given=yes + ]) + +AC_CACHE_VAL(ac_cv_have_qt, +[#try to guess Qt locations + +qt_incdirs="" +for dir in $kde_qt_dirs; do + qt_incdirs="$qt_incdirs $dir/include $dir" +done +if test -z "$PKG_CONFIG"; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) +fi +if test "$PKG_CONFIG" != "no" ; then + if $PKG_CONFIG --exists qt-mt ; then + qt_incdirs="$qt_incdirs `$PKG_CONFIG --variable=includedir qt-mt`" + fi +fi +qt_incdirs="$QTINC $qt_incdirs /usr/local/qt/include /usr/include/qt /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/X11R6/include/qt2 /usr/include/qt3 $x_includes" +if test ! "$ac_qt_includes" = "NO"; then + qt_incdirs="$ac_qt_includes $qt_incdirs" +fi + +if test "$kde_qtver" != "1"; then + kde_qt_header=qstyle.h +else + kde_qt_header=qglobal.h +fi + +AC_FIND_FILE($kde_qt_header, $qt_incdirs, qt_incdir) +ac_qt_includes="$qt_incdir" + +qt_libdirs="" +for dir in $kde_qt_dirs; do + qt_libdirs="$qt_libdirs $dir/lib${kdelibsuff} $dir/lib $dir" +done +if test -z "$PKG_CONFIG"; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) +fi +if test "$PKG_CONFIG" != "no" ; then + if $PKG_CONFIG --exists qt-mt ; then + qt_libdirs="$qt_incdirs `$PKG_CONFIG --variable=libdir qt-mt`" + fi +fi +qt_libdirs="$QTLIB $qt_libdirs /usr/X11R6/lib /usr/lib /usr/local/qt/lib $x_libraries" +if test ! "$ac_qt_libraries" = "NO"; then + qt_libdir=$ac_qt_libraries +else + qt_libdirs="$ac_qt_libraries $qt_libdirs" + # if the Qt was given, the chance is too big that libqt.* doesn't exist + qt_libdir=NONE + for dir in $qt_libdirs; do + try="ls -1 $dir/${LIBQT_GLOB}" + if test -n "`$try 2> /dev/null`"; then qt_libdir=$dir; break; else echo "tried $dir" >&AC_FD_CC ; fi + done +fi +for a in $qt_libdir/lib`echo ${kde_int_qt} | sed 's,^-l,,'`_incremental.*; do + if test -e "$a"; then + LIBQT="$LIBQT ${kde_int_qt}_incremental" + break + fi +done + +ac_qt_libraries="$qt_libdir" + +AC_LANG_SAVE +AC_LANG_CPLUSPLUS + +ac_cxxflags_safe="$CXXFLAGS" +ac_ldflags_safe="$LDFLAGS" +ac_libs_safe="$LIBS" + +CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes" +LDFLAGS="$LDFLAGS -L$qt_libdir $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS" +LIBS="$LIBS $LIBQT $KDE_MT_LIBS" + +KDE_PRINT_QT_PROGRAM + +if AC_TRY_EVAL(ac_link) && test -s conftest; then + rm -f conftest* +else + echo "configure: failed program was:" >&AC_FD_CC + cat conftest.$ac_ext >&AC_FD_CC + ac_qt_libraries="NO" +fi +rm -f conftest* +CXXFLAGS="$ac_cxxflags_safe" +LDFLAGS="$ac_ldflags_safe" +LIBS="$ac_libs_safe" + +AC_LANG_RESTORE +if test "$ac_qt_includes" = NO || test "$ac_qt_libraries" = NO; then + ac_cv_have_qt="have_qt=no" + ac_qt_notfound="" + missing_qt_mt="" + if test "$ac_qt_includes" = NO; then + if test "$ac_qt_libraries" = NO; then + ac_qt_notfound="(headers and libraries)"; + else + ac_qt_notfound="(headers)"; + fi + else + if test "x$kde_use_qt_mt" = "xyes"; then + missing_qt_mt=" +Make sure that you have compiled Qt with thread support!" + ac_qt_notfound="(library $qtlib-mt)"; + else + ac_qt_notfound="(library $qtlib)"; + fi + fi + + AC_MSG_ERROR([Qt ($kde_qt_minversion) $ac_qt_notfound not found. Please check your installation! +For more details about this problem, look at the end of config.log.$missing_qt_mt]) +else + have_qt="yes" +fi +]) + +eval "$ac_cv_have_qt" + +if test "$have_qt" != yes; then + AC_MSG_RESULT([$have_qt]); +else + ac_cv_have_qt="have_qt=yes \ + ac_qt_includes=$ac_qt_includes ac_qt_libraries=$ac_qt_libraries" + AC_MSG_RESULT([libraries $ac_qt_libraries, headers $ac_qt_includes $USING_QT_MT]) + + qt_libraries="$ac_qt_libraries" + qt_includes="$ac_qt_includes" +fi + +if test ! "$kde_qt_libs_given" = "yes" && test ! "$kde_qtver" = 3; then + KDE_CHECK_QT_DIRECT(qt_libraries= ,[]) +fi + +AC_SUBST(qt_libraries) +AC_SUBST(qt_includes) + +if test "$qt_includes" = "$x_includes" || test -z "$qt_includes"; then + QT_INCLUDES="" +else + QT_INCLUDES="-I$qt_includes" + all_includes="$QT_INCLUDES $all_includes" +fi + +if test "$qt_libraries" = "$x_libraries" || test -z "$qt_libraries"; then + QT_LDFLAGS="" +else + QT_LDFLAGS="-L$qt_libraries" + all_libraries="$QT_LDFLAGS $all_libraries" +fi +test -z "$KDE_MT_LDFLAGS" || all_libraries="$all_libraries $KDE_MT_LDFLAGS" + +AC_SUBST(QT_INCLUDES) +AC_SUBST(QT_LDFLAGS) +AC_PATH_QT_MOC_UIC + +KDE_CHECK_QT_JPEG + +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBZ) $(LIBPNG) -lXext $(LIB_X11) $(LIBSM)' +else +LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBZ) $(LIBPNG)' +fi +test -z "$KDE_MT_LIBS" || LIB_QT="$LIB_QT $KDE_MT_LIBS" +for a in $qt_libdir/lib`echo ${kde_int_qt} | sed 's,^-l,,'`_incremental.*; do + if test -e "$a"; then + LIB_QT="$LIB_QT ${kde_int_qt}_incremental" + break + fi +done + +AC_SUBST(LIB_QT) +AC_SUBST(LIB_QPE) + +AC_SUBST(kde_qtver) +]) + +AC_DEFUN([AC_PATH_QT], +[ +AC_PATH_QT_1_3 +]) + +AC_DEFUN([KDE_CHECK_UIC_PLUGINS], +[ +AC_REQUIRE([AC_PATH_QT_MOC_UIC]) + +if test x$ac_uic_supports_libpath = xyes; then + +AC_MSG_CHECKING([if UIC has KDE plugins available]) +AC_CACHE_VAL(kde_cv_uic_plugins, +[ +cat > actest.ui << EOF + +NewConnectionDialog + + + + testInput + + + + +EOF + + + +kde_cv_uic_plugins=no +kde_line="$UIC_PATH -L $kde_widgetdir" +if test x$ac_uic_supports_nounload = xyes; then + kde_line="$kde_line -nounload" +fi +kde_line="$kde_line -impl actest.h actest.ui > actest.cpp" +if AC_TRY_EVAL(kde_line); then + # if you're trying to debug this check and think it's incorrect, + # better check your installation. The check _is_ correct - your + # installation is not. + if test -f actest.cpp && grep klineedit actest.cpp > /dev/null; then + kde_cv_uic_plugins=yes + fi +fi +rm -f actest.ui actest.cpp +]) + +AC_MSG_RESULT([$kde_cv_uic_plugins]) +if test "$kde_cv_uic_plugins" != yes; then + AC_MSG_ERROR([ +you need to install kdelibs first. + +If you did install kdelibs, then the Qt version that is picked up by +this configure is not the same version you used to compile kdelibs. +The Qt Plugin installed by kdelibs is *ONLY* loadable if it is the +_same Qt version_, compiled with the _same compiler_ and the same Qt +configuration settings. +]) +fi +fi +]) + +AC_DEFUN([KDE_CHECK_FINAL], +[ + AC_ARG_ENABLE(final, + AC_HELP_STRING([--enable-final], + [build size optimized apps (experimental - needs lots of memory)]), + kde_use_final=$enableval, kde_use_final=no) + + if test "x$kde_use_final" = "xyes"; then + KDE_USE_FINAL_TRUE="" + KDE_USE_FINAL_FALSE="#" + else + KDE_USE_FINAL_TRUE="#" + KDE_USE_FINAL_FALSE="" + fi + AC_SUBST(KDE_USE_FINAL_TRUE) + AC_SUBST(KDE_USE_FINAL_FALSE) +]) + +AC_DEFUN([KDE_CHECK_CLOSURE], +[ + AC_ARG_ENABLE(closure, + AC_HELP_STRING([--enable-closure],[delay template instantiation]), + kde_use_closure=$enableval, kde_use_closure=no) + + KDE_NO_UNDEFINED="" + if test "x$kde_use_closure" = "xyes"; then + KDE_USE_CLOSURE_TRUE="" + KDE_USE_CLOSURE_FALSE="#" +# CXXFLAGS="$CXXFLAGS $REPO" + else + KDE_USE_CLOSURE_TRUE="#" + KDE_USE_CLOSURE_FALSE="" + KDE_NO_UNDEFINED="" + case $host in + *-*-linux-gnu) + KDE_CHECK_COMPILER_FLAG([Wl,--no-undefined], + [KDE_CHECK_COMPILER_FLAG([Wl,--allow-shlib-undefined], + [KDE_NO_UNDEFINED="-Wl,--no-undefined -Wl,--allow-shlib-undefined"], + [KDE_NO_UNDEFINED=""])], + [KDE_NO_UNDEFINED=""]) + ;; + esac + fi + AC_SUBST(KDE_USE_CLOSURE_TRUE) + AC_SUBST(KDE_USE_CLOSURE_FALSE) + AC_SUBST(KDE_NO_UNDEFINED) +]) + +dnl Check if the linker supports --enable-new-dtags and --as-needed +AC_DEFUN([KDE_CHECK_NEW_LDFLAGS], +[ + AC_ARG_ENABLE(new_ldflags, + AC_HELP_STRING([--enable-new-ldflags], + [enable the new linker flags]), + kde_use_new_ldflags=$enableval, + kde_use_new_ldflags=no) + + LDFLAGS_AS_NEEDED="" + LDFLAGS_NEW_DTAGS="" + if test "x$kde_use_new_ldflags" = "xyes"; then + LDFLAGS_NEW_DTAGS="" + KDE_CHECK_COMPILER_FLAG([Wl,--enable-new-dtags], + [LDFLAGS_NEW_DTAGS="-Wl,--enable-new-dtags"],) + + KDE_CHECK_COMPILER_FLAG([Wl,--as-needed], + [LDFLAGS_AS_NEEDED="-Wl,--as-needed"],) + fi + AC_SUBST(LDFLAGS_AS_NEEDED) + AC_SUBST(LDFLAGS_NEW_DTAGS) +]) + +AC_DEFUN([KDE_CHECK_NMCHECK], +[ + AC_ARG_ENABLE(nmcheck,AC_HELP_STRING([--enable-nmcheck],[enable automatic namespace cleanness check]), + kde_use_nmcheck=$enableval, kde_use_nmcheck=no) + + if test "$kde_use_nmcheck" = "yes"; then + KDE_USE_NMCHECK_TRUE="" + KDE_USE_NMCHECK_FALSE="#" + else + KDE_USE_NMCHECK_TRUE="#" + KDE_USE_NMCHECK_FALSE="" + fi + AC_SUBST(KDE_USE_NMCHECK_TRUE) + AC_SUBST(KDE_USE_NMCHECK_FALSE) +]) + +AC_DEFUN([KDE_EXPAND_MAKEVAR], [ +savex=$exec_prefix +test "x$exec_prefix" = xNONE && exec_prefix=$prefix +tmp=$$2 +while $1=`eval echo "$tmp"`; test "x$$1" != "x$tmp"; do tmp=$$1; done +exec_prefix=$savex +]) + +dnl ------------------------------------------------------------------------ +dnl Now, the same with KDE +dnl $(KDE_LDFLAGS) will be the kdeliblocation (if needed) +dnl and $(kde_includes) will be the kdehdrlocation (if needed) +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_BASE_PATH_KDE], +[ +AC_REQUIRE([KDE_CHECK_STL]) +AC_REQUIRE([AC_PATH_QT])dnl +AC_REQUIRE([KDE_CHECK_LIB64]) + +AC_CHECK_RPATH +AC_MSG_CHECKING([for KDE]) + +if test "${prefix}" != NONE; then + kde_includes=${includedir} + KDE_EXPAND_MAKEVAR(ac_kde_includes, includedir) + + kde_libraries=${libdir} + KDE_EXPAND_MAKEVAR(ac_kde_libraries, libdir) + +else + ac_kde_includes= + ac_kde_libraries= + kde_libraries="" + kde_includes="" +fi + +AC_CACHE_VAL(ac_cv_have_kde, +[#try to guess kde locations + +if test "$kde_qtver" = 1; then + kde_check_header="ksock.h" + kde_check_lib="libkdecore.la" +else + kde_check_header="ksharedptr.h" + kde_check_lib="libkio.la" +fi + +if test -z "$1"; then + +kde_incdirs="$kde_libs_prefix/include /usr/lib/kde/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include /opt/kde3/include /opt/kde/include $x_includes $qt_includes" +test -n "$KDEDIR" && kde_incdirs="$KDEDIR/include $KDEDIR/include/kde $KDEDIR $kde_incdirs" +kde_incdirs="$ac_kde_includes $kde_incdirs" +AC_FIND_FILE($kde_check_header, $kde_incdirs, kde_incdir) +ac_kde_includes="$kde_incdir" + +if test -n "$ac_kde_includes" && test ! -r "$ac_kde_includes/$kde_check_header"; then + AC_MSG_ERROR([ +in the prefix, you've chosen, are no KDE headers installed. This will fail. +So, check this please and use another prefix!]) +fi + +kde_libdirs="$kde_libs_prefix/lib${kdelibsuff} /usr/lib/kde/lib${kdelibsuff} /usr/local/kde/lib${kdelibsuff} /usr/kde/lib${kdelibsuff} /usr/lib${kdelibsuff}/kde /usr/lib${kdelibsuff}/kde3 /usr/lib${kdelibsuff} /usr/X11R6/lib${kdelibsuff} /usr/local/lib${kdelibsuff} /opt/kde3/lib${kdelibsuff} /opt/kde/lib${kdelibsuff} /usr/X11R6/kde/lib${kdelibsuff}" +test -n "$KDEDIR" && kde_libdirs="$KDEDIR/lib${kdelibsuff} $KDEDIR $kde_libdirs" +kde_libdirs="$ac_kde_libraries $libdir $kde_libdirs" +AC_FIND_FILE($kde_check_lib, $kde_libdirs, kde_libdir) +ac_kde_libraries="$kde_libdir" + +kde_widgetdir=NO +dnl this might be somewhere else +AC_FIND_FILE("kde3/plugins/designer/kdewidgets.la", $kde_libdirs, kde_widgetdir) + +if test -n "$ac_kde_libraries" && test ! -r "$ac_kde_libraries/$kde_check_lib"; then +AC_MSG_ERROR([ +in the prefix, you've chosen, are no KDE libraries installed. This will fail. +So, check this please and use another prefix!]) +fi + +if test -n "$kde_widgetdir" && test ! -r "$kde_widgetdir/kde3/plugins/designer/kdewidgets.la"; then +AC_MSG_ERROR([ +I can't find the designer plugins. These are required and should have been installed +by kdelibs]) +fi + +if test -n "$kde_widgetdir"; then + kde_widgetdir="$kde_widgetdir/kde3/plugins/designer" +fi + + +if test "$ac_kde_includes" = NO || test "$ac_kde_libraries" = NO || test "$kde_widgetdir" = NO; then + ac_cv_have_kde="have_kde=no" +else + ac_cv_have_kde="have_kde=yes \ + ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries" +fi + +else dnl test -z $1, e.g. from kdelibs + + ac_cv_have_kde="have_kde=no" + +fi +])dnl + +eval "$ac_cv_have_kde" + +if test "$have_kde" != "yes"; then + if test "${prefix}" = NONE; then + ac_kde_prefix="$ac_default_prefix" + else + ac_kde_prefix="$prefix" + fi + if test "$exec_prefix" = NONE; then + ac_kde_exec_prefix="$ac_kde_prefix" + AC_MSG_RESULT([will be installed in $ac_kde_prefix]) + else + ac_kde_exec_prefix="$exec_prefix" + AC_MSG_RESULT([will be installed in $ac_kde_prefix and $ac_kde_exec_prefix]) + fi + + kde_libraries="${libdir}" + kde_includes="${includedir}" + +else + ac_cv_have_kde="have_kde=yes \ + ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries" + AC_MSG_RESULT([libraries $ac_kde_libraries, headers $ac_kde_includes]) + + kde_libraries="$ac_kde_libraries" + kde_includes="$ac_kde_includes" +fi +AC_SUBST(kde_libraries) +AC_SUBST(kde_includes) + +if test "$kde_includes" = "$x_includes" || test "$kde_includes" = "$qt_includes" || test "$kde_includes" = "/usr/include"; then + KDE_INCLUDES="" +else + KDE_INCLUDES="-I$kde_includes" + all_includes="$KDE_INCLUDES $all_includes" +fi + +KDE_DEFAULT_CXXFLAGS="-DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION" + +KDE_LDFLAGS="-L$kde_libraries" +if test ! "$kde_libraries" = "$x_libraries" && test ! "$kde_libraries" = "$qt_libraries" ; then + all_libraries="$KDE_LDFLAGS $all_libraries" +fi + +AC_SUBST(KDE_LDFLAGS) +AC_SUBST(KDE_INCLUDES) + +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + +all_libraries="$all_libraries $USER_LDFLAGS" +all_includes="$all_includes $USER_INCLUDES" +AC_SUBST(all_includes) +AC_SUBST(all_libraries) + +if test -z "$1"; then +KDE_CHECK_UIC_PLUGINS +fi + +ac_kde_libraries="$kde_libdir" + +AC_SUBST(AUTODIRS) + + +]) + +AC_DEFUN([KDE_CHECK_EXTRA_LIBS], +[ +AC_MSG_CHECKING(for extra includes) +AC_ARG_WITH(extra-includes,AC_HELP_STRING([--with-extra-includes=DIR],[adds non standard include paths]), + kde_use_extra_includes="$withval", + kde_use_extra_includes=NONE +) +kde_extra_includes= +if test -n "$kde_use_extra_includes" && \ + test "$kde_use_extra_includes" != "NONE"; then + + ac_save_ifs=$IFS + IFS=':' + for dir in $kde_use_extra_includes; do + kde_extra_includes="$kde_extra_includes $dir" + USER_INCLUDES="$USER_INCLUDES -I$dir" + done + IFS=$ac_save_ifs + kde_use_extra_includes="added" +else + kde_use_extra_includes="no" +fi +AC_SUBST(USER_INCLUDES) + +AC_MSG_RESULT($kde_use_extra_includes) + +kde_extra_libs= +AC_MSG_CHECKING(for extra libs) +AC_ARG_WITH(extra-libs,AC_HELP_STRING([--with-extra-libs=DIR],[adds non standard library paths]), + kde_use_extra_libs=$withval, + kde_use_extra_libs=NONE +) +if test -n "$kde_use_extra_libs" && \ + test "$kde_use_extra_libs" != "NONE"; then + + ac_save_ifs=$IFS + IFS=':' + for dir in $kde_use_extra_libs; do + kde_extra_libs="$kde_extra_libs $dir" + KDE_EXTRA_RPATH="$KDE_EXTRA_RPATH -R $dir" + USER_LDFLAGS="$USER_LDFLAGS -L$dir" + done + IFS=$ac_save_ifs + kde_use_extra_libs="added" +else + kde_use_extra_libs="no" +fi + +AC_SUBST(USER_LDFLAGS) + +AC_MSG_RESULT($kde_use_extra_libs) + +]) + +AC_DEFUN([KDE_1_CHECK_PATH_HEADERS], +[ + AC_MSG_CHECKING([for KDE headers installed]) + AC_LANG_SAVE + AC_LANG_CPLUSPLUS +cat > conftest.$ac_ext < +#endif +#include +#include "confdefs.h" +#include + +int main() { + printf("kde_htmldir=\\"%s\\"\n", KApplication::kde_htmldir().data()); + printf("kde_appsdir=\\"%s\\"\n", KApplication::kde_appsdir().data()); + printf("kde_icondir=\\"%s\\"\n", KApplication::kde_icondir().data()); + printf("kde_sounddir=\\"%s\\"\n", KApplication::kde_sounddir().data()); + printf("kde_datadir=\\"%s\\"\n", KApplication::kde_datadir().data()); + printf("kde_locale=\\"%s\\"\n", KApplication::kde_localedir().data()); + printf("kde_cgidir=\\"%s\\"\n", KApplication::kde_cgidir().data()); + printf("kde_confdir=\\"%s\\"\n", KApplication::kde_configdir().data()); + printf("kde_mimedir=\\"%s\\"\n", KApplication::kde_mimedir().data()); + printf("kde_toolbardir=\\"%s\\"\n", KApplication::kde_toolbardir().data()); + printf("kde_wallpaperdir=\\"%s\\"\n", + KApplication::kde_wallpaperdir().data()); + printf("kde_bindir=\\"%s\\"\n", KApplication::kde_bindir().data()); + printf("kde_partsdir=\\"%s\\"\n", KApplication::kde_partsdir().data()); + printf("kde_servicesdir=\\"/tmp/dummy\\"\n"); + printf("kde_servicetypesdir=\\"/tmp/dummy\\"\n"); + printf("kde_moduledir=\\"/tmp/dummy\\"\n"); + printf("kde_styledir=\\"/tmp/dummy\\"\n"); + printf("kde_widgetdir=\\"/tmp/dummy\\"\n"); + printf("xdg_appsdir=\\"/tmp/dummy\\"\n"); + printf("xdg_menudir=\\"/tmp/dummy\\"\n"); + printf("xdg_directorydir=\\"/tmp/dummy\\"\n"); + printf("kde_kcfgdir=\\"/tmp/dummy\\"\n"); + return 0; + } +EOF + + ac_save_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$all_includes $CPPFLAGS" + if AC_TRY_EVAL(ac_compile); then + AC_MSG_RESULT(yes) + else + AC_MSG_ERROR([your system is not able to compile a small KDE application! +Check, if you installed the KDE header files correctly. +For more details about this problem, look at the end of config.log.]) + fi + CPPFLAGS=$ac_save_CPPFLAGS + + AC_LANG_RESTORE +]) + +AC_DEFUN([KDE_CHECK_KDEQTADDON], +[ +AC_MSG_CHECKING(for kde-qt-addon) +AC_CACHE_VAL(kde_cv_have_kdeqtaddon, +[ + kde_ldflags_safe="$LDFLAGS" + kde_libs_safe="$LIBS" + kde_cxxflags_safe="$CXXFLAGS" + + LIBS="-lkde-qt-addon $LIBQT $LIBS" + CXXFLAGS="$CXXFLAGS -I$prefix/include -I$prefix/include/kde $all_includes" + LDFLAGS="$LDFLAGS $all_libraries $USER_LDFLAGS" + + AC_TRY_LINK([ + #include + ], + [ + QDomDocument doc; + ], + kde_cv_have_kdeqtaddon=yes, + kde_cv_have_kdeqtaddon=no + ) + + LDFLAGS=$kde_ldflags_safe + LIBS=$kde_libs_safe + CXXFLAGS=$kde_cxxflags_safe +]) + +AC_MSG_RESULT($kde_cv_have_kdeqtaddon) + +if test "$kde_cv_have_kdeqtaddon" = "no"; then + AC_MSG_ERROR([Can't find libkde-qt-addon. You need to install it first. +It is a separate package (and CVS module) named kde-qt-addon.]) +fi +]) + +AC_DEFUN([KDE_CREATE_LIBS_ALIASES], +[ + AC_REQUIRE([KDE_MISC_TESTS]) + AC_REQUIRE([KDE_CHECK_LIBDL]) + AC_REQUIRE([K_PATH_X]) + +if test $kde_qtver = 3; then + case $host in + *cygwin*) lib_kded="-lkdeinit_kded" ;; + *) lib_kded="" ;; + esac + AC_SUBST(LIB_KDED, $lib_kded) + AC_SUBST(LIB_KDECORE, "-lkdecore") + AC_SUBST(LIB_KDEUI, "-lkdeui") + AC_SUBST(LIB_KIO, "-lkio") + AC_SUBST(LIB_KJS, "-lkjs") + AC_SUBST(LIB_SMB, "-lsmb") + AC_SUBST(LIB_KAB, "-lkab") + AC_SUBST(LIB_KABC, "-lkabc") + AC_SUBST(LIB_KHTML, "-lkhtml") + AC_SUBST(LIB_KSPELL, "-lkspell") + AC_SUBST(LIB_KPARTS, "-lkparts") + AC_SUBST(LIB_KDEPRINT, "-lkdeprint") + AC_SUBST(LIB_KUTILS, "-lkutils") + AC_SUBST(LIB_KDEPIM, "-lkdepim") + AC_SUBST(LIB_KIMPROXY, "-lkimproxy") + AC_SUBST(LIB_KNEWSTUFF, "-lknewstuff") + AC_SUBST(LIB_KDNSSD, "-lkdnssd") + AC_SUBST(LIB_KUNITTEST, "-lkunittest") +# these are for backward compatibility + AC_SUBST(LIB_KSYCOCA, "-lkio") + AC_SUBST(LIB_KFILE, "-lkio") +elif test $kde_qtver = 2; then + AC_SUBST(LIB_KDECORE, "-lkdecore") + AC_SUBST(LIB_KDEUI, "-lkdeui") + AC_SUBST(LIB_KIO, "-lkio") + AC_SUBST(LIB_KSYCOCA, "-lksycoca") + AC_SUBST(LIB_SMB, "-lsmb") + AC_SUBST(LIB_KFILE, "-lkfile") + AC_SUBST(LIB_KAB, "-lkab") + AC_SUBST(LIB_KHTML, "-lkhtml") + AC_SUBST(LIB_KSPELL, "-lkspell") + AC_SUBST(LIB_KPARTS, "-lkparts") + AC_SUBST(LIB_KDEPRINT, "-lkdeprint") +else + AC_SUBST(LIB_KDECORE, "-lkdecore -lXext $(LIB_QT)") + AC_SUBST(LIB_KDEUI, "-lkdeui $(LIB_KDECORE)") + AC_SUBST(LIB_KFM, "-lkfm $(LIB_KDECORE)") + AC_SUBST(LIB_KFILE, "-lkfile $(LIB_KFM) $(LIB_KDEUI)") + AC_SUBST(LIB_KAB, "-lkab $(LIB_KIMGIO) $(LIB_KDECORE)") +fi +]) + +AC_DEFUN([AC_PATH_KDE], +[ + AC_BASE_PATH_KDE + AC_ARG_ENABLE(path-check,AC_HELP_STRING([--disable-path-check],[don't try to find out, where to install]), + [ + if test "$enableval" = "no"; + then ac_use_path_checking="default" + else ac_use_path_checking="" + fi + ], + [ + if test "$kde_qtver" = 1; + then ac_use_path_checking="" + else ac_use_path_checking="default" + fi + ] + ) + + AC_CREATE_KFSSTND($ac_use_path_checking) + + AC_SUBST_KFSSTND + KDE_CREATE_LIBS_ALIASES +]) + +dnl KDE_CHECK_FUNC_EXT(, [headers], [sample-use], [C prototype], [autoheader define], [call if found]) +AC_DEFUN([KDE_CHECK_FUNC_EXT], +[ +AC_MSG_CHECKING(for $1) +AC_CACHE_VAL(kde_cv_func_$1, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +save_CXXFLAGS="$CXXFLAGS" +kde_safe_LIBS="$LIBS" +LIBS="$LIBS $X_EXTRA_LIBS" +if test "$GXX" = "yes"; then +CXXFLAGS="$CXXFLAGS -pedantic-errors" +fi +AC_TRY_COMPILE([ +$2 +], +[ +$3 +], +kde_cv_func_$1=yes, +kde_cv_func_$1=no) +CXXFLAGS="$save_CXXFLAGS" +LIBS="$kde_safe_LIBS" +AC_LANG_RESTORE +]) + +AC_MSG_RESULT($kde_cv_func_$1) + +AC_MSG_CHECKING([if $1 needs custom prototype]) +AC_CACHE_VAL(kde_cv_proto_$1, +[ +if test "x$kde_cv_func_$1" = xyes; then + kde_cv_proto_$1=no +else + case "$1" in + setenv|unsetenv|usleep|random|srandom|seteuid|mkstemps|mkstemp|revoke|vsnprintf|strlcpy|strlcat) + kde_cv_proto_$1="yes - in libkdefakes" + ;; + *) + kde_cv_proto_$1=unknown + ;; + esac +fi + +if test "x$kde_cv_proto_$1" = xunknown; then + +AC_LANG_SAVE +AC_LANG_CPLUSPLUS + kde_safe_libs=$LIBS + LIBS="$LIBS $X_EXTRA_LIBS" + AC_TRY_LINK([ +$2 + +extern "C" $4; +], +[ +$3 +], +[ kde_cv_func_$1=yes + kde_cv_proto_$1=yes ], + [kde_cv_proto_$1="$1 unavailable"] +) +LIBS=$kde_safe_libs +AC_LANG_RESTORE +fi +]) +AC_MSG_RESULT($kde_cv_proto_$1) + +if test "x$kde_cv_func_$1" = xyes; then + AC_DEFINE(HAVE_$5, 1, [Define if you have $1]) + $6 +fi +if test "x$kde_cv_proto_$1" = xno; then + AC_DEFINE(HAVE_$5_PROTO, 1, + [Define if you have the $1 prototype]) +fi + +AH_VERBATIM([_HAVE_$5_PROTO], +[ +#if !defined(HAVE_$5_PROTO) +#ifdef __cplusplus +extern "C" { +#endif +$4; +#ifdef __cplusplus +} +#endif +#endif +]) +]) + +AC_DEFUN([AC_CHECK_SETENV], +[ + KDE_CHECK_FUNC_EXT(setenv, [ +#include +], + [setenv("VAR", "VALUE", 1);], + [int setenv (const char *, const char *, int)], + [SETENV]) +]) + +AC_DEFUN([AC_CHECK_UNSETENV], +[ + KDE_CHECK_FUNC_EXT(unsetenv, [ +#include +], + [unsetenv("VAR");], + [void unsetenv (const char *)], + [UNSETENV]) +]) + +AC_DEFUN([AC_CHECK_GETDOMAINNAME], +[ + KDE_CHECK_FUNC_EXT(getdomainname, [ +#include +#include +#include +], + [ +char buffer[200]; +getdomainname(buffer, 200); +], + [#include + int getdomainname (char *, size_t)], + [GETDOMAINNAME]) +]) + +AC_DEFUN([AC_CHECK_GETHOSTNAME], +[ + KDE_CHECK_FUNC_EXT(gethostname, [ +#include +#include +], + [ +char buffer[200]; +gethostname(buffer, 200); +], + [int gethostname (char *, unsigned int)], + [GETHOSTNAME]) +]) + +AC_DEFUN([AC_CHECK_USLEEP], +[ + KDE_CHECK_FUNC_EXT(usleep, [ +#include +], + [ +usleep(200); +], + [int usleep (unsigned int)], + [USLEEP]) +]) + + +AC_DEFUN([AC_CHECK_RANDOM], +[ + KDE_CHECK_FUNC_EXT(random, [ +#include +], + [ +random(); +], + [long int random(void)], + [RANDOM]) + + KDE_CHECK_FUNC_EXT(srandom, [ +#include +], + [ +srandom(27); +], + [void srandom(unsigned int)], + [SRANDOM]) + +]) + +AC_DEFUN([AC_CHECK_INITGROUPS], +[ + KDE_CHECK_FUNC_EXT(initgroups, [ +#include +#include +#include +], + [ +char buffer[200]; +initgroups(buffer, 27); +], + [int initgroups(const char *, gid_t)], + [INITGROUPS]) +]) + +AC_DEFUN([AC_CHECK_MKSTEMPS], +[ + KDE_CHECK_FUNC_EXT(mkstemps, [ +#include +#include +], + [ +mkstemps("/tmp/aaaXXXXXX", 6); +], + [int mkstemps(char *, int)], + [MKSTEMPS]) +]) + +AC_DEFUN([AC_CHECK_MKSTEMP], +[ + KDE_CHECK_FUNC_EXT(mkstemp, [ +#include +#include +], + [ +mkstemp("/tmp/aaaXXXXXX"); +], + [int mkstemp(char *)], + [MKSTEMP]) +]) + +AC_DEFUN([AC_CHECK_MKDTEMP], +[ + KDE_CHECK_FUNC_EXT(mkdtemp, [ +#include +#include +], + [ +mkdtemp("/tmp/aaaXXXXXX"); +], + [char *mkdtemp(char *)], + [MKDTEMP]) +]) + + +AC_DEFUN([AC_CHECK_RES_INIT], +[ + AC_MSG_CHECKING([if res_init needs -lresolv]) + kde_libs_safe="$LIBS" + LIBS="$LIBS $X_EXTRA_LIBS -lresolv" + AC_TRY_LINK( + [ +#include +#include +#include +#include + ], + [ + res_init(); + ], + [ + LIBRESOLV="-lresolv" + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_RES_INIT, 1, [Define if you have the res_init function]) + ], + [ AC_MSG_RESULT(no) ] + ) + LIBS=$kde_libs_safe + AC_SUBST(LIBRESOLV) + + KDE_CHECK_FUNC_EXT(res_init, + [ +#include +#include +#include +#include + ], + [res_init()], + [int res_init(void)], + [RES_INIT]) +]) + +AC_DEFUN([AC_CHECK_STRLCPY], +[ + KDE_CHECK_FUNC_EXT(strlcpy, [ +#include +], +[ char buf[20]; + strlcpy(buf, "KDE function test", sizeof(buf)); +], + [unsigned long strlcpy(char*, const char*, unsigned long)], + [STRLCPY]) +]) + +AC_DEFUN([AC_CHECK_STRLCAT], +[ + KDE_CHECK_FUNC_EXT(strlcat, [ +#include +], +[ char buf[20]; + buf[0]='\0'; + strlcat(buf, "KDE function test", sizeof(buf)); +], + [unsigned long strlcat(char*, const char*, unsigned long)], + [STRLCAT]) +]) + +AC_DEFUN([AC_CHECK_RES_QUERY], +[ + KDE_CHECK_FUNC_EXT(res_query, [ +#include +#include +#include +#include +#include +], +[ +res_query(NULL, 0, 0, NULL, 0); +], + [int res_query(const char *, int, int, unsigned char *, int)], + [RES_QUERY]) +]) + +AC_DEFUN([AC_CHECK_DN_SKIPNAME], +[ + KDE_CHECK_FUNC_EXT(dn_skipname, [ +#include +#include +#include +#include +], +[ +dn_skipname (NULL, NULL); +], + [int dn_skipname (unsigned char *, unsigned char *)], + [DN_SKIPNAME]) +]) + + +AC_DEFUN([AC_FIND_GIF], + [AC_MSG_CHECKING([for giflib]) +AC_CACHE_VAL(ac_cv_lib_gif, +[ac_save_LIBS="$LIBS" +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIBS="$all_libraries -lgif -lX11 $LIBSOCKET" +else +LIBS="$all_libraries -lgif" +fi +AC_TRY_LINK(dnl +[ +#ifdef __cplusplus +extern "C" { +#endif +int GifLastError(void); +#ifdef __cplusplus +} +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +], + [return GifLastError();], + eval "ac_cv_lib_gif=yes", + eval "ac_cv_lib_gif=no") +LIBS="$ac_save_LIBS" +])dnl +if eval "test \"`echo $ac_cv_lib_gif`\" = yes"; then + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(HAVE_LIBGIF, 1, [Define if you have libgif]) +else + AC_MSG_ERROR(You need giflib30. Please install the kdesupport package) +fi +]) + +AC_DEFUN([KDE_FIND_JPEG_HELPER], +[ +AC_MSG_CHECKING([for libjpeg$2]) +AC_CACHE_VAL(ac_cv_lib_jpeg_$1, +[ +ac_save_LIBS="$LIBS" +LIBS="$all_libraries $USER_LDFLAGS -ljpeg$2 -lm" +ac_save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" +AC_TRY_LINK( +[ +#ifdef __cplusplus +extern "C" { +#endif +void jpeg_CreateDecompress(); +#ifdef __cplusplus +} +#endif +], +[jpeg_CreateDecompress();], + eval "ac_cv_lib_jpeg_$1=-ljpeg$2", + eval "ac_cv_lib_jpeg_$1=no") +LIBS="$ac_save_LIBS" +CFLAGS="$ac_save_CFLAGS" +]) + +if eval "test ! \"`echo $ac_cv_lib_jpeg_$1`\" = no"; then + LIBJPEG="$ac_cv_lib_jpeg_$1" + AC_MSG_RESULT($ac_cv_lib_jpeg_$1) +else + AC_MSG_RESULT(no) + $3 +fi + +]) + +AC_DEFUN([AC_FIND_JPEG], +[ +dnl first look for libraries +KDE_FIND_JPEG_HELPER(6b, 6b, + KDE_FIND_JPEG_HELPER(normal, [], + [ + LIBJPEG= + ] + ) +) + +dnl then search the headers (can't use simply AC_TRY_xxx, as jpeglib.h +dnl requires system dependent includes loaded before it) +jpeg_incdirs="$includedir /usr/include /usr/local/include $kde_extra_includes" +AC_FIND_FILE(jpeglib.h, $jpeg_incdirs, jpeg_incdir) +test "x$jpeg_incdir" = xNO && jpeg_incdir= + +dnl if headers _and_ libraries are missing, this is no error, and we +dnl continue with a warning (the user will get no jpeg support in khtml) +dnl if only one is missing, it means a configuration error, but we still +dnl only warn +if test -n "$jpeg_incdir" && test -n "$LIBJPEG" ; then + AC_DEFINE_UNQUOTED(HAVE_LIBJPEG, 1, [Define if you have libjpeg]) +else + if test -n "$jpeg_incdir" || test -n "$LIBJPEG" ; then + AC_MSG_WARN([ +There is an installation error in jpeg support. You seem to have only one +of either the headers _or_ the libraries installed. You may need to either +provide correct --with-extra-... options, or the development package of +libjpeg6b. You can get a source package of libjpeg from http://www.ijg.org/ +Disabling JPEG support. +]) + else + AC_MSG_WARN([libjpeg not found. disable JPEG support.]) + fi + jpeg_incdir= + LIBJPEG= +fi + +AC_SUBST(LIBJPEG) +AH_VERBATIM(_AC_CHECK_JPEG, +[/* + * jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system + * headers and I'm too lazy to write a configure test as long as only + * unixware is related + */ +#ifdef _UNIXWARE +#define HAVE_BOOLEAN +#endif +]) +]) + +AC_DEFUN([KDE_CHECK_QT_JPEG], +[ +if test -n "$LIBJPEG"; then +AC_MSG_CHECKING([if Qt needs $LIBJPEG]) +AC_CACHE_VAL(kde_cv_qt_jpeg, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +ac_save_LIBS="$LIBS" +LIBS="$all_libraries $USER_LDFLAGS $LIBQT" +LIBS=`echo $LIBS | sed "s/$LIBJPEG//"` +ac_save_CXXFLAGS="$CXXFLAGS" +CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES" +AC_TRY_LINK( +[#include ], + [ + int argc; + char** argv; + QApplication app(argc, argv);], + eval "kde_cv_qt_jpeg=no", + eval "kde_cv_qt_jpeg=yes") +LIBS="$ac_save_LIBS" +CXXFLAGS="$ac_save_CXXFLAGS" +AC_LANG_RESTORE +fi +]) + +if eval "test ! \"`echo $kde_cv_qt_jpeg`\" = no"; then + AC_MSG_RESULT(yes) + LIBJPEG_QT='$(LIBJPEG)' +else + AC_MSG_RESULT(no) + LIBJPEG_QT= +fi + +]) + +AC_DEFUN([AC_FIND_ZLIB], +[ +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_MSG_CHECKING([for libz]) +AC_CACHE_VAL(ac_cv_lib_z, +[ +kde_save_LIBS="$LIBS" +LIBS="$all_libraries $USER_LDFLAGS -lz $LIBSOCKET" +kde_save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" +AC_TRY_LINK(dnl +[ +#include +#include +], +[ + char buf[42]; + gzFile f = (gzFile) 0; + /* this would segfault.. but we only link, don't run */ + (void) gzgets(f, buf, sizeof(buf)); + + return (strcmp(zlibVersion(), ZLIB_VERSION) == 0); +], + eval "ac_cv_lib_z='-lz'", + eval "ac_cv_lib_z=no") +LIBS="$kde_save_LIBS" +CFLAGS="$kde_save_CFLAGS" +])dnl +if test ! "$ac_cv_lib_z" = no; then + AC_DEFINE_UNQUOTED(HAVE_LIBZ, 1, [Define if you have libz]) + LIBZ="$ac_cv_lib_z" + AC_MSG_RESULT($ac_cv_lib_z) +else + AC_MSG_ERROR(not found. + Possibly configure picks up an outdated version + installed by XFree86. Remove it from your system. + + Check your installation and look into config.log) + LIBZ="" +fi +AC_SUBST(LIBZ) +]) + +AC_DEFUN([KDE_TRY_TIFFLIB], +[ +AC_MSG_CHECKING([for libtiff $1]) + +AC_CACHE_VAL(kde_cv_libtiff_$1, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +kde_save_LIBS="$LIBS" +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIBS="$all_libraries $USER_LDFLAGS -l$1 $LIBJPEG $LIBZ -lX11 $LIBSOCKET -lm" +else +LIBS="$all_libraries $USER_LDFLAGS -l$1 $LIBJPEG $LIBZ -lm" +fi +kde_save_CXXFLAGS="$CXXFLAGS" +CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES" + +AC_TRY_LINK(dnl +[ +#include +], + [return (TIFFOpen( "", "r") == 0); ], +[ + kde_cv_libtiff_$1="-l$1 $LIBJPEG $LIBZ" +], [ + kde_cv_libtiff_$1=no +]) + +LIBS="$kde_save_LIBS" +CXXFLAGS="$kde_save_CXXFLAGS" +AC_LANG_RESTORE +]) + +if test "$kde_cv_libtiff_$1" = "no"; then + AC_MSG_RESULT(no) + LIBTIFF="" + $3 +else + LIBTIFF="$kde_cv_libtiff_$1" + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(HAVE_LIBTIFF, 1, [Define if you have libtiff]) + $2 +fi + +]) + +AC_DEFUN([AC_FIND_TIFF], +[ +AC_REQUIRE([K_PATH_X]) +AC_REQUIRE([AC_FIND_ZLIB]) +AC_REQUIRE([AC_FIND_JPEG]) +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + +KDE_TRY_TIFFLIB(tiff, [], + KDE_TRY_TIFFLIB(tiff34)) + +AC_SUBST(LIBTIFF) +]) + +AC_DEFUN([KDE_FIND_LIBEXR], +[ +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_REQUIRE([AC_FIND_ZLIB]) +AC_CACHE_VAL(ac_cv_libexr, +[ + if test -z "$PKG_CONFIG"; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + fi + + AC_MSG_CHECKING([for OpenEXR libraries]) + + if test "$PKG_CONFIG" = "no" ; then + AC_MSG_RESULT(no) + echo "*** The pkg-config script could not be found. Make sure it is" + echo "*** in your path, or set the PKG_CONFIG environment variable" + echo "*** to the full path to pkg-config." + echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." + else + if ! $PKG_CONFIG --exists OpenEXR ; then + AC_MSG_RESULT(no) + EXRSTATUS=no + else + if ! $PKG_CONFIG --atleast-version="1.1.1" OpenEXR ; then + AC_MSG_RESULT(no) + EXRSTATUS=old + else + kde_save_LIBS="$LIBS" + LIBS="$LIBS $all_libraries $USER_LDFLAGS `pkg-config --libs OpenEXR` $LIBZ" + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + kde_save_CXXFLAGS="$CXXFLAGS" + EXR_FLAGS=`$PKG_CONFIG --cflags OpenEXR` + CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES $EXR_FLAGS" + + AC_TRY_LINK(dnl + [ + #include + ], + [ + using namespace Imf; + RgbaInputFile file ("dummy"); + return 0; + ], + eval "ac_cv_libexr='`pkg-config --libs OpenEXR`'", + eval "ac_cv_libexr=no" + ) + LIBS="$kde_save_LIBS" + CXXFLAGS="$kde_save_CXXFLAGS" + AC_LANG_RESTORE + ])dnl + if eval "test ! \"`echo $ac_cv_libexr`\" = no"; then + AC_DEFINE_UNQUOTED(HAVE_EXR, 1, [Define if you have OpenEXR]) + LIB_EXR="$ac_cv_libexr" + AC_MSG_RESULT($ac_cv_libexr) + else + AC_MSG_RESULT(no) + LIB_EXR="" + fi + fi + fi + fi + AC_SUBST(LIB_EXR) + AC_SUBST(EXR_FLAGS) +]) + + + +AC_DEFUN([AC_FIND_PNG], +[ +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_REQUIRE([AC_FIND_ZLIB]) +AC_MSG_CHECKING([for libpng]) +AC_CACHE_VAL(ac_cv_lib_png, +[ +kde_save_LIBS="$LIBS" +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm -lX11 $LIBSOCKET" +else +LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm" +fi +kde_save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" + +AC_TRY_LINK(dnl + [ + #include + ], + [ + png_structp png_ptr = png_create_read_struct( /* image ptr */ + PNG_LIBPNG_VER_STRING, 0, 0, 0 ); + return( png_ptr != 0 ); + ], + eval "ac_cv_lib_png='-lpng $LIBZ -lm'", + eval "ac_cv_lib_png=no" +) +LIBS="$kde_save_LIBS" +CFLAGS="$kde_save_CFLAGS" +])dnl +if eval "test ! \"`echo $ac_cv_lib_png`\" = no"; then + AC_DEFINE_UNQUOTED(HAVE_LIBPNG, 1, [Define if you have libpng]) + LIBPNG="$ac_cv_lib_png" + AC_SUBST(LIBPNG) + AC_MSG_RESULT($ac_cv_lib_png) +else + AC_MSG_RESULT(no) + LIBPNG="" + AC_SUBST(LIBPNG) +fi +]) + + +AC_DEFUN([AC_FIND_JASPER], +[ +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_REQUIRE([AC_FIND_JPEG]) +AC_MSG_CHECKING([for jasper]) +AC_CACHE_VAL(ac_cv_jasper, +[ +kde_save_LIBS="$LIBS" +LIBS="$LIBS $all_libraries $USER_LDFLAGS -ljasper $LIBJPEG -lm" +kde_save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" + +AC_TRY_LINK(dnl + [ + #include + ], + [ + return( jas_init() ); + ], + eval "ac_cv_jasper='-ljasper $LIBJPEG -lm'", + eval "ac_cv_jasper=no" +) +LIBS="$kde_save_LIBS" +CFLAGS="$kde_save_CFLAGS" +])dnl +if eval "test ! \"`echo $ac_cv_jasper`\" = no"; then + AC_DEFINE_UNQUOTED(HAVE_JASPER, 1, [Define if you have jasper]) + LIB_JASPER="$ac_cv_jasper" + AC_MSG_RESULT($ac_cv_jasper) +else + AC_MSG_RESULT(no) + LIB_JASPER="" +fi +AC_SUBST(LIB_JASPER) +]) + +AC_DEFUN([AC_CHECK_BOOL], +[ + AC_DEFINE_UNQUOTED(HAVE_BOOL, 1, [You _must_ have bool]) +]) + +AC_DEFUN([AC_CHECK_GNU_EXTENSIONS], +[ +AC_MSG_CHECKING(if you need GNU extensions) +AC_CACHE_VAL(ac_cv_gnu_extensions, +[ +cat > conftest.c << EOF +#include + +#ifdef __GNU_LIBRARY__ +yes +#endif +EOF + +if (eval "$ac_cpp conftest.c") 2>&5 | + egrep "yes" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_gnu_extensions=yes +else + ac_cv_gnu_extensions=no +fi +]) + +AC_MSG_RESULT($ac_cv_gnu_extensions) +if test "$ac_cv_gnu_extensions" = "yes"; then + AC_DEFINE_UNQUOTED(_GNU_SOURCE, 1, [Define if you need to use the GNU extensions]) +fi +]) + +AC_DEFUN([KDE_CHECK_COMPILER_FLAG], +[ +AC_MSG_CHECKING([whether $CXX supports -$1]) +kde_cache=`echo $1 | sed 'y% .=/+-,%____p__%'` +AC_CACHE_VAL(kde_cv_prog_cxx_$kde_cache, +[ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -$1" + AC_TRY_LINK([],[ return 0; ], [eval "kde_cv_prog_cxx_$kde_cache=yes"], []) + CXXFLAGS="$save_CXXFLAGS" + AC_LANG_RESTORE +]) +if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then + AC_MSG_RESULT(yes) + : + $2 +else + AC_MSG_RESULT(no) + : + $3 +fi +]) + +AC_DEFUN([KDE_CHECK_C_COMPILER_FLAG], +[ +AC_MSG_CHECKING([whether $CC supports -$1]) +kde_cache=`echo $1 | sed 'y% .=/+-,%____p__%'` +AC_CACHE_VAL(kde_cv_prog_cc_$kde_cache, +[ + AC_LANG_SAVE + AC_LANG_C + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -$1" + AC_TRY_LINK([],[ return 0; ], [eval "kde_cv_prog_cc_$kde_cache=yes"], []) + CFLAGS="$save_CFLAGS" + AC_LANG_RESTORE +]) +if eval "test \"`echo '$kde_cv_prog_cc_'$kde_cache`\" = yes"; then + AC_MSG_RESULT(yes) + : + $2 +else + AC_MSG_RESULT(no) + : + $3 +fi +]) + + +dnl AC_REMOVE_FORBIDDEN removes forbidden arguments from variables +dnl use: AC_REMOVE_FORBIDDEN(CC, [-forbid -bad-option whatever]) +dnl it's all white-space separated +AC_DEFUN([AC_REMOVE_FORBIDDEN], +[ __val=$$1 + __forbid=" $2 " + if test -n "$__val"; then + __new="" + ac_save_IFS=$IFS + IFS=" " + for i in $__val; do + case "$__forbid" in + *" $i "*) AC_MSG_WARN([found forbidden $i in $1, removing it]) ;; + *) # Careful to not add spaces, where there were none, because otherwise + # libtool gets confused, if we change e.g. CXX + if test -z "$__new" ; then __new=$i ; else __new="$__new $i" ; fi ;; + esac + done + IFS=$ac_save_IFS + $1=$__new + fi +]) + + +AC_DEFUN([KDE_CHECK_FOR_BAD_COMPILER], +[ + AC_MSG_CHECKING([whether $CC is blacklisted]) + + dnl In theory we have tu run this test against $CC and $CXX + dnl in C and in C++ mode, because its perfectly legal for + dnl the user to mix compiler versions, since C has a defined + dnl ABI. + dnl + dnl For now, we assume the user is not on crack. + + AC_TRY_COMPILE([ +#ifdef __GNUC__ +#if __GNUC__ == 4 && __GNUC_MINOR__ == 0 && __GNUC_PATCHLEVEL__ == 0 +choke me +#endif +#endif +], , + kde_bad_compiler=no, + kde_bad_compiler=yes +) + + AC_MSG_RESULT($kde_bad_compiler) + +if test "$kde_bad_compiler" = "yes"; then + AC_MSG_ERROR([ + +This particular compiler version is blacklisted because it +is known to miscompile KDE. Please use a newer version, or +if that is not yet available, choose an older version. + +Please do not report a bug or bother us reporting this +configure error. We know about it, and we introduced +it by intention to avoid untraceable bugs or crashes in KDE. + +]) +fi + +]) + + +AC_DEFUN([KDE_CHECK_FOR_OPT_NOINLINE_MATCH], +[ + AC_CACHE_CHECK([whether system headers can cope with -O2 -fno-inline], + kde_cv_opt_noinline_match, + [ + kde_cv_opt_noinline_match=irrelevant + dnl if we don't use both -O2 and -fno-inline, this check is moot + if echo "$CFLAGS" | grep -e -O2 >/dev/null 2>/dev/null \ + && echo "$CFLAGS" | grep -e -fno-inline >/dev/null 2>/dev/null ; then + + ac_cflags_save="$CFLAGS" + CFLAGS="$CFLAGS -D_USE_GNU" + + AC_TRY_LINK([ + #include +], [ const char *pt, *et; + et = __extension__ ({ char __a0, __a1, __a2; (__builtin_constant_p ( ";," ) && ((size_t)(const void *)(( ";," )+ 1) - (size_t)(const void *)( ";," ) == 1) ? ((__a0 =((__const char *) ( ";," ))[0], __a0 == '\0') ? ((void) ( pt ),((void *)0) ) : ((__a1 = ((__const char *) ( ";," ))[1], __a1== '\0') ? (__extension__ (__builtin_constant_p ( __a0 ) && ( __a0 ) == '\0' ? (char *) __rawmemchr ( pt , __a0) : strchr( pt , __a0 ))) : ((__a2 = ((__const char *) ( ";," ))[2], __a2 == '\0') ? __strpbrk_c2 ( pt , __a0, __a1) :(((__const char *) ( ";," ))[3] == '\0' ? __strpbrk_c3 ( pt ,__a0, __a1, __a2): strpbrk ( pt , ";," ))))) : strpbrk ( pt , ";," )); }) ; +], + kde_cv_opt_noinline_match=yes, + kde_cv_opt_noinline_match=no + ) + + CFLAGS="$ac_cflags_save" + fi + ]) +]) + + +dnl AC_VALIDIFY_CXXFLAGS checks for forbidden flags the user may have given +AC_DEFUN([AC_VALIDIFY_CXXFLAGS], +[dnl +if test "x$kde_use_qt_emb" != "xyes"; then + AC_REMOVE_FORBIDDEN(CXX, [-fno-rtti -rpath]) + AC_REMOVE_FORBIDDEN(CXXFLAGS, [-fno-rtti -rpath]) +else + AC_REMOVE_FORBIDDEN(CXX, [-rpath]) + AC_REMOVE_FORBIDDEN(CXXFLAGS, [-rpath]) +fi +]) + +AC_DEFUN([AC_CHECK_COMPILERS], +[ + AC_ARG_ENABLE(debug, + AC_HELP_STRING([--enable-debug=ARG],[enables debug symbols (yes|no|full) [default=no]]), + [ + case $enableval in + yes) + kde_use_debug_code="yes" + kde_use_debug_define=no + ;; + full) + kde_use_debug_code="full" + kde_use_debug_define=no + ;; + *) + kde_use_debug_code="no" + kde_use_debug_define=yes + ;; + esac + ], + [kde_use_debug_code="no" + kde_use_debug_define=no + ]) + + dnl Just for configure --help + AC_ARG_ENABLE(dummyoption, + AC_HELP_STRING([--disable-debug], + [disables debug output and debug symbols [default=no]]), + [],[]) + + AC_ARG_ENABLE(strict, + AC_HELP_STRING([--enable-strict], + [compiles with strict compiler options (may not work!)]), + [ + if test $enableval = "no"; then + kde_use_strict_options="no" + else + kde_use_strict_options="yes" + fi + ], [kde_use_strict_options="no"]) + + AC_ARG_ENABLE(warnings,AC_HELP_STRING([--disable-warnings],[disables compilation with -Wall and similar]), + [ + if test $enableval = "no"; then + kde_use_warnings="no" + else + kde_use_warnings="yes" + fi + ], [kde_use_warnings="yes"]) + + dnl enable warnings for debug build + if test "$kde_use_debug_code" != "no"; then + kde_use_warnings=yes + fi + + AC_ARG_ENABLE(profile,AC_HELP_STRING([--enable-profile],[creates profiling infos [default=no]]), + [kde_use_profiling=$enableval], + [kde_use_profiling="no"] + ) + + dnl this prevents stupid AC_PROG_CC to add "-g" to the default CFLAGS + CFLAGS=" $CFLAGS" + + AC_PROG_CC + + AC_PROG_CPP + + if test "$GCC" = "yes"; then + if test "$kde_use_debug_code" != "no"; then + if test $kde_use_debug_code = "full"; then + CFLAGS="-g3 -fno-inline $CFLAGS" + else + CFLAGS="-g -O2 -fno-schedule-insns -fno-inline $CFLAGS" + fi + else + CFLAGS="-O2 $CFLAGS" + fi + fi + + if test "$kde_use_debug_define" = "yes"; then + CFLAGS="-DNDEBUG $CFLAGS" + fi + + + case "$host" in + *-*-sysv4.2uw*) CFLAGS="-D_UNIXWARE $CFLAGS";; + *-*-sysv5uw7*) CFLAGS="-D_UNIXWARE7 $CFLAGS";; + esac + + if test -z "$LDFLAGS" && test "$kde_use_debug_code" = "no" && test "$GCC" = "yes"; then + LDFLAGS="" + fi + + CXXFLAGS=" $CXXFLAGS" + + AC_PROG_CXX + + KDE_CHECK_FOR_BAD_COMPILER + + if test "$GXX" = "yes" || test "$CXX" = "KCC"; then + if test "$kde_use_debug_code" != "no"; then + if test "$CXX" = "KCC"; then + CXXFLAGS="+K0 -Wall -pedantic -W -Wpointer-arith -Wwrite-strings $CXXFLAGS" + else + if test "$kde_use_debug_code" = "full"; then + CXXFLAGS="-g3 -fno-inline $CXXFLAGS" + else + CXXFLAGS="-g -O2 -fno-schedule-insns -fno-inline $CXXFLAGS" + fi + fi + KDE_CHECK_COMPILER_FLAG(fno-builtin,[CXXFLAGS="-fno-builtin $CXXFLAGS"]) + + dnl convenience compiler flags + KDE_CHECK_COMPILER_FLAG(Woverloaded-virtual, [WOVERLOADED_VIRTUAL="-Woverloaded-virtual"], [WOVERLOADED_VRITUAL=""]) + AC_SUBST(WOVERLOADED_VIRTUAL) + else + if test "$CXX" = "KCC"; then + CXXFLAGS="+K3 $CXXFLAGS" + else + CXXFLAGS="-O2 $CXXFLAGS" + fi + fi + fi + + if test "$kde_use_debug_define" = "yes"; then + CXXFLAGS="-DNDEBUG -DNO_DEBUG $CXXFLAGS" + fi + + if test "$kde_use_profiling" = "yes"; then + KDE_CHECK_COMPILER_FLAG(pg, + [ + CFLAGS="-pg $CFLAGS" + CXXFLAGS="-pg $CXXFLAGS" + ]) + fi + + if test "$kde_use_warnings" = "yes"; then + if test "$GCC" = "yes"; then + CXXFLAGS="-Wall -W -Wpointer-arith $CXXFLAGS" + case $host in + *-*-linux-gnu) + CFLAGS="-std=iso9899:1990 -W -Wall -Wchar-subscripts -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -D_XOPEN_SOURCE=500 -D_BSD_SOURCE $CFLAGS" + CXXFLAGS="-ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wchar-subscripts $CXXFLAGS" + KDE_CHECK_COMPILER_FLAG(Wmissing-format-attribute, [CXXFLAGS="$CXXFLAGS -Wformat-security -Wmissing-format-attribute"]) + KDE_CHECK_C_COMPILER_FLAG(Wmissing-format-attribute, [CFLAGS="$CFLAGS -Wformat-security -Wmissing-format-attribute"]) + ;; + esac + KDE_CHECK_COMPILER_FLAG(Wundef,[CXXFLAGS="-Wundef $CXXFLAGS"]) + KDE_CHECK_COMPILER_FLAG(Wno-long-long,[CXXFLAGS="-Wno-long-long $CXXFLAGS"]) + dnl ### FIXME: revert for KDE 4 + KDE_CHECK_COMPILER_FLAG(Wno-non-virtual-dtor,[CXXFLAGS="$CXXFLAGS -Wno-non-virtual-dtor"]) + fi + fi + + if test "$GXX" = "yes" && test "$kde_use_strict_options" = "yes"; then + CXXFLAGS="-Wcast-qual -Wshadow -Wcast-align $CXXFLAGS" + fi + + AC_ARG_ENABLE(pch, + AC_HELP_STRING([--enable-pch], + [enables precompiled header support (currently only KCC or gcc >=3.4+unsermake) [default=no]]), + [ kde_use_pch=$enableval ],[ kde_use_pch=no ]) + + HAVE_GCC_VISIBILITY=0 + AC_SUBST([HAVE_GCC_VISIBILITY]) + + if test "$GXX" = "yes"; then + gcc_no_reorder_blocks=NO + KDE_CHECK_COMPILER_FLAG(fno-reorder-blocks,[gcc_no_reorder_blocks=YES]) + if test $kde_use_debug_code != "no" && \ + test $kde_use_debug_code != "full" && \ + test "YES" = "$gcc_no_reorder_blocks" ; then + CXXFLAGS="$CXXFLAGS -fno-reorder-blocks" + CFLAGS="$CFLAGS -fno-reorder-blocks" + fi + KDE_CHECK_COMPILER_FLAG(fno-exceptions,[CXXFLAGS="$CXXFLAGS -fno-exceptions"]) + KDE_CHECK_COMPILER_FLAG(fno-check-new, [CXXFLAGS="$CXXFLAGS -fno-check-new"]) + KDE_CHECK_COMPILER_FLAG(fno-common, [CXXFLAGS="$CXXFLAGS -fno-common"]) + KDE_CHECK_COMPILER_FLAG(fexceptions, [USE_EXCEPTIONS="-fexceptions"], USE_EXCEPTIONS= ) + ENABLE_PERMISSIVE_FLAG="-fpermissive" + + if test "$kde_use_pch" = "yes"; then + AC_MSG_CHECKING(whether gcc supports precompiling c header files) + echo >conftest.h + if $CC -x c-header conftest.h >/dev/null 2>/dev/null; then + kde_gcc_supports_pch=yes + AC_MSG_RESULT(yes) + else + kde_gcc_supports_pch=no + AC_MSG_RESULT(no) + fi + if test "$kde_gcc_supports_pch" = "yes"; then + AC_MSG_CHECKING(whether gcc supports precompiling c++ header files) + if $CXX -x c++-header conftest.h >/dev/null 2>/dev/null; then + kde_gcc_supports_pch=yes + AC_MSG_RESULT(yes) + else + kde_gcc_supports_pch=no + AC_MSG_RESULT(no) + fi + fi + rm -f conftest.h conftest.h.gch + fi + + KDE_CHECK_FOR_OPT_NOINLINE_MATCH + if test "x$kde_cv_opt_noinline_match" = "xno" ; then + CFLAGS="`echo "$CFLAGS" | sed "s/ -fno-inline//"`" + fi + fi + AM_CONDITIONAL(unsermake_enable_pch, test "$kde_use_pch" = "yes" && test "$kde_gcc_supports_pch" = "yes") + if test "$CXX" = "KCC"; then + dnl unfortunately we currently cannot disable exception support in KCC + dnl because doing so is binary incompatible and Qt by default links with exceptions :-( + dnl KDE_CHECK_COMPILER_FLAG(-no_exceptions,[CXXFLAGS="$CXXFLAGS --no_exceptions"]) + dnl KDE_CHECK_COMPILER_FLAG(-exceptions, [USE_EXCEPTIONS="--exceptions"], USE_EXCEPTIONS= ) + + if test "$kde_use_pch" = "yes"; then + dnl TODO: support --pch-dir! + KDE_CHECK_COMPILER_FLAG(-pch,[CXXFLAGS="$CXXFLAGS --pch"]) + dnl the below works (but the dir must exist), but it's + dnl useless for a whole package. + dnl The are precompiled headers for each source file, so when compiling + dnl from scratch, it doesn't make a difference, and they take up + dnl around ~5Mb _per_ sourcefile. + dnl KDE_CHECK_COMPILER_FLAG(-pch_dir /tmp, + dnl [CXXFLAGS="$CXXFLAGS --pch_dir `pwd`/pcheaders"]) + fi + dnl this flag controls inlining. by default KCC inlines in optimisation mode + dnl all implementations that are defined inside the class {} declaration. + dnl because of templates-compatibility with broken gcc compilers, this + dnl can cause excessive inlining. This flag limits it to a sane level + KDE_CHECK_COMPILER_FLAG(-inline_keyword_space_time=6,[CXXFLAGS="$CXXFLAGS --inline_keyword_space_time=6"]) + KDE_CHECK_COMPILER_FLAG(-inline_auto_space_time=2,[CXXFLAGS="$CXXFLAGS --inline_auto_space_time=2"]) + KDE_CHECK_COMPILER_FLAG(-inline_implicit_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_implicit_space_time=2.0"]) + KDE_CHECK_COMPILER_FLAG(-inline_generated_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_generated_space_time=2.0"]) + dnl Some source files are shared between multiple executables + dnl (or libraries) and some of those need template instantiations. + dnl In that case KCC needs to compile those sources with + dnl --one_instantiation_per_object. To make it easy for us we compile + dnl _all_ objects with that flag (--one_per is a shorthand). + KDE_CHECK_COMPILER_FLAG(-one_per, [CXXFLAGS="$CXXFLAGS --one_per"]) + fi + AC_SUBST(USE_EXCEPTIONS) + dnl obsolete macro - provided to keep things going + USE_RTTI= + AC_SUBST(USE_RTTI) + + case "$host" in + *-*-irix*) test "$GXX" = yes && CXXFLAGS="-D_LANGUAGE_C_PLUS_PLUS -D__LANGUAGE_C_PLUS_PLUS $CXXFLAGS" ;; + *-*-sysv4.2uw*) CXXFLAGS="-D_UNIXWARE $CXXFLAGS";; + *-*-sysv5uw7*) CXXFLAGS="-D_UNIXWARE7 $CXXFLAGS";; + *-*-solaris*) + if test "$GXX" = yes; then + libstdcpp=`$CXX -print-file-name=libstdc++.so` + if test ! -f $libstdcpp; then + AC_MSG_ERROR([You've compiled gcc without --enable-shared. This doesn't work with KDE. Please recompile gcc with --enable-shared to receive a libstdc++.so]) + fi + fi + ;; + esac + + AC_VALIDIFY_CXXFLAGS + + AC_PROG_CXXCPP + + if test "$GCC" = yes; then + NOOPT_CFLAGS=-O0 + fi + KDE_CHECK_COMPILER_FLAG(O0,[NOOPT_CXXFLAGS=-O0]) + + AC_ARG_ENABLE(coverage, + AC_HELP_STRING([--enable-coverage],[use gcc coverage testing]), [ + if test "$am_cv_CC_dependencies_compiler_type" = "gcc3"; then + ac_coverage_compiler="-fprofile-arcs -ftest-coverage" + ac_coverage_linker="-lgcc" + elif test "$am_cv_CC_dependencies_compiler_type" = "gcc"; then + ac_coverage_compiler="-fprofile-arcs -ftest-coverage" + ac_coverage_linker="" + else + AC_MSG_ERROR([coverage with your compiler is not supported]) + fi + CFLAGS="$CFLAGS $ac_coverage_compiler" + CXXFLAGS="$CXXFLAGS $ac_coverage_compiler" + LDFLAGS="$LDFLAGS $ac_coverage_linker" + ]) + + AC_SUBST(NOOPT_CXXFLAGS) + AC_SUBST(NOOPT_CFLAGS) + AC_SUBST(ENABLE_PERMISSIVE_FLAG) + + KDE_CHECK_NEW_LDFLAGS + KDE_CHECK_FINAL + KDE_CHECK_CLOSURE + KDE_CHECK_NMCHECK + + ifdef([AM_DEPENDENCIES], AC_REQUIRE([KDE_ADD_DEPENDENCIES]), []) +]) + +AC_DEFUN([KDE_CHECK_VISIBILITY_GCC_BUG], + [ + AC_CACHE_CHECK([for gcc -fvisibility-inlines-hidden bug], kde_cv_val_gcc_visibility_bug, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + + safe_CXXFLAGS=$CXXFLAGS + safe_LDFLAGS=$LDFLAGS + CXXFLAGS="$CXXFLAGS -fPIC -fvisibility-inlines-hidden -O0" + LDFLAGS="$LDFLAGS -shared -fPIC" + + AC_TRY_LINK( + [ + /* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19664 */ + #include + int some_function( void ) __attribute__ ((visibility("default"))); + int some_function( void ) + { + std::string s("blafasel"); + return 0; + } + ], [/* elvis is alive */], + kde_cv_val_gcc_visibility_bug=no, kde_cv_val_gcc_visibility_bug=yes) + + CXXFLAGS=$safe_CXXFLAGS + LDFLAGS=$safe_LDFLAGS + AC_LANG_RESTORE + ] + ) + + if test x$kde_cv_val_gcc_visibility_bug = xno; then + CXXFLAGS="$CXXFLAGS -fvisibility-inlines-hidden" + fi + ] +) + +AC_DEFUN([KDE_ENABLE_HIDDEN_VISIBILITY], +[ + AC_BEFORE([AC_PATH_QT_1_3], [KDE_ENABLE_HIDDEN_VISIBILITY]) + + AC_MSG_CHECKING([grepping for visibility push/pop in headers]) + + if test "x$GXX" = "xyes"; then + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_EGREP_CPP( + [GCC visibility push], + [ #include + ], + [ + AC_MSG_RESULT(yes) + kde_stdc_visibility_patched=yes ], + [ + AC_MSG_RESULT(no) + AC_MSG_WARN([Your libstdc++ doesn't appear to be patched for + visibility support. Disabling -fvisibility=hidden]) + + kde_stdc_visibility_patched=no ]) + + AC_LANG_RESTORE + + kde_have_gcc_visibility=no + KDE_CHECK_COMPILER_FLAG(fvisibility=hidden, + [ + kde_have_gcc_visibility=yes + dnl the whole toolchain is just a mess, gcc is just too buggy + dnl to handle STL with visibility enabled. Lets reconsider + dnl when gcc 4.2 is out or when things get fixed in the compiler. + dnl Contact mueller@kde.org for details. + AC_ARG_ENABLE(gcc-hidden-visibility, + AC_HELP_STRING([--enable-gcc-hidden-visibility],[toolchain hidden visibility [default=no]]), + [kde_have_gcc_visibility=$enableval], + [kde_have_gcc_visibility=no]) + + AC_CACHE_CHECK([if Qt is patched for -fvisibility], kde_cv_val_qt_gcc_visibility_patched, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + + safe_CXXFLAGS=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $all_includes" + + AC_TRY_COMPILE( + [ +#include +#if Q_EXPORT - 0 != 0 +/* if this compiles, then Q_EXPORT is undefined */ +/* if Q_EXPORT is nonempty, this will break compilation */ +#endif + ], [/* elvis is alive */], + kde_cv_val_qt_gcc_visibility_patched=no, kde_cv_val_qt_gcc_visibility_patched=yes) + + CXXFLAGS=$safe_CXXFLAGS + AC_LANG_RESTORE + ] + ) + + if test x$kde_have_gcc_visibility = "xyes" && test x$kde_stdc_visibility_patched = "xyes" && test x$kde_cv_val_qt_gcc_visibility_patched = "xyes"; then + CXXFLAGS="$CXXFLAGS -fvisibility=hidden" + KDE_CHECK_VISIBILITY_GCC_BUG + HAVE_GCC_VISIBILITY=1 + AC_DEFINE_UNQUOTED(__KDE_HAVE_GCC_VISIBILITY, "$HAVE_GCC_VISIBILITY", [define to 1 if -fvisibility is supported]) + fi + ]) + fi +]) + +AC_DEFUN([KDE_ADD_DEPENDENCIES], +[ + [A]M_DEPENDENCIES(CC) + [A]M_DEPENDENCIES(CXX) +]) + +dnl just a wrapper to clean up configure.in +AC_DEFUN([KDE_PROG_LIBTOOL], +[ +AC_REQUIRE([AC_CHECK_COMPILERS]) +AC_REQUIRE([AC_ENABLE_SHARED]) +AC_REQUIRE([AC_ENABLE_STATIC]) + +AC_REQUIRE([AC_LIBTOOL_DLOPEN]) +AC_REQUIRE([KDE_CHECK_LIB64]) + +AC_OBJEXT +AC_EXEEXT + +AM_PROG_LIBTOOL +AC_LIBTOOL_CXX + +LIBTOOL_SHELL="/bin/sh ./libtool" +# LIBTOOL="$LIBTOOL --silent" +KDE_PLUGIN="-avoid-version -module -no-undefined \$(KDE_NO_UNDEFINED) \$(KDE_RPATH) \$(KDE_MT_LDFLAGS)" +AC_SUBST(KDE_PLUGIN) + +# This hack ensures that libtool creates shared libs for kunittest plugins. By default check_LTLIBRARIES makes static libs. +KDE_CHECK_PLUGIN="\$(KDE_PLUGIN) -rpath \$(libdir)" +AC_SUBST(KDE_CHECK_PLUGIN) + +# we patch configure quite some so we better keep that consistent for incremental runs +AC_SUBST(AUTOCONF,'$(SHELL) $(top_srcdir)/admin/cvs.sh configure || touch configure') +]) + +AC_DEFUN([KDE_CHECK_LIB64], +[ + AC_ARG_ENABLE(libsuffix, + AC_HELP_STRING([--enable-libsuffix], + [/lib directory suffix (64,32,none,auto[=default])]), + kdelibsuff=$enableval, kdelibsuff="auto") + + if test "$kdelibsuff" = "auto"; then + +cat > conftest.c << EOF +#include +int main() { + return 0; +} +EOF + kdelibsuff=`$CC conftest.c -o conftest.out; ldd conftest.out |sed -ne '/libc.so/{ + s,.*/lib\([[^\/]]*\)/.*,\1, + p +}'` + rm -rf conftest.* + fi + + if test "$kdelibsuff" = "no" || test "$kdelibsuff" = "none"; then + kdelibsuff= + fi + if test -z "$kdelibsuff"; then + AC_MSG_RESULT([not using lib directory suffix]) + AC_DEFINE(KDELIBSUFF, [""], Suffix for lib directories) + else + if test "$libdir" = '${exec_prefix}/lib'; then + libdir="$libdir${kdelibsuff}" + AC_SUBST([libdir], ["$libdir"]) dnl ugly hack for lib64 platforms + fi + AC_DEFINE_UNQUOTED(KDELIBSUFF, ["${kdelibsuff}"], Suffix for lib directories) + AC_MSG_RESULT([using lib directory suffix $kdelibsuff]) + fi +]) + +AC_DEFUN([KDE_CHECK_TYPES], +[ AC_CHECK_SIZEOF(int, 4)dnl + AC_CHECK_SIZEOF(short)dnl + AC_CHECK_SIZEOF(long, 4)dnl + AC_CHECK_SIZEOF(char *, 4)dnl +])dnl + +dnl Not used - kept for compat only? +AC_DEFUN([KDE_DO_IT_ALL], +[ +AC_CANONICAL_SYSTEM +AC_ARG_PROGRAM +AM_INIT_AUTOMAKE($1, $2) +AM_DISABLE_LIBRARIES +AC_PREFIX_DEFAULT(${KDEDIR:-/usr/local/kde}) +AC_CHECK_COMPILERS +KDE_PROG_LIBTOOL +AM_KDE_WITH_NLS +AC_PATH_KDE +]) + +AC_DEFUN([AC_CHECK_RPATH], +[ +AC_MSG_CHECKING(for rpath) +AC_ARG_ENABLE(rpath, + AC_HELP_STRING([--disable-rpath],[do not use the rpath feature of ld]), + USE_RPATH=$enableval, USE_RPATH=yes) + +if test -z "$KDE_RPATH" && test "$USE_RPATH" = "yes"; then + + KDE_RPATH="-R \$(libdir)" + + if test "$kde_libraries" != "$libdir"; then + KDE_RPATH="$KDE_RPATH -R \$(kde_libraries)" + fi + + if test -n "$qt_libraries"; then + KDE_RPATH="$KDE_RPATH -R \$(qt_libraries)" + fi + dnl $x_libraries is set to /usr/lib in case + if test -n "$X_LDFLAGS"; then + X_RPATH="-R \$(x_libraries)" + KDE_RPATH="$KDE_RPATH $X_RPATH" + fi + if test -n "$KDE_EXTRA_RPATH"; then + KDE_RPATH="$KDE_RPATH \$(KDE_EXTRA_RPATH)" + fi +fi +AC_SUBST(KDE_EXTRA_RPATH) +AC_SUBST(KDE_RPATH) +AC_SUBST(X_RPATH) +AC_MSG_RESULT($USE_RPATH) +]) + +dnl Check for the type of the third argument of getsockname +AC_DEFUN([AC_CHECK_SOCKLEN_T], +[ + AC_MSG_CHECKING(for socklen_t) + AC_CACHE_VAL(kde_cv_socklen_t, + [ + AC_LANG_PUSH(C++) + kde_cv_socklen_t=no + AC_TRY_COMPILE([ + #include + #include + ], + [ + socklen_t len; + getpeername(0,0,&len); + ], + [ + kde_cv_socklen_t=yes + kde_cv_socklen_t_equiv=socklen_t + ]) + AC_LANG_POP(C++) + ]) + AC_MSG_RESULT($kde_cv_socklen_t) + if test $kde_cv_socklen_t = no; then + AC_MSG_CHECKING([for socklen_t equivalent for socket functions]) + AC_CACHE_VAL(kde_cv_socklen_t_equiv, + [ + kde_cv_socklen_t_equiv=int + AC_LANG_PUSH(C++) + for t in int size_t unsigned long "unsigned long"; do + AC_TRY_COMPILE([ + #include + #include + ], + [ + $t len; + getpeername(0,0,&len); + ], + [ + kde_cv_socklen_t_equiv="$t" + break + ]) + done + AC_LANG_POP(C++) + ]) + AC_MSG_RESULT($kde_cv_socklen_t_equiv) + fi + AC_DEFINE_UNQUOTED(kde_socklen_t, $kde_cv_socklen_t_equiv, + [type to use in place of socklen_t if not defined]) + AC_DEFINE_UNQUOTED(ksize_t, $kde_cv_socklen_t_equiv, + [type to use in place of socklen_t if not defined (deprecated, use kde_socklen_t)]) +]) + +dnl This is a merge of some macros out of the gettext aclocal.m4 +dnl since we don't need anything, I took the things we need +dnl the copyright for them is: +dnl > +dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +dnl This Makefile.in is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without +dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A +dnl PARTICULAR PURPOSE. +dnl > +dnl for this file it is relicensed under LGPL + +AC_DEFUN([AM_KDE_WITH_NLS], + [ + dnl If we use NLS figure out what method + + AM_PATH_PROG_WITH_TEST_KDE(MSGFMT, msgfmt, + [test -n "`$ac_dir/$ac_word --version 2>&1 | grep 'GNU gettext'`"], msgfmt) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + if test -z "`$GMSGFMT --version 2>&1 | grep 'GNU gettext'`"; then + AC_MSG_RESULT([found msgfmt program is not GNU msgfmt; ignore it]) + GMSGFMT=":" + fi + MSGFMT=$GMSGFMT + AC_SUBST(GMSGFMT) + AC_SUBST(MSGFMT) + + AM_PATH_PROG_WITH_TEST_KDE(XGETTEXT, xgettext, + [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) + + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else + AC_MSG_RESULT( + [found xgettext programs is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + fi + AC_SUBST(XGETTEXT) + + ]) + +# Search path for a program which passes the given test. +# Ulrich Drepper , 1996. + +# serial 1 +# Stephan Kulow: I appended a _KDE against name conflicts + +dnl AM_PATH_PROG_WITH_TEST_KDE(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST_KDE], +[# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + /*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in ifelse([$5], , $PATH, [$5]); do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test -n "[$]$1"; then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) + + +# Check whether LC_MESSAGES is available in . +# Ulrich Drepper , 1995. + +# serial 1 + +AC_DEFUN([AM_LC_MESSAGES], + [if test $ac_cv_header_locale_h = yes; then + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your locale.h file contains LC_MESSAGES]) + fi + fi]) + +dnl From Jim Meyering. +dnl FIXME: migrate into libit. + +AC_DEFUN([AM_FUNC_OBSTACK], +[AC_CACHE_CHECK([for obstacks], am_cv_func_obstack, + [AC_TRY_LINK([#include "obstack.h"], + [struct obstack *mem;obstack_free(mem,(char *) 0)], + am_cv_func_obstack=yes, + am_cv_func_obstack=no)]) + if test $am_cv_func_obstack = yes; then + AC_DEFINE(HAVE_OBSTACK) + else + LIBOBJS="$LIBOBJS obstack.o" + fi +]) + +dnl From Jim Meyering. Use this if you use the GNU error.[ch]. +dnl FIXME: Migrate into libit + +AC_DEFUN([AM_FUNC_ERROR_AT_LINE], +[AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line, + [AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");], + am_cv_lib_error_at_line=yes, + am_cv_lib_error_at_line=no)]) + if test $am_cv_lib_error_at_line = no; then + LIBOBJS="$LIBOBJS error.o" + fi + AC_SUBST(LIBOBJS)dnl +]) + +# Macro to add for using GNU gettext. +# Ulrich Drepper , 1995. + +# serial 1 +# Stephan Kulow: I put a KDE in it to avoid name conflicts + +AC_DEFUN([AM_KDE_GNU_GETTEXT], + [AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([AM_KDE_WITH_NLS])dnl + AC_CHECK_HEADERS([limits.h locale.h nl_types.h string.h values.h alloca.h]) + AC_CHECK_FUNCS([getcwd munmap putenv setlocale strchr strcasecmp \ +__argz_count __argz_stringify __argz_next]) + + AC_MSG_CHECKING(for stpcpy) + AC_CACHE_VAL(kde_cv_func_stpcpy, + [ + kde_safe_cxxflags=$CXXFLAGS + CXXFLAGS="-Werror" + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([ + #include + ], + [ + char buffer[200]; + stpcpy(buffer, buffer); + ], + kde_cv_func_stpcpy=yes, + kde_cv_func_stpcpy=no) + AC_LANG_RESTORE + CXXFLAGS=$kde_safe_cxxflags + ]) + AC_MSG_RESULT($kde_cv_func_stpcpy) + if eval "test \"`echo $kde_cv_func_stpcpy`\" = yes"; then + AC_DEFINE(HAVE_STPCPY, 1, [Define if you have stpcpy]) + fi + + AM_LC_MESSAGES + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + AC_MSG_CHECKING(for catalogs to be installed) + NEW_LINGUAS= + for lang in ${LINGUAS=$ALL_LINGUAS}; do + case "$ALL_LINGUAS" in + *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; + esac + done + LINGUAS=$NEW_LINGUAS + AC_MSG_RESULT($LINGUAS) + fi + + dnl Construct list of names of catalog files to be constructed. + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + ]) + +AC_DEFUN([AC_HAVE_XPM], + [AC_REQUIRE_CPP()dnl + AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + + test -z "$XPM_LDFLAGS" && XPM_LDFLAGS= + test -z "$XPM_INCLUDE" && XPM_INCLUDE= + + AC_ARG_WITH(xpm,AC_HELP_STRING([--without-xpm],[disable color pixmap XPM tests]), + xpm_test=$withval, xpm_test="yes") + if test "x$xpm_test" = xno; then + ac_cv_have_xpm=no + else + AC_MSG_CHECKING(for XPM) + AC_CACHE_VAL(ac_cv_have_xpm, + [ + ac_save_ldflags="$LDFLAGS" + ac_save_cflags="$CFLAGS" + if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then + LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS $LDFLAGS $XPM_LDFLAGS $all_libraries -lXpm -lX11 -lXext $LIBZ $LIBSOCKET" + else + LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS $LDFLAGS $XPM_LDFLAGS $all_libraries -lXpm $LIBZ $LIBSOCKET" + fi + CFLAGS="$CFLAGS $X_INCLUDES $USER_INCLUDES" + test -n "$XPM_INCLUDE" && CFLAGS="-I$XPM_INCLUDE $CFLAGS" + AC_TRY_LINK([#include ],[], + ac_cv_have_xpm="yes",ac_cv_have_xpm="no") + LDFLAGS="$ac_save_ldflags" + CFLAGS="$ac_save_cflags" + ])dnl + + if test "$ac_cv_have_xpm" = no; then + AC_MSG_RESULT(no) + XPM_LDFLAGS="" + XPMINC="" + $2 + else + AC_DEFINE(HAVE_XPM, 1, [Define if you have XPM support]) + if test "$XPM_LDFLAGS" = ""; then + XPMLIB='-lXpm $(LIB_X11)' + else + XPMLIB="-L$XPM_LDFLAGS -lXpm "'$(LIB_X11)' + fi + if test "$XPM_INCLUDE" = ""; then + XPMINC="" + else + XPMINC="-I$XPM_INCLUDE" + fi + AC_MSG_RESULT(yes) + $1 + fi + fi + AC_SUBST(XPMINC) + AC_SUBST(XPMLIB) +]) + +AC_DEFUN([AC_HAVE_DPMS], + [AC_REQUIRE_CPP()dnl + AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + + test -z "$DPMS_LDFLAGS" && DPMS_LDFLAGS= + test -z "$DPMS_INCLUDE" && DPMS_INCLUDE= + DPMS_LIB= + + AC_ARG_WITH(dpms,AC_HELP_STRING([--without-dpms],[disable DPMS power saving]), + dpms_test=$withval, dpms_test="yes") + if test "x$dpms_test" = xno; then + ac_cv_have_dpms=no + else + AC_MSG_CHECKING(for DPMS) + dnl Note: ac_cv_have_dpms can be no, yes, or -lXdpms. + dnl 'yes' means DPMS_LIB="", '-lXdpms' means DPMS_LIB="-lXdpms". + AC_CACHE_VAL(ac_cv_have_dpms, + [ + if test "x$kde_use_qt_emb" = "xyes" || test "x$kde_use_qt_mac" = "xyes"; then + AC_MSG_RESULT(no) + ac_cv_have_dpms="no" + else + ac_save_ldflags="$LDFLAGS" + ac_save_cflags="$CFLAGS" + ac_save_libs="$LIBS" + LDFLAGS="$LDFLAGS $DPMS_LDFLAGS $all_libraries" + LIBS="-lX11 -lXext $LIBSOCKET" + CFLAGS="$CFLAGS $X_INCLUDES" + test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS" + AC_TRY_LINK([ + #include + #include + #include + #include + int foo_test_dpms() + { return DPMSSetTimeouts( 0, 0, 0, 0 ); }],[], + ac_cv_have_dpms="yes", [ + LIBS="-lXdpms $LIBS" + AC_TRY_LINK([ + #include + #include + #include + #include + int foo_test_dpms() + { return DPMSSetTimeouts( 0, 0, 0, 0 ); }],[], + [ + ac_cv_have_dpms="-lXdpms" + ],ac_cv_have_dpms="no") + ]) + LDFLAGS="$ac_save_ldflags" + CFLAGS="$ac_save_cflags" + LIBS="$ac_save_libs" + fi + ])dnl + + if test "$ac_cv_have_dpms" = no; then + AC_MSG_RESULT(no) + DPMS_LDFLAGS="" + DPMSINC="" + $2 + else + AC_DEFINE(HAVE_DPMS, 1, [Define if you have DPMS support]) + if test "$ac_cv_have_dpms" = "-lXdpms"; then + DPMS_LIB="-lXdpms" + fi + if test "$DPMS_LDFLAGS" = ""; then + DPMSLIB="$DPMS_LIB "'$(LIB_X11)' + else + DPMSLIB="$DPMS_LDFLAGS $DPMS_LIB "'$(LIB_X11)' + fi + if test "$DPMS_INCLUDE" = ""; then + DPMSINC="" + else + DPMSINC="-I$DPMS_INCLUDE" + fi + AC_MSG_RESULT(yes) + $1 + fi + fi + ac_save_cflags="$CFLAGS" + CFLAGS="$CFLAGS $X_INCLUDES" + test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS" + AH_TEMPLATE(HAVE_DPMSCAPABLE_PROTO, + [Define if you have the DPMSCapable prototype in ]) + AC_CHECK_DECL(DPMSCapable, + AC_DEFINE(HAVE_DPMSCAPABLE_PROTO),, + [#include + #include ]) + AH_TEMPLATE(HAVE_DPMSINFO_PROTO, + [Define if you have the DPMSInfo prototype in ]) + AC_CHECK_DECL(DPMSInfo, + AC_DEFINE(HAVE_DPMSINFO_PROTO),, + [#include + #include ]) + CFLAGS="$ac_save_cflags" + AC_SUBST(DPMSINC) + AC_SUBST(DPMSLIB) +]) + +AC_DEFUN([AC_HAVE_GL], + [AC_REQUIRE_CPP()dnl + AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + + test -z "$GL_LDFLAGS" && GL_LDFLAGS= + test -z "$GL_INCLUDE" && GL_INCLUDE= + + AC_ARG_WITH(gl,AC_HELP_STRING([--without-gl],[disable 3D GL modes]), + gl_test=$withval, gl_test="yes") + if test "x$kde_use_qt_emb" = "xyes"; then + # GL and Qt Embedded is a no-go for now. + ac_cv_have_gl=no + elif test "x$gl_test" = xno; then + ac_cv_have_gl=no + else + AC_MSG_CHECKING(for GL) + AC_CACHE_VAL(ac_cv_have_gl, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_ldflags=$LDFLAGS + ac_save_cxxflags=$CXXFLAGS + ac_save_libs=$LIBS + LDFLAGS="$LDFLAGS $GL_LDFLAGS $X_LDFLAGS $all_libraries" + LIBS="$LIBS -lGL -lGLU" + test "x$kde_use_qt_mac" != xyes && test "x$kde_use_qt_emb" != xyes && LIBS="$LIBS -lX11" + LIBS="$LIBS $LIB_XEXT -lm $LIBSOCKET" + CXXFLAGS="$CFLAGS $X_INCLUDES" + test -n "$GL_INCLUDE" && CFLAGS="-I$GL_INCLUDE $CFLAGS" + AC_TRY_LINK([#include +#include +], [], + ac_cv_have_gl="yes", ac_cv_have_gl="no") + AC_LANG_RESTORE + LDFLAGS=$ac_save_ldflags + CXXFLAGS=$ac_save_cxxflags + LIBS=$ac_save_libs + ])dnl + + if test "$ac_cv_have_gl" = "no"; then + AC_MSG_RESULT(no) + GL_LDFLAGS="" + GLINC="" + $2 + else + AC_DEFINE(HAVE_GL, 1, [Defines if you have GL (Mesa, OpenGL, ...)]) + if test "$GL_LDFLAGS" = ""; then + GLLIB='-lGLU -lGL $(LIB_X11)' + else + GLLIB="$GL_LDFLAGS -lGLU -lGL "'$(LIB_X11)' + fi + if test "$GL_INCLUDE" = ""; then + GLINC="" + else + GLINC="-I$GL_INCLUDE" + fi + AC_MSG_RESULT($ac_cv_have_gl) + $1 + fi + fi + AC_SUBST(GLINC) + AC_SUBST(GLLIB) +]) + + + dnl shadow password and PAM magic - maintained by ossi@kde.org + +AC_DEFUN([KDE_PAM], [ + AC_REQUIRE([KDE_CHECK_LIBDL]) + + want_pam= + AC_ARG_WITH(pam, + AC_HELP_STRING([--with-pam[=ARG]],[enable support for PAM: ARG=[yes|no|service name]]), + [ if test "x$withval" = "xyes"; then + want_pam=yes + pam_service=kde + elif test "x$withval" = "xno"; then + want_pam=no + else + want_pam=yes + pam_service=$withval + fi + ], [ pam_service=kde ]) + + use_pam= + PAMLIBS= + if test "x$want_pam" != xno; then + AC_CHECK_LIB(pam, pam_start, [ + AC_CHECK_HEADER(security/pam_appl.h, + [ pam_header=security/pam_appl.h ], + [ AC_CHECK_HEADER(pam/pam_appl.h, + [ pam_header=pam/pam_appl.h ], + [ + AC_MSG_WARN([PAM detected, but no headers found! +Make sure you have the necessary development packages installed.]) + ] + ) + ] + ) + ], , $LIBDL) + if test -z "$pam_header"; then + if test "x$want_pam" = xyes; then + AC_MSG_ERROR([--with-pam was specified, but cannot compile with PAM!]) + fi + else + AC_DEFINE(HAVE_PAM, 1, [Defines if you have PAM (Pluggable Authentication Modules)]) + PAMLIBS="$PAM_MISC_LIB -lpam $LIBDL" + use_pam=yes + + dnl darwin claims to be something special + if test "$pam_header" = "pam/pam_appl.h"; then + AC_DEFINE(HAVE_PAM_PAM_APPL_H, 1, [Define if your PAM headers are in pam/ instead of security/]) + fi + + dnl test whether struct pam_message is const (Linux) or not (Sun) + AC_MSG_CHECKING(for const pam_message) + AC_EGREP_HEADER([struct pam_message], $pam_header, + [ AC_EGREP_HEADER([const struct pam_message], $pam_header, + [AC_MSG_RESULT([const: Linux-type PAM])], + [AC_MSG_RESULT([nonconst: Sun-type PAM]) + AC_DEFINE(PAM_MESSAGE_NONCONST, 1, [Define if your PAM support takes non-const arguments (Solaris)])] + )], + [AC_MSG_RESULT([not found - assume const, Linux-type PAM])]) + fi + fi + + AC_SUBST(PAMLIBS) +]) + +dnl DEF_PAM_SERVICE(arg name, full name, define name) +AC_DEFUN([DEF_PAM_SERVICE], [ + AC_ARG_WITH($1-pam, + AC_HELP_STRING([--with-$1-pam=[val]],[override PAM service from --with-pam for $2]), + [ if test "x$use_pam" = xyes; then + $3_PAM_SERVICE=$withval + else + AC_MSG_ERROR([Cannot use use --with-$1-pam, as no PAM was detected. +You may want to enforce it by using --with-pam.]) + fi + ], + [ if test "x$use_pam" = xyes; then + $3_PAM_SERVICE="$pam_service" + fi + ]) + if test -n "$$3_PAM_SERVICE"; then + AC_MSG_RESULT([The PAM service used by $2 will be $$3_PAM_SERVICE]) + AC_DEFINE_UNQUOTED($3_PAM_SERVICE, "$$3_PAM_SERVICE", [The PAM service to be used by $2]) + fi + AC_SUBST($3_PAM_SERVICE) +]) + +AC_DEFUN([KDE_SHADOWPASSWD], [ + AC_REQUIRE([KDE_PAM]) + + AC_CHECK_LIB(shadow, getspent, + [ LIBSHADOW="-lshadow" + ac_use_shadow=yes + ], + [ dnl for UnixWare + AC_CHECK_LIB(gen, getspent, + [ LIBGEN="-lgen" + ac_use_shadow=yes + ], + [ AC_CHECK_FUNC(getspent, + [ ac_use_shadow=yes ], + [ ac_use_shadow=no ]) + ]) + ]) + AC_SUBST(LIBSHADOW) + AC_SUBST(LIBGEN) + + AC_MSG_CHECKING([for shadow passwords]) + + AC_ARG_WITH(shadow, + AC_HELP_STRING([--with-shadow],[If you want shadow password support]), + [ if test "x$withval" != "xno"; then + use_shadow=yes + else + use_shadow=no + fi + ], [ + use_shadow="$ac_use_shadow" + ]) + + if test "x$use_shadow" = xyes; then + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SHADOW, 1, [Define if you use shadow passwords]) + else + AC_MSG_RESULT(no) + LIBSHADOW= + LIBGEN= + fi + + dnl finally make the relevant binaries setuid root, if we have shadow passwds. + dnl this still applies, if we could use it indirectly through pam. + if test "x$use_shadow" = xyes || + ( test "x$use_pam" = xyes && test "x$ac_use_shadow" = xyes ); then + case $host in + *-*-freebsd* | *-*-netbsd* | *-*-openbsd*) + SETUIDFLAGS="-m 4755 -o root";; + *) + SETUIDFLAGS="-m 4755";; + esac + fi + AC_SUBST(SETUIDFLAGS) + +]) + +AC_DEFUN([KDE_PASSWDLIBS], [ + AC_REQUIRE([KDE_MISC_TESTS]) dnl for LIBCRYPT + AC_REQUIRE([KDE_PAM]) + AC_REQUIRE([KDE_SHADOWPASSWD]) + + if test "x$use_pam" = "xyes"; then + PASSWDLIBS="$PAMLIBS" + else + PASSWDLIBS="$LIBCRYPT $LIBSHADOW $LIBGEN" + fi + + dnl FreeBSD uses a shadow-like setup, where /etc/passwd holds the users, but + dnl /etc/master.passwd holds the actual passwords. /etc/master.passwd requires + dnl root to read, so kcheckpass needs to be root (even when using pam, since pam + dnl may need to read /etc/master.passwd). + case $host in + *-*-freebsd*) + SETUIDFLAGS="-m 4755 -o root" + ;; + *) + ;; + esac + + AC_SUBST(PASSWDLIBS) +]) + +AC_DEFUN([KDE_CHECK_LIBDL], +[ +AC_CHECK_LIB(dl, dlopen, [ +LIBDL="-ldl" +ac_cv_have_dlfcn=yes +]) + +AC_CHECK_LIB(dld, shl_unload, [ +LIBDL="-ldld" +ac_cv_have_shload=yes +]) + +AC_SUBST(LIBDL) +]) + +AC_DEFUN([KDE_CHECK_DLOPEN], +[ +KDE_CHECK_LIBDL +AC_CHECK_HEADERS(dlfcn.h dl.h) +if test "$ac_cv_header_dlfcn_h" = "no"; then + ac_cv_have_dlfcn=no +fi + +if test "$ac_cv_header_dl_h" = "no"; then + ac_cv_have_shload=no +fi + +dnl XXX why change enable_dlopen? its already set by autoconf's AC_ARG_ENABLE +dnl (MM) +AC_ARG_ENABLE(dlopen, +AC_HELP_STRING([--disable-dlopen],[link statically [default=no]]), +enable_dlopen=$enableval, +enable_dlopen=yes) + +# override the user's opinion, if we know it better ;) +if test "$ac_cv_have_dlfcn" = "no" && test "$ac_cv_have_shload" = "no"; then + enable_dlopen=no +fi + +if test "$ac_cv_have_dlfcn" = "yes"; then + AC_DEFINE_UNQUOTED(HAVE_DLFCN, 1, [Define if you have dlfcn]) +fi + +if test "$ac_cv_have_shload" = "yes"; then + AC_DEFINE_UNQUOTED(HAVE_SHLOAD, 1, [Define if you have shload]) +fi + +if test "$enable_dlopen" = no ; then + test -n "$1" && eval $1 +else + test -n "$2" && eval $2 +fi + +]) + +AC_DEFUN([KDE_CHECK_DYNAMIC_LOADING], +[ +KDE_CHECK_DLOPEN(libtool_enable_shared=yes, libtool_enable_static=no) +KDE_PROG_LIBTOOL +AC_MSG_CHECKING([dynamic loading]) +eval "`egrep '^build_libtool_libs=' libtool`" +if test "$build_libtool_libs" = "yes" && test "$enable_dlopen" = "yes"; then + dynamic_loading=yes + AC_DEFINE_UNQUOTED(HAVE_DYNAMIC_LOADING) +else + dynamic_loading=no +fi +AC_MSG_RESULT($dynamic_loading) +if test "$dynamic_loading" = "yes"; then + $1 +else + $2 +fi +]) + +AC_DEFUN([KDE_ADD_INCLUDES], +[ +if test -z "$1"; then + test_include="Pix.h" +else + test_include="$1" +fi + +AC_MSG_CHECKING([for libg++ ($test_include)]) + +AC_CACHE_VAL(kde_cv_libgpp_includes, +[ +kde_cv_libgpp_includes=no + + for ac_dir in \ + \ + /usr/include/g++ \ + /usr/include \ + /usr/unsupported/include \ + /opt/include \ + $extra_include \ + ; \ + do + if test -r "$ac_dir/$test_include"; then + kde_cv_libgpp_includes=$ac_dir + break + fi + done +]) + +AC_MSG_RESULT($kde_cv_libgpp_includes) +if test "$kde_cv_libgpp_includes" != "no"; then + all_includes="-I$kde_cv_libgpp_includes $all_includes $USER_INCLUDES" +fi +]) +]) + +AC_DEFUN([KDE_CHECK_LIBPTHREAD], +[ + dnl This code is here specifically to handle the + dnl various flavors of threading library on FreeBSD + dnl 4-, 5-, and 6-, and the (weird) rules around it. + dnl There may be an environment PTHREAD_LIBS that + dnl specifies what to use; otherwise, search for it. + dnl -pthread is special cased and unsets LIBPTHREAD + dnl below if found. + LIBPTHREAD="" + + if test -n "$PTHREAD_LIBS"; then + if test "x$PTHREAD_LIBS" = "x-pthread" ; then + LIBPTHREAD="PTHREAD" + else + PTHREAD_LIBS_save="$PTHREAD_LIBS" + PTHREAD_LIBS=`echo "$PTHREAD_LIBS_save" | sed -e 's,^-l,,g'` + AC_MSG_CHECKING([for pthread_create in $PTHREAD_LIBS]) + KDE_CHECK_LIB($PTHREAD_LIBS, pthread_create, [ + LIBPTHREAD="$PTHREAD_LIBS_save"]) + PTHREAD_LIBS="$PTHREAD_LIBS_save" + fi + fi + + dnl Is this test really needed, in the face of the Tru64 test below? + if test -z "$LIBPTHREAD"; then + AC_CHECK_LIB(pthread, pthread_create, [LIBPTHREAD="-lpthread"]) + fi + + dnl This is a special Tru64 check, see BR 76171 issue #18. + if test -z "$LIBPTHREAD" ; then + AC_MSG_CHECKING([for pthread_create in -lpthread]) + kde_safe_libs=$LIBS + LIBS="$LIBS -lpthread" + AC_TRY_LINK([#include ],[(void)pthread_create(0,0,0,0);],[ + AC_MSG_RESULT(yes) + LIBPTHREAD="-lpthread"],[ + AC_MSG_RESULT(no)]) + LIBS=$kde_safe_libs + fi + + dnl Un-special-case for FreeBSD. + if test "x$LIBPTHREAD" = "xPTHREAD" ; then + LIBPTHREAD="" + fi + + AC_SUBST(LIBPTHREAD) +]) + +AC_DEFUN([KDE_CHECK_PTHREAD_OPTION], +[ + USE_THREADS="" + if test -z "$LIBPTHREAD"; then + KDE_CHECK_COMPILER_FLAG(pthread, [USE_THREADS="-D_THREAD_SAFE -pthread"]) + fi + + AH_VERBATIM(__svr_define, [ +#if defined(__SVR4) && !defined(__svr4__) +#define __svr4__ 1 +#endif +]) + case $host_os in + solaris*) + KDE_CHECK_COMPILER_FLAG(mt, [USE_THREADS="-mt"]) + CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_SOLARIS -DSVR4" + ;; + freebsd*) + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE $PTHREAD_CFLAGS" + ;; + aix*) + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" + LIBPTHREAD="$LIBPTHREAD -lc_r" + ;; + linux*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" + if test "$CXX" = "KCC"; then + CXXFLAGS="$CXXFLAGS --thread_safe" + NOOPT_CXXFLAGS="$NOOPT_CXXFLAGS --thread_safe" + fi + ;; + *) + ;; + esac + AC_SUBST(USE_THREADS) + AC_SUBST(LIBPTHREAD) +]) + +AC_DEFUN([KDE_CHECK_THREADING], +[ + AC_REQUIRE([KDE_CHECK_LIBPTHREAD]) + AC_REQUIRE([KDE_CHECK_PTHREAD_OPTION]) + dnl default is yes if libpthread is found and no if no libpthread is available + if test -z "$LIBPTHREAD"; then + if test -z "$USE_THREADS"; then + kde_check_threading_default=no + else + kde_check_threading_default=yes + fi + else + kde_check_threading_default=yes + fi + AC_ARG_ENABLE(threading,AC_HELP_STRING([--disable-threading],[disables threading even if libpthread found]), + kde_use_threading=$enableval, kde_use_threading=$kde_check_threading_default) + if test "x$kde_use_threading" = "xyes"; then + AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define if you have a working libpthread (will enable threaded code)]) + fi +]) + +AC_DEFUN([KDE_TRY_LINK_PYTHON], +[ +if test "$kde_python_link_found" = no; then + +if test "$1" = normal; then + AC_MSG_CHECKING(if a Python application links) +else + AC_MSG_CHECKING(if Python depends on $2) +fi + +AC_CACHE_VAL(kde_cv_try_link_python_$1, +[ +kde_save_cflags="$CFLAGS" +CFLAGS="$CFLAGS $PYTHONINC" +kde_save_libs="$LIBS" +LIBS="$LIBS $LIBPYTHON $2 $LIBDL $LIBSOCKET" +kde_save_ldflags="$LDFLAGS" +LDFLAGS="$LDFLAGS $PYTHONLIB" + +AC_TRY_LINK( +[ +#include +],[ + PySys_SetArgv(1, 0); +], + [kde_cv_try_link_python_$1=yes], + [kde_cv_try_link_python_$1=no] +) +CFLAGS="$kde_save_cflags" +LIBS="$kde_save_libs" +LDFLAGS="$kde_save_ldflags" +]) + +if test "$kde_cv_try_link_python_$1" = "yes"; then + AC_MSG_RESULT(yes) + kde_python_link_found=yes + if test ! "$1" = normal; then + LIBPYTHON="$LIBPYTHON $2" + fi + $3 +else + AC_MSG_RESULT(no) + $4 +fi + +fi + +]) + +AC_DEFUN([KDE_CHECK_PYTHON_DIR], +[ +AC_MSG_CHECKING([for Python directory]) + +AC_CACHE_VAL(kde_cv_pythondir, +[ + if test -z "$PYTHONDIR"; then + kde_cv_pythondir=/usr/local + else + kde_cv_pythondir="$PYTHONDIR" + fi +]) + +AC_ARG_WITH(pythondir, +AC_HELP_STRING([--with-pythondir=pythondir],[use python installed in pythondir]), +[ + ac_python_dir=$withval +], ac_python_dir=$kde_cv_pythondir +) + +AC_MSG_RESULT($ac_python_dir) +]) + +AC_DEFUN([KDE_CHECK_PYTHON_INTERN], +[ +AC_REQUIRE([KDE_CHECK_LIBDL]) +AC_REQUIRE([KDE_CHECK_LIBPTHREAD]) +AC_REQUIRE([KDE_CHECK_PYTHON_DIR]) + +if test -z "$1"; then + version="1.5" +else + version="$1" +fi + +AC_MSG_CHECKING([for Python$version]) + +python_incdirs="$ac_python_dir/include /usr/include /usr/local/include/ $kde_extra_includes" +AC_FIND_FILE(Python.h, $python_incdirs, python_incdir) +if test ! -r $python_incdir/Python.h; then + AC_FIND_FILE(python$version/Python.h, $python_incdirs, python_incdir) + python_incdir=$python_incdir/python$version + if test ! -r $python_incdir/Python.h; then + python_incdir=no + fi +fi + +PYTHONINC=-I$python_incdir + +python_libdirs="$ac_python_dir/lib$kdelibsuff /usr/lib$kdelibsuff /usr/local /usr/lib$kdelibsuff $kde_extra_libs" +AC_FIND_FILE(libpython$version.so, $python_libdirs, python_libdir) +if test ! -r $python_libdir/libpython$version.so; then + AC_FIND_FILE(libpython$version.a, $python_libdirs, python_libdir) + if test ! -r $python_libdir/libpython$version.a; then + AC_FIND_FILE(python$version/config/libpython$version.a, $python_libdirs, python_libdir) + python_libdir=$python_libdir/python$version/config + if test ! -r $python_libdir/libpython$version.a; then + python_libdir=no + fi + fi +fi + +PYTHONLIB=-L$python_libdir +kde_orig_LIBPYTHON=$LIBPYTHON +if test -z "$LIBPYTHON"; then + LIBPYTHON=-lpython$version +fi + +AC_FIND_FILE(python$version/copy.py, $python_libdirs, python_moddir) +python_moddir=$python_moddir/python$version +if test ! -r $python_moddir/copy.py; then + python_moddir=no +fi + +PYTHONMODDIR=$python_moddir + +AC_MSG_RESULT(header $python_incdir library $python_libdir modules $python_moddir) + +if test x$python_incdir = xno || test x$python_libdir = xno || test x$python_moddir = xno; then + LIBPYTHON=$kde_orig_LIBPYTHON + test "x$PYTHONLIB" = "x-Lno" && PYTHONLIB="" + test "x$PYTHONINC" = "x-Ino" && PYTHONINC="" + $2 +else + dnl Note: this test is very weak + kde_python_link_found=no + KDE_TRY_LINK_PYTHON(normal) + KDE_TRY_LINK_PYTHON(m, -lm) + KDE_TRY_LINK_PYTHON(pthread, $LIBPTHREAD) + KDE_TRY_LINK_PYTHON(tcl, -ltcl) + KDE_TRY_LINK_PYTHON(db2, -ldb2) + KDE_TRY_LINK_PYTHON(m_and_thread, [$LIBPTHREAD -lm]) + KDE_TRY_LINK_PYTHON(m_and_thread_and_util, [$LIBPTHREAD -lm -lutil]) + KDE_TRY_LINK_PYTHON(m_and_thread_and_db3, [$LIBPTHREAD -lm -ldb-3 -lutil]) + KDE_TRY_LINK_PYTHON(pthread_and_db3, [$LIBPTHREAD -ldb-3]) + KDE_TRY_LINK_PYTHON(m_and_thread_and_db, [$LIBPTHREAD -lm -ldb -ltermcap -lutil]) + KDE_TRY_LINK_PYTHON(pthread_and_dl, [$LIBPTHREAD $LIBDL -lutil -lreadline -lncurses -lm]) + KDE_TRY_LINK_PYTHON(pthread_and_panel_curses, [$LIBPTHREAD $LIBDL -lm -lpanel -lcurses]) + KDE_TRY_LINK_PYTHON(m_and_thread_and_db_special, [$LIBPTHREAD -lm -ldb -lutil], [], + [AC_MSG_WARN([it seems, Python depends on another library. + Please set LIBPYTHON to '-lpython$version -lotherlib' before calling configure to fix this + and contact the authors to let them know about this problem]) + ]) + + LIBPYTHON="$LIBPYTHON $LIBDL $LIBSOCKET" + AC_SUBST(PYTHONINC) + AC_SUBST(PYTHONLIB) + AC_SUBST(LIBPYTHON) + AC_SUBST(PYTHONMODDIR) + AC_DEFINE(HAVE_PYTHON, 1, [Define if you have the development files for python]) +fi + +]) + + +AC_DEFUN([KDE_CHECK_PYTHON], +[ + KDE_CHECK_PYTHON_INTERN("2.5", + [KDE_CHECK_PYTHON_INTERN("2.4", + [KDE_CHECK_PYTHON_INTERN("2.3", + [KDE_CHECK_PYTHON_INTERN("2.2", + [KDE_CHECK_PYTHON_INTERN("2.1", + [KDE_CHECK_PYTHON_INTERN("2.0", + [KDE_CHECK_PYTHON_INTERN($1, $2) ]) + ]) + ]) + ]) + ]) + ]) +]) + +AC_DEFUN([KDE_CHECK_STL], +[ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="`echo $CXXFLAGS | sed s/-fno-exceptions//`" + + AC_MSG_CHECKING([if C++ programs can be compiled]) + AC_CACHE_VAL(kde_cv_stl_works, + [ + AC_TRY_COMPILE([ +#include +using namespace std; +],[ + string astring="Hallo Welt."; + astring.erase(0, 6); // now astring is "Welt" + return 0; +], kde_cv_stl_works=yes, + kde_cv_stl_works=no) +]) + + AC_MSG_RESULT($kde_cv_stl_works) + + if test "$kde_cv_stl_works" = "yes"; then + # back compatible + AC_DEFINE_UNQUOTED(HAVE_SGI_STL, 1, [Define if you have a STL implementation by SGI]) + else + AC_MSG_ERROR([Your Installation isn't able to compile simple C++ programs. +Check config.log for details - if you're using a Linux distribution you might miss +a package named similar to libstdc++-dev.]) + fi + + CXXFLAGS="$ac_save_CXXFLAGS" + AC_LANG_RESTORE +]) + +AC_DEFUN([AC_FIND_QIMGIO], + [AC_REQUIRE([AC_FIND_JPEG]) +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_MSG_CHECKING([for qimgio]) +AC_CACHE_VAL(ac_cv_lib_qimgio, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +ac_save_LIBS="$LIBS" +ac_save_CXXFLAGS="$CXXFLAGS" +LIBS="$all_libraries -lqimgio -lpng -lz $LIBJPEG $LIBQT" +CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes" +AC_TRY_RUN(dnl +[ +#include +#include +int main() { + QString t = "hallo"; + t.fill('t'); + qInitImageIO(); +} +], + ac_cv_lib_qimgio=yes, + ac_cv_lib_qimgio=no, + ac_cv_lib_qimgio=no) +LIBS="$ac_save_LIBS" +CXXFLAGS="$ac_save_CXXFLAGS" +AC_LANG_RESTORE +])dnl +if eval "test \"`echo $ac_cv_lib_qimgio`\" = yes"; then + LIBQIMGIO="-lqimgio -lpng -lz $LIBJPEG" + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(HAVE_QIMGIO, 1, [Define if you have the Qt extension qimgio available]) + AC_SUBST(LIBQIMGIO) +else + AC_MSG_RESULT(not found) +fi +]) + +AC_DEFUN([AM_DISABLE_LIBRARIES], +[ + AC_PROVIDE([AM_ENABLE_STATIC]) + AC_PROVIDE([AM_ENABLE_SHARED]) + enable_static=no + enable_shared=yes +]) + + +AC_DEFUN([AC_CHECK_UTMP_FILE], +[ + AC_MSG_CHECKING([for utmp file]) + + AC_CACHE_VAL(kde_cv_utmp_file, + [ + kde_cv_utmp_file=no + + for ac_file in \ + \ + /var/run/utmp \ + /var/adm/utmp \ + /etc/utmp \ + ; \ + do + if test -r "$ac_file"; then + kde_cv_utmp_file=$ac_file + break + fi + done + ]) + + if test "$kde_cv_utmp_file" != "no"; then + AC_DEFINE_UNQUOTED(UTMP, "$kde_cv_utmp_file", [Define the file for utmp entries]) + $1 + AC_MSG_RESULT($kde_cv_utmp_file) + else + $2 + AC_MSG_RESULT([non found]) + fi +]) + + +AC_DEFUN([KDE_CREATE_SUBDIRSLIST], +[ + +DO_NOT_COMPILE="$DO_NOT_COMPILE CVS debian bsd-port admin" +TOPSUBDIRS="" + +if test ! -s $srcdir/subdirs; then + dnl Note: Makefile.common creates subdirs, so this is just a fallback + files=`cd $srcdir && ls -1` + dirs=`for i in $files; do if test -d $i; then echo $i; fi; done` + for i in $dirs; do + echo $i >> $srcdir/subdirs + done +fi + +ac_topsubdirs= +if test -s $srcdir/inst-apps; then + ac_topsubdirs="`cat $srcdir/inst-apps`" +elif test -s $srcdir/subdirs; then + ac_topsubdirs="`cat $srcdir/subdirs`" +fi + +for i in $ac_topsubdirs; do + AC_MSG_CHECKING([if $i should be compiled]) + if test -d $srcdir/$i; then + install_it="yes" + for j in $DO_NOT_COMPILE; do + if test $i = $j; then + install_it="no" + fi + done + else + install_it="no" + fi + AC_MSG_RESULT($install_it) + vari=`echo $i | sed -e 's,[[-+.@]],_,g'` + if test $install_it = "yes"; then + TOPSUBDIRS="$TOPSUBDIRS $i" + eval "$vari""_SUBDIR_included=yes" + else + eval "$vari""_SUBDIR_included=no" + fi +done + +AC_SUBST(TOPSUBDIRS) +]) + +AC_DEFUN([KDE_CHECK_NAMESPACES], +[ +AC_MSG_CHECKING(whether C++ compiler supports namespaces) +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_TRY_COMPILE([ +], +[ +namespace Foo { + extern int i; + namespace Bar { + extern int i; + } +} + +int Foo::i = 0; +int Foo::Bar::i = 1; +],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_NAMESPACES) +], [ +AC_MSG_RESULT(no) +]) +AC_LANG_RESTORE +]) + +dnl ------------------------------------------------------------------------ +dnl Check for S_ISSOCK macro. Doesn't exist on Unix SCO. faure@kde.org +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_CHECK_S_ISSOCK], +[ +AC_MSG_CHECKING(for S_ISSOCK) +AC_CACHE_VAL(ac_cv_have_s_issock, +[ +AC_TRY_LINK( +[ +#include +], +[ +struct stat buff; +int b = S_ISSOCK( buff.st_mode ); +], +ac_cv_have_s_issock=yes, +ac_cv_have_s_issock=no) +]) +AC_MSG_RESULT($ac_cv_have_s_issock) +if test "$ac_cv_have_s_issock" = "yes"; then + AC_DEFINE_UNQUOTED(HAVE_S_ISSOCK, 1, [Define if sys/stat.h declares S_ISSOCK.]) +fi + +AH_VERBATIM(_ISSOCK, +[ +#ifndef HAVE_S_ISSOCK +#define HAVE_S_ISSOCK +#define S_ISSOCK(mode) (1==0) +#endif +]) + +]) + +dnl ------------------------------------------------------------------------ +dnl Check for MAXPATHLEN macro, defines KDEMAXPATHLEN. faure@kde.org +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_CHECK_KDEMAXPATHLEN], +[ +AC_MSG_CHECKING(for MAXPATHLEN) +AC_CACHE_VAL(ac_cv_maxpathlen, +[ +cat > conftest.$ac_ext < +#endif +#include +#include +#ifndef MAXPATHLEN +#define MAXPATHLEN 1024 +#endif + +KDE_HELLO MAXPATHLEN + +EOF + +ac_try="$ac_cpp conftest.$ac_ext 2>/dev/null | grep '^KDE_HELLO' >conftest.out" + +if AC_TRY_EVAL(ac_try) && test -s conftest.out; then + ac_cv_maxpathlen=`sed 's#KDE_HELLO ##' conftest.out` +else + ac_cv_maxpathlen=1024 +fi + +rm conftest.* + +]) +AC_MSG_RESULT($ac_cv_maxpathlen) +AC_DEFINE_UNQUOTED(KDEMAXPATHLEN,$ac_cv_maxpathlen, [Define a safe value for MAXPATHLEN] ) +]) + +AC_DEFUN([KDE_CHECK_HEADER], +[ + kde_safe_cppflags=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $all_includes" + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_CHECK_HEADER([$1], [$2], [$3], [$4]) + AC_LANG_RESTORE + CPPFLAGS=$kde_safe_cppflags +]) + +AC_DEFUN([KDE_CHECK_HEADERS], +[ + AH_CHECK_HEADERS([$1]) + AC_LANG_SAVE + kde_safe_cppflags=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $all_includes" + AC_LANG_CPLUSPLUS + AC_CHECK_HEADERS([$1], [$2], [$3], [$4]) + CPPFLAGS=$kde_safe_cppflags + AC_LANG_RESTORE +]) + +AC_DEFUN([KDE_FAST_CONFIGURE], +[ + dnl makes configure fast (needs perl) + AC_ARG_ENABLE(fast-perl, AC_HELP_STRING([--disable-fast-perl],[disable fast Makefile generation (needs perl)]), + with_fast_perl=$enableval, with_fast_perl=yes) +]) + +AC_DEFUN([KDE_CONF_FILES], +[ + val= + if test -f $srcdir/configure.files ; then + val=`sed -e 's%^%\$(top_srcdir)/%' $srcdir/configure.files` + fi + CONF_FILES= + if test -n "$val" ; then + for i in $val ; do + CONF_FILES="$CONF_FILES $i" + done + fi + AC_SUBST(CONF_FILES) +])dnl + +dnl This sets the prefix, for arts and kdelibs +dnl Do NOT use in any other module. +dnl It only looks at --prefix, KDEDIR and falls back to /usr/local/kde +AC_DEFUN([KDE_SET_PREFIX_CORE], +[ + unset CDPATH + dnl make $KDEDIR the default for the installation + AC_PREFIX_DEFAULT(${KDEDIR:-/usr/local/kde}) + + if test "x$prefix" = "xNONE"; then + prefix=$ac_default_prefix + ac_configure_args="$ac_configure_args --prefix=$prefix" + fi + # And delete superfluous '/' to make compares easier + prefix=`echo "$prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'` + exec_prefix=`echo "$exec_prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'` + + kde_libs_prefix='$(prefix)' + kde_libs_htmldir='$(kde_htmldir)' + AC_SUBST(kde_libs_prefix) + AC_SUBST(kde_libs_htmldir) + KDE_FAST_CONFIGURE + KDE_CONF_FILES +]) + + +AC_DEFUN([KDE_SET_PREFIX], +[ + unset CDPATH + dnl We can't give real code to that macro, only a value. + dnl It only matters for --help, since we set the prefix in this function anyway. + AC_PREFIX_DEFAULT(${KDEDIR:-the kde prefix}) + + KDE_SET_DEFAULT_BINDIRS + if test "x$prefix" = "xNONE"; then + dnl no prefix given: look for kde-config in the PATH and deduce the prefix from it + KDE_FIND_PATH(kde-config, KDECONFIG, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(kde-config)], [], prepend) + else + dnl prefix given: look for kde-config, preferrably in prefix, otherwise in PATH + kde_save_PATH="$PATH" + PATH="$exec_prefix/bin:$prefix/bin:$PATH" + KDE_FIND_PATH(kde-config, KDECONFIG, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(kde-config)], [], prepend) + PATH="$kde_save_PATH" + fi + + kde_libs_prefix=`$KDECONFIG --prefix` + if test -z "$kde_libs_prefix" || test ! -x "$kde_libs_prefix"; then + AC_MSG_ERROR([$KDECONFIG --prefix outputed the non existant prefix '$kde_libs_prefix' for kdelibs. + This means it has been moved since you installed it. + This won't work. Please recompile kdelibs for the new prefix. + ]) + fi + kde_libs_htmldir=`$KDECONFIG --install html --expandvars` + + AC_MSG_CHECKING([where to install]) + if test "x$prefix" = "xNONE"; then + prefix=$kde_libs_prefix + AC_MSG_RESULT([$prefix (as returned by kde-config)]) + else + dnl --prefix was given. Compare prefixes and warn (in configure.in.bot.end) if different + given_prefix=$prefix + AC_MSG_RESULT([$prefix (as requested)]) + fi + + # And delete superfluous '/' to make compares easier + prefix=`echo "$prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'` + exec_prefix=`echo "$exec_prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'` + given_prefix=`echo "$given_prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'` + + AC_SUBST(KDECONFIG) + AC_SUBST(kde_libs_prefix) + AC_SUBST(kde_libs_htmldir) + + KDE_FAST_CONFIGURE + KDE_CONF_FILES +]) + +pushdef([AC_PROG_INSTALL], +[ + dnl our own version, testing for a -p flag + popdef([AC_PROG_INSTALL]) + dnl as AC_PROG_INSTALL works as it works we first have + dnl to save if the user didn't specify INSTALL, as the + dnl autoconf one overwrites INSTALL and we have no chance to find + dnl out afterwards + test -n "$INSTALL" && kde_save_INSTALL_given=$INSTALL + test -n "$INSTALL_PROGRAM" && kde_save_INSTALL_PROGRAM_given=$INSTALL_PROGRAM + test -n "$INSTALL_SCRIPT" && kde_save_INSTALL_SCRIPT_given=$INSTALL_SCRIPT + AC_PROG_INSTALL + + if test -z "$kde_save_INSTALL_given" ; then + # OK, user hasn't given any INSTALL, autoconf found one for us + # now we test, if it supports the -p flag + AC_MSG_CHECKING(for -p flag to install) + rm -f confinst.$$.* > /dev/null 2>&1 + echo "Testtest" > confinst.$$.orig + ac_res=no + if ${INSTALL} -p confinst.$$.orig confinst.$$.new > /dev/null 2>&1 ; then + if test -f confinst.$$.new ; then + # OK, -p seems to do no harm to install + INSTALL="${INSTALL} -p" + ac_res=yes + fi + fi + rm -f confinst.$$.* + AC_MSG_RESULT($ac_res) + fi + dnl the following tries to resolve some signs and wonders coming up + dnl with different autoconf/automake versions + dnl e.g.: + dnl *automake 1.4 install-strip sets A_M_INSTALL_PROGRAM_FLAGS to -s + dnl and has INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(A_M_INSTALL_PROGRAM_FLAGS) + dnl it header-vars.am, so there the actual INSTALL_PROGRAM gets the -s + dnl *automake 1.4a (and above) use INSTALL_STRIP_FLAG and only has + dnl INSTALL_PROGRAM = @INSTALL_PROGRAM@ there, but changes the + dnl install-@DIR@PROGRAMS targets to explicitly use that flag + dnl *autoconf 2.13 is dumb, and thinks it can use INSTALL_PROGRAM as + dnl INSTALL_SCRIPT, which breaks with automake <= 1.4 + dnl *autoconf >2.13 (since 10.Apr 1999) has not that failure + dnl *sometimes KDE does not use the install-@DIR@PROGRAM targets from + dnl automake (due to broken Makefile.am or whatever) to install programs, + dnl and so does not see the -s flag in automake > 1.4 + dnl to clean up that mess we: + dnl +set INSTALL_PROGRAM to use INSTALL_STRIP_FLAG + dnl which cleans KDE's program with automake > 1.4; + dnl +set INSTALL_SCRIPT to only use INSTALL, to clean up autoconf's problems + dnl with automake<=1.4 + dnl note that dues to this sometimes two '-s' flags are used (if KDE + dnl properly uses install-@DIR@PROGRAMS, but I don't care + dnl + dnl And to all this comes, that I even can't write in comments variable + dnl names used by automake, because it is so stupid to think I wanted to + dnl _use_ them, therefor I have written A_M_... instead of AM_ + dnl hmm, I wanted to say something ... ahh yes: Arghhh. + + if test -z "$kde_save_INSTALL_PROGRAM_given" ; then + INSTALL_PROGRAM='${INSTALL} $(INSTALL_STRIP_FLAG)' + fi + if test -z "$kde_save_INSTALL_SCRIPT_given" ; then + INSTALL_SCRIPT='${INSTALL}' + fi +])dnl + +AC_DEFUN([KDE_LANG_CPLUSPLUS], +[AC_LANG_CPLUSPLUS +ac_link='rm -rf SunWS_cache; ${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC' +pushdef([AC_LANG_CPLUSPLUS], [popdef([AC_LANG_CPLUSPLUS]) KDE_LANG_CPLUSPLUS]) +]) + +pushdef([AC_LANG_CPLUSPLUS], +[popdef([AC_LANG_CPLUSPLUS]) +KDE_LANG_CPLUSPLUS +]) + +AC_DEFUN([KDE_CHECK_LONG_LONG], +[ +AC_MSG_CHECKING(for long long) +AC_CACHE_VAL(kde_cv_c_long_long, +[ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_LINK([], [ + long long foo = 0; + foo = foo+1; + ], + kde_cv_c_long_long=yes, kde_cv_c_long_long=no) + AC_LANG_RESTORE +]) +AC_MSG_RESULT($kde_cv_c_long_long) +if test "$kde_cv_c_long_long" = yes; then + AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have long long as datatype]) +fi +]) + +AC_DEFUN([KDE_CHECK_LIB], +[ + kde_save_LDFLAGS="$LDFLAGS" + dnl AC_CHECK_LIB modifies LIBS, so save it here + kde_save_LIBS="$LIBS" + LDFLAGS="$LDFLAGS $all_libraries" + case $host_os in + aix*) LDFLAGS="-brtl $LDFLAGS" + test "$GCC" = yes && LDFLAGS="-Wl,$LDFLAGS" + ;; + esac + AC_CHECK_LIB($1, $2, $3, $4, $5) + LDFLAGS="$kde_save_LDFLAGS" + LIBS="$kde_save_LIBS" +]) + +AC_DEFUN([KDE_JAVA_PREFIX], +[ + dir=`dirname "$1"` + base=`basename "$1"` + list=`ls -1 $dir 2> /dev/null` + for entry in $list; do + if test -d $dir/$entry/bin; then + case $entry in + $base) + javadirs="$javadirs $dir/$entry/bin" + ;; + esac + elif test -d $dir/$entry/jre/bin; then + case $entry in + $base) + javadirs="$javadirs $dir/$entry/jre/bin" + ;; + esac + fi + done +]) + +dnl KDE_CHEC_JAVA_DIR(onlyjre) +AC_DEFUN([KDE_CHECK_JAVA_DIR], +[ + +AC_ARG_WITH(java, +AC_HELP_STRING([--with-java=javadir],[use java installed in javadir, --without-java disables]), +[ ac_java_dir=$withval +], ac_java_dir="" +) + +AC_MSG_CHECKING([for Java]) + +dnl at this point ac_java_dir is either a dir, 'no' to disable, or '' to say look in $PATH +if test "x$ac_java_dir" = "xno"; then + kde_java_bindir=no + kde_java_includedir=no + kde_java_libjvmdir=no + kde_java_libgcjdir=no + kde_java_libhpidir=no +else + if test "x$ac_java_dir" = "x"; then + + + dnl No option set -> collect list of candidate paths + if test -n "$JAVA_HOME"; then + KDE_JAVA_PREFIX($JAVA_HOME) + fi + KDE_JAVA_PREFIX(/usr/j2se) + KDE_JAVA_PREFIX(/usr/lib/j2se) + KDE_JAVA_PREFIX(/usr/j*dk*) + KDE_JAVA_PREFIX(/usr/lib/j*dk*) + KDE_JAVA_PREFIX(/opt/j*sdk*) + KDE_JAVA_PREFIX(/usr/lib/java*) + KDE_JAVA_PREFIX(/usr/java*) + KDE_JAVA_PREFIX(/usr/java/j*dk*) + KDE_JAVA_PREFIX(/usr/java/j*re*) + KDE_JAVA_PREFIX(/usr/lib/SunJava2*) + KDE_JAVA_PREFIX(/usr/lib/SunJava*) + KDE_JAVA_PREFIX(/usr/lib/IBMJava2*) + KDE_JAVA_PREFIX(/usr/lib/IBMJava*) + KDE_JAVA_PREFIX(/opt/java*) + + kde_cv_path="NONE" + kde_save_IFS=$IFS + IFS=':' + for dir in $PATH; do + if test -d "$dir"; then + javadirs="$javadirs $dir" + fi + done + IFS=$kde_save_IFS + jredirs= + + dnl Now javadirs contains a list of paths that exist, all ending with bin/ + for dir in $javadirs; do + dnl Check for the java executable + if test -x "$dir/java"; then + sane_path=$(cd $dir; /bin/pwd) + dnl And also check for a libjvm.so somewhere under there + dnl Since we have to go to the parent dir, /usr/bin is excluded, /usr is too big. + if test "$sane_path" != "/usr/bin"; then + libjvmdir=`find $dir/.. -name libjvm.so | sed 's,libjvm.so,,'|head -n 1` + if test ! -f $libjvmdir/libjvm.so; then continue; fi + jredirs="$jredirs $dir" + fi + fi + done + + dnl Now jredirs contains a reduced list, of paths where both java and ../**/libjvm.so was found + JAVAC= + JAVA= + kde_java_bindir=no + for dir in $jredirs; do + JAVA="$dir/java" + kde_java_bindir=$dir + if test -x "$dir/javac"; then + JAVAC="$dir/javac" + break + fi + done + + if test -n "$JAVAC"; then + dnl this substitution might not work - well, we test for jni.h below + kde_java_includedir=`echo $JAVAC | sed -e 's,bin/javac$,include/,'` + else + kde_java_includedir=no + fi + else + dnl config option set + kde_java_bindir=$ac_java_dir/bin + if test -x $ac_java_dir/bin/java && test ! -x $ac_java_dir/bin/javac; then + kde_java_includedir=no + else + kde_java_includedir=$ac_java_dir/include + fi + fi +fi + +dnl At this point kde_java_bindir and kde_java_includedir are either set or "no" +if test "x$kde_java_bindir" != "xno"; then + + dnl Look for libjvm.so + kde_java_libjvmdir=`find $kde_java_bindir/.. -name libjvm.so | sed 's,libjvm.so,,'|head -n 1` + dnl Look for libgcj.so + kde_java_libgcjdir=`find $kde_java_bindir/.. -name libgcj.so | sed 's,libgcj.so,,'|head -n 1` + dnl Look for libhpi.so and avoid green threads + kde_java_libhpidir=`find $kde_java_bindir/.. -name libhpi.so | grep -v green | sed 's,libhpi.so,,' | head -n 1` + + dnl Now check everything's fine under there + dnl the include dir is our flag for having the JDK + if test -d "$kde_java_includedir"; then + if test ! -x "$kde_java_bindir/javac"; then + AC_MSG_ERROR([javac not found under $kde_java_bindir - it seems you passed a wrong --with-java.]) + fi + if test ! -x "$kde_java_bindir/javah"; then + AC_MSG_ERROR([javah not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.]) + fi + if test ! -x "$kde_java_bindir/jar"; then + AC_MSG_ERROR([jar not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.]) + fi + if test ! -r "$kde_java_includedir/jni.h"; then + AC_MSG_ERROR([jni.h not found under $kde_java_includedir. Use --with-java or --without-java.]) + fi + + jni_includes="-I$kde_java_includedir" + dnl Strange thing, jni.h requires jni_md.h which is under genunix here.. + dnl and under linux here.. + + dnl not needed for gcj + + if test "x$kde_java_libgcjdir" = "x"; then + test -d "$kde_java_includedir/linux" && jni_includes="$jni_includes -I$kde_java_includedir/linux" + test -d "$kde_java_includedir/solaris" && jni_includes="$jni_includes -I$kde_java_includedir/solaris" + test -d "$kde_java_includedir/genunix" && jni_includes="$jni_includes -I$kde_java_includedir/genunix" + fi + + else + JAVAC= + jni_includes= + fi + + if test "x$kde_java_libgcjdir" = "x"; then + if test ! -r "$kde_java_libjvmdir/libjvm.so"; then + AC_MSG_ERROR([libjvm.so not found under $kde_java_libjvmdir. Use --without-java.]) + fi + else + if test ! -r "$kde_java_libgcjdir/libgcj.so"; then + AC_MSG_ERROR([libgcj.so not found under $kde_java_libgcjdir. Use --without-java.]) + fi + fi + + if test ! -x "$kde_java_bindir/java"; then + AC_MSG_ERROR([java not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.]) + fi + + dnl not needed for gcj compile + + if test "x$kde_java_libgcjdir" = "x"; then + if test ! -r "$kde_java_libhpidir/libhpi.so"; then + AC_MSG_ERROR([libhpi.so not found under $kde_java_libhpidir. Use --without-java.]) + fi + fi + + if test -n "$jni_includes"; then + dnl Check for JNI version + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_cxxflags_safe="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS $all_includes $jni_includes" + + AC_TRY_COMPILE([ + #include + ], + [ + #ifndef JNI_VERSION_1_2 + Syntax Error + #endif + ],[ kde_jni_works=yes ], + [ kde_jni_works=no ]) + + if test $kde_jni_works = no; then + AC_MSG_ERROR([Incorrect version of $kde_java_includedir/jni.h. + You need to have Java Development Kit (JDK) version 1.2. + + Use --with-java to specify another location. + Use --without-java to configure without java support. + Or download a newer JDK and try again. + See e.g. http://java.sun.com/products/jdk/1.2 ]) + fi + + CXXFLAGS="$ac_cxxflags_safe" + AC_LANG_RESTORE + + dnl All tests ok, inform and subst the variables + + JAVAC=$kde_java_bindir/javac + JAVAH=$kde_java_bindir/javah + JAR=$kde_java_bindir/jar + AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is]) + if test "x$kde_java_libgcjdir" = "x"; then + JVMLIBS="-L$kde_java_libjvmdir -ljvm -L$kde_java_libhpidir -lhpi" + else + JVMLIBS="-L$kde_java_libgcjdir -lgcj" + fi + AC_MSG_RESULT([java JDK in $kde_java_bindir]) + + else + AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is]) + AC_MSG_RESULT([java JRE in $kde_java_bindir]) + fi +elif test -d "/Library/Java/Home"; then + kde_java_bindir="/Library/Java/Home/bin" + jni_includes="-I/Library/Java/Home/include" + + JAVAC=$kde_java_bindir/javac + JAVAH=$kde_java_bindir/javah + JAR=$kde_java_bindir/jar + JVMLIBS="-Wl,-framework,JavaVM" + + AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is]) + AC_MSG_RESULT([Apple Java Framework]) +else + AC_MSG_RESULT([none found]) +fi + +AC_SUBST(JAVAC) +AC_SUBST(JAVAH) +AC_SUBST(JAR) +AC_SUBST(JVMLIBS) +AC_SUBST(jni_includes) + +# for backward compat +kde_cv_java_includedir=$kde_java_includedir +kde_cv_java_bindir=$kde_java_bindir +]) + +dnl this is a redefinition of autoconf 2.5x's AC_FOREACH. +dnl When the argument list becomes big, as in KDE for AC_OUTPUT in +dnl big packages, m4_foreach is dog-slow. So use our own version of +dnl it. (matz@kde.org) +m4_define([mm_foreach], +[m4_pushdef([$1])_mm_foreach($@)m4_popdef([$1])]) +m4_define([mm_car], [[$1]]) +m4_define([mm_car2], [[$@]]) +m4_define([_mm_foreach], +[m4_if(m4_quote($2), [], [], + [m4_define([$1], mm_car($2))$3[]_mm_foreach([$1], + mm_car2(m4_shift($2)), + [$3])])]) +m4_define([AC_FOREACH], +[mm_foreach([$1], m4_split(m4_normalize([$2])), [$3])]) + +AC_DEFUN([KDE_NEED_FLEX], +[ +kde_libs_safe=$LIBS +LIBS="$LIBS $USER_LDFLAGS" +AM_PROG_LEX +LIBS=$kde_libs_safe +if test -z "$LEXLIB"; then + AC_MSG_ERROR([You need to have flex installed.]) +fi +AC_SUBST(LEXLIB) +]) + +AC_DEFUN([AC_PATH_QTOPIA], +[ + dnl TODO: use AC_CACHE_VAL + + if test -z "$1"; then + qtopia_minver_maj=1 + qtopia_minver_min=5 + qtopia_minver_pat=0 + else + qtopia_minver_maj=`echo "$1" | sed -e "s/^\(.*\)\..*\..*$/\1/"` + qtopia_minver_min=`echo "$1" | sed -e "s/^.*\.\(.*\)\..*$/\1/"` + qtopia_minver_pat=`echo "$1" | sed -e "s/^.*\..*\.\(.*\)$/\1/"` + fi + + qtopia_minver="$qtopia_minver_maj$qtopia_minver_min$qtopia_minver_pat" + qtopia_minverstr="$qtopia_minver_maj.$qtopia_minver_min.$qtopia_minver_pat" + + AC_REQUIRE([AC_PATH_QT]) + + AC_MSG_CHECKING([for Qtopia]) + + LIB_QTOPIA="-lqpe" + AC_SUBST(LIB_QTOPIA) + + kde_qtopia_dirs="$QPEDIR /opt/Qtopia" + + ac_qtopia_incdir=NO + + AC_ARG_WITH(qtopia-dir, + AC_HELP_STRING([--with-qtopia-dir=DIR],[where the root of Qtopia is installed]), + [ ac_qtopia_incdir="$withval"/include] ) + + qtopia_incdirs="" + for dir in $kde_qtopia_dirs; do + qtopia_incdirs="$qtopia_incdirs $dir/include" + done + + if test ! "$ac_qtopia_incdir" = "NO"; then + qtopia_incdirs="$ac_qtopia_incdir $qtopia_incdirs" + fi + + qtopia_incdir="" + AC_FIND_FILE(qpe/qpeapplication.h, $qtopia_incdirs, qtopia_incdir) + ac_qtopia_incdir="$qtopia_incdir" + + if test -z "$qtopia_incdir"; then + AC_MSG_ERROR([Cannot find Qtopia headers. Please check your installation.]) + fi + + qtopia_ver_maj=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION "\(.*\)\..*\..*".*,\1,p'`; + qtopia_ver_min=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION ".*\.\(.*\)\..*".*,\1,p'`; + qtopia_ver_pat=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION ".*\..*\.\(.*\)".*,\1,p'`; + + qtopia_ver="$qtopia_ver_maj$qtopia_ver_min$qtopia_ver_pat" + qtopia_verstr="$qtopia_ver_maj.$qtopia_ver_min.$qtopia_ver_pat" + if test "$qtopia_ver" -lt "$qtopia_minver"; then + AC_MSG_ERROR([found Qtopia version $qtopia_verstr but version $qtopia_minverstr +is required.]) + fi + + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + + ac_cxxflags_safe="$CXXFLAGS" + ac_ldflags_safe="$LDFLAGS" + ac_libs_safe="$LIBS" + + CXXFLAGS="$CXXFLAGS -I$qtopia_incdir $all_includes" + LDFLAGS="$LDFLAGS $QT_LDFLAGS $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS" + LIBS="$LIBS $LIB_QTOPIA $LIBQT" + + cat > conftest.$ac_ext < +#include + +int main( int argc, char **argv ) +{ + QPEApplication app( argc, argv ); + return 0; +} +EOF + + if AC_TRY_EVAL(ac_link) && test -s conftest; then + rm -f conftest* + else + rm -f conftest* + AC_MSG_ERROR([Cannot link small Qtopia Application. For more details look at +the end of config.log]) + fi + + CXXFLAGS="$ac_cxxflags_safe" + LDFLAGS="$ac_ldflags_safe" + LIBS="$ac_libs_safe" + + AC_LANG_RESTORE + + QTOPIA_INCLUDES="-I$qtopia_incdir" + AC_SUBST(QTOPIA_INCLUDES) + + AC_MSG_RESULT([found version $qtopia_verstr with headers at $qtopia_incdir]) +]) + + +AC_DEFUN([KDE_INIT_DOXYGEN], +[ +AC_MSG_CHECKING([for Qt docs]) +kde_qtdir= +if test "${with_qt_dir+set}" = set; then + kde_qtdir="$with_qt_dir" +fi + +AC_FIND_FILE(qsql.html, [ $kde_qtdir/doc/html $QTDIR/doc/html /usr/share/doc/packages/qt3/html /usr/lib/qt/doc /usr/lib/qt3/doc /usr/lib/qt3/doc/html /usr/doc/qt3/html /usr/doc/qt3 /usr/share/doc/qt3-doc /usr/share/qt3/doc/html /usr/X11R6/share/doc/qt/html ], QTDOCDIR) +AC_MSG_RESULT($QTDOCDIR) + +AC_SUBST(QTDOCDIR) + +KDE_FIND_PATH(dot, DOT, [], []) +if test -n "$DOT"; then + KDE_HAVE_DOT="YES" +else + KDE_HAVE_DOT="NO" +fi +AC_SUBST(KDE_HAVE_DOT) +KDE_FIND_PATH(doxygen, DOXYGEN, [], []) +AC_SUBST(DOXYGEN) + +DOXYGEN_PROJECT_NAME="$1" +DOXYGEN_PROJECT_NUMBER="$2" +AC_SUBST(DOXYGEN_PROJECT_NAME) +AC_SUBST(DOXYGEN_PROJECT_NUMBER) + +KDE_HAS_DOXYGEN=no +if test -n "$DOXYGEN" && test -x "$DOXYGEN" && test -f $QTDOCDIR/qsql.html; then + KDE_HAS_DOXYGEN=yes +fi +AC_SUBST(KDE_HAS_DOXYGEN) + +]) + + +AC_DEFUN([AC_FIND_BZIP2], +[ +AC_MSG_CHECKING([for bzDecompress in libbz2]) +AC_CACHE_VAL(ac_cv_lib_bzip2, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +kde_save_LIBS="$LIBS" +LIBS="$all_libraries $USER_LDFLAGS -lbz2 $LIBSOCKET" +kde_save_CXXFLAGS="$CXXFLAGS" +CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES" +AC_TRY_LINK(dnl +[ +#define BZ_NO_STDIO +#include +], + [ bz_stream s; (void) bzDecompress(&s); ], + eval "ac_cv_lib_bzip2='-lbz2'", + eval "ac_cv_lib_bzip2=no") +LIBS="$kde_save_LIBS" +CXXFLAGS="$kde_save_CXXFLAGS" +AC_LANG_RESTORE +])dnl +AC_MSG_RESULT($ac_cv_lib_bzip2) + +if test ! "$ac_cv_lib_bzip2" = no; then + BZIP2DIR=bzip2 + + LIBBZ2="$ac_cv_lib_bzip2" + AC_SUBST(LIBBZ2) + +else + + cxx_shared_flag= + ld_shared_flag= + KDE_CHECK_COMPILER_FLAG(shared, [ + ld_shared_flag="-shared" + ]) + KDE_CHECK_COMPILER_FLAG(fPIC, [ + cxx_shared_flag="-fPIC" + ]) + + AC_MSG_CHECKING([for BZ2_bzDecompress in (shared) libbz2]) + AC_CACHE_VAL(ac_cv_lib_bzip2_prefix, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + kde_save_LIBS="$LIBS" + LIBS="$all_libraries $USER_LDFLAGS $ld_shared_flag -lbz2 $LIBSOCKET" + kde_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CFLAGS $cxx_shared_flag $all_includes $USER_INCLUDES" + + AC_TRY_LINK(dnl + [ + #define BZ_NO_STDIO + #include + ], + [ bz_stream s; (void) BZ2_bzDecompress(&s); ], + eval "ac_cv_lib_bzip2_prefix='-lbz2'", + eval "ac_cv_lib_bzip2_prefix=no") + LIBS="$kde_save_LIBS" + CXXFLAGS="$kde_save_CXXFLAGS" + AC_LANG_RESTORE + ])dnl + + AC_MSG_RESULT($ac_cv_lib_bzip2_prefix) + + if test ! "$ac_cv_lib_bzip2_prefix" = no; then + BZIP2DIR=bzip2 + + LIBBZ2="$ac_cv_lib_bzip2_prefix" + AC_SUBST(LIBBZ2) + + AC_DEFINE(NEED_BZ2_PREFIX, 1, [Define if the libbz2 functions need the BZ2_ prefix]) + dnl else, we just ignore this + fi + +fi +AM_CONDITIONAL(include_BZIP2, test -n "$BZIP2DIR") +]) + +dnl ------------------------------------------------------------------------ +dnl Try to find the SSL headers and libraries. +dnl $(SSL_LDFLAGS) will be -Lsslliblocation (if needed) +dnl and $(SSL_INCLUDES) will be -Isslhdrlocation (if needed) +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([KDE_CHECK_SSL], +[ +LIBSSL="-lssl -lcrypto" +AC_REQUIRE([KDE_CHECK_LIB64]) + +ac_ssl_includes=NO ac_ssl_libraries=NO +ssl_libraries="" +ssl_includes="" +AC_ARG_WITH(ssl-dir, + AC_HELP_STRING([--with-ssl-dir=DIR],[where the root of OpenSSL is installed]), + [ ac_ssl_includes="$withval"/include + ac_ssl_libraries="$withval"/lib$kdelibsuff + ]) + +want_ssl=yes +AC_ARG_WITH(ssl, + AC_HELP_STRING([--without-ssl],[disable SSL checks]), + [want_ssl=$withval]) + +if test $want_ssl = yes; then + +AC_MSG_CHECKING(for OpenSSL) + +AC_CACHE_VAL(ac_cv_have_ssl, +[#try to guess OpenSSL locations + + ssl_incdirs="/usr/include /usr/local/include /usr/ssl/include /usr/local/ssl/include $prefix/include $kde_extra_includes" + ssl_incdirs="$ac_ssl_includes $ssl_incdirs" + AC_FIND_FILE(openssl/ssl.h, $ssl_incdirs, ssl_incdir) + ac_ssl_includes="$ssl_incdir" + + ssl_libdirs="/usr/lib$kdelibsuff /usr/local/lib$kdelibsuff /usr/ssl/lib$kdelibsuff /usr/local/ssl/lib$kdelibsuff $libdir $prefix/lib$kdelibsuff $exec_prefix/lib$kdelibsuff $kde_extra_libs" + if test ! "$ac_ssl_libraries" = "NO"; then + ssl_libdirs="$ac_ssl_libraries $ssl_libdirs" + fi + + test=NONE + ssl_libdir=NONE + for dir in $ssl_libdirs; do + try="ls -1 $dir/libssl*" + if test=`eval $try 2> /dev/null`; then ssl_libdir=$dir; break; else echo "tried $dir" >&AC_FD_CC ; fi + done + + ac_ssl_libraries="$ssl_libdir" + + ac_ldflags_safe="$LDFLAGS" + ac_libs_safe="$LIBS" + + LDFLAGS="$LDFLAGS -L$ssl_libdir $all_libraries" + LIBS="$LIBS $LIBSSL -lRSAglue -lrsaref" + + AC_TRY_LINK(,void RSAPrivateEncrypt(void);RSAPrivateEncrypt();, + ac_ssl_rsaref="yes" + , + ac_ssl_rsaref="no" + ) + + LDFLAGS="$ac_ldflags_safe" + LIBS="$ac_libs_safe" + + if test "$ac_ssl_includes" = NO || test "$ac_ssl_libraries" = NO; then + have_ssl=no + else + have_ssl=yes; + fi + + ]) + + eval "$ac_cv_have_ssl" + + AC_MSG_RESULT([libraries $ac_ssl_libraries, headers $ac_ssl_includes]) + + AC_MSG_CHECKING([whether OpenSSL uses rsaref]) + AC_MSG_RESULT($ac_ssl_rsaref) + + AC_MSG_CHECKING([for easter eggs]) + AC_MSG_RESULT([none found]) + +else + have_ssl=no +fi + +if test "$have_ssl" = yes; then + AC_MSG_CHECKING(for OpenSSL version) + dnl Check for SSL version + AC_CACHE_VAL(ac_cv_ssl_version, + [ + + cat >conftest.$ac_ext < +#include + int main() { + +#ifndef OPENSSL_VERSION_NUMBER + printf("ssl_version=\\"error\\"\n"); +#else + if (OPENSSL_VERSION_NUMBER < 0x00906000) + printf("ssl_version=\\"old\\"\n"); + else + printf("ssl_version=\\"ok\\"\n"); +#endif + return (0); + } +EOF + + ac_save_CPPFLAGS=$CPPFLAGS + if test "$ac_ssl_includes" != "/usr/include"; then + CPPFLAGS="$CPPFLAGS -I$ac_ssl_includes" + fi + + if AC_TRY_EVAL(ac_link); then + + if eval `./conftest 2>&5`; then + if test $ssl_version = error; then + AC_MSG_ERROR([$ssl_incdir/openssl/opensslv.h doesn't define OPENSSL_VERSION_NUMBER !]) + else + if test $ssl_version = old; then + AC_MSG_WARN([OpenSSL version too old. Upgrade to 0.9.6 at least, see http://www.openssl.org. SSL support disabled.]) + have_ssl=no + fi + fi + ac_cv_ssl_version="ssl_version=$ssl_version" + else + AC_MSG_ERROR([Your system couldn't run a small SSL test program. + Check config.log, and if you can't figure it out, send a mail to + David Faure , attaching your config.log]) + fi + + else + AC_MSG_ERROR([Your system couldn't link a small SSL test program. + Check config.log, and if you can't figure it out, send a mail to + David Faure , attaching your config.log]) + fi + CPPFLAGS=$ac_save_CPPFLAGS + + ]) + + eval "$ac_cv_ssl_version" + AC_MSG_RESULT($ssl_version) +fi + +if test "$have_ssl" != yes; then + LIBSSL=""; +else + AC_DEFINE(HAVE_SSL, 1, [If we are going to use OpenSSL]) + ac_cv_have_ssl="have_ssl=yes \ + ac_ssl_includes=$ac_ssl_includes ac_ssl_libraries=$ac_ssl_libraries ac_ssl_rsaref=$ac_ssl_rsaref" + + + ssl_libraries="$ac_ssl_libraries" + ssl_includes="$ac_ssl_includes" + + if test "$ac_ssl_rsaref" = yes; then + LIBSSL="-lssl -lcrypto -lRSAglue -lrsaref" + fi + + if test $ssl_version = "old"; then + AC_DEFINE(HAVE_OLD_SSL_API, 1, [Define if you have OpenSSL < 0.9.6]) + fi +fi + +SSL_INCLUDES= + +if test "$ssl_includes" = "/usr/include"; then + if test -f /usr/kerberos/include/krb5.h; then + SSL_INCLUDES="-I/usr/kerberos/include" + fi +elif test "$ssl_includes" != "/usr/local/include" && test -n "$ssl_includes"; then + SSL_INCLUDES="-I$ssl_includes" +fi + +if test "$ssl_libraries" = "/usr/lib" || test "$ssl_libraries" = "/usr/local/lib" || test -z "$ssl_libraries" || test "$ssl_libraries" = "NONE"; then + SSL_LDFLAGS="" +else + SSL_LDFLAGS="-L$ssl_libraries -R$ssl_libraries" +fi + +AC_SUBST(SSL_INCLUDES) +AC_SUBST(SSL_LDFLAGS) +AC_SUBST(LIBSSL) +]) + +AC_DEFUN([KDE_CHECK_STRLCPY], +[ + AC_REQUIRE([AC_CHECK_STRLCAT]) + AC_REQUIRE([AC_CHECK_STRLCPY]) + AC_CHECK_SIZEOF(size_t) + AC_CHECK_SIZEOF(unsigned long) + + AC_MSG_CHECKING([sizeof size_t == sizeof unsigned long]) + AC_TRY_COMPILE(,[ + #if SIZEOF_SIZE_T != SIZEOF_UNSIGNED_LONG + choke me + #endif + ],AC_MSG_RESULT([yes]),[ + AC_MSG_RESULT(no) + AC_MSG_ERROR([ + Apparently on your system our assumption sizeof size_t == sizeof unsigned long + does not apply. Please mail kde-devel@kde.org with a description of your system! + ]) + ]) +]) + +AC_DEFUN([KDE_CHECK_BINUTILS], +[ + AC_MSG_CHECKING([if ld supports unversioned version maps]) + + kde_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" + echo "{ local: extern \"C++\" { foo }; };" > conftest.map + AC_TRY_LINK([int foo;], +[ +#ifdef __INTEL_COMPILER +icc apparently does not support libtools version-info and version-script +at the same time. Dunno where the bug is, but until somebody figured out, +better disable the optional version scripts. +#endif + + foo = 42; +], kde_supports_versionmaps=yes, kde_supports_versionmaps=no) + LDFLAGS="$kde_save_LDFLAGS" + rm -f conftest.map + AM_CONDITIONAL(include_VERSION_SCRIPT, + [test "$kde_supports_versionmaps" = "yes" && test "$kde_use_debug_code" = "no"]) + + AC_MSG_RESULT($kde_supports_versionmaps) +]) + +AC_DEFUN([AM_PROG_OBJC],[ +AC_CHECK_PROGS(OBJC, gcc, gcc) +test -z "$OBJC" && AC_MSG_ERROR([no acceptable objective-c gcc found in \$PATH]) +if test "x${OBJCFLAGS-unset}" = xunset; then + OBJCFLAGS="-g -O2" +fi +AC_SUBST(OBJCFLAGS) +_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES(OBJC)]) +]) + +AC_DEFUN([KDE_CHECK_PERL], +[ + KDE_FIND_PATH(perl, PERL, [$bindir $exec_prefix/bin $prefix/bin], [ + AC_MSG_ERROR([No Perl found in your $PATH. +We need perl to generate some code.]) + ]) + AC_SUBST(PERL) +]) + +AC_DEFUN([KDE_CHECK_LARGEFILE], +[ +AC_SYS_LARGEFILE +if test "$ac_cv_sys_file_offset_bits" != no; then + CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits" +fi + +if test "x$ac_cv_sys_large_files" != "xno"; then + CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=1" +fi + +]) + +dnl A small extension to PKG_CHECK_MODULES (defined in pkg.m4.in) +dnl which allows to search for libs that get installed into the KDE prefix. +dnl +dnl Syntax: KDE_PKG_CHECK_MODULES(KSTUFF, libkexif >= 0.2 glib = 1.3.4, action-if, action-not) +dnl defines KSTUFF_LIBS, KSTUFF_CFLAGS, see pkg-config man page +dnl also defines KSTUFF_PKG_ERRORS on error +AC_DEFUN([KDE_PKG_CHECK_MODULES], [ + + PKG_CONFIG_PATH="$prefix/lib${kdelibsuff}/pkgconfig:$PKG_CONFIG_PATH" + if test "$prefix" != "$kde_libs_prefix"; then + PKG_CONFIG_PATH="$kde_libs_prefix/lib${kdelibsuff}/pkgconfig:$PKG_CONFIG_PATH" + fi + export PKG_CONFIG_PATH + PKG_CHECK_MODULES([$1],[$2],[$3],[$4]) +]) + + +dnl Check for PIE support in the compiler and linker +AC_DEFUN([KDE_CHECK_PIE_SUPPORT], +[ + AC_CACHE_CHECK([for PIE support], kde_cv_val_pie_support, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + safe_CXXFLAGS=$CXXFLAGS + safe_LDFLAGS=$LDFLAGS + CXXFLAGS="$CXXFLAGS -fPIE" + LDFLAGS="$LDFLAGS -pie" + + AC_TRY_LINK([int foo;], [], [kde_cv_val_pie_support=yes], [kde_cv_val_pie_support=no]) + + CXXFLAGS=$safe_CXXFLAGS + LDFLAGS=$safe_LDFLAGS + AC_LANG_RESTORE + ]) + + AC_MSG_CHECKING(if enabling -pie/fPIE support) + + AC_ARG_ENABLE(pie, + AC_HELP_STRING([--enable-pie],[platform supports PIE linking [default=detect]]), + [kde_has_pie_support=$enableval], + [kde_has_pie_support=detect]) + + if test "$kde_has_pie_support" = "detect"; then + kde_has_pie_support=$kde_cv_val_pie_support + fi + + AC_MSG_RESULT([$kde_has_pie_support]) + + KDE_USE_FPIE="" + KDE_USE_PIE="" + + AC_SUBST([KDE_USE_FPIE]) + AC_SUBST([KDE_USE_PIE]) + + if test "$kde_has_pie_support" = "yes"; then + KDE_USE_FPIE="-fPIE" + KDE_USE_PIE="-pie" + fi +]) +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +## Copyright 1996, 1997, 1998, 1999, 2000, 2001 +## Free Software Foundation, Inc. +## 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. + +# 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 --silent' +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 s/^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 + +# 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_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 && + 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*) + LINUX_64_MODE="32" + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*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*) + LINUX_64_MODE="64" + 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 + if test ! -s conftest.err; 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 + 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 + testring="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; + ;; + + *) + # 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"`$CONFIG_SHELL [$]0 --fallback-echo "X$testring" 2>/dev/null` \ + = "XX$testring") >/dev/null 2>&1 && + new_result=`expr "X$testring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + testring=$testring$testring + done + testring= + # 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 + + # According to Tom Tromey, Ian Lance Taylor reported there are C compilers + # that will create temporary files in the current directory regardless of + # the output directory. Thus, making CWD read-only will cause this test + # to fail, enabling locking or at least warning the user not to do parallel + # builds. + chmod -w . + + 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 + if test ! -s out/conftest.err; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . + $rm conftest* 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=".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" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/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 + 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 + ;; + +bsdi4*) + 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=".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='$(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*) + 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='.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='.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='.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' + libsuff= + if test "x$LINUX_64_MODE" = x64; then + # Some platforms are per default 64-bit, so there's no /lib64 + if test -d /lib64 -a ! -h /lib64; then + libsuff=64 + fi + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}" + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + # 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 + + # 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}${release}${shared_ext} ${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=".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"; 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)/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 $host_os in + irix5* | nonstopux*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + case $host_cpu in + alpha* | hppa* | i*86 | ia64* | m68* | mips* | powerpc* | sparc* | s390* | sh* | x86_64* ) + lt_cv_deplibs_check_method=pass_all ;; + # the debian people say, arm and glibc 2.3.1 works for them with pass_all + arm* ) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; + esac + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +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*) + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' + else + lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + fi + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +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([AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + + +# 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 + +# +# 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)=]) + + +## 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... +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*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + darwin* | rhapsody*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + 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 + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $compiler_flags $libobjs $deplibs -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $compiler_flags $libobjs $deplibs' + # 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 $compiler_flags $libobjs $deplibs -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 $compiler_flags $libobjs $deplibs~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _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)='-all_load $convenience' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + else + _LT_AC_TAGVAR(ld_shlibs, $1)=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([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 + +# 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 +cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` + +# 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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects -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 + # KDE requires run time linking. Make it the default. + aix_use_runtimelinking=yes + 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' + 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='-qmkshrobj ${wl}-G' + else + shared_flag='-qmkshrobj' + fi + fi + fi + + # Let the compiler handle the export list. + _LT_AC_TAGVAR(always_export_symbols, $1)=no + 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_cmds, $1)="\$CC"' -o $output_objdir/$soname $compiler_flags $libobjs $deplibs `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '" $shared_flag" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $compiler_flags $libobjs $deplibs `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${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 $compiler_flags $libobjs $deplibs ${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 $compiler_flags $libobjs $deplibs ${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)=no + _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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects -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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + darwin* | rhapsody*) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + 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_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | grep '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 $compiler_flags $libobjs $deplibs -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $compiler_flags $deplibs -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $compiler_flags $libobjs $deplibs' + + # 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 $compiler_flags $libobjs $deplibs -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 ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $compiler_flags $deplibs -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 $compiler_flags $libobjs $deplibs~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _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)='-all_load $convenience' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + 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) + # 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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects~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) | egrep "\-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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects~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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects' + ;; + 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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects' + ;; + 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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects --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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects --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 + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _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' + ;; + cxx) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${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::"' + ;; + 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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects --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} $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${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} $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects --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} $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $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} $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects' + _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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects~$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. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects~$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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects ${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 $compiler_flags $predep_objects $libobjs $deplibs $postdep_objects~$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" + +## 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... +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 s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +# 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 + +# 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=$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='$shrext' + +# 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. + test -f Makefile && make "$ltmain" +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 the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# 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'" + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris* | sysv5*) + symcode='[[BDT]]' + ;; +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='[[ABCDGISTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # 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 + ;; + 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) + # 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) + # 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' + ;; + 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 + ;; + + 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 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' + ;; + 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_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + 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 + ;; + + 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 '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[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= + + 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}' + + # 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 $compiler_flags $libobjs $deplibs ${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)=no + _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 '\''/^[[BCDGS]] /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 $compiler_flags $libobjs $deplibs -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 $compiler_flags $libobjs $deplibs -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs=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 $compiler_flags $libobjs $deplibs ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $compiler_flags $libobjs $deplibs ${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 $compiler_flags $libobjs $deplibs ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $compiler_flags $libobjs $deplibs ${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 $compiler_flags $libobjs $deplibs ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $compiler_flags $libobjs $deplibs ${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)" = yes; then + 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 + 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 + + # KDE requires run time linking. Make it the default. + aix_use_runtimelinking=yes + 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' + 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='-qmkshrobj ${wl}-G' + else + shared_flag='-qmkshrobj' + fi + fi + fi + + # Let the compiler handle the export list. + _LT_AC_TAGVAR(always_export_symbols, $1)=no + 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_cmds, $1)="\$CC"' -o $output_objdir/$soname $compiler_flags $libobjs $deplibs `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '" $shared_flag" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $compiler_flags $libobjs $deplibs `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${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 $compiler_flags $libobjs $deplibs ${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 $compiler_flags $libobjs $deplibs ${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 + ;; + + bsdi4*) + _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)=no + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $compiler_flags $libobjs `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' + fix_srcfile_path='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + if test "$GXX" = yes ; then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + 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_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | grep '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 $compiler_flags $libobjs $deplibs -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $compiler_flags $deplibs -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $compiler_flags $libobjs $deplibs' + # 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 $compiler_flags $libobjs $deplibs -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 ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $compiler_flags $deplibs -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 $compiler_flags $libobjs $deplibs~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _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)='-all_load $convenience' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + 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) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $compiler_flags $libobjs $deplibs' + _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 $compiler_flags $libobjs $deplibs~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 $compiler_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $compiler_flags $libobjs $deplibs' + ;; + 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 $compiler_flags $libobjs $deplibs ${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 $compiler_flags $libobjs $deplibs' + _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 $compiler_flags $libobjs $deplibs' + _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 $compiler_flags $libobjs $deplibs$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} $compiler_flags $libobjs $deplibs ${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} $compiler_flags $libobjs $deplibs ${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 ${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 + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $compiler_flags $libobjs $deplibs' + _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 $compiler_flags $libobjs $deplibs~$rm $lib.exp' + else + _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]].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + 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 $compiler_flags $libobjs $deplibs' + 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 $compiler_flags $libobjs $deplibs' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $compiler_flags $libobjs $deplibs' + 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 && break + 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]) +]) diff --git a/libs/taglib/aclocal.m4 b/libs/taglib/aclocal.m4 new file mode 100644 index 0000000000..fcc414d3d8 --- /dev/null +++ b/libs/taglib/aclocal.m4 @@ -0,0 +1,875 @@ +# generated automatically by aclocal 1.10 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006 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_if(m4_PACKAGE_VERSION, [2.61],, +[m4_fatal([this file was generated for autoconf 2.61. +You have another version of autoconf. If you want to use that, +you should regenerate the build system entirely.], [63])]) + +# Copyright (C) 2002, 2003, 2005, 2006 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.10' +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.10], [], + [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 AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.10])dnl +_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 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], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$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 +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, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 9 + +# 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], 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'. + 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 + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch 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/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + 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 + # 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, +[ --disable-dependency-tracking speeds up one-time build + --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])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _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. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. 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 " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/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"]) +]) + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# 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. + +# 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.60])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], +[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], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, + [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) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# 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([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)], + [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 +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])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 (C) 2001, 2003, 2005 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 +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# 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, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# 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 +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# 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 +AC_REQUIRE_AUX_FILE([missing])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 +]) + +# Copyright (C) 2003, 2004, 2005, 2006 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_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _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. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# 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)]) + +# Copyright (C) 2001, 2003, 2005 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 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 outputing VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _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. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +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([acinclude.m4]) diff --git a/libs/taglib/admin/Doxyfile.am b/libs/taglib/admin/Doxyfile.am new file mode 100644 index 0000000000..420b4116db --- /dev/null +++ b/libs/taglib/admin/Doxyfile.am @@ -0,0 +1,102 @@ +## generate API documentation with doxygen +apidox-am-yes: + @if test \! -d "$(top_srcdir)/doc/common/" && test -z "$$DOXDATA" ; then \ + export DOXDATA=$(kde_libs_htmldir)/en/common ; \ + fi ; \ + abs_top_srcdir=`cd $(top_srcdir) && pwd` ;\ + test -d $(top_builddir)/apidocs || \ + ( cd $(top_builddir) && sh $$abs_top_srcdir/admin/doxygen.sh \ + --no-modulename --installdir=$(kde_libs_htmldir)/en \ + --no-recurse $(abs_top_srcdir) . ) ; \ + cd $(top_builddir) && sh $$abs_top_srcdir/admin/doxygen.sh \ + --recurse --no-modulename --installdir=$(kde_libs_htmldir)/en \ + $$abs_top_srcdir $(subdir) + +apidox-am-toplevel-yes: + @if test \! -d "$(top_srcdir)/doc/common/" && test -z "$$ADMIN" ; then \ + export DOXDATA=$(kde_libs_htmldir)/en/common ; \ + fi ; \ + abs_top_srcdir=`cd $(top_srcdir) && pwd` ;\ + cd $(top_builddir) && sh $$abs_top_srcdir/admin/doxygen.sh \ + --no-modulename --installdir=$(kde_libs_htmldir)/en \ + $$abs_top_srcdir + +## Don't generate API documentation without doxygen +apidox-am-no: + +apidox-am-toplevel-no: + + +apidox: + @if test "$(subdir)" != "."; then \ + $(MAKE) apidox-am-@KDE_HAS_DOXYGEN@ ;\ + else \ + $(MAKE) apidox-am-toplevel-@KDE_HAS_DOXYGEN@ ;\ + fi + + + +install-data-local: install-apidox + +## install API documentation +install-apidox: + @if test "$(subdir)" != "."; then \ + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir)/html ; \ + if test -f $(top_builddir)/apidocs/$(subdir)/$(subdir).tag; then \ + echo $(INSTALL_DATA) $(top_builddir)/apidocs/$(subdir)/$(subdir).tag $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir); \ + $(INSTALL_DATA) $(top_builddir)/apidocs/$(subdir)/$(subdir).tag $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir); \ + fi; \ + if test -d $(top_builddir)/apidocs/$(subdir)/html; then \ + list=`ls $(top_builddir)/apidocs/$(subdir)/html`; \ + echo "installing $(top_builddir)/apidocs/$(subdir)/html" ;\ + for file in $$list; do \ + $(INSTALL_DATA) $(top_builddir)/apidocs/$(subdir)/html/$$file $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir)/html; \ + done; \ + fi; \ + else\ + if test -d $(top_builddir)/apidocs; then \ + $(mkinstalldirs) $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs ;\ + list=`cd $(top_builddir)/apidocs && ls -1`; \ + echo "installing $(top_builddir)/apidocs/$$file" ;\ + echo "target directory $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs" ; \ + for file in $$list; do \ + if test -f $(top_builddir)/apidocs/$$file; then \ + $(INSTALL_DATA) $(top_builddir)/apidocs/$$file $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs; \ + fi; \ + done ; fi; \ + fi + +uninstall-local: uninstall-apidox + +## uninstall API documentation +uninstall-apidox: + @if test "$(subdir)" != "."; then \ + if test -d $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir); then \ + rm -rf $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs/$(subdir); \ + fi \ + else \ + if test -d $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs; then \ + rm -rf $(DESTDIR)$(kde_htmldir)/en/$(PACKAGE)-apidocs; \ + fi \ + fi + +install-apidox-recurse: install-apidox + @set fnord $(MAKEFLAGS); amf=$$2; if test -n '$(SUBDIRS)'; then \ + list='$(SUBDIRS)'; \ + for subdir in $$list; do \ + if grep '^include .*Doxyfile.am' $(srcdir)/$$subdir/Makefile.am > /dev/null ; then \ + echo "Installing apidox from $$subdir"; \ + if test "$$subdir" != "."; then \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) GENERATE_FLAG=no install-apidox-recurse) || exit 1; \ + fi ; fi ;\ + done; \ + fi + + + +.PHONY: apidox-am-yes apidox-am-no install-data-local install-apidox install-apidox uninstall-local uninstall-apidox uninstall-apidox apidox apidox-am-toplevel-no apidox-am-toplevel-yes + + +# Local Variables: +# mode: makefile +# End: diff --git a/libs/taglib/admin/Doxyfile.global b/libs/taglib/admin/Doxyfile.global new file mode 100755 index 0000000000..1b9f5607bf --- /dev/null +++ b/libs/taglib/admin/Doxyfile.global @@ -0,0 +1,192 @@ +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = NO +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = YES +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +INHERIT_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 4 +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +SUBGROUPING = YES +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TESTLIST = NO +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +QUIET = YES +WARNINGS = NO +WARN_IF_UNDOCUMENTED = NO +WARN_IF_DOC_ERROR = YES +WARN_FORMAT = +WARN_LOGFILE = +INPUT = +FILE_PATTERNS = *.h \ + *.cpp \ + *.cc \ + *.hpp \ + *.dox \ + *.c++ \ + *.cxx \ + *.h++ \ + *.hh +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = *.moc.* \ + moc* \ + *.all_cpp.* \ + *unload.* \ + */test/* \ + */tests/* \ + *_p.h +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_SOURCE_FILES = NO +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +VERBATIM_HEADERS = YES +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 3 +HTML_OUTPUT = +HTML_FILE_EXTENSION = .html +HTML_HEADER = ../apidocs/common/header.html +HTML_FOOTER = ../apidocs/common/footer.html +HTML_STYLESHEET = ../apidocs/common/doxygen.css +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = YES +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +GENERATE_LATEX = NO +LATEX_OUTPUT = +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +GENERATE_RTF = NO +RTF_OUTPUT = +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +GENERATE_MAN = NO +MAN_OUTPUT = +MAN_EXTENSION = .kde3 +MAN_LINKS = YES +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = NO +GENERATE_AUTOGEN_DEF = NO +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +ENABLE_PREPROCESSING = YES +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = QT_VERSION=320 \ + __cplusplus \ + Q_WS_X11 +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = NO +PERL_PATH = +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = NO +HAVE_DOT = NO +UML_LOOK = NO +TEMPLATE_RELATIONS = YES +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 800 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 0 +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +SEARCHENGINE = NO + +### KDE Settings +ALIASES = \ + "intern=\parInternal use only." \ + "reimp=\parReimplemented from superclass." \ + "obsolete=@deprecated" \ + "feature=\xrefitem features \"Feature(s)\" \"Features\"" \ + "maintainer=\xrefitem maintainers \"Maintainer(s)\" \"Maintainers\"" \ + "unmaintained=\xrefitem unmaintained \"Unmaintained\" \"Unmaintained\"" \ + "requirement=\xrefitem requirements \"Requirement(s)\" \"Requirements\"" \ + "faq=\xrefitem FAQ \"F.A.Q.\" \"F.A.Q.\"" \ + "authors=\xrefitem authors \"Author(s)\" \"Authors\"" \ + "FIXME=\xrefitem fixme \"Fixme\" \"Fixme\"" + +HTML_ALIGN_MEMBERS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +VERBATIM_HEADERS = NO +GENERATE_HTML = YES +SOURCE_BROWSER = YES +GENERATE_AUTOGEN_DEF = NO +DETAILS_AT_TOP = YES +SORT_MEMBER_DOCS = YES +GENERATE_TODOLIST = YES +IGNORE_PREFIX = K +GENERATE_HTML = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = NO + + +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = YES + diff --git a/libs/taglib/admin/Makefile.common b/libs/taglib/admin/Makefile.common new file mode 100644 index 0000000000..d07b404523 --- /dev/null +++ b/libs/taglib/admin/Makefile.common @@ -0,0 +1,37 @@ +### Makefile.common +### +### Copyright (C) 2002 by the KDE developers + +### All the real work is done by the shellscript cvs.sh + +SHELL=/bin/sh + +cvs dist configure configure.in configure.files subdirs package-messages package-merge Makefile.am acinclude.m4 extract-messages: + @admindir=$(admindir); \ + if test "x$$admindir" = x; then \ + admindir=.; until test -f $$admindir/admin/cvs.sh; do \ + admindir=$$admindir/..; \ + if test `cd $$admindir && pwd` = / ; then break; fi; \ + done; \ + admindir=$$admindir/admin; \ + if test -f $$admindir/cvs.sh; then :; else \ + echo "Can't find the admin/ directory in any parent of the"; \ + echo "current directory. Please set it with admindir=..."; \ + exit 1; \ + fi; \ + fi; \ + if test "$@" = "package-merge"; then \ + MAKE="$(MAKE)" POFILES="$(POFILES)" PACKAGE="$(PACKAGE)" \ + $(SHELL) $$admindir/cvs.sh package-merge ;\ + else \ + MAKE="$(MAKE)" $(SHELL) $$admindir/cvs.sh $@ ;\ + fi + +configure.in: configure.files subdirs +configure.files: subdirs + +svn: cvs + +.SILENT: + +.PHONY: svn cvs dist package-merge package-messages diff --git a/libs/taglib/admin/acinclude.m4.in b/libs/taglib/admin/acinclude.m4.in new file mode 100644 index 0000000000..46ad205e44 --- /dev/null +++ b/libs/taglib/admin/acinclude.m4.in @@ -0,0 +1,5997 @@ +## -*- autoconf -*- + +dnl This file is part of the KDE libraries/packages +dnl Copyright (C) 1997 Janos Farkas (chexum@shadow.banki.hu) +dnl (C) 1997,98,99 Stephan Kulow (coolo@kde.org) + +dnl This file is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Library General Public +dnl License as published by the Free Software Foundation; either +dnl version 2 of the License, or (at your option) any later version. + +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Library General Public License for more details. + +dnl You should have received a copy of the GNU Library General Public License +dnl along with this library; see the file COPYING.LIB. If not, write to +dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +dnl Boston, MA 02110-1301, USA. + +dnl IMPORTANT NOTE: +dnl Please do not modify this file unless you expect your modifications to be +dnl carried into every other module in the repository. +dnl +dnl Single-module modifications are best placed in configure.in for kdelibs +dnl and kdebase or configure.in.in if present. + +# KDE_PATH_X_DIRECT +dnl Internal subroutine of AC_PATH_X. +dnl Set ac_x_includes and/or ac_x_libraries. +AC_DEFUN([KDE_PATH_X_DIRECT], +[ +AC_REQUIRE([KDE_CHECK_LIB64]) + +if test "$ac_x_includes" = NO; then + # Guess where to find include files, by looking for this one X11 .h file. + test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h + + # First, try using that file with no special directory specified. +AC_TRY_CPP([#include <$x_direct_test_include>], +[# We can compile using X headers with no special include directory. +ac_x_includes=], +[# Look for the header file in a standard set of common directories. +# Check X11 before X11Rn because it is often a symlink to the current release. + for ac_dir in \ + /usr/X11/include \ + /usr/X11R6/include \ + /usr/X11R5/include \ + /usr/X11R4/include \ + \ + /usr/include/X11 \ + /usr/include/X11R6 \ + /usr/include/X11R5 \ + /usr/include/X11R4 \ + \ + /usr/local/X11/include \ + /usr/local/X11R6/include \ + /usr/local/X11R5/include \ + /usr/local/X11R4/include \ + \ + /usr/local/include/X11 \ + /usr/local/include/X11R6 \ + /usr/local/include/X11R5 \ + /usr/local/include/X11R4 \ + \ + /usr/X386/include \ + /usr/x386/include \ + /usr/XFree86/include/X11 \ + \ + /usr/include \ + /usr/local/include \ + /usr/unsupported/include \ + /usr/athena/include \ + /usr/local/x11r5/include \ + /usr/lpp/Xamples/include \ + \ + /usr/openwin/include \ + /usr/openwin/share/include \ + ; \ + do + if test -r "$ac_dir/$x_direct_test_include"; then + ac_x_includes=$ac_dir + break + fi + done]) +fi # $ac_x_includes = NO + +if test "$ac_x_libraries" = NO; then + # Check for the libraries. + + test -z "$x_direct_test_library" && x_direct_test_library=Xt + test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc + + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS="$LIBS" + LIBS="-l$x_direct_test_library $LIBS" +AC_TRY_LINK([#include ], [${x_direct_test_function}(1)], +[LIBS="$ac_save_LIBS" +# We can link X programs with no special library path. +ac_x_libraries=], +[LIBS="$ac_save_LIBS" +# First see if replacing the include by lib works. +# Check X11 before X11Rn because it is often a symlink to the current release. +for ac_dir in `echo "$ac_x_includes" | sed s/include/lib${kdelibsuff}/` \ + /usr/X11/lib${kdelibsuff} \ + /usr/X11R6/lib${kdelibsuff} \ + /usr/X11R5/lib${kdelibsuff} \ + /usr/X11R4/lib${kdelibsuff} \ + \ + /usr/lib${kdelibsuff}/X11 \ + /usr/lib${kdelibsuff}/X11R6 \ + /usr/lib${kdelibsuff}/X11R5 \ + /usr/lib${kdelibsuff}/X11R4 \ + \ + /usr/local/X11/lib${kdelibsuff} \ + /usr/local/X11R6/lib${kdelibsuff} \ + /usr/local/X11R5/lib${kdelibsuff} \ + /usr/local/X11R4/lib${kdelibsuff} \ + \ + /usr/local/lib${kdelibsuff}/X11 \ + /usr/local/lib${kdelibsuff}/X11R6 \ + /usr/local/lib${kdelibsuff}/X11R5 \ + /usr/local/lib${kdelibsuff}/X11R4 \ + \ + /usr/X386/lib${kdelibsuff} \ + /usr/x386/lib${kdelibsuff} \ + /usr/XFree86/lib${kdelibsuff}/X11 \ + \ + /usr/lib${kdelibsuff} \ + /usr/local/lib${kdelibsuff} \ + /usr/unsupported/lib${kdelibsuff} \ + /usr/athena/lib${kdelibsuff} \ + /usr/local/x11r5/lib${kdelibsuff} \ + /usr/lpp/Xamples/lib${kdelibsuff} \ + /lib/usr/lib${kdelibsuff}/X11 \ + \ + /usr/openwin/lib${kdelibsuff} \ + /usr/openwin/share/lib${kdelibsuff} \ + ; \ +do +dnl Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl; do + if test -r $ac_dir/lib${x_direct_test_library}.$ac_extension; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done]) +fi # $ac_x_libraries = NO +]) + + +dnl ------------------------------------------------------------------------ +dnl Find a file (or one of more files in a list of dirs) +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_FIND_FILE], +[ +$3=NO +for i in $2; +do + for j in $1; + do + echo "configure: __oline__: $i/$j" >&AC_FD_CC + if test -r "$i/$j"; then + echo "taking that" >&AC_FD_CC + $3=$i + break 2 + fi + done +done +]) + +dnl KDE_FIND_PATH(program-name, variable-name, list-of-dirs, +dnl if-not-found, test-parameter, prepend-path) +dnl +dnl Look for program-name in list-of-dirs+$PATH. +dnl If prepend-path is set, look in $PATH+list-of-dirs instead. +dnl If found, $variable-name is set. If not, if-not-found is evaluated. +dnl test-parameter: if set, the program is executed with this arg, +dnl and only a successful exit code is required. +AC_DEFUN([KDE_FIND_PATH], +[ + AC_MSG_CHECKING([for $1]) + if test -n "$$2"; then + kde_cv_path="$$2"; + else + kde_cache=`echo $1 | sed 'y%./+-%__p_%'` + + AC_CACHE_VAL(kde_cv_path_$kde_cache, + [ + kde_cv_path="NONE" + kde_save_IFS=$IFS + IFS=':' + dirs="" + for dir in $PATH; do + dirs="$dirs $dir" + done + if test -z "$6"; then dnl Append dirs in PATH (default) + dirs="$3 $dirs" + else dnl Prepend dirs in PATH (if 6th arg is set) + dirs="$dirs $3" + fi + IFS=$kde_save_IFS + + for dir in $dirs; do + if test -x "$dir/$1"; then + if test -n "$5" + then + evalstr="$dir/$1 $5 2>&1 " + if eval $evalstr; then + kde_cv_path="$dir/$1" + break + fi + else + kde_cv_path="$dir/$1" + break + fi + fi + done + + eval "kde_cv_path_$kde_cache=$kde_cv_path" + + ]) + + eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\"" + + fi + + if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then + AC_MSG_RESULT(not found) + $4 + else + AC_MSG_RESULT($kde_cv_path) + $2=$kde_cv_path + + fi +]) + +AC_DEFUN([KDE_MOC_ERROR_MESSAGE], +[ + AC_MSG_ERROR([No Qt meta object compiler (moc) found! +Please check whether you installed Qt correctly. +You need to have a running moc binary. +configure tried to run $ac_cv_path_moc and the test didn't +succeed. If configure shouldn't have tried this one, set +the environment variable MOC to the right one before running +configure. +]) +]) + +AC_DEFUN([KDE_UIC_ERROR_MESSAGE], +[ + AC_MSG_WARN([No Qt ui compiler (uic) found! +Please check whether you installed Qt correctly. +You need to have a running uic binary. +configure tried to run $ac_cv_path_uic and the test didn't +succeed. If configure shouldn't have tried this one, set +the environment variable UIC to the right one before running +configure. +]) +]) + + +AC_DEFUN([KDE_CHECK_UIC_FLAG], +[ + AC_MSG_CHECKING([whether uic supports -$1 ]) + kde_cache=`echo $1 | sed 'y% .=/+-%____p_%'` + AC_CACHE_VAL(kde_cv_prog_uic_$kde_cache, + [ + cat >conftest.ui < +EOT + ac_uic_testrun="$UIC_PATH -$1 $2 conftest.ui >/dev/null" + if AC_TRY_EVAL(ac_uic_testrun); then + eval "kde_cv_prog_uic_$kde_cache=yes" + else + eval "kde_cv_prog_uic_$kde_cache=no" + fi + rm -f conftest* + ]) + + if eval "test \"`echo '$kde_cv_prog_uic_'$kde_cache`\" = yes"; then + AC_MSG_RESULT([yes]) + : + $3 + else + AC_MSG_RESULT([no]) + : + $4 + fi +]) + + +dnl ------------------------------------------------------------------------ +dnl Find the meta object compiler and the ui compiler in the PATH, +dnl in $QTDIR/bin, and some more usual places +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_PATH_QT_MOC_UIC], +[ + AC_REQUIRE([KDE_CHECK_PERL]) + qt_bindirs="" + for dir in $kde_qt_dirs; do + qt_bindirs="$qt_bindirs $dir/bin $dir/src/moc" + done + qt_bindirs="$qt_bindirs /usr/bin /usr/X11R6/bin /usr/local/qt/bin" + if test ! "$ac_qt_bindir" = "NO"; then + qt_bindirs="$ac_qt_bindir $qt_bindirs" + fi + + KDE_FIND_PATH(moc, MOC, [$qt_bindirs], [KDE_MOC_ERROR_MESSAGE]) + if test -z "$UIC_NOT_NEEDED"; then + KDE_FIND_PATH(uic, UIC_PATH, [$qt_bindirs], [UIC_PATH=""]) + if test -z "$UIC_PATH" ; then + KDE_UIC_ERROR_MESSAGE + exit 1 + else + UIC=$UIC_PATH + + if test $kde_qtver = 3; then + KDE_CHECK_UIC_FLAG(L,[/nonexistent],ac_uic_supports_libpath=yes,ac_uic_supports_libpath=no) + KDE_CHECK_UIC_FLAG(nounload,,ac_uic_supports_nounload=yes,ac_uic_supports_nounload=no) + + if test x$ac_uic_supports_libpath = xyes; then + UIC="$UIC -L \$(kde_widgetdir)" + fi + if test x$ac_uic_supports_nounload = xyes; then + UIC="$UIC -nounload" + fi + fi + fi + else + UIC="echo uic not available: " + fi + + AC_SUBST(MOC) + AC_SUBST(UIC) + + UIC_TR="i18n" + if test $kde_qtver = 3; then + UIC_TR="tr2i18n" + fi + + AC_SUBST(UIC_TR) +]) + +AC_DEFUN([KDE_1_CHECK_PATHS], +[ + KDE_1_CHECK_PATH_HEADERS + + KDE_TEST_RPATH= + + if test -n "$USE_RPATH"; then + + if test -n "$kde_libraries"; then + KDE_TEST_RPATH="-R $kde_libraries" + fi + + if test -n "$qt_libraries"; then + KDE_TEST_RPATH="$KDE_TEST_RPATH -R $qt_libraries" + fi + + if test -n "$x_libraries"; then + KDE_TEST_RPATH="$KDE_TEST_RPATH -R $x_libraries" + fi + + KDE_TEST_RPATH="$KDE_TEST_RPATH $KDE_EXTRA_RPATH" + fi + +AC_MSG_CHECKING([for KDE libraries installed]) +ac_link='$LIBTOOL_SHELL --silent --mode=link ${CXX-g++} -o conftest $CXXFLAGS $all_includes $CPPFLAGS $LDFLAGS $all_libraries conftest.$ac_ext $LIBS -lkdecore $LIBQT $KDE_TEST_RPATH 1>&5' + +if AC_TRY_EVAL(ac_link) && test -s conftest; then + AC_MSG_RESULT(yes) +else + AC_MSG_ERROR([your system fails at linking a small KDE application! +Check, if your compiler is installed correctly and if you have used the +same compiler to compile Qt and kdelibs as you did use now. +For more details about this problem, look at the end of config.log.]) +fi + +if eval `KDEDIR= ./conftest 2>&5`; then + kde_result=done +else + kde_result=problems +fi + +KDEDIR= ./conftest 2> /dev/null >&5 # make an echo for config.log +kde_have_all_paths=yes + +KDE_SET_PATHS($kde_result) + +]) + +AC_DEFUN([KDE_SET_PATHS], +[ + kde_cv_all_paths="kde_have_all_paths=\"yes\" \ + kde_htmldir=\"$kde_htmldir\" \ + kde_appsdir=\"$kde_appsdir\" \ + kde_icondir=\"$kde_icondir\" \ + kde_sounddir=\"$kde_sounddir\" \ + kde_datadir=\"$kde_datadir\" \ + kde_locale=\"$kde_locale\" \ + kde_cgidir=\"$kde_cgidir\" \ + kde_confdir=\"$kde_confdir\" \ + kde_kcfgdir=\"$kde_kcfgdir\" \ + kde_mimedir=\"$kde_mimedir\" \ + kde_toolbardir=\"$kde_toolbardir\" \ + kde_wallpaperdir=\"$kde_wallpaperdir\" \ + kde_templatesdir=\"$kde_templatesdir\" \ + kde_bindir=\"$kde_bindir\" \ + kde_servicesdir=\"$kde_servicesdir\" \ + kde_servicetypesdir=\"$kde_servicetypesdir\" \ + kde_moduledir=\"$kde_moduledir\" \ + kde_styledir=\"$kde_styledir\" \ + kde_widgetdir=\"$kde_widgetdir\" \ + xdg_appsdir=\"$xdg_appsdir\" \ + xdg_menudir=\"$xdg_menudir\" \ + xdg_directorydir=\"$xdg_directorydir\" \ + kde_result=$1" +]) + +AC_DEFUN([KDE_SET_DEFAULT_PATHS], +[ +if test "$1" = "default"; then + + if test -z "$kde_htmldir"; then + kde_htmldir='\${datadir}/doc/HTML' + fi + if test -z "$kde_appsdir"; then + kde_appsdir='\${datadir}/applnk' + fi + if test -z "$kde_icondir"; then + kde_icondir='\${datadir}/icons' + fi + if test -z "$kde_sounddir"; then + kde_sounddir='\${datadir}/sounds' + fi + if test -z "$kde_datadir"; then + kde_datadir='\${datadir}/apps' + fi + if test -z "$kde_locale"; then + kde_locale='\${datadir}/locale' + fi + if test -z "$kde_cgidir"; then + kde_cgidir='\${exec_prefix}/cgi-bin' + fi + if test -z "$kde_confdir"; then + kde_confdir='\${datadir}/config' + fi + if test -z "$kde_kcfgdir"; then + kde_kcfgdir='\${datadir}/config.kcfg' + fi + if test -z "$kde_mimedir"; then + kde_mimedir='\${datadir}/mimelnk' + fi + if test -z "$kde_toolbardir"; then + kde_toolbardir='\${datadir}/toolbar' + fi + if test -z "$kde_wallpaperdir"; then + kde_wallpaperdir='\${datadir}/wallpapers' + fi + if test -z "$kde_templatesdir"; then + kde_templatesdir='\${datadir}/templates' + fi + if test -z "$kde_bindir"; then + kde_bindir='\${exec_prefix}/bin' + fi + if test -z "$kde_servicesdir"; then + kde_servicesdir='\${datadir}/services' + fi + if test -z "$kde_servicetypesdir"; then + kde_servicetypesdir='\${datadir}/servicetypes' + fi + if test -z "$kde_moduledir"; then + if test "$kde_qtver" = "2"; then + kde_moduledir='\${libdir}/kde2' + else + kde_moduledir='\${libdir}/kde3' + fi + fi + if test -z "$kde_styledir"; then + kde_styledir='\${libdir}/kde3/plugins/styles' + fi + if test -z "$kde_widgetdir"; then + kde_widgetdir='\${libdir}/kde3/plugins/designer' + fi + if test -z "$xdg_appsdir"; then + xdg_appsdir='\${datadir}/applications/kde' + fi + if test -z "$xdg_menudir"; then + xdg_menudir='\${sysconfdir}/xdg/menus' + fi + if test -z "$xdg_directorydir"; then + xdg_directorydir='\${datadir}/desktop-directories' + fi + + KDE_SET_PATHS(defaults) + +else + + if test $kde_qtver = 1; then + AC_MSG_RESULT([compiling]) + KDE_1_CHECK_PATHS + else + AC_MSG_ERROR([path checking not yet supported for KDE 2]) + fi + +fi +]) + +AC_DEFUN([KDE_CHECK_PATHS_FOR_COMPLETENESS], +[ if test -z "$kde_htmldir" || test -z "$kde_appsdir" || + test -z "$kde_icondir" || test -z "$kde_sounddir" || + test -z "$kde_datadir" || test -z "$kde_locale" || + test -z "$kde_cgidir" || test -z "$kde_confdir" || + test -z "$kde_kcfgdir" || + test -z "$kde_mimedir" || test -z "$kde_toolbardir" || + test -z "$kde_wallpaperdir" || test -z "$kde_templatesdir" || + test -z "$kde_bindir" || test -z "$kde_servicesdir" || + test -z "$kde_servicetypesdir" || test -z "$kde_moduledir" || + test -z "$kde_styledir" || test -z "kde_widgetdir" || + test -z "$xdg_appsdir" || test -z "$xdg_menudir" || test -z "$xdg_directorydir" || + test "x$kde_have_all_paths" != "xyes"; then + kde_have_all_paths=no + fi +]) + +AC_DEFUN([KDE_MISSING_PROG_ERROR], +[ + AC_MSG_ERROR([The important program $1 was not found! +Please check whether you installed KDE correctly. +]) +]) + +AC_DEFUN([KDE_MISSING_ARTS_ERROR], +[ + AC_MSG_ERROR([The important program $1 was not found! +Please check whether you installed aRts correctly or use +--without-arts to compile without aRts support (this will remove functionality). +]) +]) + +AC_DEFUN([KDE_SET_DEFAULT_BINDIRS], +[ + kde_default_bindirs="/usr/bin /usr/local/bin /opt/local/bin /usr/X11R6/bin /opt/kde/bin /opt/kde3/bin /usr/kde/bin /usr/local/kde/bin" + test -n "$KDEDIR" && kde_default_bindirs="$KDEDIR/bin $kde_default_bindirs" + if test -n "$KDEDIRS"; then + kde_save_IFS=$IFS + IFS=: + for dir in $KDEDIRS; do + kde_default_bindirs="$dir/bin $kde_default_bindirs " + done + IFS=$kde_save_IFS + fi +]) + +AC_DEFUN([KDE_SUBST_PROGRAMS], +[ + AC_ARG_WITH(arts, + AC_HELP_STRING([--without-arts],[build without aRts [default=no]]), + [build_arts=$withval], + [build_arts=yes] + ) + AM_CONDITIONAL(include_ARTS, test "$build_arts" '!=' "no") + if test "$build_arts" = "no"; then + AC_DEFINE(WITHOUT_ARTS, 1, [Defined if compiling without arts]) + fi + + KDE_SET_DEFAULT_BINDIRS + kde_default_bindirs="$exec_prefix/bin $prefix/bin $kde_libs_prefix/bin $kde_default_bindirs" + KDE_FIND_PATH(dcopidl, DCOPIDL, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidl)]) + KDE_FIND_PATH(dcopidl2cpp, DCOPIDL2CPP, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidl2cpp)]) + if test "$build_arts" '!=' "no"; then + KDE_FIND_PATH(mcopidl, MCOPIDL, [$kde_default_bindirs], [KDE_MISSING_ARTS_ERROR(mcopidl)]) + KDE_FIND_PATH(artsc-config, ARTSCCONFIG, [$kde_default_bindirs], [KDE_MISSING_ARTS_ERROR(artsc-config)]) + fi + KDE_FIND_PATH(meinproc, MEINPROC, [$kde_default_bindirs]) + + kde32ornewer=1 + kde33ornewer=1 + if test -n "$kde_qtver" && test "$kde_qtver" -lt 3; then + kde32ornewer= + kde33ornewer= + else + if test "$kde_qtver" = "3"; then + if test "$kde_qtsubver" -le 1; then + kde32ornewer= + fi + if test "$kde_qtsubver" -le 2; then + kde33ornewer= + fi + if test "$KDECONFIG" != "compiled"; then + if test `$KDECONFIG --version | grep KDE | sed 's/KDE: \(...\).*/\1/'` = 3.2; then + kde33ornewer= + fi + fi + fi + fi + + if test -n "$kde32ornewer"; then + KDE_FIND_PATH(kconfig_compiler, KCONFIG_COMPILER, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(kconfig_compiler)]) + KDE_FIND_PATH(dcopidlng, DCOPIDLNG, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidlng)]) + fi + if test -n "$kde33ornewer"; then + KDE_FIND_PATH(makekdewidgets, MAKEKDEWIDGETS, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(makekdewidgets)]) + AC_SUBST(MAKEKDEWIDGETS) + fi + KDE_FIND_PATH(xmllint, XMLLINT, [${prefix}/bin ${exec_prefix}/bin], [XMLLINT=""]) + + if test -n "$MEINPROC" -a "$MEINPROC" != "compiled"; then + kde_sharedirs="/usr/share/kde /usr/local/share /usr/share /opt/kde3/share /opt/kde/share $prefix/share" + test -n "$KDEDIR" && kde_sharedirs="$KDEDIR/share $kde_sharedirs" + AC_FIND_FILE(apps/ksgmltools2/customization/kde-chunk.xsl, $kde_sharedirs, KDE_XSL_STYLESHEET) + if test "$KDE_XSL_STYLESHEET" = "NO"; then + KDE_XSL_STYLESHEET="" + else + KDE_XSL_STYLESHEET="$KDE_XSL_STYLESHEET/apps/ksgmltools2/customization/kde-chunk.xsl" + fi + fi + + DCOP_DEPENDENCIES='$(DCOPIDL)' + if test -n "$kde32ornewer"; then + KCFG_DEPENDENCIES='$(KCONFIG_COMPILER)' + DCOP_DEPENDENCIES='$(DCOPIDL) $(DCOPIDLNG)' + AC_SUBST(KCONFIG_COMPILER) + AC_SUBST(KCFG_DEPENDENCIES) + AC_SUBST(DCOPIDLNG) + fi + AC_SUBST(DCOPIDL) + AC_SUBST(DCOPIDL2CPP) + AC_SUBST(DCOP_DEPENDENCIES) + AC_SUBST(MCOPIDL) + AC_SUBST(ARTSCCONFIG) + AC_SUBST(MEINPROC) + AC_SUBST(KDE_XSL_STYLESHEET) + AC_SUBST(XMLLINT) +])dnl + +AC_DEFUN([AC_CREATE_KFSSTND], +[ +AC_REQUIRE([AC_CHECK_RPATH]) + +AC_MSG_CHECKING([for KDE paths]) +kde_result="" +kde_cached_paths=yes +AC_CACHE_VAL(kde_cv_all_paths, +[ + KDE_SET_DEFAULT_PATHS($1) + kde_cached_paths=no +]) +eval "$kde_cv_all_paths" +KDE_CHECK_PATHS_FOR_COMPLETENESS +if test "$kde_have_all_paths" = "no" && test "$kde_cached_paths" = "yes"; then + # wrong values were cached, may be, we can set better ones + kde_result= + kde_htmldir= kde_appsdir= kde_icondir= kde_sounddir= + kde_datadir= kde_locale= kde_cgidir= kde_confdir= kde_kcfgdir= + kde_mimedir= kde_toolbardir= kde_wallpaperdir= kde_templatesdir= + kde_bindir= kde_servicesdir= kde_servicetypesdir= kde_moduledir= + kde_have_all_paths= + kde_styledir= + kde_widgetdir= + xdg_appsdir = xdg_menudir= xdg_directorydir= + KDE_SET_DEFAULT_PATHS($1) + eval "$kde_cv_all_paths" + KDE_CHECK_PATHS_FOR_COMPLETENESS + kde_result="$kde_result (cache overridden)" +fi +if test "$kde_have_all_paths" = "no"; then + AC_MSG_ERROR([configure could not run a little KDE program to test the environment. +Since it had compiled and linked before, it must be a strange problem on your system. +Look at config.log for details. If you are not able to fix this, look at +http://www.kde.org/faq/installation.html or any www.kde.org mirror. +(If you're using an egcs version on Linux, you may update binutils!) +]) +else + rm -f conftest* + AC_MSG_RESULT($kde_result) +fi + +bindir=$kde_bindir + +KDE_SUBST_PROGRAMS + +]) + +AC_DEFUN([AC_SUBST_KFSSTND], +[ +AC_SUBST(kde_htmldir) +AC_SUBST(kde_appsdir) +AC_SUBST(kde_icondir) +AC_SUBST(kde_sounddir) +AC_SUBST(kde_datadir) +AC_SUBST(kde_locale) +AC_SUBST(kde_confdir) +AC_SUBST(kde_kcfgdir) +AC_SUBST(kde_mimedir) +AC_SUBST(kde_wallpaperdir) +AC_SUBST(kde_bindir) +dnl X Desktop Group standards +AC_SUBST(xdg_appsdir) +AC_SUBST(xdg_menudir) +AC_SUBST(xdg_directorydir) +dnl for KDE 2 +AC_SUBST(kde_templatesdir) +AC_SUBST(kde_servicesdir) +AC_SUBST(kde_servicetypesdir) +AC_SUBST(kde_moduledir) +AC_SUBST(kdeinitdir, '$(kde_moduledir)') +AC_SUBST(kde_styledir) +AC_SUBST(kde_widgetdir) +if test "$kde_qtver" = 1; then + kde_minidir="$kde_icondir/mini" +else +# for KDE 1 - this breaks KDE2 apps using minidir, but +# that's the plan ;-/ + kde_minidir="/dev/null" +fi +dnl AC_SUBST(kde_minidir) +dnl AC_SUBST(kde_cgidir) +dnl AC_SUBST(kde_toolbardir) +]) + +AC_DEFUN([KDE_MISC_TESTS], +[ + dnl Checks for libraries. + AC_CHECK_LIB(util, main, [LIBUTIL="-lutil"]) dnl for *BSD + AC_SUBST(LIBUTIL) + AC_CHECK_LIB(compat, main, [LIBCOMPAT="-lcompat"]) dnl for *BSD + AC_SUBST(LIBCOMPAT) + kde_have_crypt= + AC_CHECK_LIB(crypt, crypt, [LIBCRYPT="-lcrypt"; kde_have_crypt=yes], + AC_CHECK_LIB(c, crypt, [kde_have_crypt=yes], [ + AC_MSG_WARN([you have no crypt in either libcrypt or libc. +You should install libcrypt from another source or configure with PAM +support]) + kde_have_crypt=no + ])) + AC_SUBST(LIBCRYPT) + if test $kde_have_crypt = yes; then + AC_DEFINE_UNQUOTED(HAVE_CRYPT, 1, [Defines if your system has the crypt function]) + fi + AC_CHECK_SOCKLEN_T + AC_CHECK_LIB(dnet, dnet_ntoa, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"]) + if test $ac_cv_lib_dnet_dnet_ntoa = no; then + AC_CHECK_LIB(dnet_stub, dnet_ntoa, + [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"]) + fi + AC_CHECK_FUNC(inet_ntoa) + if test $ac_cv_func_inet_ntoa = no; then + AC_CHECK_LIB(nsl, inet_ntoa, X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl") + fi + AC_CHECK_FUNC(connect) + if test $ac_cv_func_connect = no; then + AC_CHECK_LIB(socket, connect, X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS", , + $X_EXTRA_LIBS) + fi + + AC_CHECK_FUNC(remove) + if test $ac_cv_func_remove = no; then + AC_CHECK_LIB(posix, remove, X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix") + fi + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. + AC_CHECK_FUNC(shmat, , + AC_CHECK_LIB(ipc, shmat, X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc")) + + # more headers that need to be explicitly included on darwin + AC_CHECK_HEADERS(sys/types.h stdint.h) + + # sys/bitypes.h is needed for uint32_t and friends on Tru64 + AC_CHECK_HEADERS(sys/bitypes.h) + + # darwin requires a poll emulation library + AC_CHECK_LIB(poll, poll, LIB_POLL="-lpoll") + + # for some image handling on Mac OS X + AC_CHECK_HEADERS(Carbon/Carbon.h) + + # CoreAudio framework + AC_CHECK_HEADER(CoreAudio/CoreAudio.h, [ + AC_DEFINE(HAVE_COREAUDIO, 1, [Define if you have the CoreAudio API]) + FRAMEWORK_COREAUDIO="-Wl,-framework,CoreAudio" + ]) + + AC_CHECK_RES_INIT + AC_SUBST(LIB_POLL) + AC_SUBST(FRAMEWORK_COREAUDIO) + LIBSOCKET="$X_EXTRA_LIBS" + AC_SUBST(LIBSOCKET) + AC_SUBST(X_EXTRA_LIBS) + AC_CHECK_LIB(ucb, killpg, [LIBUCB="-lucb"]) dnl for Solaris2.4 + AC_SUBST(LIBUCB) + + case $host in dnl this *is* LynxOS specific + *-*-lynxos* ) + AC_MSG_CHECKING([LynxOS header file wrappers]) + [CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__"] + AC_MSG_RESULT(disabled) + AC_CHECK_LIB(bsd, gethostbyname, [LIBSOCKET="-lbsd"]) dnl for LynxOS + ;; + esac + + KDE_CHECK_TYPES + KDE_CHECK_LIBDL + KDE_CHECK_STRLCPY + KDE_CHECK_PIE_SUPPORT + +# darwin needs this to initialize the environment +AC_CHECK_HEADERS(crt_externs.h) +AC_CHECK_FUNC(_NSGetEnviron, [AC_DEFINE(HAVE_NSGETENVIRON, 1, [Define if your system needs _NSGetEnviron to set up the environment])]) + +AH_VERBATIM(_DARWIN_ENVIRON, +[ +#if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H) +# include +# include +# define environ (*_NSGetEnviron()) +#endif +]) + +AH_VERBATIM(_AIX_STRINGS_H_BZERO, +[ +/* + * AIX defines FD_SET in terms of bzero, but fails to include + * that defines bzero. + */ + +#if defined(_AIX) +#include +#endif +]) + +AC_CHECK_FUNCS([vsnprintf snprintf]) + +AH_VERBATIM(_TRU64,[ +/* + * On HP-UX, the declaration of vsnprintf() is needed every time ! + */ + +#if !defined(HAVE_VSNPRINTF) || defined(hpux) +#if __STDC__ +#include +#include +#else +#include +#endif +#ifdef __cplusplus +extern "C" +#endif +int vsnprintf(char *str, size_t n, char const *fmt, va_list ap); +#ifdef __cplusplus +extern "C" +#endif +int snprintf(char *str, size_t n, char const *fmt, ...); +#endif +]) + +]) + +dnl ------------------------------------------------------------------------ +dnl Find the header files and libraries for X-Windows. Extended the +dnl macro AC_PATH_X +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([K_PATH_X], +[ +AC_REQUIRE([KDE_MISC_TESTS])dnl +AC_REQUIRE([KDE_CHECK_LIB64]) + +AC_ARG_ENABLE( + embedded, + AC_HELP_STRING([--enable-embedded],[link to Qt-embedded, don't use X]), + kde_use_qt_emb=$enableval, + kde_use_qt_emb=no +) + +AC_ARG_ENABLE( + qtopia, + AC_HELP_STRING([--enable-qtopia],[link to Qt-embedded, link to the Qtopia Environment]), + kde_use_qt_emb_palm=$enableval, + kde_use_qt_emb_palm=no +) + +AC_ARG_ENABLE( + mac, + AC_HELP_STRING([--enable-mac],[link to Qt/Mac (don't use X)]), + kde_use_qt_mac=$enableval, + kde_use_qt_mac=no +) + +# used to disable x11-specific stuff on special platforms +AM_CONDITIONAL(include_x11, test "$kde_use_qt_emb" = "no" && test "$kde_use_qt_mac" = "no") + +if test "$kde_use_qt_emb" = "no" && test "$kde_use_qt_mac" = "no"; then + +AC_MSG_CHECKING(for X) + +AC_CACHE_VAL(kde_cv_have_x, +[# One or both of the vars are not set, and there is no cached value. +if test "{$x_includes+set}" = set || test "$x_includes" = NONE; then + kde_x_includes=NO +else + kde_x_includes=$x_includes +fi +if test "{$x_libraries+set}" = set || test "$x_libraries" = NONE; then + kde_x_libraries=NO +else + kde_x_libraries=$x_libraries +fi + +# below we use the standard autoconf calls +ac_x_libraries=$kde_x_libraries +ac_x_includes=$kde_x_includes + +KDE_PATH_X_DIRECT +dnl AC_PATH_X_XMKMF picks /usr/lib as the path for the X libraries. +dnl Unfortunately, if compiling with the N32 ABI, this is not the correct +dnl location. The correct location is /usr/lib32 or an undefined value +dnl (the linker is smart enough to pick the correct default library). +dnl Things work just fine if you use just AC_PATH_X_DIRECT. +dnl Solaris has a similar problem. AC_PATH_X_XMKMF forces x_includes to +dnl /usr/openwin/include, which doesn't work. /usr/include does work, so +dnl x_includes should be left alone. +case "$host" in +mips-sgi-irix6*) + ;; +*-*-solaris*) + ;; +*) + _AC_PATH_X_XMKMF + if test -z "$ac_x_includes"; then + ac_x_includes="." + fi + if test -z "$ac_x_libraries"; then + ac_x_libraries="/usr/lib${kdelibsuff}" + fi +esac +#from now on we use our own again + +# when the user already gave --x-includes, we ignore +# what the standard autoconf macros told us. +if test "$kde_x_includes" = NO; then + kde_x_includes=$ac_x_includes +fi + +# for --x-libraries too +if test "$kde_x_libraries" = NO; then + kde_x_libraries=$ac_x_libraries +fi + +if test "$kde_x_includes" = NO; then + AC_MSG_ERROR([Can't find X includes. Please check your installation and add the correct paths!]) +fi + +if test "$kde_x_libraries" = NO; then + AC_MSG_ERROR([Can't find X libraries. Please check your installation and add the correct paths!]) +fi + +# Record where we found X for the cache. +kde_cv_have_x="have_x=yes \ + kde_x_includes=$kde_x_includes kde_x_libraries=$kde_x_libraries" +])dnl + +eval "$kde_cv_have_x" + +if test "$have_x" != yes; then + AC_MSG_RESULT($have_x) + no_x=yes +else + AC_MSG_RESULT([libraries $kde_x_libraries, headers $kde_x_includes]) +fi + +if test -z "$kde_x_includes" || test "x$kde_x_includes" = xNONE; then + X_INCLUDES="" + x_includes="."; dnl better than nothing :- + else + x_includes=$kde_x_includes + X_INCLUDES="-I$x_includes" +fi + +if test -z "$kde_x_libraries" || test "x$kde_x_libraries" = xNONE || test "$kde_x_libraries" = "/usr/lib"; then + X_LDFLAGS="" + x_libraries="/usr/lib"; dnl better than nothing :- + else + x_libraries=$kde_x_libraries + X_LDFLAGS="-L$x_libraries" +fi +all_includes="$X_INCLUDES" +all_libraries="$X_LDFLAGS $LDFLAGS_AS_NEEDED $LDFLAGS_NEW_DTAGS" + +# Check for libraries that X11R6 Xt/Xaw programs need. +ac_save_LDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS $X_LDFLAGS" +# SM needs ICE to (dynamically) link under SunOS 4.x (so we have to +# check for ICE first), but we must link in the order -lSM -lICE or +# we get undefined symbols. So assume we have SM if we have ICE. +# These have to be linked with before -lX11, unlike the other +# libraries we check for below, so use a different variable. +# --interran@uluru.Stanford.EDU, kb@cs.umb.edu. +AC_CHECK_LIB(ICE, IceConnectionNumber, + [LIBSM="-lSM -lICE"], , $X_EXTRA_LIBS) +LDFLAGS="$ac_save_LDFLAGS" + +LIB_X11='-lX11 $(LIBSOCKET)' + +AC_MSG_CHECKING(for libXext) +AC_CACHE_VAL(kde_cv_have_libXext, +[ +kde_ldflags_safe="$LDFLAGS" +kde_libs_safe="$LIBS" + +LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS" +LIBS="-lXext -lX11 $LIBSOCKET" + +AC_TRY_LINK([ +#include +#ifdef STDC_HEADERS +# include +#endif +], +[ +printf("hello Xext\n"); +], +kde_cv_have_libXext=yes, +kde_cv_have_libXext=no +) + +LDFLAGS=$kde_ldflags_safe +LIBS=$kde_libs_safe +]) + +AC_MSG_RESULT($kde_cv_have_libXext) + +if test "$kde_cv_have_libXext" = "no"; then + AC_MSG_ERROR([We need a working libXext to proceed. Since configure +can't find it itself, we stop here assuming that make wouldn't find +them either.]) +fi + +LIB_XEXT="-lXext" +QTE_NORTTI="" + +elif test "$kde_use_qt_emb" = "yes"; then + dnl We're using QT Embedded + CPPFLAGS=-DQWS + CXXFLAGS="$CXXFLAGS -fno-rtti" + QTE_NORTTI="-fno-rtti -DQWS" + X_PRE_LIBS="" + LIB_X11="" + LIB_XEXT="" + LIB_XRENDER="" + LIBSM="" + X_INCLUDES="" + X_LDFLAGS="" + x_includes="" + x_libraries="" +elif test "$kde_use_qt_mac" = "yes"; then + dnl We're using QT/Mac (I use QT_MAC so that qglobal.h doesn't *have* to + dnl be included to get the information) --Sam + CXXFLAGS="$CXXFLAGS -DQT_MAC -no-cpp-precomp" + CFLAGS="$CFLAGS -DQT_MAC -no-cpp-precomp" + X_PRE_LIBS="" + LIB_X11="" + LIB_XEXT="" + LIB_XRENDER="" + LIBSM="" + X_INCLUDES="" + X_LDFLAGS="" + x_includes="" + x_libraries="" +fi +AC_SUBST(X_PRE_LIBS) +AC_SUBST(LIB_X11) +AC_SUBST(LIB_XRENDER) +AC_SUBST(LIBSM) +AC_SUBST(X_INCLUDES) +AC_SUBST(X_LDFLAGS) +AC_SUBST(x_includes) +AC_SUBST(x_libraries) +AC_SUBST(QTE_NORTTI) +AC_SUBST(LIB_XEXT) + +]) + +AC_DEFUN([KDE_PRINT_QT_PROGRAM], +[ +AC_REQUIRE([KDE_USE_QT]) +cat > conftest.$ac_ext < +#include +EOF +if test "$kde_qtver" = "2"; then +cat >> conftest.$ac_ext < +#include +#include +EOF + +if test $kde_qtsubver -gt 0; then +cat >> conftest.$ac_ext <> conftest.$ac_ext < +#include +#include +EOF +fi + +echo "#if ! ($kde_qt_verstring)" >> conftest.$ac_ext +cat >> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <> conftest.$ac_ext <&AC_FD_CC + cat conftest.$ac_ext >&AC_FD_CC +fi + +rm -f conftest* +CXXFLAGS="$ac_cxxflags_safe" +LDFLAGS="$ac_ldflags_safe" +LIBS="$ac_libs_safe" + +LD_LIBRARY_PATH="$ac_LD_LIBRARY_PATH_safe" +export LD_LIBRARY_PATH +LIBRARY_PATH="$ac_LIBRARY_PATH" +export LIBRARY_PATH +AC_LANG_RESTORE +]) + +if test "$kde_cv_qt_direct" = "yes"; then + AC_MSG_RESULT(yes) + $1 +else + AC_MSG_RESULT(no) + $2 +fi +]) + +dnl ------------------------------------------------------------------------ +dnl Try to find the Qt headers and libraries. +dnl $(QT_LDFLAGS) will be -Lqtliblocation (if needed) +dnl and $(QT_INCLUDES) will be -Iqthdrlocation (if needed) +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_PATH_QT_1_3], +[ +AC_REQUIRE([K_PATH_X]) +AC_REQUIRE([KDE_USE_QT]) +AC_REQUIRE([KDE_CHECK_LIB64]) + +dnl ------------------------------------------------------------------------ +dnl Add configure flag to enable linking to MT version of Qt library. +dnl ------------------------------------------------------------------------ + +AC_ARG_ENABLE( + mt, + AC_HELP_STRING([--disable-mt],[link to non-threaded Qt (deprecated)]), + kde_use_qt_mt=$enableval, + [ + if test $kde_qtver = 3; then + kde_use_qt_mt=yes + else + kde_use_qt_mt=no + fi + ] +) + +USING_QT_MT="" + +dnl ------------------------------------------------------------------------ +dnl If we not get --disable-qt-mt then adjust some vars for the host. +dnl ------------------------------------------------------------------------ + +KDE_MT_LDFLAGS= +KDE_MT_LIBS= +if test "x$kde_use_qt_mt" = "xyes"; then + KDE_CHECK_THREADING + if test "x$kde_use_threading" = "xyes"; then + CPPFLAGS="$USE_THREADS -DQT_THREAD_SUPPORT $CPPFLAGS" + KDE_MT_LDFLAGS="$USE_THREADS" + KDE_MT_LIBS="$LIBPTHREAD" + else + kde_use_qt_mt=no + fi +fi +AC_SUBST(KDE_MT_LDFLAGS) +AC_SUBST(KDE_MT_LIBS) + +kde_qt_was_given=yes + +dnl ------------------------------------------------------------------------ +dnl If we haven't been told how to link to Qt, we work it out for ourselves. +dnl ------------------------------------------------------------------------ +if test -z "$LIBQT_GLOB"; then + if test "x$kde_use_qt_emb" = "xyes"; then + LIBQT_GLOB="libqte.*" + else + LIBQT_GLOB="libqt.*" + fi +fi + +dnl ------------------------------------------------------------ +dnl If we got --enable-embedded then adjust the Qt library name. +dnl ------------------------------------------------------------ +if test "x$kde_use_qt_emb" = "xyes"; then + qtlib="qte" +else + qtlib="qt" +fi + +kde_int_qt="-l$qtlib" + +if test -z "$LIBQPE"; then +dnl ------------------------------------------------------------ +dnl If we got --enable-palmtop then add -lqpe to the link line +dnl ------------------------------------------------------------ + if test "x$kde_use_qt_emb" = "xyes"; then + if test "x$kde_use_qt_emb_palm" = "xyes"; then + LIB_QPE="-lqpe" + else + LIB_QPE="" + fi + else + LIB_QPE="" + fi +fi + +dnl ------------------------------------------------------------------------ +dnl If we got --enable-qt-mt then adjust the Qt library name for the host. +dnl ------------------------------------------------------------------------ + +if test "x$kde_use_qt_mt" = "xyes"; then + LIBQT="-l$qtlib-mt" + kde_int_qt="-l$qtlib-mt" + LIBQT_GLOB="lib$qtlib-mt.*" + USING_QT_MT="using -mt" +else + LIBQT="-l$qtlib" +fi + +if test $kde_qtver != 1; then + + AC_REQUIRE([AC_FIND_PNG]) + AC_REQUIRE([AC_FIND_JPEG]) + LIBQT="$LIBQT $LIBPNG $LIBJPEG" +fi + +if test $kde_qtver = 3; then + AC_REQUIRE([KDE_CHECK_LIBDL]) + LIBQT="$LIBQT $LIBDL" +fi + +AC_MSG_CHECKING([for Qt]) + +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIBQT="$LIBQT $X_PRE_LIBS -lXext -lX11 $LIBSM $LIBSOCKET" +fi +ac_qt_includes=NO ac_qt_libraries=NO ac_qt_bindir=NO +qt_libraries="" +qt_includes="" +AC_ARG_WITH(qt-dir, + AC_HELP_STRING([--with-qt-dir=DIR],[where the root of Qt is installed ]), + [ ac_qt_includes="$withval"/include + ac_qt_libraries="$withval"/lib${kdelibsuff} + ac_qt_bindir="$withval"/bin + ]) + +AC_ARG_WITH(qt-includes, + AC_HELP_STRING([--with-qt-includes=DIR],[where the Qt includes are. ]), + [ + ac_qt_includes="$withval" + ]) + +kde_qt_libs_given=no + +AC_ARG_WITH(qt-libraries, + AC_HELP_STRING([--with-qt-libraries=DIR],[where the Qt library is installed.]), + [ ac_qt_libraries="$withval" + kde_qt_libs_given=yes + ]) + +AC_CACHE_VAL(ac_cv_have_qt, +[#try to guess Qt locations + +qt_incdirs="" +for dir in $kde_qt_dirs; do + qt_incdirs="$qt_incdirs $dir/include $dir" +done +if test -z "$PKG_CONFIG"; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) +fi +if test "$PKG_CONFIG" != "no" ; then + if $PKG_CONFIG --exists qt-mt ; then + qt_incdirs="$qt_incdirs `$PKG_CONFIG --variable=includedir qt-mt`" + fi +fi +qt_incdirs="$QTINC $qt_incdirs /usr/local/qt/include /usr/include/qt /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/X11R6/include/qt2 /usr/include/qt3 $x_includes" +if test ! "$ac_qt_includes" = "NO"; then + qt_incdirs="$ac_qt_includes $qt_incdirs" +fi + +if test "$kde_qtver" != "1"; then + kde_qt_header=qstyle.h +else + kde_qt_header=qglobal.h +fi + +AC_FIND_FILE($kde_qt_header, $qt_incdirs, qt_incdir) +ac_qt_includes="$qt_incdir" + +qt_libdirs="" +for dir in $kde_qt_dirs; do + qt_libdirs="$qt_libdirs $dir/lib${kdelibsuff} $dir/lib $dir" +done +if test -z "$PKG_CONFIG"; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) +fi +if test "$PKG_CONFIG" != "no" ; then + if $PKG_CONFIG --exists qt-mt ; then + qt_libdirs="$qt_incdirs `$PKG_CONFIG --variable=libdir qt-mt`" + fi +fi +qt_libdirs="$QTLIB $qt_libdirs /usr/X11R6/lib /usr/lib /usr/local/qt/lib $x_libraries" +if test ! "$ac_qt_libraries" = "NO"; then + qt_libdir=$ac_qt_libraries +else + qt_libdirs="$ac_qt_libraries $qt_libdirs" + # if the Qt was given, the chance is too big that libqt.* doesn't exist + qt_libdir=NONE + for dir in $qt_libdirs; do + try="ls -1 $dir/${LIBQT_GLOB}" + if test -n "`$try 2> /dev/null`"; then qt_libdir=$dir; break; else echo "tried $dir" >&AC_FD_CC ; fi + done +fi +for a in $qt_libdir/lib`echo ${kde_int_qt} | sed 's,^-l,,'`_incremental.*; do + if test -e "$a"; then + LIBQT="$LIBQT ${kde_int_qt}_incremental" + break + fi +done + +ac_qt_libraries="$qt_libdir" + +AC_LANG_SAVE +AC_LANG_CPLUSPLUS + +ac_cxxflags_safe="$CXXFLAGS" +ac_ldflags_safe="$LDFLAGS" +ac_libs_safe="$LIBS" + +CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes" +LDFLAGS="$LDFLAGS -L$qt_libdir $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS" +LIBS="$LIBS $LIBQT $KDE_MT_LIBS" + +KDE_PRINT_QT_PROGRAM + +if AC_TRY_EVAL(ac_link) && test -s conftest; then + rm -f conftest* +else + echo "configure: failed program was:" >&AC_FD_CC + cat conftest.$ac_ext >&AC_FD_CC + ac_qt_libraries="NO" +fi +rm -f conftest* +CXXFLAGS="$ac_cxxflags_safe" +LDFLAGS="$ac_ldflags_safe" +LIBS="$ac_libs_safe" + +AC_LANG_RESTORE +if test "$ac_qt_includes" = NO || test "$ac_qt_libraries" = NO; then + ac_cv_have_qt="have_qt=no" + ac_qt_notfound="" + missing_qt_mt="" + if test "$ac_qt_includes" = NO; then + if test "$ac_qt_libraries" = NO; then + ac_qt_notfound="(headers and libraries)"; + else + ac_qt_notfound="(headers)"; + fi + else + if test "x$kde_use_qt_mt" = "xyes"; then + missing_qt_mt=" +Make sure that you have compiled Qt with thread support!" + ac_qt_notfound="(library $qtlib-mt)"; + else + ac_qt_notfound="(library $qtlib)"; + fi + fi + + AC_MSG_ERROR([Qt ($kde_qt_minversion) $ac_qt_notfound not found. Please check your installation! +For more details about this problem, look at the end of config.log.$missing_qt_mt]) +else + have_qt="yes" +fi +]) + +eval "$ac_cv_have_qt" + +if test "$have_qt" != yes; then + AC_MSG_RESULT([$have_qt]); +else + ac_cv_have_qt="have_qt=yes \ + ac_qt_includes=$ac_qt_includes ac_qt_libraries=$ac_qt_libraries" + AC_MSG_RESULT([libraries $ac_qt_libraries, headers $ac_qt_includes $USING_QT_MT]) + + qt_libraries="$ac_qt_libraries" + qt_includes="$ac_qt_includes" +fi + +if test ! "$kde_qt_libs_given" = "yes" && test ! "$kde_qtver" = 3; then + KDE_CHECK_QT_DIRECT(qt_libraries= ,[]) +fi + +AC_SUBST(qt_libraries) +AC_SUBST(qt_includes) + +if test "$qt_includes" = "$x_includes" || test -z "$qt_includes"; then + QT_INCLUDES="" +else + QT_INCLUDES="-I$qt_includes" + all_includes="$QT_INCLUDES $all_includes" +fi + +if test "$qt_libraries" = "$x_libraries" || test -z "$qt_libraries"; then + QT_LDFLAGS="" +else + QT_LDFLAGS="-L$qt_libraries" + all_libraries="$QT_LDFLAGS $all_libraries" +fi +test -z "$KDE_MT_LDFLAGS" || all_libraries="$all_libraries $KDE_MT_LDFLAGS" + +AC_SUBST(QT_INCLUDES) +AC_SUBST(QT_LDFLAGS) +AC_PATH_QT_MOC_UIC + +KDE_CHECK_QT_JPEG + +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBZ) $(LIBPNG) -lXext $(LIB_X11) $(LIBSM)' +else +LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBZ) $(LIBPNG)' +fi +test -z "$KDE_MT_LIBS" || LIB_QT="$LIB_QT $KDE_MT_LIBS" +for a in $qt_libdir/lib`echo ${kde_int_qt} | sed 's,^-l,,'`_incremental.*; do + if test -e "$a"; then + LIB_QT="$LIB_QT ${kde_int_qt}_incremental" + break + fi +done + +AC_SUBST(LIB_QT) +AC_SUBST(LIB_QPE) + +AC_SUBST(kde_qtver) +]) + +AC_DEFUN([AC_PATH_QT], +[ +AC_PATH_QT_1_3 +]) + +AC_DEFUN([KDE_CHECK_UIC_PLUGINS], +[ +AC_REQUIRE([AC_PATH_QT_MOC_UIC]) + +if test x$ac_uic_supports_libpath = xyes; then + +AC_MSG_CHECKING([if UIC has KDE plugins available]) +AC_CACHE_VAL(kde_cv_uic_plugins, +[ +cat > actest.ui << EOF + +NewConnectionDialog + + + + testInput + + + + +EOF + + + +kde_cv_uic_plugins=no +kde_line="$UIC_PATH -L $kde_widgetdir" +if test x$ac_uic_supports_nounload = xyes; then + kde_line="$kde_line -nounload" +fi +kde_line="$kde_line -impl actest.h actest.ui > actest.cpp" +if AC_TRY_EVAL(kde_line); then + # if you're trying to debug this check and think it's incorrect, + # better check your installation. The check _is_ correct - your + # installation is not. + if test -f actest.cpp && grep klineedit actest.cpp > /dev/null; then + kde_cv_uic_plugins=yes + fi +fi +rm -f actest.ui actest.cpp +]) + +AC_MSG_RESULT([$kde_cv_uic_plugins]) +if test "$kde_cv_uic_plugins" != yes; then + AC_MSG_ERROR([ +you need to install kdelibs first. + +If you did install kdelibs, then the Qt version that is picked up by +this configure is not the same version you used to compile kdelibs. +The Qt Plugin installed by kdelibs is *ONLY* loadable if it is the +_same Qt version_, compiled with the _same compiler_ and the same Qt +configuration settings. +]) +fi +fi +]) + +AC_DEFUN([KDE_CHECK_FINAL], +[ + AC_ARG_ENABLE(final, + AC_HELP_STRING([--enable-final], + [build size optimized apps (experimental - needs lots of memory)]), + kde_use_final=$enableval, kde_use_final=no) + + if test "x$kde_use_final" = "xyes"; then + KDE_USE_FINAL_TRUE="" + KDE_USE_FINAL_FALSE="#" + else + KDE_USE_FINAL_TRUE="#" + KDE_USE_FINAL_FALSE="" + fi + AC_SUBST(KDE_USE_FINAL_TRUE) + AC_SUBST(KDE_USE_FINAL_FALSE) +]) + +AC_DEFUN([KDE_CHECK_CLOSURE], +[ + AC_ARG_ENABLE(closure, + AC_HELP_STRING([--enable-closure],[delay template instantiation]), + kde_use_closure=$enableval, kde_use_closure=no) + + KDE_NO_UNDEFINED="" + if test "x$kde_use_closure" = "xyes"; then + KDE_USE_CLOSURE_TRUE="" + KDE_USE_CLOSURE_FALSE="#" +# CXXFLAGS="$CXXFLAGS $REPO" + else + KDE_USE_CLOSURE_TRUE="#" + KDE_USE_CLOSURE_FALSE="" + KDE_NO_UNDEFINED="" + case $host in + *-*-linux-gnu) + KDE_CHECK_COMPILER_FLAG([Wl,--no-undefined], + [KDE_CHECK_COMPILER_FLAG([Wl,--allow-shlib-undefined], + [KDE_NO_UNDEFINED="-Wl,--no-undefined -Wl,--allow-shlib-undefined"], + [KDE_NO_UNDEFINED=""])], + [KDE_NO_UNDEFINED=""]) + ;; + esac + fi + AC_SUBST(KDE_USE_CLOSURE_TRUE) + AC_SUBST(KDE_USE_CLOSURE_FALSE) + AC_SUBST(KDE_NO_UNDEFINED) +]) + +dnl Check if the linker supports --enable-new-dtags and --as-needed +AC_DEFUN([KDE_CHECK_NEW_LDFLAGS], +[ + AC_ARG_ENABLE(new_ldflags, + AC_HELP_STRING([--enable-new-ldflags], + [enable the new linker flags]), + kde_use_new_ldflags=$enableval, + kde_use_new_ldflags=no) + + LDFLAGS_AS_NEEDED="" + LDFLAGS_NEW_DTAGS="" + if test "x$kde_use_new_ldflags" = "xyes"; then + LDFLAGS_NEW_DTAGS="" + KDE_CHECK_COMPILER_FLAG([Wl,--enable-new-dtags], + [LDFLAGS_NEW_DTAGS="-Wl,--enable-new-dtags"],) + + KDE_CHECK_COMPILER_FLAG([Wl,--as-needed], + [LDFLAGS_AS_NEEDED="-Wl,--as-needed"],) + fi + AC_SUBST(LDFLAGS_AS_NEEDED) + AC_SUBST(LDFLAGS_NEW_DTAGS) +]) + +AC_DEFUN([KDE_CHECK_NMCHECK], +[ + AC_ARG_ENABLE(nmcheck,AC_HELP_STRING([--enable-nmcheck],[enable automatic namespace cleanness check]), + kde_use_nmcheck=$enableval, kde_use_nmcheck=no) + + if test "$kde_use_nmcheck" = "yes"; then + KDE_USE_NMCHECK_TRUE="" + KDE_USE_NMCHECK_FALSE="#" + else + KDE_USE_NMCHECK_TRUE="#" + KDE_USE_NMCHECK_FALSE="" + fi + AC_SUBST(KDE_USE_NMCHECK_TRUE) + AC_SUBST(KDE_USE_NMCHECK_FALSE) +]) + +AC_DEFUN([KDE_EXPAND_MAKEVAR], [ +savex=$exec_prefix +test "x$exec_prefix" = xNONE && exec_prefix=$prefix +tmp=$$2 +while $1=`eval echo "$tmp"`; test "x$$1" != "x$tmp"; do tmp=$$1; done +exec_prefix=$savex +]) + +dnl ------------------------------------------------------------------------ +dnl Now, the same with KDE +dnl $(KDE_LDFLAGS) will be the kdeliblocation (if needed) +dnl and $(kde_includes) will be the kdehdrlocation (if needed) +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_BASE_PATH_KDE], +[ +AC_REQUIRE([KDE_CHECK_STL]) +AC_REQUIRE([AC_PATH_QT])dnl +AC_REQUIRE([KDE_CHECK_LIB64]) + +AC_CHECK_RPATH +AC_MSG_CHECKING([for KDE]) + +if test "${prefix}" != NONE; then + kde_includes=${includedir} + KDE_EXPAND_MAKEVAR(ac_kde_includes, includedir) + + kde_libraries=${libdir} + KDE_EXPAND_MAKEVAR(ac_kde_libraries, libdir) + +else + ac_kde_includes= + ac_kde_libraries= + kde_libraries="" + kde_includes="" +fi + +AC_CACHE_VAL(ac_cv_have_kde, +[#try to guess kde locations + +if test "$kde_qtver" = 1; then + kde_check_header="ksock.h" + kde_check_lib="libkdecore.la" +else + kde_check_header="ksharedptr.h" + kde_check_lib="libkio.la" +fi + +if test -z "$1"; then + +kde_incdirs="$kde_libs_prefix/include /usr/lib/kde/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include /opt/kde3/include /opt/kde/include $x_includes $qt_includes" +test -n "$KDEDIR" && kde_incdirs="$KDEDIR/include $KDEDIR/include/kde $KDEDIR $kde_incdirs" +kde_incdirs="$ac_kde_includes $kde_incdirs" +AC_FIND_FILE($kde_check_header, $kde_incdirs, kde_incdir) +ac_kde_includes="$kde_incdir" + +if test -n "$ac_kde_includes" && test ! -r "$ac_kde_includes/$kde_check_header"; then + AC_MSG_ERROR([ +in the prefix, you've chosen, are no KDE headers installed. This will fail. +So, check this please and use another prefix!]) +fi + +kde_libdirs="$kde_libs_prefix/lib${kdelibsuff} /usr/lib/kde/lib${kdelibsuff} /usr/local/kde/lib${kdelibsuff} /usr/kde/lib${kdelibsuff} /usr/lib${kdelibsuff}/kde /usr/lib${kdelibsuff}/kde3 /usr/lib${kdelibsuff} /usr/X11R6/lib${kdelibsuff} /usr/local/lib${kdelibsuff} /opt/kde3/lib${kdelibsuff} /opt/kde/lib${kdelibsuff} /usr/X11R6/kde/lib${kdelibsuff}" +test -n "$KDEDIR" && kde_libdirs="$KDEDIR/lib${kdelibsuff} $KDEDIR $kde_libdirs" +kde_libdirs="$ac_kde_libraries $libdir $kde_libdirs" +AC_FIND_FILE($kde_check_lib, $kde_libdirs, kde_libdir) +ac_kde_libraries="$kde_libdir" + +kde_widgetdir=NO +dnl this might be somewhere else +AC_FIND_FILE("kde3/plugins/designer/kdewidgets.la", $kde_libdirs, kde_widgetdir) + +if test -n "$ac_kde_libraries" && test ! -r "$ac_kde_libraries/$kde_check_lib"; then +AC_MSG_ERROR([ +in the prefix, you've chosen, are no KDE libraries installed. This will fail. +So, check this please and use another prefix!]) +fi + +if test -n "$kde_widgetdir" && test ! -r "$kde_widgetdir/kde3/plugins/designer/kdewidgets.la"; then +AC_MSG_ERROR([ +I can't find the designer plugins. These are required and should have been installed +by kdelibs]) +fi + +if test -n "$kde_widgetdir"; then + kde_widgetdir="$kde_widgetdir/kde3/plugins/designer" +fi + + +if test "$ac_kde_includes" = NO || test "$ac_kde_libraries" = NO || test "$kde_widgetdir" = NO; then + ac_cv_have_kde="have_kde=no" +else + ac_cv_have_kde="have_kde=yes \ + ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries" +fi + +else dnl test -z $1, e.g. from kdelibs + + ac_cv_have_kde="have_kde=no" + +fi +])dnl + +eval "$ac_cv_have_kde" + +if test "$have_kde" != "yes"; then + if test "${prefix}" = NONE; then + ac_kde_prefix="$ac_default_prefix" + else + ac_kde_prefix="$prefix" + fi + if test "$exec_prefix" = NONE; then + ac_kde_exec_prefix="$ac_kde_prefix" + AC_MSG_RESULT([will be installed in $ac_kde_prefix]) + else + ac_kde_exec_prefix="$exec_prefix" + AC_MSG_RESULT([will be installed in $ac_kde_prefix and $ac_kde_exec_prefix]) + fi + + kde_libraries="${libdir}" + kde_includes="${includedir}" + +else + ac_cv_have_kde="have_kde=yes \ + ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries" + AC_MSG_RESULT([libraries $ac_kde_libraries, headers $ac_kde_includes]) + + kde_libraries="$ac_kde_libraries" + kde_includes="$ac_kde_includes" +fi +AC_SUBST(kde_libraries) +AC_SUBST(kde_includes) + +if test "$kde_includes" = "$x_includes" || test "$kde_includes" = "$qt_includes" || test "$kde_includes" = "/usr/include"; then + KDE_INCLUDES="" +else + KDE_INCLUDES="-I$kde_includes" + all_includes="$KDE_INCLUDES $all_includes" +fi + +KDE_DEFAULT_CXXFLAGS="-DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION" + +KDE_LDFLAGS="-L$kde_libraries" +if test ! "$kde_libraries" = "$x_libraries" && test ! "$kde_libraries" = "$qt_libraries" ; then + all_libraries="$KDE_LDFLAGS $all_libraries" +fi + +AC_SUBST(KDE_LDFLAGS) +AC_SUBST(KDE_INCLUDES) + +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + +all_libraries="$all_libraries $USER_LDFLAGS" +all_includes="$all_includes $USER_INCLUDES" +AC_SUBST(all_includes) +AC_SUBST(all_libraries) + +if test -z "$1"; then +KDE_CHECK_UIC_PLUGINS +fi + +ac_kde_libraries="$kde_libdir" + +AC_SUBST(AUTODIRS) + + +]) + +AC_DEFUN([KDE_CHECK_EXTRA_LIBS], +[ +AC_MSG_CHECKING(for extra includes) +AC_ARG_WITH(extra-includes,AC_HELP_STRING([--with-extra-includes=DIR],[adds non standard include paths]), + kde_use_extra_includes="$withval", + kde_use_extra_includes=NONE +) +kde_extra_includes= +if test -n "$kde_use_extra_includes" && \ + test "$kde_use_extra_includes" != "NONE"; then + + ac_save_ifs=$IFS + IFS=':' + for dir in $kde_use_extra_includes; do + kde_extra_includes="$kde_extra_includes $dir" + USER_INCLUDES="$USER_INCLUDES -I$dir" + done + IFS=$ac_save_ifs + kde_use_extra_includes="added" +else + kde_use_extra_includes="no" +fi +AC_SUBST(USER_INCLUDES) + +AC_MSG_RESULT($kde_use_extra_includes) + +kde_extra_libs= +AC_MSG_CHECKING(for extra libs) +AC_ARG_WITH(extra-libs,AC_HELP_STRING([--with-extra-libs=DIR],[adds non standard library paths]), + kde_use_extra_libs=$withval, + kde_use_extra_libs=NONE +) +if test -n "$kde_use_extra_libs" && \ + test "$kde_use_extra_libs" != "NONE"; then + + ac_save_ifs=$IFS + IFS=':' + for dir in $kde_use_extra_libs; do + kde_extra_libs="$kde_extra_libs $dir" + KDE_EXTRA_RPATH="$KDE_EXTRA_RPATH -R $dir" + USER_LDFLAGS="$USER_LDFLAGS -L$dir" + done + IFS=$ac_save_ifs + kde_use_extra_libs="added" +else + kde_use_extra_libs="no" +fi + +AC_SUBST(USER_LDFLAGS) + +AC_MSG_RESULT($kde_use_extra_libs) + +]) + +AC_DEFUN([KDE_1_CHECK_PATH_HEADERS], +[ + AC_MSG_CHECKING([for KDE headers installed]) + AC_LANG_SAVE + AC_LANG_CPLUSPLUS +cat > conftest.$ac_ext < +#endif +#include +#include "confdefs.h" +#include + +int main() { + printf("kde_htmldir=\\"%s\\"\n", KApplication::kde_htmldir().data()); + printf("kde_appsdir=\\"%s\\"\n", KApplication::kde_appsdir().data()); + printf("kde_icondir=\\"%s\\"\n", KApplication::kde_icondir().data()); + printf("kde_sounddir=\\"%s\\"\n", KApplication::kde_sounddir().data()); + printf("kde_datadir=\\"%s\\"\n", KApplication::kde_datadir().data()); + printf("kde_locale=\\"%s\\"\n", KApplication::kde_localedir().data()); + printf("kde_cgidir=\\"%s\\"\n", KApplication::kde_cgidir().data()); + printf("kde_confdir=\\"%s\\"\n", KApplication::kde_configdir().data()); + printf("kde_mimedir=\\"%s\\"\n", KApplication::kde_mimedir().data()); + printf("kde_toolbardir=\\"%s\\"\n", KApplication::kde_toolbardir().data()); + printf("kde_wallpaperdir=\\"%s\\"\n", + KApplication::kde_wallpaperdir().data()); + printf("kde_bindir=\\"%s\\"\n", KApplication::kde_bindir().data()); + printf("kde_partsdir=\\"%s\\"\n", KApplication::kde_partsdir().data()); + printf("kde_servicesdir=\\"/tmp/dummy\\"\n"); + printf("kde_servicetypesdir=\\"/tmp/dummy\\"\n"); + printf("kde_moduledir=\\"/tmp/dummy\\"\n"); + printf("kde_styledir=\\"/tmp/dummy\\"\n"); + printf("kde_widgetdir=\\"/tmp/dummy\\"\n"); + printf("xdg_appsdir=\\"/tmp/dummy\\"\n"); + printf("xdg_menudir=\\"/tmp/dummy\\"\n"); + printf("xdg_directorydir=\\"/tmp/dummy\\"\n"); + printf("kde_kcfgdir=\\"/tmp/dummy\\"\n"); + return 0; + } +EOF + + ac_save_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$all_includes $CPPFLAGS" + if AC_TRY_EVAL(ac_compile); then + AC_MSG_RESULT(yes) + else + AC_MSG_ERROR([your system is not able to compile a small KDE application! +Check, if you installed the KDE header files correctly. +For more details about this problem, look at the end of config.log.]) + fi + CPPFLAGS=$ac_save_CPPFLAGS + + AC_LANG_RESTORE +]) + +AC_DEFUN([KDE_CHECK_KDEQTADDON], +[ +AC_MSG_CHECKING(for kde-qt-addon) +AC_CACHE_VAL(kde_cv_have_kdeqtaddon, +[ + kde_ldflags_safe="$LDFLAGS" + kde_libs_safe="$LIBS" + kde_cxxflags_safe="$CXXFLAGS" + + LIBS="-lkde-qt-addon $LIBQT $LIBS" + CXXFLAGS="$CXXFLAGS -I$prefix/include -I$prefix/include/kde $all_includes" + LDFLAGS="$LDFLAGS $all_libraries $USER_LDFLAGS" + + AC_TRY_LINK([ + #include + ], + [ + QDomDocument doc; + ], + kde_cv_have_kdeqtaddon=yes, + kde_cv_have_kdeqtaddon=no + ) + + LDFLAGS=$kde_ldflags_safe + LIBS=$kde_libs_safe + CXXFLAGS=$kde_cxxflags_safe +]) + +AC_MSG_RESULT($kde_cv_have_kdeqtaddon) + +if test "$kde_cv_have_kdeqtaddon" = "no"; then + AC_MSG_ERROR([Can't find libkde-qt-addon. You need to install it first. +It is a separate package (and CVS module) named kde-qt-addon.]) +fi +]) + +AC_DEFUN([KDE_CREATE_LIBS_ALIASES], +[ + AC_REQUIRE([KDE_MISC_TESTS]) + AC_REQUIRE([KDE_CHECK_LIBDL]) + AC_REQUIRE([K_PATH_X]) + +if test $kde_qtver = 3; then + case $host in + *cygwin*) lib_kded="-lkdeinit_kded" ;; + *) lib_kded="" ;; + esac + AC_SUBST(LIB_KDED, $lib_kded) + AC_SUBST(LIB_KDECORE, "-lkdecore") + AC_SUBST(LIB_KDEUI, "-lkdeui") + AC_SUBST(LIB_KIO, "-lkio") + AC_SUBST(LIB_KJS, "-lkjs") + AC_SUBST(LIB_SMB, "-lsmb") + AC_SUBST(LIB_KAB, "-lkab") + AC_SUBST(LIB_KABC, "-lkabc") + AC_SUBST(LIB_KHTML, "-lkhtml") + AC_SUBST(LIB_KSPELL, "-lkspell") + AC_SUBST(LIB_KPARTS, "-lkparts") + AC_SUBST(LIB_KDEPRINT, "-lkdeprint") + AC_SUBST(LIB_KUTILS, "-lkutils") + AC_SUBST(LIB_KDEPIM, "-lkdepim") + AC_SUBST(LIB_KIMPROXY, "-lkimproxy") + AC_SUBST(LIB_KNEWSTUFF, "-lknewstuff") + AC_SUBST(LIB_KDNSSD, "-lkdnssd") + AC_SUBST(LIB_KUNITTEST, "-lkunittest") +# these are for backward compatibility + AC_SUBST(LIB_KSYCOCA, "-lkio") + AC_SUBST(LIB_KFILE, "-lkio") +elif test $kde_qtver = 2; then + AC_SUBST(LIB_KDECORE, "-lkdecore") + AC_SUBST(LIB_KDEUI, "-lkdeui") + AC_SUBST(LIB_KIO, "-lkio") + AC_SUBST(LIB_KSYCOCA, "-lksycoca") + AC_SUBST(LIB_SMB, "-lsmb") + AC_SUBST(LIB_KFILE, "-lkfile") + AC_SUBST(LIB_KAB, "-lkab") + AC_SUBST(LIB_KHTML, "-lkhtml") + AC_SUBST(LIB_KSPELL, "-lkspell") + AC_SUBST(LIB_KPARTS, "-lkparts") + AC_SUBST(LIB_KDEPRINT, "-lkdeprint") +else + AC_SUBST(LIB_KDECORE, "-lkdecore -lXext $(LIB_QT)") + AC_SUBST(LIB_KDEUI, "-lkdeui $(LIB_KDECORE)") + AC_SUBST(LIB_KFM, "-lkfm $(LIB_KDECORE)") + AC_SUBST(LIB_KFILE, "-lkfile $(LIB_KFM) $(LIB_KDEUI)") + AC_SUBST(LIB_KAB, "-lkab $(LIB_KIMGIO) $(LIB_KDECORE)") +fi +]) + +AC_DEFUN([AC_PATH_KDE], +[ + AC_BASE_PATH_KDE + AC_ARG_ENABLE(path-check,AC_HELP_STRING([--disable-path-check],[don't try to find out, where to install]), + [ + if test "$enableval" = "no"; + then ac_use_path_checking="default" + else ac_use_path_checking="" + fi + ], + [ + if test "$kde_qtver" = 1; + then ac_use_path_checking="" + else ac_use_path_checking="default" + fi + ] + ) + + AC_CREATE_KFSSTND($ac_use_path_checking) + + AC_SUBST_KFSSTND + KDE_CREATE_LIBS_ALIASES +]) + +dnl KDE_CHECK_FUNC_EXT(, [headers], [sample-use], [C prototype], [autoheader define], [call if found]) +AC_DEFUN([KDE_CHECK_FUNC_EXT], +[ +AC_MSG_CHECKING(for $1) +AC_CACHE_VAL(kde_cv_func_$1, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +save_CXXFLAGS="$CXXFLAGS" +kde_safe_LIBS="$LIBS" +LIBS="$LIBS $X_EXTRA_LIBS" +if test "$GXX" = "yes"; then +CXXFLAGS="$CXXFLAGS -pedantic-errors" +fi +AC_TRY_COMPILE([ +$2 +], +[ +$3 +], +kde_cv_func_$1=yes, +kde_cv_func_$1=no) +CXXFLAGS="$save_CXXFLAGS" +LIBS="$kde_safe_LIBS" +AC_LANG_RESTORE +]) + +AC_MSG_RESULT($kde_cv_func_$1) + +AC_MSG_CHECKING([if $1 needs custom prototype]) +AC_CACHE_VAL(kde_cv_proto_$1, +[ +if test "x$kde_cv_func_$1" = xyes; then + kde_cv_proto_$1=no +else + case "$1" in + setenv|unsetenv|usleep|random|srandom|seteuid|mkstemps|mkstemp|revoke|vsnprintf|strlcpy|strlcat) + kde_cv_proto_$1="yes - in libkdefakes" + ;; + *) + kde_cv_proto_$1=unknown + ;; + esac +fi + +if test "x$kde_cv_proto_$1" = xunknown; then + +AC_LANG_SAVE +AC_LANG_CPLUSPLUS + kde_safe_libs=$LIBS + LIBS="$LIBS $X_EXTRA_LIBS" + AC_TRY_LINK([ +$2 + +extern "C" $4; +], +[ +$3 +], +[ kde_cv_func_$1=yes + kde_cv_proto_$1=yes ], + [kde_cv_proto_$1="$1 unavailable"] +) +LIBS=$kde_safe_libs +AC_LANG_RESTORE +fi +]) +AC_MSG_RESULT($kde_cv_proto_$1) + +if test "x$kde_cv_func_$1" = xyes; then + AC_DEFINE(HAVE_$5, 1, [Define if you have $1]) + $6 +fi +if test "x$kde_cv_proto_$1" = xno; then + AC_DEFINE(HAVE_$5_PROTO, 1, + [Define if you have the $1 prototype]) +fi + +AH_VERBATIM([_HAVE_$5_PROTO], +[ +#if !defined(HAVE_$5_PROTO) +#ifdef __cplusplus +extern "C" { +#endif +$4; +#ifdef __cplusplus +} +#endif +#endif +]) +]) + +AC_DEFUN([AC_CHECK_SETENV], +[ + KDE_CHECK_FUNC_EXT(setenv, [ +#include +], + [setenv("VAR", "VALUE", 1);], + [int setenv (const char *, const char *, int)], + [SETENV]) +]) + +AC_DEFUN([AC_CHECK_UNSETENV], +[ + KDE_CHECK_FUNC_EXT(unsetenv, [ +#include +], + [unsetenv("VAR");], + [void unsetenv (const char *)], + [UNSETENV]) +]) + +AC_DEFUN([AC_CHECK_GETDOMAINNAME], +[ + KDE_CHECK_FUNC_EXT(getdomainname, [ +#include +#include +#include +], + [ +char buffer[200]; +getdomainname(buffer, 200); +], + [#include + int getdomainname (char *, size_t)], + [GETDOMAINNAME]) +]) + +AC_DEFUN([AC_CHECK_GETHOSTNAME], +[ + KDE_CHECK_FUNC_EXT(gethostname, [ +#include +#include +], + [ +char buffer[200]; +gethostname(buffer, 200); +], + [int gethostname (char *, unsigned int)], + [GETHOSTNAME]) +]) + +AC_DEFUN([AC_CHECK_USLEEP], +[ + KDE_CHECK_FUNC_EXT(usleep, [ +#include +], + [ +usleep(200); +], + [int usleep (unsigned int)], + [USLEEP]) +]) + + +AC_DEFUN([AC_CHECK_RANDOM], +[ + KDE_CHECK_FUNC_EXT(random, [ +#include +], + [ +random(); +], + [long int random(void)], + [RANDOM]) + + KDE_CHECK_FUNC_EXT(srandom, [ +#include +], + [ +srandom(27); +], + [void srandom(unsigned int)], + [SRANDOM]) + +]) + +AC_DEFUN([AC_CHECK_INITGROUPS], +[ + KDE_CHECK_FUNC_EXT(initgroups, [ +#include +#include +#include +], + [ +char buffer[200]; +initgroups(buffer, 27); +], + [int initgroups(const char *, gid_t)], + [INITGROUPS]) +]) + +AC_DEFUN([AC_CHECK_MKSTEMPS], +[ + KDE_CHECK_FUNC_EXT(mkstemps, [ +#include +#include +], + [ +mkstemps("/tmp/aaaXXXXXX", 6); +], + [int mkstemps(char *, int)], + [MKSTEMPS]) +]) + +AC_DEFUN([AC_CHECK_MKSTEMP], +[ + KDE_CHECK_FUNC_EXT(mkstemp, [ +#include +#include +], + [ +mkstemp("/tmp/aaaXXXXXX"); +], + [int mkstemp(char *)], + [MKSTEMP]) +]) + +AC_DEFUN([AC_CHECK_MKDTEMP], +[ + KDE_CHECK_FUNC_EXT(mkdtemp, [ +#include +#include +], + [ +mkdtemp("/tmp/aaaXXXXXX"); +], + [char *mkdtemp(char *)], + [MKDTEMP]) +]) + + +AC_DEFUN([AC_CHECK_RES_INIT], +[ + AC_MSG_CHECKING([if res_init needs -lresolv]) + kde_libs_safe="$LIBS" + LIBS="$LIBS $X_EXTRA_LIBS -lresolv" + AC_TRY_LINK( + [ +#include +#include +#include +#include + ], + [ + res_init(); + ], + [ + LIBRESOLV="-lresolv" + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_RES_INIT, 1, [Define if you have the res_init function]) + ], + [ AC_MSG_RESULT(no) ] + ) + LIBS=$kde_libs_safe + AC_SUBST(LIBRESOLV) + + KDE_CHECK_FUNC_EXT(res_init, + [ +#include +#include +#include +#include + ], + [res_init()], + [int res_init(void)], + [RES_INIT]) +]) + +AC_DEFUN([AC_CHECK_STRLCPY], +[ + KDE_CHECK_FUNC_EXT(strlcpy, [ +#include +], +[ char buf[20]; + strlcpy(buf, "KDE function test", sizeof(buf)); +], + [unsigned long strlcpy(char*, const char*, unsigned long)], + [STRLCPY]) +]) + +AC_DEFUN([AC_CHECK_STRLCAT], +[ + KDE_CHECK_FUNC_EXT(strlcat, [ +#include +], +[ char buf[20]; + buf[0]='\0'; + strlcat(buf, "KDE function test", sizeof(buf)); +], + [unsigned long strlcat(char*, const char*, unsigned long)], + [STRLCAT]) +]) + +AC_DEFUN([AC_CHECK_RES_QUERY], +[ + KDE_CHECK_FUNC_EXT(res_query, [ +#include +#include +#include +#include +#include +], +[ +res_query(NULL, 0, 0, NULL, 0); +], + [int res_query(const char *, int, int, unsigned char *, int)], + [RES_QUERY]) +]) + +AC_DEFUN([AC_CHECK_DN_SKIPNAME], +[ + KDE_CHECK_FUNC_EXT(dn_skipname, [ +#include +#include +#include +#include +], +[ +dn_skipname (NULL, NULL); +], + [int dn_skipname (unsigned char *, unsigned char *)], + [DN_SKIPNAME]) +]) + + +AC_DEFUN([AC_FIND_GIF], + [AC_MSG_CHECKING([for giflib]) +AC_CACHE_VAL(ac_cv_lib_gif, +[ac_save_LIBS="$LIBS" +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIBS="$all_libraries -lgif -lX11 $LIBSOCKET" +else +LIBS="$all_libraries -lgif" +fi +AC_TRY_LINK(dnl +[ +#ifdef __cplusplus +extern "C" { +#endif +int GifLastError(void); +#ifdef __cplusplus +} +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +], + [return GifLastError();], + eval "ac_cv_lib_gif=yes", + eval "ac_cv_lib_gif=no") +LIBS="$ac_save_LIBS" +])dnl +if eval "test \"`echo $ac_cv_lib_gif`\" = yes"; then + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(HAVE_LIBGIF, 1, [Define if you have libgif]) +else + AC_MSG_ERROR(You need giflib30. Please install the kdesupport package) +fi +]) + +AC_DEFUN([KDE_FIND_JPEG_HELPER], +[ +AC_MSG_CHECKING([for libjpeg$2]) +AC_CACHE_VAL(ac_cv_lib_jpeg_$1, +[ +ac_save_LIBS="$LIBS" +LIBS="$all_libraries $USER_LDFLAGS -ljpeg$2 -lm" +ac_save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" +AC_TRY_LINK( +[ +#ifdef __cplusplus +extern "C" { +#endif +void jpeg_CreateDecompress(); +#ifdef __cplusplus +} +#endif +], +[jpeg_CreateDecompress();], + eval "ac_cv_lib_jpeg_$1=-ljpeg$2", + eval "ac_cv_lib_jpeg_$1=no") +LIBS="$ac_save_LIBS" +CFLAGS="$ac_save_CFLAGS" +]) + +if eval "test ! \"`echo $ac_cv_lib_jpeg_$1`\" = no"; then + LIBJPEG="$ac_cv_lib_jpeg_$1" + AC_MSG_RESULT($ac_cv_lib_jpeg_$1) +else + AC_MSG_RESULT(no) + $3 +fi + +]) + +AC_DEFUN([AC_FIND_JPEG], +[ +dnl first look for libraries +KDE_FIND_JPEG_HELPER(6b, 6b, + KDE_FIND_JPEG_HELPER(normal, [], + [ + LIBJPEG= + ] + ) +) + +dnl then search the headers (can't use simply AC_TRY_xxx, as jpeglib.h +dnl requires system dependent includes loaded before it) +jpeg_incdirs="$includedir /usr/include /usr/local/include $kde_extra_includes" +AC_FIND_FILE(jpeglib.h, $jpeg_incdirs, jpeg_incdir) +test "x$jpeg_incdir" = xNO && jpeg_incdir= + +dnl if headers _and_ libraries are missing, this is no error, and we +dnl continue with a warning (the user will get no jpeg support in khtml) +dnl if only one is missing, it means a configuration error, but we still +dnl only warn +if test -n "$jpeg_incdir" && test -n "$LIBJPEG" ; then + AC_DEFINE_UNQUOTED(HAVE_LIBJPEG, 1, [Define if you have libjpeg]) +else + if test -n "$jpeg_incdir" || test -n "$LIBJPEG" ; then + AC_MSG_WARN([ +There is an installation error in jpeg support. You seem to have only one +of either the headers _or_ the libraries installed. You may need to either +provide correct --with-extra-... options, or the development package of +libjpeg6b. You can get a source package of libjpeg from http://www.ijg.org/ +Disabling JPEG support. +]) + else + AC_MSG_WARN([libjpeg not found. disable JPEG support.]) + fi + jpeg_incdir= + LIBJPEG= +fi + +AC_SUBST(LIBJPEG) +AH_VERBATIM(_AC_CHECK_JPEG, +[/* + * jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system + * headers and I'm too lazy to write a configure test as long as only + * unixware is related + */ +#ifdef _UNIXWARE +#define HAVE_BOOLEAN +#endif +]) +]) + +AC_DEFUN([KDE_CHECK_QT_JPEG], +[ +if test -n "$LIBJPEG"; then +AC_MSG_CHECKING([if Qt needs $LIBJPEG]) +AC_CACHE_VAL(kde_cv_qt_jpeg, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +ac_save_LIBS="$LIBS" +LIBS="$all_libraries $USER_LDFLAGS $LIBQT" +LIBS=`echo $LIBS | sed "s/$LIBJPEG//"` +ac_save_CXXFLAGS="$CXXFLAGS" +CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES" +AC_TRY_LINK( +[#include ], + [ + int argc; + char** argv; + QApplication app(argc, argv);], + eval "kde_cv_qt_jpeg=no", + eval "kde_cv_qt_jpeg=yes") +LIBS="$ac_save_LIBS" +CXXFLAGS="$ac_save_CXXFLAGS" +AC_LANG_RESTORE +fi +]) + +if eval "test ! \"`echo $kde_cv_qt_jpeg`\" = no"; then + AC_MSG_RESULT(yes) + LIBJPEG_QT='$(LIBJPEG)' +else + AC_MSG_RESULT(no) + LIBJPEG_QT= +fi + +]) + +AC_DEFUN([AC_FIND_ZLIB], +[ +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_MSG_CHECKING([for libz]) +AC_CACHE_VAL(ac_cv_lib_z, +[ +kde_save_LIBS="$LIBS" +LIBS="$all_libraries $USER_LDFLAGS -lz $LIBSOCKET" +kde_save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" +AC_TRY_LINK(dnl +[ +#include +#include +], +[ + char buf[42]; + gzFile f = (gzFile) 0; + /* this would segfault.. but we only link, don't run */ + (void) gzgets(f, buf, sizeof(buf)); + + return (strcmp(zlibVersion(), ZLIB_VERSION) == 0); +], + eval "ac_cv_lib_z='-lz'", + eval "ac_cv_lib_z=no") +LIBS="$kde_save_LIBS" +CFLAGS="$kde_save_CFLAGS" +])dnl +if test ! "$ac_cv_lib_z" = no; then + AC_DEFINE_UNQUOTED(HAVE_LIBZ, 1, [Define if you have libz]) + LIBZ="$ac_cv_lib_z" + AC_MSG_RESULT($ac_cv_lib_z) +else + AC_MSG_ERROR(not found. + Possibly configure picks up an outdated version + installed by XFree86. Remove it from your system. + + Check your installation and look into config.log) + LIBZ="" +fi +AC_SUBST(LIBZ) +]) + +AC_DEFUN([KDE_TRY_TIFFLIB], +[ +AC_MSG_CHECKING([for libtiff $1]) + +AC_CACHE_VAL(kde_cv_libtiff_$1, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +kde_save_LIBS="$LIBS" +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIBS="$all_libraries $USER_LDFLAGS -l$1 $LIBJPEG $LIBZ -lX11 $LIBSOCKET -lm" +else +LIBS="$all_libraries $USER_LDFLAGS -l$1 $LIBJPEG $LIBZ -lm" +fi +kde_save_CXXFLAGS="$CXXFLAGS" +CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES" + +AC_TRY_LINK(dnl +[ +#include +], + [return (TIFFOpen( "", "r") == 0); ], +[ + kde_cv_libtiff_$1="-l$1 $LIBJPEG $LIBZ" +], [ + kde_cv_libtiff_$1=no +]) + +LIBS="$kde_save_LIBS" +CXXFLAGS="$kde_save_CXXFLAGS" +AC_LANG_RESTORE +]) + +if test "$kde_cv_libtiff_$1" = "no"; then + AC_MSG_RESULT(no) + LIBTIFF="" + $3 +else + LIBTIFF="$kde_cv_libtiff_$1" + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(HAVE_LIBTIFF, 1, [Define if you have libtiff]) + $2 +fi + +]) + +AC_DEFUN([AC_FIND_TIFF], +[ +AC_REQUIRE([K_PATH_X]) +AC_REQUIRE([AC_FIND_ZLIB]) +AC_REQUIRE([AC_FIND_JPEG]) +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + +KDE_TRY_TIFFLIB(tiff, [], + KDE_TRY_TIFFLIB(tiff34)) + +AC_SUBST(LIBTIFF) +]) + +AC_DEFUN([KDE_FIND_LIBEXR], +[ +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_REQUIRE([AC_FIND_ZLIB]) +AC_CACHE_VAL(ac_cv_libexr, +[ + if test -z "$PKG_CONFIG"; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + fi + + AC_MSG_CHECKING([for OpenEXR libraries]) + + if test "$PKG_CONFIG" = "no" ; then + AC_MSG_RESULT(no) + echo "*** The pkg-config script could not be found. Make sure it is" + echo "*** in your path, or set the PKG_CONFIG environment variable" + echo "*** to the full path to pkg-config." + echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." + else + if ! $PKG_CONFIG --exists OpenEXR ; then + AC_MSG_RESULT(no) + EXRSTATUS=no + else + if ! $PKG_CONFIG --atleast-version="1.1.1" OpenEXR ; then + AC_MSG_RESULT(no) + EXRSTATUS=old + else + kde_save_LIBS="$LIBS" + LIBS="$LIBS $all_libraries $USER_LDFLAGS `pkg-config --libs OpenEXR` $LIBZ" + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + kde_save_CXXFLAGS="$CXXFLAGS" + EXR_FLAGS=`$PKG_CONFIG --cflags OpenEXR` + CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES $EXR_FLAGS" + + AC_TRY_LINK(dnl + [ + #include + ], + [ + using namespace Imf; + RgbaInputFile file ("dummy"); + return 0; + ], + eval "ac_cv_libexr='`pkg-config --libs OpenEXR`'", + eval "ac_cv_libexr=no" + ) + LIBS="$kde_save_LIBS" + CXXFLAGS="$kde_save_CXXFLAGS" + AC_LANG_RESTORE + ])dnl + if eval "test ! \"`echo $ac_cv_libexr`\" = no"; then + AC_DEFINE_UNQUOTED(HAVE_EXR, 1, [Define if you have OpenEXR]) + LIB_EXR="$ac_cv_libexr" + AC_MSG_RESULT($ac_cv_libexr) + else + AC_MSG_RESULT(no) + LIB_EXR="" + fi + fi + fi + fi + AC_SUBST(LIB_EXR) + AC_SUBST(EXR_FLAGS) +]) + + + +AC_DEFUN([AC_FIND_PNG], +[ +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_REQUIRE([AC_FIND_ZLIB]) +AC_MSG_CHECKING([for libpng]) +AC_CACHE_VAL(ac_cv_lib_png, +[ +kde_save_LIBS="$LIBS" +if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then +LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm -lX11 $LIBSOCKET" +else +LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm" +fi +kde_save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" + +AC_TRY_LINK(dnl + [ + #include + ], + [ + png_structp png_ptr = png_create_read_struct( /* image ptr */ + PNG_LIBPNG_VER_STRING, 0, 0, 0 ); + return( png_ptr != 0 ); + ], + eval "ac_cv_lib_png='-lpng $LIBZ -lm'", + eval "ac_cv_lib_png=no" +) +LIBS="$kde_save_LIBS" +CFLAGS="$kde_save_CFLAGS" +])dnl +if eval "test ! \"`echo $ac_cv_lib_png`\" = no"; then + AC_DEFINE_UNQUOTED(HAVE_LIBPNG, 1, [Define if you have libpng]) + LIBPNG="$ac_cv_lib_png" + AC_SUBST(LIBPNG) + AC_MSG_RESULT($ac_cv_lib_png) +else + AC_MSG_RESULT(no) + LIBPNG="" + AC_SUBST(LIBPNG) +fi +]) + + +AC_DEFUN([AC_FIND_JASPER], +[ +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_REQUIRE([AC_FIND_JPEG]) +AC_MSG_CHECKING([for jasper]) +AC_CACHE_VAL(ac_cv_jasper, +[ +kde_save_LIBS="$LIBS" +LIBS="$LIBS $all_libraries $USER_LDFLAGS -ljasper $LIBJPEG -lm" +kde_save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $all_includes $USER_INCLUDES" + +AC_TRY_LINK(dnl + [ + #include + ], + [ + return( jas_init() ); + ], + eval "ac_cv_jasper='-ljasper $LIBJPEG -lm'", + eval "ac_cv_jasper=no" +) +LIBS="$kde_save_LIBS" +CFLAGS="$kde_save_CFLAGS" +])dnl +if eval "test ! \"`echo $ac_cv_jasper`\" = no"; then + AC_DEFINE_UNQUOTED(HAVE_JASPER, 1, [Define if you have jasper]) + LIB_JASPER="$ac_cv_jasper" + AC_MSG_RESULT($ac_cv_jasper) +else + AC_MSG_RESULT(no) + LIB_JASPER="" +fi +AC_SUBST(LIB_JASPER) +]) + +AC_DEFUN([AC_CHECK_BOOL], +[ + AC_DEFINE_UNQUOTED(HAVE_BOOL, 1, [You _must_ have bool]) +]) + +AC_DEFUN([AC_CHECK_GNU_EXTENSIONS], +[ +AC_MSG_CHECKING(if you need GNU extensions) +AC_CACHE_VAL(ac_cv_gnu_extensions, +[ +cat > conftest.c << EOF +#include + +#ifdef __GNU_LIBRARY__ +yes +#endif +EOF + +if (eval "$ac_cpp conftest.c") 2>&5 | + egrep "yes" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_gnu_extensions=yes +else + ac_cv_gnu_extensions=no +fi +]) + +AC_MSG_RESULT($ac_cv_gnu_extensions) +if test "$ac_cv_gnu_extensions" = "yes"; then + AC_DEFINE_UNQUOTED(_GNU_SOURCE, 1, [Define if you need to use the GNU extensions]) +fi +]) + +AC_DEFUN([KDE_CHECK_COMPILER_FLAG], +[ +AC_MSG_CHECKING([whether $CXX supports -$1]) +kde_cache=`echo $1 | sed 'y% .=/+-,%____p__%'` +AC_CACHE_VAL(kde_cv_prog_cxx_$kde_cache, +[ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -$1" + AC_TRY_LINK([],[ return 0; ], [eval "kde_cv_prog_cxx_$kde_cache=yes"], []) + CXXFLAGS="$save_CXXFLAGS" + AC_LANG_RESTORE +]) +if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then + AC_MSG_RESULT(yes) + : + $2 +else + AC_MSG_RESULT(no) + : + $3 +fi +]) + +AC_DEFUN([KDE_CHECK_C_COMPILER_FLAG], +[ +AC_MSG_CHECKING([whether $CC supports -$1]) +kde_cache=`echo $1 | sed 'y% .=/+-,%____p__%'` +AC_CACHE_VAL(kde_cv_prog_cc_$kde_cache, +[ + AC_LANG_SAVE + AC_LANG_C + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -$1" + AC_TRY_LINK([],[ return 0; ], [eval "kde_cv_prog_cc_$kde_cache=yes"], []) + CFLAGS="$save_CFLAGS" + AC_LANG_RESTORE +]) +if eval "test \"`echo '$kde_cv_prog_cc_'$kde_cache`\" = yes"; then + AC_MSG_RESULT(yes) + : + $2 +else + AC_MSG_RESULT(no) + : + $3 +fi +]) + + +dnl AC_REMOVE_FORBIDDEN removes forbidden arguments from variables +dnl use: AC_REMOVE_FORBIDDEN(CC, [-forbid -bad-option whatever]) +dnl it's all white-space separated +AC_DEFUN([AC_REMOVE_FORBIDDEN], +[ __val=$$1 + __forbid=" $2 " + if test -n "$__val"; then + __new="" + ac_save_IFS=$IFS + IFS=" " + for i in $__val; do + case "$__forbid" in + *" $i "*) AC_MSG_WARN([found forbidden $i in $1, removing it]) ;; + *) # Careful to not add spaces, where there were none, because otherwise + # libtool gets confused, if we change e.g. CXX + if test -z "$__new" ; then __new=$i ; else __new="$__new $i" ; fi ;; + esac + done + IFS=$ac_save_IFS + $1=$__new + fi +]) + + +AC_DEFUN([KDE_CHECK_FOR_BAD_COMPILER], +[ + AC_MSG_CHECKING([whether $CC is blacklisted]) + + dnl In theory we have tu run this test against $CC and $CXX + dnl in C and in C++ mode, because its perfectly legal for + dnl the user to mix compiler versions, since C has a defined + dnl ABI. + dnl + dnl For now, we assume the user is not on crack. + + AC_TRY_COMPILE([ +#ifdef __GNUC__ +#if __GNUC__ == 4 && __GNUC_MINOR__ == 0 && __GNUC_PATCHLEVEL__ == 0 +choke me +#endif +#endif +], , + kde_bad_compiler=no, + kde_bad_compiler=yes +) + + AC_MSG_RESULT($kde_bad_compiler) + +if test "$kde_bad_compiler" = "yes"; then + AC_MSG_ERROR([ + +This particular compiler version is blacklisted because it +is known to miscompile KDE. Please use a newer version, or +if that is not yet available, choose an older version. + +Please do not report a bug or bother us reporting this +configure error. We know about it, and we introduced +it by intention to avoid untraceable bugs or crashes in KDE. + +]) +fi + +]) + + +AC_DEFUN([KDE_CHECK_FOR_OPT_NOINLINE_MATCH], +[ + AC_CACHE_CHECK([whether system headers can cope with -O2 -fno-inline], + kde_cv_opt_noinline_match, + [ + kde_cv_opt_noinline_match=irrelevant + dnl if we don't use both -O2 and -fno-inline, this check is moot + if echo "$CFLAGS" | grep -e -O2 >/dev/null 2>/dev/null \ + && echo "$CFLAGS" | grep -e -fno-inline >/dev/null 2>/dev/null ; then + + ac_cflags_save="$CFLAGS" + CFLAGS="$CFLAGS -D_USE_GNU" + + AC_TRY_LINK([ + #include +], [ const char *pt, *et; + et = __extension__ ({ char __a0, __a1, __a2; (__builtin_constant_p ( ";," ) && ((size_t)(const void *)(( ";," )+ 1) - (size_t)(const void *)( ";," ) == 1) ? ((__a0 =((__const char *) ( ";," ))[0], __a0 == '\0') ? ((void) ( pt ),((void *)0) ) : ((__a1 = ((__const char *) ( ";," ))[1], __a1== '\0') ? (__extension__ (__builtin_constant_p ( __a0 ) && ( __a0 ) == '\0' ? (char *) __rawmemchr ( pt , __a0) : strchr( pt , __a0 ))) : ((__a2 = ((__const char *) ( ";," ))[2], __a2 == '\0') ? __strpbrk_c2 ( pt , __a0, __a1) :(((__const char *) ( ";," ))[3] == '\0' ? __strpbrk_c3 ( pt ,__a0, __a1, __a2): strpbrk ( pt , ";," ))))) : strpbrk ( pt , ";," )); }) ; +], + kde_cv_opt_noinline_match=yes, + kde_cv_opt_noinline_match=no + ) + + CFLAGS="$ac_cflags_save" + fi + ]) +]) + + +dnl AC_VALIDIFY_CXXFLAGS checks for forbidden flags the user may have given +AC_DEFUN([AC_VALIDIFY_CXXFLAGS], +[dnl +if test "x$kde_use_qt_emb" != "xyes"; then + AC_REMOVE_FORBIDDEN(CXX, [-fno-rtti -rpath]) + AC_REMOVE_FORBIDDEN(CXXFLAGS, [-fno-rtti -rpath]) +else + AC_REMOVE_FORBIDDEN(CXX, [-rpath]) + AC_REMOVE_FORBIDDEN(CXXFLAGS, [-rpath]) +fi +]) + +AC_DEFUN([AC_CHECK_COMPILERS], +[ + AC_ARG_ENABLE(debug, + AC_HELP_STRING([--enable-debug=ARG],[enables debug symbols (yes|no|full) [default=no]]), + [ + case $enableval in + yes) + kde_use_debug_code="yes" + kde_use_debug_define=no + ;; + full) + kde_use_debug_code="full" + kde_use_debug_define=no + ;; + *) + kde_use_debug_code="no" + kde_use_debug_define=yes + ;; + esac + ], + [kde_use_debug_code="no" + kde_use_debug_define=no + ]) + + dnl Just for configure --help + AC_ARG_ENABLE(dummyoption, + AC_HELP_STRING([--disable-debug], + [disables debug output and debug symbols [default=no]]), + [],[]) + + AC_ARG_ENABLE(strict, + AC_HELP_STRING([--enable-strict], + [compiles with strict compiler options (may not work!)]), + [ + if test $enableval = "no"; then + kde_use_strict_options="no" + else + kde_use_strict_options="yes" + fi + ], [kde_use_strict_options="no"]) + + AC_ARG_ENABLE(warnings,AC_HELP_STRING([--disable-warnings],[disables compilation with -Wall and similar]), + [ + if test $enableval = "no"; then + kde_use_warnings="no" + else + kde_use_warnings="yes" + fi + ], [kde_use_warnings="yes"]) + + dnl enable warnings for debug build + if test "$kde_use_debug_code" != "no"; then + kde_use_warnings=yes + fi + + AC_ARG_ENABLE(profile,AC_HELP_STRING([--enable-profile],[creates profiling infos [default=no]]), + [kde_use_profiling=$enableval], + [kde_use_profiling="no"] + ) + + dnl this prevents stupid AC_PROG_CC to add "-g" to the default CFLAGS + CFLAGS=" $CFLAGS" + + AC_PROG_CC + + AC_PROG_CPP + + if test "$GCC" = "yes"; then + if test "$kde_use_debug_code" != "no"; then + if test $kde_use_debug_code = "full"; then + CFLAGS="-g3 -fno-inline $CFLAGS" + else + CFLAGS="-g -O2 -fno-schedule-insns -fno-inline $CFLAGS" + fi + else + CFLAGS="-O2 $CFLAGS" + fi + fi + + if test "$kde_use_debug_define" = "yes"; then + CFLAGS="-DNDEBUG $CFLAGS" + fi + + + case "$host" in + *-*-sysv4.2uw*) CFLAGS="-D_UNIXWARE $CFLAGS";; + *-*-sysv5uw7*) CFLAGS="-D_UNIXWARE7 $CFLAGS";; + esac + + if test -z "$LDFLAGS" && test "$kde_use_debug_code" = "no" && test "$GCC" = "yes"; then + LDFLAGS="" + fi + + CXXFLAGS=" $CXXFLAGS" + + AC_PROG_CXX + + KDE_CHECK_FOR_BAD_COMPILER + + if test "$GXX" = "yes" || test "$CXX" = "KCC"; then + if test "$kde_use_debug_code" != "no"; then + if test "$CXX" = "KCC"; then + CXXFLAGS="+K0 -Wall -pedantic -W -Wpointer-arith -Wwrite-strings $CXXFLAGS" + else + if test "$kde_use_debug_code" = "full"; then + CXXFLAGS="-g3 -fno-inline $CXXFLAGS" + else + CXXFLAGS="-g -O2 -fno-schedule-insns -fno-inline $CXXFLAGS" + fi + fi + KDE_CHECK_COMPILER_FLAG(fno-builtin,[CXXFLAGS="-fno-builtin $CXXFLAGS"]) + + dnl convenience compiler flags + KDE_CHECK_COMPILER_FLAG(Woverloaded-virtual, [WOVERLOADED_VIRTUAL="-Woverloaded-virtual"], [WOVERLOADED_VRITUAL=""]) + AC_SUBST(WOVERLOADED_VIRTUAL) + else + if test "$CXX" = "KCC"; then + CXXFLAGS="+K3 $CXXFLAGS" + else + CXXFLAGS="-O2 $CXXFLAGS" + fi + fi + fi + + if test "$kde_use_debug_define" = "yes"; then + CXXFLAGS="-DNDEBUG -DNO_DEBUG $CXXFLAGS" + fi + + if test "$kde_use_profiling" = "yes"; then + KDE_CHECK_COMPILER_FLAG(pg, + [ + CFLAGS="-pg $CFLAGS" + CXXFLAGS="-pg $CXXFLAGS" + ]) + fi + + if test "$kde_use_warnings" = "yes"; then + if test "$GCC" = "yes"; then + CXXFLAGS="-Wall -W -Wpointer-arith $CXXFLAGS" + case $host in + *-*-linux-gnu) + CFLAGS="-std=iso9899:1990 -W -Wall -Wchar-subscripts -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -D_XOPEN_SOURCE=500 -D_BSD_SOURCE $CFLAGS" + CXXFLAGS="-ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wchar-subscripts $CXXFLAGS" + KDE_CHECK_COMPILER_FLAG(Wmissing-format-attribute, [CXXFLAGS="$CXXFLAGS -Wformat-security -Wmissing-format-attribute"]) + KDE_CHECK_C_COMPILER_FLAG(Wmissing-format-attribute, [CFLAGS="$CFLAGS -Wformat-security -Wmissing-format-attribute"]) + ;; + esac + KDE_CHECK_COMPILER_FLAG(Wundef,[CXXFLAGS="-Wundef $CXXFLAGS"]) + KDE_CHECK_COMPILER_FLAG(Wno-long-long,[CXXFLAGS="-Wno-long-long $CXXFLAGS"]) + dnl ### FIXME: revert for KDE 4 + KDE_CHECK_COMPILER_FLAG(Wno-non-virtual-dtor,[CXXFLAGS="$CXXFLAGS -Wno-non-virtual-dtor"]) + fi + fi + + if test "$GXX" = "yes" && test "$kde_use_strict_options" = "yes"; then + CXXFLAGS="-Wcast-qual -Wshadow -Wcast-align $CXXFLAGS" + fi + + AC_ARG_ENABLE(pch, + AC_HELP_STRING([--enable-pch], + [enables precompiled header support (currently only KCC or gcc >=3.4+unsermake) [default=no]]), + [ kde_use_pch=$enableval ],[ kde_use_pch=no ]) + + HAVE_GCC_VISIBILITY=0 + AC_SUBST([HAVE_GCC_VISIBILITY]) + + if test "$GXX" = "yes"; then + gcc_no_reorder_blocks=NO + KDE_CHECK_COMPILER_FLAG(fno-reorder-blocks,[gcc_no_reorder_blocks=YES]) + if test $kde_use_debug_code != "no" && \ + test $kde_use_debug_code != "full" && \ + test "YES" = "$gcc_no_reorder_blocks" ; then + CXXFLAGS="$CXXFLAGS -fno-reorder-blocks" + CFLAGS="$CFLAGS -fno-reorder-blocks" + fi + KDE_CHECK_COMPILER_FLAG(fno-exceptions,[CXXFLAGS="$CXXFLAGS -fno-exceptions"]) + KDE_CHECK_COMPILER_FLAG(fno-check-new, [CXXFLAGS="$CXXFLAGS -fno-check-new"]) + KDE_CHECK_COMPILER_FLAG(fno-common, [CXXFLAGS="$CXXFLAGS -fno-common"]) + KDE_CHECK_COMPILER_FLAG(fexceptions, [USE_EXCEPTIONS="-fexceptions"], USE_EXCEPTIONS= ) + ENABLE_PERMISSIVE_FLAG="-fpermissive" + + if test "$kde_use_pch" = "yes"; then + AC_MSG_CHECKING(whether gcc supports precompiling c header files) + echo >conftest.h + if $CC -x c-header conftest.h >/dev/null 2>/dev/null; then + kde_gcc_supports_pch=yes + AC_MSG_RESULT(yes) + else + kde_gcc_supports_pch=no + AC_MSG_RESULT(no) + fi + if test "$kde_gcc_supports_pch" = "yes"; then + AC_MSG_CHECKING(whether gcc supports precompiling c++ header files) + if $CXX -x c++-header conftest.h >/dev/null 2>/dev/null; then + kde_gcc_supports_pch=yes + AC_MSG_RESULT(yes) + else + kde_gcc_supports_pch=no + AC_MSG_RESULT(no) + fi + fi + rm -f conftest.h conftest.h.gch + fi + + KDE_CHECK_FOR_OPT_NOINLINE_MATCH + if test "x$kde_cv_opt_noinline_match" = "xno" ; then + CFLAGS="`echo "$CFLAGS" | sed "s/ -fno-inline//"`" + fi + fi + AM_CONDITIONAL(unsermake_enable_pch, test "$kde_use_pch" = "yes" && test "$kde_gcc_supports_pch" = "yes") + if test "$CXX" = "KCC"; then + dnl unfortunately we currently cannot disable exception support in KCC + dnl because doing so is binary incompatible and Qt by default links with exceptions :-( + dnl KDE_CHECK_COMPILER_FLAG(-no_exceptions,[CXXFLAGS="$CXXFLAGS --no_exceptions"]) + dnl KDE_CHECK_COMPILER_FLAG(-exceptions, [USE_EXCEPTIONS="--exceptions"], USE_EXCEPTIONS= ) + + if test "$kde_use_pch" = "yes"; then + dnl TODO: support --pch-dir! + KDE_CHECK_COMPILER_FLAG(-pch,[CXXFLAGS="$CXXFLAGS --pch"]) + dnl the below works (but the dir must exist), but it's + dnl useless for a whole package. + dnl The are precompiled headers for each source file, so when compiling + dnl from scratch, it doesn't make a difference, and they take up + dnl around ~5Mb _per_ sourcefile. + dnl KDE_CHECK_COMPILER_FLAG(-pch_dir /tmp, + dnl [CXXFLAGS="$CXXFLAGS --pch_dir `pwd`/pcheaders"]) + fi + dnl this flag controls inlining. by default KCC inlines in optimisation mode + dnl all implementations that are defined inside the class {} declaration. + dnl because of templates-compatibility with broken gcc compilers, this + dnl can cause excessive inlining. This flag limits it to a sane level + KDE_CHECK_COMPILER_FLAG(-inline_keyword_space_time=6,[CXXFLAGS="$CXXFLAGS --inline_keyword_space_time=6"]) + KDE_CHECK_COMPILER_FLAG(-inline_auto_space_time=2,[CXXFLAGS="$CXXFLAGS --inline_auto_space_time=2"]) + KDE_CHECK_COMPILER_FLAG(-inline_implicit_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_implicit_space_time=2.0"]) + KDE_CHECK_COMPILER_FLAG(-inline_generated_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_generated_space_time=2.0"]) + dnl Some source files are shared between multiple executables + dnl (or libraries) and some of those need template instantiations. + dnl In that case KCC needs to compile those sources with + dnl --one_instantiation_per_object. To make it easy for us we compile + dnl _all_ objects with that flag (--one_per is a shorthand). + KDE_CHECK_COMPILER_FLAG(-one_per, [CXXFLAGS="$CXXFLAGS --one_per"]) + fi + AC_SUBST(USE_EXCEPTIONS) + dnl obsolete macro - provided to keep things going + USE_RTTI= + AC_SUBST(USE_RTTI) + + case "$host" in + *-*-irix*) test "$GXX" = yes && CXXFLAGS="-D_LANGUAGE_C_PLUS_PLUS -D__LANGUAGE_C_PLUS_PLUS $CXXFLAGS" ;; + *-*-sysv4.2uw*) CXXFLAGS="-D_UNIXWARE $CXXFLAGS";; + *-*-sysv5uw7*) CXXFLAGS="-D_UNIXWARE7 $CXXFLAGS";; + *-*-solaris*) + if test "$GXX" = yes; then + libstdcpp=`$CXX -print-file-name=libstdc++.so` + if test ! -f $libstdcpp; then + AC_MSG_ERROR([You've compiled gcc without --enable-shared. This doesn't work with KDE. Please recompile gcc with --enable-shared to receive a libstdc++.so]) + fi + fi + ;; + esac + + AC_VALIDIFY_CXXFLAGS + + AC_PROG_CXXCPP + + if test "$GCC" = yes; then + NOOPT_CFLAGS=-O0 + fi + KDE_CHECK_COMPILER_FLAG(O0,[NOOPT_CXXFLAGS=-O0]) + + AC_ARG_ENABLE(coverage, + AC_HELP_STRING([--enable-coverage],[use gcc coverage testing]), [ + if test "$am_cv_CC_dependencies_compiler_type" = "gcc3"; then + ac_coverage_compiler="-fprofile-arcs -ftest-coverage" + ac_coverage_linker="-lgcc" + elif test "$am_cv_CC_dependencies_compiler_type" = "gcc"; then + ac_coverage_compiler="-fprofile-arcs -ftest-coverage" + ac_coverage_linker="" + else + AC_MSG_ERROR([coverage with your compiler is not supported]) + fi + CFLAGS="$CFLAGS $ac_coverage_compiler" + CXXFLAGS="$CXXFLAGS $ac_coverage_compiler" + LDFLAGS="$LDFLAGS $ac_coverage_linker" + ]) + + AC_SUBST(NOOPT_CXXFLAGS) + AC_SUBST(NOOPT_CFLAGS) + AC_SUBST(ENABLE_PERMISSIVE_FLAG) + + KDE_CHECK_NEW_LDFLAGS + KDE_CHECK_FINAL + KDE_CHECK_CLOSURE + KDE_CHECK_NMCHECK + + ifdef([AM_DEPENDENCIES], AC_REQUIRE([KDE_ADD_DEPENDENCIES]), []) +]) + +AC_DEFUN([KDE_CHECK_VISIBILITY_GCC_BUG], + [ + AC_CACHE_CHECK([for gcc -fvisibility-inlines-hidden bug], kde_cv_val_gcc_visibility_bug, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + + safe_CXXFLAGS=$CXXFLAGS + safe_LDFLAGS=$LDFLAGS + CXXFLAGS="$CXXFLAGS -fPIC -fvisibility-inlines-hidden -O0" + LDFLAGS="$LDFLAGS -shared -fPIC" + + AC_TRY_LINK( + [ + /* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19664 */ + #include + int some_function( void ) __attribute__ ((visibility("default"))); + int some_function( void ) + { + std::string s("blafasel"); + return 0; + } + ], [/* elvis is alive */], + kde_cv_val_gcc_visibility_bug=no, kde_cv_val_gcc_visibility_bug=yes) + + CXXFLAGS=$safe_CXXFLAGS + LDFLAGS=$safe_LDFLAGS + AC_LANG_RESTORE + ] + ) + + if test x$kde_cv_val_gcc_visibility_bug = xno; then + CXXFLAGS="$CXXFLAGS -fvisibility-inlines-hidden" + fi + ] +) + +AC_DEFUN([KDE_ENABLE_HIDDEN_VISIBILITY], +[ + AC_BEFORE([AC_PATH_QT_1_3], [KDE_ENABLE_HIDDEN_VISIBILITY]) + + AC_MSG_CHECKING([grepping for visibility push/pop in headers]) + + if test "x$GXX" = "xyes"; then + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_EGREP_CPP( + [GCC visibility push], + [ #include + ], + [ + AC_MSG_RESULT(yes) + kde_stdc_visibility_patched=yes ], + [ + AC_MSG_RESULT(no) + AC_MSG_WARN([Your libstdc++ doesn't appear to be patched for + visibility support. Disabling -fvisibility=hidden]) + + kde_stdc_visibility_patched=no ]) + + AC_LANG_RESTORE + + kde_have_gcc_visibility=no + KDE_CHECK_COMPILER_FLAG(fvisibility=hidden, + [ + kde_have_gcc_visibility=yes + dnl the whole toolchain is just a mess, gcc is just too buggy + dnl to handle STL with visibility enabled. Lets reconsider + dnl when gcc 4.2 is out or when things get fixed in the compiler. + dnl Contact mueller@kde.org for details. + AC_ARG_ENABLE(gcc-hidden-visibility, + AC_HELP_STRING([--enable-gcc-hidden-visibility],[toolchain hidden visibility [default=no]]), + [kde_have_gcc_visibility=$enableval], + [kde_have_gcc_visibility=no]) + + AC_CACHE_CHECK([if Qt is patched for -fvisibility], kde_cv_val_qt_gcc_visibility_patched, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + + safe_CXXFLAGS=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $all_includes" + + AC_TRY_COMPILE( + [ +#include +#if Q_EXPORT - 0 != 0 +/* if this compiles, then Q_EXPORT is undefined */ +/* if Q_EXPORT is nonempty, this will break compilation */ +#endif + ], [/* elvis is alive */], + kde_cv_val_qt_gcc_visibility_patched=no, kde_cv_val_qt_gcc_visibility_patched=yes) + + CXXFLAGS=$safe_CXXFLAGS + AC_LANG_RESTORE + ] + ) + + if test x$kde_have_gcc_visibility = "xyes" && test x$kde_stdc_visibility_patched = "xyes" && test x$kde_cv_val_qt_gcc_visibility_patched = "xyes"; then + CXXFLAGS="$CXXFLAGS -fvisibility=hidden" + KDE_CHECK_VISIBILITY_GCC_BUG + HAVE_GCC_VISIBILITY=1 + AC_DEFINE_UNQUOTED(__KDE_HAVE_GCC_VISIBILITY, "$HAVE_GCC_VISIBILITY", [define to 1 if -fvisibility is supported]) + fi + ]) + fi +]) + +AC_DEFUN([KDE_ADD_DEPENDENCIES], +[ + [A]M_DEPENDENCIES(CC) + [A]M_DEPENDENCIES(CXX) +]) + +dnl just a wrapper to clean up configure.in +AC_DEFUN([KDE_PROG_LIBTOOL], +[ +AC_REQUIRE([AC_CHECK_COMPILERS]) +AC_REQUIRE([AC_ENABLE_SHARED]) +AC_REQUIRE([AC_ENABLE_STATIC]) + +AC_REQUIRE([AC_LIBTOOL_DLOPEN]) +AC_REQUIRE([KDE_CHECK_LIB64]) + +AC_OBJEXT +AC_EXEEXT + +AM_PROG_LIBTOOL +AC_LIBTOOL_CXX + +LIBTOOL_SHELL="/bin/sh ./libtool" +# LIBTOOL="$LIBTOOL --silent" +KDE_PLUGIN="-avoid-version -module -no-undefined \$(KDE_NO_UNDEFINED) \$(KDE_RPATH) \$(KDE_MT_LDFLAGS)" +AC_SUBST(KDE_PLUGIN) + +# This hack ensures that libtool creates shared libs for kunittest plugins. By default check_LTLIBRARIES makes static libs. +KDE_CHECK_PLUGIN="\$(KDE_PLUGIN) -rpath \$(libdir)" +AC_SUBST(KDE_CHECK_PLUGIN) + +# we patch configure quite some so we better keep that consistent for incremental runs +AC_SUBST(AUTOCONF,'$(SHELL) $(top_srcdir)/admin/cvs.sh configure || touch configure') +]) + +AC_DEFUN([KDE_CHECK_LIB64], +[ + AC_ARG_ENABLE(libsuffix, + AC_HELP_STRING([--enable-libsuffix], + [/lib directory suffix (64,32,none,auto[=default])]), + kdelibsuff=$enableval, kdelibsuff="auto") + + if test "$kdelibsuff" = "auto"; then + +cat > conftest.c << EOF +#include +int main() { + return 0; +} +EOF + kdelibsuff=`$CC conftest.c -o conftest.out; ldd conftest.out |sed -ne '/libc.so/{ + s,.*/lib\([[^\/]]*\)/.*,\1, + p +}'` + rm -rf conftest.* + fi + + if test "$kdelibsuff" = "no" || test "$kdelibsuff" = "none"; then + kdelibsuff= + fi + if test -z "$kdelibsuff"; then + AC_MSG_RESULT([not using lib directory suffix]) + AC_DEFINE(KDELIBSUFF, [""], Suffix for lib directories) + else + if test "$libdir" = '${exec_prefix}/lib'; then + libdir="$libdir${kdelibsuff}" + AC_SUBST([libdir], ["$libdir"]) dnl ugly hack for lib64 platforms + fi + AC_DEFINE_UNQUOTED(KDELIBSUFF, ["${kdelibsuff}"], Suffix for lib directories) + AC_MSG_RESULT([using lib directory suffix $kdelibsuff]) + fi +]) + +AC_DEFUN([KDE_CHECK_TYPES], +[ AC_CHECK_SIZEOF(int, 4)dnl + AC_CHECK_SIZEOF(short)dnl + AC_CHECK_SIZEOF(long, 4)dnl + AC_CHECK_SIZEOF(char *, 4)dnl +])dnl + +dnl Not used - kept for compat only? +AC_DEFUN([KDE_DO_IT_ALL], +[ +AC_CANONICAL_SYSTEM +AC_ARG_PROGRAM +AM_INIT_AUTOMAKE($1, $2) +AM_DISABLE_LIBRARIES +AC_PREFIX_DEFAULT(${KDEDIR:-/usr/local/kde}) +AC_CHECK_COMPILERS +KDE_PROG_LIBTOOL +AM_KDE_WITH_NLS +AC_PATH_KDE +]) + +AC_DEFUN([AC_CHECK_RPATH], +[ +AC_MSG_CHECKING(for rpath) +AC_ARG_ENABLE(rpath, + AC_HELP_STRING([--disable-rpath],[do not use the rpath feature of ld]), + USE_RPATH=$enableval, USE_RPATH=yes) + +if test -z "$KDE_RPATH" && test "$USE_RPATH" = "yes"; then + + KDE_RPATH="-R \$(libdir)" + + if test "$kde_libraries" != "$libdir"; then + KDE_RPATH="$KDE_RPATH -R \$(kde_libraries)" + fi + + if test -n "$qt_libraries"; then + KDE_RPATH="$KDE_RPATH -R \$(qt_libraries)" + fi + dnl $x_libraries is set to /usr/lib in case + if test -n "$X_LDFLAGS"; then + X_RPATH="-R \$(x_libraries)" + KDE_RPATH="$KDE_RPATH $X_RPATH" + fi + if test -n "$KDE_EXTRA_RPATH"; then + KDE_RPATH="$KDE_RPATH \$(KDE_EXTRA_RPATH)" + fi +fi +AC_SUBST(KDE_EXTRA_RPATH) +AC_SUBST(KDE_RPATH) +AC_SUBST(X_RPATH) +AC_MSG_RESULT($USE_RPATH) +]) + +dnl Check for the type of the third argument of getsockname +AC_DEFUN([AC_CHECK_SOCKLEN_T], +[ + AC_MSG_CHECKING(for socklen_t) + AC_CACHE_VAL(kde_cv_socklen_t, + [ + AC_LANG_PUSH(C++) + kde_cv_socklen_t=no + AC_TRY_COMPILE([ + #include + #include + ], + [ + socklen_t len; + getpeername(0,0,&len); + ], + [ + kde_cv_socklen_t=yes + kde_cv_socklen_t_equiv=socklen_t + ]) + AC_LANG_POP(C++) + ]) + AC_MSG_RESULT($kde_cv_socklen_t) + if test $kde_cv_socklen_t = no; then + AC_MSG_CHECKING([for socklen_t equivalent for socket functions]) + AC_CACHE_VAL(kde_cv_socklen_t_equiv, + [ + kde_cv_socklen_t_equiv=int + AC_LANG_PUSH(C++) + for t in int size_t unsigned long "unsigned long"; do + AC_TRY_COMPILE([ + #include + #include + ], + [ + $t len; + getpeername(0,0,&len); + ], + [ + kde_cv_socklen_t_equiv="$t" + break + ]) + done + AC_LANG_POP(C++) + ]) + AC_MSG_RESULT($kde_cv_socklen_t_equiv) + fi + AC_DEFINE_UNQUOTED(kde_socklen_t, $kde_cv_socklen_t_equiv, + [type to use in place of socklen_t if not defined]) + AC_DEFINE_UNQUOTED(ksize_t, $kde_cv_socklen_t_equiv, + [type to use in place of socklen_t if not defined (deprecated, use kde_socklen_t)]) +]) + +dnl This is a merge of some macros out of the gettext aclocal.m4 +dnl since we don't need anything, I took the things we need +dnl the copyright for them is: +dnl > +dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +dnl This Makefile.in is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without +dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A +dnl PARTICULAR PURPOSE. +dnl > +dnl for this file it is relicensed under LGPL + +AC_DEFUN([AM_KDE_WITH_NLS], + [ + dnl If we use NLS figure out what method + + AM_PATH_PROG_WITH_TEST_KDE(MSGFMT, msgfmt, + [test -n "`$ac_dir/$ac_word --version 2>&1 | grep 'GNU gettext'`"], msgfmt) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + if test -z "`$GMSGFMT --version 2>&1 | grep 'GNU gettext'`"; then + AC_MSG_RESULT([found msgfmt program is not GNU msgfmt; ignore it]) + GMSGFMT=":" + fi + MSGFMT=$GMSGFMT + AC_SUBST(GMSGFMT) + AC_SUBST(MSGFMT) + + AM_PATH_PROG_WITH_TEST_KDE(XGETTEXT, xgettext, + [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) + + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else + AC_MSG_RESULT( + [found xgettext programs is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + fi + AC_SUBST(XGETTEXT) + + ]) + +# Search path for a program which passes the given test. +# Ulrich Drepper , 1996. + +# serial 1 +# Stephan Kulow: I appended a _KDE against name conflicts + +dnl AM_PATH_PROG_WITH_TEST_KDE(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST_KDE], +[# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + /*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in ifelse([$5], , $PATH, [$5]); do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test -n "[$]$1"; then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) + + +# Check whether LC_MESSAGES is available in . +# Ulrich Drepper , 1995. + +# serial 1 + +AC_DEFUN([AM_LC_MESSAGES], + [if test $ac_cv_header_locale_h = yes; then + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your locale.h file contains LC_MESSAGES]) + fi + fi]) + +dnl From Jim Meyering. +dnl FIXME: migrate into libit. + +AC_DEFUN([AM_FUNC_OBSTACK], +[AC_CACHE_CHECK([for obstacks], am_cv_func_obstack, + [AC_TRY_LINK([#include "obstack.h"], + [struct obstack *mem;obstack_free(mem,(char *) 0)], + am_cv_func_obstack=yes, + am_cv_func_obstack=no)]) + if test $am_cv_func_obstack = yes; then + AC_DEFINE(HAVE_OBSTACK) + else + LIBOBJS="$LIBOBJS obstack.o" + fi +]) + +dnl From Jim Meyering. Use this if you use the GNU error.[ch]. +dnl FIXME: Migrate into libit + +AC_DEFUN([AM_FUNC_ERROR_AT_LINE], +[AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line, + [AC_TRY_LINK([],[error_at_line(0, 0, "", 0, "");], + am_cv_lib_error_at_line=yes, + am_cv_lib_error_at_line=no)]) + if test $am_cv_lib_error_at_line = no; then + LIBOBJS="$LIBOBJS error.o" + fi + AC_SUBST(LIBOBJS)dnl +]) + +# Macro to add for using GNU gettext. +# Ulrich Drepper , 1995. + +# serial 1 +# Stephan Kulow: I put a KDE in it to avoid name conflicts + +AC_DEFUN([AM_KDE_GNU_GETTEXT], + [AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([AM_KDE_WITH_NLS])dnl + AC_CHECK_HEADERS([limits.h locale.h nl_types.h string.h values.h alloca.h]) + AC_CHECK_FUNCS([getcwd munmap putenv setlocale strchr strcasecmp \ +__argz_count __argz_stringify __argz_next]) + + AC_MSG_CHECKING(for stpcpy) + AC_CACHE_VAL(kde_cv_func_stpcpy, + [ + kde_safe_cxxflags=$CXXFLAGS + CXXFLAGS="-Werror" + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([ + #include + ], + [ + char buffer[200]; + stpcpy(buffer, buffer); + ], + kde_cv_func_stpcpy=yes, + kde_cv_func_stpcpy=no) + AC_LANG_RESTORE + CXXFLAGS=$kde_safe_cxxflags + ]) + AC_MSG_RESULT($kde_cv_func_stpcpy) + if eval "test \"`echo $kde_cv_func_stpcpy`\" = yes"; then + AC_DEFINE(HAVE_STPCPY, 1, [Define if you have stpcpy]) + fi + + AM_LC_MESSAGES + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + AC_MSG_CHECKING(for catalogs to be installed) + NEW_LINGUAS= + for lang in ${LINGUAS=$ALL_LINGUAS}; do + case "$ALL_LINGUAS" in + *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; + esac + done + LINGUAS=$NEW_LINGUAS + AC_MSG_RESULT($LINGUAS) + fi + + dnl Construct list of names of catalog files to be constructed. + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + ]) + +AC_DEFUN([AC_HAVE_XPM], + [AC_REQUIRE_CPP()dnl + AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + + test -z "$XPM_LDFLAGS" && XPM_LDFLAGS= + test -z "$XPM_INCLUDE" && XPM_INCLUDE= + + AC_ARG_WITH(xpm,AC_HELP_STRING([--without-xpm],[disable color pixmap XPM tests]), + xpm_test=$withval, xpm_test="yes") + if test "x$xpm_test" = xno; then + ac_cv_have_xpm=no + else + AC_MSG_CHECKING(for XPM) + AC_CACHE_VAL(ac_cv_have_xpm, + [ + ac_save_ldflags="$LDFLAGS" + ac_save_cflags="$CFLAGS" + if test "x$kde_use_qt_emb" != "xyes" && test "x$kde_use_qt_mac" != "xyes"; then + LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS $LDFLAGS $XPM_LDFLAGS $all_libraries -lXpm -lX11 -lXext $LIBZ $LIBSOCKET" + else + LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS $LDFLAGS $XPM_LDFLAGS $all_libraries -lXpm $LIBZ $LIBSOCKET" + fi + CFLAGS="$CFLAGS $X_INCLUDES $USER_INCLUDES" + test -n "$XPM_INCLUDE" && CFLAGS="-I$XPM_INCLUDE $CFLAGS" + AC_TRY_LINK([#include ],[], + ac_cv_have_xpm="yes",ac_cv_have_xpm="no") + LDFLAGS="$ac_save_ldflags" + CFLAGS="$ac_save_cflags" + ])dnl + + if test "$ac_cv_have_xpm" = no; then + AC_MSG_RESULT(no) + XPM_LDFLAGS="" + XPMINC="" + $2 + else + AC_DEFINE(HAVE_XPM, 1, [Define if you have XPM support]) + if test "$XPM_LDFLAGS" = ""; then + XPMLIB='-lXpm $(LIB_X11)' + else + XPMLIB="-L$XPM_LDFLAGS -lXpm "'$(LIB_X11)' + fi + if test "$XPM_INCLUDE" = ""; then + XPMINC="" + else + XPMINC="-I$XPM_INCLUDE" + fi + AC_MSG_RESULT(yes) + $1 + fi + fi + AC_SUBST(XPMINC) + AC_SUBST(XPMLIB) +]) + +AC_DEFUN([AC_HAVE_DPMS], + [AC_REQUIRE_CPP()dnl + AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + + test -z "$DPMS_LDFLAGS" && DPMS_LDFLAGS= + test -z "$DPMS_INCLUDE" && DPMS_INCLUDE= + DPMS_LIB= + + AC_ARG_WITH(dpms,AC_HELP_STRING([--without-dpms],[disable DPMS power saving]), + dpms_test=$withval, dpms_test="yes") + if test "x$dpms_test" = xno; then + ac_cv_have_dpms=no + else + AC_MSG_CHECKING(for DPMS) + dnl Note: ac_cv_have_dpms can be no, yes, or -lXdpms. + dnl 'yes' means DPMS_LIB="", '-lXdpms' means DPMS_LIB="-lXdpms". + AC_CACHE_VAL(ac_cv_have_dpms, + [ + if test "x$kde_use_qt_emb" = "xyes" || test "x$kde_use_qt_mac" = "xyes"; then + AC_MSG_RESULT(no) + ac_cv_have_dpms="no" + else + ac_save_ldflags="$LDFLAGS" + ac_save_cflags="$CFLAGS" + ac_save_libs="$LIBS" + LDFLAGS="$LDFLAGS $DPMS_LDFLAGS $all_libraries" + LIBS="-lX11 -lXext $LIBSOCKET" + CFLAGS="$CFLAGS $X_INCLUDES" + test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS" + AC_TRY_LINK([ + #include + #include + #include + #include + int foo_test_dpms() + { return DPMSSetTimeouts( 0, 0, 0, 0 ); }],[], + ac_cv_have_dpms="yes", [ + LIBS="-lXdpms $LIBS" + AC_TRY_LINK([ + #include + #include + #include + #include + int foo_test_dpms() + { return DPMSSetTimeouts( 0, 0, 0, 0 ); }],[], + [ + ac_cv_have_dpms="-lXdpms" + ],ac_cv_have_dpms="no") + ]) + LDFLAGS="$ac_save_ldflags" + CFLAGS="$ac_save_cflags" + LIBS="$ac_save_libs" + fi + ])dnl + + if test "$ac_cv_have_dpms" = no; then + AC_MSG_RESULT(no) + DPMS_LDFLAGS="" + DPMSINC="" + $2 + else + AC_DEFINE(HAVE_DPMS, 1, [Define if you have DPMS support]) + if test "$ac_cv_have_dpms" = "-lXdpms"; then + DPMS_LIB="-lXdpms" + fi + if test "$DPMS_LDFLAGS" = ""; then + DPMSLIB="$DPMS_LIB "'$(LIB_X11)' + else + DPMSLIB="$DPMS_LDFLAGS $DPMS_LIB "'$(LIB_X11)' + fi + if test "$DPMS_INCLUDE" = ""; then + DPMSINC="" + else + DPMSINC="-I$DPMS_INCLUDE" + fi + AC_MSG_RESULT(yes) + $1 + fi + fi + ac_save_cflags="$CFLAGS" + CFLAGS="$CFLAGS $X_INCLUDES" + test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS" + AH_TEMPLATE(HAVE_DPMSCAPABLE_PROTO, + [Define if you have the DPMSCapable prototype in ]) + AC_CHECK_DECL(DPMSCapable, + AC_DEFINE(HAVE_DPMSCAPABLE_PROTO),, + [#include + #include ]) + AH_TEMPLATE(HAVE_DPMSINFO_PROTO, + [Define if you have the DPMSInfo prototype in ]) + AC_CHECK_DECL(DPMSInfo, + AC_DEFINE(HAVE_DPMSINFO_PROTO),, + [#include + #include ]) + CFLAGS="$ac_save_cflags" + AC_SUBST(DPMSINC) + AC_SUBST(DPMSLIB) +]) + +AC_DEFUN([AC_HAVE_GL], + [AC_REQUIRE_CPP()dnl + AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) + + test -z "$GL_LDFLAGS" && GL_LDFLAGS= + test -z "$GL_INCLUDE" && GL_INCLUDE= + + AC_ARG_WITH(gl,AC_HELP_STRING([--without-gl],[disable 3D GL modes]), + gl_test=$withval, gl_test="yes") + if test "x$kde_use_qt_emb" = "xyes"; then + # GL and Qt Embedded is a no-go for now. + ac_cv_have_gl=no + elif test "x$gl_test" = xno; then + ac_cv_have_gl=no + else + AC_MSG_CHECKING(for GL) + AC_CACHE_VAL(ac_cv_have_gl, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_ldflags=$LDFLAGS + ac_save_cxxflags=$CXXFLAGS + ac_save_libs=$LIBS + LDFLAGS="$LDFLAGS $GL_LDFLAGS $X_LDFLAGS $all_libraries" + LIBS="$LIBS -lGL -lGLU" + test "x$kde_use_qt_mac" != xyes && test "x$kde_use_qt_emb" != xyes && LIBS="$LIBS -lX11" + LIBS="$LIBS $LIB_XEXT -lm $LIBSOCKET" + CXXFLAGS="$CFLAGS $X_INCLUDES" + test -n "$GL_INCLUDE" && CFLAGS="-I$GL_INCLUDE $CFLAGS" + AC_TRY_LINK([#include +#include +], [], + ac_cv_have_gl="yes", ac_cv_have_gl="no") + AC_LANG_RESTORE + LDFLAGS=$ac_save_ldflags + CXXFLAGS=$ac_save_cxxflags + LIBS=$ac_save_libs + ])dnl + + if test "$ac_cv_have_gl" = "no"; then + AC_MSG_RESULT(no) + GL_LDFLAGS="" + GLINC="" + $2 + else + AC_DEFINE(HAVE_GL, 1, [Defines if you have GL (Mesa, OpenGL, ...)]) + if test "$GL_LDFLAGS" = ""; then + GLLIB='-lGLU -lGL $(LIB_X11)' + else + GLLIB="$GL_LDFLAGS -lGLU -lGL "'$(LIB_X11)' + fi + if test "$GL_INCLUDE" = ""; then + GLINC="" + else + GLINC="-I$GL_INCLUDE" + fi + AC_MSG_RESULT($ac_cv_have_gl) + $1 + fi + fi + AC_SUBST(GLINC) + AC_SUBST(GLLIB) +]) + + + dnl shadow password and PAM magic - maintained by ossi@kde.org + +AC_DEFUN([KDE_PAM], [ + AC_REQUIRE([KDE_CHECK_LIBDL]) + + want_pam= + AC_ARG_WITH(pam, + AC_HELP_STRING([--with-pam[=ARG]],[enable support for PAM: ARG=[yes|no|service name]]), + [ if test "x$withval" = "xyes"; then + want_pam=yes + pam_service=kde + elif test "x$withval" = "xno"; then + want_pam=no + else + want_pam=yes + pam_service=$withval + fi + ], [ pam_service=kde ]) + + use_pam= + PAMLIBS= + if test "x$want_pam" != xno; then + AC_CHECK_LIB(pam, pam_start, [ + AC_CHECK_HEADER(security/pam_appl.h, + [ pam_header=security/pam_appl.h ], + [ AC_CHECK_HEADER(pam/pam_appl.h, + [ pam_header=pam/pam_appl.h ], + [ + AC_MSG_WARN([PAM detected, but no headers found! +Make sure you have the necessary development packages installed.]) + ] + ) + ] + ) + ], , $LIBDL) + if test -z "$pam_header"; then + if test "x$want_pam" = xyes; then + AC_MSG_ERROR([--with-pam was specified, but cannot compile with PAM!]) + fi + else + AC_DEFINE(HAVE_PAM, 1, [Defines if you have PAM (Pluggable Authentication Modules)]) + PAMLIBS="$PAM_MISC_LIB -lpam $LIBDL" + use_pam=yes + + dnl darwin claims to be something special + if test "$pam_header" = "pam/pam_appl.h"; then + AC_DEFINE(HAVE_PAM_PAM_APPL_H, 1, [Define if your PAM headers are in pam/ instead of security/]) + fi + + dnl test whether struct pam_message is const (Linux) or not (Sun) + AC_MSG_CHECKING(for const pam_message) + AC_EGREP_HEADER([struct pam_message], $pam_header, + [ AC_EGREP_HEADER([const struct pam_message], $pam_header, + [AC_MSG_RESULT([const: Linux-type PAM])], + [AC_MSG_RESULT([nonconst: Sun-type PAM]) + AC_DEFINE(PAM_MESSAGE_NONCONST, 1, [Define if your PAM support takes non-const arguments (Solaris)])] + )], + [AC_MSG_RESULT([not found - assume const, Linux-type PAM])]) + fi + fi + + AC_SUBST(PAMLIBS) +]) + +dnl DEF_PAM_SERVICE(arg name, full name, define name) +AC_DEFUN([DEF_PAM_SERVICE], [ + AC_ARG_WITH($1-pam, + AC_HELP_STRING([--with-$1-pam=[val]],[override PAM service from --with-pam for $2]), + [ if test "x$use_pam" = xyes; then + $3_PAM_SERVICE=$withval + else + AC_MSG_ERROR([Cannot use use --with-$1-pam, as no PAM was detected. +You may want to enforce it by using --with-pam.]) + fi + ], + [ if test "x$use_pam" = xyes; then + $3_PAM_SERVICE="$pam_service" + fi + ]) + if test -n "$$3_PAM_SERVICE"; then + AC_MSG_RESULT([The PAM service used by $2 will be $$3_PAM_SERVICE]) + AC_DEFINE_UNQUOTED($3_PAM_SERVICE, "$$3_PAM_SERVICE", [The PAM service to be used by $2]) + fi + AC_SUBST($3_PAM_SERVICE) +]) + +AC_DEFUN([KDE_SHADOWPASSWD], [ + AC_REQUIRE([KDE_PAM]) + + AC_CHECK_LIB(shadow, getspent, + [ LIBSHADOW="-lshadow" + ac_use_shadow=yes + ], + [ dnl for UnixWare + AC_CHECK_LIB(gen, getspent, + [ LIBGEN="-lgen" + ac_use_shadow=yes + ], + [ AC_CHECK_FUNC(getspent, + [ ac_use_shadow=yes ], + [ ac_use_shadow=no ]) + ]) + ]) + AC_SUBST(LIBSHADOW) + AC_SUBST(LIBGEN) + + AC_MSG_CHECKING([for shadow passwords]) + + AC_ARG_WITH(shadow, + AC_HELP_STRING([--with-shadow],[If you want shadow password support]), + [ if test "x$withval" != "xno"; then + use_shadow=yes + else + use_shadow=no + fi + ], [ + use_shadow="$ac_use_shadow" + ]) + + if test "x$use_shadow" = xyes; then + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SHADOW, 1, [Define if you use shadow passwords]) + else + AC_MSG_RESULT(no) + LIBSHADOW= + LIBGEN= + fi + + dnl finally make the relevant binaries setuid root, if we have shadow passwds. + dnl this still applies, if we could use it indirectly through pam. + if test "x$use_shadow" = xyes || + ( test "x$use_pam" = xyes && test "x$ac_use_shadow" = xyes ); then + case $host in + *-*-freebsd* | *-*-netbsd* | *-*-openbsd*) + SETUIDFLAGS="-m 4755 -o root";; + *) + SETUIDFLAGS="-m 4755";; + esac + fi + AC_SUBST(SETUIDFLAGS) + +]) + +AC_DEFUN([KDE_PASSWDLIBS], [ + AC_REQUIRE([KDE_MISC_TESTS]) dnl for LIBCRYPT + AC_REQUIRE([KDE_PAM]) + AC_REQUIRE([KDE_SHADOWPASSWD]) + + if test "x$use_pam" = "xyes"; then + PASSWDLIBS="$PAMLIBS" + else + PASSWDLIBS="$LIBCRYPT $LIBSHADOW $LIBGEN" + fi + + dnl FreeBSD uses a shadow-like setup, where /etc/passwd holds the users, but + dnl /etc/master.passwd holds the actual passwords. /etc/master.passwd requires + dnl root to read, so kcheckpass needs to be root (even when using pam, since pam + dnl may need to read /etc/master.passwd). + case $host in + *-*-freebsd*) + SETUIDFLAGS="-m 4755 -o root" + ;; + *) + ;; + esac + + AC_SUBST(PASSWDLIBS) +]) + +AC_DEFUN([KDE_CHECK_LIBDL], +[ +AC_CHECK_LIB(dl, dlopen, [ +LIBDL="-ldl" +ac_cv_have_dlfcn=yes +]) + +AC_CHECK_LIB(dld, shl_unload, [ +LIBDL="-ldld" +ac_cv_have_shload=yes +]) + +AC_SUBST(LIBDL) +]) + +AC_DEFUN([KDE_CHECK_DLOPEN], +[ +KDE_CHECK_LIBDL +AC_CHECK_HEADERS(dlfcn.h dl.h) +if test "$ac_cv_header_dlfcn_h" = "no"; then + ac_cv_have_dlfcn=no +fi + +if test "$ac_cv_header_dl_h" = "no"; then + ac_cv_have_shload=no +fi + +dnl XXX why change enable_dlopen? its already set by autoconf's AC_ARG_ENABLE +dnl (MM) +AC_ARG_ENABLE(dlopen, +AC_HELP_STRING([--disable-dlopen],[link statically [default=no]]), +enable_dlopen=$enableval, +enable_dlopen=yes) + +# override the user's opinion, if we know it better ;) +if test "$ac_cv_have_dlfcn" = "no" && test "$ac_cv_have_shload" = "no"; then + enable_dlopen=no +fi + +if test "$ac_cv_have_dlfcn" = "yes"; then + AC_DEFINE_UNQUOTED(HAVE_DLFCN, 1, [Define if you have dlfcn]) +fi + +if test "$ac_cv_have_shload" = "yes"; then + AC_DEFINE_UNQUOTED(HAVE_SHLOAD, 1, [Define if you have shload]) +fi + +if test "$enable_dlopen" = no ; then + test -n "$1" && eval $1 +else + test -n "$2" && eval $2 +fi + +]) + +AC_DEFUN([KDE_CHECK_DYNAMIC_LOADING], +[ +KDE_CHECK_DLOPEN(libtool_enable_shared=yes, libtool_enable_static=no) +KDE_PROG_LIBTOOL +AC_MSG_CHECKING([dynamic loading]) +eval "`egrep '^build_libtool_libs=' libtool`" +if test "$build_libtool_libs" = "yes" && test "$enable_dlopen" = "yes"; then + dynamic_loading=yes + AC_DEFINE_UNQUOTED(HAVE_DYNAMIC_LOADING) +else + dynamic_loading=no +fi +AC_MSG_RESULT($dynamic_loading) +if test "$dynamic_loading" = "yes"; then + $1 +else + $2 +fi +]) + +AC_DEFUN([KDE_ADD_INCLUDES], +[ +if test -z "$1"; then + test_include="Pix.h" +else + test_include="$1" +fi + +AC_MSG_CHECKING([for libg++ ($test_include)]) + +AC_CACHE_VAL(kde_cv_libgpp_includes, +[ +kde_cv_libgpp_includes=no + + for ac_dir in \ + \ + /usr/include/g++ \ + /usr/include \ + /usr/unsupported/include \ + /opt/include \ + $extra_include \ + ; \ + do + if test -r "$ac_dir/$test_include"; then + kde_cv_libgpp_includes=$ac_dir + break + fi + done +]) + +AC_MSG_RESULT($kde_cv_libgpp_includes) +if test "$kde_cv_libgpp_includes" != "no"; then + all_includes="-I$kde_cv_libgpp_includes $all_includes $USER_INCLUDES" +fi +]) +]) + +AC_DEFUN([KDE_CHECK_LIBPTHREAD], +[ + dnl This code is here specifically to handle the + dnl various flavors of threading library on FreeBSD + dnl 4-, 5-, and 6-, and the (weird) rules around it. + dnl There may be an environment PTHREAD_LIBS that + dnl specifies what to use; otherwise, search for it. + dnl -pthread is special cased and unsets LIBPTHREAD + dnl below if found. + LIBPTHREAD="" + + if test -n "$PTHREAD_LIBS"; then + if test "x$PTHREAD_LIBS" = "x-pthread" ; then + LIBPTHREAD="PTHREAD" + else + PTHREAD_LIBS_save="$PTHREAD_LIBS" + PTHREAD_LIBS=`echo "$PTHREAD_LIBS_save" | sed -e 's,^-l,,g'` + AC_MSG_CHECKING([for pthread_create in $PTHREAD_LIBS]) + KDE_CHECK_LIB($PTHREAD_LIBS, pthread_create, [ + LIBPTHREAD="$PTHREAD_LIBS_save"]) + PTHREAD_LIBS="$PTHREAD_LIBS_save" + fi + fi + + dnl Is this test really needed, in the face of the Tru64 test below? + if test -z "$LIBPTHREAD"; then + AC_CHECK_LIB(pthread, pthread_create, [LIBPTHREAD="-lpthread"]) + fi + + dnl This is a special Tru64 check, see BR 76171 issue #18. + if test -z "$LIBPTHREAD" ; then + AC_MSG_CHECKING([for pthread_create in -lpthread]) + kde_safe_libs=$LIBS + LIBS="$LIBS -lpthread" + AC_TRY_LINK([#include ],[(void)pthread_create(0,0,0,0);],[ + AC_MSG_RESULT(yes) + LIBPTHREAD="-lpthread"],[ + AC_MSG_RESULT(no)]) + LIBS=$kde_safe_libs + fi + + dnl Un-special-case for FreeBSD. + if test "x$LIBPTHREAD" = "xPTHREAD" ; then + LIBPTHREAD="" + fi + + AC_SUBST(LIBPTHREAD) +]) + +AC_DEFUN([KDE_CHECK_PTHREAD_OPTION], +[ + USE_THREADS="" + if test -z "$LIBPTHREAD"; then + KDE_CHECK_COMPILER_FLAG(pthread, [USE_THREADS="-D_THREAD_SAFE -pthread"]) + fi + + AH_VERBATIM(__svr_define, [ +#if defined(__SVR4) && !defined(__svr4__) +#define __svr4__ 1 +#endif +]) + case $host_os in + solaris*) + KDE_CHECK_COMPILER_FLAG(mt, [USE_THREADS="-mt"]) + CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_SOLARIS -DSVR4" + ;; + freebsd*) + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE $PTHREAD_CFLAGS" + ;; + aix*) + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" + LIBPTHREAD="$LIBPTHREAD -lc_r" + ;; + linux*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" + if test "$CXX" = "KCC"; then + CXXFLAGS="$CXXFLAGS --thread_safe" + NOOPT_CXXFLAGS="$NOOPT_CXXFLAGS --thread_safe" + fi + ;; + *) + ;; + esac + AC_SUBST(USE_THREADS) + AC_SUBST(LIBPTHREAD) +]) + +AC_DEFUN([KDE_CHECK_THREADING], +[ + AC_REQUIRE([KDE_CHECK_LIBPTHREAD]) + AC_REQUIRE([KDE_CHECK_PTHREAD_OPTION]) + dnl default is yes if libpthread is found and no if no libpthread is available + if test -z "$LIBPTHREAD"; then + if test -z "$USE_THREADS"; then + kde_check_threading_default=no + else + kde_check_threading_default=yes + fi + else + kde_check_threading_default=yes + fi + AC_ARG_ENABLE(threading,AC_HELP_STRING([--disable-threading],[disables threading even if libpthread found]), + kde_use_threading=$enableval, kde_use_threading=$kde_check_threading_default) + if test "x$kde_use_threading" = "xyes"; then + AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define if you have a working libpthread (will enable threaded code)]) + fi +]) + +AC_DEFUN([KDE_TRY_LINK_PYTHON], +[ +if test "$kde_python_link_found" = no; then + +if test "$1" = normal; then + AC_MSG_CHECKING(if a Python application links) +else + AC_MSG_CHECKING(if Python depends on $2) +fi + +AC_CACHE_VAL(kde_cv_try_link_python_$1, +[ +kde_save_cflags="$CFLAGS" +CFLAGS="$CFLAGS $PYTHONINC" +kde_save_libs="$LIBS" +LIBS="$LIBS $LIBPYTHON $2 $LIBDL $LIBSOCKET" +kde_save_ldflags="$LDFLAGS" +LDFLAGS="$LDFLAGS $PYTHONLIB" + +AC_TRY_LINK( +[ +#include +],[ + PySys_SetArgv(1, 0); +], + [kde_cv_try_link_python_$1=yes], + [kde_cv_try_link_python_$1=no] +) +CFLAGS="$kde_save_cflags" +LIBS="$kde_save_libs" +LDFLAGS="$kde_save_ldflags" +]) + +if test "$kde_cv_try_link_python_$1" = "yes"; then + AC_MSG_RESULT(yes) + kde_python_link_found=yes + if test ! "$1" = normal; then + LIBPYTHON="$LIBPYTHON $2" + fi + $3 +else + AC_MSG_RESULT(no) + $4 +fi + +fi + +]) + +AC_DEFUN([KDE_CHECK_PYTHON_DIR], +[ +AC_MSG_CHECKING([for Python directory]) + +AC_CACHE_VAL(kde_cv_pythondir, +[ + if test -z "$PYTHONDIR"; then + kde_cv_pythondir=/usr/local + else + kde_cv_pythondir="$PYTHONDIR" + fi +]) + +AC_ARG_WITH(pythondir, +AC_HELP_STRING([--with-pythondir=pythondir],[use python installed in pythondir]), +[ + ac_python_dir=$withval +], ac_python_dir=$kde_cv_pythondir +) + +AC_MSG_RESULT($ac_python_dir) +]) + +AC_DEFUN([KDE_CHECK_PYTHON_INTERN], +[ +AC_REQUIRE([KDE_CHECK_LIBDL]) +AC_REQUIRE([KDE_CHECK_LIBPTHREAD]) +AC_REQUIRE([KDE_CHECK_PYTHON_DIR]) + +if test -z "$1"; then + version="1.5" +else + version="$1" +fi + +AC_MSG_CHECKING([for Python$version]) + +python_incdirs="$ac_python_dir/include /usr/include /usr/local/include/ $kde_extra_includes" +AC_FIND_FILE(Python.h, $python_incdirs, python_incdir) +if test ! -r $python_incdir/Python.h; then + AC_FIND_FILE(python$version/Python.h, $python_incdirs, python_incdir) + python_incdir=$python_incdir/python$version + if test ! -r $python_incdir/Python.h; then + python_incdir=no + fi +fi + +PYTHONINC=-I$python_incdir + +python_libdirs="$ac_python_dir/lib$kdelibsuff /usr/lib$kdelibsuff /usr/local /usr/lib$kdelibsuff $kde_extra_libs" +AC_FIND_FILE(libpython$version.so, $python_libdirs, python_libdir) +if test ! -r $python_libdir/libpython$version.so; then + AC_FIND_FILE(libpython$version.a, $python_libdirs, python_libdir) + if test ! -r $python_libdir/libpython$version.a; then + AC_FIND_FILE(python$version/config/libpython$version.a, $python_libdirs, python_libdir) + python_libdir=$python_libdir/python$version/config + if test ! -r $python_libdir/libpython$version.a; then + python_libdir=no + fi + fi +fi + +PYTHONLIB=-L$python_libdir +kde_orig_LIBPYTHON=$LIBPYTHON +if test -z "$LIBPYTHON"; then + LIBPYTHON=-lpython$version +fi + +AC_FIND_FILE(python$version/copy.py, $python_libdirs, python_moddir) +python_moddir=$python_moddir/python$version +if test ! -r $python_moddir/copy.py; then + python_moddir=no +fi + +PYTHONMODDIR=$python_moddir + +AC_MSG_RESULT(header $python_incdir library $python_libdir modules $python_moddir) + +if test x$python_incdir = xno || test x$python_libdir = xno || test x$python_moddir = xno; then + LIBPYTHON=$kde_orig_LIBPYTHON + test "x$PYTHONLIB" = "x-Lno" && PYTHONLIB="" + test "x$PYTHONINC" = "x-Ino" && PYTHONINC="" + $2 +else + dnl Note: this test is very weak + kde_python_link_found=no + KDE_TRY_LINK_PYTHON(normal) + KDE_TRY_LINK_PYTHON(m, -lm) + KDE_TRY_LINK_PYTHON(pthread, $LIBPTHREAD) + KDE_TRY_LINK_PYTHON(tcl, -ltcl) + KDE_TRY_LINK_PYTHON(db2, -ldb2) + KDE_TRY_LINK_PYTHON(m_and_thread, [$LIBPTHREAD -lm]) + KDE_TRY_LINK_PYTHON(m_and_thread_and_util, [$LIBPTHREAD -lm -lutil]) + KDE_TRY_LINK_PYTHON(m_and_thread_and_db3, [$LIBPTHREAD -lm -ldb-3 -lutil]) + KDE_TRY_LINK_PYTHON(pthread_and_db3, [$LIBPTHREAD -ldb-3]) + KDE_TRY_LINK_PYTHON(m_and_thread_and_db, [$LIBPTHREAD -lm -ldb -ltermcap -lutil]) + KDE_TRY_LINK_PYTHON(pthread_and_dl, [$LIBPTHREAD $LIBDL -lutil -lreadline -lncurses -lm]) + KDE_TRY_LINK_PYTHON(pthread_and_panel_curses, [$LIBPTHREAD $LIBDL -lm -lpanel -lcurses]) + KDE_TRY_LINK_PYTHON(m_and_thread_and_db_special, [$LIBPTHREAD -lm -ldb -lutil], [], + [AC_MSG_WARN([it seems, Python depends on another library. + Please set LIBPYTHON to '-lpython$version -lotherlib' before calling configure to fix this + and contact the authors to let them know about this problem]) + ]) + + LIBPYTHON="$LIBPYTHON $LIBDL $LIBSOCKET" + AC_SUBST(PYTHONINC) + AC_SUBST(PYTHONLIB) + AC_SUBST(LIBPYTHON) + AC_SUBST(PYTHONMODDIR) + AC_DEFINE(HAVE_PYTHON, 1, [Define if you have the development files for python]) +fi + +]) + + +AC_DEFUN([KDE_CHECK_PYTHON], +[ + KDE_CHECK_PYTHON_INTERN("2.5", + [KDE_CHECK_PYTHON_INTERN("2.4", + [KDE_CHECK_PYTHON_INTERN("2.3", + [KDE_CHECK_PYTHON_INTERN("2.2", + [KDE_CHECK_PYTHON_INTERN("2.1", + [KDE_CHECK_PYTHON_INTERN("2.0", + [KDE_CHECK_PYTHON_INTERN($1, $2) ]) + ]) + ]) + ]) + ]) + ]) +]) + +AC_DEFUN([KDE_CHECK_STL], +[ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="`echo $CXXFLAGS | sed s/-fno-exceptions//`" + + AC_MSG_CHECKING([if C++ programs can be compiled]) + AC_CACHE_VAL(kde_cv_stl_works, + [ + AC_TRY_COMPILE([ +#include +using namespace std; +],[ + string astring="Hallo Welt."; + astring.erase(0, 6); // now astring is "Welt" + return 0; +], kde_cv_stl_works=yes, + kde_cv_stl_works=no) +]) + + AC_MSG_RESULT($kde_cv_stl_works) + + if test "$kde_cv_stl_works" = "yes"; then + # back compatible + AC_DEFINE_UNQUOTED(HAVE_SGI_STL, 1, [Define if you have a STL implementation by SGI]) + else + AC_MSG_ERROR([Your Installation isn't able to compile simple C++ programs. +Check config.log for details - if you're using a Linux distribution you might miss +a package named similar to libstdc++-dev.]) + fi + + CXXFLAGS="$ac_save_CXXFLAGS" + AC_LANG_RESTORE +]) + +AC_DEFUN([AC_FIND_QIMGIO], + [AC_REQUIRE([AC_FIND_JPEG]) +AC_REQUIRE([KDE_CHECK_EXTRA_LIBS]) +AC_MSG_CHECKING([for qimgio]) +AC_CACHE_VAL(ac_cv_lib_qimgio, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +ac_save_LIBS="$LIBS" +ac_save_CXXFLAGS="$CXXFLAGS" +LIBS="$all_libraries -lqimgio -lpng -lz $LIBJPEG $LIBQT" +CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes" +AC_TRY_RUN(dnl +[ +#include +#include +int main() { + QString t = "hallo"; + t.fill('t'); + qInitImageIO(); +} +], + ac_cv_lib_qimgio=yes, + ac_cv_lib_qimgio=no, + ac_cv_lib_qimgio=no) +LIBS="$ac_save_LIBS" +CXXFLAGS="$ac_save_CXXFLAGS" +AC_LANG_RESTORE +])dnl +if eval "test \"`echo $ac_cv_lib_qimgio`\" = yes"; then + LIBQIMGIO="-lqimgio -lpng -lz $LIBJPEG" + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(HAVE_QIMGIO, 1, [Define if you have the Qt extension qimgio available]) + AC_SUBST(LIBQIMGIO) +else + AC_MSG_RESULT(not found) +fi +]) + +AC_DEFUN([AM_DISABLE_LIBRARIES], +[ + AC_PROVIDE([AM_ENABLE_STATIC]) + AC_PROVIDE([AM_ENABLE_SHARED]) + enable_static=no + enable_shared=yes +]) + + +AC_DEFUN([AC_CHECK_UTMP_FILE], +[ + AC_MSG_CHECKING([for utmp file]) + + AC_CACHE_VAL(kde_cv_utmp_file, + [ + kde_cv_utmp_file=no + + for ac_file in \ + \ + /var/run/utmp \ + /var/adm/utmp \ + /etc/utmp \ + ; \ + do + if test -r "$ac_file"; then + kde_cv_utmp_file=$ac_file + break + fi + done + ]) + + if test "$kde_cv_utmp_file" != "no"; then + AC_DEFINE_UNQUOTED(UTMP, "$kde_cv_utmp_file", [Define the file for utmp entries]) + $1 + AC_MSG_RESULT($kde_cv_utmp_file) + else + $2 + AC_MSG_RESULT([non found]) + fi +]) + + +AC_DEFUN([KDE_CREATE_SUBDIRSLIST], +[ + +DO_NOT_COMPILE="$DO_NOT_COMPILE CVS debian bsd-port admin" +TOPSUBDIRS="" + +if test ! -s $srcdir/subdirs; then + dnl Note: Makefile.common creates subdirs, so this is just a fallback + files=`cd $srcdir && ls -1` + dirs=`for i in $files; do if test -d $i; then echo $i; fi; done` + for i in $dirs; do + echo $i >> $srcdir/subdirs + done +fi + +ac_topsubdirs= +if test -s $srcdir/inst-apps; then + ac_topsubdirs="`cat $srcdir/inst-apps`" +elif test -s $srcdir/subdirs; then + ac_topsubdirs="`cat $srcdir/subdirs`" +fi + +for i in $ac_topsubdirs; do + AC_MSG_CHECKING([if $i should be compiled]) + if test -d $srcdir/$i; then + install_it="yes" + for j in $DO_NOT_COMPILE; do + if test $i = $j; then + install_it="no" + fi + done + else + install_it="no" + fi + AC_MSG_RESULT($install_it) + vari=`echo $i | sed -e 's,[[-+.@]],_,g'` + if test $install_it = "yes"; then + TOPSUBDIRS="$TOPSUBDIRS $i" + eval "$vari""_SUBDIR_included=yes" + else + eval "$vari""_SUBDIR_included=no" + fi +done + +AC_SUBST(TOPSUBDIRS) +]) + +AC_DEFUN([KDE_CHECK_NAMESPACES], +[ +AC_MSG_CHECKING(whether C++ compiler supports namespaces) +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_TRY_COMPILE([ +], +[ +namespace Foo { + extern int i; + namespace Bar { + extern int i; + } +} + +int Foo::i = 0; +int Foo::Bar::i = 1; +],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_NAMESPACES) +], [ +AC_MSG_RESULT(no) +]) +AC_LANG_RESTORE +]) + +dnl ------------------------------------------------------------------------ +dnl Check for S_ISSOCK macro. Doesn't exist on Unix SCO. faure@kde.org +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_CHECK_S_ISSOCK], +[ +AC_MSG_CHECKING(for S_ISSOCK) +AC_CACHE_VAL(ac_cv_have_s_issock, +[ +AC_TRY_LINK( +[ +#include +], +[ +struct stat buff; +int b = S_ISSOCK( buff.st_mode ); +], +ac_cv_have_s_issock=yes, +ac_cv_have_s_issock=no) +]) +AC_MSG_RESULT($ac_cv_have_s_issock) +if test "$ac_cv_have_s_issock" = "yes"; then + AC_DEFINE_UNQUOTED(HAVE_S_ISSOCK, 1, [Define if sys/stat.h declares S_ISSOCK.]) +fi + +AH_VERBATIM(_ISSOCK, +[ +#ifndef HAVE_S_ISSOCK +#define HAVE_S_ISSOCK +#define S_ISSOCK(mode) (1==0) +#endif +]) + +]) + +dnl ------------------------------------------------------------------------ +dnl Check for MAXPATHLEN macro, defines KDEMAXPATHLEN. faure@kde.org +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([AC_CHECK_KDEMAXPATHLEN], +[ +AC_MSG_CHECKING(for MAXPATHLEN) +AC_CACHE_VAL(ac_cv_maxpathlen, +[ +cat > conftest.$ac_ext < +#endif +#include +#include +#ifndef MAXPATHLEN +#define MAXPATHLEN 1024 +#endif + +KDE_HELLO MAXPATHLEN + +EOF + +ac_try="$ac_cpp conftest.$ac_ext 2>/dev/null | grep '^KDE_HELLO' >conftest.out" + +if AC_TRY_EVAL(ac_try) && test -s conftest.out; then + ac_cv_maxpathlen=`sed 's#KDE_HELLO ##' conftest.out` +else + ac_cv_maxpathlen=1024 +fi + +rm conftest.* + +]) +AC_MSG_RESULT($ac_cv_maxpathlen) +AC_DEFINE_UNQUOTED(KDEMAXPATHLEN,$ac_cv_maxpathlen, [Define a safe value for MAXPATHLEN] ) +]) + +AC_DEFUN([KDE_CHECK_HEADER], +[ + kde_safe_cppflags=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $all_includes" + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_CHECK_HEADER([$1], [$2], [$3], [$4]) + AC_LANG_RESTORE + CPPFLAGS=$kde_safe_cppflags +]) + +AC_DEFUN([KDE_CHECK_HEADERS], +[ + AH_CHECK_HEADERS([$1]) + AC_LANG_SAVE + kde_safe_cppflags=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $all_includes" + AC_LANG_CPLUSPLUS + AC_CHECK_HEADERS([$1], [$2], [$3], [$4]) + CPPFLAGS=$kde_safe_cppflags + AC_LANG_RESTORE +]) + +AC_DEFUN([KDE_FAST_CONFIGURE], +[ + dnl makes configure fast (needs perl) + AC_ARG_ENABLE(fast-perl, AC_HELP_STRING([--disable-fast-perl],[disable fast Makefile generation (needs perl)]), + with_fast_perl=$enableval, with_fast_perl=yes) +]) + +AC_DEFUN([KDE_CONF_FILES], +[ + val= + if test -f $srcdir/configure.files ; then + val=`sed -e 's%^%\$(top_srcdir)/%' $srcdir/configure.files` + fi + CONF_FILES= + if test -n "$val" ; then + for i in $val ; do + CONF_FILES="$CONF_FILES $i" + done + fi + AC_SUBST(CONF_FILES) +])dnl + +dnl This sets the prefix, for arts and kdelibs +dnl Do NOT use in any other module. +dnl It only looks at --prefix, KDEDIR and falls back to /usr/local/kde +AC_DEFUN([KDE_SET_PREFIX_CORE], +[ + unset CDPATH + dnl make $KDEDIR the default for the installation + AC_PREFIX_DEFAULT(${KDEDIR:-/usr/local/kde}) + + if test "x$prefix" = "xNONE"; then + prefix=$ac_default_prefix + ac_configure_args="$ac_configure_args --prefix=$prefix" + fi + # And delete superfluous '/' to make compares easier + prefix=`echo "$prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'` + exec_prefix=`echo "$exec_prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'` + + kde_libs_prefix='$(prefix)' + kde_libs_htmldir='$(kde_htmldir)' + AC_SUBST(kde_libs_prefix) + AC_SUBST(kde_libs_htmldir) + KDE_FAST_CONFIGURE + KDE_CONF_FILES +]) + + +AC_DEFUN([KDE_SET_PREFIX], +[ + unset CDPATH + dnl We can't give real code to that macro, only a value. + dnl It only matters for --help, since we set the prefix in this function anyway. + AC_PREFIX_DEFAULT(${KDEDIR:-the kde prefix}) + + KDE_SET_DEFAULT_BINDIRS + if test "x$prefix" = "xNONE"; then + dnl no prefix given: look for kde-config in the PATH and deduce the prefix from it + KDE_FIND_PATH(kde-config, KDECONFIG, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(kde-config)], [], prepend) + else + dnl prefix given: look for kde-config, preferrably in prefix, otherwise in PATH + kde_save_PATH="$PATH" + PATH="$exec_prefix/bin:$prefix/bin:$PATH" + KDE_FIND_PATH(kde-config, KDECONFIG, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(kde-config)], [], prepend) + PATH="$kde_save_PATH" + fi + + kde_libs_prefix=`$KDECONFIG --prefix` + if test -z "$kde_libs_prefix" || test ! -x "$kde_libs_prefix"; then + AC_MSG_ERROR([$KDECONFIG --prefix outputed the non existant prefix '$kde_libs_prefix' for kdelibs. + This means it has been moved since you installed it. + This won't work. Please recompile kdelibs for the new prefix. + ]) + fi + kde_libs_htmldir=`$KDECONFIG --install html --expandvars` + + AC_MSG_CHECKING([where to install]) + if test "x$prefix" = "xNONE"; then + prefix=$kde_libs_prefix + AC_MSG_RESULT([$prefix (as returned by kde-config)]) + else + dnl --prefix was given. Compare prefixes and warn (in configure.in.bot.end) if different + given_prefix=$prefix + AC_MSG_RESULT([$prefix (as requested)]) + fi + + # And delete superfluous '/' to make compares easier + prefix=`echo "$prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'` + exec_prefix=`echo "$exec_prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'` + given_prefix=`echo "$given_prefix" | sed 's,//*,/,g' | sed -e 's,/$,,'` + + AC_SUBST(KDECONFIG) + AC_SUBST(kde_libs_prefix) + AC_SUBST(kde_libs_htmldir) + + KDE_FAST_CONFIGURE + KDE_CONF_FILES +]) + +pushdef([AC_PROG_INSTALL], +[ + dnl our own version, testing for a -p flag + popdef([AC_PROG_INSTALL]) + dnl as AC_PROG_INSTALL works as it works we first have + dnl to save if the user didn't specify INSTALL, as the + dnl autoconf one overwrites INSTALL and we have no chance to find + dnl out afterwards + test -n "$INSTALL" && kde_save_INSTALL_given=$INSTALL + test -n "$INSTALL_PROGRAM" && kde_save_INSTALL_PROGRAM_given=$INSTALL_PROGRAM + test -n "$INSTALL_SCRIPT" && kde_save_INSTALL_SCRIPT_given=$INSTALL_SCRIPT + AC_PROG_INSTALL + + if test -z "$kde_save_INSTALL_given" ; then + # OK, user hasn't given any INSTALL, autoconf found one for us + # now we test, if it supports the -p flag + AC_MSG_CHECKING(for -p flag to install) + rm -f confinst.$$.* > /dev/null 2>&1 + echo "Testtest" > confinst.$$.orig + ac_res=no + if ${INSTALL} -p confinst.$$.orig confinst.$$.new > /dev/null 2>&1 ; then + if test -f confinst.$$.new ; then + # OK, -p seems to do no harm to install + INSTALL="${INSTALL} -p" + ac_res=yes + fi + fi + rm -f confinst.$$.* + AC_MSG_RESULT($ac_res) + fi + dnl the following tries to resolve some signs and wonders coming up + dnl with different autoconf/automake versions + dnl e.g.: + dnl *automake 1.4 install-strip sets A_M_INSTALL_PROGRAM_FLAGS to -s + dnl and has INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(A_M_INSTALL_PROGRAM_FLAGS) + dnl it header-vars.am, so there the actual INSTALL_PROGRAM gets the -s + dnl *automake 1.4a (and above) use INSTALL_STRIP_FLAG and only has + dnl INSTALL_PROGRAM = @INSTALL_PROGRAM@ there, but changes the + dnl install-@DIR@PROGRAMS targets to explicitly use that flag + dnl *autoconf 2.13 is dumb, and thinks it can use INSTALL_PROGRAM as + dnl INSTALL_SCRIPT, which breaks with automake <= 1.4 + dnl *autoconf >2.13 (since 10.Apr 1999) has not that failure + dnl *sometimes KDE does not use the install-@DIR@PROGRAM targets from + dnl automake (due to broken Makefile.am or whatever) to install programs, + dnl and so does not see the -s flag in automake > 1.4 + dnl to clean up that mess we: + dnl +set INSTALL_PROGRAM to use INSTALL_STRIP_FLAG + dnl which cleans KDE's program with automake > 1.4; + dnl +set INSTALL_SCRIPT to only use INSTALL, to clean up autoconf's problems + dnl with automake<=1.4 + dnl note that dues to this sometimes two '-s' flags are used (if KDE + dnl properly uses install-@DIR@PROGRAMS, but I don't care + dnl + dnl And to all this comes, that I even can't write in comments variable + dnl names used by automake, because it is so stupid to think I wanted to + dnl _use_ them, therefor I have written A_M_... instead of AM_ + dnl hmm, I wanted to say something ... ahh yes: Arghhh. + + if test -z "$kde_save_INSTALL_PROGRAM_given" ; then + INSTALL_PROGRAM='${INSTALL} $(INSTALL_STRIP_FLAG)' + fi + if test -z "$kde_save_INSTALL_SCRIPT_given" ; then + INSTALL_SCRIPT='${INSTALL}' + fi +])dnl + +AC_DEFUN([KDE_LANG_CPLUSPLUS], +[AC_LANG_CPLUSPLUS +ac_link='rm -rf SunWS_cache; ${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC' +pushdef([AC_LANG_CPLUSPLUS], [popdef([AC_LANG_CPLUSPLUS]) KDE_LANG_CPLUSPLUS]) +]) + +pushdef([AC_LANG_CPLUSPLUS], +[popdef([AC_LANG_CPLUSPLUS]) +KDE_LANG_CPLUSPLUS +]) + +AC_DEFUN([KDE_CHECK_LONG_LONG], +[ +AC_MSG_CHECKING(for long long) +AC_CACHE_VAL(kde_cv_c_long_long, +[ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_LINK([], [ + long long foo = 0; + foo = foo+1; + ], + kde_cv_c_long_long=yes, kde_cv_c_long_long=no) + AC_LANG_RESTORE +]) +AC_MSG_RESULT($kde_cv_c_long_long) +if test "$kde_cv_c_long_long" = yes; then + AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have long long as datatype]) +fi +]) + +AC_DEFUN([KDE_CHECK_LIB], +[ + kde_save_LDFLAGS="$LDFLAGS" + dnl AC_CHECK_LIB modifies LIBS, so save it here + kde_save_LIBS="$LIBS" + LDFLAGS="$LDFLAGS $all_libraries" + case $host_os in + aix*) LDFLAGS="-brtl $LDFLAGS" + test "$GCC" = yes && LDFLAGS="-Wl,$LDFLAGS" + ;; + esac + AC_CHECK_LIB($1, $2, $3, $4, $5) + LDFLAGS="$kde_save_LDFLAGS" + LIBS="$kde_save_LIBS" +]) + +AC_DEFUN([KDE_JAVA_PREFIX], +[ + dir=`dirname "$1"` + base=`basename "$1"` + list=`ls -1 $dir 2> /dev/null` + for entry in $list; do + if test -d $dir/$entry/bin; then + case $entry in + $base) + javadirs="$javadirs $dir/$entry/bin" + ;; + esac + elif test -d $dir/$entry/jre/bin; then + case $entry in + $base) + javadirs="$javadirs $dir/$entry/jre/bin" + ;; + esac + fi + done +]) + +dnl KDE_CHEC_JAVA_DIR(onlyjre) +AC_DEFUN([KDE_CHECK_JAVA_DIR], +[ + +AC_ARG_WITH(java, +AC_HELP_STRING([--with-java=javadir],[use java installed in javadir, --without-java disables]), +[ ac_java_dir=$withval +], ac_java_dir="" +) + +AC_MSG_CHECKING([for Java]) + +dnl at this point ac_java_dir is either a dir, 'no' to disable, or '' to say look in $PATH +if test "x$ac_java_dir" = "xno"; then + kde_java_bindir=no + kde_java_includedir=no + kde_java_libjvmdir=no + kde_java_libgcjdir=no + kde_java_libhpidir=no +else + if test "x$ac_java_dir" = "x"; then + + + dnl No option set -> collect list of candidate paths + if test -n "$JAVA_HOME"; then + KDE_JAVA_PREFIX($JAVA_HOME) + fi + KDE_JAVA_PREFIX(/usr/j2se) + KDE_JAVA_PREFIX(/usr/lib/j2se) + KDE_JAVA_PREFIX(/usr/j*dk*) + KDE_JAVA_PREFIX(/usr/lib/j*dk*) + KDE_JAVA_PREFIX(/opt/j*sdk*) + KDE_JAVA_PREFIX(/usr/lib/java*) + KDE_JAVA_PREFIX(/usr/java*) + KDE_JAVA_PREFIX(/usr/java/j*dk*) + KDE_JAVA_PREFIX(/usr/java/j*re*) + KDE_JAVA_PREFIX(/usr/lib/SunJava2*) + KDE_JAVA_PREFIX(/usr/lib/SunJava*) + KDE_JAVA_PREFIX(/usr/lib/IBMJava2*) + KDE_JAVA_PREFIX(/usr/lib/IBMJava*) + KDE_JAVA_PREFIX(/opt/java*) + + kde_cv_path="NONE" + kde_save_IFS=$IFS + IFS=':' + for dir in $PATH; do + if test -d "$dir"; then + javadirs="$javadirs $dir" + fi + done + IFS=$kde_save_IFS + jredirs= + + dnl Now javadirs contains a list of paths that exist, all ending with bin/ + for dir in $javadirs; do + dnl Check for the java executable + if test -x "$dir/java"; then + sane_path=$(cd $dir; /bin/pwd) + dnl And also check for a libjvm.so somewhere under there + dnl Since we have to go to the parent dir, /usr/bin is excluded, /usr is too big. + if test "$sane_path" != "/usr/bin"; then + libjvmdir=`find $dir/.. -name libjvm.so | sed 's,libjvm.so,,'|head -n 1` + if test ! -f $libjvmdir/libjvm.so; then continue; fi + jredirs="$jredirs $dir" + fi + fi + done + + dnl Now jredirs contains a reduced list, of paths where both java and ../**/libjvm.so was found + JAVAC= + JAVA= + kde_java_bindir=no + for dir in $jredirs; do + JAVA="$dir/java" + kde_java_bindir=$dir + if test -x "$dir/javac"; then + JAVAC="$dir/javac" + break + fi + done + + if test -n "$JAVAC"; then + dnl this substitution might not work - well, we test for jni.h below + kde_java_includedir=`echo $JAVAC | sed -e 's,bin/javac$,include/,'` + else + kde_java_includedir=no + fi + else + dnl config option set + kde_java_bindir=$ac_java_dir/bin + if test -x $ac_java_dir/bin/java && test ! -x $ac_java_dir/bin/javac; then + kde_java_includedir=no + else + kde_java_includedir=$ac_java_dir/include + fi + fi +fi + +dnl At this point kde_java_bindir and kde_java_includedir are either set or "no" +if test "x$kde_java_bindir" != "xno"; then + + dnl Look for libjvm.so + kde_java_libjvmdir=`find $kde_java_bindir/.. -name libjvm.so | sed 's,libjvm.so,,'|head -n 1` + dnl Look for libgcj.so + kde_java_libgcjdir=`find $kde_java_bindir/.. -name libgcj.so | sed 's,libgcj.so,,'|head -n 1` + dnl Look for libhpi.so and avoid green threads + kde_java_libhpidir=`find $kde_java_bindir/.. -name libhpi.so | grep -v green | sed 's,libhpi.so,,' | head -n 1` + + dnl Now check everything's fine under there + dnl the include dir is our flag for having the JDK + if test -d "$kde_java_includedir"; then + if test ! -x "$kde_java_bindir/javac"; then + AC_MSG_ERROR([javac not found under $kde_java_bindir - it seems you passed a wrong --with-java.]) + fi + if test ! -x "$kde_java_bindir/javah"; then + AC_MSG_ERROR([javah not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.]) + fi + if test ! -x "$kde_java_bindir/jar"; then + AC_MSG_ERROR([jar not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.]) + fi + if test ! -r "$kde_java_includedir/jni.h"; then + AC_MSG_ERROR([jni.h not found under $kde_java_includedir. Use --with-java or --without-java.]) + fi + + jni_includes="-I$kde_java_includedir" + dnl Strange thing, jni.h requires jni_md.h which is under genunix here.. + dnl and under linux here.. + + dnl not needed for gcj + + if test "x$kde_java_libgcjdir" = "x"; then + test -d "$kde_java_includedir/linux" && jni_includes="$jni_includes -I$kde_java_includedir/linux" + test -d "$kde_java_includedir/solaris" && jni_includes="$jni_includes -I$kde_java_includedir/solaris" + test -d "$kde_java_includedir/genunix" && jni_includes="$jni_includes -I$kde_java_includedir/genunix" + fi + + else + JAVAC= + jni_includes= + fi + + if test "x$kde_java_libgcjdir" = "x"; then + if test ! -r "$kde_java_libjvmdir/libjvm.so"; then + AC_MSG_ERROR([libjvm.so not found under $kde_java_libjvmdir. Use --without-java.]) + fi + else + if test ! -r "$kde_java_libgcjdir/libgcj.so"; then + AC_MSG_ERROR([libgcj.so not found under $kde_java_libgcjdir. Use --without-java.]) + fi + fi + + if test ! -x "$kde_java_bindir/java"; then + AC_MSG_ERROR([java not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.]) + fi + + dnl not needed for gcj compile + + if test "x$kde_java_libgcjdir" = "x"; then + if test ! -r "$kde_java_libhpidir/libhpi.so"; then + AC_MSG_ERROR([libhpi.so not found under $kde_java_libhpidir. Use --without-java.]) + fi + fi + + if test -n "$jni_includes"; then + dnl Check for JNI version + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_cxxflags_safe="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS $all_includes $jni_includes" + + AC_TRY_COMPILE([ + #include + ], + [ + #ifndef JNI_VERSION_1_2 + Syntax Error + #endif + ],[ kde_jni_works=yes ], + [ kde_jni_works=no ]) + + if test $kde_jni_works = no; then + AC_MSG_ERROR([Incorrect version of $kde_java_includedir/jni.h. + You need to have Java Development Kit (JDK) version 1.2. + + Use --with-java to specify another location. + Use --without-java to configure without java support. + Or download a newer JDK and try again. + See e.g. http://java.sun.com/products/jdk/1.2 ]) + fi + + CXXFLAGS="$ac_cxxflags_safe" + AC_LANG_RESTORE + + dnl All tests ok, inform and subst the variables + + JAVAC=$kde_java_bindir/javac + JAVAH=$kde_java_bindir/javah + JAR=$kde_java_bindir/jar + AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is]) + if test "x$kde_java_libgcjdir" = "x"; then + JVMLIBS="-L$kde_java_libjvmdir -ljvm -L$kde_java_libhpidir -lhpi" + else + JVMLIBS="-L$kde_java_libgcjdir -lgcj" + fi + AC_MSG_RESULT([java JDK in $kde_java_bindir]) + + else + AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is]) + AC_MSG_RESULT([java JRE in $kde_java_bindir]) + fi +elif test -d "/Library/Java/Home"; then + kde_java_bindir="/Library/Java/Home/bin" + jni_includes="-I/Library/Java/Home/include" + + JAVAC=$kde_java_bindir/javac + JAVAH=$kde_java_bindir/javah + JAR=$kde_java_bindir/jar + JVMLIBS="-Wl,-framework,JavaVM" + + AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is]) + AC_MSG_RESULT([Apple Java Framework]) +else + AC_MSG_RESULT([none found]) +fi + +AC_SUBST(JAVAC) +AC_SUBST(JAVAH) +AC_SUBST(JAR) +AC_SUBST(JVMLIBS) +AC_SUBST(jni_includes) + +# for backward compat +kde_cv_java_includedir=$kde_java_includedir +kde_cv_java_bindir=$kde_java_bindir +]) + +dnl this is a redefinition of autoconf 2.5x's AC_FOREACH. +dnl When the argument list becomes big, as in KDE for AC_OUTPUT in +dnl big packages, m4_foreach is dog-slow. So use our own version of +dnl it. (matz@kde.org) +m4_define([mm_foreach], +[m4_pushdef([$1])_mm_foreach($@)m4_popdef([$1])]) +m4_define([mm_car], [[$1]]) +m4_define([mm_car2], [[$@]]) +m4_define([_mm_foreach], +[m4_if(m4_quote($2), [], [], + [m4_define([$1], mm_car($2))$3[]_mm_foreach([$1], + mm_car2(m4_shift($2)), + [$3])])]) +m4_define([AC_FOREACH], +[mm_foreach([$1], m4_split(m4_normalize([$2])), [$3])]) + +AC_DEFUN([KDE_NEED_FLEX], +[ +kde_libs_safe=$LIBS +LIBS="$LIBS $USER_LDFLAGS" +AM_PROG_LEX +LIBS=$kde_libs_safe +if test -z "$LEXLIB"; then + AC_MSG_ERROR([You need to have flex installed.]) +fi +AC_SUBST(LEXLIB) +]) + +AC_DEFUN([AC_PATH_QTOPIA], +[ + dnl TODO: use AC_CACHE_VAL + + if test -z "$1"; then + qtopia_minver_maj=1 + qtopia_minver_min=5 + qtopia_minver_pat=0 + else + qtopia_minver_maj=`echo "$1" | sed -e "s/^\(.*\)\..*\..*$/\1/"` + qtopia_minver_min=`echo "$1" | sed -e "s/^.*\.\(.*\)\..*$/\1/"` + qtopia_minver_pat=`echo "$1" | sed -e "s/^.*\..*\.\(.*\)$/\1/"` + fi + + qtopia_minver="$qtopia_minver_maj$qtopia_minver_min$qtopia_minver_pat" + qtopia_minverstr="$qtopia_minver_maj.$qtopia_minver_min.$qtopia_minver_pat" + + AC_REQUIRE([AC_PATH_QT]) + + AC_MSG_CHECKING([for Qtopia]) + + LIB_QTOPIA="-lqpe" + AC_SUBST(LIB_QTOPIA) + + kde_qtopia_dirs="$QPEDIR /opt/Qtopia" + + ac_qtopia_incdir=NO + + AC_ARG_WITH(qtopia-dir, + AC_HELP_STRING([--with-qtopia-dir=DIR],[where the root of Qtopia is installed]), + [ ac_qtopia_incdir="$withval"/include] ) + + qtopia_incdirs="" + for dir in $kde_qtopia_dirs; do + qtopia_incdirs="$qtopia_incdirs $dir/include" + done + + if test ! "$ac_qtopia_incdir" = "NO"; then + qtopia_incdirs="$ac_qtopia_incdir $qtopia_incdirs" + fi + + qtopia_incdir="" + AC_FIND_FILE(qpe/qpeapplication.h, $qtopia_incdirs, qtopia_incdir) + ac_qtopia_incdir="$qtopia_incdir" + + if test -z "$qtopia_incdir"; then + AC_MSG_ERROR([Cannot find Qtopia headers. Please check your installation.]) + fi + + qtopia_ver_maj=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION "\(.*\)\..*\..*".*,\1,p'`; + qtopia_ver_min=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION ".*\.\(.*\)\..*".*,\1,p'`; + qtopia_ver_pat=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION ".*\..*\.\(.*\)".*,\1,p'`; + + qtopia_ver="$qtopia_ver_maj$qtopia_ver_min$qtopia_ver_pat" + qtopia_verstr="$qtopia_ver_maj.$qtopia_ver_min.$qtopia_ver_pat" + if test "$qtopia_ver" -lt "$qtopia_minver"; then + AC_MSG_ERROR([found Qtopia version $qtopia_verstr but version $qtopia_minverstr +is required.]) + fi + + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + + ac_cxxflags_safe="$CXXFLAGS" + ac_ldflags_safe="$LDFLAGS" + ac_libs_safe="$LIBS" + + CXXFLAGS="$CXXFLAGS -I$qtopia_incdir $all_includes" + LDFLAGS="$LDFLAGS $QT_LDFLAGS $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS" + LIBS="$LIBS $LIB_QTOPIA $LIBQT" + + cat > conftest.$ac_ext < +#include + +int main( int argc, char **argv ) +{ + QPEApplication app( argc, argv ); + return 0; +} +EOF + + if AC_TRY_EVAL(ac_link) && test -s conftest; then + rm -f conftest* + else + rm -f conftest* + AC_MSG_ERROR([Cannot link small Qtopia Application. For more details look at +the end of config.log]) + fi + + CXXFLAGS="$ac_cxxflags_safe" + LDFLAGS="$ac_ldflags_safe" + LIBS="$ac_libs_safe" + + AC_LANG_RESTORE + + QTOPIA_INCLUDES="-I$qtopia_incdir" + AC_SUBST(QTOPIA_INCLUDES) + + AC_MSG_RESULT([found version $qtopia_verstr with headers at $qtopia_incdir]) +]) + + +AC_DEFUN([KDE_INIT_DOXYGEN], +[ +AC_MSG_CHECKING([for Qt docs]) +kde_qtdir= +if test "${with_qt_dir+set}" = set; then + kde_qtdir="$with_qt_dir" +fi + +AC_FIND_FILE(qsql.html, [ $kde_qtdir/doc/html $QTDIR/doc/html /usr/share/doc/packages/qt3/html /usr/lib/qt/doc /usr/lib/qt3/doc /usr/lib/qt3/doc/html /usr/doc/qt3/html /usr/doc/qt3 /usr/share/doc/qt3-doc /usr/share/qt3/doc/html /usr/X11R6/share/doc/qt/html ], QTDOCDIR) +AC_MSG_RESULT($QTDOCDIR) + +AC_SUBST(QTDOCDIR) + +KDE_FIND_PATH(dot, DOT, [], []) +if test -n "$DOT"; then + KDE_HAVE_DOT="YES" +else + KDE_HAVE_DOT="NO" +fi +AC_SUBST(KDE_HAVE_DOT) +KDE_FIND_PATH(doxygen, DOXYGEN, [], []) +AC_SUBST(DOXYGEN) + +DOXYGEN_PROJECT_NAME="$1" +DOXYGEN_PROJECT_NUMBER="$2" +AC_SUBST(DOXYGEN_PROJECT_NAME) +AC_SUBST(DOXYGEN_PROJECT_NUMBER) + +KDE_HAS_DOXYGEN=no +if test -n "$DOXYGEN" && test -x "$DOXYGEN" && test -f $QTDOCDIR/qsql.html; then + KDE_HAS_DOXYGEN=yes +fi +AC_SUBST(KDE_HAS_DOXYGEN) + +]) + + +AC_DEFUN([AC_FIND_BZIP2], +[ +AC_MSG_CHECKING([for bzDecompress in libbz2]) +AC_CACHE_VAL(ac_cv_lib_bzip2, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +kde_save_LIBS="$LIBS" +LIBS="$all_libraries $USER_LDFLAGS -lbz2 $LIBSOCKET" +kde_save_CXXFLAGS="$CXXFLAGS" +CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES" +AC_TRY_LINK(dnl +[ +#define BZ_NO_STDIO +#include +], + [ bz_stream s; (void) bzDecompress(&s); ], + eval "ac_cv_lib_bzip2='-lbz2'", + eval "ac_cv_lib_bzip2=no") +LIBS="$kde_save_LIBS" +CXXFLAGS="$kde_save_CXXFLAGS" +AC_LANG_RESTORE +])dnl +AC_MSG_RESULT($ac_cv_lib_bzip2) + +if test ! "$ac_cv_lib_bzip2" = no; then + BZIP2DIR=bzip2 + + LIBBZ2="$ac_cv_lib_bzip2" + AC_SUBST(LIBBZ2) + +else + + cxx_shared_flag= + ld_shared_flag= + KDE_CHECK_COMPILER_FLAG(shared, [ + ld_shared_flag="-shared" + ]) + KDE_CHECK_COMPILER_FLAG(fPIC, [ + cxx_shared_flag="-fPIC" + ]) + + AC_MSG_CHECKING([for BZ2_bzDecompress in (shared) libbz2]) + AC_CACHE_VAL(ac_cv_lib_bzip2_prefix, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + kde_save_LIBS="$LIBS" + LIBS="$all_libraries $USER_LDFLAGS $ld_shared_flag -lbz2 $LIBSOCKET" + kde_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CFLAGS $cxx_shared_flag $all_includes $USER_INCLUDES" + + AC_TRY_LINK(dnl + [ + #define BZ_NO_STDIO + #include + ], + [ bz_stream s; (void) BZ2_bzDecompress(&s); ], + eval "ac_cv_lib_bzip2_prefix='-lbz2'", + eval "ac_cv_lib_bzip2_prefix=no") + LIBS="$kde_save_LIBS" + CXXFLAGS="$kde_save_CXXFLAGS" + AC_LANG_RESTORE + ])dnl + + AC_MSG_RESULT($ac_cv_lib_bzip2_prefix) + + if test ! "$ac_cv_lib_bzip2_prefix" = no; then + BZIP2DIR=bzip2 + + LIBBZ2="$ac_cv_lib_bzip2_prefix" + AC_SUBST(LIBBZ2) + + AC_DEFINE(NEED_BZ2_PREFIX, 1, [Define if the libbz2 functions need the BZ2_ prefix]) + dnl else, we just ignore this + fi + +fi +AM_CONDITIONAL(include_BZIP2, test -n "$BZIP2DIR") +]) + +dnl ------------------------------------------------------------------------ +dnl Try to find the SSL headers and libraries. +dnl $(SSL_LDFLAGS) will be -Lsslliblocation (if needed) +dnl and $(SSL_INCLUDES) will be -Isslhdrlocation (if needed) +dnl ------------------------------------------------------------------------ +dnl +AC_DEFUN([KDE_CHECK_SSL], +[ +LIBSSL="-lssl -lcrypto" +AC_REQUIRE([KDE_CHECK_LIB64]) + +ac_ssl_includes=NO ac_ssl_libraries=NO +ssl_libraries="" +ssl_includes="" +AC_ARG_WITH(ssl-dir, + AC_HELP_STRING([--with-ssl-dir=DIR],[where the root of OpenSSL is installed]), + [ ac_ssl_includes="$withval"/include + ac_ssl_libraries="$withval"/lib$kdelibsuff + ]) + +want_ssl=yes +AC_ARG_WITH(ssl, + AC_HELP_STRING([--without-ssl],[disable SSL checks]), + [want_ssl=$withval]) + +if test $want_ssl = yes; then + +AC_MSG_CHECKING(for OpenSSL) + +AC_CACHE_VAL(ac_cv_have_ssl, +[#try to guess OpenSSL locations + + ssl_incdirs="/usr/include /usr/local/include /usr/ssl/include /usr/local/ssl/include $prefix/include $kde_extra_includes" + ssl_incdirs="$ac_ssl_includes $ssl_incdirs" + AC_FIND_FILE(openssl/ssl.h, $ssl_incdirs, ssl_incdir) + ac_ssl_includes="$ssl_incdir" + + ssl_libdirs="/usr/lib$kdelibsuff /usr/local/lib$kdelibsuff /usr/ssl/lib$kdelibsuff /usr/local/ssl/lib$kdelibsuff $libdir $prefix/lib$kdelibsuff $exec_prefix/lib$kdelibsuff $kde_extra_libs" + if test ! "$ac_ssl_libraries" = "NO"; then + ssl_libdirs="$ac_ssl_libraries $ssl_libdirs" + fi + + test=NONE + ssl_libdir=NONE + for dir in $ssl_libdirs; do + try="ls -1 $dir/libssl*" + if test=`eval $try 2> /dev/null`; then ssl_libdir=$dir; break; else echo "tried $dir" >&AC_FD_CC ; fi + done + + ac_ssl_libraries="$ssl_libdir" + + ac_ldflags_safe="$LDFLAGS" + ac_libs_safe="$LIBS" + + LDFLAGS="$LDFLAGS -L$ssl_libdir $all_libraries" + LIBS="$LIBS $LIBSSL -lRSAglue -lrsaref" + + AC_TRY_LINK(,void RSAPrivateEncrypt(void);RSAPrivateEncrypt();, + ac_ssl_rsaref="yes" + , + ac_ssl_rsaref="no" + ) + + LDFLAGS="$ac_ldflags_safe" + LIBS="$ac_libs_safe" + + if test "$ac_ssl_includes" = NO || test "$ac_ssl_libraries" = NO; then + have_ssl=no + else + have_ssl=yes; + fi + + ]) + + eval "$ac_cv_have_ssl" + + AC_MSG_RESULT([libraries $ac_ssl_libraries, headers $ac_ssl_includes]) + + AC_MSG_CHECKING([whether OpenSSL uses rsaref]) + AC_MSG_RESULT($ac_ssl_rsaref) + + AC_MSG_CHECKING([for easter eggs]) + AC_MSG_RESULT([none found]) + +else + have_ssl=no +fi + +if test "$have_ssl" = yes; then + AC_MSG_CHECKING(for OpenSSL version) + dnl Check for SSL version + AC_CACHE_VAL(ac_cv_ssl_version, + [ + + cat >conftest.$ac_ext < +#include + int main() { + +#ifndef OPENSSL_VERSION_NUMBER + printf("ssl_version=\\"error\\"\n"); +#else + if (OPENSSL_VERSION_NUMBER < 0x00906000) + printf("ssl_version=\\"old\\"\n"); + else + printf("ssl_version=\\"ok\\"\n"); +#endif + return (0); + } +EOF + + ac_save_CPPFLAGS=$CPPFLAGS + if test "$ac_ssl_includes" != "/usr/include"; then + CPPFLAGS="$CPPFLAGS -I$ac_ssl_includes" + fi + + if AC_TRY_EVAL(ac_link); then + + if eval `./conftest 2>&5`; then + if test $ssl_version = error; then + AC_MSG_ERROR([$ssl_incdir/openssl/opensslv.h doesn't define OPENSSL_VERSION_NUMBER !]) + else + if test $ssl_version = old; then + AC_MSG_WARN([OpenSSL version too old. Upgrade to 0.9.6 at least, see http://www.openssl.org. SSL support disabled.]) + have_ssl=no + fi + fi + ac_cv_ssl_version="ssl_version=$ssl_version" + else + AC_MSG_ERROR([Your system couldn't run a small SSL test program. + Check config.log, and if you can't figure it out, send a mail to + David Faure , attaching your config.log]) + fi + + else + AC_MSG_ERROR([Your system couldn't link a small SSL test program. + Check config.log, and if you can't figure it out, send a mail to + David Faure , attaching your config.log]) + fi + CPPFLAGS=$ac_save_CPPFLAGS + + ]) + + eval "$ac_cv_ssl_version" + AC_MSG_RESULT($ssl_version) +fi + +if test "$have_ssl" != yes; then + LIBSSL=""; +else + AC_DEFINE(HAVE_SSL, 1, [If we are going to use OpenSSL]) + ac_cv_have_ssl="have_ssl=yes \ + ac_ssl_includes=$ac_ssl_includes ac_ssl_libraries=$ac_ssl_libraries ac_ssl_rsaref=$ac_ssl_rsaref" + + + ssl_libraries="$ac_ssl_libraries" + ssl_includes="$ac_ssl_includes" + + if test "$ac_ssl_rsaref" = yes; then + LIBSSL="-lssl -lcrypto -lRSAglue -lrsaref" + fi + + if test $ssl_version = "old"; then + AC_DEFINE(HAVE_OLD_SSL_API, 1, [Define if you have OpenSSL < 0.9.6]) + fi +fi + +SSL_INCLUDES= + +if test "$ssl_includes" = "/usr/include"; then + if test -f /usr/kerberos/include/krb5.h; then + SSL_INCLUDES="-I/usr/kerberos/include" + fi +elif test "$ssl_includes" != "/usr/local/include" && test -n "$ssl_includes"; then + SSL_INCLUDES="-I$ssl_includes" +fi + +if test "$ssl_libraries" = "/usr/lib" || test "$ssl_libraries" = "/usr/local/lib" || test -z "$ssl_libraries" || test "$ssl_libraries" = "NONE"; then + SSL_LDFLAGS="" +else + SSL_LDFLAGS="-L$ssl_libraries -R$ssl_libraries" +fi + +AC_SUBST(SSL_INCLUDES) +AC_SUBST(SSL_LDFLAGS) +AC_SUBST(LIBSSL) +]) + +AC_DEFUN([KDE_CHECK_STRLCPY], +[ + AC_REQUIRE([AC_CHECK_STRLCAT]) + AC_REQUIRE([AC_CHECK_STRLCPY]) + AC_CHECK_SIZEOF(size_t) + AC_CHECK_SIZEOF(unsigned long) + + AC_MSG_CHECKING([sizeof size_t == sizeof unsigned long]) + AC_TRY_COMPILE(,[ + #if SIZEOF_SIZE_T != SIZEOF_UNSIGNED_LONG + choke me + #endif + ],AC_MSG_RESULT([yes]),[ + AC_MSG_RESULT(no) + AC_MSG_ERROR([ + Apparently on your system our assumption sizeof size_t == sizeof unsigned long + does not apply. Please mail kde-devel@kde.org with a description of your system! + ]) + ]) +]) + +AC_DEFUN([KDE_CHECK_BINUTILS], +[ + AC_MSG_CHECKING([if ld supports unversioned version maps]) + + kde_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" + echo "{ local: extern \"C++\" { foo }; };" > conftest.map + AC_TRY_LINK([int foo;], +[ +#ifdef __INTEL_COMPILER +icc apparently does not support libtools version-info and version-script +at the same time. Dunno where the bug is, but until somebody figured out, +better disable the optional version scripts. +#endif + + foo = 42; +], kde_supports_versionmaps=yes, kde_supports_versionmaps=no) + LDFLAGS="$kde_save_LDFLAGS" + rm -f conftest.map + AM_CONDITIONAL(include_VERSION_SCRIPT, + [test "$kde_supports_versionmaps" = "yes" && test "$kde_use_debug_code" = "no"]) + + AC_MSG_RESULT($kde_supports_versionmaps) +]) + +AC_DEFUN([AM_PROG_OBJC],[ +AC_CHECK_PROGS(OBJC, gcc, gcc) +test -z "$OBJC" && AC_MSG_ERROR([no acceptable objective-c gcc found in \$PATH]) +if test "x${OBJCFLAGS-unset}" = xunset; then + OBJCFLAGS="-g -O2" +fi +AC_SUBST(OBJCFLAGS) +_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES(OBJC)]) +]) + +AC_DEFUN([KDE_CHECK_PERL], +[ + KDE_FIND_PATH(perl, PERL, [$bindir $exec_prefix/bin $prefix/bin], [ + AC_MSG_ERROR([No Perl found in your $PATH. +We need perl to generate some code.]) + ]) + AC_SUBST(PERL) +]) + +AC_DEFUN([KDE_CHECK_LARGEFILE], +[ +AC_SYS_LARGEFILE +if test "$ac_cv_sys_file_offset_bits" != no; then + CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits" +fi + +if test "x$ac_cv_sys_large_files" != "xno"; then + CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=1" +fi + +]) + +dnl A small extension to PKG_CHECK_MODULES (defined in pkg.m4.in) +dnl which allows to search for libs that get installed into the KDE prefix. +dnl +dnl Syntax: KDE_PKG_CHECK_MODULES(KSTUFF, libkexif >= 0.2 glib = 1.3.4, action-if, action-not) +dnl defines KSTUFF_LIBS, KSTUFF_CFLAGS, see pkg-config man page +dnl also defines KSTUFF_PKG_ERRORS on error +AC_DEFUN([KDE_PKG_CHECK_MODULES], [ + + PKG_CONFIG_PATH="$prefix/lib${kdelibsuff}/pkgconfig:$PKG_CONFIG_PATH" + if test "$prefix" != "$kde_libs_prefix"; then + PKG_CONFIG_PATH="$kde_libs_prefix/lib${kdelibsuff}/pkgconfig:$PKG_CONFIG_PATH" + fi + export PKG_CONFIG_PATH + PKG_CHECK_MODULES([$1],[$2],[$3],[$4]) +]) + + +dnl Check for PIE support in the compiler and linker +AC_DEFUN([KDE_CHECK_PIE_SUPPORT], +[ + AC_CACHE_CHECK([for PIE support], kde_cv_val_pie_support, + [ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + safe_CXXFLAGS=$CXXFLAGS + safe_LDFLAGS=$LDFLAGS + CXXFLAGS="$CXXFLAGS -fPIE" + LDFLAGS="$LDFLAGS -pie" + + AC_TRY_LINK([int foo;], [], [kde_cv_val_pie_support=yes], [kde_cv_val_pie_support=no]) + + CXXFLAGS=$safe_CXXFLAGS + LDFLAGS=$safe_LDFLAGS + AC_LANG_RESTORE + ]) + + AC_MSG_CHECKING(if enabling -pie/fPIE support) + + AC_ARG_ENABLE(pie, + AC_HELP_STRING([--enable-pie],[platform supports PIE linking [default=detect]]), + [kde_has_pie_support=$enableval], + [kde_has_pie_support=detect]) + + if test "$kde_has_pie_support" = "detect"; then + kde_has_pie_support=$kde_cv_val_pie_support + fi + + AC_MSG_RESULT([$kde_has_pie_support]) + + KDE_USE_FPIE="" + KDE_USE_PIE="" + + AC_SUBST([KDE_USE_FPIE]) + AC_SUBST([KDE_USE_PIE]) + + if test "$kde_has_pie_support" = "yes"; then + KDE_USE_FPIE="-fPIE" + KDE_USE_PIE="-pie" + fi +]) diff --git a/libs/taglib/admin/am_edit b/libs/taglib/admin/am_edit new file mode 100644 index 0000000000..108eb67d5e --- /dev/null +++ b/libs/taglib/admin/am_edit @@ -0,0 +1,2445 @@ +#!/usr/bin/perl -w + +# Expands the specialised KDE tags in Makefile.in to (hopefully) valid +# make syntax. +# When called without file parameters, we work recursively on all Makefile.in +# in and below the current subdirectory. When called with file parameters, +# only those Makefile.in are changed. +# The currently supported tags are +# +# {program}_METASOURCES +# where you have a choice of two styles +# {program}_METASOURCES = name1.moc name2.moc ... [\] +# {program}_METASOURCES = AUTO +# The second style requires other tags as well. +# +# To install icons : +# KDE_ICON = iconname iconname2 ... +# KDE_ICON = AUTO +# +# For documentation : +# http://developer.kde.org/documentation/other/developer-faq.html +# +# and more new tags TBD! +# +# The concept (and base code) for this program came from automoc, +# supplied by the following +# +# Matthias Ettrich (The originator) +# Kalle Dalheimer (The original implementator) +# Harri Porten +# Alex Zepeda +# David Faure +# Stephan Kulow +# Dirk Mueller + +use Cwd; +use File::Find; +use File::Basename; + +# Prototype the functions +sub initialise (); +sub processMakefile ($); +sub updateMakefile (); +sub restoreMakefile (); + +sub removeLine ($$); +sub appendLines ($); +sub substituteLine ($$); + +sub findMocCandidates (); +sub pruneMocCandidates ($); +sub checkMocCandidates (); +sub addMocRules (); +sub findKcfgFile($); + +sub tag_AUTOMAKE (); +sub tag_META_INCLUDES (); +sub tag_METASOURCES (); +sub tag_POFILES (); +sub tag_DOCFILES (); +sub tag_LOCALINSTALL(); +sub tag_IDLFILES(); +sub tag_UIFILES(); +sub tag_KCFGFILES(); +sub tag_SUBDIRS(); +sub tag_ICON(); +sub tag_CLOSURE(); +sub tag_NO_UNDEFINED(); +sub tag_NMCHECK(); +sub tag_DIST(); +sub tag_KDEINIT(); + +# Some global globals... +$verbose = 0; # a debug flag +$thisProg = "$0"; # This programs name +$topdir = cwd(); # The current directory +@makefiles = (); # Contains all the files we'll process +@foreignfiles = (); +$start = (times)[0]; # some stats for testing - comment out for release +$version = "v0.2"; +$errorflag = 0; +$cppExt = "(cpp|cc|cxx|C|c\\+\\+)"; +$hExt = "(h|H|hh|hxx|hpp|h\\+\\+)"; +$progId = "KDE tags expanded automatically by " . basename($thisProg); +$automkCall = "\n"; +$printname = ""; # used to display the directory the Makefile is in +$use_final = 1; # create code for --enable-final +$cleantarget = "clean"; +$dryrun = 0; +$pathoption = 0; +$foreign_libtool = 0; + +while (defined ($ARGV[0])) +{ + $_ = shift; + if (/^--version$/) + { + print STDOUT "\n"; + print STDOUT basename($thisProg), " $version\n", + "This is really free software, unencumbered by the GPL.\n", + "You can do anything you like with it except sueing me.\n", + "Copyright 1998 Kalle Dalheimer \n", + "Concept, design and unnecessary questions about perl\n", + " by Matthias Ettrich \n\n", + "Making it useful by Stephan Kulow and\n", + "Harri Porten \n", + "Updated (Feb-1999), John Birch \n", + "Fixes and Improvements by Dirk Mueller \n", + "Current Maintainer Stephan Kulow\n\n"; + exit 0; + } + elsif (/^--verbose$|^-v$/) + { + $verbose = 1; # Oh is there a problem...? + } + elsif (/^(?:-p|--path=)(.+)$/) + { + my $p = $1; + $thisProg = $p . "/". basename($thisProg); + warn ("$thisProg doesn't exist\n") if (!(-f $thisProg)); + $thisProg .= " -p".$p; + $pathoption=1; + } + elsif (/^--help$|^-h$/) + { + print STDOUT "Usage $thisProg [OPTION] ... [dir/Makefile.in]...\n", + "\n", + "Patches dir/Makefile.in generated by automake\n", + "(where dir can be an absolute or relative directory name)\n", + "\n", + " -v, --verbose verbosely list files processed\n", + " -h, --help print this help, then exit\n", + " --version print version number, then exit\n", + " -p, --path= use the path to am_edit if the path\n", + " called from is not the one to be used\n", + " --no-final don't patch for --enable-final\n"; + + exit 0; + } + elsif (/^--no-final$/) + { + $use_final = 0; + $thisProg .= " --no-final"; + } + elsif (/^--foreign-libtool$/) + { + $foreign_libtool = 1; + $thisProg .= " --foreign-libtool"; + } + elsif (/^-n$/) + { + $dryrun = 1; + } + else + { + # user selects what input files to check + # add full path if relative path is given + $_ = cwd()."/".$_ if (! /^\//); + print "User wants $_\n" if ($verbose); + push (@makefiles, $_); + } +} + +if ($thisProg =~ /^\// && !$pathoption ) +{ + print STDERR "Illegal full pathname call performed...\n", + "The call to \"$thisProg\"\nwould be inserted in some Makefile.in.\n", + "Please use option --path.\n"; + exit 1; +} + +# Only scan for files when the user hasn't entered data +if (!@makefiles) +{ + print STDOUT "Scanning for Makefile.in\n" if ($verbose); + find (\&add_makefile, cwd()); + #chdir('$topdir'); +} else { + print STDOUT "Using input files specified by user\n" if ($verbose); +} + +foreach $makefile (sort(@makefiles)) +{ + processMakefile ($makefile); + last if ($errorflag); +} + +# Just some debug statistics - comment out for release as it uses printf. +printf STDOUT "Time %.2f CPU sec\n", (times)[0] - $start if ($verbose); + +exit $errorflag; # causes make to fail if erroflag is set + +#----------------------------------------------------------------------------- + +# In conjunction with the "find" call, this builds the list of input files +sub add_makefile () +{ + push (@makefiles, $File::Find::name) if (/Makefile.in$/); +} + +#----------------------------------------------------------------------------- + +# Processes a single make file +# The parameter contains the full path name of the Makefile.in to use +sub processMakefile ($) +{ + # some useful globals for the subroutines called here + local ($makefile) = @_; + local @headerdirs = ('.'); + local $haveAutomocTag = 0; + local $MakefileData = ""; + + local $cxxsuffix = "KKK"; + + local @programs = (); # lists the names of programs and libraries + local $program = ""; + + local @kdeinits = (); # lists the kdeinit targets + + local %realObjs = (); # lists the objects compiled into $program + local %sources = (); # lists the sources used for $program + local %finalObjs = (); # lists the objects compiled when final + local %realname = (); # the binary name of program variable + local %idlfiles = (); # lists the idl files used for $program + local %globalmocs = ();# list of all mocfiles (in %mocFiles format) + local %important = (); # list of files to be generated asap + local %uiFiles = (); + local %kcfgFiles = (); + + local $allidls = ""; + local $idl_output = "";# lists all idl generated files for cleantarget + local $ui_output = "";# lists all uic generated files for cleantarget + local $kcfg_output = "";# lists all kcfg generated files for cleantarget + + local %dependmocs = (); + + local $metasourceTags = 0; + local $dep_files = ""; + local $dep_finals = ""; + local %target_adds = (); # the targets to add + local %rule_adds = (); + local $kdelang = ""; + local @cleanfiles = (); + local $cleanMoc = ""; + local $closure_output = ""; + + local %varcontent = (); + + $makefileDir = dirname($makefile); + chdir ($makefileDir); + $printname = $makefile; + $printname =~ s/^\Q$topdir\E\///; + $makefile = basename($makefile); + + print STDOUT "Processing makefile $printname\n" if ($verbose); + + # Setup and see if we need to do this. + return if (!initialise()); + + tag_AUTOMAKE (); # Allows a "make" to redo the Makefile.in + tag_META_INCLUDES (); # Supplies directories for src locations + + foreach $program (@programs) { + $sources_changed{$program} = 0; + $dependmocs{$program} = ""; + $important{$program} = ""; + tag_IDLFILES(); # Sorts out idl rules + tag_NO_UNDEFINED(); + tag_CLOSURE(); + tag_NMCHECK(); + tag_UIFILES(); # Sorts out ui rules + tag_KCFGFILES(); # Sorts out kcfg rules + tag_METASOURCES (); # Sorts out the moc rules + if ($sources_changed{$program}) { + my $lookup = $program . '_SOURCES\s*=[ \t]*(.*)'; + + if($program =~ /libkdeinit_(.*)/) { + my $prog = $1; + substituteLine($prog . '_SOURCES\s*=[ \t]*(.*)', + "${prog}_SOURCES = ${prog}_dummy.$cxxsuffix\n" . + "libkdeinit_${prog}_SOURCES = " . $sources{$program}); + $sources{$prog} = "${prog}_dummy.$cxxsuffix"; + } + else { + substituteLine($lookup, "$program\_SOURCES=" . $sources{$program}); + } + } + if ($important{$program}) { + local %source_dict = (); + for $source (split(/[\034\s]+/, $sources{$program})) { + $source_dict{$source} = 1; + } + for $source (@cleanfiles) { + $source_dict{$source} = 0; + } + for $source (keys %source_dict) { + next if (!$source); + if ($source_dict{$source}) { + # sanity check + if (! -f $source) { + print STDERR "Error: $source is listed in a _SOURCE line in $printname, but doesn't exist yet. Put it in DISTCLEANFILES!\n"; + } else { + $target_adds{"\$(srcdir)/$source"} .= $important{$program}; + } + } + } + } + } + if ($cleanMoc) { + # Always add dist clean tag + # Add extra *.moc.cpp files created for USE_AUTOMOC because they + # aren't included in the normal *.moc clean rules. + appendLines ("$cleantarget-metasources:\n\t-rm -f $cleanMoc\n"); + $target_adds{"$cleantarget-am"} .= "$cleantarget-metasources "; + } + + tag_DIST() unless ($kdeopts{"noautodist"}); + + if ($idl_output) { + appendLines ("$cleantarget-idl:\n\t-rm -f $idl_output\n"); + $target_adds{"$cleantarget-am"} .= "$cleantarget-idl "; + } + + if ($ui_output) { + appendLines ("$cleantarget-ui:\n\t-rm -f $ui_output\n"); + $target_adds{"$cleantarget-am"} .= "$cleantarget-ui "; + } + + if ($kcfg_output) { + appendLines ("$cleantarget-kcfg:\n\t-rm -f $kcfg_output\n"); + $target_adds{"$cleantarget-am"} .= "$cleantarget-kcfg "; + } + + if ($closure_output) { + appendLines ("$cleantarget-closures:\n\t-rm -f $closure_output\n"); + $target_adds{"$cleantarget-am"} .= "$cleantarget-closures "; + } + + if ($MakefileData =~ /\nKDE_LANG\s*=\s*(\S*)\s*\n/) { + $kdelang = '$(KDE_LANG)' + } else { + $kdelang = ''; + } + + tag_POFILES (); # language rules for po directory + tag_DOCFILES (); # language rules for doc directories + tag_LOCALINSTALL(); # add $(DESTDIR) before all kde_ dirs + tag_ICON(); + tag_SUBDIRS(); + + my $tmp = "force-reedit:\n"; + $tmp .= "\t$automkCall\n\tcd \$(top_srcdir) && perl $thisProg $printname\n\n"; + appendLines($tmp); + + make_bcheck_target(); + make_meta_classes(); + tag_COMPILE_FIRST(); + tag_FINAL() if (!$kdeopts{"nofinal"}); + + my $final_lines = "final:\n\t\$(MAKE) "; + my $final_install_lines = "final-install:\n\t\$(MAKE) "; + my $nofinal_lines = "no-final:\n\t\$(MAKE) "; + my $nofinal_install_lines = "no-final-install:\n\t\$(MAKE) "; + + foreach $program (@programs) { + my $lookup = $program . '_OBJECTS\s*=[ \t]*.*'; + my $new = ""; + my @list = split(/[\034\s]+/, $realObjs{$program}); + if (!$kdeopts{"nofinal"} && @list > 1 && $finalObjs{$program}) { + $new .= "$program\_final\_OBJECTS = " . $finalObjs{$program}; + $new .= "\n$program\_nofinal\_OBJECTS = " . $realObjs{$program}; + $new .= "\n\@KDE_USE_FINAL_FALSE\@$program\_OBJECTS = \$($program\_nofinal\_OBJECTS)"; + $new .= "\n\@KDE_USE_FINAL_TRUE\@$program\_OBJECTS = \$($program\_final\_OBJECTS)"; + + $final_lines .= "$program\_OBJECTS=\"\$($program\_final_OBJECTS)\" "; + $final_install_lines .= "$program\_OBJECTS=\"\$($program\_final_OBJECTS)\" "; + $nofinal_lines .= "$program\_OBJECTS=\"\$($program\_nofinal\_OBJECTS)\" "; + $nofinal_install_lines .= "$program\_OBJECTS=\"\$($program\_nofinal_OBJECTS)\" "; + } else { + $new = "$program\_OBJECTS = " . $realObjs{$program}; + } + if($MakefileData =~ m/\n$lookup/) { + substituteLine ($lookup, $new); + } + else { + appendLines("$new\n"); + } + } + appendLines($final_lines . "all-am\n"); + appendLines($final_install_lines . "install-am\n"); + appendLines($nofinal_lines . "all-am\n"); + appendLines($nofinal_install_lines . "install-am\n"); + + my $lookup = '(\@\S+\@)?DEP_FILES\s*=[ \t]*(.*)'; + if ($MakefileData =~ /\n$lookup/) { + my $condition = $1; + my $depfiles = $2; + my $workfiles; + + if ($dep_finals) { + # Add the conditions on every line, since + # there may be line continuations in the list. + $workfiles = "$dep_files $dep_finals $depfiles"; + $workfiles =~ s/\034/\034$condition\@KDE_USE_FINAL_TRUE\@\t/g; + $lines = "$condition\@KDE_USE_FINAL_TRUE\@DEP_FILES = $workfiles\n"; + $workfiles = "$dep_files $depfiles"; + $workfiles =~ s/\034/\034$condition\@KDE_USE_FINAL_FALSE\@\t/g; + $lines .= "$condition\@KDE_USE_FINAL_FALSE\@DEP_FILES = $workfiles"; + } else { + $workfiles = "$dep_files $depfiles"; + $workfiles =~ s/\034/\034$condition\t/g; + $lines = $condition . "DEP_FILES = $workfiles"; + } + substituteLine($lookup, $lines); + } + + # new recursive targets + $target_adds{ "nmcheck" } .= ""; # always create nmcheck target + $target_adds{ "nmcheck-am" } .= "nmcheck"; + $lookup = 'RECURSIVE_TARGETS\s*=[ \t]*(.*)'; + if ($MakefileData =~ /\n$lookup/) { + substituteLine($lookup, "RECURSIVE_TARGETS = $1 nmcheck-recursive bcheck-recursive"); + } + + $cvs_lines = "kde-rpo-clean:\n"; + $cvs_lines .= "\t-rm -f *.rpo\n"; + appendLines($cvs_lines); + $target_adds{"clean"} .= "kde-rpo-clean "; + + my %target_dels = ("install-data-am" => ""); + + # some strange people like to do a install-exec, and expect that also + # all modules are installed. automake doesn't know this, so we need to move + # this here from install-data to install-exec. + if ($MakefileData =~ m/\nkde_module_LTLIBRARIES\s*=/) { +# $target_adds{"install-exec-am"} .= "install-kde_moduleLTLIBRARIES "; +# don't use $target_adds here because we need to append the dependency, not +# prepend it. Fixes #44342 , when a module depends on a lib in the same dir +# and libtool needs it during relinking upon install (Simon) + my $lookup = "install-exec-am:([^\n]*)"; + if($MakefileData =~ /\n$lookup\n/) { + substituteLine("$lookup", "install-exec-am: $1 install-kde_moduleLTLIBRARIES"); + } + $target_dels{"install-data-am"} .= "install-kde_moduleLTLIBRARIES "; + $target_adds{"install-data-am"} .= " "; + } + + my $lines = ""; + + foreach $add (keys %target_adds) { + my $lookup = quotemeta($add) . ':([^\n]*)'; + if ($MakefileData =~ /\n$lookup\n/) { + my $newlines = $1; + my $oldlines = $lookup; + if (defined $target_dels{$add}) { + foreach $del (split(' ', $target_dels{$add})) { + $newlines =~ s/\s*$del\s*/ /g; + } + } + substituteLine($oldlines, "$add: " . $target_adds{$add} . $newlines); + } else { + $lines .= "$add: " . $target_adds{$add} . "\n"; + } + } + + appendLines($lines) if ($lines); + + $lines = join("\n", values %rule_adds); + appendLines($lines) if ($lines); + + my $found = 1; + + while ($found) { + if ($MakefileData =~ m/\n(.*)\$\(CXXFLAGS\)(.*)\n/) { + my $stuff_before = $1; + my $stuff_after = $2; + my $lookup = quotemeta("$1\$(CXXFLAGS)$2"); + my $replacement = "$1\$(KCXXFLAGS)$2"; + $MakefileData =~ s/$lookup/$replacement/; + $lookup =~ s/\\\$\\\(CXXFLAGS\\\)/\\\$\\\(KCXXFLAGS\\\)/; + $replacement = "$stuff_before\$(KCXXFLAGS) \$(KDE_CXXFLAGS)$stuff_after"; + next if ($stuff_before =~ /\$\(KDE_CXXFLAGS\)/ or $stuff_after =~ /\$\(KDE_CXXFLAGS\)/); + substituteLine($lookup, $replacement); + } else { + $found = 0; + } + } + + if($foreign_libtool == 0) { + $lookup = '(\n[^#].*\$\(LIBTOOL\) --mode=link) (\$\(CXXLD\).*\$\(KCXXFLAGS\))'; + + if ($MakefileData =~ m/$lookup/ ) { + $MakefileData =~ s/$lookup/$1 --tag=CXX $2/; + } + + $lookup = '(\n[^#].*\$\(LIBTOOL\) --mode=compile)\s+(\$\(CXX\)\s+)'; + if ($MakefileData =~ m/$lookup/ ) { + $MakefileData =~ s/$lookup/$1 --tag=CXX $2/; + } + } + + $MakefileData =~ s/\$\(KCXXFLAGS\)/\$\(CXXFLAGS\)/g; + + $lookup = '(.*)cp -pr \$\$/\$\$file \$\(distdir\)/\$\$file(.*)'; + if ($MakefileData =~ m/\n$lookup\n/) { + substituteLine($lookup, "$1cp -pr \$\$d/\$\$file \$(distdir)/\$\$file$2"); + } + + # Always update the Makefile.in + updateMakefile (); + return; +} + +#----------------------------------------------------------------------------- + +# Beware: This procedure is not complete. E.g. it also parses lines +# containing a '=' in rules (for instance setting shell vars). For our +# usage this us enough, though. +sub read_variables () +{ + while ($MakefileData =~ /\n\s*(\S+)\s*=([^\n]*)/g) { + $varcontent{$1} = $2; + } +} + +# Check to see whether we should process this make file. +# This is where we look for tags that we need to process. +# A small amount of initialising on the tags is also done here. +# And of course we open and/or create the needed make files. +sub initialise () +{ + if (! -r "Makefile.am") { + print STDOUT "found Makefile.in without Makefile.am\n" if ($verbose); + return 0; + } + + # Checking for files to process... + + open (FILEIN, $makefile) || die "Can't open $makefileDir/$makefile: $!\n"; + # perl bug in 5.8.0: in utf8 mode it badly screws up + binmode(FILEIN, ":bytes") if ($] >= 5.008); + # Read the file + # stat(FILEIN)[7] might look more elegant, but is slower as it + # requires stat'ing the file + seek(FILEIN, 0, 2); + my $fsize = tell(FILEIN); + seek(FILEIN, 0, 0); + read FILEIN, $MakefileData, $fsize; + close FILEIN; + print "DOS CRLF within $makefileDir/$makefile!\n" if($MakefileData =~ y/\r//d); + + # Remove the line continuations, but keep them marked + # Note: we lose the trailing spaces but that's ok. + # Don't mangle line-leading spaces (usually tabs) + # since they're important. + $MakefileData =~ s/\\\s*\n/\034/g; + + # If we've processed the file before... + restoreMakefile () if ($MakefileData =~ /$progId/); + + foreach $dir (@foreignfiles) { + if (substr($makefileDir,0,length($dir)) eq $dir) { + return 0; + } + } + + %kdeopts = (); + $kdeopts{"foreign"} = 0; + $kdeopts{"qtonly"} = 0; + $kdeopts{"noautodist"} = 0; + $kdeopts{"foreign-libtool"} = $foreign_libtool; + $kdeopts{"nofinal"} = !$use_final; # default + + read_variables(); + + if ($MakefileData =~ /\nKDE_OPTIONS\s*=[ \t]*([^\n]*)\n/) { + my $kde_options_str = $1; + local @kde_options = split(/[\034\s]+/, $kde_options_str); + if (grep(/^foreign$/, @kde_options)) { + push(@foreignfiles, $makefileDir . "/"); + return 0; # don't touch me + } + for $opt (@kde_options) { + if (!defined $kdeopts{$opt}) { + print STDERR "Warning: unknown option $opt in $printname\n"; + } else { + $kdeopts{$opt} = 1; + } + } + } + + # Look for the tags that mean we should process this file. + $metasourceTags = 0; + $metasourceTags++ while ($MakefileData =~ /\n[^=\#]*METASOURCES\s*=/g); + + my $pofileTag = 0; + $pofileTag++ while ($MakefileData =~ /\nPOFILES\s*=/g); + if ($pofileTag > 1) + { + print STDERR "Error: Only one POFILES tag allowed\n"; + $errorflag = 1; + } + + while ($MakefileData =~ /\n\.SUFFIXES:([^\n]+)\n/g) { + my $suffixes_str = $1; + my @list=split(' ', $suffixes_str); + foreach $ext (@list) { + if ($ext =~ /^\.$cppExt$/) { + $cxxsuffix = $ext; + $cxxsuffix =~ s/\.//g; + print STDOUT "will use suffix $cxxsuffix\n" if ($verbose); + last; + } + } + } + + tag_KDEINIT(); + + while ($MakefileData =~ /\n(\S*)_OBJECTS\s*=[\034 \t]*([^\n]*)\n/g) { + + my $program = $1; + my $objs = $2; # safe them + + my $ocv = 0; + + my @objlist = split(/[\034\s]+/, $objs); + foreach $obj (@objlist) { + if ($obj =~ /(\S*)\$\((\S+)\)/ ) { + my $pre = $1; + my $variable = $2; + if ($pre eq '' && exists($varcontent{$variable})) { + my @addlist = split(/[\034\s]+/, $varcontent{$variable}); + push(@objlist, @addlist); + } elsif ($variable !~ 'OBJEXT' && $variable !~ /am__objects_\d+/ ) { + $ocv = 1; + } + } + } + + next if ($ocv); + next if ($program =~ /^am_libkdeinit_/); + + $program =~ s/^am_// if ($program =~ /^am_/); + + my $sourceprogram = $program; + $sourceprogram =~ s/\@am_/\@/ if($sourceprogram =~ /^.*\@am_.+/); + + print STDOUT "found program $program\n" if ($verbose); + push(@programs, $program); + + $realObjs{$program} = $objs; + + if ($MakefileData =~ /\n$sourceprogram\_SOURCES\s*=[ \t]*(.*)\n/) { + $sources{$program} = $1; + } + else { + $sources{$program} = ""; + print STDERR "found program with no _SOURCES: $program\n"; + } + + my $realprogram = $program; + $realprogram =~ s/_/./g; # unmask to regexp + if ($MakefileData =~ /\n($realprogram)(\$\(EXEEXT\)?)?:.*\$\($program\_OBJECTS\)/) { + $realname{$program} = $1; + } else { + # not standard Makefile - nothing to worry about + $realname{$program} = ""; + } + } + + my $lookup = 'DEPDIR\s*=.*'; + if ($MakefileData !~ /\n$lookup/) { + $lookup = 'bindir\s*=[ \t]*.*'; + substituteLine($lookup, "DEPDIR = .deps\n$1") if ($MakefileData =~ /\n($lookup)/); + } + + my @marks = ('MAINTAINERCLEANFILES', 'CLEANFILES', 'DISTCLEANFILES'); + foreach $mark (@marks) { + while ($MakefileData =~ /\n($mark)\s*=[ \t]*([^\n]*)/g) { + my $clean_str = $2; + foreach $file (split('[\034\s]+', $clean_str)) { + $file =~ s/\.\///; + push(@cleanfiles, $file); + } + } + } + + my $localTag = 0; + $localTag++ if ($MakefileData =~ /\ninstall-\S+-local:/); + + return (!$errorflag); +} + +#----------------------------------------------------------------------------- + +# Gets the list of user defined directories - relative to $srcdir - where +# header files could be located. +sub tag_META_INCLUDES () +{ + my $lookup = '[^=\n]*META_INCLUDES\s*=[ \t]*(.*)'; + return 1 if ($MakefileData !~ /($lookup)\n/); + print STDOUT "META_INCLUDE processing <$1>\n" if ($verbose); + + my $headerStr = $2; + removeLine ($lookup, $1); + + my @headerlist = split(/[\034\s]+/, $headerStr); + + foreach $dir (@headerlist) + { + $dir =~ s#\$\(srcdir\)#.#; + if (! -d $dir) + { + print STDERR "Warning: $dir can't be found. ", + "Must be a relative path to \$(srcdir)\n"; + } + else + { + push (@headerdirs, $dir); + } + } + + return 0; +} + +#----------------------------------------------------------------------------- + +sub tag_FINAL() +{ + my @final_names = (); + + foreach $program (@programs) { + + if ($sources{$program} =~ /\(/) { + print STDOUT "found ( in $program\_SOURCES. skipping\n" if ($verbose); + next; + } + + my $mocs = ""; # Moc files (in this program) + my $moc_cpp_added = 0; # If we added some .moc.cpp files, due to + # no other .cpp file including the .moc one. + + my @progsources = split(/[\034\s]+/, $sources{$program}); + my %shash = (); + @shash{@progsources} = 1; # we are only interested in the existence + my %sourcelist = (); + my %extradeps = (); + + foreach $source (@progsources) { + my $suffix = $source; + $suffix =~ s/^.*\.([^\.]+)$/$1/; + + $sourcelist{$suffix} .= "$source "; + } + foreach my $mocFile (keys (%globalmocs)) + { + my ($dir, $hFile, $cppFile) = split ("\035", $globalmocs{$mocFile}, 3); + if (defined ($cppFile)) { + $mocs .= " $mocFile.moc" if exists $shash{$cppFile}; + } else { + $sourcelist{$cxxsuffix} .= "$mocFile.moc.$cxxsuffix "; + $moc_cpp_added = 1; + } + } + + # scan for extra given dependencies and add them to our target + while ($MakefileData =~ /\n\s*(\S+)\.(?:lo|o)\s*:([^\n]*)/g) { + $extradeps{$1} = $2; + } + + foreach $suffix (keys %sourcelist) { + # See if this file contains c++ code. (i.e., just check the file's suffix against c++ extensions) + my $suffix_is_cxx = 0; + if($suffix =~ /($cppExt)$/) { + $cxxsuffix = $1; + $suffix_is_cxx = 1; + } + + my $mocfiles_in = ($suffix eq $cxxsuffix) && $moc_cpp_added; + + my @sourcelist = split(/[\034\s]+/, $sourcelist{$suffix}); + + if ((@sourcelist == 1 && !$mocfiles_in) || $suffix_is_cxx != 1 ) { + + # we support IDL on our own + if ($suffix eq "skel" || $suffix =~ /^stub/ + || $suffix =~ /^signals/ # obsolete, remove in KDE-4 + || $suffix eq "h" || $suffix eq "ui" + || $suffix eq "kcfgc" ) { + next; + } + + foreach $file (@sourcelist) { + $file =~ s/\Q$suffix\E$//; + + $finalObjs{$program} .= $file; + if ($program =~ /_la$/) { + $finalObjs{$program} .= "lo "; + } else { + $finalObjs{$program} .= "o "; + } + } + next; # suffix + } + + my $source_deps = ""; + foreach $source (@sourcelist) { + if (-f $source) { + $source_deps .= " \$(srcdir)/$source"; + } else { + $source_deps .= " $source"; + } + my $plainsource = $source; + $plainsource =~ s/\.$cppExt$//; + $source_deps .= " " . $extradeps{$plainsource} if (exists($extradeps{$plainsource})); + } + + $handling = "$program.all_$suffix.$suffix: \$(srcdir)/Makefile.in" . $source_deps . " " . join(' ', $mocs) . "\n"; + $handling .= "\t\@echo 'creating $program.all_$suffix.$suffix ...'; \\\n"; + $handling .= "\trm -f $program.all_$suffix.files $program.all_$suffix.final; \\\n"; + $handling .= "\techo \"#define KDE_USE_FINAL 1\" >> $program.all_$suffix.final; \\\n"; + $handling .= "\tfor file in " . $sourcelist{$suffix} . "; do \\\n"; + $handling .= "\t echo \"#include \\\"\$\$file\\\"\" >> $program.all_$suffix.files; \\\n"; + $handling .= "\t test ! -f \$\(srcdir\)/\$\$file || egrep '^#pragma +implementation' \$\(srcdir\)/\$\$file >> $program.all_$suffix.final; \\\n"; + $handling .= "\tdone; \\\n"; + $handling .= "\tcat $program.all_$suffix.final $program.all_$suffix.files > $program.all_$suffix.$suffix; \\\n"; + $handling .= "\trm -f $program.all_$suffix.final $program.all_$suffix.files\n"; + + appendLines($handling); + + push(@final_names, "$program.all_$suffix.$suffix"); + my $finalObj = "$program.all_$suffix."; + if ($program =~ /_la$/) { + $finalObj .= "lo"; + } else { + $finalObj .= "o"; + } + $finalObjs{$program} .= $finalObj . " "; + } + } + + if (!$kdeopts{"nofinal"} && @final_names >= 1) { + # add clean-final target + my $lines = "$cleantarget-final:\n"; + $lines .= "\t-rm -f " . join(' ', @final_names) . "\n" if (@final_names); + appendLines($lines); + $target_adds{"$cleantarget-am"} .= "$cleantarget-final "; + + foreach $finalfile (@final_names) { + $finalfile =~ s/\.[^.]*$/.P/; + $dep_finals .= " \$(DEPDIR)/$finalfile"; + } + } +} + +sub tag_KDEINIT() +{ + my @progs = (); + my $ltlibs = ""; + my $lookup = 'kdeinit_LTLIBRARIES\s*=[ \t]*(.*)'; + + if ($MakefileData =~ m/\n$lookup/) { + @kdeinits = split(/[\034\s]+/, $1); + my $lines = ""; + foreach my $kdeinit (@kdeinits) { + if ($kdeinit =~ m/\.la$/) { + $kdeinit =~ s/\.la$//; + push(@progs, $kdeinit); + + $lines .= "\n${kdeinit}.la.$cxxsuffix:\n"; + $lines .= "\techo 'extern \"C\" int kdemain(int argc, char* argv[]);' > ${kdeinit}.la.$cxxsuffix; \\\n"; + $lines .= "\techo 'int main(int argc, char* argv[]) { return kdemain(argc,argv); }' >> ${kdeinit}.la.$cxxsuffix\n"; + + $lines .= "\n${kdeinit}_dummy.$cxxsuffix:\n"; + $lines .= "\techo '#include ' > ${kdeinit}_dummy.$cxxsuffix; \\\n"; + $lines .= "\techo 'extern \"C\" int kdemain(int argc, char* argv[]);' >> ${kdeinit}_dummy.$cxxsuffix; \\\n"; + $lines .= "\techo 'extern \"C\" KDE_EXPORT int kdeinitmain(int argc, char* argv[]) { return kdemain(argc,argv); }' >> ${kdeinit}_dummy.$cxxsuffix\n"; + + push(@cleanfiles, "${kdeinit}.la.$cxxsuffix"); + push(@cleanfiles, "${kdeinit}_dummy.$cxxsuffix"); + + # add dependency + $dep_files .= " \$(DEPDIR)/${kdeinit}.la.Po" if($dep_files !~/${kdeinit}.la.Po/ ); + $dep_files .= " \$(DEPDIR)/${kdeinit}_dummy.Plo" if($dep_files !~/${kdeinit}_dummy.Plo/ ); + + # make library + $lookup = $kdeinit . '_la_LIBADD\s*=[ \t]*(.*)'; + if($MakefileData =~ m/\n$lookup/) { + my $libadd = $1; + substituteLine($lookup, "${kdeinit}_la_LIBADD = libkdeinit_${kdeinit}.la"); + appendLines("libkdeinit_${kdeinit}_la_LIBADD = $libadd\n"); + } + appendLines("libkdeinit_${kdeinit}_la_LDFLAGS = -no-undefined -avoid-version \$(all_libraries)\n"); + + # add library dependencies + $lookup = $kdeinit . '_la_DEPENDENCIES\s*=[ \t]*(.*)'; + if($MakefileData =~ m/\n$lookup/) { + my $libdeps = $1; + substituteLine($lookup, "${kdeinit}_la_DEPENDENCIES = libkdeinit_${kdeinit}.la"); + appendLines("libkdeinit_${kdeinit}_la_DEPENDENCIES = $libdeps\n"); + } + + # make library objects + $lookup = "am_${kdeinit}_la_OBJECTS" . '\s*=[ \t]*(.*)'; + if($MakefileData =~ m/\n$lookup/) { + my $libobjects = $1; + substituteLine($lookup, "am_${kdeinit}_la_OBJECTS = ${kdeinit}_dummy.lo"); + appendLines("am_libkdeinit_${kdeinit}_la_OBJECTS = $libobjects\n"); + my $prog = "libkdeinit_${kdeinit}_la"; + push(@programs, $prog); + $realObjs{$prog} = $libobjects; + $realname{$prog} = "libkdeinit_${kdeinit}.la"; + } + $target_adds{"libkdeinit_${kdeinit}.la"} = "\$(libkdeinit_${kdeinit}_la_OBJECTS) \$(libkdeinit_${kdeinit}_la_DEPENDENCIES)\n" . + "\t\$(CXXLINK) -rpath \$(libdir) \$(libkdeinit_${kdeinit}_la_LDFLAGS) ". + "\$(libkdeinit_${kdeinit}_la_OBJECTS) " . + "\$(libkdeinit_${kdeinit}_la_LIBADD) " . + "\$(LIBS)\n"; + + # make libkdeinit sources + $lookup = $kdeinit . '_la_SOURCES\s*=[ \t]*(.*)'; + if($MakefileData =~ m/\n$lookup/) { + my $srces = $1; + $sources_changed{"libkdeinit_${kdeinit}_la"} = 1; + $sources{"libkdeinit_${kdeinit}_la"} = $srces; + } + + # make libkdeinit metasources + $lookup = $kdeinit . '_la_METASOURCES\s*=[ \t]*(.*)'; + substituteLine($lookup, "libkdeinit_${kdeinit}_la_METASOURCES = $1") + if($MakefileData =~ m/\n$lookup/); + +=cut + # make binary sources + $lookup = $kdeinit. '_SOURCES\s*=[ \t]*(.*)'; + if($MakefileData =~ m/\n$lookup/) { + substituteLine($lookup, "${kdeinit}_SOURCES = ${kdeinit}.la.$cxxsuffix"); + $lookup = 'SOURCES\s*=[ \t]*(.*)'; + if($MakefileData =~ m/\n$lookup/) { + my $srces = $1; + $srces =~ s/\b$kdeinit\.c\b/\$(${kdeinit}_SOURCES)/; + $srces =~ s/\$\(${kdeinit}_la_SOURCES\)/\$(libkdeinit_${kdeinit}_la_SOURCES)/; + substituteLine($lookup, "SOURCES = $srces"); + } + $lookup = 'DIST_SOURCES\s*=[ \t](.*)'; + if($MakefileData =~ m/\n$lookup/) { + my $srces = $1; + $srces =~ s/\b$kdeinit\.c\b/\$(${kdeinit}_SOURCES)/; + $srces =~ s/\$\(${kdeinit}_la_SOURCES\)/\$(libkdeinit_${kdeinit}_la_SOURCES)/; + substituteLine($lookup, "DIST_SOURCES = $srces"); + } + } + + # make binary objects / libs + $lookup = $kdeinit . '_OBJECTS\s*=[ \t]*.*'; + if($MakefileData =~ m/\n$lookup/) { + $realObjs{$kdeinit} = "${kdeinit}.la.\$(OBJEXT)"; + substituteLine("${kdeinit}_LDFLAGS\\s*=.*", "${kdeinit}_LDFLAGS = \$(all_libraries)"); + substituteLine("${kdeinit}_LDADD\\s*=.*", "${kdeinit}_LDADD = libkdeinit_${kdeinit}.la"); + substituteLine("${kdeinit}_DEPENDENCIES\\s*=.*", "${kdeinit}_DEPENDENCIES = libkdeinit_${kdeinit}.la"); + } +=cut + # add binary + push(@programs, $kdeinit); + $realObjs{$kdeinit} = "${kdeinit}.la.\$(OBJEXT)"; + $realname{$kdeinit} = $kdeinit; + $sources{$kdeinit} = "${kdeinit}.la.$cxxsuffix"; + + $lines .= "${kdeinit}_LDFLAGS = \$(KDE_RPATH) -no-undefined \$(all_libraries)\n"; + $lines .= "${kdeinit}_LDADD = libkdeinit_${kdeinit}.la\n"; + $lines .= "${kdeinit}_DEPENDENCIES = libkdeinit_${kdeinit}.la\n"; + + $target_adds{"${kdeinit}\$(EXEEXT)"} = + "\$(${kdeinit}_OBJECTS) \$(${kdeinit}_DEPENDENCIES)\n" . + "\t\@rm -f ${kdeinit}\$(EXEEXT)\n" . + "\t\$(CXXLINK) \$(${kdeinit}_LDFLAGS) \$(${kdeinit}_OBJECTS) \$(${kdeinit}_LDADD) \$(LIBS)\n"; + + $ltlibs .= " libkdeinit_${kdeinit}.la"; + } + } + appendLines($lines); + + # add libkdeinit target + $lookup = 'lib_LTLIBRARIES\s*=[ \t]*(.*)'; + if($MakefileData =~ m/\n$lookup/) { + substituteLine($lookup, "lib_LTLIBRARIES = $1 $ltlibs"); + } + else { + print STDERR + "Error: lib_LTLIBRARIES missing in $printname (required for kdeinit_LTLIBRARIES).\n"; + $errorflag = 1; + } + } + + if($#progs >= 0) { + if($MakefileData !~ m/\nbin_PROGRAMS\s*=/) { + print STDERR "Error: bin_PROGRAMS missing in $printname (required for kdeinit_LTLIBRARIES).\n"; + $errorflag = 1; + } + else { + # add our new progs to SOURCES, DIST_SOURCES and bin_PROGRAMS + my $progsources = ""; + my $progexes = ""; + foreach my $p (@progs) { + $progsources .= "\$(${p}_SOURCES) "; + $progexes .= "${p}\$(EXEEXT) "; + } + $lookup = 'SOURCES\s*=[ \t]*(.*)'; + if($MakefileData =~ /\n$lookup/) { + substituteLine($lookup, "SOURCES = $1 $progsources"); + } + $lookup = 'DIST_SOURCES\s*=[ \t]*(.*)'; + if($MakefileData =~ /\n$lookup/) { + substituteLine($lookup, "DIST_SOURCES = $1 $progsources"); + } + # bin_PROGRAMS is complicated, as it exists twice, so we do a little + # magic trick here + $lookup = 'PROGRAMS\s*=[ \t]*(.*)'; + if ($MakefileData =~ /\n$lookup/) { + substituteLine($lookup, "bin_PROGRAMS += $progexes\nPROGRAMS = $1"); + } + } + } +} + +#----------------------------------------------------------------------------- + +sub tag_COMPILE_FIRST() +{ + foreach $program (@programs) { + my $lookup = "$program" . '_COMPILE_FIRST\s*=[ \t]*(.*)'; + if ($MakefileData =~ m/\n$lookup\n/) { + my $compilefirst_str = $1; + my @compilefirst = split(/[\034\s]+/, $compilefirst_str); + my @progsources = split(/[\034\s]+/, $sources{$program}); + my %donesources = (); + foreach $source (@progsources) { + my @deps = (); + my $sdeps = ""; + if (-f $source) { + $sdeps = "\$(srcdir)/$source"; + } else { + $sdeps = "$source"; + } + foreach $depend (@compilefirst) { + next if ($source eq $depend); + # avoid cyclic dependencies + next if defined($donesources{$depend}); + push @deps, $depend; + } + $target_adds{$sdeps} .= join(' ', @deps) . ' ' if (@deps); + $donesources{$source} = 1; + } + } + } +} + +#----------------------------------------------------------------------------- + + +# Organises the list of headers that we'll use to produce moc files +# from. +sub tag_METASOURCES () +{ + local @newObs = (); # here we add to create object files + local @depend = (); # here we add to create moc files + local $mocExt = ".moc"; + local %mocFiles = (); + + my $line = ""; + my $postEqual = ""; + + my $lookup; + my $found = ""; + if ($metasourceTags > 1) { + $lookup = $program . '_METASOURCES\s*=\s*(.*)'; + return 1 if ($MakefileData !~ /\n($lookup)\n/); + $found = $1; + } else { + $lookup = $program . '_METASOURCES\s*=\s*(.*)'; + if ($MakefileData !~ /\n($lookup)\n/) { + $lookup = 'METASOURCES\s*=\s*(.*)'; + return 1 if ($MakefileData !~ /\n($lookup)\n/); + $found = $1; + $metasourceTags = 0; # we can use the general target only once + } else { + $found = $1; + } + } + print STDOUT "METASOURCE processing <$found>)\n" if ($verbose); + + $postEqual = $found; + $postEqual =~ s/[^=]*=//; + + removeLine ($lookup, $found); + + # Always find the header files that could be used to "moc" + return 1 if (findMocCandidates ()); + + if ($postEqual =~ /AUTO\s*(\S*)|USE_AUTOMOC\s*(\S*)/) + { + print STDERR "$printname: the argument for AUTO|USE_AUTOMOC is obsolete" if ($+); + $mocExt = ".moc.$cxxsuffix"; + $haveAutomocTag = 1; + } + else + { + # Not automoc so read the list of files supplied which + # should be .moc files. + + $postEqual =~ tr/\034/ /; + + # prune out extra headers - This also checks to make sure that + # the list is valid. + pruneMocCandidates ($postEqual); + } + + checkMocCandidates (); + + if (@newObs) { + my $ext = ($program =~ /_la$/) ? ".moc.lo " : ".moc.o "; + $realObjs{$program} .= "\034" . join ($ext, @newObs) . $ext; + $dependmocs{$program} = join (".moc.$cxxsuffix " , @newObs) . ".moc.$cxxsuffix"; + foreach $file (@newObs) { + $dep_files .= " \$(DEPDIR)/$file.moc.P" if($dep_files !~/$file.moc.P/); + } + } + if (@depend) { + $dependmocs{$program} .= " "; + $dependmocs{$program} .= join('.moc ', @depend) . ".moc"; + $dependmocs{$program} .= " "; + } + addMocRules (); + @globalmocs{keys %mocFiles}=values %mocFiles; +} + +#----------------------------------------------------------------------------- + +# Returns 0 if the line was processed - 1 otherwise. +# Errors are logged in the global $errorflags +sub tag_AUTOMAKE () +{ + my $lookup = '.*cd \$\(top_srcdir\)\s+&&[\034\s]+\$\(AUTOMAKE\)(.*)'; + return 1 if ($MakefileData !~ /\n($lookup)\n/); + print STDOUT "AUTOMAKE processing <$1>\n" if ($verbose); + + my $newLine = $1."\n\tcd \$(top_srcdir) && perl $thisProg $printname"; + + # automake 1.8.x adds another automake call. *sigh* + $newLine =~ s/;([\034\s]+cd\s+\$\(srcdir\)\s+&&[\034\s]+\$\(AUTOMAKE\).*)[\034\s]+\&\&[\034\s]+exit[\034\s]+0;([\034\s]+exit\s+1)/; \034 ( $1 ) || exit 1; echo \' cd \$(top_srcdir) && perl $thisProg \'; cd \$(top_srcdir) && perl $thisProg && exit 0; $2/; + substituteLine ($lookup, $newLine); + $automkCall = $1; + + $lookup = '.*cd \$\(srcdir\)\s+&&[\034\s]+\$\(AUTOCONF\)(.*)'; + if ($MakefileData =~ /\n($lookup)\n/) { + $newLine = "\tcd \$(srcdir) && rm -f configure\n"; + $newLine .= "\tcd \$(top_srcdir) && \$(MAKE) -f admin/Makefile.common configure"; + substituteLine ($lookup, $newLine); + } + + return 0; +} + +#----------------------------------------------------------------------------- + +sub handle_TOPLEVEL() +{ + my $pofiles = ""; + my @restfiles = (); + opendir (THISDIR, "."); + foreach $entry (readdir(THISDIR)) { + next if (-d $entry); + + next if ($entry eq "CVS" || $entry =~ /^\./ || $entry =~ /^Makefile/ || $entry =~ /~$/ || $entry =~ /^\#.*\#$/ || $entry =~ /.gmo$/); + + if ($entry =~ /\.po$/) { + next; + } + push(@restfiles, $entry); + } + closedir (THISDIR); + + if (@restfiles) { + $target_adds{"install-data-am"} .= "install-nls-files "; + $lines = "install-nls-files:\n"; + $lines .= "\t\$(mkinstalldirs) \$(DESTDIR)\$(kde_locale)/$kdelang\n"; + for $file (@restfiles) { + $lines .= "\t\$(INSTALL_DATA) \$\(srcdir\)/$file \$(DESTDIR)\$(kde_locale)/$kdelang/$file\n"; + } + $target_adds{"uninstall"} .= "uninstall-nls-files "; + $lines .= "uninstall-nls-files:\n"; + for $file (@restfiles) { + $lines .= "\t-rm -f \$(DESTDIR)\$(kde_locale)/$kdelang/$file\n"; + } + appendLines($lines); + } + + return 0; +} + +#----------------------------------------------------------------------------- + +sub tag_SUBDIRS () +{ + if ($MakefileData !~ /\nSUBDIRS\s*=\s*\$\(AUTODIRS\)\s*\n/) { + return 1; + } + + my $subdirs = "."; + + opendir (THISDIR, "."); + foreach $entry (readdir(THISDIR)) { + next if ($entry eq "CVS" || $entry =~ /^\./); + if (-d $entry && -f $entry . "/Makefile.am") { + $subdirs .= " $entry"; + next; + } + } + closedir (THISDIR); + + substituteLine('SUBDIRS\s*=.*', "SUBDIRS =$subdirs"); + return 0; +} + +sub tag_IDLFILES () +{ + my @psources = split(/[\034\s]+/, $sources{$program}); + my $dep_lines = ""; + my @cppFiles = (); + + foreach $source (@psources) { + my $skel = ($source =~ m/\.skel$/); + my $stub = ($source =~ m/\.stub$/); + my $signals = ($source =~ m/\.signals$/); # obsolete, remove in KDE-4 + + if ($stub || $skel || $signals) { + + my $qs = quotemeta($source); + $sources{$program} =~ s/$qs//; + $sources_changed{$program} = 1; + + $source =~ s/\.(stub|skel|signals)$//; + my $sourcename; + + if ($skel) { + $sourcename = "$source\_skel"; + } elsif ($stub) { + $sourcename = "$source\_stub"; + } else { + $sourcename = "$source\_signals"; + } + + my $sourcedir = ''; + if (-f "$makefileDir/$source.h") { + $sourcedir = '$(srcdir)/'; + } else { + if ($MakefileData =~ /\n$source\_DIR\s*=\s*(\S+)\n/) { + $sourcedir = $1; + $sourcedir .= "/" if ($sourcedir !~ /\/$/); + } + } + + if ($allidls !~ /$source\_kidl/) { + + $use_ng = ($MakefileData =~ /\n$source\_DCOPIDLNG\s*=\s*(\S+)\n/); + $dcopidl = $use_ng ? "KDECONFIG=\"\$(KDECONFIG)\" \$(DCOPIDLNG)" : "\$(DCOPIDL)"; + + $dep_lines .= "$source.kidl: $sourcedir$source.h \$(DCOP_DEPENDENCIES)\n"; + $dep_lines .= "\t$dcopidl $sourcedir$source.h > $source.kidl || ( rm -f $source.kidl ; false )\n"; + + $allidls .= $source . "_kidl "; + } + + if ($allidls !~ /$sourcename/) { + + $dep_lines_tmp = ""; + + if ($skel) { + $dep_lines .= "$sourcename.$cxxsuffix: $source.kidl\n"; + $dep_lines .= "\t\$(DCOPIDL2CPP) --c++-suffix $cxxsuffix --no-signals --no-stub $source.kidl\n"; + } elsif ($stub) { + $dep_lines_tmp = "\t\$(DCOPIDL2CPP) --c++-suffix $cxxsuffix --no-signals --no-skel $source.kidl\n"; + } else { # signals - obsolete, remove in KDE 4 + $dep_lines_tmp = "\t\$(DCOPIDL2CPP) --c++-suffix $cxxsuffix --no-stub --no-skel $source.kidl\n"; + } + + if ($stub || $signals) { + $target_adds{"$sourcename.$cxxsuffix"} .= "$sourcename.h "; + $dep_lines .= "$sourcename.h: $source.kidl\n"; + $dep_lines .= $dep_lines_tmp; + } + + $allidls .= $sourcename . " "; + } + + $idlfiles{$program} .= $sourcename . " "; + + if ($program =~ /_la$/) { + $realObjs{$program} .= " $sourcename.lo"; + } else { + $realObjs{$program} .= " $sourcename.\$(OBJEXT)"; + } + $sources{$program} .= " $sourcename.$cxxsuffix"; + $sources_changed{$program} = 1; + $important{$program} .= "$sourcename.h " if (!$skel); + $idl_output .= "\\\n\t$sourcename.$cxxsuffix $sourcename.h $source.kidl "; + push(@cleanfiles, "$sourcename.$cxxsuffix"); + push(@cleanfiles, "$sourcename.h"); + push(@cleanfiles, "$sourcename.kidl"); + $dep_files .= " \$(DEPDIR)/$sourcename.P" if ($dep_files !~/$sourcename.P/); + } + } + if ($dep_lines) { + appendLines($dep_lines); + } + + if (0) { + my $lookup = "($program)"; + $lookup .= '(|\$\(EXEEXT\))'; + $lookup =~ s/\_/./g; + $lookup .= ":(.*..$program\_OBJECTS..*)"; + # $lookup = quotemeta($lookup); + if ($MakefileData =~ /\n$lookup\n/) { + + my $line = "$1$2: "; + foreach $file (split(' ', $idlfiles{$program})) { + $line .= "$file.$cxxsuffix "; + } + $line .= $3; + substituteLine($lookup, $line); + } else { + print STDERR "no built dependency found $lookup\n"; + } + } +} + +sub tag_UIFILES () +{ + my @psources = split(/[\034\s]+/, $sources{$program}); + my @depFiles = (); + + foreach $source (@psources) { + + if ($source =~ m/\.ui$/) { + + print STDERR "adding UI file $source\n" if ($verbose); + + my $qs = quotemeta($source); + $sources{$program} =~ s/$qs//; + $sources_changed{$program} = 1; + + $source =~ s/\.ui$//; + + my $sourcedir = ''; + if (-f "$makefileDir/$source.ui") { + $sourcedir = '$(srcdir)/'; + } + + if (!$uiFiles{$source}) { + + my $dep_lines = "$source.$cxxsuffix: $sourcedir$source.ui $source.h $source.moc\n"; + $dep_lines .= "\trm -f $source.$cxxsuffix\n"; + if (!$kdeopts{"qtonly"}) { + $dep_lines .= "\techo '#include ' > $source.$cxxsuffix\n"; + $dep_lines .= "\techo '#include ' >> $source.$cxxsuffix\n"; + my ($mangled_source) = $source; + $mangled_source =~ s/[^A-Za-z0-9]/_/g; # get rid of garbage + $dep_lines .= "\t\$(UIC) -tr \${UIC_TR} -i $source.h $sourcedir$source.ui > $source.$cxxsuffix.temp ; ret=\$\$?; \\\n"; + $dep_lines .= "\t\$(PERL) -pe \"s,\${UIC_TR}( \\\"\\\" ),QString::null,g\" $source.$cxxsuffix.temp | \$(PERL) -pe \"s,\${UIC_TR}( \\\"\\\"\\, \\\"\\\" ),QString::null,g\" | \$(PERL) -pe \"s,image([0-9][0-9]*)_data,img\\\$\$1_" . $mangled_source . ",g\" | \$(PERL) -pe \"s,: QWizard\\(,: KWizard(,g\" >> $source.$cxxsuffix ;\\\n"; + $dep_lines .= "\trm -f $source.$cxxsuffix.temp ;\\\n"; + } else { + $dep_lines .= "\t\$(UIC) -i $source.h $sourcedir$source.ui > $source.$cxxsuffix; ret=\$\$?; \\\n"; + } + $dep_lines .= "\tif test \"\$\$ret\" = 0; then echo '#include \"$source.moc\"' >> $source.$cxxsuffix; else rm -f $source.$cxxsuffix ; exit \$\$ret ; fi\n\n"; + $dep_lines .= "$source.h: $sourcedir$source.ui\n"; + $dep_lines .= "\trm -rf $source.h;\n"; + if (!$kdeopts{"qtonly"}) { + $dep_lines .= "\t\$(UIC) $sourcedir$source.ui | \$(PERL) -pi -e \"s,public QWizard,public KWizard,g; s,#include ,#include ,g\" >> $source.h ;\n"; + } else { + $dep_lines .= "\t\$(UIC) -o $source.h $sourcedir$source.ui\n"; + } + $dep_lines .= "$source.moc: $source.h\n"; + $dep_lines .= "\t\$(MOC) $source.h -o $source.moc\n"; + + $rule_adds{"$source.$cxxsuffix"} = $dep_lines; + + $uiFiles{$source} = 1; + $dependmocs{$program} .= " $source.moc"; + $globalmocs{$source} = "\035$source.h\035$source.cpp"; + } + + if ($program =~ /_la$/) { + $realObjs{$program} .= " $source.lo"; + } else { + $realObjs{$program} .= " $source.\$(OBJEXT)"; + } + $sources{$program} .= " $source.$cxxsuffix"; + $sources_changed{$program} = 1; + $important{$program} .= "$source.h "; + $ui_output .= "\\\n\t$source.$cxxsuffix $source.h $source.moc "; + push(@cleanfiles, "$source.$cxxsuffix"); + push(@cleanfiles, "$source.h"); + push(@cleanfiles, "$source.moc"); + $dep_files .= " \$(DEPDIR)/$source.P" if($dep_files !~/$source.P/ ); + } + } +} + +sub tag_KCFGFILES () +{ + my @psources = split(/[\034\s]+/, $sources{$program}); + my @depFiles = (); + + foreach $source (@psources) { + + if ($source =~ m/\.kcfgc$/) { + + print STDERR "adding KCFG file $source\n" if ($verbose); + + my $qs = quotemeta($source); + $sources{$program} =~ s/$qs//; + $sources_changed{$program} = 1; + + $source =~ s/\.kcfgc$//; + + my $sourcedir = ''; + if (-f "$makefileDir/$source.kcfgc") { + $sourcedir = '$(srcdir)/'; + } + + if (!$kcfgFiles{$source}) { + $kcfg = "$program.kcfg"; + findKcfgFile("$source.kcfgc"); + + my $fixsuffix = ""; + $fixsuffix = "else mv $source.cpp $source.$cxxsuffix ; " + unless "cpp" eq $cxxsuffix; + + my $dep_lines = "$source.$cxxsuffix: $source.h\n"; + $dep_lines .= "$source.h: $sourcedir$kcfg $sourcedir$source.kcfgc \$(KCFG_DEPENDENCIES)\n"; + $dep_lines .= "\t\$(KCONFIG_COMPILER) $sourcedir$kcfg $sourcedir$source.kcfgc; ret=\$\$?; \\\n"; + $dep_lines .= "\tif test \"\$\$ret\" != 0; then rm -f $source.h ; exit \$\$ret ; $fixsuffix fi\n\n"; + + $rule_adds{"$source.$cxxsuffix"} = $dep_lines; + + $kcfgFiles{$source} = 1; + } + + if ($program =~ /_la$/) { + $realObjs{$program} .= " $source.lo"; + } else { + $realObjs{$program} .= " $source.\$(OBJEXT)"; + } + $sources{$program} .= " $source.$cxxsuffix"; + $sources_changed{$program} = 1; + $important{$program} .= "$source.h "; + $kcfg_output .= "\\\n\t$source.$cxxsuffix $source.h "; + push(@cleanfiles, "$source.$cxxsuffix"); + push(@cleanfiles, "$source.h"); + $dep_files .= " \$(DEPDIR)/$source.P" if($dep_files !~/$source.P/ ); + } + } +} + +sub tag_ICON() +{ + my $lookup = '([^\s]*)_ICON\s*=[ \t]*(.*)'; + my $install = ""; + my $uninstall = ""; + + while ($MakefileData =~ /\n$lookup/g) { + my $destdir; + if ($1 eq "KDE") { + $destdir = "kde_icondir"; + } else { + $destdir = $1 . "dir"; + } + my $iconauto = ($2 =~ /AUTO\s*$/); + my @appnames = (); + if ( ! $iconauto ) { + my $appicon_str = $2; + my @_appnames = split(" ", $appicon_str); + print STDOUT "KDE_ICON processing <@_appnames>\n" if ($verbose); + foreach $appname (@_appnames) { + push(@appnames, quotemeta($appname)); + } + } else { + print STDOUT "KDE_ICON processing \n" if ($verbose); + } + + my @files = (); + opendir (THISDIR, "."); + foreach $entry (readdir(THISDIR)) { + next if ($entry eq "CVS" || $entry =~ /^\./ || $entry =~ /^Makefile/ || $entry =~ /~$/ || $entry =~ /^\#.*\#$/); + next if (! -f $entry); + if ( $iconauto ) + { + push(@files, $entry) + if ($entry =~ /\.xpm/ || $entry =~ /\.png/ || $entry =~ /\.mng/ || $entry =~ /\.svg/); + } else { + foreach $appname (@appnames) { + push(@files, $entry) + if ($entry =~ /-$appname\.xpm/ || $entry =~ /-$appname\.png/ || $entry =~ /-$appname\.mng/ || $entry =~ /-$appname\.svg/); + } + } + } + closedir (THISDIR); + + my %directories = (); + + foreach $file (@files) { + my $newfile = $file; + my $prefix = $file; + $prefix =~ s/\.(png|xpm|mng|svg|svgz)$//; + my $appname = $prefix; + $appname =~ s/^[^-]+-// if ($appname =~ /-/) ; + $appname =~ s/^[^-]+-// if ($appname =~ /-/) ; + $appname = quotemeta($appname); + $prefix =~ s/$appname$//; + $prefix =~ s/-$//; + + $prefix = 'lo16-app' if ($prefix eq 'mini'); + $prefix = 'lo32-app' if ($prefix eq 'lo'); + $prefix = 'hi48-app' if ($prefix eq 'large'); + $prefix .= '-app' if ($prefix =~ m/^...$/); + + my $type = $prefix; + $type =~ s/^.*-([^-]+)$/$1/; + $prefix =~ s/^(.*)-[^-]+$/$1/; + + my %type_hash = + ( + 'action' => 'actions', + 'app' => 'apps', + 'device' => 'devices', + 'filesys' => 'filesystems', + 'mime' => 'mimetypes' + ); + + if (! defined $type_hash{$type} ) { + print STDERR "unknown icon type $type in $printname ($file)\n"; + next; + } + + my %dir_hash = + ( + 'los' => 'locolor/16x16', + 'lom' => 'locolor/32x32', + 'him' => 'hicolor/32x32', + 'hil' => 'hicolor/48x48', + 'lo16' => 'locolor/16x16', + 'lo22' => 'locolor/22x22', + 'lo32' => 'locolor/32x32', + 'hi16' => 'hicolor/16x16', + 'hi22' => 'hicolor/22x22', + 'hi32' => 'hicolor/32x32', + 'hi48' => 'hicolor/48x48', + 'hi64' => 'hicolor/64x64', + 'hi128' => 'hicolor/128x128', + 'hisc' => 'hicolor/scalable', + 'cr16' => 'crystalsvg/16x16', + 'cr22' => 'crystalsvg/22x22', + 'cr32' => 'crystalsvg/32x32', + 'cr48' => 'crystalsvg/48x48', + 'cr64' => 'crystalsvg/64x64', + 'cr128' => 'crystalsvg/128x128', + 'crsc' => 'crystalsvg/scalable' + ); + + $newfile =~ s@.*-($appname\.(png|xpm|mng|svgz|svg?))@$1@; + + if (! defined $dir_hash{$prefix}) { + print STDERR "unknown icon prefix $prefix in $printname\n"; + next; + } + + my $dir = $dir_hash{$prefix} . "/" . $type_hash{$type}; + if ($newfile =~ /-[^\.]/) { + my $tmp = $newfile; + $tmp =~ s/^([^-]+)-.*$/$1/; + $dir = $dir . "/" . $tmp; + $newfile =~ s/^[^-]+-//; + } + + if (!defined $directories{$dir}) { + $install .= "\t\$(mkinstalldirs) \$(DESTDIR)\$($destdir)/$dir\n"; + $directories{$dir} = 1; + } + + $install .= "\t\$(INSTALL_DATA) \$(srcdir)/$file \$(DESTDIR)\$($destdir)/$dir/$newfile\n"; + $uninstall .= "\t-rm -f \$(DESTDIR)\$($destdir)/$dir/$newfile\n"; + + } + } + + if (length($install)) { + $target_adds{"install-data-am"} .= "install-kde-icons "; + $target_adds{"uninstall-am"} .= "uninstall-kde-icons "; + appendLines("install-kde-icons:\n" . $install . "\nuninstall-kde-icons:\n" . $uninstall); + } +} + +sub handle_POFILES($$) +{ + my @pofiles = split(" ", $_[0]); + my $lang = $_[1]; + + # Build rules for creating the gmo files + my $tmp = ""; + my $allgmofiles = ""; + my $pofileLine = "POFILES ="; + foreach $pofile (@pofiles) + { + $pofile =~ /(.*)\.[^\.]*$/; # Find name minus extension + $tmp .= "$1.gmo: $pofile\n"; + $tmp .= "\trm -f $1.gmo; \$(GMSGFMT) -o $1.gmo \$(srcdir)/$pofile\n"; + $tmp .= "\ttest ! -f $1.gmo || touch $1.gmo\n"; + $allgmofiles .= " $1.gmo"; + $pofileLine .= " $1.po"; + } + appendLines ($tmp); + my $lookup = 'POFILES\s*=([^\n]*)'; + if ($MakefileData !~ /\n$lookup/) { + appendLines("$pofileLine\nGMOFILES =$allgmofiles"); + } else { + substituteLine ($lookup, "$pofileLine\nGMOFILES =$allgmofiles"); + } + + if ($allgmofiles) { + + # Add the "clean" rule so that the maintainer-clean does something + appendLines ("clean-nls:\n\t-rm -f $allgmofiles\n"); + + $target_adds{"maintainer-clean"} .= "clean-nls "; + + $lookup = 'DISTFILES\s*=[ \t]*(.*)'; + if ($MakefileData =~ /\n$lookup/) { + $tmp = "DISTFILES = \$(GMOFILES) \$(POFILES) $1"; + substituteLine ($lookup, $tmp); + } + } + + $target_adds{"install-data-am"} .= "install-nls "; + + $tmp = "install-nls:\n"; + if ($lang) { + $tmp .= "\t\$(mkinstalldirs) \$(DESTDIR)\$(kde_locale)/$lang/LC_MESSAGES\n"; + } + $tmp .= "\t\@for base in "; + foreach $pofile (@pofiles) + { + $pofile =~ /(.*)\.[^\.]*$/; # Find name minus extension + $tmp .= "$1 "; + } + + $tmp .= "; do \\\n"; + if ($lang) { + $tmp .= "\t echo \$(INSTALL_DATA) \$\$base.gmo \$(DESTDIR)\$(kde_locale)/$lang/LC_MESSAGES/\$\$base.mo ;\\\n"; + $tmp .= "\t if test -f \$\$base.gmo; then \$(INSTALL_DATA) \$\$base.gmo \$(DESTDIR)\$(kde_locale)/$lang/LC_MESSAGES/\$\$base.mo ;\\\n"; + $tmp .= "\t elif test -f \$(srcdir)/\$\$base.gmo; then \$(INSTALL_DATA) \$(srcdir)/\$\$base.gmo \$(DESTDIR)\$(kde_locale)/$lang/LC_MESSAGES/\$\$base.mo ;\\\n"; + $tmp .= "\t fi ;\\\n"; + } else { + $tmp .= "\t echo \$(INSTALL_DATA) \$\$base.gmo \$(DESTDIR)\$(kde_locale)/\$\$base/LC_MESSAGES/\$(PACKAGE).mo ;\\\n"; + $tmp .= "\t \$(mkinstalldirs) \$(DESTDIR)\$(kde_locale)/\$\$base/LC_MESSAGES ; \\\n"; + $tmp .= "\t if test -f \$\$base.gmo; then \$(INSTALL_DATA) \$\$base.gmo \$(DESTDIR)\$(kde_locale)/\$\$base/LC_MESSAGES/\$(PACKAGE).mo ;\\\n"; + $tmp .= "\t elif test -f \$(srcdir)/\$\$base.gmo; then \$(INSTALL_DATA) \$(srcdir)/\$\$base.gmo \$(DESTDIR)\$(kde_locale)/\$\$base/LC_MESSAGES/\$(PACKAGE).mo ;\\\n"; + $tmp .= "\t fi ;\\\n"; + } + $tmp .= "\tdone\n\n"; + appendLines ($tmp); + + $target_adds{"uninstall"} .= "uninstall-nls "; + + $tmp = "uninstall-nls:\n"; + foreach $pofile (@pofiles) + { + $pofile =~ /(.*)\.[^\.]*$/; # Find name minus extension + if ($lang) { + $tmp .= "\trm -f \$(DESTDIR)\$(kde_locale)/$lang/LC_MESSAGES/$1.mo\n"; + } else { + $tmp .= "\trm -f \$(DESTDIR)\$(kde_locale)/$1/LC_MESSAGES/\$(PACKAGE).mo\n"; + } + } + appendLines($tmp); + + $target_adds{"all"} .= "all-nls "; + + $tmp = "all-nls: \$(GMOFILES)\n"; + + appendLines($tmp); + + $target_adds{"distdir"} .= "distdir-nls "; + + $tmp = "distdir-nls:\$(GMOFILES)\n"; + $tmp .= "\tfor file in \$(POFILES); do \\\n"; + $tmp .= "\t cp \$(srcdir)/\$\$file \$(distdir); \\\n"; + $tmp .= "\tdone\n"; + $tmp .= "\tfor file in \$(GMOFILES); do \\\n"; + $tmp .= "\t cp \$(srcdir)/\$\$file \$(distdir); \\\n"; + $tmp .= "\tdone\n"; + + appendLines ($tmp); + + if (!$lang) { + appendLines("merge:\n\t\$(MAKE) -f \$(top_srcdir)/admin/Makefile.common package-merge POFILES=\"\${POFILES}\" PACKAGE=\${PACKAGE}\n\n"); + } + +} + +#----------------------------------------------------------------------------- + +# Returns 0 if the line was processed - 1 otherwise. +# Errors are logged in the global $errorflags +sub tag_POFILES () +{ + my $lookup = 'POFILES\s*=([^\n]*)'; + return 1 if ($MakefileData !~ /\n$lookup/); + print STDOUT "POFILES processing <$1>\n" if ($verbose); + + my $tmp = $1; + + # make sure these are all gone. + if ($MakefileData =~ /\n\.po\.gmo:\n/) + { + print STDERR "Warning: Found old .po.gmo rules in $printname. New po rules not added\n"; + return 1; + } + + # Either find the pofiles in the directory (AUTO) or use + # only the specified po files. + my $pofiles = ""; + if ($tmp =~ /^\s*AUTO\s*$/) + { + opendir (THISDIR, "."); + $pofiles = join(" ", grep(/\.po$/, readdir(THISDIR))); + closedir (THISDIR); + print STDOUT "pofiles found = $pofiles\n" if ($verbose); + if (-f "charset" && -f "kdelibs/kdelibs.po") { + handle_TOPLEVEL(); + } + } + else + { + $tmp =~ s/\034/ /g; + $pofiles = $tmp; + } + return 1 if (!$pofiles); # Nothing to do + + handle_POFILES($pofiles, $kdelang); + + return 0; +} + +sub helper_LOCALINSTALL($) +{ + my $lookup = "\035" . $_[0] . " *:[^\035]*\035\t"; + my $copy = $MakefileData; + $copy =~ s/\n/\035/g; + if ($copy =~ /($lookup.*)$/) { + + $install = $1; + $install =~ s/\035$_[0] *:[^\035]*\035//; + my $emptyline = 0; + while (! $emptyline ) { + if ($install =~ /([^\035]*)\035(.*)/) { + local $line = $1; + $install = $2; + if ($line !~ /^\s*$/ && $line !~ /^(\@.*\@)*\t/) { + $emptyline = 1; + } else { + replaceDestDir($line); + } + } else { + $emptyline = 1; + } + } + } + +} + +sub tag_LOCALINSTALL () +{ + helper_LOCALINSTALL('install-exec-local'); + helper_LOCALINSTALL('install-data-local'); + helper_LOCALINSTALL('uninstall-local'); + + return 0; +} + +sub replaceDestDir($) { + local $line = $_[0]; + + if ( $line =~ /^\s*(\@.*\@)*\s*\$\(mkinstalldirs\)/ + || $line =~ /^\s*(\@.*\@)*\s*\$\(INSTALL\S*\)/ + || $line =~ /^\s*(\@.*\@)*\s*(-?rm.*) \S*$/) + { + $line =~ s/^(.*) ([^\s]+)\s*$/$1 \$(DESTDIR)$2/ if ($line !~ /\$\(DESTDIR\)/); + } + + if ($line ne $_[0]) { + $_[0] = quotemeta $_[0]; + substituteLine($_[0], $line); + } +} + +#--------------------------------------------------------------------------- +# libtool is very hard to persuade it could use -Wl,--no-undefined for making +# -no-undefined actually work +# append $(KDE_NO_UNFINED) after every -no-undefined in LDFLAGS +# this may go away if libtool ever does this on its own +sub tag_NO_UNDEFINED () { + return if ($program !~ /_la$/); + + my $lookup = quotemeta($realname{$program}) . ":.*?\n\t.*?\\((.*?)\\) .*\n"; + $MakefileData =~ m/$lookup/; + return if (!defined($1)); + return if ($1 !~ /CXXLINK/); + + if ($MakefileData !~ /\n$program\_LDFLAGS\s*=.*-no-undefined/ ) { + return; + } + + $lookup = $program . '\_LDFLAGS(\s*)=(.*)-no-undefined(.*)'; + if ($MakefileData =~ /\n$lookup\n/) { + my $replace = $program . "\_LDFLAGS$1=$2-no-undefined \$(KDE_NO_UNDEFINED)$3"; + substituteLine($lookup, $replace); + } +} + +sub tag_CLOSURE () { + return if ($program !~ /_la$/); + + my $lookup = quotemeta($realname{$program}) . ":.*?\n\t.*?\\((.*?)\\) .*\n"; + $MakefileData =~ m/$lookup/; + return if (!defined($1)); + return if ($1 !~ /CXXLINK/); + + if ($MakefileData !~ /\n$program\_LDFLAGS\s*=.*-no-undefined/ && + $MakefileData !~ /\n$program\_LDFLAGS\s*=.*KDE_PLUGIN/ ) { + print STDERR "Report: $program contains undefined in $printname\n" if ($program =~ /^lib/ && $dryrun); + return; + } + + my $closure = $realname{$program} . ".closure"; + my $lines = "$closure: \$($program\_OBJECTS) \$($program\_DEPENDENCIES)\n"; + $lines .= "\t\@echo \"int main() {return 0;}\" > $program\_closure.$cxxsuffix\n"; + $lines .= "\t\@\$\(LTCXXCOMPILE\) -c $program\_closure.$cxxsuffix\n"; + $lines .= "\t\$\(CXXLINK\) $program\_closure.lo \$($program\_LDFLAGS) \$($program\_OBJECTS) \$($program\_LIBADD) \$(LIBS)\n"; + $lines .= "\t\@rm -f $program\_closure.* $closure\n"; + $lines .= "\t\@echo \"timestamp\" > $closure\n"; + $lines .= "\n"; + appendLines($lines); + $lookup = $realname{$program} . ": (.*)"; + if ($MakefileData =~ /\n$lookup\n/) { + $lines = "\@KDE_USE_CLOSURE_TRUE@". $realname{$program} . ": $closure $1"; + $lines .= "\n\@KDE_USE_CLOSURE_FALSE@" . $realname{$program} . ": $1"; + substituteLine($lookup, $lines); + } + $closure_output .= " $closure"; +} + +sub tag_NMCHECK () { + return if ($program !~ /_la$/); + my $lookup = quotemeta($realname{$program}) . ":.*?\n\t.*?\\((.*?)\\) .*\n"; + $MakefileData =~ m/$lookup/; + my $linkcmd = $1; + return if (!defined($1)); + return if ($linkcmd !~ /CXXLINK/ && $linkcmd !~ /LINK/); + + $lookup = $program . '_NMCHECK\s*=([^\n]*)'; + if( $MakefileData !~ m/\n$lookup\n/ ) { + return; + } + my $allowed = $1; + $allowed =~ s/^ *//; + $lookup = $program . '_NMCHECKWEAK\s*=([^\n]*)'; + my $weak = ""; + my $is_weak = 0; + if( $MakefileData =~ m/\n$lookup\n/ ) { + $weak = $1; + $is_weak = 1; + } + $weak =~ s/^ *//; + + if( $is_weak ) + { + $weak = '--allowweak=\'' . $weak . '\' '; + } + my $nmline = "\@KDE_USE_NMCHECK_TRUE@\t\@\$(MAKE) \$(AM_MAKEFLAGS) nmcheck_$realname{$program} || ( rm -f $realname{$program}; exit 1 )"; + $lookup = '(\t\$\(CXXLINK\)[^\n]*' . $program . '_OBJECTS[^\n]*)'; + if( $MakefileData =~ /\n$lookup\n/ ) { + my $oldstuff = $1; + substituteLine( $lookup, $oldstuff . "\n" . $nmline ); + } + $lookup = '(\t\$\(LINK\)[^\n]*' . $program . '_OBJECTS[^\n]*)'; + if( $MakefileData =~ /\n$lookup\n/ ) { + my $oldstuff = $1; + substituteLine( $lookup, $oldstuff . "\n" . $nmline ); + } + $nmline = "\@\$(top_srcdir)/admin/nmcheck $realname{$program} \'$allowed\' $weak"; + appendLines( "\nnmcheck_$realname{$program}: $realname{$program} \n\t$nmline\n" ); + $target_adds{ "nmcheck" } .= "nmcheck_$realname{$program} "; +} + +sub tag_DIST () { + my %foundfiles = (); + opendir (THISDIR, "."); + foreach $entry (readdir(THISDIR)) { + next if ($entry eq "CVS" || $entry =~ /^\./ || $entry eq "Makefile" || $entry =~ /~$/ || $entry =~ /^\#.*\#$/); + next if (! -f $entry); + next if ($entry =~ /\.moc/ || $entry =~ /\.moc.$cppExt$/ || $entry =~ /\.lo$/ || $entry =~ /\.la$/ || $entry =~ /\.o/); + next if ($entry =~ /\.all_$cppExt\.$cppExt$/); + $foundfiles{$entry} = 1; + } + closedir (THISDIR); + + # doing this for MAINTAINERCLEANFILES would be wrong + my @marks = ("EXTRA_DIST", "DIST_COMMON", '\S*_SOURCES', '\S*_HEADERS', 'CLEANFILES', 'DISTCLEANFILES', '\S*_OBJECTS'); + foreach $mark (@marks) { + while ($MakefileData =~ /\n($mark)\s*=[ \t]*([^\n]*)/g) { + my $cleanfiles_str = $2; + foreach $file (split('[\034\s]+', $cleanfiles_str)) { + $file =~ s/\.\///; + $foundfiles{$file} = 0 if (defined $foundfiles{$file}); + } + } + } + my @files = ("Makefile", "config.cache", "config.log", "stamp-h", + "stamp-h1", "stamp-h1", "config.h", "Makefile", + "config.status", "config.h", "libtool", "core" ); + foreach $file (@files) { + $foundfiles{$file} = 0 if (defined $foundfiles{$file}); + } + + my $KDE_DIST = ""; + foreach $file (keys %foundfiles) { + if ($foundfiles{$file} == 1) { + $KDE_DIST .= "$file "; + } + } + if ($KDE_DIST) { + print "KDE_DIST $printname $KDE_DIST\n" if ($verbose); + + my $lookup = 'DISTFILES\s*=[ \t]*(.*)'; + if ($MakefileData =~ /\n$lookup/) { + substituteLine($lookup, "DISTFILES = $1 \$(KDE_DIST)"); + appendLines("KDE_DIST=$KDE_DIST\n"); + } + } +} + +#----------------------------------------------------------------------------- +# Returns 0 if the line was processed - 1 otherwise. +# Errors are logged in the global $errorflags +sub tag_DOCFILES () +{ + $target_adds{"all"} .= "docs-am "; + + my $lookup = 'KDE_DOCS\s*=[ \t]*([^\n]*)'; + goto nodocs if ($MakefileData !~ /\n$lookup/); + print STDOUT "KDE_DOCS processing <$1>\n" if ($verbose); + + my $tmp = $1; + + # Either find the files in the directory (AUTO) or use + # only the specified po files. + my $files = ""; + my $appname = $tmp; + $appname =~ s/^(\S*)\s*.*$/$1/; + if ($appname =~ /AUTO/) { + $appname = basename($makefileDir); + if ("$appname" eq "en") { + print STDERR "Error: KDE_DOCS = AUTO relies on the directory name. Yours is 'en' - you most likely want something else, e.g. KDE_DOCS = myapp\n"; + exit(1); + } + } + + if ($tmp !~ / - /) + { + opendir (THISDIR, "."); + foreach $entry (readdir(THISDIR)) { + next if ($entry eq "CVS" || $entry =~ /^\./ || $entry =~ /^Makefile/ || $entry =~ /~$/ || $entry =~ /^\#.*\#$/ || $entry eq "core" || $entry eq "index.cache.bz2"); + next if (! -f $entry); + $files .= "$entry "; + } + closedir (THISDIR); + print STDOUT "docfiles found = $files\n" if ($verbose); + } + else + { + $tmp =~ s/\034/ /g; + $tmp =~ s/^\S*\s*-\s*//; + $files = $tmp; + } + goto nodocs if (!$files); # Nothing to do + + if ($files =~ /(^| )index\.docbook($| )/) { + + my $lines = ""; + my $lookup = 'MEINPROC\s*='; + if ($MakefileData !~ /\n($lookup)/) { + $lines = "MEINPROC=/\$(kde_bindir)/meinproc\n"; + } + $lookup = 'KDE_XSL_STYLESHEET\s*='; + if ($MakefileData !~ /\n($lookup)/) { + $lines .= "KDE_XSL_STYLESHEET=/\$(kde_datadir)/ksgmltools2/customization/kde-chunk.xsl\n"; + } + $lookup = '\nindex.cache.bz2:'; + if ($MakefileData !~ /\n($lookup)/) { + $lines .= "index.cache.bz2: \$(srcdir)/index.docbook \$(KDE_XSL_STYLESHEET) $files\n"; + $lines .= "\t\@if test -n \"\$(MEINPROC)\"; then echo \$(MEINPROC) --check --cache index.cache.bz2 \$(srcdir)/index.docbook; \$(MEINPROC) --check --cache index.cache.bz2 \$(srcdir)/index.docbook; fi\n"; + $lines .= "\n"; + } + + $lines .= "docs-am: index.cache.bz2\n"; + $lines .= "\n"; + $lines .= "install-docs: docs-am install-nls\n"; + $lines .= "\t\$(mkinstalldirs) \$(DESTDIR)\$(kde_htmldir)/$kdelang/$appname\n"; + $lines .= "\t\@if test -f index.cache.bz2; then \\\n"; + $lines .= "\techo \$(INSTALL_DATA) index.cache.bz2 \$(DESTDIR)\$(kde_htmldir)/$kdelang/$appname/; \\\n"; + $lines .= "\t\$(INSTALL_DATA) index.cache.bz2 \$(DESTDIR)\$(kde_htmldir)/$kdelang/$appname/; \\\n"; + $lines .= "\telif test -f \$(srcdir)/index.cache.bz2; then \\\n"; + $lines .= "\techo \$(INSTALL_DATA) \$(srcdir)/index.cache.bz2 \$(DESTDIR)\$(kde_htmldir)/$kdelang/$appname/; \\\n"; + $lines .= "\t\$(INSTALL_DATA) \$(srcdir)/index.cache.bz2 \$(DESTDIR)\$(kde_htmldir)/$kdelang/$appname/; \\\n"; + $lines .= "\tfi\n"; + $lines .= "\t-rm -f \$(DESTDIR)\$(kde_htmldir)/$kdelang/$appname/common\n"; + $lines .= "\t\$(LN_S) \$(kde_libs_htmldir)/$kdelang/common \$(DESTDIR)\$(kde_htmldir)/$kdelang/$appname/common\n"; + + $lines .= "\n"; + $lines .= "uninstall-docs:\n"; + $lines .= "\t-rm -rf \$(DESTDIR)\$(kde_htmldir)/$kdelang/$appname\n"; + $lines .= "\n"; + $lines .= "clean-docs:\n"; + $lines .= "\t-rm -f index.cache.bz2\n"; + $lines .= "\n"; + $target_adds{"install-data-am"} .= "install-docs "; + $target_adds{"uninstall"} .= "uninstall-docs "; + $target_adds{"clean-am"} .= "clean-docs "; + appendLines ($lines); + } else { + appendLines("docs-am: $files\n"); + } + + $target_adds{"install-data-am"} .= "install-nls "; + $target_adds{"uninstall"} .= "uninstall-nls "; + + $tmp = "install-nls:\n"; + $tmp .= "\t\$(mkinstalldirs) \$(DESTDIR)\$(kde_htmldir)/$kdelang/$appname\n"; + $tmp .= "\t\@for base in $files; do \\\n"; + $tmp .= "\t echo \$(INSTALL_DATA) \$\$base \$(DESTDIR)\$(kde_htmldir)/$kdelang/$appname/\$\$base ;\\\n"; + $tmp .= "\t \$(INSTALL_DATA) \$(srcdir)/\$\$base \$(DESTDIR)\$(kde_htmldir)/$kdelang/$appname/\$\$base ;\\\n"; + $tmp .= "\tdone\n"; + if ($appname eq 'common') { + $tmp .= "\t\@echo \"merging common and language specific dir\" ;\\\n"; + $tmp .= "\tif test ! -f \$(kde_htmldir)/en/common/kde-common.css; then echo 'no english docs found in \$(kde_htmldir)/en/common/'; exit 1; fi \n"; + $tmp .= "\t\@com_files=`cd \$(kde_htmldir)/en/common && echo *` ;\\\n"; + $tmp .= "\tcd \$(DESTDIR)\$(kde_htmldir)/$kdelang/common ;\\\n"; + $tmp .= "\tif test -n \"\$\$com_files\"; then for p in \$\$com_files ; do \\\n"; + $tmp .= "\t case \" $files \" in \\\n"; + $tmp .= "\t *\" \$\$p \"*) ;; \\\n"; + $tmp .= "\t *) test ! -f \$\$p && echo \$(LN_S) ../../en/common/\$\$p \$(DESTDIR)\$(kde_htmldir)/$kdelang/common/\$\$p && \$(LN_S) ../../en/common/\$\$p \$\$p ;; \\\n"; + $tmp .= "\t esac ; \\\n"; + $tmp .= "\tdone ; fi ; true\n"; + } + $tmp .= "\n"; + $tmp .= "uninstall-nls:\n"; + $tmp .= "\tfor base in $files; do \\\n"; + $tmp .= "\t rm -f \$(DESTDIR)\$(kde_htmldir)/$kdelang/$appname/\$\$base ;\\\n"; + $tmp .= "\tdone\n\n"; + appendLines ($tmp); + + $target_adds{"distdir"} .= "distdir-nls "; + + $tmp = "distdir-nls:\n"; + $tmp .= "\tfor file in $files; do \\\n"; + $tmp .= "\t cp \$(srcdir)/\$\$file \$(distdir); \\\n"; + $tmp .= "\tdone\n"; + + appendLines ($tmp); + + return 0; + + nodocs: + appendLines("docs-am:\n"); + return 1; +} + +#----------------------------------------------------------------------------- +# Find headers in any of the source directories specified previously, that +# are candidates for "moc-ing". +sub findMocCandidates () +{ + foreach $dir (@headerdirs) + { + my @list = (); + opendir (SRCDIR, "$dir"); + @hFiles = grep { /.+\.$hExt$/o && !/^\./ } readdir(SRCDIR); + closedir SRCDIR; + foreach $hf (@hFiles) + { + next if ($hf =~ /^\.\#/); + $hf =~ /(.*)\.[^\.]*$/; # Find name minus extension + next if ($uiFiles{$1}); + open (HFIN, "$dir/$hf") || die "Could not open $dir/$hf: $!\n"; + my $hfsize = 0; + seek(HFIN, 0, 2); + $hfsize = tell(HFIN); + seek(HFIN, 0, 0); + read HFIN, $hfData, $hfsize; + close HFIN; + # push (@list, $hf) if(index($hfData, "Q_OBJECT") >= 0); ### fast but doesn't handle //Q_OBJECT + # handle " { friend class blah; Q_OBJECT ", but don't match antlarr_Q_OBJECT (\b). + if ( $hfData =~ /{([^}]*)\bQ_OBJECT/s ) { + push (@list, $hf) unless $1 =~ m://[^\n]*Q_OBJECT[^\n]*$:s; ## reject "// Q_OBJECT" + } + } + # The assoc array of root of headerfile and header filename + foreach $hFile (@list) + { + $hFile =~ /(.*)\.[^\.]*$/; # Find name minus extension + if ($mocFiles{$1}) + { + print STDERR "Warning: Multiple header files found for $1\n"; + next; # Use the first one + } + $mocFiles{$1} = "$dir\035$hFile"; # Add relative dir + } + } + + return 0; +} + +#----------------------------------------------------------------------------- + +# The programmer has specified a moc list. Prune out the moc candidates +# list that we found based on looking at the header files. This generates +# a warning if the programmer gets the list wrong, but this doesn't have +# to be fatal here. +sub pruneMocCandidates ($) +{ + my %prunedMoc = (); + local @mocList = split(' ', $_[0]); + + foreach $mocname (@mocList) + { + $mocname =~ s/\.moc$//; + if ($mocFiles{$mocname}) + { + $prunedMoc{$mocname} = $mocFiles{$mocname}; + } + else + { + my $print = $makefileDir; + $print =~ s/^\Q$topdir\E\\//; + # They specified a moc file but we can't find a header that + # will generate this moc file. That's possible fatal! + print STDERR "Warning: No moc-able header file for $print/$mocname\n"; + } + } + + undef %mocFiles; + %mocFiles = %prunedMoc; +} + +#----------------------------------------------------------------------------- + +# Finds the cpp files (If they exist). +# The cpp files get appended to the header file separated by \035 +sub checkMocCandidates () +{ + my @cppFiles; + my $cpp2moc; # which c++ file includes which .moc files + my $moc2cpp; # which moc file is included by which c++ files + + return unless (keys %mocFiles); + opendir(THISDIR, ".") || return; + @cppFiles = grep { /.+\.$cppExt$/o && !/.+\.moc\.$cppExt$/o + && !/.+\.all_$cppExt\.$cppExt$/o + && !/^\./ } readdir(THISDIR); + closedir THISDIR; + return unless (@cppFiles); + my $files = join (" ", @cppFiles); + $cpp2moc = {}; + $moc2cpp = {}; + foreach $cxxf (@cppFiles) + { + open (CXXFIN, $cxxf) || die "Could not open $cxxf: $!\n"; + seek(CXXFIN, 0, 2); + my $cxxfsize = tell(CXXFIN); + seek(CXXFIN, 0, 0); + read CXXFIN, $cxxfData, $cxxfsize; + close CXXFIN; + while(($cxxfData =~ m/^[ \t]*\#include\s*[<\"](.*\.moc)[>\"]/gm)) { + $cpp2moc->{$cxxf}->{$1} = 1; + $moc2cpp->{$1}->{$cxxf} = 1; + } + } + foreach my $mocFile (keys (%mocFiles)) + { + @cppFiles = keys %{$moc2cpp->{"$mocFile.moc"}}; + if (@cppFiles == 1) { + $mocFiles{$mocFile} .= "\035" . $cppFiles[0]; + push(@depend, $mocFile); + } elsif (@cppFiles == 0) { + push (@newObs, $mocFile); # Produce new object file + next if ($haveAutomocTag); # This is expected... + # But this is an error we can deal with - let them know + print STDERR + "Warning: No c++ file that includes $mocFile.moc\n"; + } else { + # We can't decide which file to use, so it's fatal. Although as a + # guess we could use the mocFile.cpp file if it's in the list??? + print STDERR + "Error: Multiple c++ files that include $mocFile.moc\n"; + print STDERR "\t",join ("\t", @cppFiles),"\n"; + $errorflag = 1; + delete $mocFiles{$mocFile}; + # Let's continue and see what happens - They have been told! + } + } +} + +#----------------------------------------------------------------------------- + +# Add the rules for generating moc source from header files +# For Automoc output *.moc.cpp but normally we'll output *.moc +# (We must compile *.moc.cpp separately. *.moc files are included +# in the appropriate *.cpp file by the programmer) +sub addMocRules () +{ + my $cppFile; + my $hFile; + + foreach $mocFile (keys (%mocFiles)) + { + undef $cppFile; + ($dir, $hFile, $cppFile) = split ("\035", $mocFiles{$mocFile}, 3); + $dir =~ s#^\.#\$(srcdir)#; + if (defined ($cppFile)) + { + $cppFile =~ s,\.[^.]*$,,; + $target_adds{"$cppFile.o"} .= "$mocFile.moc "; + $target_adds{"$cppFile.lo"} .= "$mocFile.moc "; + appendLines ("$mocFile.moc: $dir/$hFile\n\t\$(MOC) $dir/$hFile -o $mocFile.moc\n"); + $cleanMoc .= " $mocFile.moc"; + appendLines ("mocs: $mocFile.moc\n"); + } + else + { + appendLines ("$mocFile$mocExt: $dir/$hFile\n\t\$(MOC) $dir/$hFile -o $mocFile$mocExt\n"); + $cleanMoc .= " $mocFile$mocExt"; + appendLines ("mocs: $mocFile$mocExt\n"); + } + } +} + +sub make_bcheck_target() +{ + my $lookup = 'RECURSIVE_TARGETS\s*=[ \t]*(.*)'; + my $bcheckdep = "bcheck-am"; + $bcheckdep = "bcheck-recursive" if ($MakefileData =~ /\n$lookup/); + + my $headers= ""; + $headers = $1 if($MakefileData =~ /\nHEADERS\s*=[ \t]*(.+)/); + $headers =~ s/\$\((?:noinst|EXTRA)_HEADERS\)//g; + + $target_adds{"clean-am"} .= "clean-bcheck "; + + my $t = "clean-bcheck: \n" . + "\trm -f *.bchecktest.cc *.bchecktest.cc.class a.out\n\n" . + "bcheck: $bcheckdep\n\n" . + "bcheck-am:\n" . + "\t\@for i in $headers; do \\\n" . + "\t if test \$(srcdir)/\$\$i -nt \$\$i.bchecktest.cc; then \\\n" . + "\t echo \"int main() {return 0;}\" > \$\$i.bchecktest.cc ; \\\n" . + "\t echo \"#include \\\"\$\$i\\\"\" >> \$\$i.bchecktest.cc ; \\\n" . + "\t echo \"\$\$i\"; \\\n" . + "\t if ! "; + $t .= $cxxsuffix eq "KKK" ? + "\$(CXX) \$(DEFS) -I. -I\$(srcdir) -I\$(top_builddir) \$(INCLUDES) \$(AM_CPPFLAGS) \$(CPPFLAGS) \$(CXXFLAGS) \$(KDE_CXXFLAGS) " : + "\$(CXXCOMPILE) "; + $t .= " --dump-class-hierarchy -c \$\$i.bchecktest.cc; then \\\n" . + "\t rm -f \$\$i.bchecktest.cc; exit 1; \\\n" . + "\t fi ; \\\n" . + "\t echo \"\" >> \$\$i.bchecktest.cc.class; \\\n" . + "\t perl \$(top_srcdir)/admin/bcheck.pl \$\$i.bchecktest.cc.class || { rm -f \$\$i.bchecktest.cc; exit 1; }; \\\n" . + "\t rm -f a.out; \\\n" . + "\t fi ; \\\n" . + "\tdone\n"; + appendLines("$t\n"); +} + +sub make_meta_classes () +{ + return if ($kdeopts{"qtonly"}); + + my $cppFile; + my $hFile; + my $moc_class_headers = ""; + foreach $program (@programs) { + my $mocs = ""; + my @progsources = split(/[\034\s]+/, $sources{$program}); + my @depmocs = split(' ', $dependmocs{$program}); + my %shash = (), %mhash = (); + @shash{@progsources} = 1; # we are only interested in the existence + @mhash{@depmocs} = 1; + + print STDOUT "program=$program\n" if ($verbose); + print STDOUT "psources=[".join(' ', keys %shash)."]\n" if ($verbose); + print STDOUT "depmocs=[".join(' ', keys %mhash)."]\n" if ($verbose); + print STDOUT "globalmocs=[".join(' ', keys(%globalmocs))."]\n" if ($verbose); + foreach my $mocFile (keys (%globalmocs)) + { + my ($dir, $hFile, $cppFile) = split ("\035", $globalmocs{$mocFile}, 3); + if (defined ($cppFile)) + { + $mocs .= " $mocFile.moc" if exists $shash{$cppFile}; + } + else + { + # Bah. This is the case, if no C++ file includes the .moc + # file. We make a .moc.cpp file for that. Unfortunately this + # is not included in the %sources hash, but rather is mentioned + # in %dependmocs. If the user wants to use AUTO he can't just + # use an unspecific METAINCLUDES. Instead he must use + # program_METAINCLUDES. Anyway, it's not working real nicely. + # E.g. Its not clear what happens if user specifies two + # METAINCLUDES=AUTO in the same Makefile.am. + $mocs .= " $mocFile.moc.$cxxsuffix" + if exists $mhash{$mocFile.".moc.$cxxsuffix"}; + } + } + if ($mocs) { + print STDOUT "==> mocs=[".$mocs."]\n" if ($verbose); + } + print STDOUT "\n" if $verbose; + } + if ($moc_class_headers) { + appendLines ("$cleantarget-moc-classes:\n\t-rm -f $moc_class_headers\n"); + $target_adds{"$cleantarget-am"} .= "$cleantarget-moc-classes "; + } +} + +#----------------------------------------------------------------------------- + +sub updateMakefile () +{ + return if ($dryrun); + + open (FILEOUT, "> $makefile") + || die "Could not create $makefile: $!\n"; + + $MakefileData =~ s/\034/\\\n/g; # Restore continuation lines + # Append our $progId line, _below_ the "generated by automake" line + # because automake-1.6 relies on the first line to be his own. + my $progIdLine = "\# $progId - " . '$Revision: 483858 $ '."\n"; + if ( !( $MakefileData =~ s/^(.*generated .*by automake.*\n)/$1$progIdLine/ ) ) { + warn "automake line not found in $makefile\n"; + # Fallback: first line + print FILEOUT $progIdLine; + }; + print FILEOUT $MakefileData; + close FILEOUT; +} + +#----------------------------------------------------------------------------- + +# The given line needs to be removed from the makefile +# Do this by adding the special "removed line" comment at the line start. +sub removeLine ($$) +{ + my ($lookup, $old) = @_; + + $old =~ s/\034/\\\n#>- /g; # Fix continuation lines + $MakefileData =~ s/\n$lookup/\n#>\- $old/; +} + +#----------------------------------------------------------------------------- + +# Replaces the old line with the new line +# old line(s) are retained but tagged as removed. The new line(s) have the +# "added" tag placed before it. +sub substituteLine ($$) +{ + my ($lookup, $new) = @_; + + if ($MakefileData =~ /\n($lookup)/) { + $old = $1; + $old =~ s/\034/\\\n#>\- /g; # Fix continuation lines + my $newCount = ($new =~ tr/\034//) + ($new =~ tr/\n//) + 1; + $new =~ s/\\\n/\034/g; + $MakefileData =~ s/\n$lookup/\n#>- $old\n#>\+ $newCount\n$new/; + } else { + warn "Warning: substitution of \"$lookup\" in $printname failed\n"; + } +} + +#----------------------------------------------------------------------------- + +# Slap new lines on the back of the file. +sub appendLines ($) +{ + my ($new) = @_; + my $copynew = $new; + my $newCount = ($new =~ tr/\034//) + ($new =~ tr/\n//) + 1; + $new =~ s/\\\n/\034/g; # Fix continuation lines + $MakefileData .= "\n#>\+ $newCount\n$new"; +} + +#----------------------------------------------------------------------------- + +# Restore the Makefile.in to the state it was before we fiddled with it +sub restoreMakefile () +{ + $MakefileData =~ s/# $progId[^\n\034]*[\n\034]*//g; + # Restore removed lines + $MakefileData =~ s/([\n\034])#>\- /$1/g; + # Remove added lines + while ($MakefileData =~ /[\n\034]#>\+ ([^\n\034]*)/) + { + my $newCount = $1; + my $removeLines = ""; + while ($newCount--) { + $removeLines .= "[^\n\034]*([\n\034]|)"; + } + $MakefileData =~ s/[\n\034]#>\+.*[\n\034]$removeLines/\n/; + } +} + +#----------------------------------------------------------------------------- + +# find the .kcfg file listed in the .kcfgc file +sub findKcfgFile($) +{ + my ($kcfgf) = @_; + open (KCFGFIN, $kcfgf) || die "Could not open $kcfgf: $!\n"; + seek(KCFGFIN, 0, 2); + my $kcfgfsize = tell(KCFGFIN); + seek(KCFGFIN, 0, 0); + read KCFGFIN, $kcfgfData, $kcfgfsize; + close KCFGFIN; + if(($kcfgfData =~ m/^File=(.*\.kcfg)/gm)) { + $kcfg = $1; + } +} diff --git a/libs/taglib/admin/bcheck.pl b/libs/taglib/admin/bcheck.pl new file mode 100644 index 0000000000..cca973efd5 --- /dev/null +++ b/libs/taglib/admin/bcheck.pl @@ -0,0 +1,157 @@ +#!/usr/bin/perl -w + +use DB_File; +use Fcntl ':flock'; + +if (!defined($ARGV[0])) { + print "usage: requires .class dump as parameter!\n"; + exit; +} + +sub bailout +{ + untie %bcheckdb if(defined(%bcheckdb)); + + if(defined(MYLOCK)) { + flock MYLOCK, LOCK_UN; + close(MYLOCK); + } + + print @_; + exit 5; +} + +sub ask_user +{ + my ($dbkey, $dbchunk) = @_; + + if (defined($ENV{"BCHECK_UPDATE"})) { + $bcheckdb{$dbkey} = $dbchunk; + return; + } + + &bailout("BC problem detected") if (! -t STDIN); + + print "(I)gnore / (Q)uit / (U)pdate: "; + + my $key; + while(defined(read STDIN, $key, 1)) { + $key = lc($key); + + print "got: >$key<\n"; + + return if ($key eq 'i'); + + &bailout("BC problem. aborted") if ($key eq 'q'); + + if ($key eq 'u') { + $bcheckdb{$dbkey} = $dbchunk; + return; + } + print "\n(I)gnore / (Q)uit / (U)pdate: "; + } +} + +sub diff_chunk($$) +{ + my ($oldl, $newl) = @_; + my @old = split /^/m, $oldl; + my @new = split /^/m, $newl; + my $haschanges = 0; + my $max = $#old > $#new ? $#old : $#new; + + die "whoops. key different" if ($old[0] ne $new[0]); + + if ($#old != $#new) { + warn ("Structural difference.\n"); + print @old; + print "-----------------------------------------------\n"; + print @new; + $haschanges = 1; + return $haschanges; + } + + print $old[0]; + + my ($class) = ($old[0] =~ /^(?:Class |Vtable for )(\S+)/); + + my $c = 1; + while ($c < $max) { + my ($o, $n) = ($old[$c], $new[$c]); + chomp $o; + chomp $n; + $c++; + next if ($o eq $n); + + if(defined($class) and $n =~ /^(\d+\s+)\w+(::\S+\s*.*)$/) { + next if ($n eq "$1$class$2"); + } + + $haschanges = 1; + + print "-$o\n+$n\n\n"; + } + + return $haschanges; +} + +local $dblock = $ENV{"HOME"} . "/bcheck.lock"; +my $dbfile = $ENV{"HOME"} . "/bcheck.db"; +my $cdump = $ARGV[0]; + +die "file $cdump is not readable: $!" if (! -f $cdump); + +# make sure the advisory lock exists +open(MYLOCK, ">$dblock"); +print MYLOCK ""; + +flock MYLOCK, LOCK_EX; + +tie %bcheckdb, 'DB_File', $dbfile; + +my $chunk = ""; + +open (IN, "<$cdump") or die "cannot open $cdump: $!"; +while () { + + chop; + + s/0x[0-9a-fA-F]+/0x......../g; + s/base size=/size=/g; + s/\(\)\s*$//g; + s/base align=/align=/g; + + $chunk .= $_ . "\n"; + + if(/^\s*$/) { + my @lines = split /^/m, $chunk; + my $key = $lines[0]; + chomp $key; + + if($key !~ // && + $key !~ //) { + if(defined($bcheckdb{$key})) { + my $dbversion = $bcheckdb{$key}; + + if($dbversion ne $chunk) { + &ask_user($key, $chunk) if(&diff_chunk($dbversion, $chunk)); + } + } + else { + $bcheckdb{$key} = $chunk; + print "NEW: $key\n"; + } + } + + $chunk = ""; + next; + } + +} +close(IN); + +untie %bcheckdb; +flock MYLOCK, LOCK_UN; +close(MYLOCK); + +exit 0; diff --git a/libs/taglib/admin/compile b/libs/taglib/admin/compile new file mode 100755 index 0000000000..1b1d232169 --- /dev/null +++ b/libs/taglib/admin/compile @@ -0,0 +1,142 @@ +#! /bin/sh +# Wrapper for compilers which do not understand `-c -o'. + +scriptversion=2005-05-14.22 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 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, 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. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +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 $? + ;; +esac + +ofile= +cfile= +eat= + +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 -e 's|^.*/||' -e '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 + mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/libs/taglib/admin/conf.change.pl b/libs/taglib/admin/conf.change.pl new file mode 100644 index 0000000000..129d759288 --- /dev/null +++ b/libs/taglib/admin/conf.change.pl @@ -0,0 +1,191 @@ +#!/usr/bin/env perl + +# this script patches a config.status file, to use our own perl script +# in the main loop +# we do it this way to circumvent hacking (and thereby including) +# autoconf function (which are GPL) into our LGPL acinclude.m4.in +# written by Michael Matz +# adapted by Dirk Mueller +# +# This file is free software; you can redistribute it and/or +# modify it under the terms of the GNU Library General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. + +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. + +# You should have received a copy of the GNU Library General Public License +# along with this library; see the file COPYING.LIB. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +# we have to change two places +# 1. the splitting of the substitutions into chunks of 90 (or even 48 in +# later autoconf's +# 2. the big main loop which patches all Makefile.in's + +use strict; +use File::Basename; + +my $ac_aux_dir = dirname($0); +my ($flag); +my $ac_version = 0; +my $vpath_seen = 0; +$flag = 0; + +while (<>) { +# usage of $flag: 0 -- we have seen nothing yet +# 1 -- we are in (1) +# 2 -- we have ended (1) +# 3 -- we are in (2) +# 4 -- we ended (2) + + if ($flag == 4) { + print; + } elsif ($flag == 0) { +# 1. begins with (including): "ac_max_sed_\S+\s*=\s*[0-9]+..." +# ends with (excluding) "CONFIG_FILE=..." +# in later autoconf (2.14.1) there is no CONFIG_FILES= line, +# but instead the (2) directly follow (1) + if (/^\s*ac_max_sed_([a-z]+).*=\s*([0-9]+)/ ) { + $flag = 1; + if ($1 eq 'lines') { + # lets hope its different with 2141, + # wasn't able to verify that + if ($2 eq '48') { + $ac_version = 250; + } + else { + $ac_version = 2141; + } + } elsif ($1 eq 'cmds') { + $ac_version = 213; + } + # hmm, we don't know the autoconf version, but we try anyway + } else { + print; + } + } elsif ($flag == 1) { + if (/^\s*CONFIG_FILES=/ && ($ac_version != 250)) { + print; + $flag = 2; + } elsif (/^\s*for\s+ac_file\s+in\s+.*CONFIG_FILES/ ) { + $flag = 3; + } + } elsif ($flag == 2) { +# 2. begins with: "for ac_file in.*CONFIG_FILES" (the next 'for' after (1)) +# end with: "rm -f conftest.s\*" +# on autoconf 250, it ends with '# CONFIG_HEADER section' +# +# gg: if a post-processing commands section is found first, +# stop there and insert a new loop to honor the case/esac. +# (pattern: /^\s+#\sRun the commands associated with the file./) + + if (/^\s*for\s+ac_file\s+in\s+.*CONFIG_FILES/ ) { + $flag = 3; + } else { + print; + } + } elsif ($flag == 3) { + if (/^\s*rm\s+-f\s+conftest/ ) { + $flag = 4; + &insert_main_loop(); + } elsif (/^\s*rm\s+-f\s+.*ac_cs_root/ ) { + $flag = 4; + &insert_main_loop(); + #die "hhhhhhh"; + if ($ac_version != 2141) { + print STDERR "hmm, don't know autoconf version\n"; + } + } elsif (/^\#\s*CONFIG_(HEADER|COMMANDS) section.*|^\s+#\s(Run) the commands associated/) { + $flag = 4; + my $commands = defined $2; + &insert_main_loop(); + $commands && insert_command_loop(); + if($ac_version != 250) { + print STDERR "hmm, something went wrong :-(\n"; + } + } elsif (/VPATH/ ) { + $vpath_seen = 1; + } + } +} + +die "wrong input (flag != 4)" unless $flag == 4; +print STDERR "hmm, don't know autoconf version\n" unless $ac_version; + +sub insert_main_loop { + + if ($ac_version == 250) { + &insert_main_loop_250(); + } + else { + &insert_main_loop_213(); + } +} + +sub insert_main_loop_250 { + + print <>\$tmp/subs.sed +EOF + } + print <> \$tmp/subs.files + fi + done + if test -f \$tmp/subs.files ; then + perl $ac_aux_dir/config.pl "\$tmp/subs.sed" "\$tmp/subs.files" "\$srcdir" "\$INSTALL" + fi + rm -f \$tmp/subs.files + +fi +EOF + return; +} + +sub insert_main_loop_213 { + print <> \$ac_cs_root.subs +EOF + } + print <> \$ac_cs_root.sacfiles + fi +done +if test -f \$ac_cs_root.sacfiles ; then + perl $ac_aux_dir/config.pl "\$ac_cs_root.subs" "\$ac_cs_root.sacfiles" "\$ac_given_srcdir" "\$ac_given_INSTALL" +fi +rm -f \$ac_cs_root.s* + +EOF + return; +} + +sub insert_command_loop { + print <. +# 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, 2002, 2003, 2004, 2005 +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 + +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 + +# 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 ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerppc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + 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'` + exit ;; + 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 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + 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 ;; + 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:SunOS:5.*:*) + echo i386-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) + 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 && + 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 + 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 + 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:*:[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 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + 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 + 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 + + # 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 __LP64__ >/dev/null + 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:*:*) + 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 && 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 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 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 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-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-gnu`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 '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + 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; } + ;; + 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; } + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + 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 ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${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-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + 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 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit ;; + "") + # 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 ;; + 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 + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; 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.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + 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 ;; + 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 i386. + echo i386-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; } ;; + 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.0*:*) + 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 ;; + 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 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + *86) UNAME_PROCESSOR=i686 ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + 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 ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-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. + 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 ;; +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\n"); 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 && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# 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 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + 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/libs/taglib/admin/config.pl b/libs/taglib/admin/config.pl new file mode 100644 index 0000000000..c2b0517d38 --- /dev/null +++ b/libs/taglib/admin/config.pl @@ -0,0 +1,238 @@ +#!/usr/bin/env perl +# a script for use by autoconf to make the Makefiles +# from the Makefile.in's +# +# the original autoconf mechanism first splits all substitutions into groups +# of ca. 90, and than invokes sed for _every_ Makefile.in and every group +# (so around 2-3 times per Makefile.in). So this takes forever, as sed +# has to recompile the regexps every time. +# +# this script does better. It changes all Makefile.ins in one process. +# in kdelibs the time for building Makefile went down from 2:59 min to 13 sec! +# +# written by Michael Matz +# adapted by Dirk Mueller + +# This file is free software; you can redistribute it and/or +# modify it under the terms of the GNU Library General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. + +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. + +# You should have received a copy of the GNU Library General Public License +# along with this library; see the file COPYING.LIB. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +use strict; + +use File::Path; + +my $ac_subs=$ARGV[0]; +my $ac_sacfiles = $ARGV[1]; +my $ac_given_srcdir=$ARGV[2]; +my $ac_given_INSTALL=$ARGV[3]; + +my @comp_match; +my @comp_subs; + +#print "ac_subs=$ac_subs\n"; +#print "ac_sacfiles=$ac_sacfiles\n"; +#print "ac_given_srcdir=$ac_given_srcdir\n"; +#print "ac_given_INSTALL=$ac_given_INSTALL\n"; + +my $configure_input; +my ($srcdir, $top_srcdir); +my $INSTALL; +my $bad_perl = ($] < 5.005); +my $created_file_count = 0; + +open(CF, "< $ac_subs") || die "can't open $ac_subs: $!"; +my @subs = ; +my $pat; +close(CF); +chomp @subs; +@comp_match=(); +@comp_subs=(); + +if ($bad_perl) { + print "Using perl older than version 5.005\n"; + foreach $pat (@subs) { + if ( ($pat =~ m/s%([^%]*)%([^%]*)%g/ ) + || ($pat =~ m/s%([^%]*)%([^%]*)%;t/ ) + || ($pat =~ m/s,([^,]*),(.*),;t/) + || ($pat =~ m%s/([^/]*)/([^/]*)/g% ) + || ($pat =~ m%s/([^/]*)/([^/]*)/;t% ) + ) { + # form : s%bla%blubb%g + # or s%bla%blubb%;t t (autoconf > 2.13 and < 2.52 ?) + # or s,bla,blubb,;t t (autoconf 2.52) + my $srch = $1; + my $repl = $2; + $repl =~ s/\\(.)/$1/g; + push @comp_subs, make_closure($srch, $repl); + + } elsif ( ($pat =~ /%([^%]*)%d/ ) + || ($pat =~ m%/([^/]*)/d% ) + ) { + push @comp_subs, make_closure($1, ""); + } else { + die "Uhh. Malformed pattern in $ac_subs ($pat)" + unless ( $pat =~ /^\s*$/ ); # ignore white lines + } + } +} else { + foreach $pat (@subs) { + if ( ($pat =~ /s%([^%]*)%([^%]*)%g/ ) || + ($pat =~ /s%([^%]*)%([^%]*)%;t/ ) || + ($pat =~ /s,([^,]*),(.*),;t/) ) { + # form : s%bla%blubb%g + # or s%bla%blubb%;t t (autoconf > 2.13 and < 2.52 ?) + # or s,bla,blubb,;t t (autoconf 2.52) + my $srch = $1; + my $repl = $2; + push @comp_match, eval "qr/\Q$srch\E/"; # compile match pattern + $repl =~ s/\\(.)/$1/g; + push @comp_subs, $repl; + } elsif ( ($pat =~ /%([^%]*)%d/ ) + || ($pat =~ m%/([^/]*)/d% ) + ) { + push @comp_match, eval "qr/\Q$1\E/"; + push @comp_subs, ""; + } else { + die "Uhh. Malformed pattern in $ac_subs ($pat)" + unless ( $pat =~ /^\s*$/ ); # ignore white lines + } + } +} +undef @subs; + +# read the list of files to be patched, form: +# ./Makefile arts/Makefile arts/examples/Makefile arts/flow/Makefile + +open(CF, "< $ac_sacfiles") || die "can't open $ac_sacfiles: $!"; +my @ac_files = ; +close(CF); +chomp @ac_files; + + +my $ac_file; +foreach $ac_file (@ac_files) { + next if $ac_file =~ /\.\./; + next if $ac_file =~ /^\s*$/; + my $ac_file_in; + my ($ac_dir, $ac_dots, $ac_dir_suffix); + + if ($ac_file =~ /.*:.*/ ) { + ($ac_file_in = $ac_file) =~ s%[^:]*:%%; + $ac_file =~ s%:.*%%; + } else { + $ac_file_in = $ac_file.".in"; + } + +# Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + +# Remove last slash and all that follows it. Not all systems have dirname. + ($ac_dir = $ac_file) =~ s%/[^/][^/]*$%%; + if ( ($ac_dir ne $ac_file) && ($ac_dir ne ".")) { +# The file is in a subdirectory. + if (! -d "$ac_dir") { mkpath "$ac_dir", 0, 0777; } + ($ac_dir_suffix = $ac_dir) =~ s%^./%%; + $ac_dir_suffix="/".$ac_dir_suffix; +# A "../" for each directory in $ac_dir_suffix. + ($ac_dots = $ac_dir_suffix) =~ s%/[^/]*%../%g; + } else { + $ac_dir_suffix=""; + $ac_dots=""; + } + + if ($ac_given_srcdir eq ".") { + $srcdir="."; + if ($ac_dots) { + ( $top_srcdir = $ac_dots) =~ s%/$%%; + } else { $top_srcdir="."; } + } elsif ($ac_given_srcdir =~ m%^/%) { + $srcdir=$ac_given_srcdir.$ac_dir_suffix; + $top_srcdir = $ac_given_srcdir; + } else { + $srcdir = $ac_dots.$ac_given_srcdir.$ac_dir_suffix; + $top_srcdir = $ac_dots.$ac_given_srcdir; + } + + if ($ac_given_INSTALL) { + if ($ac_given_INSTALL =~ m%^/% ) { + $INSTALL = $ac_given_INSTALL; + } else { + $INSTALL = $ac_dots.$ac_given_INSTALL; + } + } + + print "fast creating $ac_file\n"; + unlink $ac_file; + my $ac_comsub=""; + my $fname=$ac_file_in; + $fname =~ s%.*/%%; + $configure_input="$ac_file. Generated from $fname by config.pl."; + + my $ac_file_inputs; + ($ac_file_inputs = $ac_file_in) =~ s%^%$ac_given_srcdir/%; + $ac_file_inputs =~ s%:% $ac_given_srcdir/%g; + + patch_file($ac_file, $ac_file_inputs); + ++$created_file_count; +} + +print "config.pl: fast created $created_file_count file(s).\n"; + +sub patch_file { + my ($outf, $infiles) = @_; + my $filedata; + my @infiles=split(' ', $infiles); + my $i=0; + my $name; + + foreach $name (@infiles) { + if (open(CF, "< $name")) { + while () { + $filedata .= $_; + } + close(CF); + } else { + print STDERR "can't open $name: $!"."\n"; + } + } + + $filedata =~ s%\@configure_input\@%$configure_input%g; + $filedata =~ s%\@srcdir\@%$srcdir%g; + $filedata =~ s%\@top_srcdir\@%$top_srcdir%g; + $filedata =~ s%\@INSTALL\@%$INSTALL%g; + + if ($bad_perl) { + while ($i <= $#comp_subs) { + my $ref = $comp_subs[$i]; + &$ref(\$filedata); + $i++; + } + } else { + while ($i <= $#comp_match) { + $filedata =~ s/$comp_match[$i]/$comp_subs[$i]/g; + $i++; + } + } + open(CF, "> $outf") || die "can't create $outf: $!"; + print CF $filedata; + close(CF); +} + +sub make_closure { + my ($pat, $sub) = @_; + my $ret = eval "return sub { my \$ref=shift; \$\$ref =~ s%\Q$pat\E%\Q$sub\E%g; }"; + if ($@) { + print "can't create CODE: $@\n"; + } + return $ret; +} diff --git a/libs/taglib/admin/config.sub b/libs/taglib/admin/config.sub new file mode 100755 index 0000000000..2ef284295d --- /dev/null +++ b/libs/taglib/admin/config.sub @@ -0,0 +1,1575 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +timestamp='2005-07-01' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# 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., 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. + + +# Please send patches to . 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, 2002, 2003, 2004, 2005 +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" + 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 + +# 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* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ + kfreebsd*-gnu* | knetbsd*-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 | -knuth | -cray) + 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] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | ms1 \ + | msp430 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m32c) + 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-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | 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-* | iq2000-* \ + | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | ms1-* \ + | msp430-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | 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-* | xscalee[bl]-* \ + | xstormy16-* | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + m32c-*) + ;; + # 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 + ;; + abacus) + basic_machine=abacus-unknown + ;; + 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 + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + 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 + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + 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 + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + 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 + ;; + 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 + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + 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 + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-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 + ;; + 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 + ;; + 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 + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + 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 + ;; + mmix) + basic_machine=mmix-knuth + ;; + 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 + ;; + 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* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ + | -ekkobsd* | -kfreebsd* | -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* | -linux-uclibc* | -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* | -dragonfly* | -skyos*) + # 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-dietlibc) + os=-linux-dietlibc + ;; + -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 + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -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 + ;; + -nsk*) + os=-nsk + ;; + # 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 + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -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 + ;; + *-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 + ;; + *-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 + ;; + -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 + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# 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/libs/taglib/admin/configure.in.bot.end b/libs/taglib/admin/configure.in.bot.end new file mode 100644 index 0000000000..1bc030b1eb --- /dev/null +++ b/libs/taglib/admin/configure.in.bot.end @@ -0,0 +1,45 @@ +# Check if KDE_SET_PREFIX was called, and --prefix was passed to configure +if test -n "$kde_libs_prefix" -a -n "$given_prefix"; then + # And if so, warn when they don't match + if test "$kde_libs_prefix" != "$given_prefix"; then + # And if kde doesn't know about the prefix yet + echo ":"`kde-config --path exe`":" | grep ":$given_prefix/bin/:" 2>&1 >/dev/null + if test $? -ne 0; then + echo "" + echo "Warning: you chose to install this package in $given_prefix," + echo "but KDE was found in $kde_libs_prefix." + echo "For this to work, you will need to tell KDE about the new prefix, by ensuring" + echo "that KDEDIRS contains it, e.g. export KDEDIRS=$given_prefix:$kde_libs_prefix" + echo "Then restart KDE." + echo "" + fi + fi +fi + +if test x$GXX = "xyes" -a x$kde_have_gcc_visibility = "xyes" -a x$kde_cv_val_qt_gcc_visibility_patched = "xno"; then + echo "" + echo "Your GCC supports symbol visibility, but the patch for Qt supporting visibility" + echo "was not included. Therefore, GCC symbol visibility support remains disabled." + echo "" + echo "For better performance, consider including the Qt visibility supporting patch" + echo "located at:" + echo "" + echo "http://bugs.kde.org/show_bug.cgi?id=109386" + echo "" + echo "and recompile all of Qt and KDE. Note, this is entirely optional and" + echo "everything will continue to work just fine without it." + echo "" +fi + +if test "$all_tests" = "bad"; then + if test ! "$cache_file" = "/dev/null"; then + echo "" + echo "Please remove the file $cache_file after changing your setup" + echo "so that configure will find the changes next time." + echo "" + fi +else + echo "" + echo "Good - your configure finished. Start make now" + echo "" +fi diff --git a/libs/taglib/admin/configure.in.min b/libs/taglib/admin/configure.in.min new file mode 100644 index 0000000000..0dfe378950 --- /dev/null +++ b/libs/taglib/admin/configure.in.min @@ -0,0 +1,57 @@ +dnl This file is part of the KDE libraries/packages +dnl Copyright (C) 2001 Stephan Kulow (coolo@kde.org) + +dnl This file is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Library General Public +dnl License as published by the Free Software Foundation; either +dnl version 2 of the License, or (at your option) any later version. + +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Library General Public License for more details. + +dnl You should have received a copy of the GNU Library General Public License +dnl along with this library; see the file COPYING.LIB. If not, write to +dnl the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +dnl Boston, MA 02110-1301, USA. + +# Original Author was Kalle@kde.org +# I lifted it in some mater. (Stephan Kulow) +# I used much code from Janos Farkas + +dnl Process this file with autoconf to produce a configure script. + +AC_INIT(acinclude.m4) dnl a source file from your sub dir + +dnl This is so we can use kde-common +AC_CONFIG_AUX_DIR(admin) + +dnl This ksh/zsh feature conflicts with `cd blah ; pwd` +unset CDPATH + +dnl Checking host/target/build systems, for make, install etc. +AC_CANONICAL_SYSTEM +dnl Perform program name transformation +AC_ARG_PROGRAM + +dnl Automake doc recommends to do this only here. (Janos) +AM_INIT_AUTOMAKE(@MODULENAME@, @VERSION@) dnl searches for some needed programs + +KDE_SET_PREFIX + +dnl generate the config header +AM_CONFIG_HEADER(config.h) dnl at the distribution this done + +dnl Checks for programs. +AC_CHECK_COMPILERS +AC_ENABLE_SHARED(yes) +AC_ENABLE_STATIC(no) +KDE_PROG_LIBTOOL + +dnl for NLS support. Call them in this order! +dnl WITH_NLS is for the po files +AM_KDE_WITH_NLS + +dnl KDE_USE_QT +AC_PATH_KDE diff --git a/libs/taglib/admin/cvs.sh b/libs/taglib/admin/cvs.sh new file mode 100644 index 0000000000..007f069f72 --- /dev/null +++ b/libs/taglib/admin/cvs.sh @@ -0,0 +1,661 @@ +#! /bin/sh +# +# cvs.sh +# +# This file contains support code from Makefile.common +# It defines a shell function for each known target +# and then does a case to call the correct function. + +unset MAKEFLAGS + +call_and_fix_autoconf() +{ + $AUTOCONF || exit 1 + if test -r configure.in.in ; then + perl -pi -e "print \"if test \\\"x\\\$with_fast_perl\\\" = \\\"xyes\\\"; then\ + \\n perl -i.bak \\\$ac_aux_dir/conf.change.pl \\\$CONFIG_STATUS\ + \\\\\\n || mv \\\$CONFIG_STATUS.bak \\\$CONFIG_STATUS\ + \\n rm -f \\\$CONFIG_STATUS.bak\\nfi\ + \\n\" if /^\\s*chmod\\s+.*\\+x\\s+.*CONFIG_STATUS/; s,^#line.*LINENO.*\$,/* \$& */, ;" configure + fi +} + +strip_makefile() +{ + if test ! -f $makefile_wo; then + perl -e '$in=0; while ( <> ) { $in = 1 if ($_ =~ m/^if / ); print $_ unless ($in || $_ =~ m/^include /); $in = 0 if ($_ =~ m/^endif/); }' < $makefile_am > $makefile_wo + fi +} + +check_autotool_versions() +{ +required_autoconf_version="2.53 or newer" +AUTOCONF_VERSION=`$AUTOCONF --version | head -n 1` +case $AUTOCONF_VERSION in + Autoconf*2.5* | autoconf*2.5* | autoconf*2.6* ) : ;; + "" ) + echo "*** AUTOCONF NOT FOUND!." + echo "*** KDE requires autoconf $required_autoconf_version" + exit 1 + ;; + * ) + echo "*** YOU'RE USING $AUTOCONF_VERSION." + echo "*** KDE requires autoconf $required_autoconf_version" + exit 1 + ;; +esac + +AUTOHEADER_VERSION=`$AUTOHEADER --version | head -n 1` +case $AUTOHEADER_VERSION in + Autoconf*2.5* | autoheader*2.5* | autoheader*2.6* ) : ;; + "" ) + echo "*** AUTOHEADER NOT FOUND!." + echo "*** KDE requires autoheader $required_autoconf_version" + exit 1 + ;; + * ) + echo "*** YOU'RE USING $AUTOHEADER_VERSION." + echo "*** KDE requires autoheader $required_autoconf_version" + exit 1 + ;; +esac + +AUTOMAKE_STRING=`$AUTOMAKE --version | head -n 1` +required_automake_version="1.6.1 or newer" +case $AUTOMAKE_STRING in + automake*1.5d* | automake*1.5* | automake*1.5-* ) + echo "*** YOU'RE USING $AUTOMAKE_STRING." + echo "*** KDE requires automake $required_automake_version" + exit 1 + ;; + automake*1.6.* | automake*1.7* | automake*1.8* | automake*1.9* | automake*1.10*) + echo "*** $AUTOMAKE_STRING found." + UNSERMAKE=no + ;; + "" ) + echo "*** AUTOMAKE NOT FOUND!." + echo "*** KDE requires automake $required_automake_version" + exit 1 + ;; + *unsermake* ) : + echo "*** YOU'RE USING UNSERMAKE." + echo "*** GOOD LUCK!! :)" + UNSERMAKE=unsermake + ;; + * ) + echo "*** YOU'RE USING $AUTOMAKE_STRING." + echo "*** KDE requires automake $required_automake_version" + exit 1 + ;; +esac +unset required_automake_version +} + +cvs() +{ +check_autotool_versions +acinclude_m4 + +### Make new subdirs and configure.in. +### The make calls could be optimized away here, +### with a little thought. +if test -r configure.in.in; then + rm -f configure.in + echo "*** Creating list of subdirectories" + create_subdirs + + if test -r Makefile.am.in; then + echo "*** Creating Makefile.am" + if grep '\$(top_srcdir)/Makefile.am:' $makefile_am >/dev/null; then + strip_makefile + $MAKE -f $makefile_wo top_srcdir=. ./Makefile.am || exit 1 + else + Makefile_am + fi + fi + configure_files + echo "*** Creating configure.in" + if grep '\$(top_srcdir)/configure.in:' $makefile_am >/dev/null; then + strip_makefile + $MAKE -f $makefile_wo top_srcdir=. ./configure.in || exit 1 + else + configure_in + fi +fi + +echo "*** Creating aclocal.m4" +$ACLOCAL $ACLOCALFLAGS || exit 1 +echo "*** Creating configure" +call_and_fix_autoconf + +if egrep "^AM_CONFIG_HEADER" configure.in >/dev/null 2>&1; then + echo "*** Creating config.h template" + $AUTOHEADER || exit 1 + touch config.h.in +fi + +echo "*** Creating Makefile templates" +$AUTOMAKE || exit 1 + +if test "$UNSERMAKE" = no; then + echo "*** Postprocessing Makefile templates" + perl -w admin/am_edit || exit 1 +fi + +if egrep "^cvs-local:" $makefile_am >/dev/null; then \ + strip_makefile + $MAKE -f $makefile_wo cvs-local top_srcdir=. || exit 1 +fi + +echo "*** Creating date/time stamp" +touch stamp-h.in + +echo "*** Finished" +echo " Don't forget to run ./configure" +echo " If you haven't done so in a while, run ./configure --help" +} + +dist() +{ +check_autotool_versions + +### +### First build all of the files necessary to do just "make" +### +acinclude_m4 +if test -r configure.in.in; then + rm -f configure.in + create_subdirs + + if test -r Makefile.am.in; then + if grep '\$(top_srcdir)/Makefile.am:' $makefile_am >/dev/null; then + strip_makefile + $MAKE -f $makefile_wo top_srcdir=. ./Makefile.am || exit 1 + else + Makefile_am + fi + fi + configure_files + if grep '\$(top_srcdir)/configure.in:' $makefile_am >/dev/null; then + strip_makefile + $MAKE -f $makefile_wo top_srcdir=. ./configure.in || exit 1 + else + configure_in + fi +fi +$ACLOCAL $ACLOCALFLAGS +if egrep "^AM_CONFIG_HEADER" configure.in >/dev/null 2>&1; then + echo "*** Creating config.h template" + $AUTOHEADER || exit 1 + touch config.h.in +fi +$AUTOMAKE --foreign || exit 1 +if test "$UNSERMAKE" = no; then + echo "*** Postprocessing Makefile templates" + perl -w admin/am_edit || exit 1 +fi +call_and_fix_autoconf +touch stamp-h.in +if grep "^cvs-local:" $makefile_am >/dev/null; then + strip_makefile + $MAKE -f $makefile_wo cvs-local top_srcdir=. +fi + +### +### Then make messages +### +if test -d po; then + LIST=`find ./po -name "*.po"` + for i in $LIST; do + file2=`echo $i | sed -e "s#\.po#\.gmo#"` + msgfmt -o $file2 $i || touch $file2 + done +fi +if grep "^cvs-dist-local:" $makefile_am >/dev/null; then + strip_makefile + $MAKE -f $makefile_wo cvs-dist-local top_srcdir=. +fi +} + +subdir_dist() +{ +$ACLOCAL $ACLOCALFLAGS +$AUTOHEADER +touch config.h.in +$AUTOMAKE +AUTOMAKE_STRING=`$AUTOMAKE --version | head -n 1` +case $AUTOMAKE_STRING in + *unsermake* ) : + ;; + *) + perl -w ../admin/am_edit --path=../admin +esac +call_and_fix_autoconf +touch stamp-h.in +} + +configure_in() +{ +rm -f configure.in configure.in.new +kde_use_qt_param= +test -f configure.files || { echo "need configure.files for configure.in"; exit 1; } +list=`fgrep -v "configure.in.bot" < configure.files | fgrep -v "configure.in.mid"` +: > configure.in.new +for file in $list; do + echo "dnl =======================================================" >> configure.in.new + echo "dnl FILE: $file" >> configure.in.new + echo "dnl =======================================================" >> configure.in.new + echo "" >> configure.in.new + cat $file >> configure.in.new +done +echo "KDE_CREATE_SUBDIRSLIST" >> configure.in.new +if test -f Makefile.am.in; then + subdirs=`cat subdirs` + for dir in $subdirs; do + vdir=`echo $dir | sed -e 's,[-+.@],_,g'` + echo "AM_CONDITIONAL($vdir""_SUBDIR_included, test \"x\$$vdir""_SUBDIR_included\" = xyes)" >> configure.in.new + if test -f "$dir/configure.in"; then + echo "if test \"x\$$vdir""_SUBDIR_included\" = xyes; then " >> configure.in.new + echo " AC_CONFIG_SUBDIRS($dir)" >> configure.in.new + echo "fi" >> configure.in.new + fi + done +fi + +echo "AC_CONFIG_FILES([ Makefile ])" >> configure.in.new + +if test -f inst-apps; then + topleveldirs=`cat inst-apps` +else + topleveldirs= + for dir in `ls -1d * | sort`; do + if test "$dir" != "debian" && test -d $dir; then + topleveldirs="$topleveldirs $dir" + fi + done +fi + +for topleveldir in $topleveldirs; do + if test -f $topleveldir/configure.in; then + continue + fi + if test -f $topleveldir/Makefile.am; then :; else + continue + fi + + mfs=`find $topleveldir -follow -name Makefile.am -print | fgrep -v "/." | \ + sed -e 's#\./##; s#/Makefile.am$##' | sort | sed -e 's#$#/Makefile#'` + for i in $mfs; do + echo "AC_CONFIG_FILES([ $i ])" >> configure.in.new + done +done + +files=`cat configure.files` +list=`egrep '^dnl AC_OUTPUT\(.*\)' $files | sed -e "s#^.*dnl AC_OUTPUT(\(.*\))#\1#"` +for file in $list; do + echo "AC_CONFIG_FILES([ $file ])" >> configure.in.new +done + +midfiles=`cat configure.files | fgrep "configure.in.mid"` +test -n "$midfiles" && cat $midfiles >> configure.in.new + +echo "AC_OUTPUT" >> configure.in.new +modulename= +if test -f configure.in.in; then + if head -n 2 configure.in.in | egrep "^#MIN_CONFIG\(.*\)$" > /dev/null; then + kde_use_qt_param=`cat configure.in.in | sed -n -e "s/#MIN_CONFIG(\(.*\))/\1/p"` + fi + if head -n 2 configure.in.in | egrep "^#MIN_CONFIG" > /dev/null; then + line=`grep "^AM_INIT_AUTOMAKE(" configure.in.in` + if test -n "$line"; then + modulename=`echo $line | sed -e "s#AM_INIT_AUTOMAKE(\([^,]*\),.*#\1#"` + VERSION=`echo $line | sed -e "s#AM_INIT_AUTOMAKE([^,]*, *\([^)]*\)).*#\1#"` + fi + sed -e "s#AM_INIT_AUTOMAKE([^@].*#dnl PACKAGE set before#" \ + configure.in.new > configure.in && mv configure.in configure.in.new + fi +fi +if test -z "$VERSION" || test "$VERSION" = "@VERSION@"; then + VERSION="\"3.5.8\"" +fi +if test -z "$modulename" || test "$modulename" = "@MODULENAME@"; then + modulename=`pwd`; + modulename=`basename $modulename` + esc_VERSION=`echo $VERSION | sed -e "s#[^.0-9a-zA-Z]##g"` + modulename=`echo $modulename | sed -e "s#-$esc_VERSION##"` + +fi +if test -n "$kde_use_qt_param"; then + sed -e "s#^dnl KDE_USE_QT#KDE_USE_QT($kde_use_qt_param)#" \ + configure.in.new > configure.in && mv configure.in configure.in.new +fi +sed -e "s#@MODULENAME@#$modulename#" configure.in.new | + sed -e "s#@VERSION@#$VERSION#" > configure.in +botfiles=`cat configure.files | egrep "configure.in.bot"` +test -n "$botfiles" && cat $botfiles >> configure.in +cat $admindir/configure.in.bot.end >> configure.in +rm -f configure.in.new +} + +configure_files() +{ +echo "*** Creating configure.files" +admindir=NO +for i in . .. ../.. ../../..; do + if test -x $i/admin; then admindir=$i/admin; break; fi +done +rm -f configure.files +touch configure.files +if test -f configure.in.in && head -n 2 configure.in.in | grep "^#MIN_CONFIG" > /dev/null; then + echo $admindir/configure.in.min >> configure.files +fi +test -f configure.in.in && echo configure.in.in >> configure.files +# we collect files in the subdirs and do some sorting tricks, so subsubdirs come after subdirs +if test -f inst-apps; then + inst=`cat inst-apps` + list="" + for i in $inst; do + list="$list `find $i/ -follow -name "configure.in.in" -o -name "configure.in.bot" -o -name "configure.in.mid" | \ + sed -e "s,/configure,/aaaconfigure," | sort | sed -e "s,/aaaconfigure,/configure,"`" + done +else + list=`find . -follow -name "configure.in.in" -o -name "configure.in.bot" -o -name "configure.in.mid" | \ + sed -e "s,/configure,/aaaconfigure," | sort | sed -e "s,/aaaconfigure,/configure,"` +fi +for i in $list; do if test -f $i && test `dirname $i` != "." ; then + echo $i >> configure.files +fi; done +test -f configure.in.mid && echo configure.in.mid >> configure.files +test -f configure.in.bot && echo configure.in.bot >> configure.files +if test ! -s configure.files; then + echo "There are no files to build a configure. Please check your checkout." + exit 1 +fi +} + +create_subdirs() +{ +if grep '\$(top_srcdir)/subdirs:' $makefile_am >/dev/null; then + # as many modules contain rules to create subdirs without any + # dependencies make won't create it unless there is no file. + # so we check if that's a dummy rule or one that works + rm -f subdirs.cvs.sh.$$ + if test -f subdirs; then + mv subdirs subdirs.cvs.sh.$$ + fi + strip_makefile + $MAKE -f $makefile_wo top_srcdir=. ./subdirs || exit 1 + if test -f subdirs.cvs.sh.$$; then + if test -s subdirs; then + rm subdirs.cvs.sh.$$ + else + mv subdirs.cvs.sh.$$ subdirs + fi + fi +else + subdirs +fi +} + +subdirs() +{ +dirs= +idirs= +if test -f inst-apps; then + idirs=`cat inst-apps` +else + idirs=`ls -1 | sort` +fi + +compilefirst=`sed -ne 's#^COMPILE_FIRST[ ]*=[ ]*##p' $makefile_am | head -n 1` +compilelast=`sed -ne 's#^COMPILE_LAST[ ]*=[ ]*##p' $makefile_am | head -n 1` +for i in $idirs; do + if test -f $i/Makefile.am; then + case " $compilefirst $compilelast " in + *" $i "*) ;; + *) dirs="$dirs $i" + esac + fi +done + +: > ./_SUBDIRS + +for d in $compilefirst; do + echo $d >> ./_SUBDIRS +done + +(for d in $dirs; do + list=`sed -ne "s#^COMPILE_BEFORE_$d""[ ]*=[ ]*##p" $makefile_am | head -n 1` + for s in $list; do + echo $s $d + done + list=`sed -ne "s#^COMPILE_AFTER_$d""[ ]*=[ ]*##p" $makefile_am | head -n 1` + for s in $list; do + echo $d $s + done + echo $d $d +done ) | tsort >> ./_SUBDIRS + +for d in $compilelast; do + echo $d >> ./_SUBDIRS +done + +if test -r subdirs && cmp -s subdirs _SUBDIRS; then + rm -f _SUBDIRS +fi +test -r _SUBDIRS && mv _SUBDIRS subdirs || true +} + +Makefile_am() +{ +if test -f Makefile.am.in; then + compilefirst=`sed -ne 's#^COMPILE_FIRST[ ]*=[ ]*##p' $makefile_am | head -n 1` + compilelast=`sed -ne 's#^COMPILE_LAST[ ]*=[ ]*##p' $makefile_am | head -n 1` + + idirs= + dirs= + if test -f inst-apps; then + idirs=`cat inst-apps` + else + idirs=`cat subdirs` + fi + for i in $idirs; do + case " $compilefirst $compilelast " in + *" $i "*) ;; + *) dirs="$dirs $i" + esac + done + + adds=`fgrep '$(top_srcdir)/acinclude.m4:' Makefile.am.in | sed -e 's,^[^:]*: *,,; s,\$(top_srcdir)/,,g'` + if echo "$adds" | fgrep "*" >/dev/null ; then + adds=`ls -d -1 $adds 2>/dev/null` + fgrep -v '$(top_srcdir)/acinclude.m4:' Makefile.am.in > Makefile.am.in.adds + str='$(top_srcdir)/acinclude.m4:' + for add in $adds; do + str="$str \$(top_srcdir)/$add" + done + echo $str >> Makefile.am.in.adds + else + cat Makefile.am.in > Makefile.am.in.adds + fi + + cat Makefile.am.in.adds | \ + sed -e 's,^\s*\(COMPILE_BEFORE.*\),# \1,' | \ + sed -e 's,^\s*\(COMPILE_AFTER.*\),# \1,' > Makefile.am + echo "SUBDIRS="'$(TOPSUBDIRS)' >> Makefile.am + rm Makefile.am.in.adds +fi +} + +acinclude_m4() +{ + echo "*** Creating acinclude.m4" + adds= + if grep '\$(top_srcdir)/acinclude.m4:' $makefile_am >/dev/null; then + strip_makefile + rm -f acinclude.m4 + adds=`grep '\$(top_srcdir)/acinclude.m4:' $makefile_wo | sed -e 's,^[^:]*: *,,; s,\$(top_srcdir),.,g'` + if echo $adds | fgrep "*" >/dev/null ; then + adds=`ls -d -1 $adds 2>/dev/null` + else + $MAKE -f $makefile_wo top_srcdir=. ./acinclude.m4 || exit 1 + fi + else + rm -f acinclude.m4 + fi + # if it wasn't created up to now, then we do it better + if test ! -f acinclude.m4; then + cat admin/acinclude.m4.in admin/libtool.m4.in admin/pkg.m4.in $adds > acinclude.m4 + fi +} + +package_merge() +{ +catalogs=$POFILES +for cat in $catalogs; do + msgmerge -o $cat.new $cat $PACKAGE.pot + if test -s $cat.new; then + grep -v "\"POT-Creation" $cat.new > $cat.new.2 + grep -v "\"POT-Creation" $cat >> $cat.new.1 + if diff $cat.new.1 $cat.new.2; then + rm $cat.new + else + mv $cat.new $cat + fi + rm -f $cat.new.1 $cat.new.2 + fi +done +} + +extract_messages() +{ +podir=${podir:-$PWD/po} +files=`find . -name Makefile.am | xargs egrep -l '^messages:' ` +dirs=`for i in $files; do echo \`dirname $i\`; done` +tmpname="$PWD/messages.log" +if test -z "$EXTRACTRC"; then EXTRACTRC=extractrc ; fi +if test -z "$PREPARETIPS"; then PREPARETIPS=preparetips ; fi +export EXTRACTRC PREPARETIPS + +for subdir in $dirs; do + test -z "$VERBOSE" || echo "Making messages in $subdir" + (cd $subdir + if test -n "`grep -e '^messages:.*rc.cpp' Makefile.am`"; then + $EXTRACTRC *.rc *.ui *.kcfg > rc.cpp + else + candidates=`ls -1 *.rc *.ui *.kcfg 2>/dev/null` + if test -n "$candidates"; then + echo "$subdir has *.rc, *.ui or *.kcfg files, but not correct messages line" + fi + fi + if find . -name \*.c\* -o -name \*.h\* | fgrep -v ".svn" | xargs fgrep -s -q KAboutData ; then + echo -e 'i18n("_: NAME OF TRANSLATORS\\n"\n"Your names")\ni18n("_: EMAIL OF TRANSLATORS\\n"\n"Your emails")' > _translatorinfo.cpp + else echo " " > _translatorinfo.cpp + fi + perl -e '$mes=0; while () { next if (/^(if\s|else\s|endif)/); if (/^messages:/) { $mes=1; print $_; next; } if ($mes) { if (/$\\(XGETTEXT\)/ && / -o/) { s/ -o \$\(podir\)/ _translatorinfo.cpp -o \$\(podir\)/ } print $_; } else { print $_; } }' < Makefile.am | egrep -v '^include ' > _transMakefile + + kdepotpath=${includedir:-`kde-config --expandvars --install include`}/kde.pot + if ! test -f $kdepotpath; then + kdepotpath=`kde-config --expandvars --prefix`/include/kde.pot + fi + + $MAKE -s -f _transMakefile podir=$podir EXTRACTRC="$EXTRACTRC" PREPARETIPS="$PREPARETIPS" srcdir=. \ + XGETTEXT="${XGETTEXT:-xgettext} --foreign-user -C -ci18n -ki18n -ktr2i18n -kI18N_NOOP -kI18N_NOOP2 -kaliasLocale -x $kdepotpath" messages + exit_code=$? + if test "$exit_code" != 0; then + echo "make exit code: $exit_code" + fi + ) 2>&1 | grep -v '^make\[1\]' > $tmpname + test -s $tmpname && { echo $subdir ; cat "$tmpname"; } + test -f $subdir/rc.cpp && rm -f $subdir/rc.cpp + rm -f $subdir/_translatorinfo.cpp + rm -f $subdir/_transMakefile +done +rm -f $tmpname +} + +package_messages() +{ +rm -rf po.backup +mkdir po.backup + +for i in `ls -1 po/*.pot 2>/dev/null | sed -e "s#po/##"`; do + egrep -v '^#[^,]' po/$i | egrep '^.*[^ ]+.*$' | grep -v "\"POT-Creation" > po.backup/$i + cat po/$i > po.backup/backup_$i + touch -r po/$i po.backup/backup_$i + rm po/$i +done + +extract_messages + +for i in `ls -1 po.backup/*.pot 2>/dev/null | sed -e "s#po.backup/##" | egrep -v '^backup_'`; do + test -f po/$i || echo "disappeared: $i" +done +for i in `ls -1 po/*.pot 2>/dev/null | sed -e "s#po/##"`; do + sed -e 's,^"Content-Type: text/plain; charset=CHARSET\\n"$,"Content-Type: text/plain; charset=UTF-8\\n",' po/$i > po/$i.new && mv po/$i.new po/$i + #msgmerge -q -o po/$i po/$i po/$i + egrep -v '^#[^,]' po/$i | egrep '^.*[^ ]+.*$' | grep -v "\"POT-Creation" > temp.pot + if test -f po.backup/$i && ! cmp -s temp.pot po.backup/$i; then + echo "will update $i" + else + if test -f po.backup/backup_$i; then + test -z "$VERBOSE" || echo "I'm restoring $i" + mv po.backup/backup_$i po/$i + rm po.backup/$i + else + echo "will add $i" + fi + fi +done +rm -f temp.pot +rm -rf po.backup +} + +# Make sure that sorting is always done the same way +LC_ALL=C +export LC_ALL +unset LANG || : +unset LC_CTYPE || : +unset LANGUAGE || : + +unset CDPATH || : +admindir=`echo "$0" | sed 's%[\\/][^\\/][^\\/]*$%%'` +test "x$admindir" = "x$0" && admindir=. + +test "x$MAKE" = x && MAKE=make +makefile_am=Makefile.am +makefile_wo=Makefile.am.wo +if test -f Makefile.am.in; then + makefile_am=Makefile.am.in + makefile_wo=Makefile.am.in.wo + rm -f $makefile_wo +fi + +# Call script to find autoconf and friends. Uses eval since the script outputs +# sh-compatible code. +eval `$admindir/detect-autoconf.pl` + +### +### Main +### + +arg=`echo $1 | tr .- __` +case $arg in + cvs | dist | subdir_dist | configure_in | configure_files | subdirs | \ + cvs_clean | package_merge | package_messages | Makefile_am | acinclude_m4 | extract_messages ) $arg ;; + configure ) call_and_fix_autoconf ;; + * ) echo "Usage: cvs.sh " + echo "Target can be one of:" + echo " cvs svn dist" + echo " configure.in configure.files" + echo " package-merge package-messages" + echo "" + echo "Usage: anything but $1" + exit 1 ;; +esac + +if test -f $makefile_wo; then + rm $makefile_wo +fi + +exit 0 diff --git a/libs/taglib/admin/debianrules b/libs/taglib/admin/debianrules new file mode 100755 index 0000000000..25897f2e39 --- /dev/null +++ b/libs/taglib/admin/debianrules @@ -0,0 +1,43 @@ +#!/usr/bin/perl -w + +use Shell qw(mv cp mkdir rm) ; +use File::Find; +use Cwd; + +$origPwd = `pwd`; +chomp $origPwd; + +$kde_prefix = "/usr"; +$sysconfdir = "/etc"; +$kde_includedir = "$kde_prefix/include/kde"; +$infodir = "$kde_prefix/share/info"; +$mandir = "$kde_prefix/share/man"; +$qtdir = "/usr/share/qt3"; + +$kde_cgidir = "$kde_prefix/lib/cgi-bin"; +$kde_confdir = "$sysconfdir/kde3"; +$kde_htmldir = "$kde_prefix/share/doc/kde/HTML"; + +if (defined $ENV{DEB_BUILD_OPTIONS} && + $ENV{DEB_BUILD_OPTIONS} =~ /\bnostrip\b/) { + $enable_debug="--enable-debug=full"; +} else { + $enable_debug="--disable-debug"; +} + +if (@ARGV && $ARGV[0] eq 'echodirs') { + print STDOUT "export kde_prefix=$kde_prefix\n"; + print STDOUT "export sysconfdir=$sysconfdir\n"; + print STDOUT "export kde_includedir=$kde_includedir\n"; + print STDOUT "export infodir=$infodir\n"; + print STDOUT "export mandir=$mandir\n"; + print STDOUT "export qtdir=$qtdir\n"; + + print STDOUT "export kde_cgidir=$kde_cgidir\n"; + print STDOUT "export kde_confdir=$kde_confdir\n"; + print STDOUT "export kde_htmldir=$kde_htmldir\n"; + + print STDOUT "configkde=$enable_debug --disable-rpath --prefix=\$(kde_prefix) --sysconfdir=\$(sysconfdir) --includedir=\$(kde_includedir) --infodir=\$(infodir) --mandir=\$(mandir) --with-qt-dir=\$(qtdir)\n"; + + exit +} diff --git a/libs/taglib/admin/depcomp b/libs/taglib/admin/depcomp new file mode 100755 index 0000000000..04701da536 --- /dev/null +++ b/libs/taglib/admin/depcomp @@ -0,0 +1,530 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2005-07-09.11 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 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., 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. + +# 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 outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +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" + +# 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 + # With Tru64 cc, shared objects can also be used to make a + # static library. This mecanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in 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.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + 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 -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, 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 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/libs/taglib/admin/deps.am b/libs/taglib/admin/deps.am new file mode 100644 index 0000000000..e8f5015889 --- /dev/null +++ b/libs/taglib/admin/deps.am @@ -0,0 +1,19 @@ +$(top_srcdir)/acinclude.m4: $(top_srcdir)/admin/acinclude.m4.in $(top_srcdir)/admin/libtool.m4.in $(top_srcdir)/admin/cvs.sh $(top_srcdir)/admin/pkg.m4.in + @cd $(top_srcdir) && $(SHELL) admin/cvs.sh acinclude_m4 + +$(top_srcdir)/configure.in: $(top_srcdir)/subdirs $(top_srcdir)/configure.files $(top_srcdir)/admin/cvs.sh + @cd $(top_srcdir) && $(SHELL) admin/cvs.sh configure_in + +$(top_srcdir)/configure.files: $(top_srcdir)/subdirs $(CONF_FILES) + @cd $(top_srcdir) && $(SHELL) admin/cvs.sh configure.files $(top_srcdir)/admin/cvs.sh + +$(top_srcdir)/Makefile.am: $(top_srcdir)/Makefile.am.in $(top_srcdir)/subdirs $(top_srcdir)/admin/cvs.sh + @cd $(top_srcdir) && $(SHELL) admin/cvs.sh Makefile_am + +$(top_srcdir)/subdirs: $(top_srcdir)/Makefile.am.in $(top_srcdir)/admin/cvs.sh + @cd $(top_srcdir) && $(SHELL) admin/cvs.sh subdirs + +# defining default rules for files that may not be present +$(top_srcdir)/Makefile.am.in: +$(CONF_FILES): + diff --git a/libs/taglib/admin/detect-autoconf.pl b/libs/taglib/admin/detect-autoconf.pl new file mode 100755 index 0000000000..6b592ea8e9 --- /dev/null +++ b/libs/taglib/admin/detect-autoconf.pl @@ -0,0 +1,257 @@ +#!/usr/bin/env perl + +# Try to locate best version of auto* +# By Michael Pyne +# +# Copyright (c) 2005. +# This code is public domain. You may use it however you like (including +# relicensing). + +# Emulate the 'which' program. +sub which +{ + my $prog = shift; + my @paths = split(/:/, $ENV{'PATH'}); + + for $path (@paths) + { + return "$path/$prog" if -x "$path/$prog"; + } + + return ""; +} + +# Subroutine to lexicographically compare two version strings, a and b. +# If a > b, 1 is returned. +# If a == b, 0 is returned. +# If a < b, -1 is returned. +# +# If the strings are of uneven number length then the shorter string is +# prepended by enough zeroes to make the two string lengths equal in order to +# allow an accurate comparison. Note that the zero-padding only occurs in +# between version separators (i.e. 1.6 and 1.10, results in 1.06 vs. 1.10). +# Parts of the version ending in -foo (or any other text) are not considered +# when doing the compare. (i.e. 2.53a vs 2.53 doesn't end up in 2.53a vs. +# 2.053) +sub compareVersions +{ + my ($a, $b) = @_; + + # Split the strings up by '.' (version separator) and start comparing digit + # length. + + my @aParts = split(/\./, $a); + my @bParts = split(/\./, $b); + + # Make the arrays equal in length by adding missing zeroes to the end of the + # version. + push @aParts, '0' while scalar @aParts < scalar @bParts; + push @bParts, '0' while scalar @bParts < scalar @aParts; + + # Now compare each individual portion. + for (my $i = 0; $i < scalar @aParts; ++$i) + { + # Make sure that any portion that has numbers is contiguous. I'm sure + # there's a technique for saving stuff like 2.52a2 but I don't feel + # like implementing it. + if ($aParts[$i] !~ /^[^\d]*\d+[^\d]*$/ or + $bParts[$i] !~ /^[^\d]*\d+[^\d]*$/) + { + die "Not able to compare $a to $b!\n"; + } + + my ($aDigits) = ($aParts[$i] =~ /(\d+)/); + my ($bDigits) = ($bParts[$i] =~ /(\d+)/); + + # Perl is $MODERATELY_INSULTING_TERM, don't remove the parentheses in + # the delta calculation below. + my $delta = (length $aDigits) - (length $bDigits); + if ($delta < 0) # b is longer + { + my $replacement = ('0' x (-$delta)) . $aDigits; + $aParts[$i] =~ s/$aDigits/$replacement/; + } + elsif ($delta > 0) # a is longer + { + my $replacement = ('0' x $delta) . $bDigits; + $bParts[$i] =~ s/$bDigits/$replacement/; + } + } + + # Arrays now have standardized version components, let's re-merge them + # to strings to do the compare. + my $newA = join('.', @aParts); + my $newB = join('.', @bParts); + + return 1 if ($newA gt $newB); + return -1 if ($newA lt $newB); + return 0; +} + +# Subroutine to determine the highest installed version of the given program, +# searching from the given paths. +sub findBest +{ + my ($program, @paths) = @_; + my $best_version_found = '0'; # Deliberately a string. + my %versions; + my %minimumVersions = ( + 'autoconf' => '2.5', + 'automake' => '1.6', + ); + my $sgn; # Used for compareVersions results. + + # Allow user to use environment variable to override search. + return $ENV{uc $program} if $ENV{uc $program}; + + for $prefix (@paths) + { + @files = glob "$prefix/$program*"; + for $file (@files) + { + # Don't check non-executable scripts. + next unless -x $file; + + ($version) = $file =~ /$prefix\/$program-?(.*)$/; + + # Don't check the -wrapper ones (or any other non program one). + # The real deal should start with a version number, or have no + # suffix at all. + next if $version =~ /^[^\d]/; + + # Special case some programs to make sure it has a minimum version. + if (not $version and exists $minimumVersions{$program}) + { + my $min_version = $minimumVersions{$program}; + my $versionOutput = `$program --version 2>/dev/null | head -n 1`; + + # If we can't run the script to get the version it likely won't work later. + next unless $versionOutput; + + # Use number.number for version (we don't need the excess in general). + ($versionOutput) = ($versionOutput =~ /(\d+\.\d+)/); + + # compareVersions returns -1 if the left argument is less than + # the right argument. It can also die for invalid input so + # wrap with eval. + eval { + $sgn = compareVersions($versionOutput, $min_version); + }; + + # $@ would be set if an error was encountered. + if ($@ or not $versionOutput or $sgn == -1) { + next; + } + } + + # If no version suffix then use it in favor of a versioned autotool + # since the ever-popular WANT_AUTOFOO should then work (in theory). + return $file unless $version; + + # Emulate 'which', and abort if we've already seen this version. + next if exists $versions{$version}; + + # Save filename of program. + $versions{$version} = $file; + + # Use string comparison so that e.g. 253a will be > 253 but < 254. + # See above about the need for eval. + eval { + $sgn = compareVersions($version, $best_version_found); + }; + + if (not $@ and $sgn == 1) + { + $best_version_found = $version; + } + } + } + + return $versions{$best_version_found}; +} + +# Find an appropriate "which" program for later use by the shell script calling +# us. +sub findWhich +{ + for $candidate ('type -p', 'which', 'type') + { + $test = `$candidate sh 2>/dev/null`; + chomp $test; + + return $candidate if -x $test; + } +} + +# Uses which() to find a program unless the user provided its path in the +# environment (the upper case program name is searched). +sub findProgram +{ + $suffix = ""; # For use if @_ has only one param. + my ($program, $suffix) = @_; + + return $ENV{uc $program} if $ENV{uc $program}; + return which("$program$suffix"); +} + +# SCRIPT STARTS. + +# Search in path. +@paths = split(/:/, $ENV{'PATH'}); + +# Make sure at least /usr/bin and /usr/local/bin are in this search. +unshift @paths, '/usr/local/bin' unless grep $_ eq '/usr/local/bin', @paths; +unshift @paths, '/usr/bin' unless grep $_ eq '/usr/bin', @paths; + +$autoconf = findBest('autoconf', @paths); +($autoconf_suffix) = $autoconf =~ /.*autoconf(.*)$/; + +# Find matching autoconf companions. +$autoheader = findProgram('autoheader', $autoconf_suffix); +$autom4te = findProgram('autom4te', $autoconf_suffix); + +# Get best automake, and look for unsermake to possibly override it. +$automake = findBest('automake', @paths); +$unsermake = ""; +# backward compatible: if $UNSERMAKE points to a path, use it +$unsermake = findProgram('unsermake') if (defined($ENV{'UNSERMAKE'}) and $ENV{'UNSERMAKE'} =~ /\//); +# new compatible: if it says 'yes', use the one from path +$unsermake = which('unsermake') if ($ENV{'UNSERMAKE'} ne 'no'); + +($automake_suffix) = $automake =~ /.*automake(.*)$/; + +# Use unsermake if we found it. +$automake = "$unsermake -c" if $unsermake; + +# Find matching automake companions. +$aclocal = findProgram('aclocal', $automake_suffix); + +$which = findWhich(); + +# Make sure we have all of the needed programs. +for $i (qw'autoconf autoheader autom4te automake aclocal') +{ + unless(${$i}) + { + print "# Unable to find $i!!\n"; + exit 1; + } +} + +# Print results in eval-able form. +print < []" + exit 2 + ;; +x--doxdatadir=* ) + DOXDATA=`echo $1 | sed -e 's+--doxdatadir=++'` + ;; +x--installdir=*) + PREFIX=`echo $1 | sed -e 's+--installdir=++'` + ;; +x--* ) + echo "Unknown option: $1" + exit 1 + ;; +* ) + top_srcdir="$1" + break + ;; +esac +shift +done + + +### Sanity check the mandatory "top srcdir" argument. +if test -z "$top_srcdir" ; then + echo "Usage: doxygen.sh " + exit 1 +fi +if test ! -d "$top_srcdir" ; then + echo "top_srcdir ($top_srcdir) is not a directory." + exit 1 +fi + +### Normalize top_srcdir so it is an absolute path. +if expr "x$top_srcdir" : "x/" > /dev/null ; then + # top_srcdir is absolute already + : +else + top_srcdir=`cd "$top_srcdir" 2> /dev/null && pwd` + if test ! -d "$top_srcdir" ; then + echo "top_srcdir ($top_srcdir) is not a directory." + exit 1 + fi +fi + + + +### Sanity check and guess QTDOCDIR. +if test -z "$QTDOCDIR" ; then + if test -z "$QTDIR" ; then + for i in /usr/X11R6/share/doc/qt/html + do + QTDOCDIR="$i" + test -d "$QTDOCDIR" && break + done + else + for i in share/doc/qt/html doc/html + do + QTDOCDIR="$QTDIR/$i" + test -d "$QTDOCDIR" && break + done + fi +fi +if test -z "$QTDOCDIR" || test ! -d "$QTDOCDIR" ; then + if test -z "$QTDOCDIR" ; then + echo "* QTDOCDIR could not be guessed." + else + echo "* QTDOCDIR does not name a directory." + fi + if test -z "$QTDOCTAG" ; then + echo "* QTDOCDIR set to \"\"" + QTDOCDIR="" + else + echo "* But I'll use $QTDOCDIR anyway because of QTDOCTAG." + fi +fi + +### Get the "top srcdir", also its name, and handle the case that subdir "." +### is given (which would be top_srcdir then, so it's equal to none-given +### but no recursion either). +### +# top_srcdir="$1" # Already set by options processing +module_name=`basename "$top_srcdir"` +subdir="$2" +if test "x." = "x$subdir" ; then + subdir="" + if test "x$recurse_given" = "xNO" ; then + recurse=0 + fi +fi +if test "x" != "x$subdir" ; then + # If no recurse option given explicitly, default to + # no recurse when processing subdirs given on the command-line. + if test "x$recurse_given" = "xNO" ; then + recurse=0 + fi +fi + +if test -z "$DOXDATA" || test ! -d "$DOXDATA" ; then + if test -n "$DOXDATA" ; then + echo "* \$DOXDATA is '$DOXDATA' which does not name a directory" + fi + DOXDATA="$top_srcdir/doc/common" +fi + +if test ! -d "$DOXDATA" ; then + echo "* \$DOXDATA does not name a directory ( or is unset ), tried \"$DOXDATA\"" + exit 1 +fi + +if test -n "$PREFIX" && test ! -d "$PREFIX" ; then + echo "* \$PREFIX does not name a directory, tried \"$PREFIX\"" + echo "* \$PREFIX is disabled." + PREFIX="" +fi + +### We need some values from top-level files, which +### are not preserved between invocations of this +### script, so factor it out for easy use. +create_doxyfile_in() +{ + eval `grep 'VERSION="' "$top_srcdir/admin/cvs.sh"` + echo "PROJECT_NUMBER = $VERSION" > Doxyfile.in + grep '^KDE_INIT_DOXYGEN' "$top_srcdir/configure.in.in" | \ + sed -e 's+[^[]*\[\([^]]*\)+PROJECT_NAME = "\1"+' \ + -e 's+].*++' >> Doxyfile.in +} + +apidoxdir="$module_name"-apidocs +test "x$use_modulename" = "x0" && apidoxdir="apidocs" + +### If we're making the top subdir, create the structure +### for the apidox and initialize it. Otherwise, just use the +### structure assumed to be there. +if test -z "$subdir" ; then + if test ! -d "$apidoxdir" ; then + mkdir "$apidoxdir" > /dev/null 2>&1 + fi + cd "$apidoxdir" > /dev/null 2>&1 || { + echo "Cannot create and cd into $apidoxdir" + exit 1 + } + + test -f "Doxyfile.in" || create_doxyfile_in + + # Copy in logos and the like + for i in "favicon.ico" "kde_gear_64.png" + do + cp "$DOXDATA/$i" . > /dev/null 2> /dev/null + done + for i in "$top_srcdir/doc/api/Dox-"*.png + do + T=`basename "$i" | sed -e 's+Dox-++'` + test -f "$i" && cp "$i" "./$T" > /dev/null 2> /dev/null + done + + top_builddir="." + srcdir="$1" + subdir="." +else + cd "$apidoxdir" > /dev/null 2>&1 || { + echo "Cannot cd into $apidoxdir -- maybe you need to" + echo "build the top-level dox first." + exit 1 + } + + if test "x1" = "x$recurse" ; then + # OK, so --recurse was requested + if test ! -f "subdirs.top" ; then + echo "* No subdirs.top available in the $apidoxdir." + echo "* The --recurse option will be ignored." + recurse=0 + fi + fi +fi + +### Read a single line (TODO: support \ continuations) from the Makefile.am. +### Used to extract variable assignments from it. +extract_line() +{ + file="$2" ; test -z "$file" && file="$srcdir/Makefile.am" + pattern=`echo "$1" | tr + .` + grep "^$1" "$file" | \ + sed -e "s+$pattern.*=\s*++" +} + +### Handle the COMPILE_{FIRST,LAST,BEFORE,AFTER} part of Makefile.am +### in the toplevel. Copied from admin/cvs.sh. Licence presumed LGPL). +create_subdirs() +{ +echo "* Sorting top-level subdirs" +dirs= +idirs= +if test -f "$top_srcdir/inst-apps"; then + idirs=`cat "$top_srcdir/"inst-apps` +else + idirs=`cd "$top_srcdir" && ls -1 | sort` +fi + +compilefirst="" +compilelast="" +if test -f "$top_srcdir/"Makefile.am.in ; then + compilefirst=`sed -ne 's#^COMPILE_FIRST[ ]*=[ ]*##p' "$top_srcdir/"Makefile.am.in | head -n 1` + compilelast=`sed -ne 's#^COMPILE_LAST[ ]*=[ ]*##p' "$top_srcdir/"Makefile.am.in | head -n 1` +fi +for i in $idirs; do + if test -f "$top_srcdir/$i"/Makefile.am; then + case " $compilefirst $compilelast " in + *" $i "*) ;; + *) dirs="$dirs $i" + esac + fi +done + +: > ./_SUBDIRS + +for d in $compilefirst; do + echo $d >> ./_SUBDIRS +done + +(for d in $dirs; do + list="" + if test -f "$top_srcdir/"Makefile.am.in ; then + list=`sed -ne "s#^COMPILE_BEFORE_$d""[ ]*=[ ]*##p" "$top_srcdir/"Makefile.am.in | head -n 1` + fi + for s in $list; do + echo $s $d + done + list="" + if test -f "$top_srcdir/"Makefile.am.in ; then + list=`sed -ne "s#^COMPILE_AFTER_$d""[ ]*=[ ]*##p" "$top_srcdir/"Makefile.am.in | head -n 1` + fi + for s in $list; do + echo $d $s + done + echo $d $d +done ) | tsort >> ./_SUBDIRS + +for d in $compilelast; do + echo $d >> ./_SUBDIRS +done + +test -r _SUBDIRS && mv _SUBDIRS subdirs.top || true +} + + +### Add HTML header, footer, CSS tags to Doxyfile. +### Assumes $subdir is set. Argument is a string +### to stick in front of the file if needed. +apidox_htmlfiles() +{ + dox_header="$top_srcdir/doc/api/$1header.html" + dox_footer="$top_srcdir/doc/api/$1footer.html" + dox_css="$top_srcdir/doc/api/doxygen.css" + test -f "$dox_header" || dox_header="$DOXDATA/$1header.html" + test -f "$dox_footer" || dox_footer="$DOXDATA/$1footer.html" + test -f "$dox_css" || dox_css="$DOXDATA/doxygen.css" + + echo "HTML_HEADER = $dox_header" >> "$subdir/Doxyfile" ; \ + echo "HTML_FOOTER = $dox_footer" >> "$subdir/Doxyfile" ; \ + echo "HTML_STYLESHEET = $dox_css" >> "$subdir/Doxyfile" +} + +apidox_specials() +{ + line=`extract_line DOXYGEN_PROJECTNAME "$1"` + test -n "$line" && echo "PROJECT_NAME = \"$line\"" >> "$2" +} + +apidox_local() +{ + for i in "$top_srcdir/doc/api/Doxyfile.local" + do + if test -f "$i" ; then + cat "$i" >> "$subdir/Doxyfile" + break + fi + done +} + +### Post-process HTML files by substituting in the menu files +# +# In non-top directories, both and +# are calculated and replaced. Top directories get an empty +# if any. +doxyndex() +{ + # Special case top-level to have an empty MENU. + if test "x$subdir" = "x." ; then + MENU="" + htmldir="." + htmltop="$top_builddir" # Just ., presumably + echo "* Post-processing top-level files" + else + MENU="
    " + htmldir="$subdir/html" + htmltop="$top_builddir.." # top_builddir ends with / + echo "* Post-processing files in $htmldir" + + # Build a little PHP file that maps class names to file + # names, for the quick-class-picker functionality. + # (The quick-class-picker is disabled due to styling + # problems in IE & FF). + ( + echo ",g" -e "s+_00+,+g" -e "s+_3+<+g" | tr "[A-Z]" "[a-z]"` + echo " \"$classname\" => \"$htmlfile\"," + done | sort ; \ + echo ") ?>" + ) > "$subdir/classmap.inc" + + # This is a list of pairs, with / separators so we can use + # basename and dirname (a crude shell hack) to split them + # into parts. For each, if the file part exists (as a html + # file) tack it onto the MENU variable as a
  • with link. + for i in "Main Page/index" \ + "Modules/modules" \ + "Namespace List/namespaces" \ + "Class Hierarchy/hierarchy" \ + "Alphabetical List/classes" \ + "Class List/annotated" \ + "File List/files" \ + "Directories/dirs" \ + "Namespace Members/namespacemembers" \ + "Class Members/functions" \ + "Related Pages/pages" + do + NAME=`dirname "$i"` + FILE=`basename "$i"` + test -f "$htmldir/$FILE.html" && MENU="$MENU
  • $NAME
  • " + done + + MENU="$MENU
" + fi + + + # Get the list of global Menu entries. + GMENU=`cat subdirs | tr -d '\n'` + + PMENU=`grep '++' | awk '{ c=split($0,a,"/"); for (j=1; j<=c; j++) { printf " / %s\n" , a[j]; } }' | tr -d '\n'` + + # Map the PHP file into HTML options so that + # it can be substituted in for the quick-class-picker. + CMENU="" + # For now, leave the CMENU disabled + CMENUBEGIN="" + + if test "x$subdir" = "x." ; then + # Disable CMENU on toplevel anyway + CMENUBEGIN="" + else + test -f "$subdir/classmap.inc" && \ + CMENU=`grep '=>' "$subdir/classmap.inc" | sed -e 's+"\([^"]*\)" => "'"$subdir/html/"'\([^"]*\)"+